Python 3.8具有positional-only function arguments的新语法功能。当我将此功能与批注结合使用并为代码生成符号表时,似乎缺少符号。
没有仅位置参数:
>>> 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
的注解,因此仍应出现在根symtable中。这是内部错误,还是我错过了此新功能的副作用?
(我正在使用CPython 3.8.0。)