Python 函数

Python 函数

1. Python 中的函数

函数是 Python 程序中最基础的组建之一。通过函数,我们可以封装一些可复用的代码,并且让程序更加模块化。Python 中的函数具备一些非常强大的功能,比如闭包、递归等。在 Python 中,函数是第一类对象,可以作为参数传递、作为返回值、存储到容器中等等。

1.1 函数的定义和调用

在 Python 中定义一个函数非常简单,使用关键字 def 即可:

def function_name(arg1, arg2, ...):

# 函数体

return result

例如:

def add(a, b):

return a + b

函数可以包含 0 个或多个参数,在参数列表中,多个参数之间使用逗号隔开。Python 中的函数可以返回任何类型的值或者不返回任何值:

def say_hello(name):

print(f'Hello, {name}!')

def do_nothing():

pass

要调用一个函数,使用函数名和对应的参数:

result = add(1, 2)

say_hello('world')

do_nothing()

1.2 函数的参数

Python 中的参数有两种类型:位置参数和关键字参数。

位置参数是最常见的参数形式,函数会按照参数列表中的顺序,把调用时提供的值依次赋值给参数:

def add(a, b):

return a + b

result = add(1, 2) # 结果为 3

关键字参数是另外一种调用函数的方式,它允许我们在调用函数时指定参数的名称。关键字参数和位置参数可以混合使用:

def add(a, b):

return a + b

result = add(b=2, a=1) # 结果为 3

在定义函数时,可以给参数提供默认值:

def add(a, b=0):

return a + b

result1 = add(1) # 结果为 1

result2 = add(1, 2) # 结果为 3

默认参数应该放在参数列表的最后面。如果有多个默认参数,可以使用关键字参数来指定参数的名称。

1.3 函数的返回值

在 Python 中,函数可以返回任何类型的值或者不返回值。使用关键字 return 可以将函数的执行结果返回给函数调用方:

def add(a, b):

return a + b

result = add(1, 2)

print(result) # 结果为 3

函数可以返回多个值,Python 会将这些值打包成一个元组返回:

def swap(a, b):

return b, a

result = swap(1, 2)

print(result) # 结果为 (2, 1)

1.4 Lambda 函数

Python 中的 Lambda 函数是一种语法糖,用来创建匿名函数。Lambda 函数可以作为参数传递、作为返回值、存储到容器中等等。Lambda 函数通常用来定义简短的匿名函数。

# 用 Lambda 函数对列表进行排序

a = [(1, 'a'), (2, 'c'), (0, 'b')]

a.sort(key=lambda x: x[0])

print(a) # 结果为 [(0, 'b'), (1, 'a'), (2, 'c')]

1.5 函数装饰器

Python 中的装饰器是一种可以修改其他函数行为的函数。装饰器可以在不改变原函数代码的情况下,添加一些额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并且返回一个新的函数。

def my_decorator(function):

def wrapper(*args, **kwargs):

print('before function call')

result = function(*args, **kwargs)

print('after function call')

return result

return wrapper

@my_decorator

def my_function():

return 'Hello, world!'

result = my_function()

print(result) # 执行结果为:

# before function call

# after function call

# Hello, world!

注意:装饰器的作用是在不改变原函数代码的前提下,添加新的函数功能。因此,装饰器本身不能修改原函数的行为。

2. 常用内置函数

Python 中有很多常用内置函数可以帮助我们完成各种任务。下面介绍几个常用的内置函数。

2.1 abs()

abs() 函数返回一个数的绝对值:

result = abs(-1)

print(result) # 结果为 1

2.2 max() 和 min()

max()min() 函数分别返回一个可迭代对象中的最大值和最小值:

result1 = max([1, 2, 3])

result2 = min([1, 2, 3])

print(result1, result2) # 结果为 3 1

2.3 sorted()

sorted() 函数用来对可迭代对象进行排序:

result = sorted([1, 3, 2])

print(result) # 结果为 [1, 2, 3]

2.4 map()

map() 函数用来对可迭代对象中的每个元素应用一个函数:

result = map(lambda x: x * 2, [1, 2, 3])

print(list(result)) # 结果为 [2, 4, 6]

2.5 reduce()

reduce() 函数对可迭代对象中的元素逐个应用一个函数,并返回最终的结果:

from functools import reduce

result = reduce(lambda x, y: x * y, [1, 2, 3])

print(result) # 结果为 6

3. Python 模块和包

Python 模块和包是组织 Python 代码的一种方式。模块可以看成是一个 Python 文件,包则是一个文件夹,其中包含多个 Python 文件。每个模块和包都有一个名称,我们可以通过这个名称来引用其中的变量、函数、类等。

3.1 模块的导入

在 Python 中,我们可以使用 import 语句导入已经存在的模块:

import math

result = math.sqrt(2)

print(result) # 结果为 1.4142135623730951

Python 中还有一种更灵活的模块导入方式,使用 from ... import ... 语句,可以直接导入模块中的特定变量、函数、类等:

from math import sqrt

result = sqrt(2)

print(result) # 结果为 1.4142135623730951

3.2 包的导入

Python 中的包可以包含多个模块,我们可以使用 importfrom ... import ... 语句导入包和包中的模块:

import mypackage.mymodule

result = mypackage.mymodule.myfunction()

print(result)

from mypackage import mymodule

result = mymodule.myfunction()

print(result)

我们也可以使用 from ... import * 的方式导入包中的所有模块:

from mypackage import *

result = mymodule.myfunction()

print(result)

4. 总结

Python 中的函数是一种强大而灵活的编程工具,可以帮助我们封装代码、抽象问题、提高程序的可读性和可维护性。同时,Python 中的常用内置函数、Lambda 函数、函数装饰器等概念也是我们需要熟练掌握的内容。最后,Python 模块和包是一种非常重要的程序组织方式,掌握其使用方法可以帮助我们更好地管理大型项目和代码库。

后端开发标签