美文网首页
python 函数表达式

python 函数表达式

作者: lvyz0207 | 来源:发表于2019-11-03 18:57 被阅读0次

    python 函数

    多态

    Python 不用考虑输入的数据类型,而是将其交给具体的代码去判断执行,
    同样的一个函数(比如这边的相加函数 my_sum()),
    可以同时应用在整型、列表、字符串等等的操作中。

    函数嵌套的作用

    1、保证内部函数的隐私
    2、提高程序的运行效率
    常用情况(检查输入是否合法)

    # 数据库连接
    def connect_DB():
        def get_DB_configuration():
            ...
            return host, username, password
        conn = connector.connect(get_DB_configuration())
        return conn
    
    # 参数校验
    def factorial(input):
        # validation check
        if not isinstance(input, int):
            raise Exception('input must be an integer.')
        if input < 0:
            raise Exception('input must be greater or equal to 0' )
    
        def inner_factorial(input):
            if input <= 1:
                return 1
            return input * inner_factorial(input-1)
        return inner_factorial(input)
    print(factorial(5))
    

    函数变量作用域

    nonlocal --->修改全局变量参数
    global---->声明 函数内部的变量,就是之前定义的全局变量

    闭包

    闭包和嵌套函数类似,
    不同的是,这里外部函数返回的是一个函数,而不是一个具体的值。
    返回的函数通常赋于一个变量,这个变量可以在后面被继续执行调用。
    使用闭包的一个原因,是让程序变得更简洁易读

    闭包常常和装饰器(decorator)一起使用。

    def nth_power(exponent):
        def exponent_of(base):
            return base ** exponent
        return exponent_of # 返回值是exponent_of函数
    
    square = nth_power(2) # 计算一个数的平方
    cube = nth_power(3) # 计算一个数的立方 
    
    print(square(2))  # 计算2的平方
    print(cube(2)) # 计算2的立方
    # 输出
    4 # 2^2
    8 # 2^3
    

    匿名函数

    lambda 表达式
    lambda argument1, argument2,... argumentN : expression
    

    第一,lambda 是一个表达式(expression),并不是一个语句(statement)。
    第二,lambda 的主体是只有一行的简单表达式,并不能扩展成一个多行的代码块
    减少代码的重复性;
    模块化代码。

    python 函数式编程

    map()、filter() 和 reduce()通常结合匿名函数 lambda 一起使用。

    map(function, iterable) 函数,对 iterable 中的每个元素,都运用 function 这个函数,最后返回一个新的可遍历的集合。

    l = [1, 2, 3, 4, 5]
    new_list = map(lambda x: x * 2, l) # [2, 4, 6, 8, 10]
    

    filter(function, iterable) 函数,
    它和 map 函数类似,function 同样表示一个函数对象。
    filter() 函数表示对 iterable 中的每个元素,都使用 function 判断,
    并返回 True 或者 False,最后将返回 True 的元素组成一个新的可遍历的集合

    l = [1, 2, 3, 4, 5]
    new_list = filter(lambda x: x % 2 == 0, l) # [2, 4]
    

    reduce(function, iterable) 函数,它通常用来对一个集合做一些累积操作。

    from functools import reduce
    l = [1, 2, 3, 4, 5]
    product = reduce(lambda x, y: x * y, l) # 1*2*3*4*5 = 120
    

    例题:

    根据值进行由高到底的排序
    d = {'mike': 10, 'lucy': 2, 'ben': 30}
    anwser:
    sorted(d.items(), key=lambda x: x[1], reverse=True)
    

    相关文章

      网友评论

          本文标题:python 函数表达式

          本文链接:https://www.haomeiwen.com/subject/judlbctx.html