我写了这个小程序来打印乘法表。我理解了局部变量,然后在每个函数中添加了两个具有相同名称的变量。但它正在运行,我没有得到任何具有相同名称错误的2个变量。请帮我理解这个想法 -
def printMultiples(n):
i = 1
i = 5
while i <= 10:
print n*i, '\t',
i = i + 1
print
def printMultTable():
i = 1
i = 10
while i <= 10:
printMultiples(i)
i = i + 1
答案 0 :(得分:1)
变量i
在函数运行后立即定义,它不会等到行
i = 1
i = 10
正在运行。编译代码时,Python会查看函数中分配的每个变量,并为未声明为global
或nonlocal
的任何变量创建定义。
每条i =
行只会更改该值,但不会再次定义它。
答案 1 :(得分:1)
以下是您脚本中发生的事情:
i = 1
创建变量i
并将值1分配给它
i = 5
将i
中的值替换为5
while i <= 10:
开始你的循环
print n*i, '\t',
循环的第一次迭代将打印n * 5和制表符
i = i + 1
增加一个
答案 2 :(得分:1)
没有两个具有相同名称的变量,有一个变量被分配给两次。
i = 1 # i is declared and assigned to 1
i = 5 # the same i is reassigned to 5
答案 3 :(得分:1)
你实际上并没有创建两个具有相同名称的变量;您的第二个i =
将i
重新分配给新值,与i = i + 1
相同,将i
设置为i + 1
的值。
顺便提一下,还有更多的Pythonic方法可以处理固定次数的循环:
for i in range(1, 11):
printMultiples(i)
对于从1开始且小于11的值,这将执行printMultiples
。
答案 4 :(得分:1)
在python中,符号只是变量的名称。它们不像C / C ++那样分配内存。所以你所做的只是在每种情况下将值重新分配给'i'。