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()

面向对象

  •  
  1. 类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。包含:
    • 类属性/类变量(特征)  hobby = "吃瓜"
    • 构造函数 __init__
      • 实例化属性
      • self代表类的实例,self在定义类的方法时是必须有的
    • 实例方法(行为)
    • 静态方法; 用@staticmethod 标识方法,就是放在类下面的普通函数
  2. 类名是标识符
    • 字母、数字、下划线、不能以数字开头
    • 不能是关键字
    • 大驼峰式命名: 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()

 

posted @ 2022-05-14 19:56  JiZhaoG  阅读(126)  评论(0)    收藏  举报