Python 函数用法详解

1. Python函数的定义与传参

Python中函数的定义使用def关键字,格式如下:

def function_name(param1, param2, ...):

# function body

return result

其中,function_name是函数名,可以由字母、数字和下划线组成,但不能以数字开头;param1, param2, ...是函数的参数,用于接收调用者传来的值;通过return语句返回函数计算的结果result。

关于参数的传递,Python中有以下几种方式:

1.1 位置参数传递

位置参数是指按照参数定义顺序传递参数。例如:

def add(x, y):

return x + y

result = add(3, 4)

print(result)

在调用函数add时,先传入的参数3会对应到函数定义中的参数x,后传入的参数4会对应到函数定义中的参数y,因此函数返回结果为7。

1.2 关键字参数传递

关键字参数是指在调用函数时,指定参数名来传递参数。例如:

def talk(name, words):

print(f"{name} said: {words}")

talk(name="Lucy", words="Hello, world!")

在调用函数talk时,通过指定参数名来传递参数,因此函数可以接收多个关键字参数。以上代码输出结果为:Lucy said: Hello, world!。

1.3 默认参数值传递

默认参数值是指在函数定义时,给参数指定默认值。例如:

def power(x, n=2):

return x ** n

print(power(3))

print(power(3, 3))

在上述代码中,函数power可以接收两个参数,其中第二个参数n有默认值2。若调用power时只传入一个参数,则默认使用n=2的值进行计算。以上代码输出结果为:9和27。

1.4 可变参数传递

可变参数是指函数定义时,允许接收任意个数的参数。在函数中将这些参数作为元组或列表处理。例如:

def add(*args):

result = 0

for arg in args:

result += arg

return result

print(add(1, 2, 3))

print(add(1, 2, 3, 4, 5))

以上代码中的函数add可以接受任意个数的参数,在函数中遍历这些参数并将其相加。调用add函数时,可以传入任意个数的参数。以上代码输出结果为:6和15。

1.5 关键字可变参数传递

关键字可变参数是指函数定义时,允许接收任意个关键字参数。在函数中将这些参数作为字典处理。例如:

def talk(**kwargs):

print(f"{kwargs['name']} said: {kwargs['words']}")

talk(name="Lucy", words="Hello, world!")

在上述代码中,函数talk可以接收任意个关键字参数,使用字典形式接收。调用talk函数时,传入关键字参数时,需要指定参数名和参数值,将这些参数打包成一个字典,并作为参数传递给函数talk。以上代码输出结果为:Lucy said: Hello, world!。

2. Python函数的调用

在Python中,函数的调用只需要使用函数名和参数,即可执行函数。

2.1 直接调用函数

直接调用函数的方式是最普遍的方式,即使用函数名和参数来直接调用函数。例如:

def add(x, y):

return x + y

a = 3

b = 4

c = add(a, b)

print(f"{a} + {b} = {c}")

调用函数add时,传入两个参数a和b,返回值赋值给变量c,最后输出结果为3+4=7。

2.2 函数作为参数传递

在Python中,函数也可以像普通变量一样作为参数传递。例如:

def add(x, y):

return x + y

def square(x):

return x ** 2

def operate(func, x, y):

return func(x, y)

a = 3

b = 4

c = operate(add, a, b)

d = operate(square, c, 2)

print(d)

在以上代码中,函数operate可以接受三个参数,其中第一个参数func是一个函数,用来做加减乘除等运算。在调用函数operate时,将函数add作为参数传递,并传入x和y两个参数,函数返回结果作为下一个函数的参数。在调用函数operate时,将函数square作为参数传递,并传入c和2两个参数,函数返回c的平方结果。以上代码输出结果为:49。

2.3 匿名函数的调用

在Python中,可以使用lambda表达式声明匿名函数,这些函数不需要使用def关键字定义,可以直接调用。例如:

a = lambda x, y: x + y

print(a(3, 4))

以上代码声明了一个匿名函数a,该函数实现了两个参数的加法运算。在调用函数a时,传入两个参数3和4,函数返回值为7。

3. Python函数的文档

在Python中,可以使用文档字符串(docstring)来为函数提供说明文档。

3.1 单行文档

可以在函数定义的第一行使用字符串来作为文档。

def add(x, y):

"""This is a function to calculate the sum of two numbers"""

return x + y

3.2 多行文档

可以在函数定义后跟随一段多行字符串来作为文档。

def add(x, y):

"""

This is a function to calculate the sum of two numbers.

It is implemented using the + operator.

"""

return x + y

3.3 查看文档

可以使用help函数来查看函数的文档。

def add(x, y):

"""This is a function to calculate the sum of two numbers"""

return x + y

help(add)

以上代码中,调用了help函数来查看函数add的文档。

4. 内置函数

Python中有很多内置函数,这些函数可以直接使用。

4.1 abs函数

abs函数用来求一个数的绝对值。

print(abs(-3))

print(abs(3))

以上代码输出结果为:3和3。

4.2 len函数

len函数用来求一个集合(字符串、列表、元组等)中元素的个数。

print(len("hello"))

print(len([1, 2, 3]))

以上代码输出结果为:5和3。

4.3 max和min函数

max函数和min函数用来求一个集合中的最大值和最小值。

print(max([1, 2, 3]))

print(min([1, 2, 3]))

以上代码输出结果为:3和1。

4.4 sum函数

sum函数用来求一个集合中的元素之和。

print(sum([1, 2, 3]))

以上代码输出结果为:6。

5. 自定义函数库

在Python中,可以将一组函数封装成一个模块(也称为函数库),供其他程序调用。

5.1 模块导入

使用import语句导入函数库。

import math

print(math.pi)

print(math.sin(30))

以上代码中,导入了Python中的数学函数库math,然后使用math.pi和math.sin函数。

5.2 模块别名

对导入的模块进行别名设置。

import math as m

print(m.pi)

print(m.sin(30))

以上代码中,将导入的模块math设置了别名m,然后使用m.pi和m.sin函数。

5.3 模块部分导入

从模块中导入部分函数。

from math import pi, sin

print(pi)

print(sin(30))

以上代码中,只从模块math中导入了pi和sin函数,而没有导入其他函数。这样可以避免函数名冲突。

5.4 模块全部导入

从模块中导入所有函数。

from math import *

print(pi)

print(sin(30))

以上代码中,从模块math中导入了所有函数。这样可以方便地使用模块中的所有函数。但是,不推荐使用这种方式,因为可能会导致函数名冲突。

6. 总结

Python函数是非常重要的语言特性,在代码设计和模块封装中扮演重要角色。本文介绍了Python函数的定义、传参、调用、文档、内置函数、以及如何自定义函数库等方面的内容。掌握这些知识后,可以更加自如地使用Python进行编程。

后端开发标签