1.生成器
1.生成式
"""
生成式就是生成器的简写
1)语法一
(表达式 for 变量 in 序列)
说明:表达式 - 任何有结果的语句,具体的数据,赋值后的变量,非赋值的运算表达式等。。。。
展开成生成器:
- 语法二:
生成器 = (表达式 for 变量 in 序列 if 条件语句 )
"""
2.补充:python中的三目运算符
"""
c,java,js等中的三目运算符:条件语句?表达式1:表达式2(如果条件为真表达式1否则表达式2)
python中的三目运算符: 变量 = 表达式1 if 条件语句 else 表达式 2(判断条件语句是否为真,如果是真结果是表达式1,否则表达式2)
"""
# 列表生成式
list1 = list(x for x in range(5))
list2 = [x for x in range(5)]
#字典生成式
dict = dict((x,x*2) for x in range(5))
list3 = [x for j in range(10) for x in range(j)]
print(list3)
list4 = [ True if x % 3 == 0 else False for x in range(1,10)]
list5 = [x for x in range(10) if x % 3==0 ]
print(list4)
print(list5)
2.高阶函数前序
python中声明函数就是声明类型是function的变量,函数名就是变量名
"""
普通变量能做的事,函数都能做
1)用一个变量给另一个变量赋值
2)修改变量的值
3)变量作为序列的元素
4)作为函数的参数
5)变量作为函数的返回值
实参高阶函数(一个函数的参数是一个函数)
返回值高阶函数(一个函数的返回值是一个函数)
"""
3.实参高阶函数
装饰器 = 实参高阶函数 + 返回值高阶函数 + 糖语法
1.实参高阶函数
"""
参数是函数的函数就是实参高阶函数
python中内置的sorted,max,min以及列表的sort方法都是实参高阶函数
这些函数中都有一个参数为key,要求传参的时候传一个函数。
这个函数需要一个参数和一个返回值,参数代表序列中的元素,返回值是比较对象
"""
4.返回值高阶函数
"""author = zhuzhenghong"""
1.返回值高阶函数
"""
函数的返回是一个函数,这样的函数就是返回值高阶函数
返回的是局部函数才是返回值高阶函数
"""
def operation():
def operation1(*args,char):
sum1 = args[0]
for item in args[1:]:
sum1 = eval(str(sum1) + char + str(item))
return sum1
return operation1
a = operation()
print(a(1,2,3,4,char='+'))
5.闭包
1.什么是闭包
"""
闭包就是一个函数,这个函数需要满足以下两个条件:
1)函数的返回值是声明在这个函数中的函数(内函数)
2)这个内函数必须使用外函数中的临时变量。(外函数中的局部变量)
闭包的作用:保存临时变量的值(函数调用结束后,函数中的数据不销毁)
"""
def func1():
def func2():
print('内函数')
return func2()
6.装饰器
装饰器是python的三大神器之一
"""
1.什么是装饰器:装饰器本质还是一个函数
装饰器的作用:在不修改函数本身的前提下给函数添加功能
方式一:给函数添加功能需要修改源代码
方式二:调用函数基础上添加功能
方式三:装饰器
语法 :
def 函数名1(参数1)
def 函数名2(args,*kwargs):
体现为原函数添加功能的代码
return 函数2
@函数名1
声明需要添加功能的函数
"""
import time
def time_x(fun1):
def inner(*args,**kwargs):
start = time.time()
fun1(*args,**kwargs)
end = time.time()
return start-end
return inner
@time_x
def fun1(x,y):
print(x+y)
print(fun1(5,6))
def password(fun1):
def inner(*args,**kwargs):
num = input('请输入密码:')
if num == '12345':
a = fun1(*args,**kwargs)
return a
else:
return '你无权访问'
return inner
@password
def print_name():
return 'abc'
print(print_name())