再谈变量作用域与变量引用

by:授客 QQ1033553122

module3.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
__author__ = 'shouke'
 
var = 'var_in_module3'
 

module2.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
__author__ = 'shouke'
from module3 import var
 
class ClassOne:
    var = 'global var in ClassOne' # 类中的全局变量
 
    def func(self):

print('var in func for ClassOne: %s' % var) # 引用module3.var

       ClassOne.var = 'var whose value changed in func of ClassOne'

module1.py

#!/usr/bin/env python

# -*- coding:utf-8 -*-

 

__author__ = 'shouke'

from module3 import var

from module2 import ClassOne

def function():

print('var in function: %s' % var)  # 引用module3.var

var1 = 'value_for_var1'

    if True:

print('var1 in if: %s' % var1)

var1 = 'value_changed_for_var1'

        print('var1 in if: %s' % var1)

print('var1 out of if: %s' % var1)

print('\nbegan for loop \n')

for num in range(1, 2):

var1 = 'var1_in_for_loop'

        if True:

print('var1 in if for loop: %s' % var1)

var1 = 'value_changed for var1 in if for_loop'

            print('var1 in if for loop: %s' % var1)

print('var1 out of if for loop: %s' % var1)

print('var1 out of for loop: %s' % var1)

class ClassTwo:

def func(self):

var = ClassOne.var # 引用值

print('var in func of ClassTwo: %s' % var)

def func2(self):

ClassOne.var = 'value changed in ClassTwo' # 修改值

if __name__ == '__main__':

function()

print('\n')

obj1 = ClassTwo()

obj1.func()

obj2 = ClassOne()

obj2.func()

print('\n')

obj2.func()

obj1.func()

print('\n')

obj1.func2()

obj2.func2()

输出:

说明:

1、如何在不同模块中引用同一个变量?

答案:在一个模块中定义一个全局变量并赋值,然后在其它模块中通过导入定义的变量,在适当的位置引用该变量,如上例中,在module3中定义一个变量,然后通过语句 from module3 import var 导入变量

2、如何在类中定义一个全局变量?

答案:

class ClassName:

var_name = xxxxxxxx

在其它模块中,通过导入该类,然后通过ClassName.var_name方式引用变量,或者给变量赋值。

3、try……except,if,for,while子句中的变量作用域与赋值

举例说明


Python 再谈变量作用域与变量引用的更多相关文章

  1. javascript中的变量作用域以及变量提升

    在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解. 变量作用域 “一个变量的作用域表示这个变量存在的上 ...

  2. javascript中的变量作用域以及变量提升详细介绍

    在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解变量作用域 “一个变量的作用域表示这个变量存在的上下文 ...

  3. 再谈java两种变量(基本类型和引用类型)(综合各路大神)

    基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. int  a:   a=250: //声明变量a的同时,系统给a分配了数据空间. 引用类型: 是一个对象类型,值是什么呢? ...

  4. PHP变量作用域以及地址引用问题

    作用域的概念: 在PHP脚本的任何位置都可以声明变量,但是,声明变量的位置会大大影响访问变量的范围.这个可以访问的范围称为作用域. 主要的常用的包括:局部变量.全局变量.静态变量. 1.局部变量:就是 ...

  5. js的变量作用域 ,变量提升

    (function(){ a = 5; alert(window.a); var a = 10; alert(a); })(); 结果: undefined 10 代码等同于下面 var a = un ...

  6. [TimLinux] Python 再谈元类 metaclass

    本博文通过对以下链接进行理解后,编写. https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python 1. 类 类 ...

  7. [TimLinux] Python 再谈装饰器

    参考链接:https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators 1. 函数对象 能 ...

  8. Python 再谈字符串

    字符串除了要用引号来创建之外,其他和元组一样,不能修改,如果要修改只能用切片或者拼接的方式. 其他的什么乱七八糟的运算符都一样 一些不同 capitalize()-将字符串的第一个字母大写 str1. ...

  9. JavaScript基础——理解变量作用域

    一旦你开始在JavaScript应用程序中添加条件.函数和循环,就需要理解变量作用域.变量作用域规定了如何确定正在执行的代码行上的一个特定变量名的值. JavaScript允许你既定义全局版本又定义局 ...

随机推荐

  1. Servlet案例6:显示用户的上次访问时间

    这里是cookie的简单应用 告诉用户您的上次访问时间是:xxxx-xx-xx xx:xx:xx 思路: 第一次访问该网站时候,记录当前访问时间(new Date()) 把当前时间以cookie的形式 ...

  2. [CocoaPods]常见问题

    “现在Swift有一个内置的包管理器,CocoaPods会停止开发吗?” Swift Package Manager(SPM)处于“早期设计和开发”阶段[1].它目前不支持iOS,观看操作系统或Obj ...

  3. mysql升级8.0后项目不能连接问题

    转载简书:https://www.jianshu.com/p/a164d582e5d9 主要是因为驱动配置变了driver中得用com.mysql.cj.jdbc.Driver,多了个cj: url后 ...

  4. 一个linux内核编译时遇到的perl语法导致的编译问题解决

    在编译linux内核时,遇到了一个比较诡异的问题.具体log如下: Can't locate strict.pm in @INC (you may need to install the strict ...

  5. Hive SQL基础操作

    创建表 hive 查看本地的文件#Can execute local commands within CLI, place a command in between ! and ;!cat data/ ...

  6. Python模块——logging模块

    logging模块简介 logging模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统.logging模块是Python的一个标准库模块, 由标准库模块提供日志记录API的关键好处是 ...

  7. Python基础教程(第3版) 笔记(二)

    1.8模块Python提供了完成(某人的年 龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁)这种任务的函 数floor.导入模块,可以使用特殊命令import.函数floor包含在模块 ...

  8. (转)你真的会写单例模式吗——Java实现

    http://www.runoob.com/design-pattern/singleton-pattern.html 单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好.用对单例模式, ...

  9. php -- 目录、路径、磁盘

    ----- 028-dir.php ----- <!DOCTYPE html> <html> <head> <meta http-equiv="co ...

  10. Java 动态生成 PDF 文件

    每片文章前来首小诗:   今日夕阳伴薄雾,印着雪墙笑开颜.我心仿佛出窗前,浮在半腰望西天.  --泥沙砖瓦浆木匠 需求: 项目里面有需要java动态生成 PDF 文件,提供下载.今天我找了下有关了,系 ...