Python | 学习笔记
Python | 学习笔记
Prong[toc]
Python简介
孕育于1989,现在更新至3.0版本(PY3K)
- 是一种跨平台计算机程序设计语言
- 解释型语言:没有编译的环节
- 交互式语言:可以在提示符
>>
后直接执行代码 - 面对对象语言
- 初学者最好的语言
环境配置:
- 安装Python解释器
- 自带简单开发环境IDLE
- 交互式命令行程序
- 安装集成开发环境Pycharm
发展方向
Web全栈开发方向
- 掌握技术
- 数据开发
- 数据库管理
- 后台框架技术
- 职业方向
- Web全栈开发工程师
数据科学方向
- 掌握技术
- 数据库管理
- 数据分析
- 数据可视化
- 制作数据看板
- 实现数据指标监控
- 职业方向
- 数据产品经理
- 量化交易
- 初级BI商业分析师
仍智能方向-机器学习
- 掌握技术
- 机器学习常用算法思想
- 搭建机器学习模型,对一些应用场景进行智能化
- 职业方向
- 数据分析工程师
- 机器学习算法工程师
- 搜索算法工程师
- 推荐算法工程师
人工智能方向-深度学习
- 掌握技术
- 深度学习常用框架
- 自行搭建图像相关算法,实现图像分类、人脸识别
- 自行搭建NLP常见算法,实现文本分类、问答系统
- 掌握GAN网络相关算法,实现图像自动上色、图像美化等
- 职业方向
- 人工智能工程师
转义字符
在需要实现转义功能的首字母前使用反斜杠\
,但最后一个字符不可以是反斜杠
- 反斜杠
\\
- 不加的话,
https://
两个斜杠就只显示一个了
- 不加的话,
- 单引号
\'
- 如果只想输出一个单引号(比如在字符串里包含想要输出的单引号),在它的前面加上反斜杠就ok
- 双引号
\"
- 换行
\n
- 回车
\r
- 回车以后,hello就被覆盖了只剩下world
- 水平制表符
\t
- 之所以只有三个空格,其实是因为每四个字母为一个制表符,hello的o占了第二个制表符的第一个位置,所以按下制表符会往后三个空格,形成第二个制表符
- 退格
\b
- 退格以后hello的o就没有了
1 | #转义字符 |
二进制和字符编码
8 bit = 1 byte
1024 byte = 1KB
1024 KB =1 MB
1024 MB = 1 GB
1024 GB = 1 TB
八个位置可以表示256个状态,由此制作ASCII字符代码表对应不同字符。
1 | print(chr(0b100111001011000)) # 打印结果是 “乘” |
保留字
1 | #查看保留字列表 |
1 | #输出结果 |
有一些单词被赋予特定的含义,不可以用于编程。
1 | import keyword |
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
以上就是python里的保留字
标识符
变量、函数、类、模块和其他对象起的名字就是标识符,就是变量、函数、类、模块和其他对象起的名字
规则如下:
- 字母、数字、下划线
- 不能以数字开头
- 不能是保留字
- 严格区分大小写
注释
- 单行注释#
- 多行注释,没有单独的多行注释符号,一般认为一对三引号之间的代码就是多行注释
- 中文编码声明注释,指定源码文件的编码格式
#coding:gbk
#coding:utf-8
1 | #coding:gbk |
变量多次赋值后,变量名会指向新的空间
数据类型
常用数据类型
- 整形int
- 浮点数float
- 布尔类型bool
- 字符串类型str
整数类型
integer,可以表示正数负数和零
进制 | 表示方式 |
---|---|
十进制 | |
二进制 | 0b |
八进制 | 0o |
十六进制 | 0x |
使用时,需要把表示方式放在数字前,例如
1 | print('十进制', 365) |
输出时可以表示为二进制0b
、十进制、八进制0o
、十六进制ox
1 | #0b是二进制 |
浮点类型
不精确性
由整数部分和小数部分组成。有储存不精确性(例如用浮点数进行运算,有时候会小数位数不确定)。
解决方案:导入模块decimal
1 | from decimal import Decimal |
布尔类型
Boolean
- 用于表示真或假
- 可以转成整数计算(可以输出为0或1),可以用来表示真假的值,true是整数1,false是整数0。
1 | f1=True |
字符串类型
不可变的字符序列,可以使用单引号、双引号、三引号、多引号定义
- 单引号和双引号定义的字符串必须在一行
- 三引号可以跨行
1 | str1 = '悟已往之不鉴,知来者之可追' |
数据类型转换
1 | int()#转化为int类型 |
数据类型转换函数,从而可以把不同类型的数据拼接在一起
1 | name='张三' |
三个转换函数
- str()
- int()
- float()
注意
- str
- 其他数据类型转str,也可以用引号转换
- int
- str转int,字符串为 数字串
- float转int,截取整数舍去小数
- str转int,字符串必须是数字串(整数),小数串、非数字串不能转换
- float
- int转float,末尾为.0
变量
内存中一个带标签的盒子
name[变量名] =[赋值运算符] ‘卢本伟’[值]
组成
- 标识:表示对象所储存的内存地址,使用内置函数
id(obj)
来获取 - 类型:表示对象的数据类型,使用内置函数
type(obj)
来获取 - 值:表示对象存储的具体数据,使用
print(obj)
来打印输出
[变量名]=‘[值]’
[变量名][赋值运算符][值]
相当于把东西放进盒子里
组成部分:
- 标识
- 表示对象所存储的内存地址,用
id(obj)
来获取
- 表示对象所存储的内存地址,用
- 类型
类型 | |
---|---|
整数类型 | int |
浮点数类型 | float |
布尔类型 | bool |
字符串类型 | str |
- 值
1 | name='ljubenwei' |
对变量多次赋值,变量会指向新的空间
一般都可以用str()
转成字符串类型,如果字符串要转成整数类型或浮点类型,字符串内容必须是整数或者小数(非数字串不允许转换)
函数
输出函数
- 输出内容
- 数字
- 字符串
- 含有运算符的表达式
- 输出目的地
- 显示器
- 文件
- 输出形式
- 换行
- 不换行
Code Runner的使用方法是:
选中需要运行的代码,Ctrl+Alt+J
选择语言,然后就会开始输出
1 | #2023/3/3 |
输入函数
input()
1 | present = input('你想要什么礼物呢?') |
1 | a=input('请输入一个加数') |
运算符
常用运算符
- 算数运算符
- 标准算数运算符
- 加+
- 减-
- 乘*
- 除/
- 整除//,只取整,一正一负向下取整
- 取余运算符%,一正一负要负数
- 幂运算符**
- 标准算数运算符
- 赋值运算符
- 从右向左
- 支持链式赋值
- 支持参数赋值
- 支持系列解包赋值
- 比较运算符
- 布尔运算符
- 位运算符
比较运算符
- >, <, >=, <=, !=
- ==
- 对象value的比较
- is, is not
- 对象的id(标识)的比较
比较运算符的结果是布尔类型:True或False
1 | a = 10 |
布尔运算符
- and
- 全真为真
- or
- 全假为假
- not
- 取反
- in
- not in
位运算符
- 位与&
- 位或|
- 左移运算符<<
- 高位溢出舍弃,低位补0
- 右移运算符>>
- 低位溢出舍弃,高位补0
位与
二 | 进 | 制 | 十进制 | ||||||
---|---|---|---|---|---|---|---|---|---|
数字1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 4 |
数字2 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 8 |
结果 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
位或、位非的运算同理
优先级
算术运算(先加减后乘除) -> 位运算(移位、位与、位或) -> 比较运算 -> 布尔运算(与、或、非) -> 赋值运算符
列表
列表的特点
- 列表元素按顺序有序排列
- 索引映射唯一一个数据
- 正序从0开始
- 倒序第几就是第几
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配和回收内存
1 | print(list1[0],list1[-3]) |
创建
变量可以储存一个元素,而列表可以储存多个元素,程序可以方便地对这些数据进行整体操作。列表相当于其他语言当中的数组。
一切皆对象,有
- id
- type
- value
列表需要使用中括号[],元素之间使用英文的逗号进行分隔
- 使用中括号[]
- 调用内置函数list()
1 | list1=['hello','world',98] |
生成式
列表生成式简称“生成列表的公式”
[i*i for i in range(1,10)]
[表示列表元素的表达式 for 自定义变量 in 可迭代对象]
range()函数的使用
- 用于生成一个整数序列
- 起始值默认为0
- 步长默认为1
range(start, stop, step)
创建方式
1 | range(stop) #创建一个(0, stop)之间的整数序列,步长为1 |
返回值是一个迭代器对象
优点
- 不管range()对象多长,占用的内存空间都是相同的,因为它只储存起点、终点、步长。只有具体用到对象时,才会去计算序列中的相关元素。
- in和not in判断整数序列中是否存在(不存在)指定的整数
查找
获取列表中指定元素的索引
index()
- 如查列表中存在N个相同元素,只返回相同元素中第一个元素的索引
- 如查询的元素在列表中不存在,抛出
ValueError
- 还可以在指定的
start
和stop
中进行查找
获取单个
获取列表中单个元素
- 正向索引从0到N-1
- 逆向索引从-N到-1
- 指定索引不存,抛出ValueError
获取多个元素
切片操作,语法格式[start:stop:step]
- 切片的结果
- 原列表片段的拷贝
- 切片的范围
- [start,stop)
- step默认为1
- 简写为
[start:stop]
- 简写为
- step为正数,从start开始往后计算切片
[:stop:step]
切片第一个元素默认是列表的第一个元素[start::step]
切片的最后一个元素默认是列表的最后一个元素
- step为负数,从start开始往前计算切片
[:stop:step]
切片第一个元素默认是列表最后一个元素[start::step]
切片最后一个元素默认是列表第一个元素
添加元素
方法 | 描述 |
---|---|
append() | 在列表末尾添加一个元素 |
extend() | 在列表末尾至少添加一个元素 |
insert() | 在列表任意位置添加一个元素 |
切片 | 在列表任意位置添加至少一个元素 |
删除
方法/其他 | 操作描述 |
---|---|
remove() | 一次删除一个元素,重复元素删除第一个,元素不存在抛出ValueError |
pop() | 删除一个指定索引位置上的元素,指定索引不存在抛出IndexError,不指定索引,删除列表中最后一个元素 |
切片 | 一次至少删除一个元素,会得到一个新的列表对象 |
clear() | 清空列表 |
del | 删除列表 |
修改
- 为指定索引的元素赋予一个新值
- 为指定的切片赋予一个新值
1 | 1st=[10,20,30,40] |
排序
- 调用sort()方法,对原列表中所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True(默认reverse=False升序排序),进行降序排序。
- 调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变,产生一个新列表。
1 | #调用sort方法对原列表操作 |
1 | #调用内置函数sorted产生新列表 |
流程控制
任何算法都可以用顺序结构、选择结构、循环结构组成
Python一切皆对象,所有对象都有一个布尔值
bool()
False
- False
- 数值0
- None
- 空字符串
- 空列表
- 空元组
- 空字典
- 空集合
1 | print(bool(False)) |
顺序结构
选择结构
单分支结构
例如选择结构只有if
双分支结构
有if也有else
多分支结构
类似于case?!
1 | score = int(input('请输入一个成绩:')) |
嵌套
1 | if answer == 'y': |
条件表达式
是if…else的简写
1 | if A>B: |
循环
大纲
- range()函数的使用
- 循环结构
- while循环
- for-in循环
- break、continue与else语句
- 嵌套循环
循环的类型有
- while
- for-in
while循环
- 用于次数不固定的循环
- 初始条件不成立一次都不执行
1 | a = 1; |
四部循环法
- 初始化变量
- 条件判断
- 条件执行体(循环体)
- 改变变量
1到100之间的偶数和
1 | a=2 |
1 | a=2 |
利用布尔值判断
1 | a=2 |
for-in循环
可用于遍历可迭代对象。in表达从(字符串、序列等)中依次取值,又称为遍历。遍历的对象必须是可迭代对象
1 | for item in 'Python': |
如果在循环体内用不到自定义变量,可以将自定义变量写为“_”
1 | for _ in range(5): |
也可以用for-in解决加和问题
1 | for item in range(1, 101): |
水仙花数
1 | for item in range(100,1000): |
break、continue与else语句
- break语句
常用于结束循环结构,通常与分支结构if一起使用
- continue语句
用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用
通常输出5的倍数会用余数等于五的条件进行判断,而使用continue可以反向操作:
1 | for item in range(1,51): |
- else
if不成立的时候执行else,没有遇到break的时候执行else
嵌套循环
1 | for i in range(1,10): |
二重循环中的break和continue
二重循环中的break和continue用于控制本层循环
1 | for i in range(5): |
pass空语句
什么也不做,只是一个占位符,用在语法上需要语句的地方。
- if语句的条件执行体
- for-in语句的循环体
- 定义函数时的函数体