美文网首页
Python语法-函数进阶篇

Python语法-函数进阶篇

作者: 蒋征 | 来源:发表于2020-10-18 19:20 被阅读0次

    主要是对函数的一些补充内容,包括递归函数,常见内置函数和常见的高阶函数的使用

    递归函数

    和所有语言一样,递归函数说穿了就是自己调用自己,如果大家想要一个官方术语:递归就是子程序(函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。

    image.png

    递归函数例子:

    # 递归函数
    def factorial(n) :
        # 结算数字的阶乘
        if n==1 :
            return 1
        else :
            return n * factorial(n-1)
    
    print('数字的阶乘结果为:%d'%factorial(5))
    

    计算的结果为:

    数字的阶乘结果为:120
    

    匿名函数

    定义函数的过程中,没有给定名称的函数就叫匿名函数; Python中使用lambda表达式来创建匿名函数

    匿名函数有一些基本规则:

    • lambda只是一个表达式,函数体比def简单很多。
    • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
    • lambda定义的函数返回值就是表达式的返回值,不需要return语句
    • lambda的主要应用场景就是赋值给变量,作为参数传入其他函数
    # 匿名函数
    """
        匿名函数格式:lambda [参数] : expression
        默认会返回一个表达式
    """
    

    匿名函数案例:

    # 无参匿名函数
    e = lambda : 'Hello World'
    print(e())
    
    # 有参匿名函数
    e = lambda x,y : x+y
    print(e(3,2))
    
    # 矢量化三元运算符
    e = lambda x,y : x if x > 2 else y
    print(e(3,2))
    

    运行结果:

    Hello World
    5
    3
    

    内置函数

    print(dir(__builtins__)) # 我们可以通过这行命令打印所有的内置函数
    
    image.png

    上图中展示的为经常使用的几个函数,以及相应的参数和方法

    以sorted函数使用举例:

    # -*- coding:utf-8 -*-
    dict = {'a':'1','c':'2','b':'3'};
    ## 只返回key
    dict2 = sorted(dict);
    ## 整个item返回
    dict3 = sorted(dict.items());
    ## 逆序排列
    dict4 = sorted(dict.items(),reverse=True);
    ## 指定排序key
    dict5 = sorted(dict.items(),key=lambda x:x[1],reverse=True);
    
    print(dict)
    print(dict2)
    ## 列表推导式
    print({k:v for k,v in dict3})
    print({k:v for k,v in dict4})
    print({k:v for k,v in dict5})
    

    运行结果,大家可以自己映射

    {'a': '1', 'c': '2', 'b': '3'}
    ['a', 'b', 'c']
    {'a': '1', 'b': '3', 'c': '2'}
    {'c': '2', 'b': '3', 'a': '1'}
    {'b': '3', 'c': '2', 'a': '1'}
    

    我们可以通过help函数来帮助我们学习使用函数:

    help(sorted)
    

    运行结果:

    Help on built-in function sorted in module builtins:
    
    sorted(iterable, /, *, key=None, reverse=False)
        Return a new list containing all items from the iterable in ascending order.
        
        A custom key function can be supplied to customize the sort order, and the
        reverse flag can be set to request the result in descending order.
    

    image.png

    上图中展示的就是常见的内置函数,标红的为经常使用的函数。


    高阶函数

    以下为常见的三个进阶函数,我们了解以下

    • map
    • filter
    • reduce
    image.png

    map

    ## base data
    list01 = (1,3,5,7,9)
    list02 = (2,4,6,8,10)
    
    ## map
    maplist = map(lambda x:x*2,list01)
    print(maplist)  ## map函数返回的是map对象
    print(list(maplist)) ## 将map对象转化为list对象
    
    maplist = map(lambda x,y:x+y,list01,list02)
    print(list(maplist)) ## 多个集合操作
    

    运行结果

    <map object at 0x0000024DAE790A60>
    [2, 6, 10, 14, 18]
    [3, 7, 11, 15, 19]
    

    filter

    ## base data
    list01 = (1,3,5,7,9)
    list02 = (2,4,6,8,10)
    
    ## filter
    filterlist = filter(lambda x:x>4, list02)
    
    print(filterlist)  ## filter函数返回的是filter对象
    print(list(filterlist)) ## 将filter对象转化为list对象
    

    运行结果为:

    <filter object at 0x000001638C7B4A60>
    [6, 8, 10]
    

    reduce

    ## base data
    list01 = (1,3,5,7,9)
    list02 = (2,4,6,8,10)
    
    ## filter
    from functools import reduce
    reducelist = reduce(lambda x,y:x+y,list02)
    
    print(reducelist)  ## reduce函数返回合并以后的结果
    

    运行结果为:

    30
    

    相关文章

      网友评论

          本文标题:Python语法-函数进阶篇

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