千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:长沙千锋IT培训  >  技术干货  >  python函数的高级使用方法

python函数的高级使用方法

来源:千锋教育
发布人:xqq
时间: 2023-11-12 23:19:09

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

使用函数变量

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

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

#定义一个计算乘方的函数

defpow(base,exponent):

result=1

foriinrange(1,exponent+1):

result*=base

returnresult

#将pow函数赋值给my_fun,则my_fun可当成pow使用

my_fun=pow

print(my_fun(3,4))#输出81

#定义一个计算面积的函数

defarea(width,height):

returnwidth*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是一个函数

defmap(data,fn):

result=[]

#遍历data列表中每个元素,并用fn函数对每个元素进行计算

#然后将计算结果作为新数组的元素

foreindata:

result.append(fn(e))

returnresult

#定义一个计算平方的函数

defsquare(n):

returnn*n

#定义一个计算立方的函数

defcube(n):

returnn*n*n

#定义一个计算阶乘的函数

deffactorial(n):

result=1

forindexinrange(2,n+1):

result*=index

returnresult

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()函数中的部分计算代码。

Pthon3本身也提供了一个map()函数,Python3内置的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]

从上面介绍不难看出,通过使用函数作为参数可以在调用函数时动态传入函数,实际上就可以动态改变被调用函数的部分代码。

在程序最后添加如下一行:

#获取map的类型

print(type(map))

运行上面代码,将会看到如下输出结果:

《class'function'>

使用函数作为返回值

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

defget_math_func(type):

#定义一个计算平方的局部函数

defsquare(n):#①

returnn*n

#定义一个计算立方的局部函数

defcube(n):#②

returnn*n*n

#定义一个计算阶乘的局部函数

deffactorial(n):#③

result=1

forindexinrange(2,n+1):

result*=index

returnresult

#返回局部函数

iftype=="square":

returnsquare

iftype=="cube":

returncube

else:

returnfactorial

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

在定义了会返回函数的get_math_func()函数之后,接下来程序调用get_math_func()函数时即可返回所需的函数,如上面程序中代码所示。

 以上内容为大家介绍了python培训之函数的高级使用方法,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

python实现WSGI的框架

2023-11-13

python打开文本文件有哪些方法?

2023-11-13

python使用loguru操作日志

2023-11-13

最新文章NEW

python-=是什么意思

2023-11-13

pythonre是什么?

2023-11-13

python列表追加元素出错的解决

2023-11-13

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>