我现在正在使用Python 3.5解释器进行编程,并发现了非常有趣的行为:
>>> (1,2,3,"a",*("oi", "oi")*3)
(1, 2, 3, 'a', 'oi', 'oi', 'oi', 'oi', 'oi', 'oi')
>>> [1,2,3,"a",*range(10)]
[1, 2, 3, 'a', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ('aw','aw',*range(10),*(x**2 for x in range(10)))
('aw', 'aw', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 4, 9, 16, 25, 36, 49, 64, 81)
>>> {"trali":"vali", **dict(q=1,p=2)}
{'q': 1, 'p': 2, 'trali': 'vali'}
>>> {"a",1,11,*range(5)}
{0, 1, 2, 3, 4, 11, 'a'}
尽管我有多年的Python经验,但在文档、示例和任何源代码中都从未见过这种用法。但我发现它非常有用。
就Python语法而言,从我的角度来看,似乎很合理。函数参数和元组可以使用相同或类似的状态进行解析。
这是被记录下来的行为吗?在哪里记录了呢?
哪些Python版本具有此功能?
*
和**
解包。你熟悉这个吗? - TigerhawkT3