- Python 解释交互(IDLE)型面向对象语言,简单
- Python 应用范围:爬虫、数据分析、机器学习、app开发、web开发、自动化运维测试、游戏开发
- 爬虫:批量自动获取海量数据信息
- 数据分析:营销手段
- 机器学习:人工智能,谷歌阿尔法狗,监督、半监督、深度学习(英语、高等数学要求高)
- 自动化运维:持续交付业务需求,开源运维工具大多是python写的,可以定制化需求
- 网站开发:框架库
- Python 环境:
- 解释器:将python语言翻译成计算机可执行的二进制语言
- 运行环境:PyCharm、vscode、jupyter
- 运行:doc python xxx.py ;pycharm:要运行的文件右键运行
- 检查python
- 常见的python 错误类型:
- 缩进:IndentationError: unexpected indent(单独运行print函数前面不能有空格或缩进)
- 函数拼写错误:NameError: name ‘print1’ is not defined. Did you mean: ‘print’? || SyntaxError: invalid syntax
- 标点符号错误:SyntaxError: invalid character ‘”’(编程语言英文符号)
- debug:代码执行顺序+变量变化 端点方式同java
- 注释:三个单引号或者三对双引号
- print函数:
- print (*objects, sep=’ ‘, end=’ In’, file=sys. stdout, flush=False)
- 默认多个参数空格隔开换行结尾 print(“hello world”,“0”,“1”)
- 可以使用end来自定义结尾 print(“hello world”,“0”,“1”,end=“end”)
- 变量 a=10 变量名称 a 、变量存储的数据 10 、变量地址 地址 、变量数据类型 int
- 首次使用变量会在内存中划分空间,并初始化值
- 再次使用变量不再划分空间,修改原空间中的值(要分可变对象和不可变对象,不可变对象重新分空间)
- 标识符 作为对象名称,比变量名大一些,有特殊规则
- 只能由数字、字母、下划线组成
- 不能以数字、关键字开头
- 区分大小写
- 变量命名规则:
- 大驼峰
- 小驼峰
- 下划线(推荐)
- 数值类型
- int 整数
- float 小数
- bool 逻辑值 True(1) False(0)
- complex 复数 1+2j
- 字符串 三引号用来定义多行字符串
- 转义字符:\
- s1+s2 字符串连接
- s1*n 重复输出n次s1
- tmp in st1 是否包含
- not in
- r\R 原样输出R print(r’\n’) 结果为\n
- .title()首字母大写
- .upper()全部大写
- .lower()全部小写
- .rstrip()删除开头和结尾处空行,删除后需要重新赋值给变量,否则删除无效
- 格式化输出 定义模板,输出按照模板方式输出,常用的:
- %s 字符串
- %c 字符
- %d 有符号十进制整数
- %f 浮点数 %.2f 保留两位小数
- print(%s,%d %(“”,))
- format() {}代替%
- print(‘{},{},{}’.format(1,2,3))
- print(‘{index_0} {index_1} {index_0}’.format(0,1)) 根据索引格式化
- print(‘{name} {age}’.format(name=‘’,age=1)) 根据变量格式化
- f’{},{}’ print(f’名字{name},年纪{age}')
- 转义字符 \
- \n 换行
- \t 制表符
- 运算符 ** 幂 最高优先级; \除法整数部分
- 类型转换
- 数值类型 int float bool complex
- 数据结构类型 str list dict tuple
- 输入函数 input
- name = input(“”)
- 条件判断
if 要判断的条件:
条件成立时,要做的事
elif 再次判断的条件:
else
条件不成立时,要做的事 - 循环
- while 条件:
条件满足时事件 - for 临时变量 in 待处理数据集:
print(‘’) - range(index1,index2)
- while 条件:
- 函数
- def 函数名():
函数体
return 返回值 - none==false
- 注释在方法体内,双引号多行注释
- global 定义全局变量
- 函数与方法的区别在于方法存在类中,函数不存存在
- def 函数名():
- 数据容器 用来存储多个元素的数据类型
- list(列表) tuple(元组) str(字符串) set(集合) dict(字典)
- list(列表)
- 格式 [1,2,3,4]
- 存储数据可以为任意类型 包括list
- 取值 list[1] list[2] list[3] 或 list[-1] list[-2] list[-3] (倒序)
- list[[1,2,3,4],[5,6,7,8]] 6=list[1][1]
- 常用方法:
- 查询列表中某元素的正向索引:列表.index(“要查找的元素”)
- 修改:列表[索引]=新值
- 指定位置插入元素:列表.insert(要插入的位置,元素)
- 尾部插入元素:列表.append(“元素”)
- 批量追加元素到列表尾部:列表1.extend(列表2)
- 删除:del 列表[下标] 或 列表.pop(下标) (pop会返回要删除的元素)
- 删除指定元素:列表.remove(要删除的元素) (只会删除一个)
- 清空列表:列表.clear()
- 统计列表中有多少指定元素:列表.count()
- 计算列表元素总数量:len(列表)
- 特点:有序、可重复、无数据类型限制、可修改、最多2**63-1
- 循环: while 自定义初始化为0的变量<len(要遍历的列表)
- for element in 列表
- 元组(不可修改)
- 格式 (1,2,3,4) 当存储单个字符串时,后面需要加上逗号,不然会判定类型为字符串(“hello”,)
- 元组中嵌套list,list值是可以修改的
- 元组特点:
- 可以容纳多个数据
- 数据可以是不同类型
- 除list类型外,其他数据不可以修改
- 允许重复数据
- 支持for循环
- 字符串
- 下标取值 字符串[index]
- 替换 字符串.replace(被替换字符串1,替换成字符串2) 返回一个新字符串,老字符串不允许修改
- 字符串分割 字符串.split(分隔符字符串) 字符串本身不变,只是得到一个新的列表
- 规整操作 字符串.strip(“前后要去除的指定字符”) 默认去除字符串前后空格、回车、换行符
- 统计字符串中某字符中的出现次数,字符串.count()
- 统计字符串中某字符中的长度,len(字符串)
- 字符串特点
- 只支持存储字符类型
- 不可修改
- 长度任意
- 支持下标索引
- 允许重复字符
- 支持for循环
- 序列:内容连续,有序,有索引,列表、元组、字符串都是序列
- 切片:从序列中取出一个子序列
- 语法:序列[起始下标,结束下标,步长]
- 切片会新生成一个序列,原序列并不影响
- 起始省略默认从头开始,结尾省略默认到尾,步长省略默认为1,负数为倒序
- 集合 set()或者{} 不可重复
- 列表可修改、支持重复元素且有序;元组、字符串不可修改、支持重复元素且有序
- 添加:add() 重复自动去重
- 移除:remove()
- 随机取出:pop()
- 清空:clear()
- 求两个集合差集 集合1有,集合2没有 集合1.difference(集合2)
- 消除差集,把集合1中删除集合2相同元素 集合1.difference_update(集合2)
- 合并2集合:集合1.union()
- 统计集合元素数量 len()
- 循环 for循环,集合没有索引,所以不支持while
- 特点:
- 可存储不同数据类型
- 没有索引,所以无序
- 不可重复
- 可以修改
- 字典 key-value 形式
- 语法 {key:value,key:value} 或 {} 或 dict()
- key不允许重复,不会报错,但是会覆盖
- 不允许使用下标索引 字典[key]
- 字典不允许为key,value可以为任意数据类型
- 修改 字典[key]=value key存在则更新,不存在则修改覆盖
- 删除 字典.pop(key) 取到value并从字典中移除
- 清空 字典.clear()
- 获取全部key 字典.keys()
- for循环 for key in keys for key in 字典
- 字典中元素数量 len(字典)
- 数据类型使用场景
- 列表:一批数据,可修改、可重复的存储场景
- 元组:一批数据,不可修改、可重复的存储场景
- 字符串:不可修改的字符串
- 集合:一批数据,去重场景
- 字典:一批数据,可用key检索value的存储场景
- 数据容器的基本操作
- 长度:len()
- 容器内最大元素:max()
- 容器内最大元素:min()
- 列表、元组、字符串、集合、字段转列表:list()
- 列表、元组、字符串、集合、字段转元组:tuple()
- 列表、元组、字符串、集合、字段转字符串:str()
- 列表、元组、字符串、集合、字段转集合:set()
- 排序:sorted(容器,reverse=True 反向排序)结果将成为列表对象
- 字符串比较大小,根据ascii码表按位比较其中一位大,结束比较
- 函数多返回值:
- def 函数名(): return 1,2,3
- x,y,z = 函数名()
- 函数4种传参形式:
- 位置参数 函数名(参数1,参数2)
- 关键字参数 函数名(参数1=“”,参数2=“”)
- 缺省参数 def 函数名(a,b,c=1): 默认参数c不传的时候默认为某个值,默认参数必须写在最后面
- 可变参数(不确定传入的参数有多少个)
- 位置参数的不定长 def 函数名(*args) 函数名(参数1,参数2) 传入参数为元组存储
- 关键字参数的不定长 def 函数名(**kwargs) 函数名(key=value,key2=value2) 传入参数为字典存储
- 匿名函数
- 函数作为参数传递 传入计算逻辑
def test_func (compute): result = compute(1, 2) print (result) def compute(x, y) : return x + y
- lambda关键字定义匿名函数,没有名称,临时使用一次
- 语法:lambda 传入参数:函数体(一行代码)
- lambda是关键字,表示定义匿名函数
- 传入参数表示匿名函数的形式参数,如:x,y表示接受2个形式参数
- 函数体,就是函数的执行逻辑,要注意:只能写一行代码
def test_func (compute): result = compute(1, 2) print (result) test_func(lambda 1,2:x+y)
- 打开文件 open(name,model,encoding)
f=open('python.txt','r',encoding="UTF-8 #encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定 #model:打开形式,r只读、w写入、a追加等 #name:文件名称,可以是具体路劲
- 读取文件 文件对象.read(num) num:读取的指定长度
- 连续使用2次read时,第二次读取起始位置为第一次的结尾
- 读取文件 文件对象.readlines(num) 文件按照行的方式一次性读取,返回一个列表 num读取的几行
- 读取文件 文件对象.readline(num) 只读取一行,返回一个列表 num为第一行的多少字节
- 读取文件 for循环读取文件
for line in f: print(line)
- 关闭文件 close() 不关闭程序将持续占用文件
- with open() as f: with语法执行完之后自动关闭文件
- 写入文件 write()
- 写入文件 持久化到硬盘中 flush() close()内置flush功能 文件不存在时会创建,存在时会覆盖原本内容
- 追加文件 w模式替换成a模式 文件不存在时会创建,存在时会追加内容
40.异常格式- 捕获单个异常
try: with open("main.py","r") as f: print(f"打开文件{f.read()}") except FileNotFoundError: print("处理异常") ``` * 捕获指定异常
try: with open("main.py","r") as f: print(f"打开文件{f.read()}") except FileNotFoundError: print("处理异常") ```