消失的黄金
Hoppy 正在学习“点石成金”之术。他在炼金房(函数)里成功制造了一块黄金。
但是当他走出房间想炫耀时,黄金却凭空消失了!
def alchemy_room():
gold = "一块金砖"
print("房间里有:" + gold) # 成功
alchemy_room()
# print("外面有:" + gold) # 报错!NameError: name 'gold' is not defined魔法气泡 (Scope)
每一个函数就像一个 气泡。在气泡里创造的东西(变量),只能在气泡里存活。一旦函数结束,气泡破裂,所有东西都会消散。
这叫做 局部变量 (Local Variable)。
如果想把东西带出气泡,你必须显式地 导出 (Return) 它。
你的任务
1
错误的尝试
运行现有的代码,你会看到一个报错。Hoppy 试图打印那个根本不存在的 secret。
2
修复魔法
修改 create_secret 函数,在最后添加 return secret。
3
接住结果
在调用函数时,用一个变量接住它:my_secret = create_secret()。
4
再次展示
打印 my_secret,这次它应该能成功显示了。
世界常数
如果在函数外面定义的变量,叫做 全局变量 (Global Variable)。它们就像世界的常数(比如重力),在任何地方都能看到。
打破气泡
如果你 真的 需要在函数内部修改全局变量,你必须使用 global 关键字(例如 global x)。但要小心!这就像在你的气泡上戳洞——洞太多船会沉的。
参考答案点击展开点击收起
点击展开点击收起
参考答案:
def create_secret():
secret = "Hoppy loves coding"
return secret
my_secret = create_secret()
print("秘密是:" + my_secret)高级技巧想更进一步?点击展开点击收起
F. 现实桥接 (Bridge to Reality)
- 气泡 = 作用域 (Scope)。
- 局部变量 = Local Variable。
- 全局变量 = Global Variable。
- 为什么要有作用域?为了防止混乱!如果所有变量都在全局,那如果两个人(或两个函数)都用了一个叫
x的变量,就会互相覆盖,导致灾难。Scope 就像每个人的私有房间,互不干扰。
Loading...
终端输出
Terminal
Ready to run...