def func1(arg1,arg2):
do_something
def func2(arg3)
print arg1
print arg2
如何从Python中的另一个函数调用函数的参数,如上图所示?
答案 0 :(得分:2)
你不能这样做。毕竟,这没有多大意义。现在这些功能甚至不会以某种方式相互呼叫......
但即使func1
调用func2
,如果没有一些涉及调用堆栈的非常讨厌的黑客攻击也是不可能的。
因此,如果您想在func1
中访问func2
中的参数,则需要在调用它时将它们作为参数传递给func2
。
如果有人好奇,这里是使用inspect
模块获取传递给调用者函数的参数的dict的代码。 请勿在任何生产代码中使用此功能!
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')
<强>输出:强>
来电者的args:{'arg1':'foo','arg2':'bar'}
请注意,此代码有一个无法避免的重要警告:如果func1
更改arg1
或arg2
的值,则会返回新值而不是初始值。< / p>
答案 1 :(得分:0)
我不知道这是否对你有帮助,因为问题很不清楚,但是你可以通过嵌套这样的函数定义来创建一个闭包:
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