如何写出Pythonic的代码?

f-string、三元操作、各种解析式、生成器装饰器的熟练运用,“内库”引用和函数封装再加持PEP8,撰写的脚本不pythonic都难。😎


(笔记模板由python脚本于2024年10月07日 18:03:27创建,本篇笔记适合特别喜欢python的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


f-string、三元操作、解析式、生成器
如何写出Pythonic的代码?
(“内库”引用和函数封装及装饰器辅助再加持PEP8)


本文质量分:

96 96 96

本文地址: https://blog.csdn.net/m0_57158496/article/details/142743995

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 如何写出Pythonic的代码?
    • 1、Pythonic定义
    • 2、PEP 8
    • 3、我的Python践行
    • 4、我对“长期”的解读
    • 5、总结


◆ 如何写出Pythonic的代码?


   f f f- s t r i n g string string、三元操作、各种解析式、生成器装饰器的熟练运用,“内库”引用和函数封装再加持 P E P 8 PEP8 PEP8,撰写的脚本不pythonic都难。😎


1、Pythonic定义


  Pythonic是一个经常用于描述 Python 编程语言的特定风格的术语。


以下是对 "Pythonic" 的一些释义:

  1. 符合 Python 习惯用法:代码应该遵循 Python 社区普遍接受的约定和最佳实践。这意味着代码应该看起来像是经验丰富的 Python 程序员所写。

  2. 简洁和可读性强:Pythonic 的代码通常简洁明了,避免了不必要的复杂性。它易于阅读和理解,即使是对 Python 不是特别熟悉的开发者。

  3. 利用 Python 特性:Pythonic 的代码会充分利用 Python 的语言特性,如列表推导式、生成器、装饰器、上下文管理器等,来简化代码和提高效率。

  4. 直观和自然:Pythonic 的代码往往给人一种直观的感觉,好像这就是解决问题最自然的方式。

  5. 遵循 PEP 8:PEP 8 是 Python 官方推荐的代码风格指南。遵循 PEP 8 的代码通常被认为是 Pythonic 的。


以下是一些 Pythonic 代码的例子:

  • 使用列表推导式而不是循环来创建列表:

    
    # Pythonic
    squares = [x**2 for x in range(10)]# Non-pythonic
    squares = []
    for x in range(10):squares.append(x**2)

  • 使用 with 语句来自动管理资源:

    
    # Pythonic
    with open('file.txt', 'r') as f:content = f.read()# Non-pythonic
    f = open('file.txt', 'r')
    try:content = f.read()
    finally:f.close()

  • 使用内置函数和库函数,而不是手动实现常见功能:

    
    # Pythonic
    words = text.split()# Non-pythonic
    words = []
    index = 0
    while index < len(text):if text[index] == ' ':index += 1continueword_start = indexwhile index < len(text) and text[index] != ' ':index += 1words.append(text[word_start:index])

总的来说,“Pythonic” 是一个高度概括的术语,它涵盖了编写高效、清晰、符合 Python 风格的代码的理念。



回页目录


2、PEP 8


  PEP 8 是 Python 的官方风格指南,全称是 “Python Enhancement Proposal 8”,即 Python 增强提案 8。它为 Python 代码提供了一套编码规范,旨在提高代码的可读性和一致性。PEP 8 由 Guido van Rossum(Python 之父)和其他贡献者共同编写,并在 Python 社区内广泛接受和使用。


以下是 PEP 8 中的一些主要内容和建议:

  1. 代码布局

    • 缩进:使用 4 个空格来缩进代码,而不是制表符。
    • 行长度:每行不应超过 79 个字符。
    • 换行:在操作符之后换行,而不是之前。
    • 空行:使用空行来分隔函数和类定义,以及相关代码块。
  2. 字符串引用

    • 单引号和双引号:在大多数情况下可以互换使用,但应保持一致性。
    • 三引号:用于多行字符串。
  3. 表达式和语句中的空格

    • 在操作符周围添加空格,例如 a = 1 + 1
    • 在逗号、冒号和分号之后添加空格。
    • 避免在括号内添加不必要的空格。
  4. 命名约定

    • 类名:使用 CapWords(首字母大写)的命名方式。
    • 函数名:使用小写字母和下划线。
    • 变量名:同样使用小写字母和下划线。
    • 常量:使用全大写字母,并用下划线分隔单词。
  5. 编程建议

    • 避免使用不必要的复杂性。
    • 在适当的地方使用函数而不是复杂的表达式。
    • 避免使用全局变量。
    • 尽可能使用内置的数据类型和方法。
  6. 注释和文档字符串

    • 使用注释来解释代码中不那么明显的部分。
    • 使用文档字符串(docstrings)来描述模块、函数、类和方法。

  遵循 PEP 8 可以帮助开发者编写出风格一致的代码,这对于代码的维护和团队协作非常重要。虽然 PEP 8 提供了广泛的指导,但它也强调了灵活性,指出在某些情况下可以适当违反这些规则,特别是当遵循规则会导致代码可读性降低时。


(PEP 8 的完整内容可以在 Python 官方网站上的 PEP 8 页面找到)



回页目录


3、我的Python践行


  刚才学习了“PEP 8”,发现至少有90%已经是我的代码书写习惯。我应该可以自豪的说“我的python脚本比较Pythonic!😎”


  • 截屏图片一
    在这里插入图片描述

  • 截屏图片二
    在这里插入图片描述


回页目录


4、我对“长期”的解读


  确实,我对“长期写”有些感触,近3.5年来,我从初探起就一直认同齐伟老师的学习“代码要手打”的理念且一直坚持,从学堂拼错关键字到现在,5、6百行的代码,保守的说“90%的代码都可以”随心而出了,这就是得益于“长期”。💪💪

  近一年来,有您的帮衬,学习效率不只是倍增。😎😎🙏🙏


  • 截屏图片
    在这里插入图片描述



回页目录


5、总结


总结: 学习是坚持和不断总结践行的过程。在践行中深入内化知识点,在内化后更好的践行。



回页首


上一篇:  Excel中的“=”新妙用,在较高版本中大显身手(小家伙“=”抢功indirect函数,初生大力骑士已从神坛下起身)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

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

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

相关文章

手机号归属地查询-手机号归属地-手机号归属地-运营商归属地查询-手机号码归属地查询手机号归属地-运营商归属地

手机号归属地查询API接口是一种网络服务接口&#xff0c;允许开发者通过编程方式查询手机号码的注册地信息。关于快证签API接口提供的手机号归属地查询服务&#xff0c;以下是一些关键信息&#xff1a; 一、快证签API接口简介 快证签API接口可能是一个提供多种验证和查询服务…

Burp Suite为何能抓到HTTPS的明文流量,Wireshark可以吗,公司电脑的加密流量也是被监控了吗?

在前期博文《万字图文详解HTTPS协议通信过程&#xff0c;结合抓包实战解析带你一次看透HTTPS&#xff01;》中&#xff0c;我们知悉HTTPS通信内容是用会话密钥加密的&#xff0c;但不少细心的读者存在疑问&#xff1a;为何对于使用HTTPS协议的站点&#xff0c;在Burp Suite中拦…

Excel-查找和引用数据-VLOOKUP 和 HLOOKUP 函数

在 Excel 中&#xff0c;VLOOKUP 和 HLOOKUP 是用于查找和引用数据的函数。下面是它们的基本用法&#xff1a; VLOOKUP 用途&#xff1a;在表格的第一列中查找某个值&#xff0c;并返回该值所在行的指定列中的数据。 语法&#xff1a; VLOOKUP(lookup_value, table_array, …

helm 测试卸载或删除(redis)

作者&#xff1a;程序那点事儿 日期&#xff1a;2024/02/07 18:30 查看redis 集群实例 kubectl get all -n redis 卸载集群实例 helm uninstall redis -n redis 删除pvc kubectl get pvc -n redis kubectl delete pvc redis-data-redis-master-0 redis-data-redis-replicas…

【Kubernetes】常见面试题汇总(五十九)

目录 129.问题&#xff1a;pod 使用 PV 后&#xff0c;无法访问其内容&#xff1f; 130.查看节点状态失败&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xf…

Spring Cloud Netflix Ribbon 负载均衡详解和案例示范

1. 引言 在传统的集中式架构中&#xff0c;负载均衡器一般是放置在服务器端的&#xff0c;例如 Nginx等。随着微服务架构的兴起&#xff0c;服务实例的数量和部署地点变得更加动态和分布式&#xff0c;这使得在客户端进行负载均衡成为了一种可行且更灵活的方案。Netflix Ribbo…

Thinkphp/Laravel基于vue的金融理财产品销售系统设计与实现Vscode毕业设计成品源码.

目录 技术栈和环境说明具体实现截图设计思路关键技术课题的重点和难点&#xff1a;框架介绍数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 技术栈和环境说明 采用PHP语言开发&#xff0c;开发环境为phpstudy 开发工具notepad并使用MYSQL数据库…

攻防世界 告诉你个秘密

前言&#xff1a;做题笔记。 下载 挺懵是不是。 仔细看&#xff0c;数字组合居多 字母不超过E 大概可以猜测这是16进制。 一开始以为是16进制转2进制的莫斯&#xff0c;但&#xff0c;&#xff0c;并不是。 试着将16进制转成ASCII字符。 别的不说&#xff0c;base64 老客户了…

Centos7 NTP客户端

目录 1. NTP客户端1.1 安装1.2 启动1.3 同步状态异常1.4 更改/etc/chrony.conf配置文件1.5 同步状态正常 1. NTP客户端 1.1 安装 如果chrony没有安装&#xff0c;可以使用以下命令安装 sudo yum install chrony1.2 启动 启动并设置开机自启 sudo systemctl start chronyd …

如何使用 Python 的 logging 模块记录日志

如何使用 Python 的 logging 模块记录日志 在编写 Python 程序时&#xff0c;日志记录是一个非常重要的部分。日志不仅帮助你在开发过程中调试代码&#xff0c;还可以在程序正式运行时提供诊断信息&#xff0c;帮助定位问题。如果你正在构建一个复杂的系统或者开发大型应用程序…

SLMA-雷达点如何转变为range image图像以及range image图像和球坐标系的关系;IROS 2020 REMOVERT动态SLAM论文解析

文章目录 雷达点如何转变到range image图像球体坐标关联 雷达点如何转变到range image图像 使用激光雷达采样得到的点一般包含x y z 坐标以及intensity、time、ring属性。参考如下&#xff1a; namespace velodyne_ros {struct EIGEN_ALIGN16 Point {PCL_ADD_POINT4D;float i…

多维放缩(MDS)与主成分分析(PCA)

文章目录 摘要Abstract1. 多维缩放&#xff08;MDS&#xff09;1.1 MDS降维条件1.2 MDS降维步骤 2. 主成分分析(PCA)2.1 最近重构性2.2 最大可分性2.3 PCA维度分析2.4 PCA实战2.5 PCA小结 3. 总结 摘要 多维缩放&#xff08;MDS&#xff09;是一种保持样本间距离关系的降维技术…

点餐小程序实战教程16餐厅管理

目录 1 创建数据源2 创建后台功能3 集成腾讯地图4 配置表单信息总结 在我们点餐小程序首页里&#xff0c;一开始会根据用户的位置信息去推荐餐厅&#xff0c;这就要求事先维护好餐厅的信息&#xff0c;本篇我们介绍一下餐厅信息的管理功能。 1 创建数据源 打开我们的数据模型&…

操作系统 | 学习笔记 | 王道 | 3.2 虚拟内存管理

3.2 虚拟内存管理 3.2.1 虚拟内存的基本概念 传统存储管理方式的特征 传统存储管理方式 连续分配 单一连续分配固定分区分配动态分区分配 非连续分配 基本分页存储管理基本分段存储管理基本段页式存储管理 特征&#xff1a; 一次性&#xff1a; 作业必须一次性全部装入内存后…

计算机网络:物理层 —— 数据的传输方式

文章目录 传输方式串行传输串行传输方式特点应用 并行传输特点应用 网卡的串/并转换同步传输同步时钟频率的误差问题特点应用 异步传输特点应用 单向通信特点应用 双向交替通信特点应用 双向同时通信特点应用 传输方式 串行传输 串行传输是一种数据传输方式&#xff0c;指的是…

基于SpringBoot+Uniapp的家庭记账本微信小程序系统设计与实现

项目运行截图 展示效果图 展示效果图 展示效果图 展示效果图 展示效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更…

博诚星光协助企业挑战中国舆论新环境--进入“春秋战国”时代

在互联网时代,中国的舆论环境如同“春秋战国”,信息产生呈现出爆炸式增长。根据统计,国内自媒体的数量已突破2000万,每天生成的信息量高达10亿条。这种庞大的信息洪流,为企业和品牌带来了前所未有的舆论风险。 随着新媒体平台的不断涌现,舆论环境愈发复杂,传统营销方式已难以适…

1007C步行(树上贡献统计)

http://cplusoj.com/d/senior/p/SS241007C 首先可以发现每条边的贡献为 2 min ⁡ ( w x , S − w x ) 2\min(w_x,S-w_x) 2min(wx​,S−wx​)&#xff0c; x x x 为下端的点 考虑现在断一条边&#xff0c;连一条边。我们先不考虑断边&#xff0c;只连边。那么这是一个基环树&…

C语言 assert 函数 - C语言零基础入门教程

目录 一.assert 函数简介二.assert 函数使用三.assert 函数用法总结与注意事项四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.assert 函数简介 对于断言&#xff0c;相信大家都不陌生&#xff0c;大多数编程语言也都有断言这一特性。简单地讲…

【查找算法概念】与【线性表的相关查找算法】

1.知识回顾 2.查找算法相关问题汇总 2.1在哪里查找 查找表 2.2通过什么进行查找 关键字的对应 主关键字&#xff1a;比如我们可以通过一个学号来唯一确定一名学生 这里的学号就是一种主关键字。 次关键字&#xff1a;而通过一个名字李华&#xff0c;我们可能会确定不止一名…