Python中的函数入门二

发布于:2025-08-15 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

一、函数的说明文档:让你的函数 “会说话”

1. 什么是说明文档?

2. 如何定义说明文档?

二、函数的嵌套:函数内部的 “函数调用”

1. 什么是函数嵌套?

2. 嵌套函数的执行流程

三、变量的作用域

1. 作用域的分类

2. 全局变量的修改:global关键字

四、Python 拆包:快速获取集合中的数据

1. 什么是拆包?

2. 拆包的经典应用:交换变量

总结


在 Python 编程中,函数是代码复用和模块化的核心。除了基础的定义与调用,函数还有诸多进阶特性能让我们的代码更规范、高效。本文将聚焦函数的说明文档、嵌套调用、变量作用域及拆包技巧,带你进一步掌握函数的使用精髓。

一、函数的说明文档:让你的函数 “会说话”

当我们接手他人代码或回顾自己的旧代码时,如何快速理解一个函数的作用?注释虽能辅助,但需找到函数定义位置;而函数的说明文档则能更便捷地提供函数信息,这是 Python 中规范函数的重要方式。

1. 什么是说明文档?

函数的说明文档是写在函数内部的字符串,用于描述函数的功能、参数、返回值等信息。它无需查找函数定义,通过help()函数即可快速查看,让函数的使用方式一目了然。

2. 如何定义说明文档?

在函数体的第一行使用三引号包裹描述内容即可。例如,我们封装一个生成指定长度验证码的函数,并添加说明文档:

import random

def generate_code(num):
    """
    generate_code方法用于生成指定长度的随机验证码
    参数:
        num:int类型,代表验证码的长度
    返回值:
        字符串类型,长度为num的随机验证码(包含数字、大小写字母)
    """
    str1 = "0123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
    code = ""
    for i in range(num):
        index = random.randint(0, len(str1) - 1)
        code += str1[index]
    return code

# 查看说明文档
help(generate_code)

运行help()后,会清晰显示函数的功能、参数和返回值,让使用者无需阅读源码即可快速上手。

二、函数的嵌套:函数内部的 “函数调用”

函数并非孤立存在,在复杂逻辑中,我们常常需要在一个函数内部调用另一个函数,这就是函数的嵌套。

1. 什么是函数嵌套?

函数嵌套指的是 “一个函数内部调用另一个函数”。例如,函数funcA执行过程中调用funcBfuncB执行完毕后返回funcA继续执行。

2. 嵌套函数的执行流程

# 定义被嵌套的函数
def funcB():
    print("funcB函数执行中...")

# 定义嵌套函数
def funcA():
    print("funcA函数开始执行")
    funcB()  # 调用funcB
    print("funcA函数执行结束")

# 调用外层函数
funcA()

执行流程如下:

  1. 调用funcA,先执行print("funcA函数开始执行")
  2. 遇到funcB(),进入funcB执行print("funcB函数执行中...")
  3. funcB执行完毕,返回funcA,继续执行print("funcA函数执行结束")

三、变量的作用域

在函数中使用变量时,你是否遇到过 “变量未定义” 的错误?这往往与变量的作用域有关 —— 即变量的可用范围。

1. 作用域的分类

变量的作用域分为两类:

(1)全局作用域:函数外部定义的变量(全局变量),在整个程序中均可使用;

(2)局部作用域:函数内部定义的变量(局部变量),仅在函数内部有效,函数执行完毕后自动销毁。

# 全局变量
global_str = "我是全局变量"

def func():
    # 局部变量
    local_num = 10
    print(global_str)  # 可访问全局变量
    print(local_num)   # 可访问局部变量

func()
print(global_str)      # 可访问全局变量
# print(local_num)     # 报错:局部变量在函数外不可用

2. 全局变量的修改:global关键字

默认情况下,局部作用域中无法修改全局变量。若需修改,需用global关键字声明:

num = 10  # 全局变量

def func():
    global num  # 声明修改全局变量
    num = 20    # 修改全局变量

func()
print(num)  # 输出20(全局变量被修改)

若不使用global,局部作用域中对num的赋值会被视为定义一个新的局部变量,而非修改全局变量。

四、Python 拆包:快速获取集合中的数据

拆包是 Python 的特色技巧,它能将元组、字典等集合中的数据 “拆分” 并直接赋值给变量,让代码更简洁。

1. 什么是拆包?

拆包指将元组、列表或字典中的元素单独提取出来,赋值给多个变量的过程。例如,函数返回多值时,可通过拆包直接获取结果。

# 函数返回元组
def get_info():
    return "小明", 18, "北京"

# 拆包获取值
name, age, address = get_info()
print(name)    # 输出"小明"
print(age)     # 输出18
print(address) # 输出"北京"

2. 拆包的经典应用:交换变量

在 Python 中,无需临时变量即可交换两个变量的值,这正是利用了拆包特性:

a = 10
b = 20

# 拆包交换
a, b = b, a  # 等价于 (b, a) 元组拆包为 a 和 b

print(a)  # 输出20
print(b)  # 输出10

原理是先将ba组成元组(b, a),再通过拆包赋值给ab

总结

函数是 Python 编程的基石,掌握说明文档能让函数更易维护,嵌套调用能实现复杂逻辑的模块化,理解作用域可避免变量使用错误,而拆包则能提升代码效率。这些技巧看似基础,却是写出规范、高效 Python 代码的关键。下一次编写函数时,不妨试试这些进阶特性,让你的代码更上一层楼!


网站公告

今日签到

点亮在社区的每一天
去签到