当前位置: 首页 > 科技观察

Python3.5为我们带来了方便的矩阵和其他改进

时间:2023-03-12 05:17:21 科技观察

Python3.5于2015年首次发布,尽管它已经发布了很长时间,但它引入的许多功能都没有得到充分利用,而且非常酷。以下是其中的三个。@运算符@运算符在Python中是独一无二的,因为标准库中没有对象实现它!添加它是为了在带有矩阵的数学包中使用。矩阵有两个乘法概念。逐元素乘积是使用*运算符完成的。但是矩阵组合(也称为乘法)需要自己的符号。这是用@完成的。例如,将“八旋转”矩阵(将轴旋转45度)与其自身组合会产生四旋转矩阵。importnumpyhrt2=2**0.5/2eighth_turn=numpy.array([[hrt2,hrt2],[-hrt2,hrt2]])eighth_turn@eighth_turnarray([[4.26642159e-17,1.00000000e+00],[-1.00000000e+00,-4.26642159e-17]])浮点数不精确,很难看出。通过从结果中减去四元矩阵、对它们的平方求和并取它们的平方根来更容易地检查。这是new运算符的一个优点:尤其是在复杂的公式中,代码看起来更像基础数学:almost_zero=((eighth_turn@eighth_turn)-numpy.array([[0,1],[-1,0]]))**2round(numpy.sum(almost_zero)**0.5,10)0.0参数中的多个关键字字典Python3.5使得调用具有多个关键字参数字典的函数成为可能。这意味着多个默认源可以与更简洁的代码“互操作”。例如,这是一个带有荒谬关键字参数的函数:defshow_status(*,the_good=None,the_bad=None,the_ugly=None,fistful=None,dollars=None,more=None):ifthe_good:print("Good",the_good)ifthe_bad:print("Bad",the_bad)ifthe_ugly:print("Ugly",the_ugly)iffistful:print("Fist",fistful)ifdollars:print("Dollars",dollars)ifmore:print("更多",更多)当您在应用程序中调用此函数时,一些参数是硬编码的:来自配置文件的defaults=dict(the_good="Youdig",the_bad="Ihavetohaverespect",the_ugly="Shoot,don'ttalk",)阅读更多参数:importjsonothers=json.loads("""{"fistful":"Getthreecoffinsready","dollars":"Rememberme?","more":"It'ssasmallworld"}""")你可以从两个来源获得一起调用这个函数而不用havingtobuildanintermediatedictionary:show_status(**defaults,**others)GoodYoudigBadIhavetohaverespectUglyShoot,don'ttalkFistGetthreecoffinsreadyDollarsRememberme?MoreIt'sasmallworldos.scandiros.scandir函数是一种新的遍历方式目录内容。它返回一个生成器,生成关于每个对象的丰富数据。例如,这里有一种打印目录列表的方法,目录末尾带有/:forentryinos.scandir(".git"):print(entry.name+("/"ifentry.is_dir()else""))refs/HEADlogs/indexbranches/configobjects/descriptionCOMMIT_EDITMSGinfo/hooks/Welcometo2015Python3.5是六年前发布的,但是这个版本中首次亮相的一些功能非常酷并且未被充分利用。如果您还没有将它们添加到您的工具箱中。