本来以为 局部变量就是在函数/def/class/lambda内部的变量,全局变量就是在之前这些之外的变量。但是,再一次学习Python atm 中应用时发现了一次特例(意外)

字典中 在函数内部改变 其部分值之后,在函数外打印字典,字典的值竟然改变了。

x = {"w":1,"k":2}

def a(x):

    x["w"] = 123
x = {"w":999,"k":3433}
return x def v():
c = a(x)
print(x) v()

于是上网搜了一下 Python 全局变量与局部变量定义

1.定义的函数内部的变量名如果第一次出现,且在 = 前 那么就认为被定义的函数是局部变量,不论是否全局变量中是否用到该函数名

num = 10

def func():
num = 19
print(num) #值为19
func()
print (num) #值为10

再者

num = 10

def func():
num = num + 19
print(num)
func()
print (num)

将报错 :unboundlocalerror

num = 10

def func(num):
num = num + 19
print(num) func(num)
print (num)

在函数中传入参数则不会, 此时 num在函数中是全局变量

2. global 声明全局变量

d = 6

def a():

    global d

    print(d)
d = d + 2131 def v(): c = a() print(d) v()

在函数内部声明global之后,修改d的值,则全局变量值改变。(此函数不能传入参数d,否则global d则会报错)

3.有时候想在函数内部引用全局的变量,疏忽就会出现下列错误:

var = 1

def fun():
print(var)
var = 300 print(fun()) ------------------------------------------ var = 2 def fun():
var =var + 2
return var
print(fun())

4.字典

x1 = {"w":1,"k":2}
x2 = {"o":3,"p":2}
def a(x2): x1["w"] = 123
x2 = {"o":999,"p":343} return x1,x2 def v(): c = a(x2) print(x1,x2) v()

{'k': 2, 'w': 123} {'p': 2, 'o': 3}

x1 = {"w":1,"k":2}
x2 = {"o":3,"p":2}
def a(x1,x2): x1["w"] = 123
x2 = {"o":999,"p":343} return x1,x2 def v(): c = a(x1,x2) print(x1,x2) v()

输出值:{'k': 2, 'w': 123} {'p': 2, 'o': 3}

Python 局部变量与全局变量的更多相关文章

  1. python局部变量和全局变量(6)

    在python开发中,变量也是有生命周期的,一旦周期结束,程序会自动清理暂用的空间,释放内存,变量分为两者,一种是局部变量,一种是全局变量,两者具体有什么区别呢…… 一.局部变量 一般而言在函数内部或 ...

  2. 详解python 局部变量与全局变量

    本文将详细分析python的全局变量与局部变量,学过php的人都知道,php里面的全局变量是无法在function里面去使用的,只有超全局变量才可以,那么python会怎么处理全局变量与局部变量呢?下 ...

  3. python 局部变量和全局变量 global

    当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的.这称为变量的 作用域 .所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开 ...

  4. Python局部变量和全局变量global

    当你在函数定义声明变量的时候,它们与函数外具有相同名称的其它变量没有任何关系,即变量名称对于函数来说是 局部  的.这称为变量的 作用域 .所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开 ...

  5. python局部变量与全局变量

    name = "head first python"def what_happens_here():    print(name)  1    name = "pytho ...

  6. Python 局部变量转为全局变量

  7. python的局部变量,全局变量,类变量,实例变量

    定义: a.全局变量:在模块内.在所有函数外面.在class外面,这就是全局变量. b.局部变量:在函数内.在class的方法内(未加self修饰的),这就是局部变量. c. 静态变量:在class内 ...

  8. python变量进阶(可变不可变,局部变量和全局变量)

    变量进阶(理解) 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引 ...

  9. Python基础笔记系列九:变量、自定义函数以及局部变量和全局变量

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 变量在前面的系列中也许就可以发现,python中的变量和C中的变量有些许不 ...

随机推荐

  1. Dynamic Programming [Algorithm]

    今天学习动态规划01背包问题,从一篇非常不错的文章中学习甚多.转载于此,感谢作者的分享! 原文地址 通过金矿模型介绍动态规划 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总 ...

  2. 基于C/S架构的3D对战网络游戏C++框架 _06搭建C/S架构的基本通信框架(尚未写完会重新编辑后再发出)

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  3. SQLite3源程序分析之查询处理及优化

    前言 查询处理及优化是关系数据库得以流行的根本原因,也是关系数据库系统最核心的技术之一.SQLite的查询处理模块很精致,而且很容易移植到不支持SQL的存储引擎(Berkeley DB最新的版本已经将 ...

  4. 关于GIT合并出错的记录

    今天给美术解决GIT资源冲突时碰到的问题,搞了挺长时间终于解决了.参看下面这个网址:http://www.bujichong.com/m/68 今天git一小部分代码发现出错了, 上网查了一下, 大体 ...

  5. Ajax入门(三)

    get和post请求 1,get方式: 在url地址后面以请求字符串(传递的get参数信息)形式传递数据.    例: aj.open('get','./03.php?name=3tu'); 在传递特 ...

  6. JavaScript-简单的贪吃蛇小游戏

    实现逻辑: //获取Html中的格子(行,列) //建立数组存储所有格子(x,y) //建立数组用于存储蛇身(x,y) //生成随机坐标(x,y)的函数 //随机创建蛇身并存储到蛇身数组 //创建食物 ...

  7. 详解C#中的反射

    反射(Reflection) 2008年01月02日 星期三 11:21 两个现实中的例子:1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是B ...

  8. Android国际化--I18N

    在res下创建对应国家的环境的目录如:values-zh,values-en,然后在对应的目录下将对应的字符串翻译成对应国家的语言即可.

  9. 使用AccessibilityService执行开机自启动

    res/xml/accessibility_service_config.xml <accessibility-service xmlns:android="http://schema ...

  10. 【BZOJ 1494】【NOI 2007】生成树计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1494 这道题..因为k很小,而且我们只关心连续的k个节点的连通性,所以把连续的k个点轮廓线上的连通性 ...