简介
python2 ,python3
解释型语言
常用方法
方法名 | 功能 | 例子 | 例子解释 |
---|---|---|---|
print() | 打印 | pring(“aa”) | 在控制台打印:aa |
input() | 控制台输出 | input(“你的名字是:”) | 在控制台打印:你的名字是:,必须回复 |
len(对象) | 输出对象长度 | len(“aaa”) | 在控制台打印:3 |
type(数据) | 查看数据类型 | type(123) | 在控制台打印:< int> |
真名 as 别名 | 起别名 |
概念
变量
可为不同的数据类型:字符串,整数,小数,元组,字典,列表等。
变量命名规则:
1、不能以数字开头,不能用关键字
2、由数字,字符,下划线组成,不建议用中文
3、区分大小写
变量命名风格:
大驼峰:MyName
小驼峰:myName
下划线:my_name (python推荐使用)
语法
注释
单行注释: #
多行注释: ‘’’ ‘’’ 或 “”" “”“”
输入
变量名 = input(“提示信息”)
输出
print(数据/变量)
运算符
算数运算法
有:+ - * / % 取余 // 取商
比较运算符
有:== != > < <= > >=
赋值运算符
逻辑运算符
and or not
流程控制
判定语句(if)
if 判断 :
语句
elseif 判断 :
语句
else :
语句
循环语句
while
while 条件 :
语句
限制语句
for
for 临时变量 in range:
语句
关键字:
break 终止语句
continue 跳出本次循环
pass 空语句(占位)
数据类型
type(数据/变量名) 查看数据类型
format :格式化输出
例如:
print(“{}今年{}岁了”.format(name,age))
print(f"{name}今年{age}岁了".format(name,age)) 推荐使用
类型转换
int()
float()
str()
tuple()
list()
整型,浮点型,布尔类型
字符串 " "
str = “Hello world”
符号 | 描述 | 实例 |
---|---|---|
+ | 字符串连接 | |
* | 重复输出字符串 | str*2 =>Hello worldHello world |
[] | 通过索引获取字符串中字符 | |
[ : ] | 截取字符串,遵循左闭右开原则 | str[1,7] =>ello w |
in | 包含返回True | |
not in | 不包含返回True |
格式化字符串
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s 格式化字符串 | |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
方法:
去除两边空白符: 字符串.strip()
全转小写: 字符串.lower()
全转大写: 字符串.upper()
分割字符串: 字符串.split(分隔符)
替换: 字符串.replace(原串,新串)
连接: 字符串.join(一般为列表)
判断是否为纯数字:字符串.isdigit()
列表 []
定义:
name = [“a”,“b”,“c”] 或 name = []
name = list()
方法:
方法名 | 功能 | 注意 |
---|---|---|
append(数据) | 追加数据 | |
pop(索引) | 删除数据 | 下标越界问题 |
列表[索引] = 数据 | 修改数据 |
字典 { : , : }
定义:
data = {} 或 data = {“name”:“aa”,“age”:“12”} 注意:key一帮为字符串且唯一
data = dict()
方法:
方法名 | 功能 | 注意 |
---|---|---|
字典名[key] = 数据 | 新增数据 | |
pop(key) | 删除数据 | key是否存在问题 |
字典[key] = 数据 | 修改数据 | |
字典名[key] | 显示 | |
字典名.get(key) | 显示 |
遍历:
# 遍历字典key
for key in data.keys():
print(key)
# 遍历字典value
for value in data.values():
print(value)
# 遍历字典key和value
for i in data.items():
print(i)
元组 ()
与其他数据相比 数据是不可以修改的
定义:
aa = () 或 aa = (“aaa”,14,True) 注意:元组只有一个元素时,元素后面需要加逗号 (a,)
aa = tuple()
方法:
方法名 | 功能 | 注意 |
---|---|---|
元组名[索引] | 显示 | |
元组.count(数据) | 统计该数据在元组中出现了多少次 |
集合 {}
定义:
set = {1,2,3}
set2 = set()
一般不会使用,只会用来去重
函数
格式:
def 函数名(参数1,参数2…):
return 关键字:
返回值。
导包:
impor 导入
from …import 导入
断言(assert):
assert 预期结果 == 实际结果 (判断是否相等,不等则返回错误)
assert 预期结果 in 实际结果 (判断是否被包含,不包含则返回错误)
异常
语法:
try:
# 尝试执行的代码
except 错误:
# 出现异常时执行的代码
finally:
# 必须执行的代码
面向对象
- 类:
具有相同特征和行为的一类事物的统称,是抽象的,不能直接使用。(类名,属性,方法) - 对象:
是由类创造出来的事物,是直接可以使用的 - 基本语法:
class 类名:
# 定义属性和方法
def 方法名(self): # 本质是函数
pass
- 创建对象:
变量 = 类名():
-
调用类的方法:
类中: 对象.方法名() -
self参数:
形参,只是习惯性叫self,但他可以不传参数(低层:解释器自动将调用这个方法的对象作为参数传递给self)。 -
使用属性:
对象.属性名 = 属性值 # 添加或修改
对象.属性名 # 获取 -
魔法方法(俩–开头与结尾)满足条件,自动调用。
__init__ # 调用时机:创建对象时,自动调用
# 应用场景:初始化对象,给对象添加属性
__str__ # 使用print(对象) 打印对象时,自动调用(如果未定义,默认打印对象的引用地址),必须返回字符串
- 封装:将属性和方法定义到类中。
# 封装
class HouseIem:
def __init__(self, name, area):
self.name = name
self.area = area
def __str__(self):
return f"{self.name}占地面积{self.area}平米"
class House:
def __init__(self, name, area):
self.h_type = name
self.total_area = area
self.free_area = area
self.item_lis = []
def __str__(self):
return f"户型:{self.h_type}、总面积{self.total_area}、剩余面积{self.free_area}、家具名称列表{self.item_lis}"
def add_item(self, item):
if self.free_area > item.area:
self.item_lis.append(item.name)
print(f"添加家具{item.name}")
self.free_area -= item.area
else:
print("房子面积不够")
if __name__ == '__main__':
bed = HouseIem('席梦思', 4)
chest = HouseIem('衣柜', 2)
table = HouseIem('餐桌', 1.5)
print(bed)
house = House('别墅', 10000)
house.add_item(table)
house.add_item(table)
print(house)
- 继承:子类继承父类的所有方法和属性
语法:
class 类A:
pass
class 类B(类A): # 类B继承类A
pass
class Dog:
def __init__(self, name):
self.name = name
def eat(self):
print(f"{self.name},别吃了")
class Zheng(Dog):
pass
if __name__ == '__main__':
xx = Zheng("xx")
xx.eat()
-
多态:不同的子类对象调用相同的父类方法,产生不同的执行结果
在自动化测试用不上 -
权限
- 公有:直接定义的都是
- 私有:只能在类内部进行定义,在方法或属性名前面加两个下划线,变成私有的了
-
类方法和属性
- 属性:count = 0
- 方法:在方法上面加@classmethod,参数写为:cls
-
静态方法
使用装饰器@staticmethod
文件操作
文本文件,二进制文件(MP3,mp4)
文件操作步骤
- 打开文件
open(file, mode= 'r', encoding=None)
- 读写文件
# 读
文件对象.read() # 返回值为读取的文件内容(字符串)
# 写
文件对象.write() # 返回值为写入文件的字符数
- 关闭文件(保存)
文件对象.close # 如果是写文件,会自动保存
- 其他操作
1、读写文件(自动关闭)
with open('a.txt', 'a', encoding='utf-8') as aa :
aa.write("adasfdiq fdiqihoho")
2、按行读取文件
文件对象.readline() # 一次读取一行,读完返回空
3、读取json文件
import json
with open('a.json', encoding='utf-8') as f :
buf = json.load(f)
buf.get("name")
3、写入json文件
import json
info = {'name':'小明','age':18}
with open('a.json','w', encoding='utf-8') as f :
json.dump(info, f, ensure_ascii=Flase, indent=2)