Python如何解释其代码?

Python如何解释其代码?,python,Python,我目前正在尝试学习Python。我学习了一些Liberty Basic,想知道Python是如何解释其代码的。我注意到我的一些小程序以一种奇怪的方式运行,我不确定它是如何运行的。在Liberty Basic中,它是自上而下的。在开始任何主要的Python编程之前,我想知道它是如何运行代码的。从上到下,从下到上?任何与此相关的信息都将不胜感激。Python自上而下地解释任何给定的代码文件。然而,有许多方法可以将代码从上到下解释,但不能完全按照这种方式运行 例如,考虑下面的小程序: def foo(

我目前正在尝试学习Python。我学习了一些Liberty Basic,想知道Python是如何解释其代码的。我注意到我的一些小程序以一种奇怪的方式运行,我不确定它是如何运行的。在Liberty Basic中,它是自上而下的。在开始任何主要的Python编程之前,我想知道它是如何运行代码的。从上到下,从下到上?任何与此相关的信息都将不胜感激。

Python自上而下地解释任何给定的代码文件。然而,有许多方法可以将代码从上到下解释,但不能完全按照这种方式运行

例如,考虑下面的小程序:

def foo():
    print("World")

print("Hello")

foo()
如果您只查看文件中
print()
调用的顺序,那么您可能希望输出是

World
Hello
但是,由于第一个print语句位于函数定义中,因此当解释器到达该行时,它不会立即运行,而是成为
foo
函数的一部分。稍后,当调用
foo()
时,它实际运行,因此实际输出是

Hello
World

Python自上而下解释任何给定的代码文件。然而,有许多方法可以将代码从上到下解释,但不能完全按照这种方式运行

例如,考虑下面的小程序:

def foo():
    print("World")

print("Hello")

foo()
如果您只查看文件中
print()
调用的顺序,那么您可能希望输出是

World
Hello
但是,由于第一个print语句位于函数定义中,因此当解释器到达该行时,它不会立即运行,而是成为
foo
函数的一部分。稍后,当调用
foo()
时,它实际运行,因此实际输出是

Hello
World

你有没有想过读一本关于Python编程的书?下面是一个好的阅读清单:


Python开始从上到下逐行执行代码,并像任何其他命令式编程语言一样根据分支条件进行分支。这本书不应该离基础太远…

你有没有考虑过读一本关于Python编程的书?下面是一个好的阅读清单:


Python开始从上到下逐行执行代码,并像任何其他命令式编程语言一样根据分支条件进行分支。这不应该与基本要求相差太远…

这不太正确。例如,
def foo():print(a);当您调用
foo()
时,a=2
不会打印全局变量
a
,如果它总是从上到下,您会想到这一点;它将引发一个
UnboundLocalError
,因为在编译
foo
结束时,似乎
a
被赋值,并决定它是整个函数中的局部变量。但是……对于询问者来说,可能已经足够接近了。当然,Python从不解释源代码;它解释字节码,如果它还没有字节码,则将源代码编译成字节码。但是再一次,可能对询问者来说足够近了。啊,我明白了。由于我在编写代码时遇到的问题,这对我有很大帮助。谢谢:)这不是真的。例如,
def foo():print(a);当您调用
foo()
时,a=2
不会打印全局变量
a
,如果它总是从上到下,您会想到这一点;它将引发一个
UnboundLocalError
,因为在编译
foo
结束时,似乎
a
被赋值,并决定它是整个函数中的局部变量。但是……对于询问者来说,可能已经足够接近了。当然,Python从不解释源代码;它解释字节码,如果它还没有字节码,则将源代码编译成字节码。但是再一次,可能对询问者来说足够近了。啊,我明白了。由于我在编写代码时遇到的问题,这对我有很大帮助。谢谢:)与其问这样一个宽泛而模糊的问题,为什么不发布一个不按预期方式运行的小程序,展示让你困惑的部分,并问为什么它会这样运行?与其问这样一个宽泛而模糊的问题,为什么不发布一个不按预期方式运行的小程序,展示让你困惑的部分,并问为什么它是这样工作的?实际上我还没有看过任何书。我没有时间出去找书或上网。但谢谢你提供了这些书的链接。:)实际上我还没有看过任何书。我没有时间出去找书或上网。但谢谢你提供了这些书的链接。:)