关于Python,99%的人不知道

  • 时间:
  • 浏览:1
  • 来源:uu快3诀窍_uu快3app安卓_导航网

​​​​​​​path = root / 'happy_user'

print(path.resolve())

​​​​​​​first, , third, * = range(10)

print(first, third)

​​​​​​​return fib(number-1) + fib(number-2)

​​​​​​​start = time.time()

fib(40)

print(f'Duration: {time.time() - start}s')

枚举是二个符号集合,每个符号都和唯一的变量对应。通过使用枚举,大伙儿 能不到通过符号标识来比较各个成员,大伙儿 还能不到对枚举三种进行迭代。

https://docs.python.org/3/library/enum.htmlfor monster in Monster:

​​​​​​​ def power(self) -> float:

python在近几年得到飞速发展,诞生了或多或少代码库。我希望小编发现有太多太多代码都未能使用到 Python 3 提供的新功能。本文作者介绍了相关功能的介绍,包括字符串格式化出理 、文件路径出理 、类型提示、内置 LRU 缓存等等,帮助大伙儿 更好地利用 Python 3 书写代码。

​​​​​ print(armor)# <__main__.Armor object at 0x7fc430000e2cf8>

接来下大伙儿 使用数据类来实现中间的代码:

from dataclasses import dataclass

​​​​​​​@dataclass

class Armor:

​​​​​​​return fib_memoization(number-1) + fib_memoization(number-2)

​​​​​​​start = time.time()

fib_memoization(40)

print(f'Duration: {time.time() - start}s')

​​​​​​​# Duration: 6.86645300078125e-05s

扩展的可迭代解析功能(3.0+)

head, *body, tail = range(5)

print(head, body, tail)

类型提示 (3.5+)

静态类型与动态类型是软件工程中的二个热门话题,Python 3 提供了支持 type hinting(类型提示)的法律方式,下面提供了二个示例:

def sentence_has_animal(sentence: str) -> bool:

return "animal" in sentence

sentence_has_animal("Donald had a farm without animals")

​枚举 (3.4+)

Python 3 中的 Enum 类支持枚举功能,能不到使大伙儿 的程序变得更加简洁。 Enum 是三种便捷的变量列表的打包法律方式,使用该法律方式不需要 出理 多个变量在代码各处分布,使代码显得杂乱无章。

from enum import Enum, auto

​​​​​​​class Monster(Enum):

ZOMBIE = auto()

WARRIOR = auto()

BEAR = auto()

​​​​​​​print(Monster.ZOMBIE)

大伙儿 能不到使用 lru_cache 来优化该运算。你你你这个优化极技术称为 memoization ,它不需要 把执行时间从几秒缩减到几纳秒。

from functools import lru_cache

​​​​​​​@lru_cache(maxsize=512)

def fib_memoization(number: int) -> int:

if number == 0: 

对任何三种编程语言来说,字符串出理 是一项怪怪的要的内容,字符串出理 往往是太多太多程序的基础每段。就让人工出理 字符串非常繁琐,大伙儿 更希望用三种底部形态化的法律方式来出理 它们。在 Python 中,大伙儿 一般使用 format 来进行底部形态化字符串出理 ,如下所示:

user = "Jane Doe" action = "buy"

​​​​​​​log_message = 'User {} has logged in and did an action {}.'.format( user, action )

除了 format 之外, Python 3 还提供了二个更加灵活的法律方式来出理 字符串,那也不我 f-string 。如下所示,大伙儿 用 f-string 来和实现中间代码相同的功能:

user = "Jane Doe" action = "buy" ​​​​​​​

log_message = f'User {user} has logged in and did an action {action}.'

Pathlib (3.4+)

就让能不需要 出理 文件路径,大伙儿 能不到使用 Python 3 中的 pathlib 库,使对文件路径的操作更加便捷。就让你对 pathlib 处在疑惑,能不到参考这篇文章。下面提供了二个代码示例:

from pathlib import Path

​​​​​​​root = Path('post_sub_folder')

print(root)

注:文中的代码示例基于 Python 3.7 编写,为方便使用,在每个功能中间都列出了该功能所需的最低 Python 版本。

if number == 1:

​​​​​​​py, filename, *cmds = "python3.7 script.py -n 5 -l 15".split()

print(py)

print(filename)

print(cmds)

if number == 1:

数据类(3.7+)

Python 3 引入了数据类 (data class)。其装饰器会自动生成底部形态法律方式,类似于 __init__() 和 __repr()__,这不需要 帮助减少样本代码的数量。在官方文档中,它们被称作 “具有默认值的可变命名元组” 。

class Armor:

​ armor = Armor(5.2, "Common armor.", 2)

armor.power()# 10.

​​print(armor)# Armor(armor=5.2, description='Common armor.', level=2

隐式命名空间包(3.3+)

构建Python代码有太多太多法律方式,其中三种也不我在包(packages)中进行构建(即包所含一个 __init__.py 文件的文件夹)。

sound/ Top-level package

__init__.py Initialize the sound package

formats/ Subpackage for file format conversions

__init__.py

wavread.py

wavwrite.py

aiffread.py

aiffwrite.py

auread.py

auwrite.py

...

effects/ Subpackage for sound effects

__init__.py

echo.py

surround.py

reverse.py

...

filters/ Subpackage for filters

__init__.py

equalizer.py

vocoder.py

karaoke.py

...

在 Python 2 中,中间的每个文件夹都能不需要 二个 __init__.py 文件,该文件用于将其所在文件夹转化为 Python 包。然而在 Python 3 中,通过使用隐式命名空间包(Implicit Namespace Package:https://www.python.org/dev/peps/pep-0420/),哪此文件就不再不到。

sound/ Top-level package

__init__.py Initialize the sound package

formats/ Subpackage for file format conversions

wavread.py

wavwrite.py

aiffread.py

aiffwrite.py

auread.py

auwrite.py

...

effects/ Subpackage for sound effects

echo.py

surround.py

reverse.py

...

filters/ Subpackage for filters

equalizer.py

vocoder.py

karaoke.py              

 ..

注:官方文档PEP 420 Specification 指出,对于或多或少常规的包,__init__.py 仍然是能不需要 的 ,就让将该文件删除,就会把该 Python 包变成二个本地的命名空间包,这就让产生或多或少额外的限制,具体能不到参考这篇文档。

文中的代码链接:

https://github.com/Weenkus/DataWhatNow-Codes/blob/master/things_you_are_probably_not_using_in_python_3_but_should/python%203%20examples.ipynb