继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python函数教程:初学者必备指南

Qyouu
关注TA
已关注
手记 469
粉丝 87
获赞 413
概述

本文详细介绍了Python函数的基本概念和用法,包括定义、调用及参数传递方式。通过丰富的示例代码,帮助读者理解如何使用Python函数进行各种操作。此外,文章还深入探讨了函数返回值、作用域以及匿名函数的应用,为初学者提供了全面的python函数教程。

Python函数教程:初学者必备指南
Python函数简介

函数的概念与作用

在Python中,函数是一种封装好的代码片段,用来完成特定的任务。使用函数能够使代码更加模块化、可重用,有助于提高代码的可读性和可维护性。通过定义函数,程序员可以将一组语句组织在一起,以实现特定的功能。

定义函数的基本语法

在Python中,定义函数的基本语法如下:

def 函数名(参数列表):
    代码块

其中,def 是定义函数的关键字,函数名 是你为函数指定的名字,参数列表 是可选的,用来指定函数的输入参数。代码块 是函数内部执行的代码,它必须缩进,以表示这些代码属于函数的一部分。

调用函数的方法

调用函数时,需要使用函数名并提供相应的参数。函数调用返回的结果是可选的,取决于函数的定义。

def greet(name):
    print("Hello, " + name)

greet("Alice")

上述代码定义了一个名为 greet 的函数,该函数接受一个名为 name 的参数,并打印一条欢迎信息。在调用 greet 函数时,我们传入了字符串 "Alice",程序将输出 "Hello, Alice"。

函数参数

必需参数

必需参数是函数定义中未指定任何默认值的参数。当调用函数时,必须提供这些参数的值。

def add(a, b):
    return a + b

result = add(3, 5)
print(result)

上述代码定义了一个名为 add 的函数,它接受两个参数 ab,并返回它们的和。在调用 add 函数时,我们分别传入了数值 3 和 5,函数返回的结果被赋值给变量 result,然后打印出 "8"。

默认参数

默认参数是在定义函数时指定其默认值的参数。当调用函数时,如果没有提供这些参数的值,则使用默认值。

def greet(name, greeting="Hello"):
    print(greeting + ", " + name)

greet("Alice")
greet("Bob", "Hi")

上述代码定义了一个名为 greet 的函数,它接受两个参数 namegreeting。参数 greeting 有一个默认值 "Hello"。当调用 greet 函数时,第一个例子中我们仅传入了 "Alice",所以使用了默认的 "Hello" 欢迎信息。第二个例子中,我们传入了 "Hi" 和 "Bob",所以使用了 "Hi" 作为欢迎信息。

关键字参数

关键字参数是通过指定参数名称并赋值的方式来调用函数的。这种方式可以提高代码的可读性,特别是在参数较多且顺序混乱时。

