Python高级用法,python中各种函数的用法

  Python高级用法,python中各种函数的用法

  Python的函数是“一等公民”,所以函数本身也是对象。该函数可以用作赋值、其他函数的参数以及其他函数的返回值。

  使用函数变量

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

  当一个函数被赋给一个变量,那么程序也可以通过这个变量调用这个函数。例如,下面的代码:

  #定义一个函数来计算功率

  defpow(基数,指数):

  结果=1

  foriinrange(1,指数1):

  结果*=基数

  返回结果

  #给my_fun赋幂函数,my_fun可以当幂用。

  我的乐趣=pow

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

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

  默认区域(宽度、高度):

  returnwidth*height

  #将面积函数赋给my_fun,my_fun可以作为面积使用。

  我的乐趣=区域

  Print(my_fun(3,4))# Output 12从上面的代码可以看出,程序将power()和area()函数依次赋给my_fun变量,然后通过my_fun变量分别调用power()和area()函数。

  其实python内置了计算幂的方法,所以这里的power()函数并没有太大的实际意义,只是作为演示使用。

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

  此外,程序还可以使用一个函数作为另一个函数的参数和/或返回值。

  使用函数作为函数形参

  有时有必要定义一个函数。函数的大部分计算逻辑可以确定,但有些处理逻辑暂时不能确定。这意味着一些程序代码需要动态改变。如果要在调用函数时动态传入这些代码,就需要在函数中定义函数参数,这样在调用函数时就可以传入不同的函数作为参数,从而动态改变这段代码。

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

  #定义函数类型的参数,其中fn是函数

  defmap(数据,fn):

  结果=[]

  #遍历数据表中的每个元素,用fn函数计算每个元素。

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

  foreindata:

  结果.追加(fn(e))

  返回结果

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

  defsquare(n):

  returnn*n

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

  定义立方(n):

  返回n*n*n

  #定义计算阶乘的函数

  deffactorial(n):

  结果=1

  空军中尉

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

  接下来的三行粗体字代码调用了 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 还支持使用函数作为其他函数的返回值。例如如下程序:

  

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: