基础复习-python
Python 有哪些数据类型?
- 整型
- 列表
- 元组
- 字典
- 字符串
- 集合
- 布尔
有哪些标准数据类型?
- 整型
- 列表
- 元组
- 字典
- 字符串
- 集合
is 和 == 的区别?**
- 比较的是两个对象的 id 值是否相等 ,id 就是对象的内存地址
- == 是比较两个对象的内容是否相等,默认会调用对象的 eq() 方法
*n=256, n1=256, n is n1 是 false 还是 true?*
true
n=257, n1=257, n is n1 是 false 还是 true?
- 如果是不同代码块内容执行就是 false
- 如果是同代码块就是 true
不可变对象和可变对象的区别?
- 可变对象:对象存放在地址中的值不会被改变
- 不可变对象:对象存放在地址中的值会直接改变
不可变对象和可变对象从内存出发说下有什么区别?
不可变对象
- Python 中的变量存放的是对象引用
- 不可变对象是指对象本身不可变
- 变的只是创建了新对象,然后变量改变了对象引用,指向了新对象,就对象会被垃圾回收
可变对象
变的是原来对象的内容,不会创建新对象,而变量也是指向原对象
字符串是可变对象还是不可变对象?
不可变对象
有哪些可变对象,哪些不可变对象?
- 不可变对象:字符串、元组、整形
- 可变对象:数组、字典、集合
怎么判断这个字符串是否为字典里面的键?还有其他方法吗?
简单的方法
"key" in dicts "key" in dicts.keys()
复杂的方法一
for i in dicts.keys(): if i == "key": print(True)
复杂的方法二
if dicts.get("key"): print(True)
range、xrange 的区别?
- xrange 是 python2 的东西,在 python3 里已弃用,range 在 python2、3 都有
- xrange 是一个类,返回的是一个 xrange 对象
- range 是一个函数,返回的是一个列表
Python 有用过哪些库?
标准库:
- os:提供多种操作系统功能接口的模块
- sys:提供 Python 运行环境的变量、函数的模块
- random:随机数
- math:数学
- datetime:基本的日期、时间类型
- time:时间的访问、转换
- pprint:美观打印
- hashlib:哈希库
- pathlib:文件系统路径库
- logging:日志工具
- json:JSON 解码、编码
- re:正则表达式
第三方库:
- requests:HTTP 请求
- pandas:分析结构化数据的库,比如 excel
- numpy:数学计算库
- pytest:单元测试框架库
- allure:测试报告库
- selenium:ui 自动化测试库
- appium:APP 自动化测试库
Python 对象和 json对象互转?
json.dumps()
json.loads()
Python 读取一个文本文件要怎么实现?
- open(file)
- with open(file) as
Python 里面什么叫模块?
任何一个 .py 结尾的 python 文件
from.. import 和 impot 有什么区别?
- import 导入的最小单位是模块,不能是变量、函数名、类名
- from.. import 导入的最小单位可以是变量、函数名、类名
Python 解析 XML 有哪些方式?
- SAX
- DOM
- ElementTree
Python 常见的异常?你遇到过得到异常有哪些?
- BaseException:所有异常的基类
- ValueError:无效参数值
- TypeError:无效参数类型
- SyntaxError:语法错误
- KeyError:找不到此键
- IndexError:找不到索引
- AttributeError:找不到属性
- ImportError:导入错误
- ZeroDivisionError:除0错误
Python 2.0 和 3.0 有什么区别?大方面的总结
- 表达式
- range
- 不等于操作
- 编码
- 中文字符字节数
Python 的装饰器是什么?
- 本质上是一个 Python 函数
- 为已存在的方法提供额外的功能
- 可以将大量与方法本身提供的功能无关的代码提取出来,方便重用
Python 的装饰器一般是用来干嘛?
可以直接用框架提供的装饰器,也可以自己写装饰器
一般会用到 pytest、allure 的装饰器,自己写的有
- 异常捕捉:会给自己封装的每个方法加上这个异常捕捉装饰器,如果调用的封装方法报错了,就会进入这个装饰器,捕捉到指定异常后,我会刷新页面,再次执行刚刚报错的封装方法,然后会记录一次失败日志
- 日志:一般自己封装的方法都希望有日志,那如果每个封装的方法里单独调用日志类就会显得很臃肿重复,所以可以用一个日志装饰器代替
- 前置操作:比如多个方法执行前都需要调用同一个方法,那可以将依赖方法写在装饰器中
- 后置操作:比如每次执行方法后都需要还原数据集,可以将清理操作写在装饰器中
- 权限校验:执行方法前先进行权限校验,校验通过才会允许执行方法
Python 的迭代器和生成器的区别?
- 生成器是生成元素的,迭代器是访问集合元素的一种方式
- 迭代器输出生成器的内容
- 迭代器是一种支持 next() 操作的对象
深拷贝和浅拷贝的区别?
深拷贝和浅拷贝的实际场景?
for else
如果for循环未被break终止
才会执行else中的语句
for i in range(5):
if i == 3:
break
else:
print '嘿嘿'
输出结果是:无
迭代器
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
print(next(it))
print(next(it))
结果为:1,2
生成器
可以理解为返回迭代器的函数
def fibonacci(n): # 生成器函数 - 斐波那契
a=0
while 1:
yield a
a+=1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
print(next(f))
print(next(f))
print(next(f))
结果为 :1,2,3
过滤函数:fileter
ls = filter(lambda n:n%2,[2,3,4,5,5,6,6,7,7,8]) # 过滤出列表中所有的奇数
print(list(ls))
结果[3, 5, 5, 7, 7]
更多学习笔记移步
https://www.cnblogs.com/kknote