PyThon最详细入门语法笔记

写在前面:这篇笔记是由本人原创(也是第一篇原创,萌新.jpg),兄弟萌如果觉得不错的话,可以点个关注或收藏,方便以后查阅呀。

文章目录

  • 前言
  • 一、PyThon数据:常量与变量
    • 1. 常量
      • 1.1 整型
      • 1.2 浮点型
      • 1.3 字符串
      • 1.4 布尔型
    • 2. 变量
      • 2.1 查看变量类型:type(变量名)
      • 2.2 强制类型转换:类型名 (变量名)
  • 二、PyThon数据运算
    • 1. 数学运算
      • 1.1 加:``var1 + var2``
      • 1.2 减:``var1 - var2``
      • 1.3 乘:``var1 * var2``
      • 1.4 除
      • 1.5 求余
      • 1.6 乘方
      • 1.7 根方
    • 2. 比较运算
      • 2.1 等于``==``
      • 2.2 不等于 ``!=``
      • 2.3 其他比较运算符
    • 3. 逻辑运算
      • 3.1 与运算:``and``
      • 3.2 或运算:``or``
      • 3.3 非运算:``not``
      • 3.4 异或运算:``!=``
    • 4. 统计运算
      • 4.1 求最大值:``max(DS对象)``
      • 4.2 求最小值:``min(DS对象)``
  • 三、PyThon数据结构(重要)
    • 1. 字符串str
      • 1.1 创建字符串
      • 1.2 类型转换为字符串型
      • 1.3 转义字符\的应用
      • 1.4 字符串的数学运算
        • 1.4.1 字符串拼接
        • 1.4.2 字符串复制
      • 1.5 字符串切片操作:提取子串
        • 1.5.1 整数索引:切单个字符
        • 1.5.2 切片索引:用冒号分割,前闭后开
      • 1.6 字符串函数或方法
        • 1.6.1 求长度函数
        • 1.6.2 分割方法
        • 1.6.3 去空白符方法
        • 1.6.4 大小写转换方法
        • 1.6.5 首字母大写方法
        • 1.6.6 右对齐方法
        • 1.6.7 居中方法
        • 1.6.8 替换方法
        • 1.6.9 子串计数方法
        • 1.6.10 是否以指定子串开头或结尾方法
        • 1.6.11 查找子串方法
        • 1.6.12 连接方法
    • 2. 列表list
      • 2.1 创建列表
      • 2.2 列表嵌套
      • 2.3 列表切片操作
      • 2.4 列表修改
      • 2.5 列表合并
      • 2.6 列表添加元素
      • 2.7 列表删除元素
      • 2.8 判断指定值是否在列表中
      • 2.9 列表元素定位
      • 2.10 统计指定元素的个数
      • 2.11 列表排序
      • 2.12 列表求长度
    • 3. 字典dict
      • 3.1 创建字典
      • 3.2 字典取值
      • 3.3 字典修改(一定条件下添加)
      • 3.4 字典合并
      • 3.5 字典删除
      • 3.6 清空字典
      • 3.7 判断指定键是否在字典中
      • 3.8 字典方法
    • 4. 元组tuple
      • 4.1 创建元组
      • 4.2 元组解包赋值
      • 4.3 解包数据交换
    • 5. 集合set
      • 5.1 创建集合
      • 5.2 集合运算
        • 5.2.1 交集 &
        • 5.2.2 并集 |
        • 5.2.3 差集 -
      • 5.3 添加元素
      • 5.4 判断元素是否在集合中
  • 四、PyThon程序
    • 1. 代码结构风格
      • 1.1 代码块
      • 1.2 注释
      • 1.3 代码连接符:反斜杠\
    • 2. 程序控制结构
      • 2.1 条件分支结构
        • 2.1.1 if-else结构
        • 2.1.2 if-elif-else结构
        • 2.1.3 条件表达式
      • 2.2 循环结构
        • 2.2.1 while循环结构
        • 2.2.2 for循环结构
          • 2.2.2.1 一般形式
          • 2.2.2.2 循环遍历字典
          • 2.2.2.3 并行迭代多个数据结构
          • 2.2.2.4 并行迭代元素索引和元素值
          • 2.2.2.5 循环遍历range对象
          • 2.2.2.6 for循环的应用--推导式
            • 2.2.2.6.1 列表推导式
            • 2.2.2.6.2 字典推导式
            • 2.2.2.6.3 集合推导式
            • 2.2.2.6.4 无元组推导式
          • 2.2.2.7 迭代器与生成器的联系与区别
        • 2.2.3 终止循环
    • 3. 程序异常处理
      • 3.1 异常处理形式1
      • 3.2 异常处理形式2
      • 3.3 异常处理形式3
    • 4. PyThon解释环境
    • 5. 程序保存和执行
  • 五、PyThon模块
    • 1. 导入模块
    • 2. 调用导入模块下的函数
    • 3. 导入模块下的函数
    • 4. 直接导入PyThon标准库中的模块
    • 5. 常用PyThon标准模块
      • 5.1 sys标准模块
      • 5.2 time标准模块
        • 5.2.1 求当前系统时间
    • 6. 模块管理:包
    • 7. PyThon包管理工具
      • 7.1 安装命令
      • 7.2 卸载命令
  • 六、PyThon函数
    • 1. 函数定义
      • 1.1 无参函数定义
      • 1.2 有参函数定义
      • 1.3 函数定义的位置
    • 2. 函数调用
    • 3. 函数参数
      • 3.1位置参数
      • 3.2 关键字参数
      • 3.3 默认参数
      • 3.4 不定参数1:在形参前加一个*
      • 3.5 不定参数2:在形参前加两个*
    • 4. 匿名函数(lambda函数)
      • 4.1 匿名函数定义
      • 4.2 匿名函数调用
    • 5. 函数返回值
      • 5.1 return返回
      • 5.2 yield返回
        • 5.2.1 带有yield的函数定义
        • 5.2.2 带有yield的函数调用
    • 6. 命名空间:name space
      • 6.1 引用全局变量 global s
      • 6.2 查看全局变量和局部变量
  • 七、PyThon类
    • 1. 创建类
    • 2. 创建对象
    • 3. 类继承
      • 3.1 继承格式
      • 3.2 在继承父类的属性基础上添加新属性
      • 3.3 覆盖或重写父类方法
    • 4. 类的属性
      • 4.1 类属性和对象属性
      • 4.2 公有属性和私有属性
      • 4.3 私有属性的访问
      • 4.3 私有属性的修改或设置
    • 5. 类的方法
      • 5.1 对象方法:必须通过对象调用
      • 5.2 类方法:可以通过类或实例对象来调用
      • 5.3 静态方法:可以通过类或实例对象来调用
      • 5.4 PyThon特殊方法:魔法方法
        • 5.4.1 __init__方法
        • 5.4.2 __str__方法
        • 5.4.3 __repr__方法
        • 5.4.4 __eq__方法
  • 八、PyThon输入输出
    • 1. PyThon输入
    • 2. PyThon输出:print函数
      • 2.1 print输出字符串
        • 2.1.1 旧式格式化:%方式
        • 2.1.2 新式格式化:{}+format方式
          • 2.1.2.1 按位置替换
          • 2.1.2.2 按索引替换
          • 2.1.2.3 按别名赋值替换
          • 2.1.2.4 变量替换符{}
      • 2.2 print输出对象
  • 九、PyThon文件读写
    • 1. PyThon编码与解码
      • 1.1 字符串
      • 1.2 字节数组
      • 1.3 编码与解码
      • 1.4 编码方式
        • 1.4.1 ASCII编码
        • 1.4.2 ASCII扩展编码
        • 1.4.3 Unicode编码
        • 1.4.4 UTF编码
        • 1.4.5 gbk编码
    • 2. PyThon打开或关闭文件
      • 2.1 打开文件
        • 2.1.1 打开文件模式
        • 2.1.2 编码方式
      • 2.2 关闭文件
      • 2.3 上下文管理器:with
    • 3. PyThon读取文件
      • 3.1 读取二进制文件
      • 3.2 读取文本文件
        • 3.2.1 一次性读取
        • 3.2.2 一次读取一行
        • 3.2.3 一次读取所有行
        • 3.2.4 直接迭代每一行
    • 4. PyThon写入文件
    • 5. CSV格式文件
      • 5.1 CSV文件读取
      • 5.2 CSV文件写入
    • 6. json格式文件
      • 6.1 json编码与解码
        • 6.1.1 json编码
        • 6.1.2 json解码
    • 7. pickle格式文件
      • 7.1 pickle编码与解码
        • 7.1.1 pickle编码(序列化)
        • 7.1.2 pickle解码

