Python 全局变量扫盲

Python没有真正的全局变量,在Java和C++中,全局变量则是程序级别的,站在它们的角度,那么python就是没有全局变量,而在python的角度,是有全局变量,python提供global关键字,可以修改全局变量,在python中的全局变量只是针对当前python文件/模块所定义的,python文件就是一个模块,独立的命名空间,模块内定义的变量就只属于该命名空间,so,python没有真正的全局变量,全局变量也只是文件级别。

所以Python的全局变量是相对而言的

例子:
test.py

a = 1

t1.py

import sys
import test # 导入test模块

a = 1 # 声明一个变量

def func1():
    global a # 引用当前命名空间的全局变量
    a += 1

def func2():
    test.a += 1  # 引用test模块命名空间的变量

def func3():
    # print(sys.modules) # 记录当前文件导入的所有模块
    module = sys.modules[‘test‘] # 二次引用已导入的test模块
    module.a += 1       # 引用test模块命名空间的变量

func1()
func2()
func3()

print(a)        # 结果:2
print(test.a)   # 结果:3

原文地址:https://blog.51cto.com/12643266/2429895

时间: 2024-09-28 11:47:09

Python 全局变量扫盲的相关文章

python全局变量

来源:http://andylin02.iteye.com/blog/841632 python全局变量 1. 函数是可以访问全部变量的 a = 9527 def modify() :print a if __name__ == ‘__main__’ :modify()执行结果,就是打印出 9527 2. 如果在函数里 对全局变量进行修改,就会报错 #!/usr/bin/env python# -*- coding: utf-8 -*- a = 9527 def modify() :a += 1

Python全局变量和局部变量

python中,对于变量作用域的规定有些不一样.在诸如C/C++.java等编程语言中,默认在函数的内部是可以直接访问在函数外定义的全局变量的,但是这一点在python中就会有问题,下面是一个例子. test.py: #!/usr/bin/python COUNT=1 def func(): COUNT = COUNT + +1 func() Python test.py,会运行报错: Traceback (most recent call last): File "test.py",

《手把手教你》系列进阶篇之2-python+ selenium自动化测试 - python基础扫盲(详细教程)

1. 简介 这篇文章主要是分享讲解一下,如何封装自己用到的方法和类.以便方便自己和别人的调用,这样就可以避免重复地再造轮子. 封装(Encapsulation)是面向对象的三大特征之一(另外两个是继承和多态),它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 就好比使用计算机,我们只需要使用计算机提供的键盘,就可以达到操作计算机的目的,至于在敲击键盘时计算机内部是如何工作,我们根本不需要知道. 封装机制保证了类内部

python全局变量的使用

如果要给全局变量在一个函数里赋值,必须使用global语句. global VarName的表达式会告诉Python, VarName是一个全局变量,这样Python就不会在局部命名空间里寻找这个变量了. globals()和locals()函数 根据调用地方的不同,globals()和locals()函数可被用来返回全局和局部命名空间里的名字. 如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名. 如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字

python 全局变量的理解(global关键字)

先看代码: 代码一: #!/usr/bin/python #coding:utf8 x = 20 def test(): print 'x= ',x test() 代码一执行结果: x = 20 我们在代码一的基础上稍加修改 代码二: x = 20 def test(): print 'x= ',x x = 2 print 'change x to ',x test() 代码二执行结果: x= Traceback (most recent call last): File "D:\Demo\te

python 全局变量与局部变量

一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if a == 1: print("a: %d" %a) for i in range(4): if i in b: print("%d in list b" %i) else: print("%d not in list b" %i) if __nam

Python 全局变量

报错信息:UnboundLocalError: local variable referenced before assignment 在函数内部修改全局变量时报错. 因为:在python里,如果在函数内部试图去修改一个全局变量,那么实际上的操作是 Python会创建一个新的名字一模一样的局部变量,并且在函数内部屏蔽(shadow)掉这个全局变量(为了保护),但是出了这个函数并不改变全局变量的值. 解决方法:代码如下所示. epoch = 0 def Mnist(x1, x2, x3, x4,

python全局变量与局部变量

了解全局变量和局部变量之前,我们先来了解一下作用域 a = 10 def func(): b = 20 def inner(): c = 30 以上面这个程序为例:打印a,b,c 可以看到只有a打印 10 ,b和c都报错,这就是作用域的问题. 我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块的全局变量,作用于全局,不论在哪都可以调用, 但是b和c 是定义在函数内部的,我们叫做局部变量,只能作用在函数内部. 我们在看一个问题 func和inner函数可以调用变量a

PYTHON 全局变量和局部变量

#局部变量,只能调用函数体内的变量 def fun(): a = 234 print(a) #全局变量,在函数体外声明,在函数体内都可调用 b = 'gyc' def fun(): a = 234 print(a,b) # 在局部内修改全局变量 b = 789 def fun(): a = 234 global b #global 表示全局b赋值为789 b = 789 print(a,b)