1、1 函数、模块与类4.1 函数的定义函数的定义函数定义函数定义规则规则 1)函数代码块以def关键词开头,后接函数标识符名称和圆括号()。2)任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。3)函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明。4)函数内容以冒号起始,并且统一缩进。24.1 函数的定义函数的定义函数定义函数定义规则规则34.1 函数的定义函数的定义函数定义函数定义规则规则44.1 函数的定义函数的定义54.1 函数的定义函数的定义函数的形式参数和实际函数的形式参数和实际参数参数(1)形式参数:在定义函数时,函数名后面括号中的参数就是形式参数,例如
2、:#定义函数时,这里的函数参数 obj 就是形式参数 def demo(obj):print(obj)64.1 函数的定义函数的定义函数的形式参数和实际函数的形式参数和实际参数参数(2)实际参数:在调用函数时,函数名后面括号中的参数称为实际参数,也就是函数的调用者给函数的参数。例如:a=Python学习小组#调用已经定义好的 demo 函数,此时传入的函数参数 a 就是实际参数 demo(a)74.1 函数的定义函数的定义函数的形式参数和实际函数的形式参数和实际参数参数 根据实际参数的类型不同,函数参数的传递方式可分为 2 种,分别为值传递和引用(地址)传递:(1)值传递:适用于实参类型为不可
3、变类型(字符串、数字、元组);(2)引用(地址)传递:适用于实参类型为可变类型(列表,字典)。84.1 函数的定义函数的定义函数的形式参数和实际函数的形式参数和实际参数参数94.1 函数的定义函数的定义函数的形式参数和实际函数的形式参数和实际参数参数104.1 函数的定义函数的定义值传递机制值传递机制114.1 函数的定义函数的定义值传递机制值传递机制124.1 函数的定义函数的定义引用传递机制引用传递机制134.1 函数的定义函数的定义引用传递机制引用传递机制144.1 函数的定义函数的定义函数的关键字参数函数的关键字参数154.1 函数的定义函数的定义函数的默认值参数函数的默认值参数164
4、.1 函数的定义函数的定义函数的默认值参数函数的默认值参数174.1 函数的定义函数的定义函数的默认值参数函数的默认值参数184.1 函数的定义函数的定义None返回返回值值 常量 None(N 必须大写)。和 False 不同,它不表示 0,也不表示空字符串,而表示“没有值”,也就是空值。这里的空值并不代表空对象,即 None 和、“”不同。None有自己的数据类型,可以在使用 type()函数查看它的类型,属于 NoneType 类型。None 常用于 assert、判断以及函数无返回值的情况。比如使用 print()函数输出数据,其实该函数的返回值就是 None。因为它的功能是在屏幕上显
5、示文本,根本不需要返回任何值,所以 print()就返回 None。对于所有没有 return 语句的函数定义,Python 都会在末尾加上return None,使用不带值的 return 语句(也就是只有 return 关键字本身),那么就返回 None。194.1 函数的定义函数的定义None返回返回值值204.1 函数的定义函数的定义局部变量局部变量在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,将这样的变量称为局部变量(Local Variable)。当函数被执行时,Python 会为其分配一块临时的存储空间,所有在函数内部定义的变量,都会存储在这块空间中。而
6、在函数执行完毕后,这块临时存储空间随即会被释放并回收,该空间中存储的变量自然也就无法再被使用。214.1 函数的定义函数的定义局部变量局部变量224.1 函数的定义函数的定义全局变量全局变量234.1 函数的定义函数的定义全局变量全局变量244.1 函数的定义函数的定义为函数提供说明文档为函数提供说明文档254.2 函数的高级应用函数的高级应用匿名函数匿名函数lambda表达式表达式264.2 函数的高级应用函数的高级应用匿名函数匿名函数lambda表达式表达式274.2 函数的高级应用函数的高级应用闭包函数闭包函数284.2 函数的高级应用函数的高级应用递归函数递归函数(1)必须有一个明确的
7、结束条件。(2)每次进入更深一层递归时,问题规模相比上次递归都应有所减少。(3)相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)。(4)递归效率不高,递归层次过多会导致栈溢出,因为函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。294.2 函数的高级应用函数的高级应用递归函数递归函数304.2 函数的高级应用函数的高级应用递归函数递归函数314.2 函数的高级应用函数的高级应用递归函数递归函数324.3 类与对象类与
8、对象对象的引入对象的引入334.3 类与对象类与对象对象的引入对象的引入344.3 类与对象类与对象对象的常用术语对象的常用术语354.3 类与对象类与对象类的定义类的定义364.3 类与对象类与对象类和对象的关系类和对象的关系374.3 类与对象类与对象类的构造方法类的构造方法384.3 类与对象类与对象类的构造方法类的构造方法394.3 类与对象类与对象类的构造方法类的构造方法404.3 类与对象类与对象类的构造方法类的构造方法414.3 类与对象类与对象类的构造方法类的构造方法424.3 类与对象类与对象类的构造方法类的构造方法434.3 类与对象类与对象property()函数和函数和
9、property 装饰器装饰器444.3 类与对象类与对象property()函数和函数和property 装饰器装饰器454.3 类与对象类与对象property()函数和函数和property 装饰器装饰器464.3 类与对象类与对象property()函数和函数和property 装饰器装饰器474.3 类与对象类与对象property()函数和函数和property 装饰器装饰器484.3 类与对象类与对象property()函数和函数和property 装饰器装饰器494.4类的封装与继承类的封装与继承封装封装504.4类的封装与继承类的封装与继承封装封装514.4类的封装与继承类的
10、封装与继承封装封装524.4类的封装与继承类的封装与继承继承继承534.4类的封装与继承类的封装与继承继承继承544.4类的封装与继承类的封装与继承继承继承554.4类的封装与继承类的封装与继承多态多态564.4类的封装与继承类的封装与继承多态多态574.5 模块与库模块与库使用使用 import来导入模块的语法格式来导入模块的语法格式584.5 模块与库模块与库使用使用 import来导入模块的语法格式来导入模块的语法格式594.5 模块与库模块与库604.5 模块与库模块与库614.5 模块与库模块与库624.5 模块与库模块与库datetime模块模块634.5 模块与库模块与库date
11、time模块模块644.5 模块与库模块与库datetime模块模块654.5 模块与库模块与库datetime模块模块664.5 模块与库模块与库datetime模块模块674.5 模块与库模块与库datetime模块模块684.5 模块与库模块与库time模块模块time.localtime(secs):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。time.gmtime(secs):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。time.time():返回当前时间的时间戳
12、。time.mktime(t):将一个struct_time转化为时间戳。time.sleep(secs):线程推迟指定的时间运行。单位为秒。time.asctime(t):把一个表示时间的元组或者struct_time表示为这种形式:Sun Oct 18 23:21:05 2020。如果没有参数,将会将time.localtime()作为参数传入。694.5 模块与库模块与库time模块模块 time.ctime(secs):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time
13、.asctime(time.localtime(secs)。time.strftime(format,t):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。time.strptime(string,format):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。704.5 模块与库模块与库time模块模块714.5 模块与库模块与库random库库724.5 模块与库模块与库random库库734.5 模块与库模块与库random库库744.5 模块与库模块与库string模块模块754.5 模块与库模块与库string模块模块764.5 模块与库模块与库math模块模块774.5 模块与库模块与库random库库784.6 综合案例解析综合案例解析函数的综合应用函数的综合应用794.6 综合案例解析综合案例解析继承的综合应用继承的综合应用80