python基础知识

偶尔会面试一下,然后好奋发涂墙

1.问题:python的深copy和浅copy

实现:

深copy调用copy.deepcopy()

浅copy调用copy.copy()

区别:

一般变量的赋值是传递对象的引用,譬如

a=[1,2,3]

b=a

b.append(10)

打印值会发现a和b的值相同

我们都知道python中的对象之间赋值是按照引用传递,我们上边提供的拷贝方法是引入了copy模块

如果一个对象中包含子对象,那么,浅拷贝只会拷贝父对象,子对象还是引用,随原先的值变化而变化

深拷贝是拷贝父对象及包含的子对象,两个对象完全独立,互相改变不会影响

举个栗子

2.问题:Python何种情况容易内存泄漏

首先,我们知道python有gc机制,但是,凡是代码,就有可能会出现内存泄漏

python的gc机制

python中一切皆对象,所以针对对象,引入了引用计数,并基于引用计数,实现垃圾回收机制

一般认为有gc回收,可以高枕无忧,但是,当碰到有__del__()函数对象间的循环引用是导致内存泄漏的主要原因

没有上述函数的对象间的循环引用是可以被拉力器回收的

目前为止,没有使用过循环引用,所以,当问我这个问题就懵逼了

3.问题:python有哪些数据类型

python的数据类型包括,int,booleal,float,string,list,dict,tuple,set,data

这里主要考察,一个是元祖tuple,与列表类似,其元素的值是初始化就不会再变了

一个是set和list差别,这里set中没有重复元素,其创建方法是set()

我们都知道,Java语言中数组中元素类型必须相同

4,问题:lambda函数

什么是lambda函数,称为匿名函数,匿名函数就是没有函数名的函数

譬如:a=lambda x,y:x+y

a(1,2)

5,问题:python自省

何为自省,程序在运行时知道对象的类型,而不是提前定义好类型。

6,注意

python的is是对比的地址,==是对比的值

你可能感兴趣的:(python基础知识)