三、LEGB规则
1、概念:在查重名称时,按照local enclosed global built in 顺序查找
local:方法内部
enclosed:嵌套函数
global:全局变量
built in:特殊名称
其实就是由里到外查找
三、LEGB规则
1、概念:在查重名称时,按照local enclosed global built in 顺序查找
local:方法内部
enclosed:嵌套函数
global:全局变量
built in:特殊名称
其实就是由里到外查找
二、nonlocol关键字
nonlocal用来声明外层的局部变量
global 用来声明全局变量
一、嵌套函数在函数内部定义的函数
14、阶乘计算案例
13、递归函数
1)概念:自己调用自己的函数
2)组成:终止条件+递归步骤
在处理大量数据时,会占用很大的内存,谨慎使用
11、lambda表达式
用来声明匿名函数,只允许包含一个表达式,不能包含复杂语句
lambda arg1,arg2,arg3:表达式
9、可变参数
1)*param:将多个参数收集到一个元组
2)**param:将多个参数收集到一个字典中
10、强制命名参数
在带星号的可变参数后面增加新的参数,必须是强制命名参数,不然星号无法正确扫描到需要放入元组的元素。
8、参数的类型
1)位置参数:函数调用时,实参按照默认顺序传递,个数必须匹配,按位置传递的参数,成为“位置参数”。
2)默认值参数:为某些参数设置默认值,如果不传,值是默认的,传递时按传递设置的值。默认值必须位于普通位置参数后面。
3)命名参数:按照形参的名称传递函数,位置不做要求。
4)可变参数:
7、参数的传递:不可变对象含可变对象
传递不可变对象是浅拷贝
6、浅拷贝和深拷贝
浅拷贝:copy,不拷贝子对象的内容,只是拷贝子对象的引用
深拷贝:deepcopy,会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象
测试浅拷贝和深拷贝:
5、传递不可变对象
数字,字符串,元组,布尔值都是不可变对象
4、参数的传递
概念:函数的参数传递本质是从实参到形参的赋值操作。
1)对可变对象进行操作:直接作用于原对象本身
2)对不可变对象进行操作:产生一个新的对象空间,不是值传递
传递可变对象的操作:
3、局部变量和全局变量效率的测试
2、变量的作用域(全局变量和局部变量)
变量起作用的范围成为变量的作用域
全局变量:global:尽可能少的使用全局变量
如果想使用全局变量需要在函数内加入global 变量名
局部变量:函数执行完不能在函数外使用
一、函数
1、函数也是对象:执行def函数后,系统就创建了相应的函数对象。
在堆中创建好函数对象,在栈里保存变量:test01,调用test01即可以在堆中调用函数。在栈中定义一个新的对象,对应的堆也是test01的堆。
十三、返回值详解
1、return要点
1)包含return语句,结束函数执行并返回值
2)不包含return语句,返回None值
3)返回多个返回值,使用列表,元组,字典存起来即可
十一、形参和实参
def 后面的为形参
语句中实际调用的参数为实参
十二、文档zi'fu'chuan
十、函数用法和底层分析
1、函数的基本概念
1)一个程序有一个个任务组成,函数就是代表一个任务或者一个功能
2)函数是代码服用的通用机制
2、Python函数的分类
1)内置函数:str(),list()、
2)标准库函数:import
3)第三方库函数
4)用户自定义函数
3、函数的定义和调用
def 函数名(参数名)
4、return返回值
九、绘制不同颜色的多个同心圆,