python面试卷100.docPython语言特性1Python的函数参数传递看两个如下例子,分析运行结果:代码一:a=1deffun(a):a=2fun(a)print(a)#1代码二:a=[]deffun(a):(1)fun(a)print(a)#[1]所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。这里记住的是类型是属于对象的,而不是变量。而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings,tuples,和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点)当一个引用传递给函数的时候,函数自动复制一份引用,,当函数返回的时候,,函数内的引用指向的是可变对象,对它的操作就和定位了指针地址一样,(metaclass)元类就是用来创建类的“东西”。你创建类就是为了创建类的实例对象,但是我们已经学习到了Python中的类也是对象。好吧,元类就是用来创建这些类(对象)的,元类就是类的类这个非常的不常用,详情请看:《深刻理解Python中的元类(metaclass)》******@staticmethod和***@classmethodPython其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: classA(object): deffoo(self,x): print"executingfoo(%s,%s)"%(self,x) ***@classmethod defclass_foo(cls,x): print("executingclass_foo(%s,%s)"%(cls,x)) ***@staticmethod defstatic_foo(x): print("executingstatic_foo(%s)"%x) a=A(),我们知道在类里每次定义方法的时候都需要绑定这个实例,就是foo(self,x),为什么要这么做呢?因为实例方法的调用离不开实例,我们需要把实例自己传给函数,(x)(其实是foo(a,x)).类方法一样,只不过它传递的是类而不是实例,(x).注意这里的self和cls可以替换别的参数,但是python的约定是这俩,,不需要对谁进行绑定,(x)(x)来调用.\实例方法类方法静态方法a=A()(x)(x)(x)(x)(x)4类变量和实例变量classPerson: name="aaa" p1=Person()p2=Person()="bbb"print() #bbbprint() #aaaprint() #aaa类变量就是供类使用的变量,="bbb"是实例调用了类变量,这其实和上面第一个问题一样,就是函数传参的问题,="aaa",但是在实例的作用域里把类变量的引用改变了,就变成了一个实例变量,:classPerson: name=[] p1=Person()p2=Person()(1)print() #[1]print() #[1]print() #[1],(),dir(),getattr(),hasattr(),isinstance().6字典推导式可能你见过列表推导时,却没有见过字典推导式,:d={key:valuefor(key,value)initerable}7Python中单下划线和双下划线12345678>>
python面试卷100 来自淘豆网m.daumloan.com转载请标明出处.