也许是一个奇怪的问题。说我有这样的代码:
def foo():
print "Foo"
def bar(x):
print x
func = foo
func()
func = bar
arg = 'a'
func(arg)
有没有办法让#34;空"参数,以便我可以调用foo()给func,然后仍然调用func(arg)
?
不只是像
这样的解决方法if arg is None:
func()
else:
func(arg)
答案 0 :(得分:4)
当然,如果您使用元组/列表和argument unpacking。
def foo():
print "Foo"
def bar(x):
print x
args = ()
func = foo
func(*args)
func = bar
args = ('a',)
func(*args)
结果:
Foo
a
答案 1 :(得分:1)
是的,使用splat运算符
args = []
func = foo
func(*args)
func = bar
args = ["Hello world!"]
func(*args)
" Hello World!"
你甚至可以使用词典来做这类事情
funcs = (foo, bar)
func_dict = {func.__name__: func for func in funcs}
args = []
func_dict["foo"](*args)
答案 2 :(得分:0)
试试这个
def foo(arg=None):
print "Foo"
或使用此
def foo(*arg):
print "foo"
那么你可以随便称它为
arg = 'a'
func = foo
func(arg)
func = bar
func(arg)
或正如其他人指出的那样使用
arg=()
func=foo
func(*arg)
arg=('hello',)
func(*arg)