day11:总结

1.生成器

1.生成式

"""
生成式就是生成器的简写
1)语法一
(表达式 for 变量 in 序列)

说明:表达式 - 任何有结果的语句,具体的数据,赋值后的变量,非赋值的运算表达式等。。。。
展开成生成器:

  1. 语法二:
    生成器 = (表达式 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())

7.回调函数

1.什么是回调函数:函数的调用是在其他函数的内部满足条件的时候自动调用的函数

你可能感兴趣的:(day11:总结)