我们可以在声明它之前使用Python中的函数吗?

时间:2019-11-09 20:53:19

标签: python

如果在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

3 个答案:

答案 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)