Python 中是否有类似于 Perl 中的“want”的东西

sim*_*one 4 python perl

在 Perl 中,有一种方法可以找出函数在什么上下文中被调用 - 无论是列表还是标量上下文 - 甚至更精细的粒度。请参阅wantarraywant模块

Python中有类似的东西吗?

che*_*ner 5

不,Python 没有 Perl 那样的标量/数组区别。值只是绑定到名称,而不考虑值的类型。

我能想到的最接近的类比是这样的

x += y
Run Code Online (Sandbox Code Playgroud)

这被脱糖为x.__iadd__(y),因此该方法可以根据需要__iadd__检查其参数的类型。y例如,即使list.__iadd__ 这样做,理论上它也可以被定义为允许诸如

x = []
x += 9  # x == [9]; append a non-iterable argument
x += [11, 12]  # x == [9, 11, 12]; extend with an iterable argument
Run Code Online (Sandbox Code Playgroud)