使用可变的默认参数,如何从函数外部访问对象?

问题描述 投票:0回答:2

如果我有这样的东西:

def f(x, cache=[]):
    cache.append(x)

如何从cache外部访问f

python function arguments mutable
2个回答
2
投票

您可以使用__defaults__魔法:

__defaults__

为了完整起见,也可以使用>>> def f(x, cache=[]): ... cache.append(x) >>> f.__defaults__ ([],) >>> f(2) >>> f.__defaults__ ([2],) >>> f('a') >>> f.__defaults__ ([2, 'a'],) >>> c, = f.__defaults__ >>> c [2, 'a'] ,这是更明确的:

inspect.getfullargspec

1
投票

函数范围内的变量不应该在外部访问。

您应该做的是使用一个全局变量来存储您的缓存:

inspect.getfullargspec
© www.soinside.com 2019 - 2024. All rights reserved.