为了测试Python中全局变量的使用,我们试图撰写以下几个例子进行说明:
#第一例子,是用来验证一个最基础的全局变量与局部变量的区别,内容如下:
#-*- coding: cp936 -*-
global a
def a():
a=2
a+=1
print a
#注意这里没有使用return a
def do():
a()
#并把a方法的value(a)进行运算
a+=1
#我们写一个main函数来调用这个do的过程
if __name__ = "__main__":
do()
print a
#我们在Python(idle)中,运行程序F5
#程序出现调试错误:local variable 'a' referenced before assignment
#由此,我们可以看出局部变量在方法中是不能传递的,为了能够使用几个方法返回的
#值,并在do()这个函数中进行运算,我们引入了全局变量global a,现在我们对以上
#的程序做出进行以下调整
#================================ RESTART ================================
global a
def a():
#这里我们引用设置的全局变量a,写在函数中
global a
a = 2
a += 1
#预期的a = 3
print a
def do():
#这里由于我们需要对定义的全局变量进行重新计算,我们这次引用a
global a
a()
a+=1
if __name__ = "__main__":
do()
#如果我们需要在最后的main函数中,输出由do()函数最终计算的变量a,则我们必须在这里在此引用这个变量a
global a
#预期的值4
print a
#现在我们再次运行程序这时,我们看到的数值结果与预期结果一致,为3,4
#================================ RESTART ================================
#总结:全局变量的使用是为了使我们在一个类或一个函数中使用由函数返回的变量,
#并进行复杂的计算过程而使用。而对于一个函数的局部变量,则只在一个函数内部是
#可使用的,而如果需要跨越不同的函数或者类则需要在基础函数中返回一个该值,在
#下一个函数中运行其方法才能获取该值进行计算,如果程序不复杂在一个类中可以解决
#全局变量会为我们节省不少的时间,以及内存空间。
分享到:
相关推荐
目录python3基础篇(九)——命名空间和作用域1 命名空间1.1 命名空间分类1.2 命名空间的查找顺序2 作用域2.1 作用域分类2.2 作用域的查找顺序2.3 global和nonlocal关键字2.3.1 global2.3.1.1 global声明全局变量2.3...
使用`global`关键字可以声明全局变量。 9. 引用与深浅拷贝:Python中的变量实际上是对象的引用。对于不可变对象(如整数、浮点数、字符串),赋值不会创建新对象;而对于可变对象(如列表、字典),赋值会产生新的...
如果在函数内修改全局变量,必须添加 `global` 关键字。 * 局部变量:在函数内定义的变量为局部变量。局部变量是在函数内定义的变量,在函数体外是无效的。 例如: ``` a = 1 def sum(): a = 3 # 这里函数外的 a ...
在函数之外定义的变量称为全局变量,全局变量在整个程序范围内有效。;当内部作用域想要使用外部作用域的变量时,可使用global和nonlocal关键字。;;2.nonlocal关键字;关键字lambda用于定义一种特殊的函数——匿名...
若要在函数内部修改全局变量,需使用`global`关键字,如`global b = 20`。不过,需要注意的是,全局变量在函数内部赋值后,若在函数内部未被引用,其值不会改变,如`b`在调用`fun()`后仍然是`None`。 **7.1 模块...
但需要注意的是,在函数内部如果直接赋值给全局变量,Python会创建一个新的局部变量,除非使用`global`关键字声明: ```python x = 10 # 全局变量x def func(): global x # 声明x为全局变量 x = 20 # 修改全局变量...
**知识点**: 当尝试在函数内部修改全局变量`x`时,必须明确声明`x`为全局变量,否则Python会认为`x`是一个新的局部变量,导致未定义的错误。正确的写法应该是: ```python def change(a): global x x += 1 print(x...
- **使用 global 关键字**:如果需要在函数内部修改全局变量,可以使用 `global` 关键字。 以上是《a byte of python》这本经典 Python 入门书籍中的核心知识点概览。通过这些内容的学习,读者不仅能够掌握 Python ...
3. `global`关键字:在函数内修改全局变量。 4. `nonlocal`关键字:在嵌套函数中引用或修改外层非全局变量。 六、闭包 当一个内嵌函数引用了其外部函数的局部变量,并且外部函数已经返回时,就形成了闭包。闭包可以...
- 使用`global`关键字声明全局变量。 - 全局变量在整个程序中都可见。 - **默认参数值**: - 函数定义时可以为参数设置默认值。 - 调用函数时若未提供该参数,则使用默认值。 - **关键参数**: - 调用函数时...
这意味着在函数内部对全局变量的赋值将自动创建一个全局变量,除非使用`global`关键字明确声明。 2. **数据类(Data Classes)**:在Python 3.7中,新增了`dataclass`装饰器,简化了创建包含默认值和比较方法的数据...
- **修改规则**:全局变量可以在函数内部被读取,也可以被修改,但若要在函数内部修改全局变量,需要使用`global`关键字进行声明。 - **变量命名冲突**:当局部变量与全局变量同名时,局部变量在函数内部会覆盖全局...
- 用于声明全局变量。 - 示例: ```python global_var = 0 def increment(): global global_var global_var += 1 ``` - **默认参数值**: - 参数可以设置默认值。 - 示例: ```python def greet(name=...
- 使用`global`关键字声明后可在函数内部修改全局变量。 - **默认参数值**: - 参数可以设置默认值,在没有传递实参时使用该默认值。 - **关键参数**: - 在调用函数时可以通过名称显式地指定参数值; - 使得...
但直接在函数内部修改全局变量需要使用`global`关键字声明。 - **函数作用域**:每次函数调用都会创建一个新的作用域,调用结束后销毁。在函数内部定义的变量是局部变量,只在该函数内部可见。尝试在函数外部访问...
因此,`PyThreadState`结构体的指针作为一个全局变量被使用。 #### 四、C++ 中调用 Python API 的注意事项 - **显式管理线程状态**:在C++代码中调用Python API时,开发者需要显式地管理`PyThreadState`,包括获取...
内部函数顾名思义就是在函数内部...(3)在内部函数中,修改全局变量需要加 global关键字声明;修改外部函数的不可变类型变量需要加 nonlocal 关键字声明; num01 = 1 def fun01(): num02 = 2 s = 'apple' lst =
Python虚拟机的另一个重要特性是其全局解释器锁(GIL,Global Interpreter Lock)。由于Python解释器是单线程的,GIL确保了在任何时候只有一个线程在执行字节码,这在多线程环境下可能会限制性能。然而,Python通过...