Python 再谈变量作用域与变量引用
再谈变量作用域与变量引用
by:授客 QQ:1033553122
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 再谈变量作用域与变量引用的更多相关文章
- javascript中的变量作用域以及变量提升
在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解. 变量作用域 “一个变量的作用域表示这个变量存在的上 ...
- javascript中的变量作用域以及变量提升详细介绍
在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解变量作用域 “一个变量的作用域表示这个变量存在的上下文 ...
- 再谈java两种变量(基本类型和引用类型)(综合各路大神)
基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. int a: a=250: //声明变量a的同时,系统给a分配了数据空间. 引用类型: 是一个对象类型,值是什么呢? ...
- PHP变量作用域以及地址引用问题
作用域的概念: 在PHP脚本的任何位置都可以声明变量,但是,声明变量的位置会大大影响访问变量的范围.这个可以访问的范围称为作用域. 主要的常用的包括:局部变量.全局变量.静态变量. 1.局部变量:就是 ...
- js的变量作用域 ,变量提升
(function(){ a = 5; alert(window.a); var a = 10; alert(a); })(); 结果: undefined 10 代码等同于下面 var a = un ...
- [TimLinux] Python 再谈元类 metaclass
本博文通过对以下链接进行理解后,编写. https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python 1. 类 类 ...
- [TimLinux] Python 再谈装饰器
参考链接:https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators 1. 函数对象 能 ...
- Python 再谈字符串
字符串除了要用引号来创建之外,其他和元组一样,不能修改,如果要修改只能用切片或者拼接的方式. 其他的什么乱七八糟的运算符都一样 一些不同 capitalize()-将字符串的第一个字母大写 str1. ...
- JavaScript基础——理解变量作用域
一旦你开始在JavaScript应用程序中添加条件.函数和循环,就需要理解变量作用域.变量作用域规定了如何确定正在执行的代码行上的一个特定变量名的值. JavaScript允许你既定义全局版本又定义局 ...
随机推荐
- spring框架学习笔记2:配置详解
简单写一个类做示例: package bean; public class User { private String name; private Integer age; public String ...
- https网页加载http资源导致的页面报错及解决方案
https是当下的网站的主流趋势,甚至像苹果这样的大公司,则完全要求用户必须使用https地址. 然而对于以前http链接来说,我们往往就存在一个兼容性问题,因为你不可能一下就全部切换过去,应该在很长 ...
- dubbo rpc调用,接收到的bean为null原因?
前几天对接公司内部其他部门的系统,用dubbo调用,dubbo看起来很简单,但是却让我们调试了好久啊! 下面是调试纪录: 1. 调用该服务时,直接调不通,查看错误为 no provider ? 然后就 ...
- Ideas
1.蔬菜店,自带种植的菜地.(实现蔬菜都是新采摘的.) 这个试用于农村,因为需要土地.农村现在蔬菜店大多也是外出进货.有些菜放久了,就坏掉了. 这里有问题就是,(1).如果销量不够,怎么让蔬菜不烂在菜 ...
- css高级选择器&盒模型
css高级选择器&盒模型 1.组合选择器 群组选择器 /* 每个选择器为可以为三种基础选择器的任意一个,用逗号隔开,控制多个*/ div,.div,#div{ color:red } 后代(子 ...
- @RequestParam加不加的区别
感觉@撸码识途 https://www.cnblogs.com/tinyj/p/9786131.html 加上的情况: @RequestMapping("demo") public ...
- 机器学习技法笔记:03 Kernel Support Vector Machine
Roadmap Kernel Trick Polynomial Kernel Gaussian Kernel Comparison of Kernels Summary
- Liferay7 BPM门户开发之24: Liferay7应用程序安全
整理中...... Resources, Roles, and PermissionsPortal Access Control List (PACL) Custom SSO Providers Au ...
- Liferay7 BPM门户开发之16: Liferay中用户\站点\组织架构\角色\用户组以及关联关系
用户 . 站点 . 组织架构 . 角色 . 用户组分别是:Users. Site. Organization. Role. UserGroups Users 用户是Liferay portal中的关键 ...
- Liferay7 BPM门户开发之11: Activiti工作流程开发的一些统一规则和实现原理(完整版)
注意:以下规则是我为了规范流程的处理过程,不是Activiti公司的官方规定. 1.流程启动需要设置启动者,在Demo程序中,“启动者变量”名统一设置为initUserId 启动时要做的: ident ...