I. 常见的函数
长度 | len() |
数据类型 | type |
返回值 | return 表达式:函数中没有return 或return 后面为空,返回值为None |
输入 | input |
替换 | 字符串.replace("旧值","新值”,指定次数) |
查找 | find(字符串片段,起始位置):寻找字符串中的子字符或子字符串,找到返回索引(下标) , 找不到返回-1【从前往后找,只返回第一个位置】 |
随机数 | random
a.随机生成0-1之间的浮点数: random.random()【范围不写,且边界值包含0,不包含1】
|
查找元素的个数 | count() |
将字母转为大写 | 字符串.upper() |
将字母转为小写 | 字符串.lower() |
获取数据内存地址 | id(data) |
数据统计 | min:求最小值 max:求最大值 sum:求和 |
识别字符串中的python表达式 | eval(字符串)
s1 = "[11,22,33]" print(eval(s1)) # [11,22,33] |
聚合打包 | zip(以最短的为标准)
列表转成列表元组形式 : list(zip(list1,list2)) li = ["name","age","gender"] li2 = ["timer",17,"女"] res = list(zip(li,li2)) # 转成列表-元组形式 res2 = dict((zip(li,li2))) # 转成字典形式 print(res,type(res)) # [('name', 'timer'), ('age', 17), ('gender', '女')] <class 'list'> print(res2,type(res2)) # {'name': 'timer', 'age': 17, 'gender': '女'} <class 'dict'> |
获取列表/字符串/元组/每个元素和对应的下标 |
enumerate()返回[(下标1,元素1),(下标2,元素2)] s = "sfsdgfsk" li2 = enumerate(s) # [(0, 's'), (1, 'f'), (2, 's'), (3, 'd'), (4, 'g'), (5,'f'), (6, 's'), (7, 'k')] |
过滤器函数 |
filter(规则函数,数据) datas = [ {'case_id': 1, 'case_title': '用例1', 'url': 'www.baidu.com', 'data': '001','expect': 'ok'}, {'case_id': 2, 'case_title': '用例2', 'url': 'www.baidu.com', 'data': '002','expect': 'ok'}] def fun(data): return data['case_id']>1 data = filter(fun,datas) print(list(data)) # 等效于data = filter(fun,datas) list3 =[] for i in datas: result = fun(i) list3.append(i) |
去空格 |
去首尾空格:strip(),去左空格:lstrip() ,去右空格:rstrip() |
II.函数的规范
(1)小写字母分开,不能以数字开头,不同的字母之前用下划线隔开
(2)特点:可重复使用
III. 定义函数
(1)定长参数 : def 函数名(参数名1,参数名2...)
def make_sandwich(a,b): print("你的三明治包含了{0}{1}".format(a,b)) make_sandwich('生菜','鸡蛋')
(2)动态参数 : def 函数名(*args) 【传入的值必须是元组,arg:argument 】
def make_sandswich1(*args): print("你的三明治包含了{}".format(args)) make_sandswich1('生菜','鸡蛋','培根','蟹棒') # 你的三明治包含了('生菜', '鸡蛋', '培根', '蟹棒') def make_sandswich2(*args): all = '' for item in args: all += item all += '、' print("你的三明治包含了{}".format(all)) make_sandswich2('生菜','鸡蛋','培根','蟹棒') # 你的三明治包含了生菜、鸡蛋、培根、蟹棒、
(3)关键字参数 : def 函数名(**kwargs) 【传入的值为字典:key = key1,value = value1 】
def kw_function(**kwargs): print("{}".format(kwargs)) kw_function(x='1',y='2') def add_all_num(b=7,*L,a): sum = 0 for item in L: sum += item print('b的值', b) print('和为',sum) print('a的值',a) add_all_num(1,5,10,79,a=7)
(4) 必需参数 : def 函数名(a,b) 【 定义了几个,就传入几个 】
(5) 默认参数 : 定义的时候给参数设置默认值 【 调用时可以不传值,若传值则使用传入值 】:
注意1:默认参数必须放在位置参数(形参)后面
注意2:调用函数中的参数赋值,若部分赋值,add(100,k=3)【前提:未赋值的参数,必须有默认参数】
IV. 调用函数
(1)位置参数:通过位置传递参数(按顺序传递,第一个实参,传给第一个形参)
(2)关键字传参:通过参数名指定传给某个参数(传参的时候,不考虑参数的位置关系)
def num(a,b): pass num(1,2) # 传入的参数是实参--->位置参数 num(a=1,b=2) # 关键字参数
V. 调用函数参数拆包(参数和值必须对等)
(1) 拆元组,列表*
def func(a,b,c): pass data = [11,22,33] func(*data) # ====>func(11,22,33) a=11,b=22,c=33
(2)拆字典**
dic = {"a":11,"b":22,"c":44} func(**dic) # ======>func(a =11,b=22)
VI.变量
(1)全局变量 : 模块里面都能用 ,声明全局变量 -- global 变量名
(2)局部变量 : 函数的局部变量只能用于函数
注意1:函数内部如果要修改全局变量,先声明全局变量global,重新赋值
注意2: 当全局和局部变量同名且同时存在时,函数优先调用局部变量 ;当局部变量没有时,用全局(由内到外)
例如:区分全局变量与局部变量
a = 1 #全局变量 def add(b): a = 5 # 局部变量 print(a+b) add(10) #10+a=5 print(a) #1
例如:global声明全局变量
a = 1 #全局变量 def add(b): global a #声明这是一个全局变量 a = 10 print(a+b) add(10) #10+a=5 print(a) #10,相当于给a=1再次赋值a=10
VII.反射(动态属性设置)
(1)setattr(类对象名,属性名(字符串类型),赋值) : 修改类对象的属性
- 可以替代init(初始化方法),如果属性名变化的情况下,推荐用setattr
class GetData: cookies = '小刘' setattr(GetData,'cookies','小花') print(GetData.__dict__) # 等效写法 class CaseData: pass def work(data): # 创建一个新list new_data = [] # 遍历列表 for i in data: # 每条用例,创建一个对象 case = CaseData() # 遍历当前字典所有数据 for k, v in i.items(): setattr(case,k,v) # 将设置好数据的对象,加入到列表中 new_data.append(case) return new_data data = [{'case_id': 1, 'case_title': '用例1', 'url': 'www.baidu.com', 'data': '001', 'expect': 'ok'},{'case_id': 2, 'case_title': '用例2', 'url': 'www.baidu.com', 'data': '002', 'expect': 'ok'}] data = work(data) print(data)
(2) getattr(类对象名,属性名) : 获取类对象的属性值
class GetData: headers = {'X-Lemonban-Media-Type': 'lemonban.v2','Content-Type': 'application/json; charset=UTF-8','Authorization':None} getattr(GetData,'headers')
(3) hasattr(类对象名,属性名) : 判断是否有类属性,有返回True
hasattr(GetData,'cookies')
(4)delattr(类对象名,属性名) : 删除类属性
delattr(GetData,'cookies')
注意: 获取对象的属性,字典格式值返回 --》 对象名._ _dict _ _
A.【def 函数名[参数]中的参数】:默认参数必须放在位置参数(形参)后面
B. 调用函数中的参数赋值:未赋值的参数,必须有默认参数