week3day1-190805 Generative_Formula and High_Function

generative_formula

1.生成式就是生成器的简写方式,类似于匿名函数与函数的关系
语法:expression for variable in sequence
用法:
a. list(x for x in range())
b. x for x in range() if x & 1
2.三目运算符:
result1 if condition_statement else result2
# ###练习题:##用生成式写一个生成器:产生1-10中所有数能否被3整除的结果
result = [True if not num % 3 else False for num in range(1, 11)]
print(result)

high_function

1.函数与变量

1).python中所有的数据存储都是存在堆区间,将变量名存在栈区间,栈区间的变量存有一个地址,指向堆区间的对应数据;函数也等同于一个类型为function的变量,函数名为变量名,函数体为数据
2).函数名不加括号就是函数,加括号就是调用该函数得到的返回值
3).变量能做的事,函数都能做;

a.可赋值
b.可修改变量元素
c.可给变量赋值
d.可作为其他函数的参数(实参高阶函数)
e.可作为函数的返回值(返回值高阶函数)

2.高阶函数:

1)实参高阶函数:一个函数的参数就是一个函数,那么这个函数就是一个实参高阶函数,sorted, max, min 和列表中的sort函数都是实参高阶函数,key参数是其他函数
2)返回值高阶函数:一个函数作为其他函数的返回值,那么这个函数就是返回值高阶函数
语法:

def function_name1(): #高阶函数
  def function_name2():
     return_body
  return function_name2

例:声明一个函数operation,要求可以接受一个字符参数,根据字符值的不同,返回不同功能的函数

def operation(char: str):
    def num_sum(*num):
        return sum(num)
    def num_dec(*num):
        result = num[0]
        for i in num[1:]:
            result -= i
        return result
    def num_add(*num):
        result = 1
        for i in num:
            result *= i
        return result
    if char == '+':
        return num_sum
    elif char == '-':
        return num_dec
    elif char == '*':
        return num_add
    else:
        print('please input a number which in (1~3)')
print(operation('+')(1, 2, 4, 5))
print(operation('-')(1, 2, 4, 5))
print(operation('*')(1, 2, 4, 5))
3.闭包:(属于实参高阶函数)

1)闭包就是一个需要满足一下两个条件的函数:
a.函数的返回值就是声明在这个函数中的函数
b.这个函数必需使用外函数中的临时变量(局部变量)
2)作用:保存临时变量的值(在函数运行结束后不销毁变量的值)

4.装饰器 = 实参高阶函数 + 返回值高阶函数 + 糖语法

装饰器是python三大神器之一
1)什么是装饰器:本质还是一个高阶函数
2)作用:在不改变函数原结构的前提下,增加函数功能
3)语法:

def func1(fn):
  def test(*args, **kwargs):
    return fn(*args, **kwargs)
  return test

@func1
def func2():
  function_body
5.回调函数:属于实参高阶函数

函数的调用是在其他函数的内部满足条件的时候自动调用的函数

你可能感兴趣的:(week3day1-190805 Generative_Formula and High_Function)