Pythonとは何ですか?強力で直感的なプログラミング

1991年にさかのぼり、Pythonプログラミング言語はギャップフィラー、「退屈なものを自動化する」(Pythonの学習に関する人気のある本の1つとして)スクリプトを作成する方法、または他の言語で実装されるアプリケーションのプロトタイプを迅速に作成する方法と見なされていました。 。

ただし、過去数年間で、Pythonは、最新のソフトウェア開発、インフラストラクチャ管理、およびデータ分析において一級市民として浮上してきました。これはもはやバックルームユーティリティ言語ではありませんが、Webアプリケーションの作成とシステム管理における主要な力であり、ビッグデータ分析とマシンインテリジェンスの爆発的な増加の主要な推進力です。

関連ビデオ:Pythonがプログラミングを容易にする方法

PythonはITに最適で、システムの自動化から機械学習などの最先端の分野での作業まで、さまざまな種類の作業を簡素化します。

Pythonの主な利点 

Pythonの成功は、初心者にも専門家にも同様に提供するいくつかの利点を中心に展開しています。

Pythonは習得と使用が簡単です

言語自体の機能の数は控えめであり、最初のプログラムを作成するための時間や労力の投資は比較的少なくて済みます。Python構文は、読みやすく簡単になるように設計されています。この単純さにより、Pythonは理想的な教育言語になり、初心者はすぐに習得できます。その結果、開発者は解決しようとしている問題について考えることに多くの時間を費やし、言語の複雑さや他の人が残したコードを解読することについて考える時間を減らします。

Pythonは広く採用され、サポートされています

Pythonは人気があり、広く使用されています。TiobeIndexのような調査で上位にランクされていることや、Pythonを使用した多数のGitHubプロジェクトが証明しているためです。Pythonは、すべての主要なオペレーティングシステムとプラットフォームで実行され、ほとんどのマイナーなオペレーティングシステムとプラットフォームでも実行されます。多くの主要なライブラリとAPIを利用したサービスには、Pythonバインディングまたはラッパーがあり、Pythonがこれらのサービスと自由にインターフェースしたり、これらのライブラリを直接使用したりできます。 

Pythonは「おもちゃ」の言語ではありません

スクリプトと自動化はPythonのユースケースの大部分をカバーしていますが(詳細は後で説明します)、Pythonは、スタンドアロンアプリケーションとWebサービスの両方としてプロ品質のソフトウェアを構築するためにも使用されます。Pythonは最速の言語ではないかもしれませんが、速度に欠けているものは、汎用性で補います。

Pythonは前進し続けます

Python言語の各リビジョンには、最新のソフトウェア開発慣行に対応するための便利な新機能が追加されています。たとえば、非同期操作とコルーチンは言語の標準部分になり、並行処理を実行するPythonアプリの作成が容易になりました。

Pythonの用途

Pythonの最も基本的なユースケースは、スクリプトおよび自動化言語としてです。Pythonは、シェルスクリプトやバッチファイルの単なる代替品ではありません。また、WebブラウザーやアプリケーションGUIとの対話を自動化するため、またはAnsibleやSaltなどのツールでシステムのプロビジョニングと構成を行うためにも使用されます。しかし、スクリプトと自動化は、Pythonの氷山の一角にすぎません。

GのPythonとeneralアプリケーション・プログラミング

Pythonを使用してコマンドラインとクロスプラットフォームの両方のGUIアプリケーションを作成し、それらを自己完結型の実行可能ファイルとしてデプロイできます。Pythonには、スクリプトからスタンドアロンバイナリを生成するネイティブ機能はありませんが、cx_FreezeやPyInstallerなどのサードパーティパッケージを使用してそれを実現できます。

Pythonによるデータサイエンスと機械学習

洗練されたデータ分析は、ITの最も動きの速い分野の1つであり、Pythonのスターユースケースの1つになっています。データサイエンスや機械学習に使用されるライブラリの大部分はPythonインターフェースを備えているため、この言語は機械学習ライブラリやその他の数値アルゴリズムで最も人気のある高レベルのコマンドインターフェースになっています。

PythonのWebサービスとRESTfulAPI

PythonのネイティブライブラリとサードパーティのWebフレームワークは、数行のコードで単純なREST APIから本格的なデータ駆動型サイトまで、あらゆるものを作成するための高速で便利な方法を提供します。Pythonの最新バージョンは非同期操作を強力にサポートしており、サイトは適切なライブラリを使用して1秒あたり数万のリクエストを処理できます。

Pythonでのメタプログラミングとコード生成

