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

Python函数作为变量-不同数量的参数,python,Python,也许是个奇怪的问题。假设我有这样的代码: def foo(): print "Foo" def bar(x): print x func = foo func() func = bar arg = 'a' func(arg) 有没有一种方法可以设置一个“空”参数,这样我就可以调用assign foo()给func,然后仍然调用func(arg) 不仅仅是像这样的解决方法 if arg is None: func() else: func(arg) 试试这个 def f

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

def foo():
  print "Foo"

def bar(x):
  print x

func = foo
func()
func = bar
arg = 'a'
func(arg)
有没有一种方法可以设置一个“空”参数,这样我就可以调用assign foo()给func,然后仍然调用
func(arg)

不仅仅是像这样的解决方法

if arg is None:
   func()
else:
   func(arg)
试试这个

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)
试试这个

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)

当然,如果您使用元组/列表和

结果:

Foo
a

当然,如果您使用元组/列表和

结果:

Foo
a

是,使用splat操作符

args = []
func = foo
func(*args)
func = bar
args = ["Hello world!"]
func(*args)
“你好,世界!”

你甚至可以用字典来做这类事情

funcs = (foo, bar)
func_dict = {func.__name__: func for func in funcs}
args = []
func_dict["foo"](*args)

是,使用splat操作符

args = []
func = foo
func(*args)
func = bar
args = ["Hello world!"]
func(*args)
“你好,世界!”

你甚至可以用字典来做这类事情

funcs = (foo, bar)
func_dict = {func.__name__: func for func in funcs}
args = []
func_dict["foo"](*args)

太棒了,正是我想要的东西有些,正是我想要的