python3的全局变量和局部变量
局部变量
- 定义在函数体内部的变量称为局部变量
- 函数的形参也是局部变量
- 局部变量的作用范围只在声明该局部变量的函数体内
- 局部变量在函数调用时被创建,在函数调用完成后自动销毁
全局变量
- 定义在函数体外,模块内的变量称为全局变量
- 全局变量在所有函数体内都可以进行访问
- 全局变量在函数体内不能直接修改绑定关系
a = 100
def test():
a = 50
print(a)
test()
print(a)
输出结果:
50
100
python3的作用域
作用域也叫命名空间,是访问时查找变量的范围空间
python3有四个作用域
作用域 | 英文解释 | 英文简写 |
局部作用域(函数内) | Local(function) | L |
外部嵌套函数作用域 | Enclosing function locals | E |
函数定义所在模块作用域 | Global(module) | G |
python内置模块的作用域 | Bui | B |
当访问一个变量的时候,变量查找顺序是先查找本地变量,然后是包裹此函数外部的函数内的变量,之后是全局变量,最后是內建作用域内的变量 。
在默认情况下,变量名赋值会在当前作用域内创建变量和修改变量。
v = 100 # 全局作用域
def fun1():
v = 200 # 外部嵌套函数作用域
print('fun1.v=', v)
def fun2():
v = 300 # 局部作用域
print('fun2.v=', v)
print(max) # max函数都没有创建,在内建函数作用域中,只读,不能改变
# 可以在其余三个作用域重新创建。
fun2()
fun1()
print("全局变量.v=", v)
print(max) # max变量定义在内置模块的作用域,是解释执行器提前定义好的
global关键字
作用
声明一个或多个变量,这些变量的作用域为模块级的作用域的变量,即全局变量
将赋值变量映射到模块文件内部的作用域
a = 10
def test():
global a
a = 5
print(a)
test()
print(a)
输出结果:
5
5
说明:
全局变量如果要在函数内部被赋值,则必须经过全局声明,否则会被认为是局部变量
不能先声明局部变量,再用global声明为全局变量
global变量列表里的变量名不能出现在次作用域内的形参列表
nonlocal语句
nonlocal声明的变量的作用域是外部嵌套函数作用域
def test():
a = 10
def test2():
nonlocal a
a = 5
print(a)
test2()
print(a)
test()
说明:
nonlocal语句只能在被嵌套函数内部进行使用
访问nonlocal变量将对外部嵌套函数作用域内的变量进行操作
当有两层或两层以上函数嵌套时,访问nonlocal变量只对最近一层的变量进行操作
nonlocal语句的变量列表的变量名不能出现在此函数的参数列表里
python3的全局变量和局部变量的更多相关文章
- python3 函数传参练习 全局变量与局部变量 的理解
额 还是继续抄一边NLP第二条: 2.一个人不能控制另外一个人 一个人不能改变另外一个人,一个人只能改变自己. 每个人的信念,价值观,规条系统只对本人有效,不应强求别人接守. 改变自己,别人才会有 ...
- JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}
Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...
- python函数的 全局变量与局部变量
一.函数的全局变量 1.什么是全局变量 顶着头开始写,没有任何缩进,在py文件的任何位置都能调用 #!/usr/bin/env python # _*_ coding:utf8 _*_ name=&q ...
- python基础:函数传参、全局变量、局部变量、内置函数、匿名函数、递归、os模块、time模块
---恢复内容开始--- 一.函数相关: 1.1位置参数: ef hello(name,sex,county='china'): pass #hello('hh','nv') #位置参数.默认参数 1 ...
- Python中的全局变量与局部变量的区别
全局变量与局部变量两者的本质区别就是在于作用域 用通俗的话来理解的话, 全局变量是在整个py文件中声明,全局范围内都可以访问 局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地 ...
- Python 全局变量和局部变量,global 和 nonlocal关键字
全局变量和局部变量 全局变量:定义在函数外的变量 局部变量:定义在函数内部变量 获取变量值时候先获取当前作用域变量名称和变量值,如果没找到到上一层作用域招变量的值,在没有就报错,先获 ...
- JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用
“JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是 ...
- JavaScript的全局变量与局部变量解析
一.JavaScript scope 的划分标准是function函数块,不是以 if.while.for来划分的 <script> function f1(){ alert(" ...
- python3--函数(函数,全局变量和局部变量,递归函数)
1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能, ...
随机推荐
- __next__和__iter__实现迭代器协议
---恢复内容开始--- #_*_coding:utf-8_*_ __author__ = 'Linhaifeng' class Foo: def __init__(self,x): self.x=x ...
- 全球数据库-->基金/管理产品-->分类/行业平均
ETF分类 GIFS台湾注册基金 GIFS开放式分类 GIFS德国注册基金 GIFS意大利注册基金 GIFS新兴市场 GIFS新加坡保险连结 GIFS新加坡注册基金 GIFS日本 GIFS比利时注册基 ...
- 11 Mortal Fibonacci Rabbits
Problem Figure 4. A figure illustrating the propagation of Fibonacci's rabbits if they die after thr ...
- 信息增益(Information Gain)(转)
当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设.在这种情况下,概率分布最均匀,预测的风险最小.因为这时概率分布的信息熵最大,所以称之为 ...
- wamp如何设置数据库的密码
WAMP安装好后,MySQL密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作. 首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空,所以直接按回车 ...
- Linux设备驱动模型底层架构及组织方式
1.什么是设备驱动模型? 设备驱动模型,说实话这个概念真的不好解释,他是一个比较抽象的概念,我在网上也是没有找到关于设备驱动模型的一个定义,那么今天就我所学.所了解 到的,我对设备驱动模型的一个理解: ...
- RocketMQ服务器监控误区
请不要监控10912端口 case: result: 监控10912端口会导致HAService异常,新起线程,吃掉内存,无限次监控虚拟机将宕机! 时间上是直接因果关系. 监控10911 和 9876 ...
- dojo表格操作的简单示例(建立表格)
代码示例: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w ...
- 线上服务 CPU 100%?一键定位 so easy!
转自: https://my.oschina.net/leejun2005/blog/1524687 摘要: 本文主要针对 Java 服务而言 0.背景 经常做后端服务开发的同学,或多或少都 ...
- Computer
Computer 1. Ctrl+N .根据惯例,“Control”.“Shift” 以及 “Alternate” 按键将以 Ctrl.Shift 以及 Alt 来表示,需要特别指出的是,其中第一个按 ...