[Python工匠]输出②数值与字符串

news2024/11/16 19:38:25

 2.1 基础知识

2.1.1 数值基础

在Python中,一共存在三种内置数值类型:整型(int)、浮点型(float)和复数类型(complex)

 在大多数情况下,我们只需要用到前两种类型:int与float。二者之间可以通过各自的内置方法进行转换:

在定义数值字面量时,如果数字特别长,可以通过插入_分隔符来让它变得更易读: 

 

 Python里的数值类型十分让人省心,你大可随心所欲地使用,一般不会碰到什么奇怪的问题。不过,浮点数精度问题是个例外。

浮点数精度问题

 2.1.2 布尔值其实也是数字

布尔(bool)类型是Python里用来表示“真假”的数据类型。你肯定知道它只有两个可选值:True和False。不过,你可能不知道的是:布尔类型其实是整型的子类型,在绝大多数情况下,True和False这两个布尔值可以直接当作1和0来使用。

布尔值的这个特点,最常用来简化统计总数操作。 

 2.1.3 字符串常用操作

01.把字符串当序列来操作

字符串是一种序列类型,这意味着你可以对它进行遍历、切片等操作,就像访问一个列表对象一样:

 02.字符串格式化

在当前的主流Python版本中,至少有三种主要的字符串格式化方式。
(1)C语言风格的基于百分号%的格式化语句:'Hello, %s' % 'World'。
(2)新式字符串格式化(str.format)方式(Python 2.6新增):"Hello,{}".format ('World')。(3)f-string字符串字面量格式化表达式(Python 3.6新增):name = 'World';f'Hello, {name}'。

第一种字符串格式化方式历史最为悠久,但现在已经很少使用。相比之下,后两种方式正变得越来越流行。从个人体验来说,f-string格式化方式用起来最方便,是我的首选。和其他两种方式比起来,使用f-string的代码多数情况下更简洁、更直观。

0.3 拼接多个字符串

假如要拼接多个字符串,比较常见的Python式做法是:首先创建一个空列表,然后把需要拼接的字符串都放进列表,最后调用str.join来获得大字符串。

 在拼接字符串时,+=和join同样好用。

2.1.4 不常用但特别好用的字符串方法

Python为字符串类型实现了非常多内置方法。在对字符串执行某种操作前,请一定先查查某个内置方法是不是已经实现了该操作,否则一不留神就会重复发明轮子。

 日常编程中,我们最常用到的字符串方法有.join()、.split()、.startswith(),等等。虽然这些常用方法能满足大部分的字符串处理需求,但要成为真正的字符串高手,除了掌握常用方法,了解一些不那么常用的方法也很重要。在这方面,.partition()和.translate()方法就是两个很好的例子。

str.partition(sep)的功能是按照分隔符sep切分字符串,返回一个包含三个成员的元组:(part_before, sep, part_after),它们分别代表分隔符前的内容、分隔符以及分隔符后的内容。

举个例子,我有一个字符串s,它的值可能会是以下两种格式。(1)'{key}:{value}',键值对标准格式,此时我需要拿到value部分。(2)'{key}',只有key,没有冒号:分隔符,此时我需要拿到空字符串''。

 除了partition方法,str.translate(table)方法有时也非常有用。它可以按规则一次性替换多个字符,使用它比调用多次replace方法更快也更简单:

 2.1.5 字符串与字节串

(1)字符串:我们最常挂在嘴边的“普通字符串”,有时也被称为文本(text),是给人看的,对应Python中的字符串(str)类型。str使用Unicode标准,可通过.encode()方法编码为字节串。

(2)字节串:有时也称“二进制字符串”(binary string),是给计算机看的,对应Python中的字节串(bytes)类型。bytes一定包含某种真正的字符串编码格式(默认为UTF-8),可通过.decode()解码为字符串。

 最佳实践

在我们的程序中,应该尽量保证总是操作普通字符串,而非字节串。必须操作处理字节串的场景,一般来说只有两种:

