python复习(一)

Python面试总结篇

  • 对input函数的理解
  • range和xrange的区别?
  • 文件的读写
  • 赋值、浅拷贝和深拷贝的区别
  • init和new的区别
  • os.path和sys.path分别代表什么
  • python中的日志

对input函数的理解

在python3中,input()获取用户的输入,不论用户输入的是什么,获取到的都是字符串
在python2中,input()输入的是什么数据类型,获取到的就是什么数据类型,如果要达到和python3中input()一样的效果,需要使用raw_input()

range和xrange的区别?

python2中有range和xrange,range返回的是一个列表,而xrange的结果是一个生成器,前者是直接开辟一个内存空间来保存列表,后者是边循环边使用,只有使用的时候才会开辟内存空间,所以在列表很长的时候,使用xrange的性能要比range好
python3中range返回的其实是一个可迭代的对象(类型是range对象),而不是列表类型

文件的读写

为了保证无论是否出错都能正确地关闭文件,python中建议使用with open的方法去操作文件

with open (file,mode,encoding) as f

注意:encoding默认为运行的操作系统的编码
建议根据文件或数据类型选择合适的mode(b二进制类型 r只读 w可读可写)

with open(“1.txt”,“r”,encoding=“utf-8”)as f:

f.read() #读取整个文本
f.readline()#按行读取文本,返回一个生成器对象,每调用一次读取一行
f.readlines() #按行读取文本,返回一个列表,包含了整个文本内容

赋值、浅拷贝和深拷贝的区别

在python中,对象的赋值就是简单的对象引用,比如

b = [1,2,3}
a=b

那么a和b的引用地址是一样了,指向了同一块内存地址,a就是b的一个别名

浅拷贝是对象的外层拷贝,即只进行了第一层的拷贝
在浅拷贝的情况下,只是拷贝了最外围的对象背身,内部的元素都只是拷贝了一个引用而已
利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用
注意:对于数字,字符串和其他原子类型,没有被拷贝的说法,即便是深拷贝,查看id的话也是一样的
通俗的说:浅拷贝只是复制了对象的引用地址,两个对象指向了同一个内存地址,所以修改其中任意的值,另一个值都会随之而变化
深拷贝是将对象以及值复制过来,两个对象修改任意的值都不会引起另外的对象的值的变化

init和new的区别

1.init通常被用作初始化一个新的实例,控制整个初始化的过程,比如添加一些属性,做一些额外的操作,发生在类实例被创建完成以后,它是实例级别的方法
2.new通常被用于控制生成一个新实例的过程,它是累级别的方法
通常可以利用new重写来实现一个单例模式
def new

os.path和sys.path分别代表什么

1.os.path是一个模块,用来处理目录以及路径相关的模块
2.sys.path是一个列表,返回解释器相关的目录列表,环境变量。注册表等初始化信息

python中的日志

python中自带logging模块,调用logging.basicConfig()方法,配置需要的日志等级和相应的参数,python解释器会按照配置的参数生成相应的日志。日志有五个等级:INFO/DEBUG/WARNING/ERROR/CRITICAL

你可能感兴趣的:(python复习(一))