Python之匿名函数、普通函数、闭包、对象
1.匿名函数
# 匿名函数定义:lambda 形参1,形参2,...:代码(结果由return返回)
# 匿名函数调用(末尾加小括号):lambda 形参1,形参2,...:代码(结果由return返回)(形参1,形参2...)
a = (lambda x, y: x + y)(1, 2)
print(a)
2.普通函数
# 普通函数定义:def 函数名(形参):
def sum(x,y):
return x+y
# 普通函数调用:函数名(形参)
3.闭包
def set_func(start):
def call_func():
print('函数开始执行前执行的代码')
nonlocal start # 闭包中,修改外层函数传递的全局变量参数的申明
start += 2
return start
return call_func # 外层函数返回内层函数的引用
func = set_func(2) # 此时func执行内层函数call_func函数
func() # 调用func等同于调用call_func函数
4.对象
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def showage(self):
print("%s is %s years old" % (self.name, self.age))
p1 = Person("张三",29) # 创建对象,传入参数
5.思考:函数、匿名函数、闭包、对象 当做实参时 有什么区别?
##1.匿名函数能够完成基本的简单功能,传递是这个函数的引用 只有功能
##2.普通函数能够完成较为复杂的功能,传递是这个函数的引用 只有功能
##3.闭包能够将较为复杂的功能,传递是这个闭包中的函数以及数据,因此传递的是功能+数据。基于闭包实现的装饰器,是python三大器(迭代器、生成器、装饰器)之一,装饰器可以对函数和方法进行装饰,在不改变原函数(方法)代码和调用方式的情况下,在原函数(方法)整体前面或后面增加新的功能,比如权限验证等。
##4.对象能够完成最为复杂的功能,传递是很多数据+很多功能,因此传递的是很多功能(方法)+数据
版权声明:本文为qq_38923792原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。