【发布时间】:2021-10-15 23:46:11
【问题描述】:
在 Perl 中,有一种方法可以找出调用函数的上下文 - 无论是列表还是标量上下文 - 甚至是更精细的粒度。请参阅wantarray 和want module。
Python中有类似的东西吗?
【问题讨论】:
在 Perl 中,有一种方法可以找出调用函数的上下文 - 无论是列表还是标量上下文 - 甚至是更精细的粒度。请参阅wantarray 和want module。
Python中有类似的东西吗?
【问题讨论】:
不,Python 没有 Perl 的标量/数组区别。值只是绑定到名称,而不考虑值的类型。
我能想到的最接近的类比是
x += y
这被取消为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
【讨论】:
desugared 这个词。我必须使用它!
x += y 等价于 x = x + y,如果未定义 x.__iadd__,则语法的含义取决于 x 的类型,而不仅仅是 6 个字符的字符串 x += y。