def func1(arg1,arg2):
do_something
def func2(arg3)
print arg1
print arg2
如上所示,如何从 Python 中的另一个函数调用函数的参数?
def func1(arg1,arg2):
do_something
def func2(arg3)
print arg1
print arg2
如上所示,如何从 Python 中的另一个函数调用函数的参数?
你不能这样做。毕竟这没有多大意义。现在这些函数甚至不以某种方式相互调用......
但即使func1
被调用func2
,如果没有一些涉及调用堆栈的极其讨厌的黑客攻击,它也是不可能的。
因此,如果您想从func1
in访问参数,则func2
需要在调用时将它们作为参数传递func2
给它。
如果有人好奇,这里是使用inspect
模块获取传递给调用函数的参数的字典的代码。不要在任何生产代码中使用它!
import inspect
def get_caller_args():
frame = inspect.stack()[2][0]
argspec = inspect.getargvalues(frame)
return {x: argspec.locals[x] for x in argspec.args}
def func1(arg1, arg2):
test = 'xxx'
func2('moo')
def func2(arg):
print "caller's args: %r" % get_caller_args()
func1('foo', 'bar')
输出:
调用者的参数:{'arg1': 'foo', 'arg2': 'bar'}
请注意,此代码有一个无法避免的主要警告:如果func1
更改值arg1
或arg2
将返回新值而不是初始值。
我不知道这是否对您有帮助,因为问题很不清楚,但是您可以通过嵌套函数定义来创建闭包,如下所示:
def func1(arg1,arg2):
do_something()
def func2(arg3)
print arg1
print arg2
return func2
the_func2 = func1(foo, bar)
do_something_else()
the_func2(42) # prints foo and bar