![](https://img-blog.csdnimg.cn/20200214195343730.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python
文章平均质量分 80
Python 编程语言学习
龚建波
熟悉C++ Qt,Python等
展开
-
Python venv 和 virtualenv 虚拟环境的基本使用
venv 和 virtualenv 都是搭建虚拟环境的工具,virtualenv 是第三方开源的,而 venv 作为 virtualenv 的一个子集自Python3.3开始集成到标准库中,在 virtualenv 的文档中可以看到他们的区别:没有 app-data 种子方法,可能会更慢;没有那么可扩展;不能指定本机其他 Python 版本,即 virtualenv 的 -p / --python 参数;无法通过 pip 升级;没有那么丰富的编程 API(描述虚拟环境而不创建它们)。原创 2023-07-14 11:41:29 · 3206 阅读 · 0 评论 -
Python几种基本的字符串格式化方法
1.旧式 % 格式化% 百分号格式化和 C 语言的 printf 格式化差不多。# '%%' 格式化成 '%'print('%% %d' % 1) #输出百分号和数字# %c 字符及其ASCII码print('%c' % 48) #输出ascii码48对应的0# %s 字符串# %d 十进制有符号整数# %u 十进制无符号正数# %o 八进制无符号数# %x 十六进制无符号数# %X 十六进制无符号数,大写字母# %e 浮点数科学计数法# %E 浮点数科学计数法,大写E#原创 2022-01-31 16:18:25 · 6592 阅读 · 1 评论 -
Python match case结构化模式匹配
Python 在 3.10 之前没有提供类似 switch case 一样的分支语句,虽然也能用 if elif else 或者字典来实现同样的逻辑。到 3.10 版本终于提供了 match case 结构化模式匹配,该语法比 switch case 更加灵活和强大。match 语句接受一个表达式并将其值与以一个或多个 case 语句块形式给出的一系列模式进行比较。和其他语言 switch case 语句很不同的一点是,match case 不用 break 进行退出,每个 case 是独立的逻辑。原创 2022-01-30 21:01:14 · 3938 阅读 · 0 评论 -
Python uiautomation初探,测试Win10计算器
在网上找 Python 客户端自动化测试的库,一般有pywinauto、pywin32、pyautogui、uiautomation。本文仅对 uiautomation 做简单的了解。MS UI Automation 是 MSAA 技术的一个替代品:即让控件和应用程序具有更好的可达性(accessible)。MS UIA明确定义了两个role:UIA Provider 即软件本身,主要是软件的开发人员依据相应的模式去实现相关的 interface, UIA Client 即自动化脚本和相关的 assi.原创 2021-12-12 23:31:08 · 3757 阅读 · 0 评论 -
Python selenium练习:华为保修查询
0.前言好久没写 Python 了,正好有小伙伴有个批量查询保修期得需求,就练习一下:查询地址:https://consumer.huawei.com/cn/support/warranty-query/需求就是根据序列号查询到对应的保修截止日期。个人感觉用 selenium 来做更简单点,然后验证码使用的pytesseract 来识别。1.准备工作A:selenium 库及谷歌浏览器、谷歌浏览器驱动驱动注意要下载浏览器对应版本的,可以从镜像下载:https://npm...原创 2021-08-23 22:47:42 · 2513 阅读 · 2 评论 -
Python ctypes模块的基本使用
ctypes是Python的外部函数库。它提供了与C兼容的数据类型,并允许调用DLL或共享库中的函数。可使用该模块以纯Python形式对这些库进行封装。官方提供了详尽的文档:https://docs.python.org/zh-cn/3.9/library/ctypes.html,配合网友的示例可以很快上手。本文主要是记录一些基本操作。原创 2021-06-18 14:19:47 · 15321 阅读 · 1 评论 -
Python3 自定义 sort() 的排序规则
在 Python2 中,sort 和 sorted 可以通过关键字参数 cmp 指定排序规则,但在 Python3 中这个参数给去掉了:Python2: list.sort(cmp=None, key=None, reverse=False)Python3: list.sort(key=None, reverse=False)(其中,参数 key 指定带有一个参数的函数,用于从每个列表元素中提取比较键;参数 reverse 可以指定为逆向排序。)根据 Python3 的文档:https:/原创 2020-07-13 21:08:55 · 20714 阅读 · 2 评论 -
关于VS Code调试Python时的路径问题
0.问题在Python中按F5执行py文件时,默认是从当前打开的文件夹目录为执行路径。如果main入口在文件夹顶层还好,如果在子文件夹就会有些问题,比如相对路径导入模块时会报错。如下,我执行子文件夹目录的moduleb.py,就报错说找不到另一个文件夹的模块(在main.py导入moduleb是正常的):通过打印当前执行目录,可以发现路径还在VS Code打开文件夹的顶层目录:import osprint(os.getcwd())百度了一下VS Code在当前文件目录执行的.原创 2020-06-27 14:41:53 · 31797 阅读 · 13 评论 -
Python二叉树的遍历:深度优先(前序、中序、后序)和广度优先(层次)
准备二叉树(Binary Tree)是一种特殊的树型结构,它的特点是每个结点至多有两棵子树(即二叉树中不存在度大于2的结点),且二叉树的子树有左右之分,其次序不能任意颠倒(有序树)。在 Python 中,已有别人实现好的二叉树模块,即 binarytree,但是本文主要是学习二叉树遍历,就不介绍了。二叉树相关内容可自行学习。深度优先遍历:沿着每一个分支路径进行深入访问。前序、中序、后序都是...原创 2020-04-09 22:24:50 · 2214 阅读 · 1 评论 -
Python实现双向链表的增删改查排序反转等操作
双向链表结构链表由一连串的节点组成,双向链表节点中包含两个特殊的成员,一个用来指向前一个节点,一个用来指向后一个节点,如图所示(为了便于操作我们可以使用 head 和 tail 节点来做首尾):添加节点时,把该位置前后指向修改为新的节点,并且新的节点指向前后节点: def insert(self, prev, next): ''' 节点插入到两个节点之间 '...原创 2020-04-08 21:40:22 · 964 阅读 · 0 评论 -
Python实现单向链表的增删改查反转等操作
单向链表结构链表由一连串的节点组成,单向链表中节点包含一个用来存储下一个节点引用的成员,如图所示:因为单向链表只有一个指针/引用成员,所以操作起来不是很方便,很多地方都需要从头节点开始遍历。实现代码完整代码如下:class Node: ''' 节点的结构体 ''' def __init__(self,value=None): self.va...原创 2020-04-06 21:15:42 · 459 阅读 · 3 评论 -
Python学习笔记:协程初探
(本文主要参照Python在线文档进行学习)0.前言进程有自己独立的堆和栈,由操作系统调度;线程有独立的栈,共享堆空间,标准的线程也是由操作系统调度;协程和线程一样共享堆不共享栈,但是是由程序员在协程的代码里显示调度。协程避免了无意义的调度,进而提升性能,但也增加了程序员的责任。1.初探asyncio是一个使用 async / await 语法编写并发代码的库,在Python 3....原创 2019-12-29 14:51:14 · 337 阅读 · 0 评论 -
Python查找最大或最小的 N 个元素
(本文为Python Cookbook第三版1.4的内容)https://python3-cookbook.readthedocs.io/zh_CN/latest/c01/p04_find_largest_or_smallest_n_items.html问题怎样从一个集合中获得最大或者最小的 N 个元素列表?解决方案heapq 模块有两个函数:nlargest()和nsma...转载 2019-07-23 23:22:01 · 925 阅读 · 0 评论 -
Python学习笔记:作用域
0.前言最近复习Python基础,本文的内容是Python学习手册中文第四版的学习笔记,其实只要记住LEGB原则就行了。(吐槽下这本书,翻译得不太好,有些代码缩进都不对)1.Python作用域基础Python中的变量名在第一次赋值时已经创建,并且必须经过赋值之后才能够使用。在代码中给一个变量赋值的地方决定了这个变量存在于哪个命名空间,也就是他的可见范围。Python中并不是所有的语句块...原创 2019-07-21 00:28:27 · 625 阅读 · 0 评论 -
Python学习笔记:*和**运算符
类似于C/C++中的*既是乘号,又有指针声明、解引用等功能,Python中的*和**也具有语法多义性,以Python3.6版本为例:1.作为算术运算符print(2*3) #乘法2*3=6print(2**3) #乘方2^3=2*2*2=82.用于函数形参一个星号(*)表示接收任意个无名参数作为元组(tuple)来处理;两个星号(**)表示接收任意个关键字参数对作为字典...原创 2019-07-21 12:30:20 · 1544 阅读 · 0 评论 -
Python文本读写及编码检测
1.文本读写Python的文件操作接口属于简单易用型的,利用open函数打开文件之后就可以进行操作了,也可以用print重定向输出到文件。file_path=r'./测试文件.txt'#1-写文件#文本模式可以不加t,二进制读写需要加b#with语句打开文件是能结束时自动关闭的,如果不用with记得手动关闭with open(file_path,'w+',encoding='utf8') as f: f.write('这是一行中文\n') f.write('Test w..原创 2019-07-28 21:40:08 · 2101 阅读 · 0 评论 -
Python学习笔记:闭包与装饰器
闭包是带有上下文的函数,可以保存函数的状态信息,比如嵌套函数可以保存外层函数的变量。装饰器顾名思义和装饰模式类似,动态地给一个对象添加一些额外的职责。正因为闭包可以保存状态,而装饰器本质上就是为对象附加额外的属性(状态)。所以,借助闭包就能轻易地实现装饰器了。原创 2019-08-06 21:38:10 · 275 阅读 · 0 评论 -
深入理解Python中的生成器
生成器(generator)概念生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束。生成器语法生成器表达式: 通列表解析语法,只不过把列表解析的[]换成() 生成器表达式能做的事情列表解析基本都能处理,只不过在需要处理的序列比较大时,列表解析比较费内存。>>> gen = (x**2 f...转载 2019-08-07 20:43:02 · 193 阅读 · 0 评论 -
Python selenium练习:爬取京东商品搜索结果
Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作(具体的配置或使用可以百度)。我用的谷歌浏览器,先在镜像下载谷歌浏览器版本对应的驱动版本https://npm.taobao.org/,下下来直接解压就能用了。代码只是个简单的练习,对于异常情况没有过多的处理,也没有代理、登录、验证什么的,只是能用(或许网络不好的话需要把超时和睡眠时间加长一点点)。另外,对于数据的解析我也...原创 2019-08-19 22:35:34 · 1305 阅读 · 0 评论 -
Python requests练习:爬取猫眼电影排行
0.前言本文为《Python3网络爬虫开发实战》的学习笔记。先是跟着书上敲了一遍抓取猫眼排行的代码,但是感觉re正则表达式用起来不大方便,后面自己用PyQuery解析了下。1.书上的例子(requests+re)目标地址https://maoyan.com/board/4,top100的排行分为了十页,每个分页只是url增加了一个offset参数,假如要查看top21-30,那么url...原创 2019-08-18 13:15:57 · 608 阅读 · 0 评论