正在加载...

名字的范围

mark 把 cups 设成 2,并写出 cups。这个名字只在 mark() 进行时存在。mark() 一结束,就不能再使用 cups。

print 缩进四个空格,所以它属于 mark。mark() 和 def 同一列。

cups 只在 mark() 里

python
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() 进行时有效。

water 在 mark 里,上面仍是 tea

python
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,程序也会走完。

下一页把函数写成一行。这里只看一个名字能用到哪里。

先看再答

  1. 第一个程序写出什么?
  2. 在 mark() 下面加上 print(cups)。程序会走完吗?
  3. 第二个程序先写什么,后写什么?
  4. 去掉 mark 里的 drink = "water"。结果是什么?
  5. drink 在哪里等于 water?

名字用到哪里

第一个程序写出 2,因为 mark 写出了 cups。之后 cups 不再是一个名字,print(cups) 会让程序停下。mark 只读 drink、自己不设它,就会出两行 tea。mark 里有 drink = "water" 时,先是 water,后是 tea。上面仍是 tea。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
6
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部