Python函数

Posted zhangcd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python函数相关的知识,希望对你有一定的参考价值。

  • 定义函数
  • 函数的参数
  • 递归函数

 


  函数名其实就是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给这个函数起了一个“别名”。

>>> a = abs    # 变量a指向abs函数
>>> a(-1)    # 所以也可以通过a调用abs函数
1

 

 

定义函数

  在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

  函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。

  如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。

 

空函数

  如果想定义一个什么事也不做的空函数,可以用pass语句:

def nop():
    pass

  pass还可以用在其他语句里,比如:

if age >= 18:
    pass
# 缺少了pass,代码运行就会有语法错误

 

 

返回多个值

  Python返回的任然是单一值,返回值是一个tuple。但是在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

 

函数的参数

  Python函数除了正常的必选参数外,还可以使用默认参数、可变参数和关键字参数。

# 当调用power(5)时,相当于调用power(5, 2)
# 而对于n > 2的其他情况,就必须明确地传入n,比如power(5, 3)
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

  默认参数使用不当的情况:当正常调用时,结果是对的;当使用默认参数调用时,一开始结果是对的,但是当再次调用add_end()时,结果就不对了。

  默认参数是[],但是函数似乎每次都“记住了”上次添加了‘END‘后的list。

  原因如下:Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

  注意:默认参数必须指向不变对象。

>>> def add_end(L=[]):
...     L.append(END)
...     return L
...
>>> add_end([1, 2, 3])
[1, 2, 3, END]
>>> add_end([x, y, z])
[x, y, z, END]
>>> add_end()
[END]
>>> add_end()
[END, END]
>>> add_end()
[END, END, END]

 

 

  可变参数就是传入的参数个数是可变的。

  定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,在调用该函数时,可以传入任意个参数,包括0个参数。

  如果已经有一个list或者tuple,要调用一个可变参数时,可以在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去。

>>> def calc(*numbers):
...     sum = 0
...     for n in numbers:
...         sum = sum + n * n
...     return sum
...
>>> calc(1, 2)
5
>>> calc()
0

 >>> nums = [1, 2, 3]
 >>> calc(*nums)
 14

 

 

 

  关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

>>> def person(name, age, **kw):
...     print(name:, name, age:, age, other:, kw)
...
>>> person(Mike, 30)
name: Mike age: 30 other: {}
>>> person(Bob, 29, city=Beijing)
name: Bob age: 29 other: {city: Beijing}
>>> person(Adam, 23, gender=M, job=Engineer)
name: Adam age: 23 other: {gender: M, job: Engineer}

 





以上是关于Python函数的主要内容,如果未能解决你的问题,请参考以下文章

python使用上下文对代码片段进行计时,非装饰器

python 元组有用的函数,方法和片段。

Python代码阅读(第26篇):将列表映射成字典

VSCode自定义代码片段——声明函数

Python学习 :函数

VSCode自定义代码片段8——声明函数