面试常考(python)

Python语言特性

1.Python的函数参数传递

a=1
def fun(a):
    a = 2
fun(a)
print a # 1
a=[]
def fun(a):
    a.append(1)
fun(a)
print a # [1]

2.元类 metaclass

metaclass 允许创建类或修改类
通常ORM框架中使用,只有使用者才能根据表结来动态地设计出对应的类。

3. @staticmethod @classmethod

||实例方法|类方法|静态方法|
|:--|:--|:--|:--|
|a = A()|a.foo(x)|a.class_foo(x)|a.static_foo(x)|
|A|不可用|A.class_foo(x)|A.static_foo(x)|

4.类变量 实例变量

5.自省机制

6.单下划线和双下划线

foo:一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突.

_foo:一种约定,用来指定变量私有.程序员用来指定私有变量的一种方式.

__foo:这个有真正的意义:解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名.

7.字符串格式化%和.format

8.字典推导

9.迭代器和生成器

http://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python

10.*args and **kwargs

11.面向切片编程和装饰器

12.鸭子类型

13.Python中的重载

Python可以接受任何类型的参数并且可用缺省参数,故不需要重载。

14.新式类和旧式类

15. newinit区别

1.new是一个静态方法,而init是一个实例方法.
2.new方法会返回一个创建的实例,而init什么都不返回.
3.只有在new返回一个cls的实例时后面的init才能被调用.
4.当创建一个新实例时调用new,初始化一个实例时用init.

16.单例模式

你可能感兴趣的:(面试常考(python))