使用参数列表调用Python可调用对象

2 投票
2 回答
805 浏览
提问于 2025-04-16 07:06

简单的问题:我怎么能把一串参数传给一个可以调用的Python函数呢?

假设我想从命令行调用一个函数,像这样:

my_script.py foo hello world

用下面这个脚本:

import myfuncs
f = getattr(myfuncs, sys.args[1])
if f and callable(f):
    # This is the bit I don't know. I effectively want f(sys.args[2:])

我相信一定有办法做到这一点,但我可能没注意到。

2 个回答

4

没错,可以看看文档中关于解包参数列表的那一部分。

对于你具体的需求,可能可以这样做:

def f(a, b, c): 
  print a, b, c

stuff = ['f',2,3,4]

f(*stuff[1:]) ### equivalent to f(2,3,4)
7

你在寻找的是序列解包。也就是说,像这样使用:f(*sys.argv[2:])

撰写回答