Python中的局部变量

时间:2012-08-19 00:25:41

标签: python

我写了这个小程序来打印乘法表。我理解了局部变量,然后在每个函数中添加了两个具有相同名称的变量。但它正在运行,我没有得到任何具有相同名称错误的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

5 个答案:

答案 0 :(得分:1)

变量i在函数运行后立即定义,它不会等到行

i = 1
i = 10

正在运行。编译代码时,Python会查看函数中分配的每个变量,并为未声明为globalnonlocal的任何变量创建定义。

每条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'。