最新python面试题100(解析).docxVIP

  • 8
  • 0
  • 约3.95万字
  • 约 95页
  • 2021-12-08 发布于天津
  • 举报
Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = l def fun(a): a = 2 fun(a) print(a) # 1 代码二: a = [] def fun(a): a.append(l) fun(a) print(a) # [1] 所有的变量都可以理解是存中一个对象的〃引用〃,或者,也可以看似C中void 的感觉。 这里记住的是类型是属于对象的,而不是变量。而对象有两种,可更改(mutable ) 与不可更改(immutable )对象。在 python 中,strings, tuples,和 numbers 是不可更改的对象,而listdct等则是可以修改的对氮(这就是这个问题的重点) 当一个弓I用传递给函数的时候函数自动复制T分弓I用,这个函数里的弓I用和夕卜边的 弓I用没有半毛关系了所以第一个例子里函数把弓I用指向了 f 不可变对象当函数 返回的时候外面的弓I用没半毛感觉?而第二个例子就不一样了屈数的弓I用指向的是 可变对象,对它的操作就和定位了指针地址一样,在存里进行修改. Python 中的元类(metaclass) 元类就是用来创建类的东西。你创建类就是为了创建类的实例对象,但是我们 已经学习到了 Python中的类也是对象。好吧,元类就是用来创建这些类(对象) 的,元类就是类的类 这个非常的不常用,详情请看:《深刻理解Python中的元类(metaclass)》 staticmethod 禾口 classmethod Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例 方法,如下: class A(object): def foo(self,x): print ”executing foo(%s,%s)H%(self.x) classmethod def class_foo(cls,x): print( executing class_foo(%s,%s)H%(cls,x)) staticmethod def static_foo(x): print (^executing static_foo(%s)H%x) a=A() 这里先理解下函数参数里面的self和cis.这个self和cis是对类或者实例的绑定.对 于实例方法,我们知道在类里每次定义方法的时候都需要绑定这个实例,就是 foo(self, x),为什么要这么做呢?因为实例方法的调用离不开实例,我们需要把实 例自己传给函数,调用的时候是这样的a.foo(x)(其实是foo(a, x)).类方法一样, 只不过它传递的是类而不是实例,A. class_foo(x).注意这里的self和cis可以替换 别的参数但是python的约定是这俩,还是不要改的好. 对于静态方法其实和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时 候需要使用 a.static_foo(x)或者 A. static_foo(x)来调用. \ 实例方法 类方法 静态方法 a 二 A()a.foo(x)a.class_foo(x) a 二 A() a.foo(x) a.class_foo(x) a.static_foo(x) 实例方法类方法静态方法A.class_foo(x)A.staticjoo(x) 实例方法 类方法 静态方法 A.class_foo(x) A.staticjoo(x) 4类变量和实例变量 class Person: name=Haaa pl=Person() p2=Person() =bbbH print() # bbb print() # aaa print(P) # aaa 类变量就是供类使用的变量,实例变量就是供实例使用的. 这里=-bbb-是实例调用了类变量,这其实和上面第一个问题一样,就是函数 传参的问题,pl. name —开始是指向的类变量name=”aaa “,但是在实例的作用域里把 类变量的弓I用改变了,就变成了一^实例变量不再引用Person的类变量 name 了. 可以看看下面的例子: class Person: name=[] pl=Person() p2=Person() .append( 1) print() #[1] print() # (1] print(P) # [1] 5 Python 自省 这个也是python彪悍的特性. 自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型?简单一句就是 运行时能够获得对象的类型上匕如 type(),di「(),getattr(),hasattr(),isinstance(). 6字典推导式 可能你见过列表推导时,却没有见过字典推导式,在2.7中才加入的:

文档评论(0)

1亿VIP精品文档

相关文档