Python 基础入门(第八篇):函数——让代码重用更优雅
函数就是把一段有特定功能的代码打包,起个名字,需要时直接“调用”即可。函数还能接受输入(参数),返回结果(返回值)。
1. 定义与调用函数
用 def 关键字定义函数,后面跟函数名和括号:
def say_hello():
print("Hello!")# 函数体,注意缩进
# 调用函数
say_hello()# 输出 Hello!
函数名遵循变量命名规则,建议用小写字母加下划线,如 calculate_average。
2. 参数与返回值
参数让函数处理不同的数据,返回值让函数输出结果给调用者。
def add(a, b):
result = a + b
return result# 返回结果
sum = add(3, 5)# 调用时传入3和5
print(sum)# 输出 8
如果没有 return,函数默认返回 None。
3. 参数类型详解
3.1 位置参数
按位置传递,数量和顺序必须匹配:
def info(name, age):
print(f"{name} {age}岁")
info("小明", 18)# 正确
# info(18, "小明") # 错误,类型错位
3.2 默认参数
给参数指定默认值,调用时可以省略:
def greet(name, greeting="你好"):
print(f"{greeting},{name}")
greet("小红")# 你好,小红
greet("小红", "早上好")# 早上好,小红
默认参数必须放在位置参数后面。
3.3 关键字参数
调用时写明参数名,可以改变顺序:
info(age=18, name="小明")# 输出:小明 18岁
4. 变量的作用域
在函数内部赋值的变量是局部变量,外部无法访问;函数外部的变量是全局变量,函数内可以读取但不能直接修改(除非用 global 声明,但不推荐滥用)。
x = 10# 全局变量
def test():
y = 5# 局部变量
print(x)# 可以读取全局变量
# x = 20# 这会在函数内创建一个新的局部变量,不会修改全局的x
test()
# print(y)# 报错,y不存在
5. 小实战:计算器函数
把常用运算封装成函数,方便重复使用:
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
return "除数不能为0"
return a / b
# 调用演示
print(add(10, 5))# 15
print(divide(10, 0))# 除数不能为0
# 用一个字典映射运算符到函数
operations = {
"+": add,
"-": subtract,
"*": multiply,
"/": divide
}
op = input("输入运算符(+ - * /):")
a = float(input("第一个数:"))
b = float(input("第二个数:"))
result = operations[op](a, b)
print("结果:", result)
这个例子展示了函数作为“第一类对象”的特性——可以存储在变量或字典中,使代码非常灵活。
6. 常见错误
忘记调用函数:只写 add 不写括号,不会执行函数体,只是引用函数对象。
参数数量不匹配:调用时多传或少传参数都会报错。
返回值未使用:add(3,5) 返回了8但没有赋值给任何变量,8就被丢弃了。
函数内部修改全局变量陷阱:如果函数内部有 x = x + 1,Python 会认为左边是局部变量,右边引用未定义的局部变量而报错。要修改全局变量需用 global x,但更推荐将需要修改的值作为参数传入并返回新值。
相关推荐
Python速成7|数据类型:字典
Python基础入门6|字符串:文本处理的利器
End