标签: 变量的作用域

  • python变量的作用域

    在编程中,通常变量是有特定的起作用的范围的。这个范围通常包括了:全局范围、指定范围。

    全局范围,顾名思义,在整个程序中都有效;

    指定范围,是在特定的函数中起作用。

    name = '张三'
    def get_a_name():
        name = input('What is your name? ')
    get_a_name()
    print('你好', name)
    

    首先,我们定义了一个变量name,让它的值为张三。接下来,我们定义了一个函数,在函数中,我们要求用户输入一个名字赋值给name变量。如果这个name变量不在函数中,那么结果是值会修改为用户提供的那个,然而,由于它在函数里面,默认情况下,函数里面的变量和全局变量是不同的两个变量。可以理解为一个是name,另一个是get_a_name.name,因此,在函数里面修改name并不会对全局变量name造成变化。结果如下:

    What is your name? 李四
    你好 张三

    默认情况下,函数中的函数属于私有函数,只在函数中起作用,但是我们也是可以修改的,只是不常用。

    name = '张三'
    
    def get_a_name():
        global name
        name = input('What is your name? ')
    
    get_a_name()
    print('你好', name)
    

    这里,我们用关键字global来确定name是全局变量,然后name的改变和前面定义的变量name就保持一致了。

    What is your name? 王五
    你好 王五