这么些Python代码技巧,你势必还不通晓

4.dir

您是否想过什么样查看 Python 对象内部及其所有咋样属性?

输入以下命令行:

>>> dir()
>>> dir("Hello World")
>>> dir(dir)

当以交互格局运行 Python
时,这可能是一个不行管用的功用,并且可以动态地探讨你正在使用的对象和模块。

想要领悟更多,点这里:https://docs.python.org/3/library/functions.html\#dir

 

7.geopy

地理(Geography)对于程序员来说也许是一个独具挑衅性的天地。可是 geopy
模块让它变得特别简单。

geopy 模块:https://geopy.readthedocs.io/en/latest/

$ pip install geopy

它经过抽取一雨后春笋不同地理编码服务的 API
来办事,使用户拿到一个地点的完整街道地址、纬度、经度,甚至海拔中度。

除此以外一个得力的职能是距离:它可以用你喜爱的心路单位测算出五个岗位之间的离开。

from geopy import GoogleV3
place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)

 

6.from __future__ import

Python
流行的一个结实是,总有新本子正在开发中。新本子意味着新职能——除非你的版本已经不合时宜。

不过,别担心。__ future__模块允许用户导入新版 Python
的效能。这简直就像时间旅行,或者魔法什么的。

__ future__模块:https://docs.python.org/2/library/\*future\*.html

from __future__ import print_function
print("Hello World!")

  

5.emoji

正确,真的有。请点击这里:https://pypi.org/project/emoji/

$ pip install emoji

 

别以为自我不知道你会偷偷试它→→

from emoji import emojize
print(emojize(":thumbs_up:"))

👍

 

 1.all or any

Python 万分受欢迎的原由之一是其可读性和表达性。

人人还平常把 Python 笑称为「可实施伪码(executable
pseudocode)」。不过,当你可以编写这样的代码时,很难去驳斥这种议论:

x = [True, True, False]
if any(x):
    print("At least one True")
if all(x):
    print("Not one False")
if any(x) and not all(x):
    print("At least one True and one False")

  

Python 是世界上最盛行、热门的编程语言之一,原因很多,比如:

21.uuid

变动通用唯一标识符(Universally Unique
ID,UUID)的一种高效简单方法就是应用 Python 标准库的 uuid 模块。

uuid 模块:https://docs.python.org/3/library/uuid.html

import uuid
user_id = uuid.uuid4()
print(user_id)

  

这开创了一个随机化后的 128 比特数字,该数字几乎肯定是绝无仅有的。

实际上,可以生成 2¹²²或许的 UUID。那一个数字领先了
5,000,000,000,000,000,000,000,000,000,000,000,000。

在加以集合中找出双重数字的可能极低。即使有一万亿
UUID,重复数字存在的票房价值也远远低于十亿分之一。

 

 2.bashplotlib

想在控制纽伦堡绘图吗?

$ pip install bashplotlib

 

使用方面的行,即可在控制麦德林绘图。

 

18.__repr__

在 Python
中定义一个类型或对象时,以「官方」格局将对象表示为字符串很有用。例如:

>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>

  

这使代码 debug 变得简单很多。将字符串添加到项目定义,如下所示:

class someClass:
    def __repr__(self):
        return "<some description here>"
someInstance = someClass()
# prints <some description here>
print(someInstance)

 

24.xkcd

humour 是 Python
语言的一个关键特性,其名目来自大不列颠及苏格兰联合王国喜剧片《蒙提·派森的航空马戏团》(Monty
Python and the Flying Circus)。Python
的居多法定文档引用了该正剧片最有名的剧情。

幽默感并不限于文档。试着运行下列行:

import antigravity

  

将开辟 xkcd 画的 Python 漫画。不要转移这或多或少,Python。不要改动。

 

 11.**kwargs

上学其他语言时都会遭遇不少里程碑。对于 Python 来说,明白神秘的**kwargs
语法可能算是内部之一。

词典对象后面的双星号可以让你把该词典的内容作为命名参数输入到函数中。

词典的秘钥是参数名,值是传递给函数的值。你仍然不需要称它为 kwargs!

dictionary = {"a": 1, "b": 2}
def someFunction(a, b):
    print(a + b)
    return
# these do the same thing:
someFunction(**dictionary)
someFunction(a=1, b=2)

 

当您想编写可以处理事先未定义的命名参数的函数时,那些很有用。

 

20.类型唤醒(Type hints)

Python 是动态语言。在概念变量、函数、序列等时无需点名数据类型。

这有利于缩小开发周期。不过,简单的花色错误(typing
issue)导致的运行时不当真的太烦了。

从 Python 3.5 版本起初,用户可以挑选在概念函数时打开类型指示。

def addTwo(x : Int) -> Int:
    return x + 2

  

您仍是可以够定义类型别名:

from typing import List
Vector = List[float]
Matrix = List[Vector]
def addMatrix(a : Matrix, b : Matrix) -> Matrix:
  result = []
  for i,row in enumerate(a):
    result_row =[]
    for j, col in enumerate(row):
      result_row += [a[i][j] + b[i][j]]
    result += [result_row]
  return result
x = [[1.0, 0.0], [0.0, 1.0]]
y = [[2.0, 1.0], [0.0, -2.0]]
z = addMatrix(x, y)

  

即便非强制,但项目注释可以使代码更易精晓。

它们还允许你在运转往日运用项目检查工具捕捉
TypeError。在进展大型复杂项目时进行此类操作是值得的。

 

9.inspect

Python 的 inspect 模块分外有助于领会问题背后的详情。你居然足以在 inspect
模块上调用其艺术!

inspect 模块:https://docs.python.org/3/library/inspect.html

上面的代码示例使用 inspect.getsource() 打印自己的源代码。它还采取inspect.getmodule() 打印定义它的模块。

末尾一行代码打印出团结的行号。

import inspect
print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)

  

本来,除了这一个零碎的用途之外,inspect
模块还是可以协理你通晓代码正在做的事。你还足以用它编写自文档化代码。

19.sh

Python 是一种壮烈的脚本语言,但是有时利用正式 os 和 subprocess
库会有点为难。

sh 库提供了一种科学的代表方案。

sh 库:http://amoffat.github.io/sh/

该库允许用户像使用普通函数一样调用任意程序,这对自动化工作流和天职非常实用。

from sh import *
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')

 

15.运算符重载(Operator overloading)

Python 襄助运算符重载。

它事实上是一个粗略的概念。你有没有想过为啥 Python 允许用户选择 +
运算符来将数字相加,并级联字符串?这就是运算符重载在发挥功用。

您可以利用 Python
的正统运算符号来定义对象,这样您可以在与这多少个目的相关的语境中运用它们。

class Thing:
    def __init__(self, value):
        self.__value = value
    def __gt__(self, other):
        return self.__value > other.__value
    def __lt__(self, other):
        return self.__value < other.__value
something = Thing(100)
nothing = Thing(0)
# True
something > nothing
# False
something < nothing
# Error
something + nothing

 

17.Queue

Python 协理多线程,而这是由 Python 标准库的 Queue 模块扶助的。

该模块允许用户实现队列(queue)数据结构。队列数据结构允许用户遵照特定的平整添加和摸索条目。

『First in, first out』 (FIFO)
队列允许用户依照目的被抬高的顺序来查找对象。『Last in, first out』
(LIFO) 队列允许用户率先访问最新添加的对象。

最后,优先级队列(priority
queue)允许用户按照目的对应的预先级档次来寻觅对象。

咋样行使 queue 在 Python 中落实多线程编程,示例详见:https://www.tutorialspoint.com/python3/python\_multithreading.htm

 

25.YAML

YAML 代表 『YAML Ain』t 马克(Mark)up Language』。它是一种多少格式语言,是 JSON
的超集。

与 JSON
不同,它能够储存更复杂的目标并引述自己的元素。你还足以编写注释,使其更加适用于编写配置文件。

PyYAML 模块(https://pyyaml.org/wiki/PyYAMLDocumentation)可以让你在
Python 中应用 YAML。安装:

$ pip install pyyaml

  

然后导入到项目中:

import yaml

  

PyYAML 使你可以存储任何数据类型的 Python
对象,以及任何用户定义类其它实例。

 

26.zip

给您支最终一招,非常酷。还在用五个列表来组合一部词典吗?

keys = ['a', 'b', 'c']
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))

  

zip()内置函数使用六个可迭代对象作为输入并赶回元组列表。每个元组按职务索引对输入对象的因素举行分组。

你也足以通过调用*zip() 来「解压」对象。

选自FreeCodeCamp

作者:Peter Gleeson

Python学习交流群:548377875

机械之心编译。

初稿链接:https:// class=”visible”>medium.freecodecamp.org class=”invisible”>/an-a-z-of-useful-python-tricks-b467524ee747

16.pprint

Python 的默认 print
函数就足以兑现打印功效。但只要尝试打印较大的嵌套对象,就会发觉打印结果很丑。

那会儿 Python 标准库的 pretty printer
模块就能够发挥效用了。该模块可以将复杂的结构化对象以一种易读的格式打印出来。

pretty printer 模块:https://docs.python.org/3/library/pprint.html

Python 开发者的必需技能之一就是拍卖千头万绪的数据结构。

import requests
import pprint
url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)

 

  • 容命理术数习
  • 超高的通用性
  • 怀有大量模块和库

12.列表推导式(List comprehensions)

自家最喜爱 Python 编程的缘故之一是它的列表推导式(https://docs.python.org/3/tutorial/datastructures.html\#list-comprehensions)。

这多少个表达式使得编写干净易读的代码变得很容易,这些代码读起来几乎像自然语言一样。

至于它们的更多应用音信请查看:https://www.learnpython.org/en/List\_Comprehensions

numbers = [1,2,3,4,5,6,7]
evens = [x for x in numbers if x % 2 is 0]
odds = [y for y in numbers if y not in evens]
cities = ['London', 'Dublin', 'Oslo']
def visit(city):
    print("Welcome to "+city)
for city in cities:
    visit(city)

 

正文将分享部分用到 Python 的技能,顺序遵照 A-Z 排列。

被人为智能捧红的 Python
已是一种提升完美且卓殊多样化的语言,其中肯定有部分您从未意识的效应。本文或许可以让你学到一些新技巧。

13.map

Python 通过众多放置效率补助函数式编程。map()函数是最可行的函数之一——特别是当它与 lambda 函数结合使用时。

lambda 函数:https://docs.python.org/3/tutorial/controlflow.html\#lambda-expressions

x = [1, 2, 3]
y = map(lambda x : x + 1 , x)
# prints out [2,3,4]
print(list(y))

  

在上头的例子中,map() 将一个大概的 lambda 函数应用于 x
中的每个元素。它回到一个 map
对象,该目的足以被转换成可迭代的靶子,如列表或元组。

 

8.howdoi

陷入编码问题,却不记得从前见过的化解方案?需要检讨
StackOverflow,但不想离开终端?

这就是说你需要这些有效的命令行工具:https://github.com/gleitz/howdoi

$ pip install howdoi

甭管你有什么样问题都足以问它,它会全力以赴回答。

$ howdoi vertical align css
$ howdoi for loop in java
$ howdoi undo commits in git

可是请留心——它会从 StackOverflow
的万丈票答案中抓取代码。也就是说它提供的信息并非总是实惠……

$ howdoi exit vim

 

23.wikipedia

Wikipedia 拥有一个很棒的
API,允许用户以编程情势访问伟大体量的免费知识和音讯。

wikipedia 模块使得访问该 API 非凡简便。

Wikipedia 模块:https://wikipedia.readthedocs.io/en/latest/quickstart.html

import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
    print(link)

  

和实事求是的维基百科网站类似,该模块援助多种语言、页面消歧、随机页面检索,甚至还有着
donate() 方法。

 

22.虚拟环境(Virtual environment)

这也许是 Python 中我最喜爱的东西了。

您也许同时处理多少个 Python
项目。不幸的是,有时候多少个系列依赖于同一倚重项的不比版本。这您要设置哪个版本呢?

万幸的是,Python
帮忙虚拟环境,这使得用户可以丰硕利用二种环境。见下列行:

python -m venv my-project
source my-project/bin/activate
pip install all-the-modules 

  

先天您在一台机器上享有独立的五个 Python 版本了。问题化解!

 

14.newspaper3k

只要您在此以前未曾见过它,那么自己指出您先查看:https://pypi.org/project/newspaper3k/

它能够帮忙你从大气一等国际出版物中找寻到信息小说和相关元数据。你可以查找图像、文本和作者名。

它还有一部分放到的 NLP 效率。

地址:https://newspaper.readthedocs.io/en/latest/user\_guide/quickstart.html\#performing-nlp-on-an-article

若果您想在下一个系列中使用 BeautifulSoup 或另外 DIY
网页抓取库,那么不如利用$ pip install
newspaper3k,既省时又简便,何乐而不为呢?

 

3.collections

Python 有一对很棒的默认数据类型,但奇迹它们可能不会尽如你意。

只是,Python 标准库提供了 collections
模块。这多少个有利的叠加组件可以为您提供更多数据类型。

collections 模块:https://docs.python.org/3/library/collections.html

from collections import OrderedDict, Counter
# Remembers the order the keys are added!
x = OrderedDict(a=1, b=2, c=3)
# Counts the frequency of each character
y = Counter("Hello World!")

   

10.Jedi

Jedi 库是一个电动完成和代码分析的库。它使代码编写变得更快、效果更高。

只有您正在开发自己的 IDE,否则你势必会对利用 Jedi
库作为编制插件很感兴趣。

Jedi:https://jedi.readthedocs.io/en/latest/docs/usage.html

你也许已经在应用 Jedi 了。IPython 项目就应用 Jedi 实现代码自动完成功效。

相关文章