python中的[][](双方括号运算符)运算符是什么



我是python的新手,在分配变量时,我一直在寻找执行三元运算的正确方法。

我在堆栈溢出上发现了一个帖子,有人建议这样做:

var = ['smaller', 'bigger'][7 > 1]

其中左边的值为False,右边的值为True

我运行它,它工作。返回"更大"的

但是这个语法是什么?它总是有效吗?它被否决了吗?我在谷歌上搜索了一下,但在python文档或其他任何中都找不到任何参考

谢谢

但是这个语法是什么?

第一对方括号是列表显示。第二对方括号是切片

它总是有效吗?

"总是";是一段很长的时间。没有办法知道Python在一百万年后会是什么样子。

然而,据我所知,在Python中,列表显示的语法和切片的语法都没有以向后不兼容的方式发生过变化,至少在代码的简单、基本形式中是这样。它可能被扩展了,一些高级形式可能已经改变,但基本形式一直都是一样的。

事实上,Python中列表显示和切片的基本形式不仅在所有版本的Python中都是一样的,甚至在许多其他编程语言中也是一样的。在受ALGOL启发的语言中,对列表/数组使用方括号几乎是通用的,对索引/下标/切片使用方括号也是如此。

是否已弃用?

What's New in Python 3.10文档的Deprecated部分以及当前正在开发的3.11中,都没有提到弃用列表显示或当前列表显示语法、切片或当前切片语法。

在任何Python增强建议中,我也找不到任何关于弃用列表显示或当前列表显示语法、切片或当前切片语法的提及。

因此,它们最早可能被弃用是在Python 3.12中,这意味着它们最早可以被删除是在Python 3.13中然而,这几乎不可能,因为它会破坏所有编写过的Python程序。这将是一个比从Python 2到Python 3的转变更具突破性的变化,后者花了12年的时间

我在谷歌上搜索了它,但在python文档或其他任何中都找不到任何引用

您可以在Python语言参考的完整语法规范一章中找到Python的完整语法。

这是列表显示的语法:

list:
| '[' [star_named_expressions] ']' 

对于切片

primary:
| primary '.' NAME 
| primary genexp 
| primary '(' [arguments] ')' 
| primary '[' slices ']' 
| atom
slices:
| slice !',' 
| ','.slice+ [','] 
slice:
| [expression] ':' [expression] [':' [expression] ] 
| named_expression 

最新更新