[sample.py]
def f(name='Hello Guest'):
print(name)
def A(name=None):
f(name)
A()
预期输出:“ Hello Guest”
当前输出:无
我希望使用<name = name if name is not None else some_default_value
'
谢谢!
答案 0 :(得分:2)
执行此操作的最佳方法是使用共享默认值:
DEFAULT_NAME = "Hello Guest"
def f(name=DEFAULT_NAME):
print(name)
def A(name=DEFAULT_NAME):
f(name)
答案 1 :(得分:2)
这对您有用吗?
def f(name):
print(name or 'Hello Guest')
def A(name=None):
f(name)
A()
Out: "Hello Guest"
A("Hello World")
Out: "Hello World"
如果名称变量在函数中被多次使用,则可以在函数的开头重新分配它。 name = name or "Hello Guest"
答案 2 :(得分:0)
使用inspect.signature
存储默认值是一种方法:
def f(name='Hello Guest'):
print(name or inspect.signature(f).parameters['name'].default)
def A(name=None):
f(name)
A()
# Hello Guest
有些失落,但更简单(更短,没有其他库):
def f(name='Hello Guest'):
print(name or f.__default__[0])
def A(name=None):
f(name)
A()
# Hello Guest
答案 3 :(得分:-1)
或
def f(name):
print(name)
def A(name = 'Hello Guest'):
f(name)
A()