问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python解决文本处理难题。想了老半天了 代码要优美可读性好哈

发布网友 发布时间:2022-06-13 00:55

我来回答

2个回答

好二三四 时间:2022-06-13 05:17

一、需求描述

没有类型提示的编程,总觉得不太方便,好在python3.5以后内置了typing模块。

typing模块会对函数和变量类型进行注解。

但是Python 运行时不强制执行函数和变量类型注解,但这些注解可用于类型检查器、IDE、静态检查器等第三方工具。

官方网址:

typing --- 类型提示支持 — Python 3.10.1 文档

https://docs.python.org/zh-cn/3/library/typing.html

二、实战演练

1、体验注解功能

如下所示,定义变量类型而不赋值,那么在赋值的时候就会有相应的提示,但运行不报错

from typing import AbstractSet
from typing import Dict
from typing import Generator
from typing import List
from typing import Mapping
from typing import Optional
from typing import Tuple
from typing import TypeVar
from typing import Union
 
list_001:List[int]
list_001 = 123

?2、List和Dict的使用

# List的使用
def test_List(num: int) -> List[int]:
    return [num, bool(num), str(num)]  # 只要有一个符合指定类型,就不会给出提示信息
 
# Dict的使用
def test_Dict(num: int) -> Dict[str,int]:  #
    return {"num": "num", 1: "str(num)", "str(num)": 1}  # 只要有一个符合指定类型,就不会给出提示信息
    # return {1: 3}  # 如果是key是1,则会出现提示key应该是str
    # return {"1":3}
 
print(test_Dict(5))

?3、Union的使用

# List的使用
def test_List(num: int) -> [int or str or bool]:
    return [num, bool(num), str(num)]  # 只要有一个符合指定类型,就不会给出提示信息
 
# Dict和Union的使用
def test_Dict(num: int) -> Dict[str,Union[int, str, bool]]:  #
    return {"num": "num", 1: "str(num)", "str(num)": 1}  # 只要有一个符合指定类型,就不会给出提示信息
    # return {1: 3}  # 如果是key是1,则会出现提示key应该是str
    # return {"1":3}
print(test_List(1))
print(test_Dict(5))

4、Optional的使用

这个参数可以为空或已经声明的类型,即 Optional[X] 等价于 Union[X, None]?

# Dict和Optional的使用
def test_Dict(num: int) -> Dict[str,Optional[str]]:  #
    return {"num": "num", 1: "str(num)", "str(num)": 1}  # 只要有一个符合指定类型,就不会给出提示信息
    # return {1: 3}  # 如果是key是1,则会出现提示key应该是str
    # return {"1":3}
 
def test_Dict01(num: int) -> Dict[str,Optional[int]]:  #
    return {"1":None}

5、Tuple的使用

与列表一致,元组泛型要求每个位置的类型要一一对应

# Optional的使用
def test_Dict(num: int) -> Dict[int,Tuple[int,int]]:  #
    return {1:(1,2)}
    # return {1:(1)}  # 非一一对应的时候会给出提示

到此这篇关于python:使用typing模块加强代码的可读性的文章就介绍到这了,更多相关python typing模块加强代码内容请搜索好二三四以前的文章或继续浏览下面的相关文章希望大家以后多多支持好二三四!

<link rel="stylesheet" href="https://js.how234.com/jslib/syntaxhighlighter/styles/shCore.css" type="text/css" /><link rel="stylesheet" href="https://js.how234.com/jslib/syntaxhighlighter/styles/shThemeDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><style>pre{overflow-x: auto}</style>

热心网友 时间:2022-06-13 02:25

readlines = lambda f: [l.strip() for l in open(f)]
replacewith = lambda ln, x: ln.replace("org", x)
print '\n'.join([replacewith(l, r)
                 for l, r in zip(readlines('B'), readlines('A'))])

Python 之禅 (可能是目前知乎上最好的版本)

可读性至关重要: 代码不仅仅是给机器执行的,更是给人阅读和理解的,良好的可读性是基础中的基础。实用与优雅的平衡: 实用性固然重要,但特殊情况下也不能牺牲原则,遵循规范,避免例外成为绊脚石。异常处理要审慎: 不要轻率地忽视异常,处理错误时要明确并提供恰当的反馈,以免隐藏潜在问题。避免猜测与...

【Python基础】Python中的Pythonic编程风格:探索Python之禅与最佳实...

然而,真正让Python迈向现代化的是Python 3.x系列的发布,尽管起初存在兼容性问题,但经过社区的努力,Python 3.x逐渐成为主流,并引入了Unicode文本处理、改进的异常处理机制、以及大量语法简化和性能优化。Python的编程哲学集中体现在"The Zen of Python"之中,这是一组内置于Python解释器中的指导原则,通...

好代码和坏代码

代码的可移植性是跨平台运行的必要条件,需要对底层操作系统有深入理解并进行抽象。某些编程语言如Python、Java和Go提供了很好的跨平台支持。在在线服务中,可观测性和可监控性同样重要,确保对程序运行状态有实时和全面的监控。同时,可运维性关乎成本、效率和稳定性,应贯穿于软件设计的始终。扩展性是好...

Python 打开文件——如何逐行读取文本文件

首先,通过Python的open()函数来打开文件。基本语法如下,无论是当前目录还是其他位置的文件,都需要提供文件名或完整的路径。file = open('file_name.txt', 'r')默认情况下,open()函数以读取模式'r'打开文件。如果你想写入或追加,可以使用'mode'参数,如'w'或'a'。通过readable()方法检查文件的...

python特点和优点

