当我尝试运行以下代码时,得到以下错误,“cannot unpack non-iterable int object”:
def sum_defi(a,b): return a+b return a-b a,b = sum_defi(5,4) print(a) print(b)
错误:TypeError:cannot unpack non-iterable int object
TypeError:cannot unpack non-iterable int object
首先,我们不能写多个return语句,但是这个错误意味着什么呢?
llmtgqce1#
这个错误是因为你试图将函数的结果(一个整数)解压缩成两个变量a和b。解包语法用于将可迭代对象中的值赋值给单行中的变量。例如,如果你有一个元组(x,y),你想将它的值赋值给变量a和b,你可以这样使用解包语法:a,B =(x,y)。试试这个:
def sum_defi(a,b): return a+b, a-b result = sum_defi(5, 4) a, b = result print(a) print(b)
gblwokeq2#
当您尝试分配两个值时,该函数只返回一个值
z18hc3ub3#
你可以用收益率来代替回报率,但这不是一种值得推荐的风格:
def sum_defi(a,b): yield a+b yield a-b print(a) print(b)
要返回元组并解包,请执行以下操作:
def sum_defi(a,b): return a+b, a-b # Function ends here # Any statement here (below ONE return statement) won't be executed a,b = sum_defi(5,4) print(a) print(b)
nhaq1z214#
一个函数可以有许多return语句。只是第一个执行的return语句将控制权返回给调用代码,函数就完成了。在你的例子中,第一个return意味着第二个不执行。你可以通过打印它的返回值来感受一下你的程序做了什么,而不需要对这个值做任何假设。
return
def sum_defi(a,b): return a+b return a-b print(sum_defi(5,4))
打印单个整数
9
您试图将集合解压缩为两个变量a和b。但函数返回单个int,而不是两个整数的集合。函数返回一个东西,您想要两个东西,因此出现错误。
a
b
int
tpxzln5u5#
代码中的错误是,它试图将单个返回值解压缩为两个变量,这会导致TypeError。为了解决这个问题,你可以修改sum_defi函数以返回一个包含a和b的和和差的元组,如下所示:
def sum_defi(a, b): return a + b, a - b
然后,您可以将函数返回的元组解压缩为两个变量,如下所示:
result = sum_defi(5, 4) a, b = result print(a) print(b)
这将为a打印9(5和4之和),为B打印1(5和4之差)。
5条答案
按热度按时间llmtgqce1#
这个错误是因为你试图将函数的结果(一个整数)解压缩成两个变量a和b。
解包语法用于将可迭代对象中的值赋值给单行中的变量。例如,如果你有一个元组(x,y),你想将它的值赋值给变量a和b,你可以这样使用解包语法:a,B =(x,y)。
试试这个:
gblwokeq2#
当您尝试分配两个值时,该函数只返回一个值
z18hc3ub3#
你可以用收益率来代替回报率,但这不是一种值得推荐的风格:
要返回元组并解包,请执行以下操作:
nhaq1z214#
一个函数可以有许多
return
语句。只是第一个执行的return
语句将控制权返回给调用代码,函数就完成了。在你的例子中,第一个return
意味着第二个不执行。你可以通过打印它的返回值来感受一下你的程序做了什么,而不需要对这个值做任何假设。打印单个整数
您试图将集合解压缩为两个变量
a
和b
。但函数返回单个int
,而不是两个整数的集合。函数返回一个东西,您想要两个东西,因此出现错误。tpxzln5u5#
代码中的错误是,它试图将单个返回值解压缩为两个变量,这会导致TypeError。
为了解决这个问题,你可以修改sum_defi函数以返回一个包含a和b的和和差的元组,如下所示:
然后,您可以将函数返回的元组解压缩为两个变量,如下所示:
这将为a打印9(5和4之和),为B打印1(5和4之差)。