Python是世界上最受欢迎的按需编程语言之一。这有很多原因:
很容易学习
超级通用
它具有大量的模块和库
我每天都将Python用作数据科学家工作的组成部分。一路上,我学到了一些有用的技巧和窍门。
在这里,我以AZ格式分享了其中的一些内容。
这些“窍门”大部分是我在日常工作中曾经使用或偶然发现的东西。我在浏览Python标准库文档时发现的一些。我发现其他一些人通过PyPi搜索。
但是,应归功于我—在awesome-python.com上发现了其中的四五个。这是数百种有趣的Python工具和模块的精选列表。值得浏览以获取灵感!
全部或任何
Python之所以成为如此流行的语言的众多原因之一是因为它具有可读性和表现力。
人们常开玩笑说Python是“可执行伪代码”。但是,当您可以像这样编写代码时,很难反驳:
x = [True
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")
bashplotlib
您想在控制台中绘制图形吗?
$ pip install bashplotlib
您可以在控制台中使用图形。
馆藏
Python有一些很棒的默认数据类型,但有时它们只是无法完全按照您希望的方式运行。
幸运的是,Python标准库提供了collections模块。这个方便的加载项为您提供了更多的数据类型。
from collections import OrderedDict
# Remembers the order the keys are added!
x = OrderedDict(a=1
# Counts the frequency of each character
y = Counter("Hello World!")
目录
有没有想过如何在Python对象内部查找并查看其具有的属性?当然有
从命令行:
>>> dir()
>>> dir("Hello World")
>>> dir(dir)
当以交互方式运行Python并动态浏览正在使用的对象和模块时,这可能是一个非常有用的功能。
在这里阅读更多。
表情符号
是的,真的。
$ pip install emoji
不要假装您不会尝试...
from emoji import emojize
print(emojize(":thumbs_up:"))
?
从__future__进口
Python受欢迎的一个后果是,总是有新版本正在开发中。新版本意味着新功能-除非您的版本已过期。
但是不要害怕。该__future__模块,您可以用Python的未来版本导入功能。从字面上看,这就像时光旅行,魔术一样。
from __future__ import print_function
print("Hello World!")
为什么不去导入花括号?
几何
对于程序员来说,地理环境可能是一个充满挑战的领域(哈哈,双关语!)。但是,geopy模块使其变得异常简单。
$ pip install geopy
它通过抽象一系列不同地理编码服务的API来工作。它使您能够获取地点的完整街道地址,纬度,经度甚至高度。
还有一个有用的距离课程。它以您喜欢的度量单位计算两个位置之间的距离。
from geopy import GoogleV3
place = "221b Baker Street
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)
我如何
坚持编码问题,不记得您之前看到的解决方案了吗?需要检查StackOverflow,但不想离开终端吗?
然后,您需要这个有用的命令行工具。
$ pip install howdoi
询问任何问题,它都会尽力返回答案。
$ howdoi vertical align css
$ howdoi for loop in java
$ howdoi undo commits in git
但是请注意,它会从StackOverflow的主要答案中抓取代码。它可能不会总是提供最有用的信息…
$ howdoi exit vim
检查
Python的inspect模块非常适合了解幕后发生的事情。您甚至可以自己调用其方法!
下面的代码示例inspect.getsource()用于打印自己的源代码。它还inspect.getmodule()用于打印定义它的模块。
代码的最后一行打印出自己的行号。
import inspect
print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)
当然,除了这些琐碎的用途外,inspect模块对于证明您的代码在做什么很有用。您也可以使用它来编写自文档代码。
绝地
Jedi库是一个自动完成和代码分析库。它使编写代码更快,更高效。
除非您正在开发自己的IDE,否则您可能会对使用Jedi作为编辑器插件最感兴趣。幸运的是,已经有负载可用!
但是,您可能已经在使用Jedi。IPython项目将Jedi用于其代码自动完成功能。
**夸克
学习任何语言时,都有许多里程碑。使用Python,了解神秘的**kwargs语法可能算是其中之一。
字典对象前面的双星号使您可以将该字典的内容作为命名参数传递给函数。
字典的键是参数名称,值是传递给函数的值。您甚至不需要调用它kwargs!
dictionary = {"a": 1
def someFunction(a
print(a + b)
return
# these do the same thing:
someFunction(**dictionary)
someFunction(a=1
当您要编写可以处理事先未定义的命名参数的函数时,此功能很有用。
清单理解
关于Python编程我最喜欢的事情之一是它的列表理解。
这些表达式使编写非常干净的代码变得容易,该代码的读取方式几乎类似于自然语言。
您可以在此处阅读有关如何使用它们的更多信息。
numbers = [1
evens = [x for x in numbers if x % 2 is 0]
odds = [y for y in numbers if y not in evens]
cities = ['London'
def visit(city):
print("Welcome to "+city)
for city in cities:
visit(city)
地图
Python通过许多内置功能支持函数式编程。map()函数中最有用的函数之一-尤其是与lambda函数结合使用。
x = [1
y = map(lambda x : x + 1
# prints out [2
在上面的示例中,map()将一个简单的lambda函数应用于中的每个元素x。它返回一个映射对象,可以将其转换为一些可迭代的对象,例如列表或元组。
报纸3k
如果您还没有看到它,那么请准备好让Python的报纸模块震惊。
它使您可以从一系列领先的国际出版物中检索新闻文章和相关的元数据。您可以检索图像,文本和作者名称。
它甚至具有一些内置的NLP功能。
因此,如果您想为下一个项目使用BeautifulSoup或其他DIY Web抓取库,则可以节省时间和精力,$ pip install newspaper3k而不必花很多时间。
运算符重载
Python提供了对运算符重载的支持,这是使您听起来像合法的计算机科学家的术语之一。
这实际上是一个简单的概念。有没有想过为什么Python让您使用+运算符来添加数字以及连接字符串?这就是操作员超负荷运行。
您可以定义使用Python的标准运算符以其特定方式使用的对象。这使您可以在与要使用的对象相关的上下文中使用它们。
class Thing:
def __init__(self
self.__value = value
def __gt__(self
return self.__value > other.__value
def __lt__(self
return self.__value < other.__value
something = Thing(100)
nothing = Thing(0)
# True
something > nothing
# False
something < nothing
# Error
something + nothing
pprint
Python的默认print功能可以完成其工作。但是,尝试打印出任何较大的嵌套对象,结果会很丑陋。
这是标准库的漂亮打印模块所处的位置。这以易于读取的格式打印出复杂的结构化对象。
任何使用非平凡数据结构的Python开发人员的必备工具。
import requests
import pprint
url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)
队列
Python支持多线程,标准库的Queue模块促进了这一点。
该模块使您可以实现队列数据结构。这些数据结构使您可以根据特定规则添加和检索条目。
“先进先出”(或FIFO)队列使您可以按添加顺序检索对象。“后进先出”(LIFO)队列使您可以首先访问最近添加的对象。
最后,优先级队列使您可以根据对象的排序顺序检索对象。
这是一个如何在Python中使用队列进行多线程编程的示例。
__repr__
在Python中定义类或对象时,提供一种“正式”的方式将该对象表示为字符串很有用。例如:
>>> file = open('file.txt'
>>> print(file)
<open file 'file.txt'
这使得调试代码容易得多。将其添加到您的类定义中,如下所示:
class someClass:
def __repr__(self):
return "<some description here>"
someInstance = someClass()
# prints <some description here>
print(someInstance)
SH
Python是一种很棒的脚本语言。有时使用标准os和子流程库可能会让人有些头疼。
该SH库提供了一个整洁的替代品。
它使您可以像调用普通程序一样调用任何程序,这对从Python内部进行自动化工作流和任务很有用。
import sh
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')
类型提示
Python是一种动态类型的语言。定义变量,函数,类等时,无需指定数据类型。
这样可以加快开发时间。但是,除了简单的键入问题导致的运行时错误外,没有什么比这更令人讨厌了。
从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
result = []
for i
result_row =[]
for j
result_row += [a[j] + b[j]]
result += [result_row]
return result
x = [[1.0
y = [[2.0
z = addMatrix(x
尽管不是强制性的,但类型注释可以使您的代码更易于理解。
它们还允许您使用类型检查工具在运行时捕获那些杂散的TypeError。如果您正在从事大型,复杂的项目,则可能值得!
uid
生成通用唯一ID(或“ UUID”)的快速简便方法是通过Python标准库的uuid模块。
import uuid
user_id = uuid.uuid4()
print(user_id)
这将创建一个随机的128位数字,几乎可以肯定是唯一的。
实际上,可以生成超过2 122的UUID。超过五十亿(或5
在给定集合中找到重复项的可能性非常低。即使使用一万亿个UUID,重复存在的可能性也远远小于十亿分之一。
两行代码相当不错。
虚拟环境
这可能是我最喜欢的Python。
您有可能同时从事多个Python项目。不幸的是,有时两个项目将依赖于同一依赖项的不同版本。您在系统上安装哪个?
幸运的是,Python对虚拟环境的支持使您可以兼得两全。在命令行中:
python -m venv my-project
source my-project/bin/activate
pip install all-the-modules
现在,您可以在同一台计算机上运行Python的独立版本和安装。排序!
维基百科
维基百科具有出色的API,允许用户以编程方式访问无与伦比的完全免费的知识和信息。
在维基百科模块,使访问该API几乎令人尴尬的方便。
import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
print(link)
与实际站点一样,该模块提供了对多种语言,页面歧义消除,随机页面检索的支持,甚至提供了一种donate()方法。
xkcd
幽默是Python语言的一项主要功能-毕竟,它是以英国喜剧素描节目Monty Python的Flying Circus命名的。Python的许多官方文档都引用了展览中最著名的草图。
但是,幽默感不仅仅限于文档。可以运行以下行:
import antigravity
永远不要改变,Python。从不改变。
YAML
YAML代表“ YAML不是标记语言”。它是一种数据格式语言,并且是JSON的超集。
与JSON不同,它可以存储更复杂的对象并引用其自己的元素。您还可以编写注释,使其特别适合编写配置文件。
该PyYAML模块可让您使用YAML使用Python。安装方式:
$ pip install pyyaml
然后导入到您的项目中:
import yaml
PyYAML允许您存储任何数据类型的Python对象以及任何用户定义类的实例。
压缩
ya的最后一招,这确实是很酷的。是否曾经需要从两个列表中组成字典?
keys = ['a'
vals = [1
zipped = dict(zip(keys
该zip()内置函数需要一系列可迭代的对象,并返回一个元组列表中。每个元组通过其位置索引将输入对象的元素分组。
您也可以通过调用对象来“解压缩”对象*zip()。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


雷达卡



京公网安备 11010802022788号







