2.3 变量

从第1节一开始,你已经访问过名为text1, text2 等的文本。像这样只输入简短的名字来引用一本 250,000 字的书节省了很多打字时间。一般情况下,我们可以对任何我们关心的计算命名。我们在前面的小节中已经这样做了,例如定义一个变量变量 sent1,如下所示:

  1. >>> sent1 = ['Call', 'me', 'Ishmael', '.']
  2. >>>

这样的语句形式是: 变量 = 表达式 。Python 将计算右边的表达式把结果保存在变量中。这个过程叫做赋值。它并不产生任何输出,你必须在新的一行输入变量的名字来检查它的内容。等号可能会有些误解,因为信息是从右边流到左边的。你把它想象成一个左箭头可能会有帮助。变量的名字可以是任何你喜欢的名字,如my_sent, sentence, xyzzy。变量必须以字母开头,可以包含数字和下划线。下面是变量和赋值的一些例子:

  1. >>> my_sent = ['Bravely', 'bold', 'Sir', 'Robin', ',', 'rode',
  2. ... 'forth', 'from', 'Camelot', '.']
  3. >>> noun_phrase = my_sent[1:4]
  4. >>> noun_phrase
  5. ['bold', 'Sir', 'Robin']
  6. >>> wOrDs = sorted(noun_phrase)
  7. >>> wOrDs
  8. ['Robin', 'Sir', 'bold']
  9. >>>

请记住,排序表中大写字母出现在小写字母之前。

注意

请注意,在前面的例子中,我们将my_sent 的定义分成两行。Python 表达式可以被分割成多行,只要它出现在任何一种括号内。Python 使用”...“提示符表示期望更多的输入。在这些连续的行中有多少缩进都没有关系,只是加入缩进通常会便于阅读。

最好是选择有意义的变量名,它能提醒你代码的含义,也帮助别人读懂你的 Python 代码。Python 并不会理解这些名称的意义;它只是盲目的服从你的指令,如果你输入一些令人困惑的代码,例如one = 'two'two = 3,它也不会反对。唯一的限制是变量名不能是 Python 的保留字,如def, if, not, 和import。如果你使用了保留字,Python 会产生一个语法错误:

  1. >>> not = 'Camelot'
  2. File "<stdin>", line 1
  3. not = 'Camelot'
  4. ^
  5. SyntaxError: invalid syntax
  6. >>>

我们将经常使用变量来保存计算的中间步骤,尤其是当这样做使代码更容易读懂时。因此,len(set(text1)) 也可以写作:

  1. >>> vocab = set(text1)
  2. >>> vocab_size = len(vocab)
  3. >>> vocab_size
  4. 19317
  5. >>>

小心!

为 Python 变量选择名称(标识符)时请注意。首先,应该以字母开始,后面跟数字(09)或字母。因此,abc23 是好的,但是23abc 会导致一个语法错误。名称是大小写敏感的,这意味着myVarmyvar 是不同的变量。变量名不能包含空格,但可以用下划线把单词分开,例如my_var。注意不要插入连字符来代替下划线:my-var 不对,因为 Python 会把”-“解释为减号。