学习 Python 函数,看这一篇就够了!

前言:整理了大量编程学习类书籍,如需请在公众号『阔码人生』后台回复 “书籍” 即可获取。

在 Python 编程中,函数是一个非常重要的概念。它不仅可以使代码更加模块化和可重用,还能提高程序的可读性和维护性。下面我们将深入剖析 Python 中函数的定义与使用,帮助你全面理解这一关键内容。

什么是函数?

函数是一段可以被重复使用的代码块,它们通常完成特定的任务。函数可以接收输入参数,并返回输出结果。Python 中,函数的定义使用 def 关键字,格式如下:

def function_name(parameters):
    """Docstring"""
    # Function body
    return result

定义函数

让我们通过一个简单的示例来说明如何定义和使用函数:

def greet(name):
    """打印一个问候语"""
    print(f"Hello, {name}!")

在这个示例中,我们定义了一个名为 greet 的函数,它接收一个参数 name,并打印出一个问候语。

调用函数

定义好函数后,我们可以通过函数名和相应的参数来调用它:

greet("Alice")

运行这段代码将输出:

Hello, Alice!

函数参数

Python 函数可以接收不同类型和数量的参数。以下是一些常见的参数类型:

  1. 位置参数:按顺序传递给函数的参数。
  2. 关键字参数:通过参数名传递给函数的参数。
  3. 默认参数:在函数定义时指定默认值的参数。
  4. 可变参数:允许传递任意数量参数的参数,使用 *args**kwargs

位置参数和关键字参数

def describe_pet(pet_name, animal_type='dog'):
    """显示宠物的信息"""
    print(f"\nI have a {animal_type}.")
    print(f"My {animal_type}'s name is {pet_name}.")

调用该函数的几种方式:

describe_pet('Willie')  # 使用默认参数
describe_pet('Harry', 'hamster')  # 位置参数
describe_pet(animal_type='hamster', pet_name='Harry')  # 关键字参数

返回值

函数可以返回一个或多个值,使用 return 语句:

def get_formatted_name(first_name, last_name):
    """返回整洁的姓名"""
    full_name = f"{first_name} {last_name}"
    return full_name.title()

调用示例:

musician = get_formatted_name('jimi', 'hendrix')
print(musician)

输出:

Jimi Hendrix

可变参数

当我们不确定传递给函数的参数数量时,可以使用可变参数。

*args

*args 用于接收不定数量的位置参数,并将这些参数以元组的形式传递给函数。使用时,在函数定义中,参数名前加一个星号 *。例如:

def my_function(*args):
    for arg in args:
        print(arg)

my_function(1, 2, 3)

输出结果为:

1
2
3

在这个示例中,my_function 可以接收任意数量的位置参数,并将它们存储在一个名为 args 的元组中。

**kwargs

**kwargs 用于接收不定数量的关键字参数,并将这些参数以字典的形式传递给函数。使用时,在函数定义中,参数名前加两个星号 **。例如:

def my_function(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

my_function(name="Alice", age=30)

输出结果为:

name: Alice
age: 30

在这个示例中,my_function 可以接收任意数量的关键字参数,并将它们存储在一个名为 kwargs 的字典中。

*args 和 **kwargs 的结合使用

在同一个函数中,可以同时使用 *args**kwargs 来接收不定数量的位置参数和关键字参数。需要注意的是,*args 必须位于 **kwargs 之前。以下是一个示例:

def my_function(*args, **kwargs):
    print("Positional arguments (args):")
    for arg in args:
        print(arg)
    
    print("\nKeyword arguments (kwargs):")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

my_function(1, 2, 3, name="Alice", age=30)

输出结果为:

Positional arguments (args):
1
2
3

Keyword arguments (kwargs):
name: Alice
age: 30

在这个示例中,函数 my_function 能够同时接收位置参数和关键字参数,并分别处理它们。

作用域和生命周期

函数内部定义的变量称为局部变量,函数外部定义的变量称为全局变量。局部变量只能在函数内部访问,全局变量可以在整个程序中访问。

def spam():
    eggs = 'spam local'
    print(eggs)  # 输出 'spam local'

eggs = 'global'
spam()
print(eggs)  # 输出 'global'

高阶函数和匿名函数

Python 支持将函数作为参数传递给另一个函数(高阶函数),以及使用 lambda 关键字定义匿名函数。

高阶函数

def apply_func(x, func):
    return func(x)

def square(x):
    return x * x

result = apply_func(5, square)
print(result)  # 输出 25

匿名函数

result = apply_func(5, lambda x: x * x)
print(result)  # 输出 25

最后的话

掌握 Python 中的函数定义与使用是成为 Python 高手的重要一步。函数不仅能提高代码的重用性,还能使代码更简洁和易于维护。希望通过本文的介绍,大家能更加深入地理解函数的各种用法,并在实际编程中灵活运用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阔升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值