欢迎访问宙启技术站
智能推送

Python函数使用方法和技巧大全

发布时间:2023-06-01 22:13:17

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 还有很多其他的内置函数和模块,可以根据需求选择使用。