(1)程序从文件或其他外部存储读取字节串内容,将其解码为字符串,然后再在内部使用;(2)程序完成处理,要把字符串写入文件或其他外部存储,将其编码为字节串,然后继续执行其他操作。

 当你要把字符串写入文件(进入计算机的领域)时,请谨记:普通字符串采用的是文本格式,没法直接存放于外部存储,一定要将其编码为字节串——也就是“二进制字符串”——才行。

 以下是本章要点知识总结。(1)数值基础知识· Python的浮点数有精度问题,请使用Decimal对象做精确的小数运算· 布尔类型是整型的子类型,布尔值可以当作0和1来使用· 使用float('inf')无穷大可以简化边界处理逻辑

(2)字符串基础知识

· 字符串分为两类:str(给人阅读的文本类型)和bytes(给计算机阅读的二进制类型)

· 通过.encode()与.decode()可以在两种字符串之间做转换

· 优先推荐的字符串格式化方式(从前往后):f-string、str.format()、C语言风格格式化

· 使用以r开头的字符串内置方法可以从右往左处理字符串,特定场景下可以派上用场

· 字符串拼接并不慢,不要因为性能原因害怕使用它

(3)代码可读性技巧· 在定义数值字面量时,可以通过插入_字符来提升可读性

· 不要出现“神奇”的字面量,使用常量或者枚举类型替换它们

· 保留数学算式表达式不会影响性能,并且可以提升可读性

· 使用textwrap.dedent()可以让多行字符串更好地融入代码

(4)代码可维护性技巧

· 当操作SQL语句等结构化字符串时,使用专有模块比裸处理的代码更易于维护

· 使用Jinja2模板来替代字符串拼接操作(

5)语言内部知识

· 使用dis模块可以查看Python字节码,帮助我们理解内部原理

· 使用timeit模块可以对Python代码方便地进行性能测试

· Python语言进化得很快,不要轻易被旧版本的“经验”所左右

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/410488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAR ADC系列23:异步SAR逻辑

异步sar逻辑的引入: 原因1:提高转换速度 ■ 同步时钟从第一个比较周期到最后一个比较周期长度都是相等的。对于Latch比较器,信号幅度越小,比较时间越长(参考latch时域响应那一节)。为了保证比较器…

Linux串口出厂测试工具与使用说明

1、说明 本文针对Linux系统上如何对各类串口硬件进行出厂测试进行硬件连接和软件使用说明,提供的软件测试工具wchsertest,适用于USB、PCI、PCIe转串口设备等、同样也适用于原生ttyS串口。 2、串口测试硬件连接 在测试前,需要制作单独的硬件…

寸照换底色技巧大全,超详细图文教程

在日常的设计工作中,我们常常需要将图片的背景色进行修改,以适应不同的场景和需求。其中最常用的方法就是寸照换底色技巧。本文将为大家介绍一些常见的寸照换底色技巧,并提供超详细的图文教程,帮助大家轻松完成这项任务。 一、使…

2023最新面试题-Java-6

1. Date API Java 8 在包java.time下包含了一组全新的时间日期API。新的日期API和开源的Joda-Time库差不多,但 又不完全一样,下面的例子展示了这组新API里最重要的一些部分: Clock类提供了访问当前日期和时间的方法,Clock是时区敏…

springboot加载命令行参数ApplicationArguments

往期文章 springcloud整合knike4j聚合微服务接口文档 spring源码 - 条件注解ConditionnalOnClass的原理分析 springboot项目实现导出pdf功能,这也太简单了吧 目录 文章目录往期文章目录一、介绍二、通过应用程序参数获取配置1. 通过bean获取应用程序参数2. 通过V…

在外web浏览器远程访问jupyter notebook服务器

文章目录前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口5. 固定公网地址转载自远控源码文章:公网远程访问jupyter notebook【cpolar内网穿透】 前言 Jupyter Notebook&#…

我现在必须new一个对象!!!

目录 前言 1.new 2.delete 3.底层逻辑 4.定位new 5.对比 前言 🎃之前在使用C语言的时候,我们便使用 malloc 和 calloc 等函数进行动态内存的开辟。但 C 之中又引入了两个操作符 new 和 delete 来代替C语言中的函数进行动态内存的管理。下面就一起…

苏州源特VPT87DDF01B 隔离变压器 小体积/SMD/3000VDC 隔离

1 产品特点  小体积隔离变压器  隔离电压 3000VDC  工作温度:-40~125℃(包含产品温升)  存储温度:-55~125℃  SMD 表贴安装  回流焊温度:峰值温度≤250℃(10s)  回流焊次数&#…