Pythonでは、Pythonモジュールやライブラリ自体を含め、言語のすべてがオブジェクトです。これにより、Pythonは非常に効率的なコードジェネレーターとして機能し、独自の関数を操作し、他の言語では実現が困難または不可能な種類の拡張性を備えたアプリケーションを作成できます。

Pythonを使用して、LLVMなどのコード生成システムを駆動し、他の言語でコードを効率的に作成することもできます。

Pythonの「グルーコード」

Pythonはしばしば「グルー言語」と呼ばれます。つまり、異種のコード(通常はC言語インターフェイスを備えたライブラリ)を相互運用させることができます。データサイエンスと機械学習での使用はこの流れにありますが、それは一般的な考え方の1つの化身にすぎません。ヒッチアップしたいアプリケーションまたはプログラムドメインがあるが、互いに直接通信できない場合は、Pythonを使用してそれらを接続できます。

Pythonが不足しているところ

また、Pythonが適していない種類のタスクも注目に値します。

Pythonは高級言語であるため、システムレベルのプログラミングには適していません。デバイスドライバーやOSカーネルは対象外です。

また、クロスプラットフォームのスタンドアロンバイナリが必要な状況にも理想的ではありません。Windows、MacOS、およびLinux用のスタンドアロンPythonアプリを構築することはできますが、エレガントまたは単純にすることはできません。

最後に、アプリケーションのあらゆる側面で速度が絶対的な優先事項である場合、Pythonは最良の選択ではありません。そのためには、C / C ++またはその口径の別の言語を使用したほうがよいでしょう。

Pythonがプログラミングを簡単にする方法

Pythonの構文は、ほとんど見せかけをせずに、読みやすくクリーンなものにすることを目的としています。Python 3.xの標準の「HelloWorld」は、次のようなものにすぎません。

print(“ Hello world!”)

Pythonは、多くの一般的なプログラムフローを簡潔に表現するために、多くの構文要素を提供します。テキストファイルからリストオブジェクトに行を読み取り、途中で終了する改行文字の各行を削除するためのサンプルプログラムについて考えてみます。

my_fileとしてopen( 'myfile.txt')を使用:

    file_lines = [x.rstrip( '\ n')for x in my_file]

with/as構造は、コンテキストマネージャコードのブロックのオブジェクトをインスタンス化し、ブロックすることを外部に廃棄するための効率的な方法を提供します。この場合、オブジェクトは関数my_fileでインスタンス化されopen() ます。これは、ボイラープレートの数行の代わりにファイルを開き、ファイルから個々の行を読み取り、それを閉じます。

[x … for x in my_file]建設は別のPythonの特異性、あるリストの内包。他のアイテム(ここmy_fileとそれに含まれる行)を含むアイテムを反復処理し、反復処理された各要素(つまり、各x)を処理してリストに自動的に追加します。

他の言語と同じように、Pythonでfor形式のループのようなものを書くことができfor… ます。重要なのは、Pythonには、複数のオブジェクトを反復処理してループ内の各要素に対して単純な操作を実行するループなどを経済的に表現したり、明示的なインスタンス化と破棄が必要なものを処理したりする方法があるということです。

このような構造により、Python開発者は簡潔さと読みやすさのバランスをとることができます。

Pythonの他の言語機能は、一般的なユースケースを補完することを目的としています。最新のオブジェクトタイプ(Unicode文字列など)は、言語に直接組み込まれています。リスト、辞書(つまり、ハッシュマップまたはKey-Valueストア)、タプル(オブジェクトの不変のコレクションを格納するため)、およびセット(一意のオブジェクトのコレクションを格納するため)などのデータ構造は、標準発行アイテムとして使用できます。

Python2とPython3

Pythonには2つのバージョンがあり、多くの新規ユーザーをつまずかせるほど異なっています。古い「レガシー」ブランチであるPython2.xは、2020年まで引き続きサポートされ(つまり、公式の更新を受け取ります)、その後も非公式に存続する可能性があります。この言語の現在および将来の化身であるPython3.xには、新しい構文機能(「セイウチ演算子」など)、より優れた同時実行制御など、Python2.xにはない多くの便利で重要な機能があります。効率的な通訳。

Python 3の採用は、サードパーティのライブラリサポートが比較的不足しているため、最も長い間遅くなりました。多くのPythonライブラリはPython2のみをサポートしているため、切り替えが困難です。しかし、ここ数年で、Python2のみをサポートするライブラリの数は減少しています。最も人気のあるライブラリはすべて、Python2とPython3の両方と互換性があります。今日、Python3は新しいプロジェクトに最適です。選択の余地がない限り、Python2を選択する理由はありません。Python 2に固執している場合は、さまざまな戦略を自由に使用できます。

