python 数据类型
python的数据类型
- 不可变类型: number、string、tuple
- 可变类型: list、 set、 dict
- 获取数据类型: print(type(xxxxx))
- 有序数据类型: list
- 无序数据类型: dict
# number
data_one = 1
# string
data_two = "str"
# float
data_three = 9.2
# boolen
data_four = False
# list
data_five = [1, 2, 3]
# tuple
data_sex = ("xxxxx", 111)
# dict
data_seven = {"name": "albert", "sex": "man"}
# set
data_eight = {1, "b", 3, 4, "a"}
字符串操作
- len(), 字符串长度
- 获取单个字符,索引, mystr[1], 索引从 0 开始
- 如果使用索引超出范围,会报 indexError print(name[100])
- .format:"my str {}".format(变量1) 往占位符里面放数据
切片
- 切皮用法: name[start: end : step], 去左边, 不取右
- start: 包含,从某个下标位置开始
- end : 不包含,某个下标位置结束, 取左边, 不取右
- step: 切片, 1不跳过,2 每隔一个取值,3 每隔连个取值
- 如果切片超出,获取剩下所有的值, 不会报错 print(name[1:100])
- 默认从左往右, 如果为负数则从右往左
name = "albert"
print(name[0:1]) # 结果为 a
print(name[3:]) # 结果为 ert
print(name[:3]) # 结果为 alb
print(name[:]) # 结果为 albert
# 切片跳级, step, 步长
print(name[::2]) # 结果为abr
字典 dict
- 字典是无序的数据类型
- 每个键都有 key:value
- value可变,key不可变
data_dict = {"name": "albert", "age": 18}
# 字典新增
data_dict['sex'] = "man" # 输出结果{'name': 'albert', 'age': 18, 'sex': 'man'}
# 删除 通过key删除
data_dict.pop("age") # 输出结果{'name': 'albert', 'sex': 'man'}
# data_dict.popitem() # 随机删除字典中的key value
# 字典清空
data_dict.clear() # 输出结果 {}
print(data_dict)
print(data_dict.key()) # 获取字典的key
print(data_dict.values()) # 获取字典的value
print(data_dict.items()) # 获取字典的 (key, value)
元组
- 不可变, 如何元组中有可变类型,则可以修改可变类型中的数据
- set, 主要是用来去重,无序的
- split() 分割 以。。。将数据分割开
type_demo = (1, 2, 2, 3, 4, 5, 5)
print(type_demo)
set_demo = list(set(type_demo))
print(set_demo)
split = "hello word"
split_a = split.split(" ")
print(split_a) # 结果为['hello', 'word']
函数
- 可重复使用,用来实现单一,或相关联功能的代码段
- 提高应用的模块性,和代码的重复利用性,print()就是一个函数
- 以 def关键字开头, 后面是 函数名 和圆括号()
- 传入的参数和自变量需要放到圆括号中,圆括号之间可用于定义参数
- 函数以冒号起始,并缩进
- return表示结束函数,返回一个值给调用方,不带表达式的return返回 None
def f(x):
y = x + 11
return y
print(f(1))
模块
- 可一个python文件,以 .py结尾,包含了python对象定义和python语句
- 模块能定义函数、类和变量,模块里也能包含可执行的代码
- 模块导入
- from 包名.包名.xxxx.模块名 import 类名or函数名or变量名
import pytest
pytest.main(["-m", "demo", "-s", "-v", "--alluredir=Outputs/allure_reports"])
OS文件/目录方法
os.path.abspath(__file__) # 获取当前路径
os.path.dirname(os.path.abspath(__file__)) # 获取上一个目录
os.path.join(a, "xxx.txt") # 路径拼接
- 打开文件, open内置函数, open(path/文加名)
- 读取文件 f.read()
- 关闭 f.close()
import os
dir_name = os.path.driname(os.path.abspath(__file__))
file = os.path.join(dir_name,"file.txt")
f = open(file, 'w+', encoding='utf-8')
print(f.read())
异常
- 捕捉异常try/except语句
- 如果不想在异常发生时结束你的程序,只需要写在 try里面
- 当try后的语句执行时发生异常,python会跳会try 并执行 except子句
- 如果try语句中执行么有异常,则执行 eles语句
- try-finally 语句无论发生什么都会执行这一段
- raise手动抛出异常
class ReadYamlFile:
try:
f = open(config.yaml_path, encoding='utf-8')
data = yaml.load(f, Loader=yaml.FullLoader)
except Exception as e:
print(e)
finally:
f.close()
面向对象
- 类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。包含:
- 类属性/类变量(特征) hobby = "吃瓜"
- 构造函数 __init__
- 实例化属性
- self代表类的实例,self在定义类的方法时是必须有的
- 实例方法(行为)
- 静态方法; 用@staticmethod 标识方法,就是放在类下面的普通函数
- 类名是标识符
- 字母、数字、下划线、不能以数字开头
- 不能是关键字
- 大驼峰式命名: TestClass
class TestClass:
# 类属性 特征
hobby = "吃瓜"
# __init__函数, 称之为 初始化方法或累的构造函数,当创建一个类的时候就会调用这个方法
def __init__(self, name, age):
# 实例化属性
self.name = name
self.age = age
@staticmethod
def static_method():
print("这是一个静态方法")
# 实例方法 行为
def job(self):
print("{} 要找工作".format(self.name))
print(TestClass.hobby)
TestClass("albert", 19).job()