一 python自动化基础能力:3.python基础上之数据类型,函数(12)


17.2 装饰器的使用
def start_end():#用来对其他函数进行扩展,使其他函数可以在执行前打印开始和结束#创建一个函数def new_func():pass#返回函数return new_funcf = start_end()f2 = start_end()print(f)print(f2)
打印
.new_func at 0x0000018368DE2EE8>.new_func at 0x0000018368DFB1F8>
扩展后:
def fn():print('In fn()')def start_end():# 用来对其他函数进行扩展,使其他函数可以在执行前打印开始和结束# 创建一个函数def new_func():print('Start...')fn()print('End...')#返回函数return new_funcf = start_end()f()
打印
Start...In fn()End...
但是是固定的、不能改变,失去了意义,所以可以在函数参数中传入被扩展的函数 。
def fn():print('In fn()')def start_end(func):#用来对其他函数进行扩展,使其他函数可以在执行前打印开始和结束#创建一个函数def new_func():print('Start...')func()print('End...')#返回函数return new_funcf = start_end(fn)f()
打印
Start...In fn()End...
当被扩展的函数有参数时,
def add(a,b):#求任意两个数的和r = a + breturn rdef start_end(func):#用来对其他函数进行扩展,使其他函数可以在执行前打印开始和结束#创建一个函数def new_func(a,b):print('Start...')result = func(a,b)print('End...')return result#返回函数return new_funcf = start_end(add)r = f(1,2)print(r)
打印
Start...End...3
需要对任何函数进行扩展时,
def add(a,b):#求任意两个数的和r = a + breturn rdef fn():print('In fn()')def start_end(func):#用来对其他函数进行扩展,使其他函数可以在执行前打印开始和结束#创建一个函数def new_func(*args,**kwargs): #*args接收所有位置参数,**kwargs接收所有关键字参数print('Start...')result = func(*args,**kwargs)print('End...')return result#返回函数return new_funcf = start_end(add)f2 = start_end(fn)r = f(1,2)print(r)f2()
打印
Start...End...3Start...In fn()End...
总结:像上面的(func)这类的函数即称之为装饰器 。
通过装饰器可以在不修改原来函数的基础之上来对函数进行扩展,在开发过程中,都是通过对装饰器来扩展函数的功能 。
三.面向对象 1.面向对象简介 1.1 面向对象基本概念
面向对象OOP,即。
什么是对象:
对象就是内存中存储指定数据的一块区域 。
实际上对象就是一个容器,专门用来存数据 。
程序运行的通俗解释:
代码存在硬盘,CPU处理代码,CPU和硬盘之间有内存,解释器将代码交给内存,CPU再从内存读取 。
1.2 面向对象的结构 id(标识)
用来标识对象的唯一性,每个对象都有唯一的id,每个id指向一个内存地址值 。
id由解释器生成,其实就是对象的内存地址 。
type(类型)
类型决定了对象有哪些功能 。
可以通过type()函数来查看对象的类型 。
value(值)
值就是对象中存储的具体数据,分为:
1.3从面向过程到面向对象
所谓面向对象,简单理解就是语言中所有的操作都是通过对象来进行的 。