Python函数使用(四)

函数基础

函数是“组织好、可重复使用、实现特定功能的代码段”。
为了复用逻辑、减少重复代码、提高可维护性,我们会将可重复的逻辑封装成函数。


函数的完整格式

# 定义
def 函数名(传入参数):
    函数体
    return 返回值

# 使用
函数名(传入参数)

说明:

  • 传入参数(形参)数量不限制
    • 可以没有参数
    • 也可以传入任意数量的参数
  • return 可写可不写
    • 若不写 return,函数执行结束后自动返回 None
  • 函数必须先定义后使用

简单格式(无参函数)

定义:

def 函数名():
    函数体

使用:

函数名()

示例:

def say():
    print("hello world")

say()
# 输出 hello world

带参函数

用于在函数执行时接收外部传入的数据。

定义:

def 函数名(传入参数):
    函数体

使用:

函数名(传入参数)

示例(形参与实参说明):

def add(x, y):      # x、y 是形参
    res = x + y
    print(res)

add(10, 6)          # 10、6 是实参
# 输出 16

带返回值的函数

return 用于把结果返回给调用者。

格式:

def 函数名(参数):
    函数体
    return 返回值

示例:

def add(x, y):
    return x + y
    print("不会执行")

res = add(10, 6)
print(res)
# 输出 16

注意:

  • 函数遇到 return 后立即结束
  • return 后的代码不会执行

None 类型

如果函数没有 return,默认返回 None

示例:

def say():
    print("hello world")

mes = say()
print(mes)
print(type(mes))

输出:

hello world
None
<class 'NoneType'>

用途:

  • 可作为空值占位,例如:name = None
  • 在 if 判断中,None == False(布尔意义上等同 False)
  • 常用于函数中“没有结果”的返回值

函数的嵌套调用

一个函数内调用另一个函数。

示例:

def fun_1():
    fun_2()
    print("----fun_1-----")

def fun_2():
    fun_3()
    print("----fun_2-----")

def fun_3():
    print("----fun_3----")

fun_1()

执行顺序:

fun_1 → fun_2 → fun_3 → fun_2 → fun_1

说明:

  • 函数执行是“先进后出”
  • 当前函数执行完毕后会回到上次调用点继续执行

变量的作用域

作用域指变量在程序中“能使用的范围”。
在函数相关的学习中,我们主要区分:

  • 局部变量(local variable)
  • 全局变量(global variable)

作用范围决定变量在哪里生效、在哪里无效。


局部变量(函数内部变量)

  • 定义在 函数体内部 的变量
  • 仅在函数内部有效
  • 函数调用结束后,局部变量会被销毁

示例:

def test():
    num = 100   # 局部变量
    print(num)

test()          # 输出 100
print(num)      # 报错:name 'num' is not defined

说明:

  • num 只能在 test() 内使用
  • 函数执行完毕后,局部变量随函数栈帧销毁

全局变量(函数内外都能使用)

  • 定义在 函数外部
  • 在函数内、函数外都可以访问

示例:

num = 100

def test():
    print(num)

test()      # 输出 100
print(num)  # 输出 100

⚠ 注意:
函数内部 默认不能修改全局变量的值,除非使用 global 关键字。

如下例子中,内部与外部的 num 是不同变量:

num = 100

def test():
    num = 200   # 这是局部变量,非全局变量
    print(num)

test()      # 输出 200
print(num)  # 输出 100(说明外部的 num 未被修改)

global 关键字

用于在函数内部声明“我要使用外部的全局变量”,并允许修改它。

示例:

num = 100

def test():
    global num  # 声明使用外部 num
    num = 200
    print(num)

test()      # 输出 200
print(num)  # 输出 200(外部 num 被成功修改)

说明:

  • 使用 global 后,函数内部可修改外部变量
  • 这是改变全局变量的唯一方式

作用域总结

类型定义位置生效范围生命周期
局部变量函数内仅函数内部函数执行完毕即销毁
全局变量函数外全局有效,可被多个函数使用程序运行期间始终存在
global修改声明方式允许函数修改全局变量影响全局变量值

函数进阶

Python 提供多种灵活的函数使用方式:多返回值、各种传参方法、函数作为参数、匿名函数等。本章完整讲解这些进阶能力。


多返回值

Python 支持在一个函数中返回多个值,多个返回结果会自动被打包成元组。
调用时可以使用多个变量分别接收。

示例:

def test():
    return 6, 9, 16

x, y, z = test()
print(f"第一个值为{x}, 第二个值为{y}, 第三个值为{z}")

也可以返回不同类型的数据:

def test():
    return "观止", True, 16

x, y, z = test()
print(x, y, z)

位置参数

调用函数时,根据参数顺序传值,数量必须一一对应。

