我用具有像这样的功能/方法定义在Python:你有没有提供默认值的关键字参数?
def my_function(arg1=None , arg2='default'):
... do stuff here
如果我不提供arg1
(或arg2
)然后None
默认值(或'“默认”)被分配。
我可以指定像这样的关键字参数,但没有默认设置吗?如果没有提供参数,我希望它会引发错误。
我用具有像这样的功能/方法定义在Python:你有没有提供默认值的关键字参数?
def my_function(arg1=None , arg2='default'):
... do stuff here
如果我不提供arg1
(或arg2
)然后None
默认值(或'“默认”)被分配。
我可以指定像这样的关键字参数,但没有默认设置吗?如果没有提供参数,我希望它会引发错误。
您可以在现代的Python(3,这是):
>>> def func(*, name1, name2):
... print(name1, name2)
...
>>> func()
Traceback (most recent call last):
File "<ipython-input-5-08a2da4138f6>", line 1, in <module>
func()
TypeError: func() missing 2 required keyword-only arguments: 'name1' and 'name2'
>>> func("Fred", "Bob")
Traceback (most recent call last):
File "<ipython-input-7-14386ea74437>", line 1, in <module>
func("Fred", "Bob")
TypeError: func() takes 0 positional arguments but 2 were given
>>> func(name1="Fred", name2="Bob")
Fred Bob
它不是一个简单的替代品,因为'func(“fred”,“bob”)'可以用标准关键字参数工作。 – tdelaney 2015-03-13 16:56:08
我正在使用它的Python 2.7。 – 2015-04-19 14:22:35
任何说法可以作为一个关键词表达,它是否有一个默认:
def foo(a, b):
return a - b
foo(2, 1) # Returns 1
foo(a=2, b=1) # Returns 1
foo(b=2, a=1) # Returns -1
foo() # Raises an error
如果你想强制的参数是关键字-只有,然后看到帝斯曼的答案,但这似乎并不像你真的问。
你能举个例子吗? – thefourtheye 2015-03-13 16:22:59
可能相关:https://www.python.org/dev/peps/pep-3102/ – jonrsharpe 2015-03-13 16:24:52
Python的哪个版本? – 2015-03-13 16:26:15