-4
def func1(arg1,arg2):
    do_something

def func2(arg3)
    print arg1
    print arg2

如上所示,如何从 Python 中的另一个函数调用函数的参数?

4

2 回答 2

2

你不能这样做。毕竟这没有多大意义。现在这些函数甚至不以某种方式相互调用......

但即使func1被调用func2,如果没有一些涉及调用堆栈的极其讨厌的黑客攻击,它也是不可能的。

因此,如果您想从func1in访问参数,则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更改值arg1arg2将返回新值而不是初始值。

于 2012-12-23T13:18:26.533 回答
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
于 2012-12-23T13:30:59.537 回答