Python中的变量范围
Python语言中的变量是各种数据值和数据结构的存储单位。当一个变量被分配给任何Python对象时,它就指向那个对象,因为它们是内存位置中那个特定对象的引用,或者说是一个指针。Python编程语言不是 “静态类型”,与其他语言如C/C++/JAVA不同。变量在使用前不需要声明其类型或初始值。当一个变量最初被赋予一个值时,它被认为已经形成。
代码
输出:
变量的范围
一个Python变量的范围指的是我们可以找到它的地方,如果有必要,可以访问它。
全局和局部变量
全局变量是指我们在任何函数之外声明和定义的变量,但不是专门针对任何函数的。程序的任何部分都可以使用它们。
代码
输出:
假设一个变量被定义在该函数的局部范围内,并且与全局变量的名称相同。在这种情况下,它将只显示在该特定函数内提供给该变量的值,而不是在全局范围内分配的值。
代码
输出:
在定义函数func()之前,变量’a’被分配到一个字符串中,该字符串指出:”这是在全局范围内分配的。”。函数func()的print(a)语句将首先在其局部范围内搜索变量’a’。由于已经有一个变量’a’分配给了一个不同的字符串,该函数将打印这个变量的值,而不会进入全局范围。在这种情况下,该函数不会使用全局范围内的变量’a’的值。
下一个问题是,在函数’func()’中修改变量’a’的值会有什么结果。它是否也会对全局变量’a’产生影响?下面的代码片断用来测试。
代码
输出:
我们必须使用Python全局关键字来使前面的程序发挥作用。只有在进行赋值或改变变量值时,我们才需要在函数内部使用Python global关键字。在显示和访问存在于全局范围内的变量时,不需要使用 global 关键字。为什么呢?因为在 func() 中对变量 ‘a’ 的赋值,Python “假定 “我们想要访问局部变量,这就是为什么最初的 print 命令会返回局部范围内的变量值。如果一个变量在函数中被修改或赋值,而没有被定义为全局变量,它就被认为是一个局部变量。下面的例子演示了如何使用 global 关键字来指示 Python 解释器,我们希望修改全局变量。
代码
输出:
总结全局局部变量的范围。
代码
输出:
非本地关键词
在Python中,嵌套函数是用Python非本地关键字来处理的。这个关键字的作用类似于全局关键字,只是在嵌套函数的情况下,它定义了一个变量,指的是外层包围函数中分配的变量,而不是全局变量。
代码
输出: