装饰器 decorators(专业提高篇)
什么是装饰器
装饰器是一个函数,主要作用是用来包装另一个函数或类(后面才讲)
包装的目的是在不改变原函数名(或类名)的情况下改变或添加被包装对象的行为
函数装饰器
是指装饰器是一个函数,传入的是一个函数,返回的也是一个函数
语法:
def 装饰器函数名(参数):
语句块
return 函数对象
@装饰器函数名<换行>
def 函数名(形参列表):
语句块
函数的文档字符串
函数内第一次未赋值给任何变量的字符串是此函数的文档字符串
语法:
def 函数名(参数列表):
“函数的文档字符串”
语句块
示例:
def hello(name):
”“”这是一个向别人问好的函数
name 绑定人的姓名
“”“
pass
说明:
文档字符串通常用来说明本函数的功能和使用方法
函数的文档字符串绑定在函数对象的__doc__属性上
函数的__doc__属性
__doc__属性用于绑定函数的文档字符串
函数定义语句的完整语法:
[@装饰器名1]
[@装饰器名2]
...
def 函数名([位置形参],[*元组形参],[命名关键字形参],[**字典形参]):
"文档字符串"
语句块
模块 Module
什么是模块
模块是一个包含有一系列数的数据,函数,类等组成的程序
模块是一个文件,模块文件通常以.py结尾
作用:
1、让一些相关的数据,函数,类等有逻辑的组织在一起,让逻辑结束更加清晰
2、模块中的数据,函数和类等可提供给其他模块或程序
模块的分类:
1、内置模块,在解析器的内部可以直接使用
2、标准库模块,安装python时已安装,且可直接使用
3、第三方模块(通常为开源),需要自己安装
4、用户自己编写的模块(可以作为其他人的第三方模块)
模块的导入 import语句
import 语句
语法:
import 模块名1[as 模块新名1],模块名2[as 新名2]
作用:
将某模块整体导入到当前模块
示例:
import math
import sys, os
用法:
模块名.属性名
math.factorial(5)
dir(obj) 函数,返回模块的所有属性的字符串列表
help(obj) 函数,可以查看模块相关的文档字符串
from import 语句
语法:
from 模块名 import 模块属性名1 [as 属性新名1] 模块属性名2[as 属性新名2],...
作用:
将某模块内的一个或多个属性导入到当前模块的作用域
示例:
from math import sin,cos,tan
from math import pi
from math import factorial as fac
print(sin(pi/2)*fac(5))
from import * 语句
语法:
from 模块名 import*
作用:
将某模块的所有属性导入到当前模块
示例:
from math import *
print(factorial(5))
print(sin(pi/2))
dir([对象]) 返回一个字符串列表
dir函数的作用:"
如果没有参数调用,则返回当前作用域内所有变量的列表
如果给定一个对象作用参数,则返回这个对象所有变量的列表
对于一个模块,返回这个模块的全部变量(属性)
对于一个类对象,则返回类对象的所有变量,并递归基类对象的所有变量
对于其他对象,返回所有变量,类变量和基类变量