Python:如何在bar方法中获取foo方法的config参数值?
解决方法
你的代码里,bar拿到的只是foo函数本身,并没有获取到foo调用时传入的config参数,所以需要通过以下方式传递这个参数:
方法一:直接传递config参数
这是最直接的方案,修改foo调用bar时把config一起传进去:
def bar(foo, config): # 直接获取is_prod的值 print(config['is_prod']) def foo(config: dict): bar(foo, config) foo({'is_prod': True})
方法二:将config绑定为foo函数的属性
如果必须只传递foo函数给bar,可以在foo内部把config绑定为函数自身的属性,之后在bar里读取这个属性:
def bar(foo): # 通过函数属性获取is_prod的值 print(foo.config['is_prod']) def foo(config: dict): foo.config = config # 把config绑定为foo函数的属性 bar(foo) foo({'is_prod': True})
注意事项
- 原代码中
foo调用bar(foo)时,传递的是foo这个函数对象,而非foo的执行结果或它的参数,所以bar无法直接获取到config。 - 方法二中的函数属性是全局绑定的,如果多次调用
foo,后续的config会覆盖之前的,若有并发场景需要注意。
内容的提问来源于stack exchange,提问作者daydayup
相关产品推荐
相关产品推荐

