当前位置:首页>python>第三十三课:Python自定义函数的其他用法

第三十三课:Python自定义函数的其他用法

  • 2026-08-24 14:35:50
第三十三课:Python自定义函数的其他用法
局部函数
在函数体内定义函数,这种被放在函数体内定义的函数称为局部函数。
  1. 局部函数对外部是隐藏的

  2. 只能在其封闭函数内有效

  3. 封闭函数也可以返回局部函数

# 定义函数,该函数会包含局部函数def get_math_func(type, nn) :    # 定义一个计算平方的局部函数    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(nn)    elif type == "cube":        return cube(nn)    else:        return factorial(nn)print(get_math_func("square", 3)) # 输出9print(get_math_func("cube", 3)) # 输出27print(get_math_func("", 3)) # 输出6

使用函数变量

把函数本身赋值给变量,就像给变量赋值一样。就可以通过该变量来调用函数。对变量赋值不同的函数,让变量在不同的时间指向不通过的函数。
# 定义一个计算乘方的函数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 = powprint(my_fun(3 , 4)) # 输出81# 定义一个计算面积的函数def area(width, height) :	return width * height# 将area函数赋值给my_fun,则my_fun可当成area使用my_fun = areaprint(my_fun(3, 4)) # 输出12

使用函数作为函数形参

# 定义函数类型的形参,其中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 resultdata = [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的类型print(type(map))

使用函数作为返回值

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)) # 输出125math_func = get_math_func("square") # 得到square函数print(math_func(5)) # 输出25math_func = get_math_func("other") # 得到factorial函数print(math_func(5)) # 输出120
本节从代码去看更为直观,下一课我们分享一下lambda表达式。关注我,点赞转发!

最新文章

随机文章