Col*_*son 10 syntax programming-languages operator-keyword colon-equals
在某些编程语言中,我看到(例如):
x := y
Run Code Online (Sandbox Code Playgroud)
这个:=操作员通常被称为什么,它做什么?
Mar*_*ers 16
这取决于语言.
:=它意味着赋值.在这些语言中,:=运算符通常意味着相等比较.=均值分配的语言中,=通常用于相等比较.没有
==意思:=?
我记不起任何=与其相同的语言:=.
在MySQL中=,:=它们都用于赋值,但它们不可互换,选择正确的取决于上下文.为了使事情更加混乱,=操作员也用于比较.=作为任命或比较的解释也取决于背景.
这是一个即将加入 Python 3.8 的新运算符,实际上在 BDFL Guido van Rossum 的提前退休中发挥了作用。
正式地,运算符允许所谓的“赋值表达式”。非正式地,操作员被称为“海象操作员”。
它允许赋值,同时也评估一个表达式。
所以这:
env_base = os.environ.get("PYTHONUSERBASE", None)
if env_base:
return env_base
Run Code Online (Sandbox Code Playgroud)
可以缩短为:
if env_base := os.environ.get("PYTHONUSERBASE", None):
return env_base
Run Code Online (Sandbox Code Playgroud)
https://www.python.org/dev/peps/pep-0572/#examples-from-the-python-standard-library
小智 5
该符号称为“becomes”,是在 IAL(后来称为 Algol 58)和 Algol 60 中引入的。它是为变量赋值的符号。读x := y;作“x 变成 y”。
使用“:=”而不是“=”进行赋值是数学上的严谨;从这种观点来看,“x = x + 1”是荒谬的。其他当代语言可能使用左箭头进行分配,但这在许多字符集中并不常见(作为单个字符)。
Algol 68进一步区分识别和分配;INT the answer = 42;表示“答案”被声明为等于 42(即,是一个常数值)。在INT the answer := 42;“答案”中,被声明为一个变量,并最初被赋予值 42。
还有其他赋值符号,例如+:=,发音为 plus-and-becomes;x +:= y将 y 添加到 x 的当前值,并将结果存储在 x 中。
(空格没有意义,因此可以插入“到”标识符中,而不必弄乱下划线)