Python常见问题

本文深入介绍了Python编程的基础,包括字符编码UTF-8、标识符与关键字、数据模型、标准类型、字符串操作、正则表达式、加密服务如哈希算法、操作系统接口如os模块、时间处理time模块以及日志记录logging。此外,还涵盖了单元测试框架unittest和第三方测试库pytest的使用。文章还提及了Pandas库,强调了Series和DataFrame在数据分析中的应用,并展示了如何处理和分析结构化数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Reference

The Official Python3 Tutorial
Python3-Runoob.com

UTF-8(Universal Character Set/Unicode Transformation Format)8位元:针对Unicode(统一编码)的一种可变长度字符编码,即数字和自负之间的逻辑映射的概念编码。最致命的字符集ASCII

语言参考手册

词法分析

标识符和关键字

关键字

关键字 即预定义标识符,是作为保留字的标识符,不可用作普通标识符。

class # 类 应用于面向对象编程语言,描述所创建对象的属性和方法
def # 定义函数方法
保留的标识符类

某些标识符类(除了关键字)具有特殊含义,其命名模式以下划线开头和结尾:

__*__ # 系统定义的名称,简称为dunder(double underscore),这些名称由解释器及其实现(包括标准库)定义
__init__(self) # 一个特殊的类实例方法,称为构造方法/函数。每创建一个类的实例对象,Python解释器会自动调用它,一般用来对实例属性初始化。必须包含`self`且其作为第一个参数,指被创建的类实例本身

数据模型

对象、值和类型

标准类型层级结构

Python内置类型列表

  • 可调用类型:此类型可以被应用于函数调用操作

特殊方法命名

基本定制

函数

lambda arguments: expression # 匿名函数:将参数传入表达式并返回结果

5/7种标准/基本数据类型

类别数据类型可变形有序性元素要求
1 数值型int/float/complex -3/-3.14/2+3j不可变--
2 序列型str/list/tuple/rangelist可变,其他不可变有序range整数,其他任意类型
3 映射型dict可变无序键不可变,值任意
4 集合型set/frozensetset可变,另不可变无序元素不可变(元素不能是可变元素如list)
5 布尔型bool不可变--
6 二进制型bytes/bytearray不可变/可变有序0-255整数
7 空类型NoneType---

总结:

  • 只有list、dict值、集合可变,其他不可变
  • 序列型有序,集合/映射无需

1. 数值类型 Numeric Types

  • int 证书
  • float 浮点数
  • complex 复数,如3+5j

2. 序列类型

str 字符串

用引号扩起来

方法
  • replace()方法
    str.replace(old, new[, max])将字符串中旧字符串替换成新字符串,可设置替换不超过最大次数
  • split()方法:通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个子字符串。返回分割后的字符串列表
str.split(str="", num=string.count(str)) # str -- 分隔符,默认为所有的空字符,包括空格、换行/回车(\n)、制表符/tab(\t)等;num -- 分割次数,默认为-1,即分隔所有
  • title()方法:返回标题话字符串,所有单词都是以大写开始,其余字母均为小写
运算符

rR 原始字符串

r'\n' # 字面意思
R'\n' # 等价于\\n即\n
'\n' # 转义字符换行

list 列表

  • 格式:[1, "a", 'test', 1] 值可重复
  • 常用操作:索引从0开始
  • .append() 在列表末尾添加新对象。浅拷贝,追加的是对象的引用,随原对象变化而变化

tuple元祖

元素不变,除非包含可变元素如列表

3. 映射类型 Mapping Type

dict字典

{'key1': value1, 'key2': value2}
可变容器模型,键唯一不可变,值可存储任意类型对象。以关键字为索引

  • dict.keys()返回一个视图对象dict_keys(['key1', 'key2']),不是列表,不支持索引,可用list()转换为列表。(‘key1’ in deit.keys)
    访问字典里的值 dict['key1']
    添加元素 dict['key'] = value

4. 集合类型 Set Type

集合

Python 中的集合(Set)是一种无序、可变的数据类型,用于存储唯一(元素不重复)的元素。

5. 布尔类型 Boolean Type

  • bool 布尔值, True或False

6. 二进制类型 Binary Types

7. 空类型 Non Type

python标准库

文本处理服务

re — 正则表达式操作

  • findall()方法:对string返回一个不重复(不同索引位的切片)的pattern的匹配列表。
