Python中str()函数赋值报错原因咨询:为何str(x)=0.005会报错?
为什么
str(x) = 0.005报错,x = str(x)却正常? 这本质是Python的赋值语法规则问题:
赋值语句的核心要求
Python里,赋值语句的左边必须是一个可被赋值的“左值”——比如变量名、列表的索引位置、对象的属性这类能指向内存存储位置的标识。而右边是要赋予的内容(值或者表达式结果)。
两种写法的差异
对于
x = str(x):
左边是变量x,属于合法的左值;右边是调用str()函数把原x的浮点数值转换成字符串的结果。这条语句的逻辑是“把字符串结果存到变量x对应的内存位置”,完全符合规则,所以能成功执行。对于
str(x) = 0.005:
左边是str(x),这是一次函数调用的返回结果——它是一个临时生成的字符串对象,没有固定的可修改的存储位置,不属于合法左值。Python不允许给这类临时结果直接赋值,因此触发SyntaxError,同时提示你是不是误把比较用的==写成了赋值的=。
你的代码示例
>>> x 0.005 >>> x=str(x) >>> x '0.005' >>> str(x) = 0.005 SyntaxError: cannot assign to function call here. Perhaps you meant '==' instead of '='?
内容的提问来源于stack exchange,提问作者Kartik
相关产品推荐
相关产品推荐