前言

由于疫情的原因,今年考研复试推迟,得以多出很多准备复试的时间。在此期间(被困武汉啦,痛苦.jpg),我自学了PyThon,为了总结这段时间的学习成果,同时方便今后的查阅,遂写下这篇PyThon入门学习笔记。
几乎任何一门高级编程语言,都由两部分组成:语法(语言法则)和函数库(如C++的STL),PyThon也不例外。目前,PyThon之所以非常火热的原因之一,就在于它有丰富且功能强大的标准库和第三方库(如科学数值计算库NumPy、Pandas,计算机视觉库OpenCV,深度学习库Keras、TensorFlow,绘图库Matplotlib)。由于时间有限,这篇笔记只包含PyThon的语法部分和部分内置库(标准库)。
本人使用的调试工具是Jupyter Notebook在线调试工具,具体使用方法参考了以下这篇良心佳作:
Jupyter Notebook介绍、安装及使用教程

一、PyThon数据:常量与变量

1. 常量

PyThon共有4个基本数据类型:整型(int),浮点型(float),字符串(str),布尔型(bool),均以对象的形式存在。

1.1 整型

默认无小数点的数据为整型(int),如var = 123,123被默认为整型常量。

1.2 浮点型

默认有小数点的数据为浮点型(float),如var = 123.123.0,123.被默认为浮点型常量。

