如果想在函数内部改变函数外的变量值,用global语句完成:

在不传该变量值入函数的情况下要改变它的值:

>>> a = 3
>>> def f():
... global a
... a = a-1
...
>>> f()
>>> a
2

如果不声明global将会报错未找到:

>>> a = 3
>>> def f():
... a = a-1
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in f
UnboundLocalError: local variable 'a' referenced before assignment

如果是将该变量传参进入函数时,则该变量不变:

>>> def f(a):
... a = a-1
...
>>> f(a)
>>> a
3
>>> def f(a):
... a = a-1
... return a
...
>>> f(a)
2
>>> a
3

注意,这仅当a为数的时候,当a为list,set,dict,等可切片的时,不用声明global也会改变。

a为tuple或str时也不会改变(注意因为tuple/str对象的不支持对其中单个元素/字符赋值如:a[0] = "0" #对字符串a第一个元素改变为“0”会报错)

>>> a = (1,2,3,4)
>>> a[2] = 1 # 不可对单个改变
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> def f(a):
... a = (3,4)
... print(a)
...
>>> f(a)
(3, 4)
>>> a
(1, 2, 3, 4) ##################################### >>> a = "asd"
>>> def f(a):
... a = a + ""
... print(a)
...
>>> f(a)
asd00
>>> a
'asd'
>>> a[0] = "" # 不可对单个改变
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

对于list,set,dict,涉及到切片等操作时,则会改变:

>>> a = [1,2,3,4]
>>> def f(a):
... a[-1] = ""
... print(a)
...
>>> f(a)
[1, 2, 3, '']
>>> a
[1, 2, 3, '']
##################上面切片下面未切片
>>> a = [1,2,3,4]>>> def f(a):
... a = [3,4]
... print(a)
...
>>> f(a)
[3, 4]
>>> a
[1, 2, 3, 4]
#######################
>>> a = [1,2,3,4]
>>> def f(a):
... a.append(0)
... print(a)
...
>>> f(a)
[1, 2, 3, 4, 0]
>>> a
[1, 2, 3, 4, 0]

python global的更多相关文章

  1. python global vs nonlocal (2)

    上一篇中简述了这两个关键字的基本用法: global用于在局部作用于修改或重定义全局变量 nonlocal用于在内部作用域修改或重定义外部变量(全局变量除外) 这只是很浅的理解方式 注意python的 ...

  2. [python]global与nonlocal关键字

    在Python中,当引用一个变量的时候,对这个变量的搜索是按找本地作用域(Local).嵌套作用域(Enclosing function locals).全局作用域(Global).内置作用域(bui ...

  3. python global和nonlocal的使用

    ◆global和nonlocal是Python的两个重要变量作用域关键字 1.global用在全局变量,应用场景: 变量定义在函数外部的时候,如果函数里面想改变这个全局变量的值,需要在当前的引用函数里 ...

  4. python global 全局变量

    http://blog.csdn.net/mldxs/article/details/8559973 __author__ = 'dell' def func(): global x print 'x ...

  5. python global nonlocal

    global: 方法之外在modual中的变量定义为全局变量.方法内的变量为局部变量. 一般情况下,全局变量可以被使用,但是不应该被修改,不然会报错. 不过一般不建议对全局变量做修改,如果有多个方法都 ...

  6. Python Global和Nonlocal的用法

    nonlocal 和 global 也很容易混淆.简单记录下自己的理解. 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值. global 语句是一个声明,它适用于整个当 ...

  7. CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境

    安装 系统环境:CentOS 6.5 安装依赖 yum -y install gcc gcc-c++ make git patch openssl-devel zlib-devel readline- ...

  8. 使用pyenv来管理python版本

    使用pyenv可以很方便的切换python版本,而不会影响系统的python版本,对需要使用supervisor(仅支持python2)托管程序,项目使用python3开发的情况十分有用 pyenv的 ...

  9. 用pyenv和virtualenv搭建单机多版本python虚拟开发环境

    作为主流开发语言, 用python 开发的程序越来越多. 方便的是大多linux系统里面都默认集成了python, 开发可以随时随地开始. 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试 ...

随机推荐

  1. 1307 绳子与重物(DFS)

    1307 绳子与重物 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有N条绳子编号 0 至 N - 1,每条绳子后面栓了一个重物重量 ...

  2. 1119 机器人走方格 V2(组合)

    1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于 ...

  3. 海康、大华NVR网络硬盘录像机录像无插件全平台访问实现—录像回放时间轴功能实现方法

    在之前的博文中我们有介绍方案*NVR硬件录像机web无插件播放方案(支持取特定时间段视频流)*:该片博文旨在介绍时间轴功能的实现和相关接口的调用: 时间轴样式展示: 问题分析 对于 时间轴的展示实现需 ...

  4. How to make asynchronous HTTP requests in PHP 4种PHP异步执行的常用方式

    [是否等待返回就执行下一步] How to make asynchronous HTTP requests in PHP - Stack Overflow https://stackoverflow. ...

  5. DOM 属性操作

    1 属性节点 2 attribute操作 3 value获取值操作 4 class的操作 5 指定CSS操作 1.属性节点 //获取文本节点的值 var divEle = document.getEl ...

  6. JavaScript四则运算计算器

    直接上代码: 首先是HTML代码 <form> 第一个数字:<br> <input type="text" id="num1"&g ...

  7. 007-sql整体概述

    一.概述 sql基础:数据库.数据表.行.列.关系 查询: Select 字段1,字段2,* from 表 where 条件 去除重复:Distinct 必须放在所有列前面 区间语句:BETWEEN ...

  8. shuit模块

    shuit模块 #高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中,可以部分内容 def copyf ...

  9. 由于Redis漏洞导致服务器被黑

    原文地址 漏洞描述 Redis默认情况下,会绑定在0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Re ...

  10. 《UNI|X环境高级编程》 源代码配置

    代码下载地址:http://www.apuebook.com/ 下的第二版,里面有个readme文件: root@iZ23onhpqvwZ:~/ms/linux/apue/apue.2e# cat R ...