当前位置: 首页 > 图灵资讯 > 行业资讯> 这四个python功能你都知道吗?

这四个python功能你都知道吗?

来源:图灵python
时间: 2025-02-27 18:41:12

在过去的几周里,我学到了一些有趣的特点,比如Stack。 Overflow上不知道的功能。

以下是一些功能及其介绍。

pmod

这是一个非常有用的函数。函数的作用是:对两个数进行模除%操作,然后返回商和余数。例如:

pmod(5,2)
[Out]:(2,1)

这只是为了找到可以将2拟合成5的次数,我们不需要拆分这个数字,就可以得出商为2,1为余数。

这对计算返回过程运行所需的时间特别有用。这样:

start=datetime.datetime.now()
...#流程代码
end=datetime.datetime.now()
#总运行时间(秒)
runtime=(end-start).seconds#假设为30000
#这些秒有多少小时,剩下的秒有多少?
hours,remainder=pmod(runtime,3600)
#剩下多久了?
mins,secs=pmod(remainder,60)
print("{:02d}:{:02d}:{:02d}".format(hours,mins,secs))
[Out]:"08:00:08"
*args, **kwargs

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

它们实际上是非常简单的功能。 两者都允许我们将多个值传输到一个函数中,然后将其包装到一个生成器中。

结果类似于是否将列表/生成器传递给标准参数:

deffunc(values):
forxinvalues:
print(x,end="")
func(1,2,3)
[Out]:'123'

现在就让我们用吧* args-我们应该将每个值作为新参数传递,而不是将其全部包含在列表中。

deffunc(*values):
forxinvalues:
print(x,end="")
func(1,2,3)
[Out]:123

请注意,我们不需要输入* args,只需输入* values。由于单个星号*,它被定义为* args,这与我们使用的变量名无关。

* args只是根据我们传递给函数的参数创建一个元组。

** kwargs创建字典。因此,我们可以使用名称和关键字参数:

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

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

列表理解

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

vals=[1,2,3,4,5]
[i**2forinvals]
[Out]:[1,4,9,16,25]

但我们并不局限于这些方括号。生成器表达式可以用几乎完全相同的语法定义:

(i**2forinvals)
[Out]:<generatorobject<genexpr>at0x7f028730fc>

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

list((i**2forinvals)
[Out]:[1,4,9,16,25]

只要稍微改变一下语法,我们甚至可以用字典理解来构建字典:

{i:i**2foriinvals}[Out]:{1:1,
2:4,
3:9,
4:16,
5:25}
casefold

这是一种特别有趣的字符串方法, 它的功能类似于降低。 然而,casefold试图更积极地标准化更广泛的字符。

在大多数情况下,小写和大写的折叠行为是相同的,但有时它们是不同的:

"ς".casefold()#ς和σ都是希腊字母sigma
[Out]:"σ"

相比之下,使用较低:

"ς".lower()#然而,较低的人认为它们是不同的
[Out]:"ς"
[Out]:False

这两个sigma已经是小写了。 它可以根据使用情况按预期运行。

然而,如果我们计划比较两个等效的希腊语单词,一个使用σ,另一个使用ς。 虽然是一样的,但只有casefold才能让我们准确地比较它们:

"ἑρμῆσ"=="ἑρμῆς"
[Out]:False"ἑρμῆσ".lower()=="ἑρμῆς".lower()
[Out]:False"ἑρμῆσ".casefold()=="ἑρμῆς".casefold()
[Out]:True

我希望你能从这篇文章中得到一些东西, 特别是 pmod 和 casefold 都是很有意思的功能,最近才经历过。


更多pytho相关内容,请关注python自学网。