[英]How function in python actually works?
我有一个关于 function 实际工作原理的问题。 据我了解,只有当 call() 低于 function 时才能调用 function ,看起来像这样:
def main():
num1 = int(input("Please enter first number: "))
print_num(num1)
main()
但我不明白为什么 print_num function 中的 main() 可以调用位于它下面的 def main()。
def print_num(num1):
print(num1)
main()
def main():
num1 = int(input("Please enter first number: "))
print_num(num1)
main()
当您运行 python 代码时,仅读取 function 定义并存储 function 名称。 function 中的代码在被调用之前不会被评估。 因此,例如,下面的 when run 将定义 func1 和 func2 然后当它调用 func1 时,才评估 func1 的代码。 此时代码已经看到了 func2 定义,因此它知道它并且没有问题。
def func1():
func2()
def func2():
print("hello world")
func1()
OUTPUT
hello world
但是,如果我们在 func2 之前调用 func1
def func1():
func2()
func1()
def func2():
print("hello world")
在这种情况下,func1 在代码甚至还没有看到 func2 之前就被调用了。 因此,当它评估 func1 中的代码时,它不知道 func2 是什么,我们得到一个错误。
Traceback (most recent call last):
File "C:/Users/cdoyle5/PycharmProjects/stackoverflow/chris.py", line 4, in <module>
func1()
File "C:/Users/cdoyle5/PycharmProjects/stackoverflow/chris.py", line 2, in func1
func2()
NameError: name 'func2' is not defined
def print_num(num1):
print(num1)
main()
def main():
num1 = int(input("Please enter first number: "))
print_num(num1)
main()
上述代码按以下顺序执行:
(1)def print_num(num1):
(6) print(num1)
(7) main()
(2)def main():
(4) num1 = int(input("Please enter first number: "))
(5) print_num(num1)
(3)main()
这是关于它的执行顺序。 所以即使你写
def print_num(num1)
在第 1 行,它的主体将是要执行的第 6 行代码,也就是说,只有在它被调用之后。 Python 只会在调用 function 后执行它的主体。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.