【发布时间】:2016-05-03 18:37:39
【问题描述】:
我想定义一个带有一些可选参数的函数,比如 A(强制)和 B(可选)。如果没有给出 B,我希望它与 A 具有相同的值。我该怎么做?
我已经尝试过了,但它不起作用(名称“B”未定义):
def foo(A, B=A):
do_something()
我知道参数的值不是在函数体之前分配的。
【问题讨论】:
标签: python python-2.7 default-value optional-arguments
我想定义一个带有一些可选参数的函数,比如 A(强制)和 B(可选)。如果没有给出 B,我希望它与 A 具有相同的值。我该怎么做?
我已经尝试过了,但它不起作用(名称“B”未定义):
def foo(A, B=A):
do_something()
我知道参数的值不是在函数体之前分配的。
【问题讨论】:
标签: python python-2.7 default-value optional-arguments
你应该在你的函数内部做这个。
采用你原来的功能:
def foo(A, B=A):
do_something()
尝试类似:
def foo(A, B=None):
if B is None:
B = A
do_something()
重要的是,函数参数的函数默认值是在定义函数时给出的。
当您使用 A 的某个值调用函数时,为时已晚,因为 B 的默认值已经分配并存在于函数定义中。
【讨论】:
你可以这样做。如果B 的值为None,则从A 分配它
def foo(A, B=None):
if B is None:
B = A
print 'A = %r' % A
print 'B = %r' % B
【讨论】: