国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > Python函数的高级用法

Python函数的高级用法

头像

silencement

2019-06-29 14:24:443290浏览 · 0收藏 · 0评论

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() 函数会根据所传入的参数,使用这三个局部函数之一作为返回值。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

合欢椅BY春风凤弯椅小说| 电影《偷吃》在线观看| 蜜桃2| 98在线高清免费观看电视剧狂| 为什么妓女磨两下就很多水| 玛卡泡水喝能提高性功能吗| 雨后小故事漫画| 三男一女CP免费观看电视剧大全| 成都私人情侣免费看电视剧的软件 | 错位百度百科| 乳色吐息| 男生困困进女生困困洞视频| 秘书奶头好大下面好紧| 医生一直揉白带湿漉漉的正常吗 | 轮流和两个男人一起很容易染病吗| 二人努力生猴子免费观看 | 韩国《少妇的激情》| [汉化版]全彩漫画免费阅读 | WWW.1688.GOVCN| 血战钢锯岭| 做到你合不拢腿为止| 单亲妈妈韩剧在线观看全集| 不想和你有遗憾电影在线观看| 公司企业文化展示墙| 母与子免费观看大全电视剧| 坤坤寒进桃子里在线看歌词| 《办公室高潮秘书2》| 己满十八岁免费观看电视剧的软件 | 开裆裤法国1980年| 开会桌下把荫蒂添的好多水| 小雨和公做爰22章| 上位(H)笔趣阁| 看到老妈洗澡忍不住怎么办| 成品网站免费直播有哪些平台推荐| 苍井空《办公室爱欲》| 日剧韩剧在线观看免费全集| 免费观看已满十八岁电视剧动漫| 他的手一路下滑| 国产大片| 少妇与子亂伦HD| 录像狗配女人