1.python貌似和java不同:
因为你在 test2.py 文件中导入了 test1.py 模块使用的是语句 import test1
那么你在执行 test2.py 文件的过程中,当执行到语句 import test1时,程序会跳转去执行 test1.py 文件,
这一点与 java 中的 import 有很大的不同,我也是单步调试时才发现的,这可能就是解释型语言的不同之一吧
2.错误信息:NameError: name ‘name’ is not defined。因为__name__是一个系统变量,包含了模块的名称。
name两端可是双下划线的,并不是只有一个。
3.普通语句逐行执行,自上而下。遇到赋值语句时,从右到左。
函数的执行过程,从上往下,先执行函数名,不执行函数内部,只有函数被调用时才执行 。
def hanshu1(): #第一行
print('我爱中华人民共和国!') #第二行
print('函数的执行顺序!') #第三行
def hanshu2(): #第四行
print('我爱写代码!') #第五行
hanshu2() #第六行
print('好好工作,好好学习!') #第七行
hanshu1() #第八行
#---输出:---
# 函数的执行顺序!
# 我爱写代码!
# 好好工作,好好学习!
# 我爱中华人民共和国!
执行顺序:执行第一行→执行第三行→执行第四行→执行第六行→执行第五行→执行第七行→执行第八行→执行第二行。
类的执行也是从上往下,但是类中存在很多魔法方法和普通方法,但是顺序是先执行__new__,再执行__init__,再执行普通方法,最后执行__del__
class People: #第一行
print('开始') #第二行
def run(self): #第三行
print('跑') #第四行
def __init__(self): #第五行
print('init') #第六行
def eat(self): #第七行
print('吃') #第八行
print('吃西瓜!') #第九行
one = People() #第十行
one.run() #第十一行
#---输出----
# 开始
# 吃西瓜!
# init
# 跑
执行顺序:第一行→第二行→第三行→第五行→第七行→第九行→第十行→第十一行→第六行→四行
总结
Python代码在执行过程中,遵循下面的基本原则:普通语句,直接执行;
碰到函数,将函数体载入内存,并不直接执行
碰到类,执行类内部的普通语句,但是类的方法只载入,不执行
碰到if、for等控制语句,按相应控制流程执行
碰到@,break,continue等,按规定语法执行
碰到函数、方法调用等,转而执行函数内部代码,执行完毕继续执行原有顺序代码