python的执行顺序一直都是很令人头疼,简单随记了一些

1、正常顺序执行。

print(1)a = 2l = [3]

这个就不附结果了,都能猜得到,这种按顺序执行,还有像等号双等号这种,都是从右边开始执行,执行等号右边,赋值给等号左边。

2、函数的执行过程

#coding=utf-8

defa():print('is a')defb():

a()print('b use a')defc():

b()print('c use b')defd():

c()print('d use c')

d()

这里面总共定义了4个函数,调用d()时,又用了c(),依次类推,输出结果也就可想而知了。也就是如图

结果:

is a

b use a

c use b

d use c

3、类就比较麻烦了,魔法方法__new__比__init__方法前执行,具体的执行顺序上例子

#coding=utf-8

classA:def __init__(self):print('init a')

param= 1

print(param)classB:def __new__(cls, *args, **kwargs):print('new b')classC:def __init__(self):print('init c')def __new__(cls, *args, **kwargs):print('new c')

A()

B()

C()

猜一下直接运行结果吧先。。。会出现什么呢

哈哈哈,结果就是:

1

init a

new b

new c

得出,自定义变量>魔法方法__new__>__init__方法前执行,我们也发现了,为什么new跟init同时存在,只运行了new,而没打印init呢?

科普一下new:

__new__()用于创建实例,该方法是在实例创建之前被调用,它是类级别的方法,也是静态方法;

科普一下init:

__init__()至少有一个参数self,__new__()返回的实例传给init,也就是传给self,__init__()在__new__()的基础上完成一些初始化的操作。

结果对比:

__new__()必须有返回值,返回实例对象;

__init__()不需要返回值。

__new__必须要有返回值,返回实例化出来的实例,__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值

如果__new__() 创建的是当前类的实例,会自动调用__init__()函数,通过return调用的__new__()的参数cls来保证是当前类实例,如果是其他类的类名,那么创建返回的是其他类实例,就不会调用当前类的__init__()函数。

想要执行他就需要在new方法下加上 return super(C, cls).__new__(cls)

这里知道的并不是太懂。

4、类中一个运行的小实例

classA:def __init__(self,name):print('A class',A.__class__,name)classB(A):def __init__(self,name):

self.name=name

A.__init__(self,name)print("B class",B.__class__,name)#print('this is B')

classC(B):def __init__(self,name):

B.__init__(self,name)print("c class")

c= C('jery')

这里会怎么执行呢??先猜一下

结果就是

A class jery

B class jery

c class

结合自己理解更加深入了解一下。

总结一下:

1) __new__方法在__init__方法前执行;

2) __new__必须要有返回值,返回实例化出来的实例,实例传给init,然后init再去执行,如果没有实例化的对象,init就不会执行;

3) 函数以及其他遵循一行一行执行。

python中and与or的执行顺序-python之执行顺序随记相关推荐

  1. eval在python中是什么意思_如何在Python中使用eval ?

    Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...

  2. python中for语句的使用_对Python中for复合语句的使用示例讲解

    当Python中用到双重for循环设计的时候我一般会使用循环的嵌套,但是在Python中其实还存在另一种技巧--for复合语句. 简单写一个小程序,用于延时循环嵌套功能如下: #!/usr/bin/p ...

  3. [转载] python中的且语句_简单探讨python中的语句和语法

    参考链接: 在Python中解包:并行分配之外 python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了, ...

  4. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  5. python中break怎么用_详解Python中break语句的用法

    详解Python中break语句的用法 在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中 ...

  6. python 中缩进的作用_缩进在Python中的作用有哪些?Python缩进案例分享

    缩进通常是指在文档中缩进单词,空格或行以遵循文档的样式规则,或者可以用来解释编写文档或代码时应使用的距离或应使用的空格.不过缩进在Python中的作用有哪些?在Python中缩进是最独特的功能之一,可 ...

  7. python中break的作用_详解Python中break语句的用法

    在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中断退出. break语句可以在while ...

  8. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  9. Python中的图像处理(第九章)Python图像增强

    Python中的图像处理(第九章)Python图像增强 前言 一. Python准备 二. Python仿真 三. 小结 前言 随着人工智能研究的不断兴起,Python的应用也在不断上升,由于Pyth ...

  10. 在python中的转义字符是什么_Python转义字符-Python转义字符表-Python转义字符的作用-在Python中如何输出转义字符-嗨客网...

    Python转义字符教程 在编程中有一些字符是打不出来的,比如换行,提示音,下一个制表位等等,于是程序语言的开发者就设计了转义序列(escape sequence)这种东西用来表达这些字符. 所谓转义 ...

最新文章

  1. 计算机的五大主要应用领域是电大,电大计算机应用基础考答案
  2. C. Edgy Trees Codeforces Round #548 (Div. 2) 【连通块】
  3. 斯坦福重磅报告:2030年的人工智能与生活
  4. python comprehensions_python 列表生成式 List Comprehensions
  5. 转行学python后悔了-转行学Python可以吗?
  6. 最简实例说明wait、notify、notifyAll的使用方法
  7. 北斗导航 | 从北斗二号到北斗三号
  8. eeprom 数据偶尔变成ff_关于水电站冗余配置下监控系统下发调节令偶尔不动作的案例分析...
  9. android 免root 模拟器,真正免root的Droidwall详细使用教程
  10. PTA数据结构期末练习 - 单选题、判断题
  11. 云计算示范项目_上海市经济和信息化委员会关于征集2020年上海市云计算应用示范项目的通知...
  12. lucene索引并搜索mysql数据库[转]
  13. “赢在幻灯片”有奖征文启事
  14. java 多个引用指向同一个对象(含案例图解)
  15. 流程框图——各方框含义
  16. html td 跨两个,【单选题】在HTML中,td标签的( )属性用于创建跨多个行的单元格。...
  17. DECOUPLED WEIGHT DECAY REGULARIZATION
  18. 拥有一个qq机器人ATRI
  19. 录屏的知识片段的记录与理解
  20. 设备健康管理软件如何帮助企业优化设备维保计划?

热门文章

  1. Access denied for user 'root'@'localhost' (using password: YES)的解决
  2. java把控制台的结果输出为本地文件作为日志
  3. spring之Environment
  4. alertdialog.builder 自定义弹窗
  5. wget镜像网站并且下载到指定目录 2012-06-20 19:40:56
  6. Javascript作用域问题的构造函数的变量
  7. C++ 内存泄露处理方法 (转)
  8. ASP.NET - 截取固定长度字符串显示在页面,多余部分显示为省略号
  9. 工作流引擎的硬功夫之1-表单自定义
  10. (转)Response.Redirect 打开新窗口的两种方法