07.Python运算符详解与编码基础

📅 2026/7/13 2:39:11
07.Python运算符详解与编码基础
摘要本文系统介绍了 Python 运算符的分类与用法涵盖算术、比较、赋值、逻辑、位、成员、身份运算符及优先级规则并深入讲解了字符集、编码原理以及 Python 3 默认的 UTF-8 编码机制帮助开发者全面掌握 Python 运算与编码处理的核心知识。目录一、Python运算符概览二、各类运算符详解1. 算术运算符2. 比较关系运算符3. 赋值运算符4. 逻辑运算符5. 位运算符6. 成员运算符7. 身份运算符8. 运算符优先级三、编码、字符集与Python默认编码1. 字符集与编码的基本概念2. Python的默认编码3. 文件读写与编码4. 编码问题排查与处理四、总结一、Python运算符概览Python运算符是用于在程序中执行各种运算的符号。它们可以操作一个或多个操作数值或变量并返回结果。Python运算符主要分为以下几类算术运算符用于基本的数学运算。比较关系运算符用于比较两个值。赋值运算符用于给变量赋值。逻辑运算符用于组合条件语句。位运算符对整数进行二进制位操作。成员运算符测试序列中是否包含某个成员。身份运算符比较两个对象的内存地址。运算符优先级决定表达式中运算的执行顺序。二、各类运算符详解1. 算术运算符算术运算符用于执行基本的数学运算如加、减、乘、除等。# 算术运算符示例 a 10 b 3 print(a b) # 加法13 print(a - b) # 减法7 print(a * b) # 乘法30 print(a / b) # 除法3.333... print(a // b) # 整除3 print(a % b) # 取模求余1 print(a ** b) # 幂运算1000注意//是向下取整的整除%返回除法的余数**是幂运算符。2. 比较关系运算符比较运算符用于比较两个值返回布尔值True或False。# 比较运算符示例 x 5 y 10 print(x y) # 等于False print(x ! y) # 不等于True print(x y) # 大于False print(x y) # 小于True print(x y) # 大于等于False print(x y) # 小于等于True这些运算符不仅适用于数字也适用于字符串、列表等其他可比较的数据类型。3. 赋值运算符赋值运算符用于给变量赋值包括简单的赋值和复合赋值。# 赋值运算符示例 c 5 # 基本赋值 c 3 # 等价于 c c 3结果 c 8 c - 2 # 等价于 c c - 2结果 c 6 c * 4 # 等价于 c c * 4结果 c 24 c / 3 # 等价于 c c / 3结果 c 8.0 c // 2 # 等价于 c c // 2结果 c 4.0 c % 3 # 等价于 c c % 3结果 c 1.0 c ** 2 # 等价于 c c ** 2结果 c 1.04. 逻辑运算符逻辑运算符用于组合条件语句包括and、or和not。# 逻辑运算符示例 age 25 has_license True and两个条件都为真时返回真 can_drive (age 18) and has_license # True or至少一个条件为真时返回真 is_teenager (age 13) or (age 19) # True not反转布尔值 is_child not (age 18) # FalsePython 中的逻辑运算符具有短路特性and遇到第一个假值就停止or遇到第一个真值就停止。5. 位运算符位运算符直接对整数的二进制位进行操作。# 位运算符示例 m 10 # 二进制1010 n 4 # 二进制0100 print(m n) # 按位与0 (0000) print(m | n) # 按位或14 (1110) print(m ^ n) # 按位异或14 (1110) print(~m) # 按位取反-11 print(m 1) # 左移一位20 (10100) print(m 1) # 右移一位5 (0101)6. 成员运算符成员运算符用于测试序列如字符串、列表、元组、字典、集合中是否包含某个成员。# 成员运算符示例 fruits [apple, banana, cherry] text Hello World print(banana in fruits) # True print(orange not in fruits) # True print(World in text) # True print(Python not in text) # True7. 身份运算符身份运算符用于比较两个对象的内存地址是否是同一个对象。# 身份运算符示例 list1 [1, 2, 3] list2 [1, 2, 3] list3 list1 print(list1 is list2) # False值相同但不是同一个对象 print(list1 is list3) # True指向同一个对象 print(list1 is not list2) # True注意is比较的是对象标识内存地址而比较的是值是否相等。8. 运算符优先级当表达式中包含多个运算符时Python 会按照优先级顺序执行运算。优先级从高到低大致如下()- 括号**- 幂运算~、、-- 按位取反、正负号*、/、//、%- 乘、除、整除、取模、-- 加、减、- 位移- 按位与^- 按位异或|- 按位或、、、、!、- 比较运算符not- 逻辑非and- 逻辑与or- 逻辑或、、-等 - 赋值运算符可以使用括号来明确指定运算顺序提高代码可读性。三、编码、字符集与Python默认编码1. 字符集与编码的基本概念字符集Character Set是一组字符的集合为每个字符分配一个唯一的编号码点。常见的字符集有ASCII美国信息交换标准代码包含128个字符0-127GB2312/GBK中国国家标准支持简体中文Big5繁体中文编码Unicode国际标准旨在包含世界上所有字符编码Encoding是将字符集中的字符码点转换为计算机可存储的二进制序列的规则。同一个字符集可以有多种编码方式UTF-8Unicode的一种变长编码兼容ASCIIUTF-16使用16位或32位表示字符UTF-32固定使用32位表示每个字符GB2312/GBK中文编码方案2. Python的默认编码Python 3 全面采用 Unicode 作为字符串的内部表示这解决了 Python 2 中的编码混乱问题。源代码文件编码# Python 3 默认使用 UTF-8 编码 # 可以在文件开头指定编码方式 # -*- coding: utf-8 -*- 包含中文的字符串 chinese_text 你好世界 print(chinese_text) # 正常输出你好世界字符串类型str类型存储 Unicode 字符Python 3bytes类型存储原始字节序列bytearray类型可变的字节序列# 字符串与字节的转换 text Python编程 byte_data text.encode(utf-8) # 编码为UTF-8字节 print(byte_data) # bPython\xe7\xbc\x96\xe7\xa8\x8b decoded_text byte_data.decode(utf-8) # 解码为字符串 print(decoded_text) # Python编程 查看系统默认编码 import sys print(sys.getdefaultencoding()) # 通常输出utf-83. 文件读写与编码在 Python 中读写文件时需要特别注意编码问题# 写入文件指定编码 with open(example.txt, w, encodingutf-8) as f: f.write(这是UTF-8编码的中文文本) 读取文件指定相同编码 with open(example.txt, r, encodingutf-8) as f: content f.read() print(content) # 这是UTF-8编码的中文文本 处理不同编码的文件 with open(gbk_file.txt, r, encodinggbk) as f: gbk_content f.read() print(gbk_content)4. 编码问题排查与处理常见的编码问题及解决方法# 1. 编码错误处理 try: with open(file.txt, r, encodingutf-8) as f: content f.read() except UnicodeDecodeError as e: print(f编码错误{e}) # 尝试其他编码 with open(file.txt, r, encodinggbk) as f: content f.read() 2. 忽略无法解码的字符 with open(file.txt, r, encodingutf-8, errorsignore) as f: content f.read() 3. 替换无法解码的字符 with open(file.txt, r, encodingutf-8, errorsreplace) as f: content f.read() 4. 检测文件编码需要安装chardet库 pip install chardet import chardet with open(unknown.txt, rb) as f: raw_data f.read() result chardet.detect(raw_data) print(f检测到的编码{result[encoding]}) print(f置信度{result[confidence]})四、总结Python 运算符提供了丰富的运算功能从基本的算术运算到复杂的位运算覆盖了程序开发中的各种需求。理解运算符的优先级和结合性对于编写正确的表达式至关重要。编码是 Python 开发中不可忽视的基础知识。Python 3 默认使用 UTF-8 编码这大大简化了国际化开发。在处理文件、网络数据或与外部系统交互时明确指定正确的编码可以避免许多常见的乱码问题。掌握这些基础知识后你可以更自信地编写 Python 代码处理各种数据类型和编码场景。