最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python函数的高级用法

    正文概述    2020-07-05   212

    Python函数的高级用法

    Python 的函数是“一等公民”,因此函数本身也是一个对象,函数既可用于赋值,也可用作其他函数的参数,还可作为其他函数的返回值。

    使用函数变量

    Python 的函数也是一种值:所有函数都是 function 对象,这意味着可以把函数本身赋值给变量,就像把整数、浮点数、列表、元组赋值给变量一样。

    当把函数赋值给变量之后,接下来程序也可通过该变量来调用函数。例如如下代码:

    # 定义一个计算乘方的函数
    def pow(base, exponent) :
        result = 1
        for i in range(1, exponent + 1) :
            result *= base
        return result
    # 将pow函数赋值给my_fun,则my_fun可当成pow使用
    my_fun = pow
    print(my_fun(3 , 4)) # 输出81
    # 定义一个计算面积的函数
    def area(width, height) :
        return width * height
    # 将area函数赋值给my_fun,则my_fun可当成area使用
    my_fun = area
    print(my_fun(3, 4)) # 输出12

    从上面代码可以看出,程序依次将 pow()、area() 函数赋值给 my_fun 变量,接下来即可通过 my_fun 变量分别调用 pow()、area() 函数。

    其实 python 已经内置了计算乘方的方法,因此此处的 pow() 函数并没有太大的实际意义,只是作为示范使用。

    通过对 my_fun 变量赋值不同的函数,可以让 my_fun 在不同的时间指向不同的函数,从而让程序更加灵活。由此可见,使用函数变量的好处是让程序更加灵活。

    除此之外,程序还可使用函数作为另一个函数的形参和(或)返回值。

    使用函数作为函数形参

    有时候需要定义一个函数,该函数的大部分计算逻辑都能确定,但某些处理逻辑暂时无法确定,这意昧着某些程序代码需要动态改变,如果希望调用函数时能动态传入这些代码,那么就需要在函数中定义函数形参,这样即可在调用该函数时传入不同的函数作为参数,从而动态改变这段代码。

    Python 支持像使用其他参数一样使用函数参数,例如如下程序:

    # 定义函数类型的形参,其中fn是一个函数
    def map(data, fn) :   
        result = []
        # 遍历data列表中每个元素,并用fn函数对每个元素进行计算
        # 然后将计算结果作为新数组的元素
        for e in data :
            result.append(fn(e))
        return result
    # 定义一个计算平方的函数
    def square(n) :
        return n * n
    # 定义一个计算立方的函数
    def cube(n) :
        return n * n * n
    # 定义一个计算阶乘的函数
    def factorial(n) :
        result = 1
        for index in range(2, n + 1) :
            result *= index
        return result
    data = [3 , 4 , 9 , 5, 8]
    print("原数据: ", data)
    # 下面程序代码3次调用map()函数,每次调用时传入不同的函数
    print("计算数组元素的平方")
    print(map(data , square))
    print("计算数组元素的立方")
    print(map(data , cube))
    print("计算数组元素的阶乘")
    print(map(data , factorial))

    上面程序中定义了一个 map() 函数,该函数的第二个参数是一个函数类型的参数,这意味着每次调用函数时可以动态传入一个函数,随着实际传入函数的改变,就可以动态改变 map() 函数中的部分计算代码。

    接下来的三行粗体字代码调用了 map() 函数三次,三次调用依次传入了 square、cube、factorial 函数作为参数,这样每次调用 map() 函数时实际的执行代码是有区别的。

    编译、运行上面程序,可以看到如下输出结果:

    原数据:  [3, 4, 9, 5, 8]
    计算数组元素的平方
    [9, 16, 81, 25, 64]
    计算数组元素的立方
    [27, 64, 729, 125, 512]
    计算数组元素的阶乘
    [6, 24, 362880, 120, 40320]

    使用函数作为返回值

    前面己经提到,Python 还支持使用函数作为其他函数的返回值。例如如下程序:

    def get_math_func(type) :
        # 定义一个计算平方的局部函数
        def square(n) :  # ①
            return n * n
        # 定义一个计算立方的局部函数
        def cube(n) :  # ②
            return n * n * n
        # 定义一个计算阶乘的局部函数
        def factorial(n) :   # ③
            result = 1
            for index in range(2 , n + 1):
                result *= index
            return result
        # 返回局部函数
        if type == "square" :
            return square
        if type == "cube" :
            return cube
        else:
            return factorial
    # 调用get_math_func(),程序返回一个嵌套函数
    math_func = get_math_func("cube") # 得到cube函数
    print(math_func(5)) # 输出125
    math_func = get_math_func("square") # 得到square函数
    print(math_func(5)) # 输出25
    math_func = get_math_func("other") # 得到factorial函数
    print(math_func(5)) # 输出120

    程序中,定义了一个 get_math_func() 函数,该函数将返回另一个函数。接下来在 get_math_func() 函数体内的 ①、②、③ 号粗体字代码分别定义了三个局部函数,最后 get_math_func() 函数会根据所传入的参数,使用这三个局部函数之一作为返回值。


    起源地下载网 » Python函数的高级用法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元