【python宝典】第二章,python 基础
一、基础语法:
1、代码中修改不可变数据会抛什么异常 : 会抛 TypeError 异常
2、 a = 1, b = 2 不用中间变量交换 a 和 b 的值
a = a+b
b = a -b
a = a -b
3、简述对input()函数的理解: 在python3 中 input() 是获取用户的输入,无论用户输入的是什么类型,获取到的都是字符串类型 ,但是在python2 中input() 输入的是什么数据类型,获取到的就是什么数据类型
4、range 和xrange 的区别?
两者用法相同,不同的是range 返回的结果是一个列表,而 xrange 返回的是一个生成器,前者是直接开辟一块内存空间来保存列表,后者是边循环边使用,只有使用时才会开辟内存空间
所以当列表很长时,用xrange 性能会更好,但是 python 3 已经废弃了xrange 函数了 ,用range替代
5、read : 读取整个文件 readline :读取下一行,使用生成器方法 readlines: 读取整个文件到一个迭代器供我们遍历
6、异常 : 用 raise 方法可以抛出自定义异常
7、常用的python库有哪些?
os :操作系统 time :时间 random : 随机 pymysql : 连接数据库 threading : 线程 queue: 队列
8、常用的第三方库有哪些?
django flask requests selenium xadmin celery md5 pip install 安装的都属于第三方库
9、赋值,深拷贝,浅拷贝的区别?
在python中,对象的赋值就是简单的引用 ,赋值操作不会开辟新的内存空间,它只是复制了对象的引用,也就是说除了b 这个名字之外,没有其他的内存开销,修改了a 也就是修改了b
同理 修改了 b 也就影响了 a
浅拷贝 copy():会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用
深拷贝 deepcopy():深拷贝 拷贝的对象的所有元素,包括多层嵌套的元素,因此,它的时间和空间开销要高
10、init 和new 的区别
init 是在对象创建后,对对象进行初始化
new 是在对象创建之前创建一个对象,并将该对象的返回给 init
11、说明一下 os.path 和 sys.path 分别代表什么?
os.path: 主要是用于对系统路径文件的操作
sys.path :主要是对python解释器的系统环境参数操作(动态的改变python解释器搜索路径)
12、python中的os 模块常见方法?
https://www.runoob.com/python/os-file-methods.html
13、unittest是什么?
unittest 是python中的单元测试框架,只是共享搭建,自动化测试等功能
14、模块和包是什么?
python中,模块是搭建程序的一种方式,每一个python代码文件都是一个模块,并可以引用其他的模块,比如对象和属性
一个包含许多python代码的文件夹是一个包,一个包可以包含模块和子文件夹
15、python是强类型的动态脚本语言
动态:不使用显示数据类型申明,且确定一个变量的类型是在第一次给他赋值的时候
脚本语言:一般也是解释型语言,运行代码只需要一个解释器,不需要编译
16、谈一下什么是解释型语言,什么是编译性语言?
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序
17、python中有日志吗? 怎么用?
python有自带的logging 模块,调用logging.basicConfig()方法,设置日志的等级和相应的参数
18、python是如何进行类型转换的?
可以使用内置函数直接转换
list ---> tuple tuple(list)
tuple ---> list list(tuple)
19、python 2 和python3 的区别?
核心类差别: python3 对unicode字符的原生支持,python 2中使用ASCII码作为默认编码方式导致string有两种类型 str unicode python3 只支持unicode 的string
python3 是采用绝对路径的方式进行import,python2 是采用相对路径进行import
废弃类差异:
print 语句被python3 废弃,统一使用print函数
不相等操作"< >"符被 python3 废弃,统一使用"!= "
xrange 被python3 废弃,统一使用 range
.......
第三方工具包差异
工具安装问题
..............