一、什么是函数
函数是一段封装好、可重复调用的代码块,用来实现特定功能。 作用:
Python 分为两类函数:
- 内置函数:Python自带,直接调用,
print()、len()、input()、sum()
二、函数基础语法(定义函数)
标准格式
def 函数名(参数列表):
"""函数文档字符串(说明作用,可选)"""
函数体(执行代码)
return 返回值 # 可选,没有return默认返回None
关键字说明
- 函数名:命名规则同变量,字母/数字/下划线,不能数字开头,见名知意
- 文档字符串
""" """:函数说明,可用 help(函数名) 查看 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="男")
七、函数变量作用域
- 局部变量:函数内部定义,仅函数内可用,外部访问报错
- 全局变量:函数外部定义,全文件可见;函数内修改需加
global
# 全局变量
num = 100
defchange_num():
global num # 声明使用全局变量
num = 200
print("函数内:", num)
change_num()
print("函数外:", num)
八、函数调用流程总结
- 程序执行到
def,仅加载函数定义,不会执行内部代码 - 只有写上
函数名() 才会触发调用,进入函数体运行 - 传入实参 → 赋值给形参 → 执行代码 → 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))