CPython在幕后如何评估像这样的表达式
args = (2,3)
print(*args)
?
上面的内容显然打印了2 3
,但是CPython怎么做才能使它出现? 。因此,我可以认为*
运算符作为一种宏应用于可迭代对象,即CPython在运行时仅替换为可迭代内容吗?
所有想将我的问题标记为重复的人(过去发生)的提示:What does ** (double star/asterisk) and * (star/asterisk) do for parameters?未解决此问题
该问题解决了*
在各种情况下的行为-我对此一无所知。
这里也只提到了CPython(没有解决我的问题)。
我想“内部”知道CPython如何对待上面粘贴的代码。我是否可以将*
运算符视为一种宏,将CPython在运行时仅替换为可迭代的内容-还是CPython在解析*args
时在做一些更复杂的操作?上面的情况?