python 当我们得到这个错误时:“类型错误:无法解压缩不可迭代的int对象“”?

mnemlml8  于 2023-04-10  发布在  Python
关注(0)|答案(5)|浏览(204)

当我尝试运行以下代码时,得到以下错误,“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

首先,我们不能写多个return语句,但是这个错误意味着什么呢?

llmtgqce

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)
gblwokeq

gblwokeq2#

当您尝试分配两个值时,该函数只返回一个值

z18hc3ub

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)
nhaq1z21

nhaq1z214#

一个函数可以有许多return语句。只是第一个执行的return语句将控制权返回给调用代码,函数就完成了。在你的例子中,第一个return意味着第二个不执行。你可以通过打印它的返回值来感受一下你的程序做了什么,而不需要对这个值做任何假设。

def sum_defi(a,b):
    return a+b
    return a-b
    
print(sum_defi(5,4))

打印单个整数

9

您试图将集合解压缩为两个变量ab。但函数返回单个int,而不是两个整数的集合。函数返回一个东西,您想要两个东西,因此出现错误。

tpxzln5u

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之差)。

相关问题