您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

那些被忽视的Python核心功能...

时间:2023-08-05 19:23:10  来源:51CTO  作者:

作者 | Erik van de Ven

编译 | 王瑞平

最实用、最简单、最优美...近些年,大家学习Python/ target=_blank class=infotextkey>Python的热潮从未消退;无论是数据分析还是科学计算都少不了Python的身影。

Python也没有让人失望,JAVA用100行代码写出的程序,用Python十行就能搞定!

当你要说Hello World时,C语言、Java、Python分别是这样的:

图片图片

一目了然,Python只需一行!

虽然Python非常容易学习,但是许多实践者只触及到它的表面,而忽视了深入研究这门语言更高级、更强大的方面,而正是这些被忽视的方面使它如此独特和强大。

                                                                  ——节选自《Fluent Python》

如果你的目标是成为一名经验丰富的Python程序员,你一定想了解的更多。因此,让我们共同了解下你没听过的Python核心功能,先从最简单的排列与组合开始...

一、功能一:排列与组合

你可以组合不同的for循环,输出排列、组合和笛卡尔积等。

1.排列

举个例子:当你在排列函数中输入{[1,2,3],2}时,会输出如下结果:

图片图片

2.组合

当你在组合函数中输入(‘ABC’,2)时,输出的排列如下:

图片图片

3.笛卡尔积

笛卡尔积是数学中的一种运算,用于求两个集合中所有可能的有序对。

当我们用笛卡尔积计算Python时,结果是这样的:

图片图片

二、功能二:可变的参数默认值

现在,开始增加难度...

当你每次调用fib_memo函数却不为memo参数赋值时,它将自动使用定义该函数时的原始值,公式和代码如下:

图片图片

由于在Python中,默认参数是可变的,你也可以像在“for循环”中一样在单个脚本中多次执行函数,每次执行都能自动增加要计算的斐波那契数,而不会超过“最大递归深度”限制,因为memo可持续扩展。

*重要提示:

请记住,尽管可变的默认参数(如上所述)可以减少代码,但它可能产生难以解决的bug。有些人将其判定为“陷阱”,而不是功能。因此,你仍需要坚持Python中所透露出的禅意:显式优于隐式。

就像Hacker news中指出的那样:if n not in memo比if not n in memo更容易读取,但是二者输出结果相同。

三、功能三:海象运算符

下面,再来讲讲比较有趣的“海象运算符”...

“海象运算符”是在Python 3.8版本中引入的赋值表达式运算符,用于在表达式中进行赋值操作,其符号为“:=”。这个符号有点像海象的眼睛和獠牙(因此被称为「海象运算符」)。

它可以被翻译成英文“whale calculus”,是一种基于单词语法规则的特殊运算符,用于定义表达式和一系列操作步骤的语言建模方式。

图片图片

显然,用Python,赋值和检查返回值是否包含真值变得更容易了:

图片图片

四、功能四:单星号(*)和双星号(**)

使用(*)可以在将参数或关键字参数传递给函数之前解压缩,让我们在如下代码中使用:

图片图片

当调用sum_numbers函数而不解包my_numbers时,会引发"TypeError",因为该函数需要输入两个单独的参数才能输出结果。

但是,通过使用(*),我们可以解压缩my_numbers函数中的值,并将它们作为单独的参数进行传递,从而产生正确的输出。

这种解包技术不仅适用于元组和列表,也适用于字典。

当关键字作为参数时,我们可以使用双星号(**),以如下代码为例:

图片图片

除解压缩序列以将其作为参数传递给函数外,你还可以使用它来创建新序列,例如:

图片图片

在此过程中,原始数字列表不受影响,并且你还将拥有一个new_list_numbers 变量,它包括相同列表的副本。

图片图片

五、 功能五:any and any

any和all都是python中的内置函数,它们对可迭代对象(如,列表、元组或集合)进行操作,并根据可迭代对象中的元素以Boolean运算的形式返回,语句如下:

图片图片

你可以将any和all函数与列表推导式结合使用,列表推导式返回一个可迭代对象并将其作为参数传递给all函数:

图片图片

或任意函数:

图片图片

下表列出可迭代对象中用any和all函数赋值的输出差异:

图片图片

六、功能六:交换变量

用Python,你可以将参数打包((=)号右边)和解包((=)号左边)结合起来,并利用此功能交换变量:

图片图片

七、功能七:str vs repr

在字符串处理方面,Python中的str()和repr()有所不同。str()将值转化为前端样式文本,repr()是后端底层代码。

·str()函数:将值转化为适于人阅读的形式,面向用户,返回值具有可读性、可理解性较强。

·repr()函数:将对象转化为供解释器读取的形式,面向开发人员,返回值表示python解释器内部的含义。

下图是一个很好的例子:

图片图片

如你所见,repr()简单将时间排列为字符串后输出;如果你想确定当前变量是否包含字符串或时间对象,无法借此识别。

str()提供了变量持有的实际对象信息,这些信息在调试过程中非常有价值。

八、功能八:扩展的迭代解包

迭代解包可应用到任何可迭代对象上,唯一的硬性要求是:被迭代对象中的元素数量必须与接受这些元素的元组空档数一致,也可以使用星号 * 表示忽略多余的元素。

这种方式的优点在于:更好赋值、更好获取迭代对象中的某个值(一般的迭代对象分为:元组,列表,字典,字符串等)。

如果你想获得序列的第一个和最后一个值,需要输入如下代码:

图片图片

更换输入和输出语句后同样可行...

图片图片

其它组合也同样适用...

九、功能九:多个上下文管理器

通常,我们习惯一次性使用一个上下文管理器,比如,当你打开一个程序文件,需要输入如下代码:

图片图片

但是,在Python中,用一行语句就能打开多个文件。如果你想将行写入其它文件,用Python语句就很容易实现,例如:

图片图片

十、功能十:调试程序

为达到调试目的,我们可以在文件中输出大量变量或可以简单使用Python调试器(pdb),它可以帮我们设置断点:

图片图片

程序将在断点处停止,你可以在该断点处获取任何变量以检查其值或该特定断点是否存在。当程序遇到断点时,可使用如下几个命令:

  • n或next:执行下一行。
  • s或step:进入功能调用。
  • c或continue:继续执行,直到下一个断点。
  • l或list:显示当前代码的上下文。
  • p <expression>或pp <expression>:打印表达式的值。
  • b <line>或break <line>:在指定的行上设置新断点。
  • h或help:在使用pdb时提供帮助。
  • q或quit:退出调试器并终止程序。

十一、功能十一:collections模块中的Counter

collections模块中的Counter类提供了一种便捷的方法,可以对可迭代对象中的元素进行计数:

图片图片

十二、功能十二:使用下划线的两种情况

在Python中有两种需要用到下划线:多位数分隔或排除不需要的值。

1.排除不需要的值

下划线 _ 可被用作排除不需要的值:

图片图片

2.多位数分隔符

在处理多位数时,可以使用下划线 (_) 作为视觉分隔符,能增强可读性。这个功能是在Python3.6中被引入的。

图片图片

十三、用户:简单、实用但范围有限

图片图片

在reddit上,我们找到了关于用户关于本篇文章的181条评论:

图片图片

正如文章开头所述,他们认为:“用Python调试出的程序确实简单、实用。”

话虽如此,有些用户也提出了质疑:“Pythonic的过滤器和映射方式更具可读性,但是范围有限。”

但这一点也不影响用户对Python的喜爱!

十四、写在最后:Python是你成为全栈工程师的必备武器

前端开发、后端开发、项目测试...如果你想成为一名合格的全栈工程师,Python是你不可或缺的“武器”。