re.findall(pattern, string, flags=o) # pattern -- 匹配的正则表达式;string -- 要匹配的字符串;flags -- 标志位用于控制正则表达式的匹配方式,如是否区分大小写、多行匹配等

正则表达式(pattern)
1 .匹配除换行符\n以外的任意一个字符
2 *前面的字符出现0次或以上
3 .*贪婪,匹配从符号前开始到后面未结束的最长所有内容
4 .*?非贪婪,遇到开始和结束旧进行截取,中间没有字符也会进行截取
5 (.*?)非贪婪,同4,只保留括号里内容

加密服务

hashlib — 安全哈希与消息摘要

针对不同的安全哈希(现代术语)和消息摘要(旧称)算法实现了一个通用的接口。包括MD5算法

# 哈希对象具有下列方法 hash.
update(data) # 用bytes-like object字节类对象来更新哈希对象
digest() # 返回当前已传给 update() 方法的数据摘要
hexdigest() # 类似于 digest() 但摘要会以两倍长度字符串对象的形式返回,其中仅包含十六进制数码。 这可以被用于在电子邮件或其他非二进制环境中安全地交换数据值。

通用操作系统服务

os — 多种操作系统接口

本模块提供了一种使用与操作系统相关功能的便捷式途径。

# os.
getcwd() # 返回表示当前工作目录的字符串

time — 时间的访问和转换

函数功能

# time.
sleep(secs) # 暂停执行secs秒,常用于等待元素
time() # 返回以float浮点数表示的从epoch(时间开始的点,取决于平台)开始的描述的是时间值

logging — 日志记录设施

# logging.
basicConfig(**kwargs) # filename 使用指定文件名;logging 指定日志级别 CRITICAL > ERROR > WARNING > INFO > DEBUG;format 指定格式字符串
Logger(__name__) # 返回具有指定名称的日志记录器
exception(msg, *args, **kwargs) # 在日志中记录异常信息,此方法只能从异常处理程序调用

开发工具

unittest — 单元测试框架

assert断言:判断结果pass或fail

第三方库

pytest — 测试框架

常用注释

# 执行测试用例
pytest # pytest文件名/或进入目录下运行Pytest,执行某个目录下所有的用例
pytest *_test.py 或 pytest test_*.py # 执行某个.py文件下的测试用例
python -m pytest # 运行当前目录下的所有测试用例文档
pytest 文件名::类名::方法名 # 节点运行,仅运行某个.py文件/模块中的某个函数或方法
pytest -x 有fail就停止执行
---常用---
pytest -v 显示用例名称,不限时print内容
pytest -s 显示print内容
pytest --maxfail=3 fail等于3个时停止执行
pytest -sv -m "demo or smoke" 执行标签包含demo或smoke的用例
pytest -sv -m "demo and smoke" 执行标签同时包含demo和smoke的用例

Pandas库

Pandas是一个强大的分析结构化数据的工具集,使用基础是Numpy(提供高性能的矩阵运算);勇于数据挖掘和数据分析,同时也提供数据清洗功能

Series

它是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。

DataFrame

DataFrame是Pandas中的一个表格型数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame既有行索引也有列索引,可以被看做是由Series组成的字典。
结构:`DataFrame([data, index, columns, type, copy])

–\–
random库
提供各种伪随机数,随机种子seed=()
随机整数:randint(a, b) #[a, b] randrange(a, b, step) #[a, b)
随机浮点数:random() #[0.0, 1.0) uniform(a, b) #[a, b]
序列用函数:choices(seq) choices(seq, weights=None, k) shuffle(seq) #返回随机排列序列 sample(pop, k) #return list
概率分布-高斯分布:gauss(mean, std)

collections库

项目

#--> iterate through each and store in dictionary 依次遍历并存入字典
sections_dictionary = {} # 创建一个新的字典
iterative = 0 # 遍历次数初始化
for section in cleaned_sections: # 遍历已删除对话文本中的每个段落
    iterative += 1 # 遍历段落次数自增
    for char in characters: # 遍历角色
        if char in section: # 如果角色出现在段落中
            if str(iterative) in sections_dictionary.keys():
                sections_dictionary[str(iterative)].append(char) # 新建后遍历每段中新增角色名作为列表元素
            else:
                sections_dictionary[str(iterative)] = [char] # 新增键值对(遍历次数:角色名称)       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值