python global变量作用域
python变量作用域
var1 = 123 def func():
var1 = 456
print(var1) func() #456
print(var1) #123
==================================================
var1 = 123 def func():
global var1 #变成了教室的黑板(信息透明共享)
var1 = 456
print(var1) func() #456
print(var1) #456
global var1 #表明此处没有起到全局变量的作用 def func():
var1 = 456
print(var1) func() #456
print(var1) #NameError: name 'var1' is not defined
global var1 #表明此处没有起到全局变量的作用
var1 = 123 def func(): var1 = 456
print(var1)
return var1 func() #456
print(var1) #123
var1 = 123 #这一行的全局变量也可以注释掉,不影响下面的代码 def func1():
global var1 #变成了教室的黑板(信息透明共享)
var1 = 456
print(var1)
func1() #456
print(var1) #456 def func2():
print(var1)
func2() #456 def func3():
var1 = 333
print(var1)
func3() #333
print(var1) #456 def func4():
global var1 #再次变成了教室的黑板(信息透明共享)
print(var1) #456
var1 = 444
print(var1) #444
func4()
print(var1) #444
总结:
1,global必须放在函数内,如果放在函数外将不起作用(如上面的红色字体)。
2,某个函数如果想改变外部变量的值,就必须在函数内部的该变量前加global,如果有两个函数func1,func2都想改变外部变量var1的值,就必须都在func1,func2里面的var1前都加上global。
3,如果func2想获取func1里面的var1的最新值,就必须都在func1,func2里面的var1前都加上global。
python global变量作用域的更多相关文章
- Python基础-变量作用域
1.函数作用域介绍 函数作用域 Python中函数作用域分为4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局 ...
- python的变量作用域问题
偶然掉进了一个坑里.仔细分析了下原因.原来是变量作用域的问题.简单抽象如下: id=1 #许多行代码 [id for id in range(10)] #许多行代码 if id!=1: #做一些事情 ...
- python的变量作用域
import time global mark,sum def gaosi(Q): global sum,mark # 在 使用的时候防止隔离 也要声明一下 这个是全局变量 , 引用外面的值 sum+ ...
- Python之变量作用域
使用 global强制声明为全局变量
- Python中的变量作用域
python中变量作用域包括: L (Local) 局部作用域,函数内部声明但没有使用global的变量E (Enclosing) 闭包函数外的函数中,def或者lambda的本地作用域G (Glob ...
- python 本地变量和全局变量 locals() globals() global nonlocal 闭包 以及和 scala 闭包的区别
最近看 scala ,看到了它的作用域,特此回顾一下python的变量作用域问题. A = 10 B = 100 print A #10 print globals() #{'A': 10, 'B': ...
- python 变量作用域、闭包
先看一个问题: 下面代码输出的结果是0,换句话说,这个fucn2虽然已经用global声明了variable1,但还是没有改变变量的值 def func1(): variable1=0 def fun ...
- Python 变量作用域 LEGB (上)—— Local,Global,Builtin
Python 变量作用域的规则是 LEGB LEGB含义解释:L —— Local(function):函数内的名字空间E —— Enclosing function locals:外部嵌套函数的名字 ...
- Python中变量的作用域(variable scope)
http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...
- Python 再谈变量作用域与变量引用
再谈变量作用域与变量引用 by:授客 QQ:1033553122 module3.py #!/usr/bin/env python # -*- coding:utf-8 -*- __author_ ...
随机推荐
- 在 Rainbond 中一键安装高可用 Nacos 集群
描述如何通过云原生应用管理平台 Rainbond 一键安装高可用 Nacos 集群.这种方式适合不太了解 Kubernetes.容器化等复杂技术的用户使用,降低了在 Kubernetes 中部署 Na ...
- Linux和Windows时间不一致问题
问题描述 装过双系统或者虚拟机装Linux的人都知道,Linux的时间和Windows往往是不同步的,在编写跨平台程序的时候特别是对时间敏感的代码就带来很大的困扰 解决办法 这个问题可以在Linux下 ...
- node child_process模块exec
child_process是Node.js自带的核心模块之一,无需额外安装即可使用. child_process模块提供了创建子进程的功能,可以在Node.js中执行外部命令.脚本文件等,并与其进行交 ...
- 记录nodejs做编辑和新增时候对数据库的操作
server.js文件 const dao = require("../dao/user.dao"); saveDat是个对象自己处理一下 if (updataFlag) {//编 ...
- win10无线网卡不会自动连接
usb接口的网卡.win10无线网卡不会自动连接. 解决方法: 第一步:在控制面板\网络和 Internet\网络连接中,禁用再启用一次无线网络. 第二步:在 控制面板\硬件和声音\电源选项\选择电源 ...
- 调用支付JSAPI缺少参数:total_fee解决方法
1.https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7 调用支付JSAPI缺少参数:total_fee 1.请检查预支付会话标识p ...
- C# 设置PDF表单不可编辑、或提取PDF表单数据
PDF表单是PDF中的可编辑区域,允许用户填写指定信息.当表单填写完成后,有时候我们可能需要将其设置为不可编辑,以保护表单内容的完整性和可靠性.或者需要从PDF表单中提取数据以便后续处理或分析. 之前 ...
- centos8使用nmcli实现bond
#添加bonding接口 nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manu ...
- 配置 Gerrit 迁移
https://gerrit.googlesource.com/plugins/replication/+doc/master/src/main/resources/Documentation/con ...
- FreeRtos学习总结
背景 最近项目需要,花了几天时间学习了FreeRTOS,因为之前有操作系统和底层的基础,所以上手非常快. 正文 基础篇 学习方法:建议先阅读本人整理的文章:再结合FreeRTOS文档官方的全英文档&l ...