人人皆知Python功能,你还不了解嘛?

简介: Python

image.png

发现Python中的新功能是笔者的一大爱好,每当遇到一些其他人没有注意到的某个功能时,我都会兴致勃勃地把它记录下来。
这不,过去几周我又了解到一些有趣的功能,例如StackOverflow上一些我不知道的功能。这些被低估和埋没的实用功能,你真的值得拥有!

divmod

这个函数非常有用,它能对两个数执行模除%运算,然后返回商和余数。例如:

divmod(5, 2)

这只是在找到可以将2拟合为5的次数,我们不需要拆分这个数,就可以得出商为2,1为余数。对于计算返回进程运行所需的时间(以小时、分钟和秒为单位)特别有用,就像这样:

start =datetime.datetime.now() ... # process code goes hereend =datetime.datetime.now()# we get the total runtime in seconds

runtime = (end - start).seconds # wewill assume 30000# how many hours are in these secs, what are the remainingsecs?

hours, remainder = divmod(runtime, 3600)# now how many minutes and seconds arein our remainder?

mins, secs = divmod(remainder,60)print("{:02d}:{:02d}:{:02d}".format(hours, mins, secs))

casefold

这是一个特别有趣的字符串方法,它的功能类似于lower。,但casefold试图更积极地标准化更广泛的字符。在大多数情况下,lower和casefold的行为相同,但有时它们不相同:

"".casefold() # both and σ are the Greek letter sigma[Out]:"σ"

相比之下,使用lower:

"".lower() # however, lower recognizes them as different[Out]:""

在这里,两个sigma已经都是小写。根据使用情况,它可能会按预期运行。但是,如果打算比较两个等效的希腊语单词,一个使用σ,另一个使用。尽管相同,但只有casefold才能让我们准确地比较它们:

"ρμησ" == "ρμη"

"ρμησ".lower() == "ρμη".lower()

"ρμησ".casefold() == "ρμη".casefold()

args, *kwargs

有时你可能会看到函数定义包含这两个参数,例如 def func(x,y, args,* kwargs)。

它们都非常简单,两者都允许我们将多个值传递给一个函数,然后将其打包到一个生成器中。关于是否将列表/生成器传递给标准参数,其结果是这样的:

def func(values):

for x in values:

print(x, end=" ")func([1,2, 3])

使用* args 时,我们应该将每个值作为新参数传递,而不是将它们全部包含在列表中。

def func(*values):

for x in values:

print(x, end=" ")func(1,2, 3)

注意,不需要输入 args,只需输入 values。由于单个星号,它被定义为 args,这和使用的变量名称无关。 args只是根据传递给函数的参数创建一个生成器对象。* kwargs创建字典。

因此,可以这样使用名称、关键字参数:

def func(**values):

for x in values:

print(f"{x}:{values[x]}")func(x=1, y=2, z=3)[Out]: x: 1

y: 2

z: 3

同样,可以随意调用变量,在这种情况下,使用 values。通过使用双引号将其定义为kwargs。

image.png

图源:unsplash
列表理解

理解表达式是必不可少的,这绝对是Python最有用的功能之一。最常见的是列表理解,绝大多数人都看过以下内容:

vals = 1, 2, 3, 4, 5

但不仅可以用方括号,你还能用几乎完全相同的语法定义生成器表达式:

(i**2 for i in vals)

当然,生成器中的每个元素仅在被调用时才输出,我们可以使用list()来做到这一点:

list((i**2 for i in vals))

只需对语法进行一点小的更改,甚至可以使用字典理解来构建字典:

{i: i**2 for i in vals}[Out]:{1: 1,

2: 4,

3: 9,

4: 16,

5: 25}

以上都是非常有趣的功能,特别是divmod和casefold,我最近才体验过,你也一定要去试试呀。

相关文章
|
1月前
|
机器学习/深度学习 数据采集 人工智能
Python系列(1):简洁优雅,功能强大的编程语言
Python系列(1):简洁优雅,功能强大的编程语言
|
1月前
|
数据可视化 数据挖掘 Python
Python数据可视化:探索Matplotlib的强大功能
数据可视化在如今的数据分析和展示中扮演着至关重要的角色。本文将介绍Python中常用的数据可视化库Matplotlib,深入探讨其功能和应用,帮助读者更好地利用Matplotlib进行数据可视化。
|
30天前
|
机器学习/深度学习 数据可视化 数据处理
Python数据可视化:探索Matplotlib库的强大功能
本文将深入探讨Python中用于数据可视化的重要工具之一——Matplotlib库。通过介绍Matplotlib库的基本概念、常用功能和实际应用案例,帮助读者更好地了解如何利用Matplotlib创建各种吸引人的数据图表。
|
1月前
|
数据可视化 搜索推荐 数据挖掘
Python数据可视化——探索Matplotlib库的强大功能
数据可视化在数据分析和展示中扮演着至关重要的角色,而Matplotlib作为Python中最流行的数据可视化库之一,具有丰富的功能和灵活性。本文将深入探讨Matplotlib库的基本用法和高级功能,带您领略数据可视化的魅力。
|
2天前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
7天前
|
计算机视觉 Python
如何利用Python实现简单的图像处理功能
本文介绍了如何使用Python编程语言和相关库实现简单的图像处理功能。通过学习本文,读者将了解如何读取图像文件、调整图像大小、修改图像亮度和对比度、应用滤镜效果以及保存处理后的图像。这些技术将帮助读者快速入门图像处理领域,并为他们进一步探索更高级的图像处理技术打下基础。
|
8天前
|
JavaScript 前端开发 关系型数据库
旅游规划助手:结合Vue的交云性设计和Python的强大后端功能
【4月更文挑战第11天】本文探讨了如何使用Vue.js和Python(Flask或Django)构建旅游规划助手应用,简化旅行规划。首先,确保安装了Python、Node.js、数据库系统和Git。接着,介绍如何用Python搭建后端API,分别展示了Flask和Django的例子。然后,利用Vue.js初始化前端项目,结合Vuex和Vue Router构建用户界面。最后,通过Axios实现前端与后端的数据通信。这样的架构有利于团队协作和代码维护,便于扩展应用功能。
|
1月前
|
程序员 测试技术 Python
Python中的装饰器:提升函数功能的利器
传统的摘要部分通常是对文章整体内容的简要概括,但在这篇文章中,我们将从技术角度出发,介绍Python中装饰器的作用和实际应用。通过对装饰器的解析和示例演示,读者将深入了解如何利用装饰器来提升函数的功能,从而加深对Python编程语言的理解。
|
1月前
|
存储 数据挖掘 数据处理
探索数据科学中的Python神器——Pandas库的强大功能
在数据科学领域中,Python语言的Pandas库被广泛应用于数据处理和分析。本文将深入探讨Pandas库的核心功能及其在数据科学中的重要性,帮助读者更好地理解和利用这一强大工具。
|
1月前
|
数据采集 JSON API
使用Python获取B站视频并在本地实现弹幕播放功能
使用Python获取B站视频并在本地实现弹幕播放功能
18 0