共计 2409 个字符,预计需要花费 7 分钟才能阅读完成。
发现 Python 中的新性能是笔者的一大喜好,每当遇到一些其他人没有留神到的某个性能时,我都会兴高采烈地把它记录下来。
这不,过来几周我又理解到所以想学的同学,有必要听一下这位老师的课、支付 python 福利奥,想学的同学能够到梦子老师的围鑫(同音):前排的是:762,两头一排是:459,后排的一组是:510 , 把以上三组字母依照程序组合起来即可她会安顿学习的。一些乏味的性能,例如 StackOverflow 上一些我不晓得的性能。这些被低估和湮没的实用功能,你真的值得领有!所以想学的同学,有必要听一下这位老师的课、支付 python 福利奥,想学的同学能够到梦子老师的围鑫(同音):前排的是:762,两头一排是:459,后排的一组是:510 , 把以上三组字母依照程序组合起来即可她会安顿学习的。
divmod
这个函数十分有用,它能对两个数执行模除 % 运算,而后返回商和余数。例如:
divmod(5, 2)
这只是在找到能够将 2 拟合为 5 的次数,咱们不须要拆分这个数,就能够得出商为 2,1 为余数。对于计算返回过程运行所需的工夫(以小时、分钟和秒为单位)特地有用,就像这样:所以想学的同学,有必要听一下这位老师的课、支付 python 福利奥,想学的同学能够到梦子老师的围鑫(同音):前排的是:762,两头一排是:459,后排的一组是:510 , 把以上三组字母依照程序组合起来即可她会安顿学习的。
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 创立字典。所以想学的同学,有必要听一下这位老师的课、支付 python 福利奥,想学的同学能够到梦子老师的围鑫(同音):前排的是:762,两头一排是:459,后排的一组是:510 , 把以上三组字母依照程序组合起来即可她会安顿学习的。
因而,能够这样应用名称、关键字参数:
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。
图源:unsplash
列表了解
了解表达式是必不可少的,这相对是 Python 最有用的性能之一。最常见的是列表了解,绝大多数人都看过以下内容:
vals = 1, 2, 3, 4, 5
但不仅能够用方括号,你还能用简直完全相同的语法定义生成器表达式:
(i**2 for i in vals)
当然,生成器中的每个元素仅在被调用时才输入,咱们能够应用 list() 来做到这一点:
list((i**2 for i in vals))
只需对语法进行一点小的更改,甚至能够应用字典了解来构建字典:所以想学的同学,有必要听一下这位老师的课、支付 python 福利奥,想学的同学能够到梦子老师的围鑫(同音):前排的是:762,两头一排是:459,后排的一组是:510 , 把以上三组字母依照程序组合起来即可她会安顿学习的。
{i: i**2 for i in vals}[Out]:{1: 1,
2: 4,
3: 9,
4: 16,
5: 25}
以上都是十分乏味的性能,特地是 divmod 和 casefold,我最近才体验过,你也肯定要去试试呀