当前位置: 首页 > 面试题库 >

Python的逗号运算符在分配期间如何工作?

邹山
2023-03-14
问题内容

我正在阅读Python文档(http://docs.python.org/reference/simple_stmts.html#assignment-
statements
)中的赋值语句。

在其中引用:

如果目标是用括号或方括号括起来的目标列表:该对象必须是可迭代的,并且具有与目标列表中存在目标的项目数量相同的项目,并且其项目从左到右分配给相应的项目。目标。

阅读之后,我想到了编写这样的示例:

a = 5
b = 4
a, b = a + b, a
print a, b

我的假设是a和b的值都应为9。

但是,事实证明我错了。’a’的值为9,’b’的值为5。

有人可以帮助我更好地理解这一点吗?为什么要分配旧值“ a”而不是新值?根据文档,将首先分配a的值?我想念什么吗?


问题答案:

在进行任何赋值之前,将评估赋值运算符右边的所有表达式。

在Python教程中:编程的第一步:

第一行包含多个赋值:变量a和b同时获得新值0和1。在最后一行,再次使用它,表明 右侧的表达式在任何赋值之前都首先被求值发生
。右侧表达式从左到右计算。

强调我的。

您的代码在功能上等同于以下代码:

a, b = 5 + 4, 5
print a, b


 类似资料:
  • C++ 运算符 使用逗号运算符的为了把几个表达式串在一起。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。从本质上讲,逗号的作用是导致一系列运算被顺序执行。 最右边的那个表达式的值将作为整个逗号表达式的值,其他表达式的值会被丢弃。例如: var = (count=19, incr=10, count+1); 在这里,首先把 count 赋值为 19,把 incr 赋值为 10,然后

  • 逗号运算符的目的是将几个表达式串起来。 以逗号分隔的表达式列表的值是最右侧表达式的值。 本质上,逗号的效果是导致执行一系列操作。 其他表达式的值将被丢弃。 这意味着右侧的表达式将成为整个逗号分隔表达式的值。 例如 - var = (count = 19, incr = 10, count+1); 这里首先指定计数值19,指定incr值10,然后将count加1,最后指定var最右边表达式的值,c

  • 在逗号处划分字符串的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素? 例如:

  • 问题内容: 我已经看到了许多相关的问题,但是都没有直接解决我想做的事情。我正在从CSV文件中读取文本行。 所有项目都用引号引起来,有些则在引号内有其他逗号。我想按逗号分隔行,但忽略引号内的逗号。有没有一种方法可以在Python中执行此操作,而无需使用许多正则表达式语句。 一个例子是: 我想将其解析为4个单独的值变量: 我想念一个简单的选择吗? 问题答案: 不要尝试重新发明轮子。 如果要读取CSV文

  • 问题内容: 我需要编写一个扩展版本的StringUtils.commaDelimitedListToStringArray函数,该函数具有一个附加参数:转义字符。 所以打电话给我: 应该返回: 我当前的尝试是使用String.split()使用正则表达式拆分String: 但是返回的数组是: 有任何想法吗? 问题答案: 正则表达式 意思是“匹配不是反斜杠后跟逗号的字符”-这就是为什么模式之所以匹配

  • 考虑函数调用(调用< code>int sum(int,int)) 编译器如何确定函数调用 中使用的 不是逗号运算符? 注意:我不想在函数调用中实际使用逗号运算符。我只是想知道编译器如何知道它不是逗号运算符。