mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-25 23:11:02 +08:00
PRF
@geekpi
This commit is contained in:
parent
484dec4e52
commit
8e9d26fef6
@ -3,16 +3,18 @@
|
|||||||
[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
|
[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
|
||||||
[#]: collector: (lujun9972)
|
[#]: collector: (lujun9972)
|
||||||
[#]: translator: (geekpi)
|
[#]: translator: (geekpi)
|
||||||
[#]: reviewer: ( )
|
[#]: reviewer: (wxy)
|
||||||
[#]: publisher: ( )
|
[#]: publisher: ( )
|
||||||
[#]: url: ( )
|
[#]: url: ( )
|
||||||
|
|
||||||
Python 3.5 带给我们的方便的矩阵以及其他改进
|
Python 3.5 带给我们的方便的矩阵以及其他改进
|
||||||
======
|
======
|
||||||
探索一些未被充分利用但仍然有用的 Python 特性。
|
|
||||||
![Hacker code matrix][1]
|
|
||||||
|
|
||||||
这是关于首次出现在 Python 3.x 版本中的特性的系列文章的第六篇。Python 3.5 在 2015 年首次发布,尽管它已经发布了很长时间,但它引入的许多特性都没有被充分利用,而且相当酷。下面是其中的三个。
|
> 探索一些未被充分利用但仍然有用的 Python 特性。
|
||||||
|
|
||||||
|
![](https://img.linux.net.cn/data/attachment/album/202106/01/201953lua9t9f3vvwqbqet.jpg)
|
||||||
|
|
||||||
|
这是 Python 3.x 首发特性系列文章的第六篇。Python 3.5 在 2015 年首次发布,尽管它已经发布了很长时间,但它引入的许多特性都没有被充分利用,而且相当酷。下面是其中的三个。
|
||||||
|
|
||||||
### @ 操作符
|
### @ 操作符
|
||||||
|
|
||||||
@ -22,7 +24,6 @@ Python 3.5 带给我们的方便的矩阵以及其他改进
|
|||||||
|
|
||||||
例如,将一个“八转”矩阵(将轴旋转 45 度)与自身合成,就会产生一个四转矩阵。
|
例如,将一个“八转”矩阵(将轴旋转 45 度)与自身合成,就会产生一个四转矩阵。
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
import numpy
|
import numpy
|
||||||
|
|
||||||
@ -32,23 +33,24 @@ eighth_turn = numpy.array([
|
|||||||
[-hrt2, hrt2]
|
[-hrt2, hrt2]
|
||||||
])
|
])
|
||||||
eighth_turn @ eighth_turn
|
eighth_turn @ eighth_turn
|
||||||
|
```
|
||||||
|
|
||||||
[/code] [code]
|
```
|
||||||
|
|
||||||
array([[ 4.26642159e-17, 1.00000000e+00],
|
array([[ 4.26642159e-17, 1.00000000e+00],
|
||||||
[-1.00000000e+00, -4.26642159e-17]])
|
[-1.00000000e+00, -4.26642159e-17]])
|
||||||
```
|
```
|
||||||
|
|
||||||
浮点数是不精确的,这点更难看出。从结果中减去四转矩阵,将其平方相加,然后取其平方根,这样就比较容易检查。
|
浮点数是不精确的,这比较难以看出。从结果中减去四转矩阵,将其平方相加,然后取其平方根,这样就比较容易检查。
|
||||||
|
|
||||||
这是新运算符的一个优点:特别是在复杂的公式中,代码看起来更像基础数学:
|
这是新运算符的一个优点:特别是在复杂的公式中,代码看起来更像基础数学:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
almost_zero = ((eighth_turn @ eighth_turn) - numpy.array([[0, 1], [-1, 0]]))**2
|
almost_zero = ((eighth_turn @ eighth_turn) - numpy.array([[0, 1], [-1, 0]]))**2
|
||||||
round(numpy.sum(almost_zero) ** 0.5, 10)
|
round(numpy.sum(almost_zero) ** 0.5, 10)
|
||||||
|
```
|
||||||
|
|
||||||
[/code] [code]` 0.0`
|
```
|
||||||
|
0.0
|
||||||
```
|
```
|
||||||
|
|
||||||
### 参数中的多个关键词字典
|
### 参数中的多个关键词字典
|
||||||
@ -57,7 +59,6 @@ Python 3.5 使得调用具有多个关键字-参数字典的函数成为可能
|
|||||||
|
|
||||||
例如,这里有个可笑的关键字参数的函数:
|
例如,这里有个可笑的关键字参数的函数:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
def show_status(
|
def show_status(
|
||||||
*,
|
*,
|
||||||
@ -84,7 +85,6 @@ def show_status(
|
|||||||
|
|
||||||
当你在应用中调用这个函数时,有些参数是硬编码的:
|
当你在应用中调用这个函数时,有些参数是硬编码的:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
defaults = dict(
|
defaults = dict(
|
||||||
the_good="You dig",
|
the_good="You dig",
|
||||||
@ -95,7 +95,6 @@ defaults = dict(
|
|||||||
|
|
||||||
从配置文件中读取更多参数:
|
从配置文件中读取更多参数:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
import json
|
import json
|
||||||
|
|
||||||
@ -110,10 +109,11 @@ others = json.loads("""
|
|||||||
|
|
||||||
你可以从两个源一起调用这个函数,而不必构建一个中间字典:
|
你可以从两个源一起调用这个函数,而不必构建一个中间字典:
|
||||||
|
|
||||||
|
```
|
||||||
|
show_status(**defaults, **others)
|
||||||
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
`show_status(**defaults, **others)`[/code] [code]
|
|
||||||
|
|
||||||
Good You dig
|
Good You dig
|
||||||
Bad I have to have respect
|
Bad I have to have respect
|
||||||
Ugly Shoot, don't talk
|
Ugly Shoot, don't talk
|
||||||
@ -126,13 +126,12 @@ others = json.loads("""
|
|||||||
|
|
||||||
`os.scandir` 函数是一种新的方法来遍历目录内容。它返回一个生成器,产生关于每个对象的丰富数据。例如,这里有一种打印目录清单的方法,在目录的末尾跟着 `/`:
|
`os.scandir` 函数是一种新的方法来遍历目录内容。它返回一个生成器,产生关于每个对象的丰富数据。例如,这里有一种打印目录清单的方法,在目录的末尾跟着 `/`:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
for entry in os.scandir(".git"):
|
for entry in os.scandir(".git"):
|
||||||
print(entry.name + ("/" if entry.is_dir() else ""))
|
print(entry.name + ("/" if entry.is_dir() else ""))
|
||||||
|
```
|
||||||
|
|
||||||
[/code] [code]
|
```
|
||||||
|
|
||||||
refs/
|
refs/
|
||||||
HEAD
|
HEAD
|
||||||
logs/
|
logs/
|
||||||
@ -150,7 +149,6 @@ for entry in os.scandir(".git"):
|
|||||||
|
|
||||||
Python 3.5 在六年前就已经发布了,但是在这个版本中首次出现的一些特性非常酷,而且没有得到充分利用。如果你还没使用,那么将他们添加到你的工具箱中。
|
Python 3.5 在六年前就已经发布了,但是在这个版本中首次出现的一些特性非常酷,而且没有得到充分利用。如果你还没使用,那么将他们添加到你的工具箱中。
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
via: https://opensource.com/article/21/5/python-35-features
|
via: https://opensource.com/article/21/5/python-35-features
|
||||||
@ -158,7 +156,7 @@ via: https://opensource.com/article/21/5/python-35-features
|
|||||||
作者:[Moshe Zadka][a]
|
作者:[Moshe Zadka][a]
|
||||||
选题:[lujun9972][b]
|
选题:[lujun9972][b]
|
||||||
译者:[geekpi](https://github.com/geekpi)
|
译者:[geekpi](https://github.com/geekpi)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user