1.3 字符串

PyThon字符串可以被单引号、双引号或三引号包裹,如'abc'"abc"'''abc'''
单引号或双引号只能包裹单行字符串,而三引号可以包裹多行字符串。

1.4 布尔型

只有真值(True)和假值(Flase),注意PyThon区分字母大小写,首字母均大写。

2. 变量

跟其他高级语言不一样,PyThon是一种动态语言,变量无需定义,直接赋值,可理解为是赋值对象的标签或引用(即不是赋值对象本身)。动态是指:变量的类型可变,取决于赋值对象的类型。

2.1 查看变量类型:type(变量名)

PyThon最详细入门语法笔记_第1张图片

2.2 强制类型转换:类型名 (变量名)

如:int (var)
bool(var):非0数字或非空串返回True,否则返回False

二、PyThon数据运算

1. 数学运算

1.1 加:var1 + var2

1.2 减:var1 - var2

1.3 乘:var1 * var2

1.4 除

9/5:返回浮点型商1.8
9//5:返回商的整数部分1

1.5 求余

9%5:返回余数4

1.6 乘方

计算x的y次幂:
方法1:x ** y
方法2:
import math
math.pow(x, y)

1.7 根方

计算x的y次根方:
import math
math.pow(x, 1/y)

特殊地,计算x的平方根:
方法1:x ** 0.5
方法2:import math
math.pow(x, 0.5)
方法3:import math
math.sqrt(x)

2. 比较运算

2.1 等于==

2.2 不等于 !=

2.3 其他比较运算符

<、<=、>、>=

3. 逻辑运算

注意:PyThon中使用英文单词表示逻辑运算,没有逻辑运算符&&、||、!。

3.1 与运算:and

3.2 或运算:or

3.3 非运算:not

3.4 异或运算:!=

4. 统计运算

4.1 求最大值:max(DS对象)

4.2 求最小值:min(DS对象)

三、PyThon数据结构(重要)

1. 字符串str

1.1 创建字符串

str_var = 'xiaoMing' 或 “xiaoMing" 单引号或双引号包裹单行字符串

#三引号包裹多行字符串
str_var = '''xiaoMing 
			xiaoHong'''                      

1.2 类型转换为字符串型

整型int转换为str:str(123)
浮点型float转换为str:str(123.0)
布尔型bool转换为str:str(True)str(False)

1.3 转义字符\的应用

转变原本字符的含义:
\n:换行
\t:制表
':单引号
\:反斜杠

1.4 字符串的数学运算

1.4.1 字符串拼接

'xiao' + 'Ming' 不会修改’xiao’本身
'xiao' += 'Ming' 会修改 'xiao’本身

1.4.2 字符串复制

'ab' * 3 返回 字符串 ‘ababab’

1.5 字符串切片操作:提取子串

english = 'abcdefg',注意以下切片操作均不会改变english本身。

1.5.1 整数索引:切单个字符

english[0] = 'a' 第一个元素索引为0
english[-1] = 'g' 最后一个元素索引为-1

1.5.2 切片索引:用冒号分割,前闭后开

english[0: 2]或english[: 2] = 'ab' 从前切
english[-3: ] = 'efg' 从倒数第3个开始一直切到最后
english[-3: -1] = 'ef' 前闭后开
english[: ] = 'abcdefg' 切整个字符串
english[0: 4: 2] = 'ac' 加步长2
english[ : : -1] = 'gfedcba'glish[ : : -2] = 'geca'
负步长从后往前切,只支持整体切片

1.6 字符串函数或方法

english = 'abcdefg',注意以下函数或方法不会改变english本身,只会返回一个新串对象。

1.6.1 求长度函数

len(english) = 7

1.6.2 分割方法

字符串.split() 默认以空格为分隔符,返回一个子串列表。
字符串.split('a')以字母a为分隔符,返回一个子串列表。
以此类推。

1.6.3 去空白符方法

字符串.strip() 默认去掉字符串前后所有空白符 (包括空格、\n、\t、\r、\f)。
字符串.strip('.') 去掉字符串前后所有的小数点。
字符串.strip('a') 去掉字符串前后所有的字母a。
以此类推。

1.6.4 大小写转换方法

字符串.upper() 转大写
``字符串.lower() 转小写

1.6.5 首字母大写方法

字符串.capitalize()

1.6.6 右对齐方法

字符串.rjust(n) 不足n位填充空格

