测试奇谭,BUG不见。
其实很久之前,就有身边的同事或者网友让我分享一些关于python编程语言的教程,他们同大多数自学编程语言的人一样,无外乎遇到以下这些问题:
- 网络上的资料过多且良莠不全,不知道如何分辨;
- “冗余”知识太多,初学不知如何下手;
- 既想掌握一门编程语言,又不想花费过多时间。
作为半路出家的非科班测试人,我在求知路上,同样遇到过这些问题,走过不少弯路,但所幸我战胜了它!
所以,我特别爱讲一句话:办法总比问题多。
当你看到这里时,我不想给你灌更多的鸡汤,简言之:学会python,真的很有用!
这个有用,并不是指学会python,你便能做自动化测试、能拿到更高的工资、能更好的就业等等,而是你要理解到python对于你工作方式的改变,并认识编程语言只是一种工具。
就好比我可以用文本对比软件,取代人工逐字比对——前者大大提升了你的工作效率。
python亦如此,它能显著的提升你的工作效率,也能改进你工作的思维方式。
这种隐性的、思维性技能的升级,才是对你最大的帮助,哪怕你以后不再继续从事测试职业。
希望这些“废话”对你有用。
接下来谈正题,我就最近两月给组内测试做培训的内容,给大家分享一套极简的、快速掌握python的教程。
先说说教程目的:你能依葫芦画瓢,上手可用。
再说说教程内容:大部分是我平时编码中用得比较多的场景,解决你不知道学什么的烦恼,避免初学时摄入过多“冗余”知识。
这一场,主讲python的变量类型。
目标:熟悉python中的基础变量类型,以及我们该重点关注的知识点。
说明:Python 中的变量赋值不需要类型声明。
常用的python变量类型是:
counter = 100 # 整型miles = 1000.0 # 浮点型name = "John" # 字符串py_list = [123, \'john\'] # 列表py_tuple = (123, \'john\') # 元组py_dict = {\'name\': \'runoob\',\'code\':6734, \'dept\': \'sales\'} # 字典
整型和浮点型,就是整数和小数,学过数学的都清楚,没什么说的,我从字符串开始说起。
字符串
【常用场景1】格式转换,eg:字符串、json 、字典类型之间的转换
# 内置函数-字符串转jsonstr1 = "{\'key\':1,\'value\':2}"eval(str1)# 一般转换采用此方法,但它有个问题,如果json中有null值,则无法使用,这时需要用到json库import jsonjson1= \'{"key":null,"value":2}\'dicts = json.loads(json1) # 可将json的null替换为python能识别的Noneprint(dicts)
【常用场景2】单双引号使用
# 双引号中的双引号需要转义string1 = "hello,my,\\"god\\" "# 单引号中的双引号不需要转义string2 = \'hello, my "god" \'
【常用场景3】多引号使用
# 比如我们需要在py文件里写一条sql语句sql_a = \'select * from asset where asset_create_at >= "2018-08-01" \'# 注意每一个右引号左边都需要空格,写代码特别麻烦sql_b = (\'select * \'\'from asset \'\'where asset_id = "123456";\')sql_c = \'\'\'select * from asset where asset_create_at >= "2018-08-01"\'\'\'# 也可以在三个引号内随意写,这种写法更加方便,但要注意,实际字符串是包含了三行,即sql前面换行的\\n和sql后面的换行\\n(其实无伤大雅)
列表
列表的索引 重点必须掌握!!!
lst = [\'a\', \'b\', \'c\',\'d\',\'e\',\'f\']lst.append(\'g\') # 在列表尾部添加值lst.pop(0) # 删除索引位置的值lst[0] # 取index=0的值lst[1:3] # 取index从0开始(不包括),到index=3的值
列表遍历迭代 重点必须掌握!!!
li = [\'a\', \'b\', \'c\', \'d\', \'e\']# 一般的遍历for i in li:print(i)# 带索引的遍历for i, e in enumerate(li):print("index:",i,"element:",e)
【拓展场景1】:多列表迭代
# 循环嵌套# 缺点:代码复杂度高x_list, y_list, z_list = [], [], []for x in x_list:for y in y_list:for z in z_list:None# itertools标准库# 缺点:不方便调试from itertools import productfor x, y, z in product(x_list, y_list, z_list):None
【拓展场景2】:交集、并集、差集
a=[2,3,4,5]b=[2,5,8]# 交集print(list(set(a).intersection(set(b))))# 并集list(set(a).union(set(b)))# 差集list(set(b).difference(set(a))) # b中有而a中没有的list(set(a).difference(set(b))) # a中有而b中没有的
元组
如何理解:可以将元组当成不可编辑的list(一般很少用到该类型)
(\'a\',\'b\',\'c\',\'d\')
字典
如何理解:key-value键值对
取值 重点必须掌握!!!
personinfo = {\'name\': \'joe\', \'age\':\'20\', \'hobby\':\'football\'}personinfo[\'name\']
遍历迭代 重点必须掌握!!!
personinfo = {\'name\': \'joe\', \'age\':\'20\', \'hobby\':\'football\'}for k, v in personinfo.items():print(k, v)
【实用场景1】合并和复制
# 合并date_info = {\'year\': "2020", \'month\': "01", \'day\': "01"}track_info = {\'artist\': "Beethoven", \'title\': \'Symphony No 5\'}all_info = {**date_info, **track_info}# 添加值date_info = {\'year\': \'2020\', \'month\': \'01\', \'day\': \'7\'}event_info = {**date_info, \'group\': "Python Meetup"}# 在复制/合并字典的同时重写特定的值event_info = {\'year\': \'2020\', \'month\': \'01\', \'day\': \'7\', \'group\':\'Python Meetup\'}new_info = {**event_info, \'day\': "14"}
【实用场景2】json和字典的转换 重点必须掌握!!!
import jsondata = {"spam" : "foo", "parrot" : 42} # 把python对象转换成jsonpython_to_json = json.dumps(data)print(python_to_json)json_to_python = json.loads(python_to_json) # 将json转换成python对象print(json_to_python)
拓展
isinstance:用来判断对象的类型,也可以判断一个对象是否是一个类的实例
# 【常用场景1】:判断对象的类型py_int = 1py_str = \'a\'py_list = [\'a\',\'b\']py_dict = {\'a\':1,\'b\':2}isinstance(py_int, int)# 【常用场景2】:一个对象是否是一个类的实例class C():passcc = C()isinstance(cc, C)
format:用于组装和格式化数据
# 【常用场景1】:装载字符串py_str = "hello {0}".format("world")py_str = "hello {}{}".format("great","world!")# 【常用场景2】:装载列表a = [1,2]py_list = \'列表第一个: {0}; 列表第二个: {1}\'.format(a[0],a[1])py_list = \'列表第一个: {0[0]}; 列表第二个: {0[1]}\'.format(a)# 常用场景3:装载字典student = {"name": "zhao", "age": 5}"My name is {} and my age is {}".format(student[\'name\'],student[\'age\'])"My name is {pig[name]} and my age is {pig[age]}".format(pig=student)
一如既往,做个总结
01 python的变量是python语法基础中的基础,重要中的重要;
02 一定要上手实操一遍。