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. 【安卓开发】Layout Inflation不能这么用
  2. OpenStack和Redis
  3. TabLayout让Fragment在ViewPager中的滑动切换更优雅
  4. Java黑皮书课后题第2章:2.10(科学:计算能量)编写程序,计算将水从初始温度加热到最终温度所需的能量。程序应该提示用户输入水的重量(kg),以及水的初始温度、最终温度
  5. 微软将人工智能嵌入Windows 10更新
  6. java int相除向上取整_java实战项目常用类,Date、Calendar、BigDecimal、Math、UUID
  7. 数据结构(C语言版)顺序栈相关算法的代码实现
  8. DEDE_5.7星星评分插件首发!
  9. 春运能不能抢到票就看他了!开源的Python抢票神器
  10. 类的反射实例(servlet的抽取)
  11. 看好你的数据库连接字符串!
  12. jsp-include 写法
  13. 威纶通触摸屏如何打开并升级EB8000旧版本项目并更换触摸屏型号?
  14. 红帽linux安装ftp服务,红帽Linux安装FTP服务
  15. 史上最全java项目开发编程规范
  16. python123手机版本_Python123
  17. 强大TOP版淘客程序(带后台管理)
  18. 【JavaWeb】书城项目之与数据库交互的登录案例实现
  19. 系统思考:VUCA时代下的我们应该怎么做?
  20. ES实现自动补全查询

热门文章

  1. 将数字转化为特殊符号的密码
  2. 前端面试题(html篇)
  3. [转载].net 访问oracle的总结
  4. 每天OnLineJudge 之 “杨辉三角 ”
  5. [Ubuntu]更改所有子文件和子目录所有者权限
  6. JavaSE基础之构造器(构造方法)和一般方法
  7. 神经张量网络:探索文本实体之间的关系
  8. 基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程(转)...
  9. 【win32汇编】0x01 开篇一些乱七八糟的话
  10. MFC中小笔记(三)