Python は Linux や Mac OS X を含む幅広いプラットフォームで利用できます。Python 環境のセットアップ方法を理解しましょう。 ローカル環境のセットアップ ターミナルウィンドウを開き、「python」と入力して、すでにインストールされているか、どのバージョンがインストールされているかを確認します。 Python が利用可能な主なプラットフォーム: Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX など) Win 9x/NT/2000 Macintosh (Intel, PPC, 68K) OS/2 DOS (
Python は高水準、インタプリタ型、インタラクティブ、オブジェクト指向のスクリプト言語です。Python は高い可読性を持つように設計されています。他の言語が記号を多用するのに対し、Python では英語のキーワードを頻繁に使用し、構文構造も他の言語より少なくなっています。 Python はインタプリタ型 — Python はインタプリタによって実行時に処理されます。プログラムを実行する前にコンパイルする必要はありません。これは PERL や PHP と似ています。 Python はインタラクティブ — Python プロンプトで直接インタプリタと対話しながらプログラムを書くことができま
見逃しているかもしれませんが、Python 2は2020年1月1日をもって公式にサポート終了となりました。まだPython 2.7を使っているなら、今すぐアップグレードしてください。自分がどのバージョンを使っているか不明なら、Pythonバージョンを確認しましょう。 多くのパッケージメンテナがPython 3へ移行済みです。一部はまだPython 2をサポートしていますが、すでにサポートを打ち切ったプロジェクトも多数存在します。Python 2のコードベースから移行が必要な場合は、PythonコードをPython 3へ移行するガイドを参照してください。 なぜ今すぐ移行すべきか セキュ
コード内でPythonバージョンをチェックし、ユーザーが互換性のないバージョンでスクリプトを実行しないようにできます。シンプルなチェック例を示します: = (3, 5): # 3.5の機能を使っているため、アップグレードを促す pass より実用的な実装例 実際のプロジェクトでは、以下のように明確なエラーメッセージを出力して終了させるのが一般的です: import sys MIN_VERSION = (3, 8) if sys.version_info < MIN_VERSION: sys.exit( fこのスクリプトはPython {MIN
IPythonは拡張されたPython REPL(対話型実行環境)であり、Jupyter Notebookのコアとなっています。簡単に言えば、Jupyterはライブコード、数式、可視化、ナラティブテキストを含むドキュメントを作成・共有できるオープンソースのWebアプリケーションです。対話型シェルを頻繁に使っていて、まだIPythonを知らないなら、絶対にチェックすべきツールです! 目次 IPythonの特徴 マジックコマンド 前の入力・出力を参照する IPythonのインストール IPythonの特徴 IPythonシェルが提供する主な機能は以下の通りです: 包括的なオブジェ
sys.getsizeof() を使用すると、Pythonオブジェクトのメモリ使用量を確認できます。 import sys mylist = range(0, 10000) print(sys.getsizeof(mylist)) # 48 えっ……待って。この巨大なリストがたった48バイト? これは range 関数がイテラブルオブジェクトを返し、数値のリストのように振る舞うものの、内部では最後のイテレーション番号をカウントしているだけだからです。range は実際の数値リストを使うよりもはるかにメモリ効率が良いのです。 リスト内包表記を使って同じ範囲から実際のPythonリスト
Pythonでは一度に複数の値を返せます。显然、Pythonのほとんどの関数は単一の値(通常その関数が行った作業の結果)を返します。この記事では、Pythonで複数値を返せること、そしてそのために辞書、リスト、データクラスは不要であることを学びます。 目次 タプルで複数値を返す Pythonで複数値を返す代替方法 学びを続ける タプルで複数値を返す することは、return文の後に値をカンマ区切りで並べるだけです。複数値を返し、一度に複数変数へ代入する例: def get_user(id): # データベースからユーザーを取得 # .... retu
Pythonデータクラスとは、@dataclassデコレーターを持つ通常のPythonクラスです。データ保持専用に作られています。Python 3.7以降、dataclassという組み込みモジュールでデータクラスが提供されています。通常のPythonクラスに比べていくつかの利点があり、それらを本記事で探ります。サンプルコードと、データクラスでよく行う操作もいくつか紹介します。 目次 データクラスを使う利点 データクラス例 デフォルト値 データクラスをJSONに変換 学びを続ける データクラスを使う利点 なぜ通常のPythonクラスではなくデータクラスを使うべきか? まず、P
この小さなトリックで、第三の変数を使わずに2つのPython変数をスワップできます: a = 1 b = 2 a, b = b, a print(a) # 2 print(b) # 1 たった1行のコードです! 3行目で見られる通り、Pythonでは変数スワップに一時変数は不要です。
このトリックで、Python文字列を素早くタイトルケースに変換できます。Wikipedia記事から引用すると: タイトルケースはオフライン・オンライン印刷の両方でよく使われます。このサイト自体、すべての記事でタイトルケースを使用しています。よく見ると、ほとんどのWebサイト、新聞、雑誌が実際にタイトルケースを使っています。 Pythonでタイトルケース文字列を素早く作るには、組み込みのtitle()メソッドを使います: >>> title = string in title case >>> title.title() String In Titl
Pythonエコシステムには、考えられるほぼすべてのパッケージがあり、すべてシンプルなpipコマンドでインストール可能です。Pythonで絵文字を扱うパッケージがあるのも不思議ではありません。 emojiパッケージは以下でインストールできます: $ pip3 install emoji このパッケージを使うと、Unicode絵文字を文字列版に変換したり、その逆も可能です: import emoji result = emoji.emojize(Python is :thumbs_up:) print(result) # Python is 👍 # 逆変換も可能: result =
Pillow(Python Imaging Library)は画像処理に最適なライブラリです。通常、アーカイブ用途やバッチ処理アプリケーションで使用されます。もちろん、思いつくあらゆる用途で自由に使えます。このライブラリでできること: サムネイル作成 ファイル形式変換 画像印刷 ヒストグラム取得(自動コントラスト強化に最適) 画像回転 ブラー等のフィルター適用 目次 画像処理パッケージのインストール 画像処理 画像表示 さらに学ぶ 画像処理パッケージのインストール 元のPython Imaging Libraryのフォークかつ継続版であるPillowをインストールするに
最も初期のPython PEPの一つがPEP-20です。これはPythonプログラミングに関する19のテーゼのリストで、「Pythonの禅(The Zen of Python)」と呼ばれています。これらのルールは2004年に遡り、PEP-8に基づいています。 Pythonに長く存在する小さなイースターエッグで、これら19のルールを表示できます: >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit
Python REPLで直前の式の結果を取得するには、アンダースコア演算子(_)を使います。Python REPLでは以下のようになります: >>> 3 * 3 9 >>> _ + 3 12 これはIPythonシェルでも同様に動作します。さらにIPythonシェルでは、Out[n]を使ってIn[n]の式の値を取得できます。例:以下の例ではOut[1]で数値9が得られます: In [1]: 3 * 3 Out[1]: 9 In [2]: Out[1] + 3 Out[2]: 12 In [3]: _ + 3 Out[3]: 15
目次 attrsのインストール attrs vs データクラス 基本的なattrs例 attrsバリデーター例 attrsコンバーター例 attrsでスロットを使用 学びを続ける attrsのインストール attrsパッケージは標準ライブラリに含まれていないため、pip installコマンド等でインストールする必要があります。Pipenvのようなツールも使えます。他のプロジェクトに干渉しないよう、仮想環境を作成するのが望ましいです。パッケージ名はattrsなので、インストールは以下のようになります: $ pip install attrs # またはpipenvの場合: $
Pythonのクラススロット(__slots__)は、多くのプログラマーが知らない機能です。スロット付きクラスでは、マジックフィールド名__slots__を使って、クラスが持てるフィールドを明示的に定義します。これにはいくつかの利点があります: クラスから作成されるオブジェクトのメモリ使用量がわずかに減る クラス属性へのアクセスが高速になる スロット付きクラスのオブジェクトに、勝手に新しい属性を追加できなくなる スロット付きクラスの定義例: >>> class Card: ... __slots__ = rank, suite ... def _
目次 最悪のやり方 ややマシなcatch-all さらに悪いケース 扱える例外だけをcatchする 結論 最悪のやり方 最もやってはいけないのは、あらゆる例外を捕捉するtry-exceptブロックを書くことです。catch-allとは、例えば以下のようなものです: try: ... except: pass catch-allブロックが悪い理由: 他にどんな例外が発生するか把握できない(詳細は後述) passで黙って例外を隠蔽しており、エラーがログに残らない さらに、空のexceptはKeyboardInterrupt(Ctrl+C)、System
目次 print文によるデバッグ Pythonデバッガーブレークポイントの設定 Pythonデバッガーの使用 Pythonデバッガーコマンド 学びを続ける print文によるデバッグ 多くの人にとって、Pythonコードのデバッグはprint文を追加し、出力に基づいて何が起きているか推測することに帰着します。理想的ではありませんが、何らかの理由で人々はPythonデバッガーに触れたがりません。 決して批判しているわけではありません。 Python学習は難しい。プログラミングは難しい。人生は難しい。すでに苦労している時に、さらに新しいことを学ぶのが億劫なのは理解できます。pri
Pythonモジュールとは モジュールは、変数、関数、クラスを含む単一のPythonファイルです。ファイル名をguru99.pyとすると、モジュールはguru99としてアクセスされます。モジュールを使うと、大規模プログラムを論理的なピースに分割し、コードを整理・再利用可能にできます。 なぜモジュールをインポートするのか 別ファイルに定義されたコードを使うには、それをインポートする必要があります。インポートにより、モジュールの関数、クラス、変数にアクセスできるようになります。これはJavaScript、Java、Rubyなどの言語におけるimportキーワードと同様です。 モジュールの作成とイン
Pythonにはワークロードを高速化するためのマルチプロセッシングとマルチスレッドの両方が用意されています。このガイドでは、堅牢なスレッドベースアプリケーションの作成、グローバルインタプリタロック(GIL)のニュアンス、デッドロックや競合状態といった一般的な落とし穴の回避方法を解説します。 スレッドとは スレッドは単一プロセス内の軽量な実行単位です。スレッドはプロセスのメモリ空間を共有し、効率的なデータ交換を可能にしながら、OSによって1つ以上のCPUコア上で並行スケジュールされます。 プロセスとは プロセスは独立したプログラムインスタンスです。ブラウザやテキストエディタなどのアプリケーション
Python