定义相同的变量两次/帮助理解

时间:2018-01-15 09:24:41

标签: python

我在Codeacademy学习练习中制作了这个简单的Pyglatin翻译器。代码工作正常,但需要帮助理解原因。

变量new_word在if语句中定义了两次。代码如何知道打印new_word的第二个定义而不是第一个定义。看起来像if语句的最后两行更像是 -

final_word = new_word[1:len(new_word)]
print final_word

以下完整的工作代码 -

pyg = 'ay'

original = raw_input('Enter a word:')

if len(original) > 0 and original.isalpha():
  word = original.lower()
  first = word[0]
  new_word = word + first + pyg
  new_word = new_word[1:len(new_word)]
  print new_word
else:
    print 'empty'

您可以继续重新定义相同的变量吗?它总是会采用最后的定义吗?

2 个答案:

答案 0 :(得分:3)

这就是imperative programming的工作方式。它说new_word的值设置为X.然后将new_word的值设置为Y. 每个语句都执行特定的操作,并且语句逐个跟随,逐个修改程序的状态。

你可以将它与declarative programming之类的东西进行对比,在https://stackoverflow.com/a/45987189/3071070中你只需要定义一次,然后计算机会计算出执行内容所需的顺序,以达到你所描述的结果。

答案 1 :(得分:1)

在此行中,您将wordfirstpyg的串联分配给new_word

  new_word = word + first + pyg

之后,在这一行中,你切掉了第一个字符:

  new_word = new_word[1:len(new_word)]

你确实两次使用相同的var new_word, 并且最新的值(第一个字符被切断)覆盖第一个(第一个字符仍然存在)。

B.T.W。第二行是不必要的复杂,也可能是:

  new_word = new_word[1:]

也许有助于意识到程序变量不是数学变量,并且程序中的=不是数学=。

a = 3不是一个意思,即a等于3。 这是一个将数字3放入标记为a的内存位置的操作。 所以你总能在那里放些东西。

使用的早期语言:=(变为)而不是=(是),而某些语言仍使用< - 来表示此分配操作。