3

Python 3.8 对仅位置函数参数有一个新的语法特性。当我将此功能与注释结合使用并为代码生成符号表时,似乎缺少一个符号。

没有位置参数:

>>> import symtable
>>> symtable.symtable('def f(x: y): pass', '?', 'exec').get_symbols()
[<symbol 'f'>, <symbol 'y'>]

这是意料之中的。f并且y是全局范围内的符号。现在我添加一个/来标记仅位置参数:

>>> symtable.symtable('def f(x: y, /): pass', '?', 'exec').get_symbols()
[<symbol 'f'>]

这似乎是错误的。缺少符号y,尽管它仍然是注释,x因此仍应存在于根符号表中。这是一个内部错误,还是我错过了这个新功能的副作用?

(我使用的是 CPython 3.8.0。)

4

0 回答 0