一、顺序执行
1、python的执行顺序与其他语言一样,都是依顺序执行。
2、遵循的规则:
(1)普通语句直接执行;
(2)遇到函数体,只将函数体载入内存,并不直接执行;
(3)遇到类,执行类内部的普通语句,但是类的方法也只载入内存,不执行;
(4)遇到if、for等控制语句,按照相应的流程执行;
(5)遇到@、break、continue等,按规定语法执行;
(6)遇到函数调用、类方法调用,转而执行相应内部代码,执行完毕之后再返回原代码位置;
3、py文件的内置魔法属性。
(1)任何一个py文件运行的时候,python解释器都会自动加载一些内置的属性,这种属性被称为“内置魔法属性”,使用dir()函数可以查看到当前文件所有显示和隐式的属性
每个内置的魔法属性都有其特定的作用。重点讲一下‘ __name__ ‘这个魔法属性,‘__name__’主要用来区分是否执行当前文件。当直接运行当前文件时,‘__name__’的值会默认置为字符串‘__mian__’。如果运行的是其他模块,则这个值是其他的模块名。
通常用这个内置魔法属性来开启程序的入口。
二、条件判断
1、python没有switch-case语句。
三、循环判断
1、python可以适用while-else语句,但是当while中适用break语句之后,则else中语句不会被执行。
四、函数
1、函数的参数。
(1)python的函数参数传递都是地址的传递。
上图例子中外部变量a指向对象整数10的内存地址,函数内部的参数指向的地址与外部一致,说明传参只是传递了对象的地址。
(2)参数分为可变类型和不可变类型。
不可变类型包括:整数、字符串、元组等,可变类型包括列表、字典等。
- 对于可变类型参数而言,函数体内部对对象的操作是独立的,不影响外部对象的值,因为变量存在作用 域的概念,在函数体内部是一个隔离起来的空间。如下所示:
例子中的函数对变量a进行了赋值,其实就相当于对重新创建了一个整数2的对象。所以这个赋值不会影响外部变量的值。
- 可变类型的传参有点区别。如下图所示:
如图所示,python将对象[1,2,3]的地址传给了函数体,函数对这个地址的对象进行了append操作,这个操作并没有创建新的对象,而是继续在对象[1,2,3]的基础上添加元素,这就会导致函数体外面的值也发生变化,因为指向的本来就是同一个对象。
(3)python的参数分为位置参数和默认参数,默认参数必须在位置参数后面!位置参数传递顺序必须跟函数体定义的完全一致方可,但是使用形参名称来进行传递时,可以不按顺序来。
(4)默认参数尽量指向不可变对象!
先看如下案例
当python第一次次初始化函数体的时候,就会变量a指向自动创建[]对象,并添加元素‘A‘;当第二次运行函数体的时候,变量a仍然指向同一个对象,不会再进行创建,因为[]是可变数据类型,此时对象的值已经是[‘A‘]了,所以输出值是[‘A‘ , ‘A‘];以此类推。
基于上述原因,默认参数应该尽量指向不可变对象。