我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中五大代码异味是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中五大代码异味是什么

这篇文章主要介绍“Python中五大代码异味是什么”,在日常操作中,相信很多人在Python中五大代码异味是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中五大代码异味是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

可变默认参数

在Python中,使用默认参数是一个很常见的操作,你可以设置一个预定值,并在调用时选择更改。这在设置文字、数字或布尔值时很有用,因为有助于避免出现较长的有冗余值的参数列表。

但是将可变的值设置为默认参数可能是危险的,并且会导致bug。来看以下示例:

def addElements(a=[]):     a.append(5)     return aaddElements() # [5] addElements() # [5, 5]

相同的函数在每次调用时给出不同的结果。Python中可变默认值的问题是它们只在定义函数时计算一次。每次调用函数时,使用变异值,可能会导致意外的问题,因为跟踪函数调用真的很麻烦。

因此,使用None作为默认值,并在函数中分配可变变量是更安全的,因为你不会以可维护性问题结束,只有在确定需要时才使用可变的默认参数。

选择 `range` 而不是`enumerate`

Python的for循环不是最常用的代码编写方式,但有时也会需要到。现在,Python中的for  循环的运行与其他语言不同,你可能会本能地以非惯用的方式编写传统风格的range(len()),如下所示:

names =["a", "b", "c"]for i in range(len(names)):     print(i, names[i])

重复基于C-style索引的循环是相当常见的,但这是一种不当做法。其迫使你通过显式索引变量访问元素,所以它不仅Python特性不明显,而且还存在可读性问题。

使用enumerator能提供一个元组的优势,该元组负责同时跟踪索引值和元素。除了更简便,优化程度还更高,它还提供了可选的第二个参数来设置数值。

for i, name in enumerate(names):    print(i, name)

忽略内置函数和过度循环

循环不是不能用,但在其中应用转换操作时,它可能会导致冗长的条件代码。在这种情况下,不要忽略已经可以使用的内置函数,如map()filter()和reduce(),这是非常重要的。更重要的是,Python提供了列表解析,这显然是最具Python特性的替换循环方法。

嵌套for循环是代码异味的另一个典型例子。Python程序员在进行模式匹配或一起运行多个迭代时很容易中枪。下列代码一旦再加几行就会看起来不美观:

for x in listA:     for y in listB:         r.append((x, y))

使用itertools不仅可以提高性能,还更简洁明了。看看上面的代码在itertools.product()中有多整洁:

for x, y in itertools.product(listA,listB):         r.append((x, y))

通过使用上面的product,也可以很容易地将其传递到其他高阶函数中。同时在多个列表上同时迭代时,使用zip()函数也不错(如需索引,还可以使用enumerator)。

滥用列表解析

列表解析能灵活创建列表,功能强大,但很容易被误用或滥用,来看一些案例。

(1) 在不需要时过度进行列表解析

通常,我们开始沉迷于使用列表解析是为了尝试花哨的东西,而不是真需要它。比如在简单的情况下可以使用列表构造函数:

names =["A","B","C"][x.lower() for x in names]#use this list(map(str.lower, names))

(2) 在实际不存储时使用列表解析

列表解析有助于轻松定义和创建列表,但它们始终存储于内存中。如果不使用系统进程,将有可能损害大数量的数据。因此,使用生成器表达式是更好的选择,因为它按需一次加载一个值。

嵌套分析也需要关注,因为这可能导致可读性问题,知道什么时候使用它,什么时候回退到for循环上是很重要的。

喜欢布尔标志参数和全局变量

布尔是最容易学习的数据类型。在Python中,提供命名参数使工作轻松得多。但是,它们很容易产生嵌套if  else块的复杂代码并导致可读性问题。多个布尔存在隐藏的依赖关系,会产生一些问题。因而最好使用枚举,而不是多布尔逻辑。Enum数据类型是可扩展的,可以确保更好的代码结构。

全局变量在所有语言中都是麻烦的,Python也是如此。虽然有时我们确实需要使用它们,但将其误用作传递或访问数据的快捷方式可能很危险,因为它可变。

跟踪它的状态会很棘手,因为你永远不知道谁可能会改变它。如果开始到处使用全局变量,命名冲突则会导致命名空间受到不好的影响。

到此,关于“Python中五大代码异味是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中五大代码异味是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python五大应用领域是什么

这篇文章主要介绍“Python五大应用领域是什么”,在日常操作中,相信很多人在Python五大应用领域是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python五大应用领域是什么”的疑惑有所帮助!接下来
2023-06-16

数据时代Excel的五大瓶颈是什么

这篇文章给大家介绍数据时代Excel的五大瓶颈是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。数据时代,企业的科学决策,离不开对数据的有效分析。Excel作为全球拥有最大用户群体的办公软件,一直以来都受到个人及企业
2023-06-02

在Python代码中初学者常用代码是什么

今天就跟大家聊聊有关在Python代码中初学者常用代码是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。主要记录初学者常用的一些代码:1.获取当前时间# -*- coding: g
2023-06-17

Python代码中编译指的是什么

这篇文章将为大家详细讲解有关Python代码中编译指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;
2023-06-14

python中什么是异常链

本篇文章为大家展示了python中什么是异常链,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通
2023-06-14

python中暂停代码的方法是什么

本篇内容主要讲解“python中暂停代码的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中暂停代码的方法是什么”吧!我们知道,在 Python 里面可以使用time.sle
2023-06-16

python中的代码缩进规则是什么

这篇文章主要介绍“python中的代码缩进规则是什么”,在日常操作中,相信很多人在python中的代码缩进规则是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中的代码缩进规则是什么”的疑惑有所
2023-07-02

Python源代码构架的三大主要结构是什么

这篇文章主要介绍“Python源代码构架的三大主要结构是什么”,在日常操作中,相信很多人在Python源代码构架的三大主要结构是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python源代码构架的三大主
2023-06-17

Python执行代码的实际操作的五个步骤分别是什么呢

Python执行代码的实际操作的五个步骤分别是什么呢,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python执行代码要经过如下过程:1. Tokenizer进行词法分析,把源
2023-06-17

java中什么是代码块

java中什么是代码块?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列
2023-06-14

python中什么是异常参数

本篇文章为大家展示了python中什么是异常参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初
2023-06-14

java代码规范七大原则是什么

Java代码规范的七大原则是:SRP(Single Responsibility Principle):单一职责原则,一个类只负责一个功能或职责。OCP(Open-Closed Principle):开闭原则,软件实体(类、模块、函数等)应
2023-10-27

Python中的EAFP和LBYL代码风格是什么

本篇内容介绍了“Python中的EAFP和LBYL代码风格是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. EAFP 风格Pytho
2023-06-15

Python画海龟的代码是什么

Python中使用turtle模块来绘制海龟的代码如下:```pythonimport turtle# 创建一个画布和一个海龟对象canvas = turtle.Screen()t = turtle.Turtle()# 绘制海龟t.shap
2023-08-09

Python中的五个超有用函数是什么

这篇文章主要介绍“Python中的五个超有用函数是什么”,在日常操作中,相信很多人在Python中的五个超有用函数是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的五个超有用函数是什么”的疑
2023-06-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录