Pythonのライブラリ

Pythonの成功は、ファーストパーティおよびサードパーティのソフトウェアの豊富なエコシステムにかかっています。 Pythonは、強力な標準ライブラリと、サードパーティの開発者から簡単に入手できてすぐに使用できるライブラリの豊富な品揃えの両方から恩恵を受けています。 Pythonは、何十年にもわたる拡張と貢献によって強化されてきました。

Pythonの標準ライブラリは、数学、文字列処理、ファイルとディレクトリへのアクセス、ネットワーキング、非同期操作、スレッド化、マルチプロセス管理などの一般的なプログラミングタスク用のモジュールを提供します。ただし、JSONやXMLなどの構造化ファイル形式の読み取りと書き込み、圧縮ファイルの操作、インターネットプロトコルとデータ形式(Webページ、URL、電子メール)の操作など、最新のアプリケーションに必要な一般的な高レベルのプログラミングタスクを管理するモジュールも含まれています。C互換の外部関数インターフェイスを公開するほとんどの外部コードには、Pythonのctypesモジュールを使用してアクセスできます。

デフォルトのPythonディストリビューションは、Tkinterを介した基本的で便利なクロスプラットフォームGUIライブラリ、およびSQLite3データベースの埋め込みコピーも提供します。

Python Package Index(PyPI)を通じて入手できる何千ものサードパーティライブラリは、Pythonの人気と汎用性の最も強力なショーケースを構成しています。

例えば:

  • BeautifulSoupライブラリは、HTML(トリッキーで壊れたHTMLでも)をスクレイピングし、そこからデータを抽出するためのオールインワンツールボックスを提供します。
  • Requestsを使用すると、大規模なHTTPリクエストを簡単かつ簡単に処理できます。
  • FlaskやDjangoのようなフレームワークは、単純なユースケースと高度なユースケースの両方を網羅するWebサービスの迅速な開発を可能にします。
  • 複数のクラウドサービスは、ApacheLibcloudを使用したPythonのオブジェクトモデルを通じて管理できます。
  • NumPy、Pandas、およびMatplotlibは、数学および統計演算を高速化し、データの視覚化を簡単に作成できるようにします。

Pythonの妥協

C#、Java、Goと同様に、Pythonにはガベージコレクションされたメモリ管理があります。つまり、プログラマーはオブジェクトを追跡して解放するためのコードを実装する必要がありません。通常、ガベージコレクションはバックグラウンドで自動的に行われますが、パフォーマンスの問題が発生する場合は、手動でトリガーするか、完全に無効にするか、パフォーマンスの向上としてガベージコレクションを免除されるオブジェクトの領域全体を宣言できます。

Pythonの重要な側面は、そのダイナミズムです。関数やモジュール自体を含む、言語内のすべてがオブジェクトとして処理されます。これには速度が犠牲になりますが(詳細は後で説明します)、高水準コードの記述がはるかに簡単になります。開発者は、わずかな指示で複雑なオブジェクト操作を実行でき、アプリケーションの一部を、必要に応じて変更できる抽象化として扱うこともできます。

Pythonでの重要な空白の使用は、Pythonの最良の属性と最悪の属性の両方として引用されています。下の2行目のインデントは、読みやすさのためだけのものではありません。これはPythonの構文の一部です。Pythonインタープリターは、制御フローを示すために適切なインデントを使用しないプログラムを拒否します。

my_fileとしてopen( 'myfile.txt')を使用:

    file_lines = [x.rstrip( '\ n')for x in my_file]

構文上の空白は鼻にしわを寄せる可能性があり、この理由でPythonを拒否する人もいます。ただし、厳密なインデント規則は、コードエディターが最小限であっても、実際には理論的に見えるよりもはるかに目立たず、その結果、コードがよりクリーンで読みやすくなります。

特にCやJavaのような言語から来ている人にとって、もう1つの潜在的なターンオフは、Pythonが変数の型付けを処理する方法です。デフォルトでは、Pythonは動的または「ダック」タイピングを使用します。これは迅速なコーディングには最適ですが、大規模なコードベースでは問題が発生する可能性があります。とは言うものの、Pythonは最近、オプションのコンパイル時型ヒントのサポートを追加したため、静的型付けの恩恵を受ける可能性のあるプロジェクトで使用できます。

Pythonは遅いですか?必ずしも

Pythonに関する一般的な注意点の1つは、Pythonが遅いことです。客観的には、それは本当です。Pythonプログラムは通常、C / C ++またはJavaの対応するプログラムよりも実行速度がはるかに遅くなります。一部のPythonプログラムは、桁違いに遅くなります。