语法优美:Python语言力求代码简洁、优美。在Python语言中,采用缩进来标识代码块,通过减少无用的大括号,去除语句末尾的分号等视觉杂讯,使得代码的可读性显著提高。阅读一段良好的Python程序就感觉像是在读英语一样,它使你能够专注于解决问题,而不用太纠结编程语言本身的语法。丰富强大的库:Python语言...

php python 哪个好

2. 代码可读性和简洁性:Python的语法简洁易懂,代码的可读性强,使得开发者可以更加专注于解决问题而不是纠结于繁琐的语法细节。3. 科学计算和数据分析:Python在数据科学和机器学习领域具有显著优势,可以利用NumPy、Pandas、Matplotlib等库进行高效的数据处理和可视化。综上所述,PHP在Web开发方面表现出色...

python的特点

python的特点有简单易学、高级语言、解释型语言、可移植性、面向对象、强大的功能等。1、简单易学 Python是代表简单主义思想的编程语言,读的是好的Python程序,就像读英语一样,Python最大的优势是伪代码的本质,开发时主要以解决问题为主,而不是理解语言本身。2、高级语言 Python是一种高级语言,因此在...

Python好学吗?有用吗?

1、Python语法简洁明了,代码可读性高,容易入门。2、Python的哲学是“做一件事情应该只有一种最好的方法”,对于初学者规范自己的学习有很大的帮助,同时也帮助初学者能够读懂其他人的代码。3、有助于帮助小白养成良好的习惯。Python对于代码的要求严谨,特别是缩进,对于初学者养成良好的代码习惯很有帮助...

Python的stream流处理

为了解决这个问题,一些开发者引入了第三方库SuperStream,它为Python提供了类似于Java Stream的高级API,使得数据处理更加直观和高效。SuperStream的特点在于提供了丰富的过滤、排序、映射等方法,能够以链式调用的方式对数据进行处理,简化了代码结构,提高了代码的可读性和可维护性。假设我们有一个数据集,...

数据分析师在使用Python时常犯的15个错误

列表推导表达式可使代码更简洁、易读且执行效率高。在需要处理多个文件格式时,列表推导式尤其有用。错误9:pandas代码可读性差 通过分解方法链调用,提高代码可读性。使用括号分隔每个部分,使代码结构清晰。错误10:排斥使用Python自带的日期工具 尽管Python日期模块语法可能不直观,但它提供了一种统一的日期...

python处理文本文件 python文本解析 python写入文本 python文本分析和提取 pythonpdf python3 python 类 python编程 lambda python
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求游戏《寂静岭》中好听的游戏配乐,最好是纯音乐 A8 6500 最高支持什么显卡 加条内存组成双通道 对游戏有多大提升... ...追了四个多月了、她也喜欢我。我们俩个在一起也上了床…但是我是... 和喜欢7年的女孩表白后女生说给她点时间,但是又没说什么时间回复我。她... 说一个人很有气质`是什么样的呢` 邢台周边地区的苹果是什么价格 太行百果园地址在哪里? ...时最后香的形状是两边低中间高,这代表什么意思呀?麻烦知..._百度知... 染色体的组成为( )A.DNA和蛋白质B.蛋白质和糖类C.基因和蛋白质D.基 ... 监控器被接入后黑屏的原因 硫磺细菌在污水处理中的作用 细菌和真菌的生活是靠什么来维持的 s的燃烧热是多少 s燃烧后是什么状态 进行S在氧气中燃烧的实验时,燃烧匙中S的状态是?and why? S燃烧产生什么颜色的火焰 血液透析后,皮肤为什么会痒? 我是透析病人身上起小皮怎么办? 透析病人脚底脱皮,一层一层的,是怎么回 我爷爷血液透析后出现皮肤瘙痒,全身长疙瘩,脱皮,是什么原因 腹膜透析一年最近身上长了很多红点还脱皮是什么情况? 透析病人透析后身上脱皮,而且色素沉淀严重是什么原因? 尿毒症透洗后全身出现脱皮怎么办 请问大专生能不能报考华中科技大学的研究生呢? 如何看待人教版数学教材插图? 钦差大臣与狂人日记对比 求《victory》mp3格式音乐 发到网盘里!急! 华硕主板,一个固态硬盘,一个机械硬盘,重装系统后,很正常,再次重启显示英文字母如图 华硕主板用系统盘做系统出现一堆字母 华硕主板用系统盘做系统出现一堆字母。谁能解决啊 华硕主板用系统盘做系统出现一堆字母。怎么弄 老王家王氏冷敷贴效果怎么样?真能解决疼痛吗?怎么代理 老王家医用冷敷贴真的有中药成分吗? 老王家医用冷敷贴,贴后感觉憔气是怎么回事? 家里孩子用q币充王者荣耀的点券,应该怎么才能退回来? 现在投资BIZ域名好吗 .BIZ域名怎么样,有没有收藏价值啊 biz域名废了 biz域名作为公司域名,怎么样? 我最近看好一个域名,四个字母,拼音,有一部比较火的电视剧与它重名,biz后缀,问问专家,值不值得出手啊 biz域名和cc域名有前途没? python 改写SHELL 文本处理难题。 求效率高可读性好的代码,只能用python解决 拱辰享洗面奶防伪码说是正品里面就一定是真的吗 什么是凯恩斯短期消费函数?凯恩斯短期消费函数有何特点? 凯恩斯消费函数理论的介绍 鞋袜除臭剂真的有用么?选哪个牌子比较合适? 关于typemoon 10周年 求一张TYPE-MOON十周年的高清大图~ 这下图片都是哪个动漫里面的,,,跪求,, 图片里的4个人物叫什么出自哪里? type moon十周年纪念人物