生成式
生成式就是生成器的简写
1)语法一
(表达式 for 变量 in 序列)
说明:表达式 - 任何有结果的语句,具体的数据,赋值后的变量,非赋值的运算表达式等...
展开生成式:
def 函数名():
for 变量 in 序列:
yield 表达式
1.用生成式创建生成器
2.列表生成式
list1 = list(x for x in range(5))
list2 = [x for x in range(5)]
3.字典生成式
dict1 = dict((x, x*2) for x in range(10))
2)语法二:
生成器 = (表达式 for 变量 in 序列 if 条件语句)
展开:
def 函数名():
for 变量 in 序列:
if 条件语句:
yield
生成器 = 函数名()
补充:python中的三目运算符
C、java、js等中的三目运算符:* 变量 = 条件语句?表达式1:表达式2*
Python中的三目运算符: 变量 = 表达式1 if 条件语句 else 表达式2
三目运算符的功能:判断条件语句是否为True,如果是,结果是表达式1,否则结果是表达式2
高阶函数
python中声明函数就是声明类型是function的变量,函数名就是变量名
普通变量能做的事情,函数都可以做:
1)用一个变量给另一个变量赋值
2)修改变量的值
3)变量作为序列的元素
4)作为函数的参数
5)变量作为函数的返回值
1.实参高阶函数
参数是函数的函数就是实参高阶函数
python中内置的sorted、max、min等函数,以及列表的sort方法都是实参高阶函数
这些函数中都有一个参数key,要求传参的时候传一个函数,这个函数需要一个参数和一个返回值,参数代表序列中的元素,返回值是比较对象
2.返回值高阶函数
函数的返回值是一个函数,这样的函数就是返回值高阶函数
情况1:真正的返回值高阶函数
def func1():
def func2():
print('函数2')
return func2
情况2:假的返回值高阶函数
def func3():
print('函数3')
def func4():
return func3
闭包
什么是闭包
闭包就是一个函数,这个函数需要满足以下两个条件:
1)函数的返回值是声明在这个函数中的函数(内函数)
2)这个内函数必须使用外函数中的临时变量(外函数中的局部变量)
闭包的作用:保存临时变量的值(函数调用结束后,函数中的数据不销毁)
装饰器
装饰器是python的三大神器之一
什么是装饰器
装饰器本质还是一个函数
装饰器的作用:在不修改函数本身的前提下给函数添加功能
语法:
def 函数名1(参数1)
def 函数名2(*args, *kwargs):
‘实现为原函数添加功能的代码’
(保证出现:参数1(args, **kwargs))
return 函数2
糖语法
@函数名1
声明需要添加功能的函数
回调函数
什么是回调函数:函数的调用是再其他函数的内部满足条件的时候自动调用的函数
def login(in_call_back, exit_call_back): '这儿的in_call_back、exit_call_back就是回调函数'
in_call_back()
exit_call_back()
login(fun1, fun2) 'fun1、func2是之前声明的回调时需执行的函数'