在开发领域如此内卷的情况下,要完成一个现代化项目,需要一个人来掌控全局,他不需要是各种技术的资深专家,但需要熟悉各种技术。对于一个团队特别是互联网企业来说,全局性思维的人真的不可多得。



Tags:Python   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Python 可视化:Plotly 库使用基础
当使用 Plotly 进行数据可视化时,我们可以通过以下示例展示多种绘图方法,每个示例都会有详细的注释和说明。1.创建折线图import plotly.graph_objects as go# 示例1: 创建简单...【详细内容】
2024-04-01  Search: Python  点击:(8)  评论:(0)  加入收藏
Python 办公神器:教你使用 Python 批量制作 PPT
介绍本文将介绍如何使用openpyxl和pptx库来批量制作PPT奖状。本文假设你已经安装了python和这两个库。本文的场景是:一名基层人员,要给一次比赛活动获奖的500名选手制作奖状,并...【详细内容】
2024-03-26  Search: Python  点击:(16)  评论:(0)  加入收藏
Python实现工厂模式、抽象工厂,单例模式
工厂模式是一种常见的设计模式,它可以帮助我们创建对象的过程更加灵活和可扩展。在Python中,我们可以使用函数和类来实现工厂模式。一、Python中实现工厂模式工厂模式是一种常...【详细内容】
2024-03-07  Search: Python  点击:(31)  评论:(0)  加入收藏
不可不学的Python技巧:字典推导式使用全攻略
Python的字典推导式是一种优雅而强大的工具,用于创建字典(dict)。这种方法不仅代码更加简洁,而且执行效率高。无论你是Python新手还是有经验的开发者,掌握字典推导式都将是你技能...【详细内容】
2024-02-22  Search: Python  点击:(32)  评论:(0)  加入收藏
如何进行Python代码的代码重构和优化?
Python是一种高级编程语言,它具有简洁、易于理解和易于维护的特点。然而,代码重构和优化对于保持代码质量和性能至关重要。什么是代码重构?代码重构是指在不改变代码外部行为的...【详细内容】
2024-02-22  Search: Python  点击:(33)  评论:(0)  加入收藏
Python开发者必备的八个PyCharm插件
在编写代码的过程中,括号几乎无处不在,以至于有时我们会拼命辨别哪个闭合括号与哪个开头的括号相匹配。这款插件能帮助解决这个众所周知的问题。前言在PyCharm中浏览插件列表...【详细内容】
2024-01-26  Search: Python  点击:(85)  评论:(0)  加入收藏
Python的Graphlib库,再也不用手敲图结构了
Python中的graphlib库是一个功能强大且易于使用的工具。graphlib提供了许多功能,可以帮助您创建、操作和分析图形对象。本文将介绍graphlib库的主要用法,并提供一些示例代码和...【详细内容】
2024-01-26  Search: Python  点击:(86)  评论:(0)  加入收藏
大语言模型插件功能在携程的Python实践
作者简介成学,携程高级安全研发工程师,关注Python/Golang后端开发、大语言模型等领域。一、背景2023年初,科技圈最火爆的话题莫过于大语言模型了,它是一种全新的聊天机器人模型,...【详细内容】
2024-01-26  Search: Python  点击:(73)  评论:(0)  加入收藏
如何使用Python、Apache Kafka和云平台构建健壮的实时数据管道
译者 | 李睿审校 | 重楼在当今竞争激烈的市场环境中,为了生存和发展,企业必须能够实时收集、处理和响应数据。无论是检测欺诈、个性化用户体验还是监控系统,现在都需要接近即时...【详细内容】
2024-01-26  Search: Python  点击:(46)  评论:(0)  加入收藏
Python分布式爬虫打造搜索引擎
简单分布式爬虫结构主从模式是指由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个...【详细内容】
2024-01-25  Search: Python  点击:(58)  评论:(0)  加入收藏
▌简易百科推荐
Python 可视化:Plotly 库使用基础
当使用 Plotly 进行数据可视化时,我们可以通过以下示例展示多种绘图方法,每个示例都会有详细的注释和说明。1.创建折线图import plotly.graph_objects as go# 示例1: 创建简单...【详细内容】
2024-04-01  Python技术    Tags:Python   点击:(8)  评论:(0)  加入收藏
Python 办公神器:教你使用 Python 批量制作 PPT
介绍本文将介绍如何使用openpyxl和pptx库来批量制作PPT奖状。本文假设你已经安装了python和这两个库。本文的场景是:一名基层人员,要给一次比赛活动获奖的500名选手制作奖状,并...【详细内容】
2024-03-26  Python技术  微信公众号  Tags:Python   点击:(16)  评论:(0)  加入收藏
Python实现工厂模式、抽象工厂,单例模式
工厂模式是一种常见的设计模式,它可以帮助我们创建对象的过程更加灵活和可扩展。在Python中,我们可以使用函数和类来实现工厂模式。一、Python中实现工厂模式工厂模式是一种常...【详细内容】
2024-03-07  Python都知道  微信公众号  Tags:Python   点击:(31)  评论:(0)  加入收藏
不可不学的Python技巧:字典推导式使用全攻略
Python的字典推导式是一种优雅而强大的工具,用于创建字典(dict)。这种方法不仅代码更加简洁,而且执行效率高。无论你是Python新手还是有经验的开发者,掌握字典推导式都将是你技能...【详细内容】
2024-02-22  子午Python  微信公众号  Tags:Python技巧   点击:(32)  评论:(0)  加入收藏
如何进行Python代码的代码重构和优化?
Python是一种高级编程语言,它具有简洁、易于理解和易于维护的特点。然而,代码重构和优化对于保持代码质量和性能至关重要。什么是代码重构?代码重构是指在不改变代码外部行为的...【详细内容】
2024-02-22  编程技术汇    Tags:Python代码   点击:(33)  评论:(0)  加入收藏
Python开发者必备的八个PyCharm插件
在编写代码的过程中,括号几乎无处不在,以至于有时我们会拼命辨别哪个闭合括号与哪个开头的括号相匹配。这款插件能帮助解决这个众所周知的问题。前言在PyCharm中浏览插件列表...【详细内容】
2024-01-26  Python学研大本营  微信公众号  Tags:PyCharm插件   点击:(85)  评论:(0)  加入收藏
Python的Graphlib库,再也不用手敲图结构了
Python中的graphlib库是一个功能强大且易于使用的工具。graphlib提供了许多功能,可以帮助您创建、操作和分析图形对象。本文将介绍graphlib库的主要用法,并提供一些示例代码和...【详细内容】
2024-01-26  科学随想录  微信公众号  Tags:Graphlib库   点击:(86)  评论:(0)  加入收藏
Python分布式爬虫打造搜索引擎
简单分布式爬虫结构主从模式是指由一台主机作为控制节点负责所有运行网络爬虫的主机进行管理,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个...【详细内容】
2024-01-25  大雷家吃饭    Tags:Python   点击:(58)  评论:(0)  加入收藏
使用Python进行数据分析,需要哪些步骤?
Python是一门动态的、面向对象的脚本语言,同时也是一门简约,通俗易懂的编程语言。Python入门简单,代码可读性强,一段好的Python代码,阅读起来像是在读一篇外语文章。Python这种特...【详细内容】
2024-01-15  程序员不二    Tags:Python   点击:(162)  评论:(0)  加入收藏
Python语言的特点及应用场景, 同其它语言对比优势
Python语言作为一种高级编程语言,具有许多独特的特点和优势,这使得它在众多编程语言中脱颖而出。在本文中,我们将探讨Python语言的特点、应用场景以及与其他语言的对比优势。一...【详细内容】
2024-01-09    今日头条  Tags:Python语言   点击:(253)  评论:(0)  加入收藏
站内最新
站内热门
站内头条