能力说明:
了解Python语言的基本特性、编程环境的搭建、语法基础、算法基础等,了解Python的基本数据结构,对Python的网络编程与Web开发技术具备初步的知识,了解常用开发框架的基本特性,以及Python爬虫的基础知识。
暂时未有相关云产品技术能力~
Python潮流周刊#2:Rust 让 Python 再次伟大
Python潮流周刊#1:如何系统地自学Python?
性能最快的代码分析工具,Ruff 正在席卷 Python 圈!
为什么 Python、Go 和 Rust 都不支持三元运算符?
这一次,Python 真的有望告别 GIL 锁了?
Python 发展趋势:与 Rust 深度融合、更易于编写 Web 应用
大概两年半前,我萌生了要创作一个新的系列文章的想法,也就是“Python为什么”,试图对 Python 的语法及特性提出“为什么”式的问题,以此加深对它的理解,探寻使用技巧、发展演变、设计哲学等话题。
切片(slice)是 Python 中一种很有特色的特性,在正式开始之前,我们先来复习一下关于切片的知识吧。 切片主要用于序列对象中,按照索引区间截取出一段索引的内容。 切片的书写形式:[i : i+n : m] ;其中,i 是切片的起始索引值,为列表首位时可省略;i+n 是切片的结束位置,为列表末位时可省略;m 可以不提供,默认值是 1,不允许为 0,当 m 为负数时,列表翻转。 切片的基本含义是:从序列的第 i 位索引起,向右取到后 n 位元素为止,按 m 间隔过滤 。
Python 在涉及真值判断(Truth Value Testing)时,语法很简便。 比如,在判断某个对象是否不为 None 时,或者判断容器对象是否不为空时,并不需要显示地写出判断条件,只需要在 if 或 while 关键字后面直接写上该对象即可。 如果需要作出相反的判断,即“如果为 None 或为空”,只需要写成if not my_list 即可。
... 是 Python 3 中的一个内置常量,它是一个单例对象,虽然是 Python 2 中就有的 Ellipsis 的别称,但它的性质已经跟旧对象分道扬镳 ... 可以替代 pass 语句作为占位符使用,但是它作为一个常量对象,在占位符语义上并不严谨。很多人已经在习惯上接受它了,不妨一用 ... 在 Python 中不少的使用场景,除了占位符用法,还可以支持扩展切片语法、丰富 Type Hint 类型检查,以及表示容器对象的无限循环 ... 对大多数人来说,可能并不多见(有人还可能因为它是一种符号特例而排斥它),但它的存在,有些时候能够带来便利。希望本文能让更多人认识它,那么文章的目的也就
简单而言,pass 是一种空操作(null operation),解释器执行到它的时候,除了检查语法是否合法,什么也不做就直接跳过。 它跟 return、break、continue 和 yield 之类的非空操作相比,最大的区别是它不会改变程序的执行顺序。它就像我们写的注释,除了占用一行代码行,不会对所处的作用域产生任何影响。
zip() 是 Python 中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来。 内容主要分三部分: • 用法部分:介绍它的基础用法、高级用法、骚操作用法 • 进阶部分:介绍它的实现原理,关注几个实现的细节 • 发散部分:聚焦它的不足,以及解决方法
在 C/C++/Java 等等语言中,整型变量的自增或自减操作是标配,它们又可分为前缀操作(++i 和 --i)与后缀操作(i++ 和 i--),彼此存在着一些细微差别,各有不同的用途。
一般而言,编程语言中使用分号“;”来实现两种目的: 1. 作为语句分隔符:使用分号来分隔语句(statement),这样就能在一行代码中书写多条语句(一行多句) 2. 作为语句终止符:使用分号来终止语句,这样就能把多行代码识别为一条语句(一句多行)
众所周知,升级某个库(假设为 xxx),可以用pip install --upgrade xxx 命令,或者简写成pip install -U xxx 。 如果有多个库,可以依次写在 xxx 后面,以空格间隔。那么,如何简单优雅地批量更新系统中全部已安装的库呢?
在标准库inspect 中,它提供了两个自省的函数,即 ismethod() 和 isfunction(),可以用来判断什么是方法,什么是函数。
Python 当前要求所有装饰器都由 dotted name 组成,可选地带一个调用。本 PEP 提议消除这些限制,并允许任何有效的表达式作为装饰器。 (译注:dotted name,指的是装饰器在“@”符号后是“xxx”或“xxx.yyy”这种格式。没有很好地译法,故未译。)
Numpy 这么做是因为它是做科学计算的,为了提升效率,它把编译好的 C 拓展文件打包,从而不需要依赖环境上的 libxxx-devel 之类的库。如果你编译安装过 Python,应该有印象需要安装 zlib-devel、openssl-devel 和 libffi-devel 之类的系统依赖。但我们前面的问题比较简单,并不是有不同的编译依赖(系统级),而只是三方库依赖不同(项目级)。 另一个主要的原因,Numpy 打包出的不同系统版本,并非简简单单地用 setuptools 之类的 Python 库就能打包,而是要借助标准的镜像进行构建。
简单来说,它是一个用 Python 开发的轻量级的远程系统管理工具,在远程登录服务器、执行 Shell 命令、批量管理服务器、远程部署等场景中,十分好用。 Fabric 2 是其最新的大版本,跟早前的 Fabric 1 有挺大的不同,更加好用了,但是没填上的坑也挺多的……
关于 Python 自动化的话题,在上一篇文章中,我介绍了 Invoke 库,它是 Fabric 的最重要组件之一。Fabric 也是一个被广泛应用的自动化工具库,是不得不提的自动化运维利器,所以,本文将来介绍一下它。 Fabric 主要用在应用部署与系统管理等任务的自动化,简单轻量级,提供有丰富的 SSH 扩展接口。在 Fabric 1.x 版本中,它混杂了本地及远程两类功能;但自 Fabric 2.x 版本起,它分离出了独立的 Invoke 库,来处理本地的自动化任务,而 Fabric 则聚焦于远程与网络层面的任务。
invoke 是从著名的远程部署工具 Fabric 中分离出来的,它与 paramiko 一起是 Fabric 的两大最核心的基础组件。
其核心作用是支持创建隔离的 Python 环境,在里面可以安装不同版本的 Python 解释器与各种依赖库,以此方便开发者做自动化测试、打包、持续集成等事情。 简单来说,tox 是一个管理测试虚拟环境的命令行工具。 它已存在多年且广被开发者们使用,例如,著名的云计算平台 OpenStack 也采用了它,作为最基础的测试工具之一
参数化测试是一种“数据驱动测试”(Data-Driven Test),在同一个方法上测试不同的参数,以覆盖所有可能的预期分支的结果。它的测试数据可以与测试行为分离,被放入文件、数据库或者外部介质中,再由测试程序读取。
Python 中 -m 的典型用法、原理解析与发展演变
用于项目依赖管理的工具有很多,本文主要围绕与 requirements.txt 文件相关的、比较相似却又各具特色的 4 个三方库
在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx' 或者 ModuleNotFoundError: No module named 'xxx' 。 导入失败问题,通常分为两种:一种是导入自己写的模块(即以 .py 为后缀的文件),另一种是导入三方库。
Python 中的sys 模块极为基础而重要,它主要提供了一些给解释器使用(或由它维护)的变量,以及一些与解释器强交互的函数。 本文将会频繁地使用该模块的getsizeof() 方法,因此,我先简要介绍一下: • 该方法用于获取一个对象的字节大小(bytes) • 它只计算直接占用的内存,而不计算对象内所引用对象的内存
使用 pprint 模块的 pprint() 替代 print(),可以解决如下痛点: • 设置合适的行宽度,作适当的换行 • 设置打印的缩进、层级,进行格式化打印 • 判断对象中是否出现无限循环,并优化打印内容 1、简单使用
需要批量压缩图片,现有大约 200 张,后会再增 是压缩,不是切割截取,不改变图片尺寸 原图片大部分是 10M - 30M,目标是压缩成 1M 以内,越小越好
(1)sum() 函数的性能到底差多少,为什么会差?(2)既然 sum() 不是最好的列表降维方法,那是否有什么替代方案呢?
1、如果原列表的元素除了列表,还有其它类型的元素,怎么把同类的元素归并在一起呢? 2、如果是一个三维或更高维的列表,怎么更好地把它们压缩成一维列表呢? 3、sum() 函数还有什么知识要点呢?
除了做实验,需要用到动态创建函数的场景很少。 玩耍(Toying around) Python 的内部构件是一种深入学习这门语言的好方法。 如果需要,可以毫不费力地越过解释器/语言的界线。
一个是动态地进行变量赋值,通过修改命名空间而植入变量;一个是动态地执行代码,可以说是通过“走后门”的方式,安插了变量。
切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对象。通常来说,切片的作用就是截取序列对象,然而,对于非序列对象,我们是否有办法做到切片操作呢?在使用切片的过程中,有什么要点值得重视,又有什么底层原理值得关注呢?
Python对象的空间边界:独善其身与开放包容
照例先总结下本文内容:(1)join() 方法除了在拼接字符串时速度较快,它还是目前看来最通用有效的复制字符串的方法 (2)Intern 机制(字符串滞留)并非万能的,本文探索一下它的软肋有哪些
本文标题的问题分为两部分:(1)Python 中是否支持复制字符串?(2)如果不支持,为什么不支持?
几乎任何一种编程语言,都把字符串列为最基础和不可或缺的数据类型。而拼接字符串是必备的一种技能。今天,我跟大家一起来学习Python拼接字符串的七种方式。
学习是循序渐进的过程,若能建立知识点间的联系,进行系统性的学习,那将更有助于效果。阅读这篇文章,你将读到如下内容: 1、判断文件的方法(try语句、os模块、pathlib模块)2、以上几种方法的优劣对比
本文,你可以学到如下内容: 1、JSON是什么? 2、JSON与XML的优劣差异? 3、将Python对象编码成JSON字符串 4、将JSON字符串解码为Python对象 5、解决JSON中文乱码问题
对于初学者来说,一份详尽又清晰明白的指南很重要。今天,猫猫跟大家一起,好好学习Python文件读写的内容,这部分内容特别常用,掌握后对工作和实战都大有益处。学习是循序渐进的过程,欲速则不达。文章较长,建议大家收藏,以备复习查阅哦。 1、如何将列表数据写入文件?2、如何从文件中读取内容?3、多样需求的读写任务4、从with语句到上下文管理器
Copilot 是 Github 推出的一款人工智能编程助手,推出仅一年就受到大量开发者的追捧(据官方统计有 120 万用户)。然而,自 2022 年 6 月起,它改为了付费订阅模式(每月 10 美元或每年 100 美元)。 我们暂且不讨论训练代码可能涉及的版权及授权许可问题,可以肯定的是,利用机器学习训练出智能编程 AI 模型,这会是未来的大势所趋! 巧合的是,仅在 Copilot 宣布收费的几天后,Amazon 就推出了一款竞品 CodeWhisperer!相信在不久的将来,类似的产品会如雨后春笋般涌现,到那时,程序员和编程学习者们就更加有福了!
年度盘点
脑洞:如何用一个整数来表示一个列表?
魔术方法
我发现了《流畅的Python》和PyPy文档的错误
为什么说 Python 内置函数并不是万能的?
Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?
之所以 Python 没有 switch 语句,原因有:switch 的实现细节/功能点未经敲定、没有 switch 也挺好的、有其它不错的方法替代 switch、Guido 的小任性……
某位 A 同学发了我一张截图,问为何结果中出现了负数? 看了图,我第一感觉就是数据溢出了。数据超出能表示的最大值,就会出现奇奇怪怪的结果。 然后,他继续发了张图,内容是 print(100000*208378),就是直接打印上图的 E[0]*G[0],结果是 20837800000,这是个正确的结果。