Python3.5带给我们的方便的矩阵以及其他改进

Python 3.5 在 2015 年首次发布,尽管它已经发布了很长时间,但它引入的许多特性都没有被充分利用,而且相当酷。下面是其中的三个。

网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了五华免费建站欢迎大家使用!

@ 操作符

@ 操作符在 Python 中是独一无二的,因为在标准库中没有任何对象可以实现它!它是为了在有矩阵的数学包中使用而添加的。

矩阵有两个乘法的概念。元素积是用 * 运算符完成的。但是矩阵组合(也被认为是乘法)需要自己的符号。它是用 @ 完成的。

例如,将一个“八转”矩阵(将轴旋转 45 度)与自身合成,就会产生一个四转矩阵。

 
 
 
  1. import numpy
  2. hrt2 = 2**0.5 / 2
  3. eighth_turn = numpy.array([
  4.     [hrt2, hrt2],
  5.     [-hrt2, hrt2]
  6. ])
  7. eighth_turn @ eighth_turn
 
 
 
  1. array([[ 4.26642159e-17,  1.00000000e+00],
  2.        [-1.00000000e+00, -4.26642159e-17]])

浮点数是不精确的,这比较难以看出。从结果中减去四转矩阵,将其平方相加,然后取其平方根,这样就比较容易检查。

这是新运算符的一个优点:特别是在复杂的公式中,代码看起来更像基础数学:

 
 
 
  1. almost_zero = ((eighth_turn @ eighth_turn) - numpy.array([[0, 1], [-1, 0]]))**2
  2. round(numpy.sum(almost_zero) ** 0.5, 10)
 
 
 
  1. 0.0

参数中的多个关键词字典

Python 3.5 使得调用具有多个关键字-参数字典的函数成为可能。这意味着多个默认值的源可以与更清晰的代码”互操作“。

例如,这里有个可笑的关键字参数的函数:

 
 
 
  1. def show_status(
  2.     *,
  3.     the_good=None,
  4.     the_bad=None,
  5.     the_ugly=None,
  6.     fistful=None,
  7.     dollars=None,
  8.     more=None
  9. ):
  10.     if the_good:
  11.         print("Good", the_good)
  12.     if the_bad:
  13.         print("Bad", the_bad)
  14.     if the_ugly:
  15.         print("Ugly", the_ugly)
  16.     if fistful:
  17.         print("Fist", fistful)
  18.     if dollars:
  19.         print("Dollars", dollars)
  20.     if more:
  21.         print("More", more)

当你在应用中调用这个函数时,有些参数是硬编码的:

 
 
 
  1. defaults = dict(
  2.     the_good="You dig",
  3.     the_bad="I have to have respect",
  4.     the_ugly="Shoot, don't talk",
  5. )

从配置文件中读取更多参数:

 
 
 
  1. import json
  2. others = json.loads("""
  3. {
  4. "fistful": "Get three coffins ready",
  5. "dollars": "Remember me?",
  6. "more": "It's a small world"
  7. }
  8. """)

你可以从两个源一起调用这个函数,而不必构建一个中间字典:

 
 
 
  1. show_status(**defaults, **others)
 
 
 
  1. Good You dig
  2. Bad I have to have respect
  3. Ugly Shoot, don't talk
  4. Fist Get three coffins ready
  5. Dollars Remember me?
  6. More It's a small world

os.scandir

os.scandir 函数是一种新的方法来遍历目录内容。它返回一个生成器,产生关于每个对象的丰富数据。例如,这里有一种打印目录清单的方法,在目录的末尾跟着 /:

 
 
 
  1. for entry in os.scandir(".git"):
  2.     print(entry.name + ("/" if entry.is_dir() else ""))
 
 
 
  1. refs/
  2. HEAD
  3. logs/
  4. index
  5. branches/
  6. config
  7. objects/
  8. description
  9. COMMIT_EDITMSG
  10. info/
  11. hooks/

欢迎来到 2015 年

Python 3.5 在六年前就已经发布了,但是在这个版本中首次出现的一些特性非常酷,而且没有得到充分利用。如果你还没使用,那么将他们添加到你的工具箱中。

名称栏目:Python3.5带给我们的方便的矩阵以及其他改进
文章起源:http://www.shufengxianlan.com/qtweb/news32/288782.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联