python通过函数改变变量取值

严格讲应该是“通过函数调用,改变引用对象”。python中,要区分“变量名“和”对象“

如果是类的对象,是引用类型的,那么可以通过函数调用,来改变它的值:

# coding:utf-8

class Zhuo:
    def __init__(self):
        self.a=1
    def inner_add(self):
        self.a=self.a+1
    def inner_print(self):
        print 'self.a的取值为:', self.a

def play_for_fun(zz):
    zz.inner_add()

if __name__ == '__main__':
    zz = Zhuo()
    zz.inner_print()
    play_for_fun(zz)
    zz.inner_print()

运行结果:
self.a的取值为: 1
self.a的取值为: 2

如果是基本类型的变量,则这种方式不能改变变量的值。

时间: 2024-11-05 14:58:05

python通过函数改变变量取值的相关文章

数组直接做做参数传递就可以通过函数改变数组的值,为啥还需要数组的引用?

问题描述 数组直接做做参数传递就可以通过函数改变数组的值,为啥还需要数组的引用? 如题如题如题如题如题如题如题如题如题如题如题如题如题如题如题如题 解决方案 都是传参,但是数组本身的数据量可能很大,但是引用相当于一个指针,所占内存相当小.就像你送一大箱礼物给别人,和给人一个取礼物的地址一样

unwrapped与wrapped变量取值的问题

unwrapped与wrapped变量取值的问题   当我们在定义一个tableView时,是可以使用3种定义方式的,第一种就是定义成optional(AnyObject?)形式,第二种为non-optional形式(AnyObject 与 AnyObject!).   optional方式的变量在使用时是需要解包的,如下所示: 因为view.addSubview中的对象只支持解包对象(func addSubview(view: UIView))所以在添加子view的时候,需要你解包对象.  

c语言-关于环境变量取值失败

问题描述 关于环境变量取值失败 在.profile中配置好环境变量后,并执行.profile.但程序在运行中获取环境变量失败.请问这是什么原因 解决方案 在.bash_profile添加环境变量,采用:分割 然后source .bash_profile使之生效 解决方案二: 环境变量

变量取值问题

问题描述 To-高手:请教:把e.Node.Id.ToString()赋值给一个变量,e.Node.Id.ToString()取得是动态的整型的值,请问怎样判断第一次取的值和第二次是否相等,以及怎样取值,请高手指教,谢谢.我的代码(不过是不对的)strSEL_BMJG_ID=e.Node.Id.ToString();//strElse_BMJG_ID=strSEL_BMJG_ID;/*if(strSEL_BMJG_ID!=strSEL_BMJG_ID){}else{} 解决方案 解决方案二:是樹

geelementbyid(变量)取值的问题

问题描述 a.jsp窗口showmodaldialog()然后我想a.setattribute()一个变量,b页面从父窗口取出来,这样可以么?b.jspgetelementbyid("<%=request.getattribute("i")") ,但得到的是空值?求达人点醒.. 问题补充:jiulingchen 写道 解决方案 你的a.jsp里面是request.setattribute("i",你要传的值)这样过来的吗?解决方案二:不应该

变量取值交换的方法:不拘一格编程序之三

[题目]已知两变量a和b,设计一个算法,交换a与b的值. [方法1]最传统,最广泛,最著名的方法,增加一个变量,代码如下: int a, b; int c; c=a; a=b; b=c; [方法2]不增加第三个变量,交换a和b的值,代码如下: int a, b; a = a+b; b = a-b; a=a-b; 分析,设a和b的原始值为a,b 执行代码 变量a 变量b int a, b a b a=a+b a+b b b=a-b a+b a+b-b=a a=a-b a+b-(b)=a+b-a=b

看看这个变量取值的问题

问题描述 以下代码中,按理说o.i是个"全局"的变量,o.i++ 会让它的值不断增加.可是遇到问题了,在Chrome浏览器下,重复点a链接,会反复弹出 b1,a2.并没有按预期出现b3,a4,b5,a6...这种累加的情况.不理解,求指点!发贴提问前在IE8试了下,o.i的值是正常累加的.<html><head><script>var o={};o.i=0;function a(){o.i++;alert('a'+o.i);}function b()

c语言-为什么我用指针可以改变常变量的值

问题描述 为什么我用指针可以改变常变量的值 如图,能和我解释一下吗?为什么直接赋值不可以,而用指针却可以? 解决方案 肯定的啊,你定义了一个指针int *p_index; p_index就是个指针,而 *p_index便是指针p_index指向的内容,即是a. *p_index = 30 等价于 a=30. 所以你改变了p_index指针指向的内容a 解决方案二: 堆和栈 栈:存储空间小,执行效率高. 堆:存储空间大,执行效率低. 栈是本着先进后出的原则.我们所定义的局部变量和形参,都存储在栈内

《树莓派Python编程指南》——第3章 Python基础3.1 变量、值和类型

本节书摘来自华章计算机<树莓派Python编程指南>一书中的第3章,第3.1节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问"华章计算机"公众号查看. 第3章 Python基础 在前面章节中,我们直接深入Python程序中,希望能够给你一个概念--什么是Python.但你还不清楚它具体是如何工作的.本章中,我们将回答这些问题,并详细介绍如何在Python中创建自己的程序.在后继的章节中,我们将分别介绍Python的不同特性,帮助你为树