def describe_pet(animal_type, pet_name):
    print("I have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name + ".")

describe_pet(animal_type="dog", pet_name="Rex")
describe_pet(pet_name="Rex", animal_type="dog")

上述代码定义了一个名为 describe_pet 的函数,它接受两个参数 animal_typepet_name。在调用 describe_pet 函数时,我们分别使用关键字参数来指定 animal_typepet_name 的值。这种方式即使参数顺序混乱,也能准确地传递参数。

可变参数

可变参数允许函数接收任意数量的实参。Python支持两种可变参数:可变参数 *args 和关键字参数 **kwargs

可变参数 *args

*args 是一个允许传递任意数量的非关键字参数的特殊参数。这些参数被收集为一个元组。

def sum_all(*args):
    total = 0
    for num in args:
        total += num
    return total

result = sum_all(1, 2, 3, 4, 5)
print(result)

上述代码定义了一个名为 sum_all 的函数,它接受一个可变数量的非关键字参数 *args。这些参数被收集为一个元组,并在函数内部逐个求和。调用 sum_all 函数时,我们传入了多个数值,函数返回这些数值的总和。

关键字参数 **kwargs

**kwargs 是一个允许传递任意数量的关键字参数的特殊参数。这些参数被收集为一个字典。

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

print_kwargs(name="Alice", age=25, city="Beijing")

上述代码定义了一个名为 print_kwargs 的函数,它接受一个可变数量的关键字参数 **kwargs。这些参数被收集为一个字典,并在函数内部逐个打印。调用 print_kwargs 函数时,我们传入了多个关键字参数,函数输出每个参数的名称和值。

函数作用域

局部变量与全局变量

在Python中,变量可以分为局部变量和全局变量。局部变量是在函数内定义的变量,仅在函数内部有效;全局变量是在函数外部定义的变量,可以在整个文件内访问。

def my_function():
    local_var = 10
    print("Local variable:", local_var)

global_var = "Global variable"  # 定义全局变量
my_function()
print("Global variable:", global_var)

上述代码定义了一个名为 my_function 的函数,该函数内部定义了一个局部变量 local_var。在函数外部,定义了一个全局变量 global_var。函数内部的 local_var 仅在函数内部有效,而 global_var 在整个文件内都有效。

globals()与locals()函数

globals()locals() 函数分别返回当前全局变量和局部变量的字典。可以通过这两个函数查看当前作用域内的变量。

def my_function():
    local_var = "Local variable"
    print("Local variables:", locals())
    global_var = "Global variable"
    print("Global variables:", globals())

my_function()

上述代码定义了一个名为 my_function 的函数,该函数内部定义了一个局部变量 local_var 和一个全局变量 global_var。通过 locals() 函数,可以查看函数内部的局部变量;通过 globals() 函数,可以查看当前文件内的全局变量。

使用nonlocal关键字

nonlocal 关键字用于在嵌套函数中引用外部函数的局部变量。当内部函数需要修改外部函数的局部变量时,可以使用 nonlocal 关键字。

def outer_function():
    outer_var = 10
    def inner_function():
        nonlocal outer_var
        outer_var = 20
        print("Inner function:", outer_var)
    inner_function()
    print("Outer function:", outer_var)

outer_function()

上述代码定义了一个名为 outer_function 的外部函数和一个名为 inner_function 的内部函数。在 inner_function 内部,使用 nonlocal 关键字引用 outer_function 中的局部变量 outer_var,并修改其值。外部函数和内部函数分别打印了修改后的值。

函数返回值

返回值的作用

返回值是函数执行完毕后返回给调用者的值。通过返回值,函数可以向调用者传递信息或结果。

使用return语句

return 语句用于从函数中返回一个值。如果函数没有返回值,其默认返回值为 None

def add(a, b):
    return a + b

result = add(3, 5)
print(result)

上述代码定义了一个名为 add 的函数,它接受两个参数 ab,并返回它们的和。return 语句将计算结果返回给调用者。在调用 add 函数时,返回的结果被赋值给变量 result,然后打印出 "8"。

示例:简单的返回值函数

下面是一个简单的返回值函数示例,该函数返回一个字符串。

def get_greeting(name):
    return f"Hello, {name}"

greeting = get_greeting("Alice")
print(greeting)

上述代码定义了一个名为 get_greeting 的函数,它接受一个参数 name,并返回一条欢迎信息。在调用 get_greeting 函数时,返回的结果被赋值给变量 greeting,然后打印出 "Hello, Alice"。

示例:返回不同类型的值

以下示例展示了返回不同类型值的函数:

def get_square(n):
    return n * n

result = get_square(4)
print(result)  # 输出 16

上述代码定义了一个名为 get_square 的函数,它接受一个参数 n,并返回其平方值。在调用 get_square 函数时,返回的结果被赋值给变量 result,然后打印出 "16"。

匿名函数

lambda表达式的使用

lambda 表达式是一种定义匿名函数的方法。lambda 函数可以接受任意数量的参数,但只能有一个表达式作为函数体。

add = lambda a, b: a + b
result = add(3, 5)
print(result)

上述代码定义了一个名为 add 的匿名函数,该函数接受两个参数 ab,并返回它们的和。调用匿名函数时,返回的结果被赋值给变量 result,然后打印出 "8"。

匿名函数的应用场景

匿名函数通常用于需要一个简单函数的地方,例如在排序、过滤等操作中。

numbers = [1, 5, 3, 7, 9, 2]
sorted_numbers = sorted(numbers, key=lambda x: x % 2)
print(sorted_numbers)

上述代码定义了一个列表 numbers,并使用 sorted 函数对其进行排序。sorted 函数的 key 参数是一个函数,用于确定排序依据。这里使用了一个匿名函数 lambda x: x % 2,该函数返回每个元素除以2的余数,用于根据奇偶性对列表进行排序。

示例:使用匿名函数进行过滤

下面是一个使用匿名函数进行过滤的示例。

numbers = [1, 2, 3, 4, 5]
filtered_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(filtered_numbers))  # 输出偶数

上述代码定义了一个列表 numbers,并使用 filter 函数进行过滤。filter 函数的 lambda 参数是一个函数,用于判断每个元素是否符合过滤条件。这里使用了一个匿名函数 lambda x: x % 2 == 0,该函数返回每个元素是否为偶数。过滤后的列表将包含所有偶数。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP