Python函数作为变量 - 不同数量的参数

时间:2015-07-23 12:51:57

标签: python

也许是一个奇怪的问题。说我有这样的代码:

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)

3 个答案:

答案 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)