当前位置:首页>python>Python 函数完整介绍与定义教程

Python 函数完整介绍与定义教程

  • 2026-10-11 05:58:26
Python 函数完整介绍与定义教程

一、什么是函数

函数是一段封装好、可重复调用的代码块,用来实现特定功能。 作用:

  1. 代码复用:不用重复写相同逻辑
  2. 简化结构:代码分模块,可读性更高
  3. 便于维护:修改只需改函数内部,不用到处改代码
  4. 隐藏细节:调用者只关心功能,不用看懂内部实现

Python 分为两类函数:

  1. 内置函数:Python自带,直接调用,print()、len()、input()、sum()
  2. 自定义函数:自己用 def 关键字创建

二、函数基础语法(定义函数)

标准格式

def 函数名(参数列表):
"""函数文档字符串(说明作用,可选)"""
    函数体(执行代码)
return 返回值  # 可选,没有return默认返回None

关键字说明

  1. def:define 缩写,定义函数的固定开头
  2. 函数名:命名规则同变量,字母/数字/下划线,不能数字开头,见名知意
  3. ():存放参数,无参数也要保留空括号
  4. ::冒号不可省略,下一行缩进(4空格)写函数体
  5. 文档字符串 """ """:函数说明,可用 help(函数名) 查看
  6. return:向外返回结果,执行return后函数立刻结束

三、最简单无参函数示例

示例1:无参数、无返回值

# 定义函数
defsay_hello():
"""打招呼函数"""
    print("你好!欢迎学习Python函数")

# 调用函数(函数名+括号)
say_hello()
say_hello()

输出:

你好!欢迎学习Python函数
你好!欢迎学习Python函数

查看函数说明文档

help(say_hello)

四、带参数的函数

参数:函数接收外部传入的数据,分为形参和实参

  • 形参:定义函数时括号里的变量(占位)
  • 实参:调用函数时传入的真实数据

1. 单个参数

defshow_name(name):
"""打印姓名,name是形参"""
    print(f"我的名字是:{name}")

# 传入实参
show_name("小明")
show_name("小红")

2. 多个位置参数(按顺序传参)

defcalc_sum(a, b):
"""计算两个数字之和"""
    res = a + b
    print(f"{a} + {b} = {res}")

calc_sum(3, 5)
calc_sum(10, 20)

五、return 返回值

函数默认没有返回值时,返回 None;使用 return 可以把计算结果交给外部变量。

示例1:返回单个值

defadd(a, b):
return a + b

# 接收返回值
result = add(4, 6)
print(result)  # 10

示例2:返回多个值(自动封装为元组)

defget_info():
    name = "张三"
    age = 18
# 返回多个数据
return name, age

# 解包接收
n, a = get_info()
print(n, a)

注意:return 终止函数

deftest():
    print("第一行")
return
    print("这行不会执行")  # return之后代码无效
test()

六、参数进阶分类

1. 关键字参数(指定参数名传参,顺序不限)

defstudent(name, age):
    print(f"姓名:{name}, 年龄:{age}")

# 关键字传参,不用管顺序
student(age=20, name="李四")

2. 默认参数(定义时给形参赋默认值,不传参则使用默认)

defpower(x, n=2):
"""计算x的n次方,默认平方"""
return x ** n

print(power(3))    # n使用默认2,输出9
print(power(3, 3)) # 手动传入n=3,输出27

坑:默认参数不要用可变对象(list/dict),会产生共享数据问题。

3. 可变位置参数 *args(接收任意多个位置实参,打包为元组)

defsum_all(*args):
    print(args)  # 元组
    total = 0
for num in args:
        total += num
return total

print(sum_all(1,2,3))
print(sum_all(10,20,30,40))

4. 可变关键字参数 **kwargs(接收任意多个关键字实参,打包字典)

defprint_info(**kwargs):
    print(kwargs)
for k, v in kwargs.items():
        print(f"{k}: {v}")

print_info(name="王五", age=22, gender="男")

七、函数变量作用域

  1. 局部变量:函数内部定义,仅函数内可用,外部访问报错
  2. 全局变量:函数外部定义,全文件可见;函数内修改需加 global
# 全局变量
num = 100

defchange_num():
global num  # 声明使用全局变量
    num = 200
    print("函数内:", num)

change_num()
print("函数外:", num)

八、函数调用流程总结

  1. 程序执行到 def,仅加载函数定义,不会执行内部代码
  2. 只有写上 函数名() 才会触发调用,进入函数体运行
  3. 传入实参 → 赋值给形参 → 执行代码 → return返回结果 → 回到调用处

九、完整综合案例

defcalculate_area(width=10, height=5):
"""
    计算矩形面积
    :param width: 宽度,默认10
    :param height: 高度,默认5
    :return: 矩形面积
    """

    area = width * height
return area

# 无传参,使用默认值
print(calculate_area())
# 位置传参
print(calculate_area(8, 6))
# 关键字传参
print(calculate_area(height=9, width=7))

最新文章

随机文章