局部变量

  1. 定义在函数体内部的变量称为局部变量
  2. 函数的形参也是局部变量
  3. 局部变量的作用范围只在声明该局部变量的函数体内
  4. 局部变量在函数调用时被创建,在函数调用完成后自动销毁

全局变量

  1. 定义在函数体外,模块内的变量称为全局变量
  2. 全局变量在所有函数体内都可以进行访问
  3. 全局变量在函数体内不能直接修改绑定关系
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的全局变量和局部变量的更多相关文章

  1. python3 函数传参练习 全局变量与局部变量 的理解

    额 还是继续抄一边NLP第二条: 2.一个人不能控制另外一个人   一个人不能改变另外一个人,一个人只能改变自己. 每个人的信念,价值观,规条系统只对本人有效,不应强求别人接守. 改变自己,别人才会有 ...

  2. JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}

    Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...

  3. python函数的 全局变量与局部变量

    一.函数的全局变量 1.什么是全局变量 顶着头开始写,没有任何缩进,在py文件的任何位置都能调用 #!/usr/bin/env python # _*_ coding:utf8 _*_ name=&q ...

  4. python基础:函数传参、全局变量、局部变量、内置函数、匿名函数、递归、os模块、time模块

    ---恢复内容开始--- 一.函数相关: 1.1位置参数: ef hello(name,sex,county='china'): pass #hello('hh','nv') #位置参数.默认参数 1 ...

  5. Python中的全局变量与局部变量的区别

    全局变量与局部变量两者的本质区别就是在于作用域 用通俗的话来理解的话, 全局变量是在整个py文件中声明,全局范围内都可以访问 局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地 ...

  6. Python 全局变量和局部变量,global 和 nonlocal关键字

    全局变量和局部变量    全局变量:定义在函数外的变量    局部变量:定义在函数内部变量    获取变量值时候先获取当前作用域变量名称和变量值,如果没找到到上一层作用域招变量的值,在没有就报错,先获 ...

  7. JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

    “JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是 ...

  8. JavaScript的全局变量与局部变量解析

    一.JavaScript scope 的划分标准是function函数块,不是以 if.while.for来划分的 <script> function f1(){ alert(" ...

  9. python3--函数(函数,全局变量和局部变量,递归函数)

    1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能, ...

随机推荐

  1. spring定时任务执行两次的原因与解决方法

    spring定时任务,本地执行一次,放到服务器上后,每次执行时会执行两次,原因及解决办法. http://blog.csdn.net/yaobengen/article/details/7031266 ...

  2. Vue 路由缓存

    问题 在路由切换时不需要每次 点击都刷新子路由   尤其是在form表单的情况下  不能让用户 输入一半之后点击其他页面  再点回来 表单数据不见了 解决方案   vue 2.0     之中  有k ...

  3. python使用git进行版本控制2

    对上一次的readme文件进行修改 现在,运行git status命令看看结果 $ git statusOn branch masterChanges not staged for commit:  ...

  4. SOA和微服务到底是什么关系?

    SOA和微服务到底是什么关系? 说实话,我确实不明白SOA和微服务到底有什么本质上的区别,两者说到底都是对外提供接口的一种架构设计方式.我倒觉得微服务其实就是随着互联网的发展,复杂的平台.业务的出现, ...

  5. Vivado&ISE&Quartus II调用Modelsim级联仿真

    博主一直致力寻找高效的工作方式,所以一直喜欢折腾软件,从刚开始只用软件IDE自带的编辑器,到Notepad++,再到后来的Vim,从用ISE14.7自带的Isim仿真,到发现更好的Modelsim,再 ...

  6. Linux的进程/线程间通信方式总结

    Linux系统中的进程间通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程 ...

  7. Android-Activity启动模式-应用场景

    在上一篇博客中,Android-Activity启动模式(launchMode),就介绍了Activity四种启动模式的特点与使用等,但是到底什么样子的场景,去使用什么样子的启动模式呢 Activit ...

  8. 基于微软XAML技术的前端开发方法

    使用XAML技术的平台目前包括WPF,Silverlight,Windows8等平台,未来的Windows10统一Windows App也使用XAML技术. 前端开发指通过可视化集成开发环境进行用户界 ...

  9. RHEL7/CentOS7 Network Service开机无法启动的解决方法

    RHEL7/CentOS7安装完成并配置好所有网络相关配置后重启机器,使用systemctl --failed检查是否有失败的服务,发现在network服务启动失败,使用systemctl statu ...

  10. 创建TFS团队项目时自动建立代码库的文件夹结构

    很多客户都跟我提过一个这样的需求,即需要在创建团队TFS项目时,自动创建起源代码库的文档结构,例如类似下列结构的文件夹: <teamProject>   |- DEVELOPMENT   ...