如果在Python 3.8.0中声明它之前使用它,我在声明一个简单的“两个数之和”函数时遇到错误
我尝试了两种方式,在使用该函数之前和之后声明该函数。在我在函数使用之前声明该函数的情况下(具体来说,在代码的顶部),我的程序运行良好。但是,当我尝试在使用sum函数后声明它(在这种情况下,位于代码的最底端),它给了我一个错误:“'int'对象不可迭代”。
m = sum(var1,var2) # usage of the function
print(m)
# here, the function is declared at the bottom, i.e., after the usage.
# the error is in line 7 of the code
def sum(a,b): # The function
return int(a+b)
#IN CASE OF THE FUNCTION DEFINITION AFTER ITS USAGE, THE FOLLOWING ERROR IS COMING:
Traceback (most recent call last):
File "C:/Users/yvish/AppData/Local/Programs/Python/Python38/sum.py", line 7, in <module>
m = sum(var1,var2)
TypeError: 'int' object is not iterable
答案 0 :(得分:1)
sum
是内置函数。它接受单个“可迭代”(容器)作为输入。
例如,[1, 1, 1, 1, 2]
是可迭代的。以下代码显示“ 6
”:
lyst = [1, 1, 1, 1, 2]
print(sum(lyst)) # prints `6`
lyst = [2, 4]
print(sum(lyst)) # prints `6`
lyst = [2, 2, 2]
print(sum(lyst)) # prints `6`
下一部分代码...
sum(3, 4)
无效,因为int
(例如3
)不是数字的容器,而是一个数字。
您甚至在声明它之前就谈论了在Python中“使用”一个函数。正确的术语不是“使用”,而是“ 致电”。另外,“ declare”和“ define”的含义不同,但我们不要赘述。
def foo(x, y)
return x + y
print(foo(1, 2)) # This is a function "call"
答案是否定的,在定义函数之前不能在Python中调用该函数。调用必须在函数定义的 之后的某个时间出现。
答案 1 :(得分:0)
if (n != 0) n = 0;
也是一个内置函数。因此,您在顶部调用了一个内置函数,由于sum
期望可迭代,因此会给您带来错误。然后,您将在脚本中稍后将sum
重新定义为其他内容。
要回答您的问题:不,您不能在脚本中定义函数之前调用函数并返回结果。
答案 2 :(得分:0)
在您显示的形式中,您无法执行此操作,因为Python解释程序会按顺序运行脚本。它会在执行语句之前尝试执行您的函数。
通常将所有代码放入函数中,也可以在最后添加一个函数调用,这是一种好习惯。从机械上讲,解释器将执行一个def
调用,然后执行下一个调用,然后尝试仅在实际被调用后才运行代码。
def main():
m = add_up(var1,var2)
print(m)
def add_up(a,b):
return int(a+b)
if __name__ == '__main__':
main()
由于sum是内置函数,因此您将得到特定的错误。不是它尚未定义,而是它已定义,而是作为一个具有单个列表的函数。
def main():
m = sum([var1, var2])
print(m)