Python函数使用方法和技巧大全
1. 定义和调用函数
在 Python 中定义函数时需要使用 def 关键字,语法格式如下:
def function_name(parameters):
"""docstring"""
# code
return [expression]
其中,parameters 是函数的形参,可以有多个,也可以没有。docstring 是对函数的解释说明,在函数体之前用三个引号括起来。return 语句用于返回函数结果,可选。
调用函数时,只需使用函数名,并根据实参的位置或关键字传递实参,例如:
def add_numbers(a, b):
"""Returns the sum of two numbers."""
return a + b
result = add_numbers(3, 4) # result = 7
result = add_numbers(b=3, a=4) # result = 7
2. 默认参数
在函数定义时可以为参数指定默认值,这些默认值将在调用函数时自动生效,例如:
def greet(name, greeting='Hello,'):
print(greeting, name)
greet('John') # Hello, John
greet('Mary', greeting='Hi,') # Hi, Mary
注意,带有默认值的参数必须放在不带默认值的参数之后。
3. 可变参数
当函数需要接收不定数量的参数时,可以使用可变参数。在 Python 中,有两种可变参数:*args 和 **kwargs。
*args 表示不定数量的位置参数,它们被组织成一个元组(tuple)。例如:
def my_sum(*args):
return sum(args)
result = my_sum(1, 2, 3) # result = 6
result = my_sum(1, 2, 3, 4, 5) # result = 15
**kwargs 表示不定数量的关键字参数,它们被组织成一个字典。例如:
def print_kwargs(**kwargs):
print(kwargs)
print_kwargs(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3}
print_kwargs(name='John', age=30) # {'name': 'John', 'age': 30}
4. 匿名函数(lambda)
在 Python 中可以使用 lambda 表达式定义匿名函数,这些函数通常用于编写简单的函数或作为函数的参数。lambda 表达式的语法格式为:
lambda arguments: expression
其中,arguments 表示函数的参数列表,用逗号分隔,expression 是函数的返回值表达式。例如:
my_sum = lambda a, b: a + b result = my_sum(3, 4) # result = 7
5. 闭包
闭包(closure)是指那些引用了自由变量的函数。自由变量是指未在函数中定义但在函数外部可用的变量。
在 Python 中,闭包由函数和与其相关的引用环境组成。闭包可以将其引用的变量保存下来,并在以后使用这些变量。例如:
def make_adder(n):
def adder(x):
return x + n
return adder
add5 = make_adder(5) # add5 is now a function that adds 5 to its argument
result = add5(3) # result = 8
result = add5(7) # result = 12
6. 生成器
生成器(generator)是一种特殊的函数,它使用 yield 语句生成一个可以迭代的对象。每次调用 next() 方法时,生成器会执行 yield 语句,返回一个值,并暂停执行,直到下一次调用 next() 方法或迭代结束。
生成器使用起来类似于列表推导式,但不会一次性生成所有的元素,而是按需生成。例如:
def squares(n):
for i in range(n):
yield i**2
my_gen = squares(5)
result = next(my_gen) # result = 0
result = next(my_gen) # result = 1
result = list(my_gen) # result = [4, 9, 16]
7. 函数装饰器
函数装饰器(decorator)可以用来修改已有函数的行为,而无需修改原函数的定义。装饰器是一个函数,它接收一个函数作为参数,并返回一个新函数。
装饰器的语法格式如下:
@decorator
def function_name(parameters):
# code
其中,decorator 是装饰器函数的名称,原函数的定义需要紧跟着装饰器。例如:
def my_decorator(func):
def wrapper(*args, **kwargs):
print('Before function')
result = func(*args, **kwargs)
print('After function')
return result
return wrapper
@my_decorator
def my_function():
print('Hello')
my_function() # prints 'Before function', 'Hello', and 'After function'
8. 内置函数和模块
Python 提供了许多内置函数和模块,可以大大增强开发人员的编程效率。以下是一些常用的内置函数和模块:
|函数/模块|说明|
|---|---|
|print()|打印输出|
|input()|读取用户输入|
|len()|返回对象的长度|
|range()|返回一个数字序列|
|enumerate()|遍历序列并返回索引和值|
|zip()|合并多个序列|
|map()|对序列中的每个元素应用函数|
|filter()|从序列中过滤不符合条件的元素|
|reduce()|对序列中的元素进行累积操作|
|math|数学函数和常量|
|random|生成随机数|
|os|操作系统相关的功能|
|datetime|处理日期和时间|
|json|处理 JSON 数据|
|re|正则表达式|
|csv|读取和写入 CSV 文件|
|urllib|访问 URL|
以上只是一些常用的函数和模块,Python 还有很多其他的内置函数和模块,可以根据需求选择使用。
