Tagged Tags:

被人为智能捧红的 Python
已是一种发展周全且特别各样化的语言,在那之中自然有一对您未曾意识的功用。本文或者能够让你学到一些新才能。

Python 是世界上最盛行、热点的编制程序语言之一,原因多数,譬如:

  • 轻松学习
  • 超高的通用性
  • 具有大批量模块和库

正文将分享部分运用 Python 的技术,顺序依据 A-Z 排列。

 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")

  

 2.bashplotlib

想在调整高雄绘图吗?

$ pip install bashplotlib

 

运用方面包车型大巴行,就能够在调节新北绘图。

 

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!")

   

4.dir

你是或不是想过什么查看 Python 对象内部及其具备什么等属性?

输入以下命令行:

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

当以交互方式运转 Python
时,那或然是一个相当有效的功力,并且能够动态地探究你正在利用的靶子和模块。

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

 

5.emoji

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

$ pip install emoji

 

别认为自身不亮堂您会偷偷试它→→

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

👍

 

6.from __future__ import

Python
流行的多少个结实是,总有新本子正在开采中。新本子意味着新功用——除非你的版本现已不适合时机。

不过,别担心。__ future__模块允许用户导入新版 Python
的成效。那俨然就像时光游览,只怕法力什么的。

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

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

  

7.geopy

地理(吉优graphy)对于技士来讲大概是二个兼有挑衅性的世界。不过 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)

 

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

 

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
模块还是能帮忙您知道代码正在做的事。你还能用它编写自文档化代码。

10.Jedi

Jedi 库是三个活动完结和代码分析的库。它使代码编写变得更加快、效果越来越高。

唯有您正在开拓自个儿的 IDE,不然你势必会对选择 Jedi
库作为编写制定插件很感兴趣。

Jedi:Python 是世界上最流行、热门的编程语言之一亚搏app官方网站。https://jedi.readthedocs.io/en/latest/docs/usage.html

您大概已经在使用 Jedi 了。IPython 项目就利用 Jedi 完毕代码自动完成功能。

 11.**kwargs

学习其余语言时都会蒙受多数里程碑。对于 Python 来讲,掌握神秘的**kwargs
语法或许算是个中之一。

Python 是世界上最流行、热门的编程语言之一亚搏app官方网站。词典对象前面包车型客车双星号能够让您把该词典的开始和结果作为命名参数输入到函数中。

词典的秘钥是参数名,值是传递给函数的值。你居然没有供给称它为 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)

 

当您想编写能够处总管先未定义的命名参数的函数时,那么些很有用。

 

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)

 

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
对象,该目的足以被调换到可迭代的靶子,如列表或元组。

 

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,既省时又便捷,甘之如饴呢?

 

15.运算符重载(Operator overloading)

Python 帮衬运算符重载。

Python 是世界上最流行、热门的编程语言之一亚搏app官方网站。它其实是叁个轻巧易行的概念。你有未有想过怎么 Python 允许用户使用 +
运算符来将数字相加,并级联字符串?那正是运算符重载在发挥成效。

Python 是世界上最流行、热门的编程语言之一亚搏app官方网站。您能够选择 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

 

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)

 

17.Queue

Python 援助四线程,而那是由 Python 规范库的 Queue 模块协理的。

Python 是世界上最流行、热门的编程语言之一亚搏app官方网站。该模块允许用户达成队列(queue)数据结构。队列数据结构允许用户依据特定的法则增多和探究条款。

『First in, first out』 (FIFO)
队列允许用户遵照指标被抬高的顺序来搜寻对象。『Last in, first out』
(LIFO) 队列允许用户率先访问最新扩大的靶子。

最后,优先级队列(priority
queue)允许用户依照目的对应的事先级档案的次序来查找对象。

怎么着利用 queue 在 Python 中完成多线程编制程序,示例详见:https://www.tutorialspoint.com/python3/python\_multithreading.htm。

 

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)

Python 是世界上最流行、热门的编程语言之一亚搏app官方网站。 

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!')

 

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。在进展大型复杂项目时进行此类操作是值得的。

 

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,重复数字存在的概率也远远低于十亿分之一。

 

22.虚构情形(Virtual environment)

那说不定是 Python 中笔者最垂怜的事物了。

您或者还要管理多少个 Python
项目。不幸的是,偶尔候八个档期的顺序依赖于一致依赖项的差异版本。那你要安装哪个版本呢?

碰巧的是,Python
补助设想遭遇,那使得用户能够丰富利用二种情状。见下列行:

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

  

当今你在一台机械上有着独立的多少个 Python 版本了。难点一挥而就!

 

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() 方法。

 

24.xkcd

humour 是 Python
语言的一个要害特性,其名目来自United Kingdom清宫戏《蒙提·派森的宇宙航行马戏团》(Monty
Python and the Flying Circus)。Python
的过多官方文书档案援引了该烧脑片最盛名的剧情。

风趣感并不防止文书档案。试着运转下列行:

import antigravity

  

将开拓 xkcd 画的 Python 漫画。不要转移那或多或少,Python。不要退换。

 

25.YAML

YAML 代表 『YAML Ain』t 马克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

发表评论

电子邮件地址不会被公开。 必填项已用*标注