学习笔记闭包 装饰器

xiaoxiao2021-02-28  38

闭包 closure   将内嵌函数的语句和这些语句的执行环境打包在一起后,得到的函数对象称为闭包(closure)  闭包必须满足以下三个条件:    1. 必须有一个内嵌函数    2. 内嵌函数必须引用外部函数中的变量    3. 外部函数返回值必须是内嵌函数 示例:   见closure.py 说明:   如果一个内嵌函数访问了外部嵌套函数作用域内的变量,则这个内嵌函数就是闭包 装饰器 decorators(专业提高篇) 什么是装饰器:   装饰器是一个函数,这个函数的主要作用是包装别一个函数或类(后在才讲)   包装的目的是在不改变原函数名的情况下改变被包装对象的行为 函数装饰器 function decorators   函数装饰器是指装饰器是一个函数,传入的是一个函数,返回的也是一个函数 示例:   见deco1.py   见deco2.py   见deco3.py   见deco4.py 函数的文档字符串:   语法:     def 函数名(参数列表):         """函数的文档字符串"""         函数语句块   说明:     文档字符串通常来用说明本函数的功能和使用方法     在交互模式下,输入help(函数名) 可以查看函数的"文档字符串" 函数的__doc__属性:   函数内第一次末赋值给任何变量的字符串是此函数的文档字符串   此字符串会自动赋值给函数的__doc__属性   示例:     def cba():         '这是一个文档字符串'         pass     print(cba.__doc__)  # 这是一个文档字符串 函数定义语句的完整语法: [@装饰器1] [@装饰器2] [...]   def 函数名([位置形参], [*元组形参], [命名关键字形参],     [**字典形参]):       "文档字符串"       语句块 模块 module   什么是模块:     模块是一个包含有一系列变量,函数,类等组成的程序组     模块是一个文件,模块文件通常以.py结尾   作用:     1. 让一些相关的变量,函数,类等有逻辑的组织在一起,使逻辑结构更加清晰     2. 模块中的变量,函数和类可提供给其它模块使用 模块的分类:   内置模块(biultins), 在解释器的内部可以直接使用   标准库模块,安装python时已安装且可直接使用   第三方模块(通常为开源), 需要自己安装   用户自己编写的模块(可以作为其它人的第三方模块) 模块的导入 import import 语句   语法:     import 模块名1 [as 模块新名1][,模块名2 [as 模块新名2], ....]   示例:     import math  # 导入数学模块     import sys, os # 导入 sys,os模块   作用:     将某模块整体导入到当前模块中   用法:     模块名.属性名    help(模块名)  查看模块内的变量,函数,类等 练习:   1. 输入一个圆的半径,打印出这个圆的面积   2. 输入一个圆的面积,打印出这个圆的半径      面积 = pi * 半径的平方     (要求用math模块内的函数和变量) from import 语句   语法:     from 模块名 import 模块属性名1 [as 属性新名1],  模块属性名2 [as 属性新名2], ...   作用:     将某模块内的一个或多个属性导入到当前模块的作用域   示例:     from math import pi, sqrt     from math import factorial as fac     from math import sin     area = pi * 10 ** 2  # 可以直接使用导入的函数名或变量名 from import *语句   语法:     from 模块名 import *   作用:     将某模块的所有属性导入到当前模块   示例:     from math import *     print(sin(pi/2))     print(factorial(10)) dir 函数   格式:     dir([对象]) -> 返回一个字符串列表   说明:     如果没有参数调用,则返回当前作用域内的所有变量的列表     如果给定一个对象作为参数,则返回这个对象的所有变量的列表        1. 对于模块,返回这个模块的全部属性        2. 对于一个类对象,返回类对象的所有变量,并递归基类对象的所有属性        3. 对于其它对象返回所有变量,类变量和基类变量 数学模块 math   模块名math 常用函数见:   python_base_docs_html/数学模块math_???.html 练习:   请编写函数 fun(n) 其功能是计算并输出下列多项式的和     Sn = 1 + 1/1! + 1/2! + 1/3! + 1/4! +... +1/n!     请编写函数 fun(x, n) 它的功能是计算下载多数项的和并返回:     s = 1 + x + x**2/2! + x**3/3! + x**n/n!     print(fun(3.1, 10)) 练习:   1. 已知有五位朋友在一起       第五位朋友比第四个人大2岁       第四位朋友比第三个人大2岁       第三位朋友比第二个人大2岁       第二位朋友比第一个人大2岁       第一个人说他今年10岁,       编写程序算出第5个人几岁   2. 改写之前的学生信息管理项目源码,要求带有操作界面:     +------------------------------+     | 1) 添加学生信息                |     | 2) 显示所有学生的信息           |     | 3) 删除学生信息                |     | 4) 修改学生成绩                |     | 5) 按学生成绩高-低显示学生信息   |     | 6) 按学生成绩低-高显示学生信息   |     | 7) 按学生年龄高-低显示学生信息   |     | 8) 按学生年龄低-高显示学生信息   |     | q) 退出                       |     +------------------------------+     请选择:     要求,每个功能至少写一个函数与之相对应
转载请注明原文地址: https://www.6miu.com/read-2624201.html

最新回复(0)