SyntaxError: 不能分配给这里的函数调用 (Python)
SyntaxError: cannot assign to function call here (Python)
Python “SyntaxError: cannot assign to function call here. Maybe you meant ‘==’ instead of ‘=’?” 当我们尝试分配给函数调用时发生。
要解决错误,请在左侧指定变量名称,并在赋值的右侧指定函数调用。
下面是错误如何发生的示例。
def get_num(): return 100 # ⛔️ SyntaxError: cannot assign to function call here. Maybe you meant '==' instead of '='? get_num() = 'abc'
错误是因为我们试图为函数调用赋值。
指定右侧的函数调用
要解决该错误,请确保在赋值的右侧指定函数调用。
def get_num(): return 100 # ✅ call the function on the right-hand side of the assignment my_num = get_num() print(my_num) # 👉️ 100
确保该函数返回您期望的结果,因为没有显式返回值的函数会返回None
。
=
) 的右侧指定值。您可以将变量视为存储特定值(例如函数返回的值)的容器。
括号用于调用函数。
如果您的函数采用参数,请确保指定它们。
def greet(first, last): return 'hello ' + first + ' ' + last result = greet('bobby', 'hadz') print(result) # 👉️ hello bobby hadz
进行相等比较时使用双等号
如果您打算执行相等比较,请使用双等号。
def get_num(): return 100 # ✅ using double equals when comparing values if 100 == get_num(): # 👇️ this runs print('success') else: print('failure')
我们使用双等号==
进行比较,使用单等号=
进行赋值。
# ✅ assignment (single equals) name = 'bobby' # ✅ equality comparison (double equals) if name == 'bobby': print('success')
向字典添加键时使用方括号
使用字典时,您也可能会遇到错误。
my_dict = {} # ⛔️ SyntaxError: cannot assign to function call here. Maybe you meant '==' instead of '='? my_dict('name') = 'Bobby'
错误是因为我们使用圆括号而不是方括号来向字典中添加新的键值对。
如果必须访问字典中的键值对,请确保使用方括号。
my_dict = {} my_dict['name'] = 'Bobby' print(my_dict['name']) # 👉️ 'Bobby'
方括号用于将键值对添加到字典以及访问字典中的键。
更新或访问列表中的元素时使用方括号
在更新或访问列表中的元素时,您还应该使用方括号。
这是使用括号时如何发生错误的示例。
my_list = ['bobby', 'hadz', 'com'] # ⛔️ SyntaxError: cannot assign to function call here. Maybe you meant '==' instead of '='? my_list(0) = 'abc'
要解决此问题,请改用方括号[]
。
my_list = ['bobby', 'hadz', 'com'] my_list[0] = 'abc' print(my_list) # 👉️ ['abc', 'hadz', 'com'] print(my_list[0]) # 👉️ abc
我们使用方括号更新索引处的列表元素的值0
,然后使用方括号访问该元素。
# Python 中变量和函数的有效名称
变量名必须以字母或下划线开头。
变量名称可以包含字母数字字符 ( a-z
, A-Z
, 0-9
) 和下划线_
。
def get_num(): return 100 my_num = get_num() print(my_num) # 👉️ 100
请注意,变量名不能以数字开头或用引号引起来。
Python 中的变量名称区分大小写。
def get_num(): return 100 def get_num_2(): return 200 my_num = get_num() print(my_num) # 👉️ 100 MY_NUM = get_num_2() print(MY_NUM) # 👉️ 200
示例中的 2 个变量是完全不同的,并且存储在内存中的不同位置。
# 循环时语法错误
当您在列表理解或
生成器表达式中有语法错误时,您也可能会收到此错误
。
def get_name(): return 'bobby' result = [char for get_name() in char] # ⛔️ SyntaxError: cannot assign to function call print(result)
请注意,列表理解中的顺序不正确。
相反,它应该是[char for char in get_name()]
。
def get_name(): return 'bobby' result = [char for char in get_name()] # ['b', 'o', 'b', 'b', 'y'] print(result)
确保for 循环、生成器表达式和列表理解中的操作顺序
是正确的。
我们迭代调用函数的结果,而不是函数返回值的字符或元素。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: