吐血整理了一周的Python面试题,每道题都加上了详细的独家解析,高频考点都涉及到了,刷完这套题,希望你帮助你面试顺利~
涉及到垃圾回收机制、内存管理、迭代器生成器等高频考点。
1、什么是值传递、引用传递?
值传递是传递变量的值,不会改变函数外面变量的值。不可变对象(比如strings, tuples, 和numbers)用的是值传递。
引用传递是传递对象的地址,会改变对象本身的值,可变对象(比如list, dict, set)用的是引用传递。
2、什么是实参、形参?
形式传参:在定义函数时,函数名后面括号中的参数为“形式参数”,也称为形参。
实际参数:在调用函数时,函数名后面括号中的参数为“实际参数”,也称为实参。
def fun(a): # 这里的a是形参
a = 2
a = 1
fun(a) # 这里的a是实参
3、下面这个代码,最终输出的结果是多少?为什么?
a = 1
def fun(a):
a = 2
fun(a)
print a
答案:
输出结果是1,因为a = 1,是Number类型的对象。Number属于不可变对象,这样实参的值传给形参的时候,会使用值传递,只会用实参的值来初始化形参的存储单元,也就是说实参和形参会是两个不同的存储单元,所以函数里面进行的赋值操作,不会改变函数外面变量的值。
4、什么是元类?
所有对象都是实例化或者调用类而得到的,python中一切都是对象,通过class关键字定义的类本质也是对象,对象又是通过调用类得到的,因此通过class关键字定义的类肯定也是调用了一个类得到的,这个类就是元类。type就是Python内置的元类。
5、在python中,什么是构造函数?
在创建类时,我们可以手动添加一个 __init__() 方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。
构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python 解释器都会