def user_info(name, age, gender):
    print(f"您的名字是{name}, 年龄是{age}, 性别是{gender}")

user_info('TOM', 20, '男')

关键字参数

通过“键=值”形式传参,可打乱顺序使用,更加清晰。

user_info(name='TOM', age=20, gender='男')
user_info(gender='男', age=20, name='TOM')

⚠ 关键字参数必须在位置参数之后:

user_info('TOM', gender='男', age=20)

默认参数(缺省参数)

用于给参数提供默认值,调用时可以省略。

def user_info(name, age, gender='男'):
    print(f"您的名字是{name}, 年龄是{age}, 性别是{gender}")

user_info('TOM', 20)        # gender 使用默认值
user_info('TOM', 20, '女')  # gender 覆盖默认值

注意:默认参数必须放在位置参数后面。


不定长参数

用于接收数量不确定的参数。


*不定长位置参数:args

会把传入的所有位置参数打包成一个元组。

def user_info(*args):
    print(args)

user_info('TOM')
user_info('TOM', 20, '女')

输出示例:

('TOM',)
('TOM', 20, '女')

**不定长关键字参数:kwargs

接收所有 key=value 参数,打包成字典。

def user_info(**kwargs):
    print(kwargs)

user_info(name='TOM', age=20)

输出:

{'name': 'TOM', 'age': 20}

总结:

类型标识接收形式
不定长位置参数*args元组
不定长关键字参数**kwargs字典

函数作为参数传递

函数也是一种对象,可以像变量一样被传入另一个函数中。

def add(x, y):
    return x + y

def compute(func):
    result = func(6, 3)
    print(result)

compute(add)

输出:

9

函数名表示函数本身,函数名() 表示执行函数。


lambda 匿名函数

匿名函数无需名字,只能书写一行表达式。

格式:

lambda 参数: 表达式

示例:

compute(lambda x, y: x + y)

功能上等同于:

def add(x, y):
    return x + y

compute(add)

匿名函数适用于一次性、简单逻辑的函数场景。


函数使用总结

这一部分总结了函数的基础、语法、作用域、进阶用法,帮助系统理解函数在 Python 中的完整使用方式。


作用

函数是一段可复用的代码,用于实现特定功能,提升代码复用率、可维护性和结构清晰度。

主要优点:

  • 避免重复代码
  • 结构化程序逻辑
  • 代码简洁、易维护
  • 可高效组织复杂程序

语法

Python 函数的基本定义方式如下:

def 函数名(参数):
    函数体
    return 返回值

函数定义形式包括:

无参函数

用于封装不需要外部数据的逻辑。

def 函数名():
    函数体

简单函数(带形参)

函数内部通过形参接收外部数据。

def 函数名(参数):
    函数体

带返回值函数

完成功能后,将处理结果返回。

def 函数名(参数):
    函数体
    return 值

return 后的代码不会执行。


变量的作用域

局部变量

  • 定义在函数内部
  • 仅在函数内部生效
  • 函数调用结束后自动销毁

全局变量

  • 定义在函数外部
  • 可以在函数内部读取

global 声明

默认情况下,函数内部不能修改全局变量。
若需要修改,必须使用:

global 变量名

这样函数内部操作的就是全局变量,而非局部副本。


函数进阶使用

多返回值

Python 函数可以返回多个值:

return a, b, c

外部可以用多个变量接收:

x, y, z = 函数()

可返回不同类型的数据。


多种传参方式

位置参数

按顺序传参,数量必须一致。

关键字参数

形式为 key=value,不受顺序限制。
位置参数必须在关键字参数之前。

默认参数(缺省参数)

为参数提供默认值;调用时可省略该值。

默认参数必须放在位置参数之后。

不定长参数

用于接收不确定数量的参数。

  • *args:接收不定长 位置参数(元组)
  • **kwargs:接收不定长 关键字参数(字典)

函数作为参数

函数名本质是指向代码块的引用,可以像变量一样:

  • 传递给其他函数
  • 作为返回值
  • 存入数据结构

示例结构:

def compute(func):
    func(数据)

lambda 匿名函数

一种无名称的单行函数,用于临时操作。

格式:

lambda 参数: 表达式

匿名函数用途:

  • 作为一次性小函数
  • 可作为参数传递,如内部逻辑简单时替代普通函数
  • 适用于函数式编程场景

lambda 与普通函数等价,只是语法更简短。


整体结构总结

函数使用的本质思维导图:

  • 函数用于封装逻辑、提升复用性
  • 语法可包含无参、有参、返回值格式
  • 作用域决定变量可用范围,global 可修改全局变量
  • 进阶用法包括多返回值、多种传参方式、不定长参数等
  • 函数可作为参数传递
  • lambda 提供精简的匿名函数形式
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