← 返回首页 | ← 返回教程列表

Python学习教程 - 第四课:函数,代码的魔法师!

欢迎回来!🎉 这节课我们要学习函数(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岁,来自上海。

第三个知识点:返回值(return)

函数可以返回一个结果,就像机器生产出产品一样。

简单的返回值

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="小红")

第五个知识点:可变参数

有时候我们不知道会传多少个参数,这时候可以用可变参数。

*args:接收任意数量的位置参数

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

**kwargs:接收任意数量的关键字参数

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自带的实用函数


课后练习 ✏️

  1. 写一个函数,计算矩形的面积和周长
  2. 写一个函数,判断一个年份是不是闰年
  3. 写一个函数,接收一个列表,返回列表中的最大值、最小值和平均值
  4. 写一个函数,实现简单的计算器功能(加、减、乘、除)
  5. 写一个函数,生成指定长度的随机密码(包含大小写字母和数字)

下节课预告:我们会学习文件操作,如何读取和写入文件,让程序可以保存数据!

继续加油!你已经掌握了Python编程的核心技能!💪