內功篇-Day37 局部变量与全局变量(作用域)

0 次阅读 2026-10-19 08:34

📖 知识点

1. 全局变量

定义在函数外面的变量,整个文件都能读取。

# 全局变量
name = "张三"

def say_hello():
    # 函数内可以读取全局变量
    print(name)

say_hello()
print(name)

2. 局部变量

定义在函数内部的变量,仅函数内部可用,函数执行结束,变量销毁,外部访问会报错。

def test():
    # 局部变量
    num = 100
    print(num)

test()
# print(num)  # 报错!外部无法访问局部变量

3. global 关键字

如果想在函数内部修改全局变量,需要先用 global 声明。

⚠️ 不写 global,函数内新建同名变量,只会创建一个局部变量,不会修改全局变量。

count = 0 # 全局变量

def add_count():
    global count
    count = count + 1

add_count()
print(count) # 输出1

核心口诀

  • 函数内读变量:优先找局部,局部没有再找全局

  • 函数内修改全局变量:必须 global 声明

  • 同名变量:局部变量会 “遮蔽” 全局变量

⚔️ Kata 实战任务

需求:

  1. 定义全局变量 money = 100,代表初始金币

  2. 写函数 earn_money(),使用 global 修改全局变量,每次调用金币增加 50

  3. 调用 earn_money () 2 次

  4. 最后打印最终金币数量

参考代码

# 全局变量
money = 100

def earn_money():
    global money
    money += 50

earn_money()
earn_money()
print(f"当前金币:{money}")

运行输出:

当前金币:200

🧠 思考题

  1. 如果去掉代码里的 global money,运行会发生什么?

  2. 函数内部和外部写了同名变量,它们是同一个变量吗?