Python局部变量、对象的理解
来源:互联网 发布:hf系统线切割怎么编程 编辑:程序博客网 时间:2024/06/07 03:12
原文:http://blog.chinaunix.net/uid-12038475-id-3532597.html
有一段python代码
test.py
- # -*- coding: gbk-*-
- def f(dictVar):
- print "赋值前 dictVar:",dictVar
- dictVar = {"key2":"value2"}
- print "赋值后 dictVar:",dictVar
- if __name__== "__main__":
- dictVar = {"key1":"value1"}
- print "调用函数前 dictVar:", dictVar
-
- print "调用函数"
-
- f(dictVar)
-
- print "调用函数后 dictVar:", dictVar
运行结果如下:
解释:
在main模块里面的变量dictVar与fun函数里面的变量dictVar是两个不同的变量,由于他们的名字相同,所以很容易混淆,认为他们是同一变量。
- dictVar = {"key1":"value1"}//将dict指向{“key1”:”value1”}对象
其实python里面的一个变量就是PyObject*的指针变量,可以指向任意类型的对象。
- dictVar = {"key2":"value2"}
对dictVar赋值,使其指向了{“key2”:”value2”}对象,__main__模块的dictVar变量,其指向的对象则不变。
退出fun函数后,局部变量dictVar被释放,恢复主模块的作用域,dictVar仍然指向{“key1”:”value1”}
关于python对象的理解
test2.py
- # -*- coding: gbk-*-
- def f(dictVar):
- print "赋值前 dictVar:",dictVar
- dictVar.update({"key2":"value2"})
- print "赋值后 dictVar:",dictVar
- if __name__== "__main__":
- dictVar = {"key1":"value1"}
- print "调用函数前 dictVar:", dictVar
-
- print "调用函数"
-
- f(dictVar)
-
- print "调用函数后 dictVar:", dictVar
dictVar.update({"key2":"value2"})是在{“key1”:”value1”}dict对象上操作的,dictVar在同一对象上操作,所以该对象的值改变了。
0 0
- Python局部变量、对象的理解
- python对象、引用、全局变量和局部变量的关系
- 全局变量,静态变量,局部变量的理解
- python的全局局部变量
- 黑马程序员------面向对象(No.1)(面向对象的理解、成员变量、局部变量、匿名对象)
- 对Javascript局部变量的理解
- C 程序局部变量压栈出栈的理解
- JS全局变量与局部变量的理解
- 理解js的全局变量和局部变量
- C++关于局部变量的一些理解
- 局部变量线程安全的理解
- python函数参数的理解,对象和变量
- Python的类变量和成员变量以及局部变量
- python局部变量的一些小记
- python的局部变量和全局变量
- python的全局变量和局部变量
- Python多线程下的全局变量、局部变量
- python的全局变量与局部变量
- Swift 学习笔记之基础
- boost.xpressive
- 设计模式-单例模式
- C++回顾之深浅拷贝、禁止拷贝、空类的默认成员
- lua,python,c++
- Python局部变量、对象的理解
- 编程愚蠢错误~~~~~~~~~~~
- Lua栈介绍以及实例
- 小菜的c++学习之路~~
- fastjson 使用方法
- 远程调试hadoop各组件
- 民族语文翻译局局长阿里木江·沙比提
- 黑马程序员——————————面向对象3
- vector 容器