Python--变量作用域
变量作用域:
 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。
 全局变量所有作用域都可读,局部变量只能在本函数可读
 函数在读取变量时,优先读取函数本身自有的局部变量,再去读全局变量
全局变量 
 读,均可读
 赋值,global
 字典,列表可修改
 全局变量全大写
例:
name = 'Tim' #全局变量 def f1():
age = 18 #局部变量
print(age,name) def f2():
age=19 #局部变量
print(age,name) f1()
f2()
>>>
18 Tim
19 Tim
在函数内部也可以定义全局变量:
name = 'Tim' #全局变量 def f1():
age = 18 #局部变量
global name #定义全局变量
name = 'Eric'
print(age,name)
f1()
print(name)
全局变量默认可读,如果需要改变全局变量的值,需要在函数内部使用global定义
特殊:列表,字典,可修改,但不能重新赋值,如果需要重新赋值,需要在函数内部使用global定义全局变量
NAME = ['Tim','mike'] #全局变量
NAME1 = ['Eric','Jeson'] #全局变量
NAME3 = ['Tom','jane'] #全局变量 def f1():
NAME.append('Eric') #列表的append方法可改变外部全局变量的值
print('函数内NAME: %s'%NAME)
NAME1 = '' #重新赋值不可改变外部全局变量的值
print('函数内NAME1: %s'%NAME1)
global NAME3 #如果需要重新给列表赋值,需要使用global定义全局变量
NAME3 = ''
print('函数内NAME3: %s'%NAME3)
f1()
print('函数外NAME: %s'%NAME)
print('函数外NAME1: %s'%NAME1)
print('函数外NAME3: %s'%NAME3)
>>>
函数内NAME: ['Tim', 'mike', 'Eric']
函数内NAME1: 123
函数内NAME3: 123
函数外NAME: ['Tim', 'mike', 'Eric']
函数外NAME1: ['Eric', 'Jeson']
函数外NAME3: 123
Python--变量作用域的更多相关文章
- python变量作用域
		[python变量作用域] 几个概念: python能够改变变量作用域的代码段是def.class.lamda. if/elif/else.try/except/finally.for/while 并 ... 
- Python 变量作用域 LEGB (上)—— Local,Global,Builtin
		Python 变量作用域的规则是 LEGB LEGB含义解释:L —— Local(function):函数内的名字空间E —— Enclosing function locals:外部嵌套函数的名字 ... 
- Python 变量作用域与函数
		Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ... 
- Python 变量作用域 LEGB (下)—— Enclosing function locals
		上篇:Python 变量作用域 LEGB (上)—— Local,Global,Builtin https://www.cnblogs.com/yvivid/p/python_LEGB_1.html ... 
- python——变量作用域及嵌套作用域
		----------------------------------------------------------------------------- 前言-------------------- ... 
- python 变量作用域、闭包
		先看一个问题: 下面代码输出的结果是0,换句话说,这个fucn2虽然已经用global声明了variable1,但还是没有改变变量的值 def func1(): variable1=0 def fun ... 
- python变量作用域,函数与传参
		一.元组传值: 一般情况下函数传递参数是1对1,这里x,y是2个参数,按道理要传2个参数,如果直接传递元祖,其实是传递一个参数 >>> def show( x, y ): ... p ... 
- Python变量作用域(一)
		在一个程序中使用变量名时,Python创建.改变或者查找变量名都是在所谓的命名空间中进行的.作用域指的就是命名空间. Python中的变量名在第一次赋值时已经创建,并且必须经过赋值后才能够使用.由于变 ... 
- Python 变量作用域,闭包和装饰器
		from dis import dis b = 6 def f1(a): print(a)print(b) b = 9 f1(3) print(dis(f1)) # dis模块可以查看python函数 ... 
- python  变量作用域  v.__sizeof__()  python  深复制  一切皆对象  尽量减少内存消耗
		python 深入理解 赋值.引用.拷贝.作用域 - 江召伟 - 博客园 https://www.cnblogs.com/jiangzhaowei/p/5740913.html a=[1,2,5]b= ... 
随机推荐
- 关于模型的合法性,Entity.IsValid()合理吗?
			关于模型的合法性,Entity.IsValid()合理吗? 背景 见过很多框架(包括我自己的)都会在实体的定义中包含一个IsValid()方法,用来判断实体的合法性,是否应该这样设计呢?本文就这个问题 ... 
- MacOSX64位机器上gcc编译32位x264静态库
			x264最新包地址:http://www.videolan.org/developers/x264.html 编译命令: ./configure --enable-static --host=i386 ... 
- 适配器模式及C++实现
			适配器模式及C++实现 适配器模式 适配器模式是很好理解的模式了,生活中也非常常见,什么插头2口转3口,什么USB转PS2,这都算是适配器模式.说白了,就是如果有一些东西提供的接口你很像用,但是你手头 ... 
- Chrome插件i18n多语言实现
			i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.Chrome插件框架中i18n的封装API: chrome.i18n.ge ... 
- hadoop-1.1.0 rpm + centos 6.3 64虚拟机 + JDK7 搭建分布式集群
			第一步 ,环境准备. 宿主机为CentOS6.3 64位,3个虚拟机为CentOS6.3 64位. (注意:有个技巧,可以先创建一台虚拟机,在其上安装好JDK.hadoop后再克隆两台,这样省时又省 ... 
- kubernetes入门之快速部署
			角色说明 这里主要有三个角色,分别部署不同的服务. 角色 服务 etcd etcd master kube-apiserver/kube-scheduler/kube-controller node ... 
- 结构-行为-样式-requireJs实现图片轮播插件
			最近工作需要,就自己写了一个图片轮播插件,不过想到要集成到框架中,于是又用RequireJs改了一遍. 主要文件: style.css jquery-1.11.1.min.js require.js ... 
- HTTP could not register URL http://+:86/. 设置VS默认以管理员权限打开
			在使用visual studio 2013启动self host webapi时候碰到下面的错误: 详细错误信息如下: HTTP could not register URL http://+:8 ... 
- SQL SERVER BUG--Alwayson日志备份报错
			数据库版本 SQL SERVER 2012 企业版,版本号:11.0.5582.0 问题场景: 数据库配置Alwayson环境,同机房2节点同步自动切换+跨机房异步,在异步机房中选取同一节点做完整备份 ... 
- scrapy在ubuntu上安装总结
			此文档是本人学习时使用的,采用一个实例作为引导进行安装测试. 实例下载地址如下: https://github.com/sans-serif/scrapy-german-news#introducti ... 
