您的位置:首页 > 编程语言 > Python开发

Python的参数传递

2015-11-15 00:27 513 查看


聊聊python的类变量和实例变量

13 小时前• coco • Python , 面试

类变量就是供类使用的变量,实例变量就是供实例使用的

class Person:

name="aaa"
p1=Person()

p2=Person()

p1.name="bbb"

print p1.name # bbb

print p2.name # aaa

print Person.name # aaa

这里p1.name="bbb"是实例调用了类变量,这其实和上面第一个问题一样,就是函数传参的问题,p1.name一开始是指向的类变量name="aaa",但是在实例的作用域里把类变量的引用改变了,就变成了一个实例变量,self.name不再引用Person的类变量name了.

可以看看下面的例子:

class Person:

    name=[]
p1=Person()

p2=Person()

p1.name.append(1)

print p1.name  # [1]

print p2.name  # [1]

print Person.name  # [1]

这个知识你get了吗?


面试中关于Python的参数传递

3 天前• coco •5 评论 • Python , 面试

先看代码:

Python

1234a = 1def fun(a):a = 2print a #1
################Python

1

2

3

4

b
=
[]

def
fun(b):

b.append(1)

print
b
#1

上面两个分别输出的到底应该是哪一个呢?
这里首先需要弄清楚的就是可变(mutable)对象与不可变对象(immutable),在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象,当一个引用传递给函数的时候,函数自动复制一份引用,所以第一个不可变对象对于a值的引用和外面a= 1没有半毛线关系,而下面的应用则是指向对象本身的引用,那么输出的值自然就是1了,这个知识点你get了吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: