eng*_*uan 7 python keyword-argument python-3.x
def func(**kwargs):
for key, value in kwargs.items():
# Is key always going to be a string?
# Could it have spaces?
pass
Run Code Online (Sandbox Code Playgroud)
关于 Python 中 kwargs 的两个问题。
Oli*_*çon 10
直接传递的关键字参数必须是有效的 Python 标识符,是的,它将始终被视为字符串。其他任何东西都是SyntaxError.
f(foo=1) # Works
f($=1) # Fails
f(1=1) # Fails
Run Code Online (Sandbox Code Playgroud)
虽然,您也可以通过解包给出关键字参数。在这种情况下,您的关键字参数必须仍然是字符串,但它们可以采用任何格式。
让我们定义一个虚拟函数来测试这个。
def f(**kwargs):
print(kwargs)
Run Code Online (Sandbox Code Playgroud)
关键字参数可以包含空格或数字字符串。它甚至可以包含特殊字符。
f(**{"hello world": 'foo'}) # prints {'hello world': 'foo'}
f(**{"1": 'foo'}) # prints {'1': 'foo'}
f(**{"$": 'foo'}) # prints {'$': 'foo'}
Run Code Online (Sandbox Code Playgroud)
关键字参数必须是字符串。其他任何东西都是TypeError.
f(**{1: 'foo'}) # TypeError: f() keywords must be strings
f(**{b'foo': 1}) # TypeError: f() keywords must be strings
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2966 次 |
| 最近记录: |