この記事では、python に関する関連知識を提供します。主に、すべてまたは任意の、bashlotlib、コレクションなどを含む 24 の非常に実践的な Python 開発スキルをまとめています。お役に立てば幸いです。皆さん役に立ちます。
推奨学習: python チュートリアル
Python を学習する過程で、多くの友人は、「私はとても多くのことを学んだ」と思うかもしれません。たくさんありますが、一般的に使用され実用的なものはどれですか?作業効率を上げるにはどうすればよいでしょうか?
今日は、非常に役立つ Python の実践スキルを 24 個まとめました。友達に役立つことを願っています。 Huan 収集、学習、いいね、サポートへようこそ。記事の最後には技術交流グループが記載されています。
ここでは、これらのテクニックの一部を A ~ Z で始まる形式で共有し、これらの方法を簡単に紹介します。興味がある場合は、公式 Web サイトを確認してください。 Documentation~
Python 言語が非常に人気がある理由の 1 つは、非常に読みやすく、表現力豊かな。
人々はよく、Python は 実行可能な擬似コード
であると冗談を言います。このようなコードを作成できる場合、それに異論を唱えるのは困難です。
x = [True, True, False]if any(x): print("至少有一个True")if all(x): print("全是True")if any(x) and not all(x): print("至少一个True和一个False")
コンソールでグラフィックスを描画することを考えたことはありますか?
Bashlotlib は、コマンド ライン (大まかな環境) でデータをプロットするのに役立つ Python ライブラリです。
# 模块安装 pip install bashplotlib # 绘制实例 import numpy as np from bashplotlib.histpgram import plot_hist arr = np.ramdom.normal(size=1000, loc=0, scale=1) plot_hist(arr, bincount=50)
Python には優れたデフォルトのデータ型がいくつかありますが、それらが期待どおりに動作しない場合があります。
幸いなことに、Python 標準ライブラリには collections モジュール**[1]** が用意されています。この便利なアドオンにより、さらに多くのデータ型が提供されます。
from collections import OrderedDict, Counter # 记住键的添加顺序! x = OrderedDict(a=1, b=2, c=3) # 统计每个字符出现的频率 y = Counter("Hello World!")
Python オブジェクトの内部を調べて、どのようなプロパティがあるかを確認する方法を考えたことはありますか?コマンド ラインで、次のように入力します。
dir() dir("Hello World") dir(dir)
これは、Python を対話的に実行して、作業しているオブジェクトやモジュールを動的に探索するときに非常に便利な機能です。 **関数****[2]** の詳細については、こちらをご覧ください。
emoji**[3]** は、日本の無線通信で使用される視覚的な感情記号です。テキストとは、文字、笑いを表すスマイリーフェイス、食べ物を表すケーキなど、さまざまな表現に使用できます。中国本土では、絵文字は通常「小さな黄色い顔」または単に絵文字と呼ばれます。
# 安装模块 pip install emoji # 做个尝试 from emoji import emojize print(emojize(":thumbs_up:"))
Python の人気の結果の 1 つは、常に新しいバージョンが開発されていることです。新しいバージョンは、バージョンが古い場合を除き、新機能を意味します。
でも心配しないでください。 __future__ モジュール ****[4]** を使用すると、Python の将来のバージョンに機能をインポートできます。それは文字通りタイムトラベルか魔法か何かのようなものです。
from __future__ import print_function print("Hello World!")
地理は、ほとんどのプログラマーにとって難しい分野です。地理情報を入手したり、地図を描いたりする際にも、さまざまな問題に遭遇することがあります。 **geopy モジュール****[5]** を使用すると、地理関連のコンテンツが非常に簡単になります。
pip install geopy
これは、さまざまなジオコーディング サービスの API を抽象化することで機能します。これを使用すると、場所の完全な番地、緯度、経度、さらには標高を取得できます。
便利な遠隔授業もあります。 2 つの位置間の距離を好みの測定単位で計算します。
from geopy import GoogleV3 place = "221b Baker Street, London" location = GoogleV3().geocode(place) print(location.address) print(location.location)
ターミナル プログラミングを使用する場合、問題が発生した後、StackOverflow で答えを検索し、ターミナルに戻ってプログラミングを続行します。このとき、以前に見つけた解決策を覚えていないことがあります。このとき、StackOverflow を再度確認する必要がありますが、ターミナルから離れたくない場合は、この便利なコマンド ライン ツールを使用する必要がありますどうやって****[6 ]。
pip install howdoi
どんな質問があっても、質問することができ、最善を尽くして答えてくれます。
howdoi vertical align css howdoi for loop in java howdoi undo commits in git
ただし、注意してください。StackOverflow の上位の回答からコードがスクレイピングされます。常に最も有用な情報が提供されるとは限りません...
howdoi exit vim
Python の **inspect モジュール****[7]** は理解するのに最適です舞台裏で何が起こっているのか。独自のメソッドを呼び出すこともできます。
次のコード例inspect.getsource()
は、独自のソース コードを出力するために使用されます。 inspect.getmodule()
定義されているモジュールを出力するためにも使用されます。
コードの最後の行では、独自の行番号が出力されます。
import inspect print(inspect.getsource(inspect.getsource)) print(inspect.getmodule(inspect.getmodule)) print(inspect.currentframe().f_lineno)
もちろん、これらの簡単な使用法とは別に、検査モジュールはコードが何を行っているかを理解するのに役立ちます。これを使用して自己文書化コードを作成することもできます。
Jedi ライブラリは、オートコンプリートおよびコード分析ライブラリです。これにより、コードの記述がより速く、より効率的になります。
独自の IDE を開発している場合を除き、Jedi **[8]** をエディター プラグインとして使用することに興味があるかもしれません。幸いなことに、これはすでにたくさんあります。
在学习任何语言时,都会有许多里程碑。使用 Python 并理解神秘的**kwargs
语法可能算作一个重要的里程碑。
字典对象前面的双星号****kwargs****[9]**允许你将该字典的内容作为命名参数传递给函数。
字典的键是参数名称,值是传递给函数的值。你甚至不需要调用它kwargs
!
dictionary = {"a": 1, "b": 2}def someFunction(a, b): print(a + b) return# 这些做同样的事情:someFunction(**dictionary)someFunction(a=1, b=2)
当你想编写可以处理未预先定义的命名参数的函数时,这很有用。
关于 Python 编程,我最喜欢的事情之一是它的列表推导式****[10]。
这些表达式可以很容易地编写非常顺畅的代码,几乎与自然语言一样。
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 通过许多内置功能支持函数式编程。最有用的map()
功能之一是函数——尤其是与**lambda 函数****[11]**结合使用时。
x = [1, 2, 3] y = map(lambda x : x + 1, x) # 打印出 [2,3,4] print(list(y))
在上面的示例中,map()
将一个简单的 lambda
函数应用于x
. 它返回一个映射对象,该对象可以转换为一些可迭代对象,例如列表或元组。
如果你还没有看过它,那么准备好被Python newspaper module [12]模块震撼到。它使你可以从一系列领先的国际出版物中检索新闻文章和相关的元数据。你可以检索图像、文本和作者姓名。它甚至有一些内置的 NLP 功能**[13]**。
因此,如果你正在考虑在下一个项目中使用 BeautifulSoup
或其他一些 DIY 网页抓取库,使用本模块可以为你自己节省不少时间和精力。
pip install newspaper3k
Python 提供对**运算符重载的****[14]**支持,这是让你听起来像一个合法的计算机科学家的术语之一。
这实际上是一个简单的概念。有没有想过为什么 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
Python 的默认print
函数完成了它的工作。但是如果尝试使用print
函数打印出任何大的嵌套对象,其结果相当难看。这个标准库的漂亮打印模块**pprint****[15]**可以以易于阅读的格式打印出复杂的结构化对象。
这算是任何使用非平凡数据结构的 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 中使用队列**Queue****[16]**进行多线程编程的示例。
在 Python 中定义类或对象时,提供一种将该对象表示为字符串的“官方”方式很有用。例如:
>>> file = open('file.txt', 'r') >>> print(file) <open file 'file.txt', mode 'r' at 0x10d30aaf0>
这使得调试代码更加容易。将其添加到你的类定义中,如下所示:
class someClass: def __repr__(self): return "<some description here>" someInstance = someClass() # 打印 <some description here> print(someInstance)
Python 是一种很棒的脚本语言。有时使用标准的 os 和 subprocess 库可能有点头疼。
该**SH库****[17]**让你可以像调用普通函数一样调用任何程序——对于自动化工作流和任务非常有用。
import sh sh.pwd() sh.mkdir('new_folder') sh.touch('new_file.txt') sh.whoami() sh.echo('This is great!')
Python 是一种动态类型语言。定义变量、函数、类等时不需要指定数据类型。这允许快速的开发时间。但是,没有什么比由简单的输入问题引起的运行时错误更烦人的了。
从 Python 3.5**[18]** 开始,你可以选择在定义函数时提供类型提示。
def addTwo(x : Int) -> Int: return x +
你还可以定义类型别名。
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。如果你正在处理大型、复杂的项目,这是很有用的!
通过Python 标准库的 uuid 模块**[19]**生成通用唯一 ID(或“UUID”)的一种快速简便的方法。
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,重复存在的可能性也远低于十亿分之一。
你可能同时在多个 Python 项目上工作。不幸的是,有时两个项目将依赖于相同依赖项的不同版本。你在你的系统上安装了什么?
幸运的是,Python支持对 虚拟环境**[20]** 的让你可以两全其美。从命令行:
python -m venv my-project source my-project/bin/activate pip install all-the-modules
现在,你可以在同一台机器上运行 Python 的独立版本和安装。
维基百科有一个很棒的 API,它允许用户以编程方式访问无与伦比的完全免费的知识和信息。在**wikipedia模块****[21]**使访问该API非常方便。
import wikipedia result = wikipedia.page('freeCodeCamp') print(result.summary) for link in result.links: print(link)
和真实站点一样,该模块提供了多语言支持、页面消歧、随机页面检索,甚至还有一个donate()
方法。
幽默是 Python 语言的一个关键特征,它是以英国喜剧小品剧**Python飞行马戏团****[22]**命名的。Python 的许多官方文档都引用了该节目最著名的草图。不过,Python 的幽默并不仅限于文档。试试运行下面的行:
import antigravity
YAML**[23]**指的是 “ 非标记语言” 。它是一种数据格式化语言,是 JSON 的超集。
与 JSON 不同,它可以存储更复杂的对象并引用它自己的元素。你还可以编写注释,使其特别适合编写配置文件。该**PyYAML模块****[24]**可让你使用YAML使用Python。
安装并然后导入到你的项目中:
pip install pyyamlimport yaml
PyYAML 允许你存储任何数据类型的 Python 对象,以及任何用户定义类的实例。
压轴出场的也是很棒的一个模块。你曾经遇到过需要从两个列表中形成字典吗?
keys = ['a', 'b', 'c'] vals = [1, 2, 3] zipped = dict(zip(keys, vals))
该zip()
内置函数需要一系列可迭代的对象,并返回一个元组列表中。每个元组按位置索引对输入对象的元素进行分组。
你还可以通过调用对象来“解压缩”对象*zip()
。
Python 是一种非常多样化且发展良好的语言,因此肯定会有许多我没有考虑的功能。如果你想了解更多的python模块,可以参考awesome-python****[25]。
推荐学习:python学习教程
以上がまとめて整理してみよう! Python実践スキルまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。