Python 为什么尝试调用此模块会导致“错误”;int对象不可iterable“;错误?
我试图学习如何从不同文件中的模块调用函数。 为什么尝试使用返回值时会在main中出现“Int object is not iterable”错误Python 为什么尝试调用此模块会导致“错误”;int对象不可iterable“;错误?,python,int,iterable,Python,Int,Iterable,我试图学习如何从不同文件中的模块调用函数。 为什么尝试使用返回值时会在main中出现“Int object is not iterable”错误 import totalages firstage = int(input('enter age: ')) secondage = int(input('enter age: ')) result = sum(firstage, secondage) print('together you are', result, 'years old')
import totalages
firstage = int(input('enter age: '))
secondage = int(input('enter age: '))
result = sum(firstage, secondage)
print('together you are', result, 'years old')
#######################这在名为totalages.py的单独文件中
def sum(a, b):
return a + b
当主函数中包含sum函数时,代码按预期工作,以添加两个输入。但是,如果我将函数移动到一个单独的文件,并尝试导入结果并调用它,我会收到一个“int object is not iterable”错误。为什么?首先,它是一个python内置函数,因此您可能应该将函数重命名为my\u sum
还有两种方法可以导入函数
from totalages import my_sum
,它告诉解释器查看totalages.py
并导入函数my_sum
,然后您可以直接使用my_sum(a,b)
import totalages
您需要对其执行totalages.my_sum(a,b)
sum
builtin,它接受一个类似列表的iterable,但是由于您将它传递一个整数,因此您会看到如下错误int object is not iterable
In [2]: sum(1+2)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-6576b93b138f> in <module>
----> 1 sum(1+2)
TypeError: 'int' object is not iterable
您的totalages.py将更改为
#Corrected import statement
from totalages import my_sum
firstage = int(input('enter age: '))
secondage = int(input('enter age: '))
result = my_sum(firstage, secondage)
print('together you are', result, 'years old')
def my_sum(a, b):
return a + b
如果使用导入总计
则另一个选项是
import totalages
firstage = int(input('enter age: '))
secondage = int(input('enter age: '))
result = totalages.my_sum(firstage, secondage)
print('together you are', result, 'years old')
输出将如下所示:
enter age: 20
enter age: 30
together you are 50 years old
您的导入不正确。通过此导入,
sum()
不能调用sum
方法,而只能调用totalages.sum()
。您收到此错误消息是因为python使用内置方法sum
,该方法接收一个列表作为参数,而不是您的
以下是您可以使用的一些正确方法:
从totalages导入总和
...
总数(a、b)
导入总计
...
总计。总和(a,b)
顺便说一下,尽量避免在内置方法中使用相同的名称。这会让你以后更加困惑。你应该用适当的python标记来标记你的问题;这样你会得到更多的回复。太好了!很高兴能帮助@Shawn!如果你能勾选答案旁边的勾号,将我的答案标记为已接受,那就太好了:)明白了!再次感谢。