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变量作用域的更多相关文章

  1. Python基础-变量作用域

    1.函数作用域介绍 函数作用域 Python中函数作用域分为4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局 ...

  2. python的变量作用域问题

    偶然掉进了一个坑里.仔细分析了下原因.原来是变量作用域的问题.简单抽象如下: id=1 #许多行代码 [id for id in range(10)] #许多行代码 if id!=1: #做一些事情 ...

  3. python的变量作用域

    import time global mark,sum def gaosi(Q): global sum,mark # 在 使用的时候防止隔离 也要声明一下 这个是全局变量 , 引用外面的值 sum+ ...

  4. Python之变量作用域

    使用 global强制声明为全局变量

  5. Python中的变量作用域

    python中变量作用域包括: L (Local) 局部作用域,函数内部声明但没有使用global的变量E (Enclosing) 闭包函数外的函数中,def或者lambda的本地作用域G (Glob ...

  6. python 本地变量和全局变量 locals() globals() global nonlocal 闭包 以及和 scala 闭包的区别

    最近看 scala ,看到了它的作用域,特此回顾一下python的变量作用域问题. A = 10 B = 100 print A #10 print globals() #{'A': 10, 'B': ...

  7. python 变量作用域、闭包

    先看一个问题: 下面代码输出的结果是0,换句话说,这个fucn2虽然已经用global声明了variable1,但还是没有改变变量的值 def func1(): variable1=0 def fun ...

  8. Python 变量作用域 LEGB (上)—— Local,Global,Builtin

    Python 变量作用域的规则是 LEGB LEGB含义解释:L —— Local(function):函数内的名字空间E —— Enclosing function locals:外部嵌套函数的名字 ...

  9. Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  10. Python 再谈变量作用域与变量引用

    再谈变量作用域与变量引用 by:授客 QQ:1033553122 module3.py #!/usr/bin/env python # -*- coding:utf-8 -*-   __author_ ...

随机推荐

  1. Rainbond 5.5 发布,支持Istio和扩展第三方Service Mesh框架

    Rainbond 5.5 版本主要优化扩展性.服务治理模式可以扩展第三方 ServiceMesh 架构,兼容kubernetes 管理命令和第三方管理平台. 主要功能点解读: 1. 支持 Istio, ...

  2. Yii框架Ar操作

    1.$admin=Admin::model()->findAll($condition,$params);        该方法是根据一个条件查询一个集合,如:  findAll("u ...

  3. Windows程序读取不了中文路径问题

    问题描述 今天调试发现win32接口GetFileAttributesW居然不支持中文路径,于是寻找解决方案,找了半天,尝试用boost的fileystem库发现能用,而且boost能跨平台! 不支持 ...

  4. SQL server查看触发器是否被禁用

    1 select a.name as 触发器名,b.name as 表名, 2 case a.is_disabled when 0 then '启用' when 1 then '禁用' else '未 ...

  5. sqlyog 工具 查看 历史记录

    sqlyog 工具 查看 历史记录 可以查看当前客户端的执行脚本的情况

  6. http请求方式-RestTemplate

    http请求方式-RestTemplate import com.alibaba.fastjson.JSON; import com.example.core.mydemo.http.OrderReq ...

  7. Jupyter QtConsole 配置,2023 年了你还在使用 QtConsole 吗?

    目录 Jupyter QtConsole 配置,2023 年了你还在使用 QtConsole 吗? Jupyter QtConsole 的安装 设置字体 启动时自动加载需要的库包 更新:2023 年 ...

  8. 安装PHP5.6.20

    安装php的前提是安装了数据库和httpd!!!!!!!! 1 因为yum缺省安装的是PHP5.4,所以先要添加yum库 [root@svnhost ~]# rpm -Uvh https://mirr ...

  9. 【HDC 2024】华为云开发者联盟驱动应用创新,赋能开发者成长

    本文分享自华为云社区<[HDC 2025]华为云开发者联盟驱动应用创新,赋能开发者成长>,作者:华为云社区精选. 6月21日到23日,华为开发者大会(HDC 2024)于东莞松山湖举行,这 ...

  10. Linux下命令行开启关闭触摸板

    Linux下命令行开启关闭触摸板 从设备列表中找到触摸板的设备id,调用xinput可以控制设备的开启关闭. 示例代码如下: #!/bin/bash device=`xinput list | gre ...