当我在Python 3.8中使用带有注释的仅位置参数时,我得到了一个似乎不正确的对称表

时间:2019-11-27 08:30:05

标签: python python-internals python-3.8

Python 3.8具有positional-only function arguments的新语法功能。当我将此功能与批注结合使用并为代码生成符号表时,似乎缺少符号。

没有仅位置参数:

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

这是预期的。 fy是全局范围内的符号。现在,我添加一个/来标记参数仅位置:

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

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

(我正在使用CPython 3.8.0。)

0 个答案:

没有答案