名字的范围
mark 把 cups 设成 2,并写出 cups。这个名字只在 mark() 进行时存在。mark() 一结束,就不能再使用 cups。
print 缩进四个空格,所以它属于 mark。mark() 和 def 同一列。
def mark():
cups = 2
print(cups)
mark()
屏幕上是 2。这是 print 在 mark() 进行时写的。如果在后面加上 print(cups),程序会停下。不是缩进的问题。cups 已经不在了。
drink = "tea" 写在 def 上面。如果 mark 自己不设 drink,只执行 print(drink),就会出现两行 tea。两行用的是同一个 drink。
在 mark 里写 drink = "water",不会改掉函数上面的 drink。water 只在 mark() 进行时有效。
drink = "tea"
def mark():
drink = "water"
print(drink)
mark()
print(drink)
先出现 water,再出现 tea。water 来自缩进的 print。tea 来自和 def 同一列的 print。函数上面的 drink 仍是 tea。
两处容易搞错
在第一个程序下面写 print(cups),程序会停下。这个名字只有 mark 有过。第二个程序的第二行是 tea,不是 water。如果去掉 mark 里的 drink = "water",会出两行 tea,程序也会走完。
下一页把函数写成一行。这里只看一个名字能用到哪里。
先看再答
- 第一个程序写出什么?
- 在 mark() 下面加上 print(cups)。程序会走完吗?
- 第二个程序先写什么,后写什么?
- 去掉 mark 里的 drink = "water"。结果是什么?
- drink 在哪里等于 water?
名字用到哪里
第一个程序写出 2,因为 mark 写出了 cups。之后 cups 不再是一个名字,print(cups) 会让程序停下。mark 只读 drink、自己不设它,就会出两行 tea。mark 里有 drink = "water" 时,先是 water,后是 tea。上面仍是 tea。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部