从零开始学Python(五):函数

从零开始学Python(五):函数

本系列教程将带你从零开始学习Python编程,无需任何编程基础。

什么是函数?

想象一下,你在写一篇很长的文章,每次想表达”Python是一种编程语言”时,都需要完整写出来。如果有一个快捷方式,比如”语言介绍”,每次只需要输入这几个字,就会自动展开成完整描述,是不是很方便?

函数就是编程中的这种”快捷方式”。它是一段可以重复使用的代码块,能够提高代码的可读性、可维护性和重用性。

内置函数

Python提供了很多内置函数,我们已经用过一些。比如打印函数print()、类型转换函数int()和float()、数学函数max()和len()等。这些函数开箱即用,无需定义。

定义函数

使用 def 关键字定义函数。基本语法包括:def关键字开头,后面是函数名和圆括号,圆括号内可以放参数,最后以冒号结尾。函数体要缩进,通常使用三引号字符串说明函数的作用。

函数命名建议使用小写字母和下划线,使用动词或动词短语,名字要能描述函数的功能。

函数参数

参数让函数能够接收输入数据。函数可以定义单个参数或多个参数,调用时参数的顺序必须和定义时一致。可以为参数设置默认值,调用时可以不提供该参数。默认参数必须放在非默认参数之后。

返回值

函数可以使用 return 语句返回一个值。Python函数可以返回多个值,实际上是返回一个元组。如果函数没有 return 语句,它返回 None。返回值后的代码不会执行,因为return会立即结束函数。

变量作用域

作用域决定了变量在代码中的可见范围。在函数内部定义的变量是局部变量,只能在函数内部访问。在函数外部定义的变量是全局变量,可以在整个程序中访问。如果在函数内部需要修改全局变量,使用 global 关键字声明。

实战示例:温度转换器

让我们创建一个实用的温度转换程序,可以在摄氏度和华氏度之间相互转换。

创建文件 temperature_converter.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 温度转换器

def celsius_to_fahrenheit(celsius):
"""摄氏度转华氏度"""
fahrenheit = (celsius * 9/5) + 32
return fahrenheit

def fahrenheit_to_celsius(fahrenheit):
"""华氏度转摄氏度"""
celsius = (fahrenheit - 32) * 5/9
return celsius

def display_menu():
"""显示菜单"""
print("=" * 40)
print(" 温度转换器")
print("=" * 40)
print("1. 摄氏度 → 华氏度")
print("2. 华氏度 → 摄氏度")
print("0. 退出")
print("=" * 40)

def main():
"""主程序"""
while True:
display_menu()
choice = input("请选择操作(0-2):")

if choice == "0":
print("感谢使用,再见!")
break
elif choice == "1":
temp = float(input("请输入摄氏度温度:"))
result = celsius_to_fahrenheit(temp)
print(f"{temp}°C = {result:.2f}°F")
elif choice == "2":
temp = float(input("请输入华氏度温度:"))
result = fahrenheit_to_celsius(temp)
print(f"{temp}°F = {result:.2f}°C")
else:
print("无效选择,请重试")
print()

# 启动程序
if __name__ == "__main__":
main()

这个程序将功能分解成多个函数,每个函数负责一个特定任务。celsius_to_fahrenheit() 和 fahrenheit_to_celsius() 执行实际的温度转换,display_menu() 显示用户界面,main() 是主程序循环,处理用户输入和调用其他函数。

常见错误

定义函数时容易忘记冒号,或者调用函数时忘记括号。在return语句后的代码永远不会执行,因为return会立即结束函数。修改全局变量时如果忘记使用global关键字会报错。


系列导航