编程语言应用

注册

 

发新话题 回复该主题

IT编程Python开发基础系列顺序 [复制链接]

1#
白癜风早期症状 http://www.bdfyy999.com/m/

虽然我们有各种流程判断、循环、跳转、控制、中断等等,但从根本上程序还是逐行顺序执行的。

Python代码在执行过程中,遵循下面的基本原则:

普通语句,直接执行;

碰到函数,将函数体载入内存,并不直接执行;

碰到类,执行类内部的普通语句,但是类的方法只载入,不执行;

碰到if、for等控制语句,按相应控制流程执行;

碰到

,break,continue等,按规定语法执行;

碰到函数、方法调用等,转而执行函数内部代码,执行完毕继续执行原有顺序代码:

if__name__==__main__/p>

很多时候,我们经常在python程序中看到这么一行语句,这里简要解释一下:

首先,__name__是所有模块都会有的一个内置属性,一个模块的__name__值取决于你如何调用模块。假如你有一个test.py文件,如果在a.py文件中使用import导入这个模块importtest.py,那么test.py模块的__name__属性的值就是test,不带路径或者文件扩展名。但是很多时候,模块或者说脚本会像一个标准的程序样直接运行,也就是类似pythontest.py这种方式,在这种情况下,__name__的值将是一个特别缺省值"__main__"。

根据上面的特性,可以用if__name__==__main__来判断是否是在直接运行该py文件!如果是,那么if代码块下的语句就会被执行,如果不是,就不执行。该方法常用于对模块进行测试和调试,区分直接运行和被导入两种情况的不同执行方式!

我们通过下面的例子,脚本名为test.py,执行pythontest.py看看实际的顺序执行方式:

importos#1print([1]timemodulestart)#2classClassOne():print([2]ClassOnebody)#3def__init__(self)10print([3]ClassOne.__init__)def__del__(self):print([4]ClassOne.__del__)#defmethod_x(self)12print([5]ClassOne.method_x)classClassTwo(object):print([6]ClassTwobody)#4classClassThree():print([7]ClassThreebody)#5defmethod_y(self)16print([8]ClassThree.method_y)classClassFour(ClassThree):print([9]ClassFourbody)#6deffunc():print("funcfunctionfunc")if__name__==__main__7print([11]ClassOnetests,30*.)#8one=ClassOne()#9one.method_x()#11print([12]ClassThreetests,30*.)#13three=ClassThree()#14three.method_y()#15print([13]ClassFourtests,30*.)#17four=ClassFour()four.method_y()print([14]evaltimemoduleend)#

首先执行#1的import语句

执行#2的打印语句

ClassOne、ClassThree和ClassFour的类定义执行过程中,分别打印#3、#4、#5、#6四句话,但是其中的方法并不执行,仅仅是载入内存

碰到#7的if__name__==__main__:,判断为True,于是执行if内部的代码

执行#8的print语句

执行#9,实例化一个ClassOne的对象

执行#10的初始化方法,打印一条语句

返回执行#11的menthod_x调用

返回类的定义体,找到#12,执行方法,打印语句

再返回#13处,打印

执行#14的实例化

ClassThree没有自定义初始化方法,接着执行#15

回到类里找到#16的方法,执行打印语句

执行#17

......后面不再详述

执行完最后的#的打印语句后,按理说程序应该终止退出了,但由于ClassOne这个类定义了__del__方法,还要在最后执行它内部的代码#这条打印语句。

通过这个例子,相信你对Python的程序执行流程能够有一定的了解。其实这个过程,也是我们读别人代码的过程。

以上就是Python顺序执行的详解,私信回复,免费领取Python编程全套学习资料,包含全套视频教程、项目源码、学习路线图等,赶快私信吧。

分享 转发
TOP
发新话题 回复该主题