Softing新版HART多路复用器软件支持西门子控制器

用于访问配置和诊断数据的HART多路复用器软件——Softing smartLink SW-HT,现在支持西门子的ET200远程IO和FDT/DTM接口。 smartLink SW-HT是一个基于Docker容器的软件应用。通过该软件,用户可以快速地访问以太网远程IO的HART设备,并且无需额外…

【Linux】进程间通信之管道(pipe)

文章目录前言为什么要进程间通信进程间通信的理论依据管道管道的原理创建匿名管道管道的特点管道的场景利用管道控制子进程命名管道命名管道的打开规则命名管道和匿名管道的区别用命名管道实现server和client通信前言 大家好久不见,今天开始我们将进入进程间通信章…

redis高可用方案:主从复制+哨兵模式,经典案例:一主二从三哨兵,及springboot集成配置

Redis高可用方案:主从复制哨兵模式 经典案例:一主二从三哨兵,及springboot集成配置 第一.配置 1.主节点配置(redis.conf) # 主节点配置 仅展示必要配置 redis.conf # 保护模式设置为关,方便其他节点访问…

推荐几款炫酷的 MySQL 可视化管理工具!好用到爆!!

MySQL 的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,工具好用是一方面,个人的使用习惯也很重要,这里介绍 13 款 MySQL 图形化管理工具,供大家参考。 1&#xff1a…

vite .env.test环境使用ant design vue ,打包后a-date-picker控件无法选择日期

前端开发后台管理系统,常用的UI库当属Element UI和 Ant Design Vue,但是前段时间遇到一个奇葩问题,在这里记录一下,防止小伙伴们踩坑。 后台系统,大家肯定都用过时间控件,本期我们使用的是ant design vue&…

2道关于chan的面试题

题目一: 下面关于通道描述正确的是: 1.读nil chan会触发panic 2.写nil chan会触发panic 3.读关闭的chan会触发panic 4.写关闭的chan会触发panic解答:这个提涉及到2个知识点,操作nil的chan会怎么样,操作关闭的chan会怎么样,下面我…

双目相机测距原理

双目相机测距是一种常用的计算机视觉技术,它利用两个摄像头同时拍摄同一场景,通过测量两个摄像头视野中同一物体在图像上的像素差异,从而计算出物体距离的方法。 具体原理如下: 双目相机的构成 双目相机由两个摄像头组成&#…

用ChatGPT怎么赚钱?普通人用这5个方法也能赚到生活费

ChatGPT在互联网火得一塌糊涂,因为它可以帮很多人解决问题。比如:帮编辑人员写文章,还可以替代程序员写代码,帮策划人员写文案策划等等。ChatGPT这么厉害,能否用它来赚钱呢?今天和大家分享用ChatGPT赚钱的5…

Cesium关于3Dtiles的细节分享

介绍 介绍一下Cesium中有关3dTiles的奇淫技巧,存在一些埋坑的地方,以下内容仅为自己摸索的细节和方法,仅供参考,若有更好的办法欢迎讨论 通用快速获取feature中包含的属性信息 有时候需要快速获得3dTiles中的feature中的属性信…

deb文件如何安装到iphone方法分享

Cydia或同类APT管理软件在线安装 Cydia或同类APT管理软件在线安装,这个是最佳的安装方式,因为通常无需考虑依赖关系,但缺点是对网络的要求比较高;命令行中以dpkg-iXXX.deb的形式安装,好处是可以以通配符一次性安装多个deb,而且也可以直接看到脚本的运行状况和安装成功/失…

执行命令行程序测试自动化

这几天有一个小工具需要做测试,是一个命令行工具,这个命令行工具有点类似mdbg等命令行工具,即程序运行后,在命令行等待用户敲入的命令,处理命令并显示结果,再继续等待用户敲入新的命令。 原来的测试用例都…

Vue实现自动化平台(五)--用例编辑页面

上一章:Vue实现自动化平台(四)--接口管理页面的实现_做测试的喵酱的博客-CSDN博客 github地址:https://github.com/18713341733/vuemiaotest 这个目前只是用来练手的,项目还没成型。等以后我写完了,再更…