1.6.7 居中方法

字符串.center(n)

1.6.8 替换方法

字符串.replace(被替换子串,替换串)
如:english.replace('cd', 'qq') = 'abqqefg' 查找english中所有的’cd’并替换为 ‘qq’。

1.6.9 子串计数方法

字符串.count(子串) 计算子串的数量

1.6.10 是否以指定子串开头或结尾方法

字符串.startswith(子串) 返回True或False
字符串.endswith(子串) 返回True或False

1.6.11 查找子串方法

字符串.find(子串) 返回子串第一次出现的位置索引(从左数)
字符串.rfind(子串) 返回子串第一次出现的位置索引 (从右数)

1.6.12 连接方法

','.join(子串列表) 用逗号将子串连接成一个新的字符串
字符串.join(子串列表) 用指定字符串将子串连接成一个新的字符串

2. 列表list

重要特性:可以包含不同类型的元素,但元素有序,用[ , ]表示。

2.1 创建列表

方法1:直接创建,[123, 123.4, 'abc', True]。[]代表空列表。
方法2:list()函数将其他数据结构对象(如字符串、元组、集合等)、迭代器、生成器转换为列表
如:list(range(5)) 返回[0, 1, 2, 3, 4]

2.2 列表嵌套

列表元素也可以是列表,提取子列表元素使用双重索引。

2.3 列表切片操作

类似于字符串的切片操作,分为整数索引切片和切片索引切片两种,不同之处在于,无论是整数索引还是切片索引,字符串切片返回的均是子串,类型为str。而列表整数索引返回指定元素,切片索引返回子列表。

2.4 列表修改

可使用切片索引同时对多个元素修改
a[ : 2] = [100, 200]

2.5 列表合并

方法1:a + b,返回新列表,但a和b不变
方法2:a.extend(b) 将b的元素添加至a的末尾,a变b不变

2.6 列表添加元素

方法1:a.append(新元素) 将新元素添加至末尾,返回None
方法2:a.insert(index, 新元素) 将新元素添加至指定位置

2.7 列表删除元素

方法1:a.pop() 默认删除最后一个元素并将其返回
方法2:a.pop(index) 删除指定位置元素并将其返回
方法3:del a[index] 删除指定位置元素但不作返回
方法4:a.remove(元素值) 删除指定元素值,返回None

2.8 判断指定值是否在列表中

元素值 in a 返回True或False

2.9 列表元素定位

a.index(元素值) 类似字符串的find()方法

2.10 统计指定元素的个数

a.count(元素值)

2.11 列表排序

a.sort()

2.12 列表求长度

len(a)

3. 字典dict

重要特性:无序,用{key1:value1, ...}表示,每一个元素的键key互不相同。

3.1 创建字典

方法1:直接创建,{k1: v1, k2: v2, ...},{}代表空字典。
方法2:dict()将其他类型的数据结构、迭代器、生成器转换为字典。

3.2 字典取值

因为字典无序,所以没有切片操作。
方法1:a[key]做右值时,代表对应的value,取值。如果不存在,会报KeyError异常。
方法2:a.get(key),如果不存在,默认返回None
方法3:a.get(key, return_default),如果不存在,返回指定return_default。

3.3 字典修改(一定条件下添加)

a[key] = value,如果存在key,则修改其值,如果不存在,则添加一个键值对。

3.4 字典合并

a.update(b) 将字典b中的键值对添加至字典a中,a变b不变。

3.5 字典删除

del a[key] 删除指定键值对

3.6 清空字典

a.clear() 清空字典a中元素,使a变为空字典{}

3.7 判断指定键是否在字典中

key in a 返回True或False

3.8 字典方法

a.keys()、a.values()、a.items()分别返回键、值和键值对元组组成的列表迭代器 (即封装起来的列表)
PyThon最详细入门语法笔记_第2张图片

4. 元组tuple

重要特性:元组一旦指定便不可改变(元素的值和顺序均不可改变),因此元组对象可以作为字典或集合的key,而列表对象不能;元素类型可以不同;有序 (可以进行切片操作)。

4.1 创建元组

方法1:直接创建:注意PyThon解释器通过逗号,判断是否是一个元组,而不是小括号()
多元素:(123, 123.4, 'abc')或123, 123.4, 'abc'
单元素:(123,)或123,
空元组:()
方法2:tuple()将其他类型数据结构、迭代器、生成器转换为元组。

4.2 元组解包赋值

a = (1, 2, 3)
b, c, d = a
相当于元组a赋值给由b、c、d组成的元组,b = 1, c = 2, d = 3。

4.3 解包数据交换

a, b = b, a 等价于a与b交换数据。

5. 集合set

重要特性:元素值唯一;无序;用{key1, key2, ...}表示。

你可能感兴趣的:(python,字符串,列表,机器学习,深度学习)