欢迎回来!🎉 这节课我们要学习函数(function)—— 它能让我们的代码更有条理、可以重复使用,就像魔法一样!
前三节课我们学会了: - 变量和基本数据类型 - 条件判断和循环 - 列表和字典
这节课我们要学习如何把代码打包成函数,让它更强大!
函数就是一段可以重复使用的代码,就像一个机器——你给它输入,它给你输出。
✅ 避免重复:同样的代码不用写很多次
✅ 更易维护:修改一处,所有地方都生效
✅ 更易理解:给代码起个好名字,一看就知道是做什么的
✅ 模块化:把大问题拆成小问题
# 定义函数
def say_hello():
print("你好!")
print("欢迎来到Python的世界!")
# 调用函数
say_hello()
say_hello() # 可以调用多次
运行结果:
你好!
欢迎来到Python的世界!
你好!
欢迎来到Python的世界!
# 参数就是函数的输入
def greet(name):
print(f"你好,{name}!")
greet("小明")
greet("小红")
greet("小刚")
运行结果:
你好,小明!
你好,小红!
你好,小刚!
def introduce(name, age, city):
print(f"我叫{name},今年{age}岁,来自{city}。")
introduce("小明", 18, "北京")
introduce("小红", 17, "上海")
运行结果:
我叫小明,今年18岁,来自北京。
我叫小红,今年17岁,来自上海。
函数可以返回一个结果,就像机器生产出产品一样。
def add(a, b):
result = a + b
return result # 返回结果
sum_result = add(3, 5)
print(f"3 + 5 = {sum_result}")
# 也可以直接使用返回值
print(f"10 + 20 = {add(10, 20)}")
运行结果:
3 + 5 = 8
10 + 20 = 30
def calculate(a, b):
sum_ab = a + b
diff_ab = a - b
product_ab = a * b
quotient_ab = a / b
return sum_ab, diff_ab, product_ab, quotient_ab
# 接收多个返回值
s, d, p, q = calculate(10, 3)
print(f"和:{s}")
print(f"差:{d}")
print(f"积:{p}")
print(f"商:{q}")
可以给参数设置默认值,调用时如果不传参数就用默认值。
def greet(name, greeting="你好"):
print(f"{greeting},{name}!")
# 使用默认问候语
greet("小明")
# 使用自定义问候语
greet("小红", "早上好")
greet("小刚", "晚上好")
运行结果:
你好,小明!
早上好,小红!
晚上好,小刚!
调用函数时,可以指定参数名,这样顺序就不重要了。
def introduce(name, age, city):
print(f"我叫{name},今年{age}岁,来自{city}。")
# 按顺序传参数
introduce("小明", 18, "北京")
# 用关键字参数,顺序可以随便
introduce(age=17, city="上海", name="小红")
有时候我们不知道会传多少个参数,这时候可以用可变参数。
def add_all(*numbers):
total = 0
for num in numbers:
total += num
return total
print(add_all(1, 2)) # 3
print(add_all(1, 2, 3, 4, 5)) # 15
print(add_all(10, 20, 30)) # 60
def print_info(**info):
for key, value in info.items():
print(f"{key}: {value}")
print_info(name="小明", age=18, city="北京")
print("---")
print_info(course="数学", score=90, grade="高三")
运行结果:
name: 小明
age: 18
city: 北京
---
course: 数学
score: 90
grade: 高三
变量有它的作用范围,在函数内部定义的变量叫局部变量,在函数外部定义的叫全局变量。
def my_function():
x = 10 # 这是局部变量,只在函数内部有效
print(f"函数内部:x = {x}")
my_function()
# print(x) # 这行会报错,因为x在函数外部不存在
x = 100 # 这是全局变量
def my_function():
print(f"函数内部读取全局变量:x = {x}")
my_function()
print(f"函数外部:x = {x}")
x = 100
def my_function():
global x # 声明要使用全局变量
x = 200 # 修改全局变量
print(f"函数内部修改后:x = {x}")
my_function()
print(f"函数外部:x = {x}")
Python自带了很多有用的函数,我们可以直接使用!
print(abs(-10)) # 绝对值:10
print(round(3.14159, 2)) # 四舍五入:3.14
print(max(1, 5, 3, 9, 2)) # 最大值:9
print(min(1, 5, 3, 9, 2)) # 最小值:1
print(sum([1, 2, 3, 4, 5])) # 求和:15
print(int("123")) # 字符串转整数:123
print(float("3.14")) # 字符串转浮点数:3.14
print(str(123)) # 数字转字符串:"123"
print(bool(1)) # 转布尔值:True
print(bool(0)) # 转布尔值:False
print(len("Hello")) # 长度:5
print(len([1, 2, 3])) # 列表长度:3
print(sorted([3, 1, 4, 2])) # 排序:[1, 2, 3, 4]
print(list(range(5))) # 生成列表:[0, 1, 2, 3, 4]
让我们创建一些实用的函数!
import math
# 1. 计算圆的面积
def circle_area(radius):
"""计算圆的面积"""
return math.pi * radius ** 2
# 2. 判断是不是质数
def is_prime(n):
"""判断一个数是不是质数"""
if n <= 1:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
# 3. 斐波那契数列
def fibonacci(n):
"""生成前n个斐波那契数"""
fib_list = []
a, b = 0, 1
for _ in range(n):
fib_list.append(b)
a, b = b, a + b
return fib_list
# 4. 统计文本中的词频
def word_count(text):
"""统计文本中每个词出现的次数"""
words = text.lower().split()
count_dict = {}
for word in words:
# 去掉标点符号
word = word.strip('.,!?()[]{}"\'')
if word:
count_dict[word] = count_dict.get(word, 0) + 1
return count_dict
# 测试这些函数
print("=== 测试函数 ===")
# 测试圆面积
r = 5
print(f"半径为{r}的圆面积:{circle_area(r):.2f}")
# 测试质数
test_numbers = [2, 3, 4, 7, 10, 13, 100]
for num in test_numbers:
print(f"{num}是质数吗?{is_prime(num)}")
# 测试斐波那契
print(f"前10个斐波那契数:{fibonacci(10)}")
# 测试词频
text = "Hello hello world! This is a test. Hello again!"
print(f"\n词频统计:{word_count(text)}")
今天我们学会了:
✅ 什么是函数:可重复使用的代码块
✅ 定义和调用函数:def关键字
✅ 参数:位置参数、关键字参数、默认值
✅ 返回值:return关键字,可以返回多个值
✅ 可变参数:args和kwargs
✅ 变量作用域:局部变量和全局变量
✅ 内置函数*:Python自带的实用函数
下节课预告:我们会学习文件操作,如何读取和写入文件,让程序可以保存数据!
继续加油!你已经掌握了Python编程的核心技能!💪