python - 我应该避免重新打包多个未打包的可迭代对象吗?例如(*(1,2),*(3,4)) 得到 (1,2,3,4)

标签 python python-3.x syntax

是否支持获取 (1,2,3,4) 的标准语法 (*(1,2),*(3,4))所以是可移植的还是它只是实现定义的语法所以应该避免?

在使用notepad++插件的python控制台时,我发现了两个

bytes((*range(ord('a'),ord('z')+1),*range(ord('A'),ord('Z')+1))).decode()

"".join(map(chr,(*range(ord('a'),ord('z')+1),*range(ord('A'),ord('Z')+1))))

但是这些导致了相同的语法错误。但我在 windows IDLE 3.6.3 shell 和 ubuntu python 3.6.5 ($ python3) 中尝试过,并且都有效。

所以我在 npp python 插件控制台中尝试了 (*(1,2), *(3,4)) ,与 IDLE 和 ubuntu 相比,它导致了相同的错误。

是否只是因为 npp 插件控制台不能很好地支持 python 或者语法不标准?

我试图查找信息,但我什至无法获取关键字。没有人谈论未打包的语法重新打包。

最佳答案

在 Python 3.7 中,它可以工作

x = (*(1,2), *(3,4))

在 python 3.4 中则不然

x = (*(1,2), *(3,4))

  File "main.py", line 1
    x = (*(1,2), *(3,4))
         ^
SyntaxError: invalid syntax

Python 3.5(我认为)引入了通过解包构建元组、字典等的新方法。

您可能在这两个环境中使用 2 个不同版本的 python-3.x。

这是另一个有趣的 dict 示例。合并两个字典,

d = {**d1, **d2}

这是PEP-448 - 引入了这个语法

关于python - 我应该避免重新打包多个未打包的可迭代对象吗?例如(*(1,2),*(3,4)) 得到 (1,2,3,4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55731562/

相关文章:

python - 在南方,我可以将旧列的值复制到新列吗?

python - C+ +'s "a = f++;"的 Python 等价物是什么?

c - 嵌套函数在C中是什么意思?

perl - 如何在 Perl 中调用存储在散列中的函数名称?

python - 如何在opencv Python中从图像中心(x,y)绘制正方形?

python - 在numpy中返回矩阵邻居总和的最简单方法

python - 根据类别乘以列

python - 如何根据某些条件更改 jinja2 条目的颜色? (使用 flask )

python - 计数器允许重复

python - 如何在python中使用fuzzywuzzy获取最大匹配字符串