Python

Pythonは高水準な汎用プログラミング言語です。 Pythonの設計思想は、コードの読みやすさを重視しています。 たとえばブロックは波括弧 { } ではなくインデントで構造化されているなど、その構造に対するアプローチは独特です。
また、Pythonは、オブジェクト指向・インタープリタ型・動的型付け・クロスプラットフォームなプログラミング言語です。 これらのアプローチは、プログラマーが小規模および大規模なプロジェクトで自己説明的で論理的なコードを書けるようにすることを目的としています。
目次
[編集]




入門
[編集]- 基本事項 — pythonの実行方法、Hello, world!
- 変数と代入 — 変数とは、代入、識別子
- 数値入力と文字入力と出力表示 — input(), int(), float()
- 条件分岐と繰り返し — if, else, for, while
- 演算子 —
- 関数 — def、引数、ローカル変数、id()、戻り値、キーワード引数、デコレーター
基礎
[編集]- コレクション — 複数の要素をまとめたデータ構造です。
- 三種の内包表記とジェネレーター式
- モジュールのインポート — math モジュール、random モジュール、importlib
- array — 効率的な数値計算のために配列を提供する
- 例外処理 — try、except、finally、複数の例外の場合分け
- クラス — クラス定義、__init__()、self
- ファイルの書き込みと読み込み — open関数, with文を使ったリソース管理、オープンモード、write、readline
応用
[編集]モジュール
[編集]標準モジュール
[編集]標準モジュール — 標準モジュールの一覧
サードパーティモジュール
[編集]- その他のモジュール —
- pip — Pythonのパッケージ管理システム
- NumPy — 数値計算を効率的かつ簡単に行うためのライブラリ
- Pandas — データ分析やデータ処理において高度な機能を提供するライブラリ
- Transformers — ニューラルネットワークなどの機械学習モデルのデプロイなどに使用されるライブラリ。
- TensorFlow — ニューラルネットワークなどの機械学習アプリケーションの実装に使用される数値計算ライブラリ
- サードパーティデータベースモジュール — 拡張的データベースの利用
- mysql — mysql、aiomysql
- sqlarchemy
- matplotlib — グラフの作成
- requests — HTTPリクエストを簡単に送信するためのライブラリ
- BeautifulSoup — HTMLやXMLのパースやスクレイピングに使用されるライブラリ
- Django — Webアプリケーションの開発に使用されるフルスタックフレームワーク
- Flask — Webアプリケーションの開発に使用されるマイクロフレームワーク
- Pygame — ゲーム開発に使用されるマルチメディアライブラリ
- OpenCV — コンピュータビジョンタスク(画像処理や機械学習)に使用されるライブラリ
- gradio — 機械学習モデルのデプロイや対話型UIの作成を行うためのライブラリ
- streamlit — データの可視化や機械学習アプリケーションの作成を行うためのライブラリ
?
- Scikit-learn — 機械学習のさまざまなタスク(分類、回帰、クラスタリングなど)をサポートするライブラリ
- Keras — 深層学習モデルの構築とトレーニングを容易に行うための高水準のニューラルネットワークAPI
- NLTK — 自然言語処理(NLP)タスクのための豊富な言語データと機能を提供するライブラリ
- SciPy — 科学技術計算のための機能を提供するライブラリ(最適化、統計、信号処理など)
- Gensim — トピックモデリングや自然言語処理のためのベクトル空間モデルを構築するライブラリ
- PyTorch — 機械学習およびディープラーニングのためのフレームワーク
- FastAPI — 高速なWeb APIの開発を支援するマイクロフレームワーク
- Celery — 分散タスクキューの実装を可能にする非同期タスクキューライブラリ
- pytest — Pythonのテストフレームワークで、効率的で拡張可能なテストの作成をサポートする
- Scrapy — Webスクレイピングとクローリングのためのフレームワーク
- PySpark — Apache SparkのPython APIで、大規模データ処理や分散処理をサポートする
- Arrow — 効率的な日時とタイムゾーンの操作を提供するライブラリ
- Plotly — インタラクティブなグラフや可視化を作成するためのライブラリ
- Cython — Pythonのための静的型付けをサポートし、高速なC拡張モジュールを作成するためのツール
- PyQt — QtアプリケーションフレームワークのPythonバインディング
- PyPDF2: PDFファイルの操作と処理を行うためのライブラリ
- NetworkX: 複雑なネットワークやグラフの解析と可視化を行うためのライブラリ
- Seaborn: 美しいグラフと統計プロットを作成するためのライブラリ
- Cryptography: 暗号化やデータ保護のためのライブラリ
- Panda3D — 3Dゲーム開発のためのオープンソースフレームワーク
- Godot Engine — オープンソースの2Dおよび3Dゲームエンジンで、Pythonを含むさまざまなプログラミング言語をサポート
- Arcade — シンプルで使いやすい2Dゲーム開発ライブラリ
- Pygame Zero — Pygameをベースにしたシンプルなゲーム開発フレームワーク。初心者向けに適している
- Ursina — Pythonで記述された3Dゲームを簡単に作成できるライブラ
拡張モジュールの作成
[編集]リファレンス
[編集]PEPはさまざまなカテゴリーにわたる提案を含みます。例えば:
- 新機能の提案: 新しい機能や機能の変更についての提案が含まれます。例えば、新しい文法、標準ライブラリへの追加、言語の機能強化などがあります。
- 改善案: Pythonの改善や修正に関する提案も含まれます。これには、パフォーマンスの向上、既存の機能の改善、コードの可読性の向上などが含まれます。
- プロセスやガイドライン: Pythonコミュニティの運営や開発プロセスに関する提案もあります。例えば、コードスタイルのガイドライン、バージョン管理に関する規則、開発プロセスの改善などが挙げられます。
Python 3.13 の新機能
[編集]Python 3.13 では、言語仕様、実装、標準ライブラリに多彩な新機能と改良が導入されました。以下に主な新機能とその使用例を示します。
新しい対話型インタプリタの導入
[編集]Python 3.13 では、ユーザーエクスペリエンスを向上させる新しい対話型シェルがデフォルトとなりました。主な特徴は以下の通りです:
- 複数行の編集と履歴の保持
- 直接的な REPL コマンドのサポート(例:
help
、exit
、quit
など) - カラー表示による視認性の向上
- インタラクティブなヘルプブラウジング(F1 キー)
新しい対話型シェルを無効にするには、環境変数 PYTHON_BASIC_REPL
を設定してください。
New @override
decorator
[編集]Python 3.13 では、メソッドのオーバーライドを明示的に示すための @override
デコレータが導入されました。これにより、親クラスのメソッドを正しくオーバーライドしているかどうかをチェックできます。
- コード例
from typing import override class Parent: def greet(self): print("Hello from Parent") class Child(Parent): @override def greet(self): print("Hello from Child") child = Child() child.greet() # Output: Hello from Child
フリー・スレッディッドモードの実験的サポート (PEP 703)
[編集]Python 3.13 では、グローバルインタプリタロック (GIL) を無効にして Python コードを実行できるフリー・スレッディッドモードが実験的にサポートされました。これにより、マルチコア CPU を活用してスレッドを並行実行できます。この機能はデフォルトでは無効であり、使用するには特別な実行ファイルを利用するか、ソースからビルドする際に --disable-gil
オプションを指定する必要があります。
New asyncio.TaskGroup
for better task management
[編集]Python 3.13 では、asyncio.TaskGroup
が導入され、非同期タスクの管理がより簡単になりました。これにより、複数の非同期タスクをグループ化して管理することが容易になります。
- コード例
import asyncio async def task1(): await asyncio.sleep(1) print("Task 1 completed") async def task2(): await asyncio.sleep(2) print("Task 2 completed") async def main(): async with asyncio.TaskGroup() as tg: tg.create_task(task1()) tg.create_task(task2()) asyncio.run(main()) # Output: # Task 1 completed # Task 2 completed
型パラメータのデフォルト値のサポート (PEP 696)
[編集]typing.TypeVar
、typing.ParamSpec
、typing.TypeVarTuple
でデフォルト値がサポートされるようになりました。これにより、ジェネリック型の定義がより柔軟になります。
- コード例
from typing import TypeVar, Generic T = TypeVar('T', default=int) class MyClass(Generic[T]): def __init__(self, value: T): self.value = value # デフォルトで T は int 型として扱われる obj = MyClass(42)
これらの新機能により、Python 3.13 はさらに強力で使いやすい言語となっています。新しい機能を活用して、より効率的で読みやすいコードを書くことができます。詳細な情報やその他の変更点については、公式のリリースノートをご参照ください。
Python 3.12 の新機能
[編集]Python 3.12 には、いくつかの新機能が追加されています。以下にいくつかの新機能とそれらを使用するためのコード例を示します。
- Parenthesized context managers in with statements
Python 3.12 では、with ステートメントのコンテキストマネージャーに括弧を付けることができます。これにより、コンテキストマネージャーが複数の行にまたがっている場合に、より読みやすいコードを書くことができます。
- コード例
# Before Python 3.12 with open("file.txt", "r") as file1, open("file2.txt", "r") as file2: # do something with file1 and file2 # With Python 3.12 with (open("file.txt", "r"), open("file2.txt", "r")) as (file1, file2): # do something with file1 and file2
- Pattern matching improvements
Python 3.10 で導入されたパターンマッチングには、Python 3.12 で改良が加えられました。例えば、以下のように | を使用して複数のパターンをマッチングすることができます。
- コード例
# Before Python 3.12 def my_function(x): if isinstance(x, int): # do something elif isinstance(x, str): # do something else elif isinstance(x, list): # do something else else: raise ValueError("Invalid argument type") # With Python 3.12 def my_function(x): match x: case int: # do something case str: # do something else case list | tuple: # do something else case _: raise ValueError("Invalid argument type")
- New zoneinfo module for working with time zones
Python 3.9 で導入された zoneinfo モジュールは、Python 3.12 で改良が加えられました。これにより、タイムゾーンを扱うためのさまざまな機能が追加されました。
- コード例
# Before Python 3.12 import datetime import pytz tz = pytz.timezone("Asia/Tokyo") now = datetime.datetime.now(tz) # With Python 3.12 import datetime import zoneinfo tz = zoneinfo.ZoneInfo("Asia/Tokyo") now = datetime.datetime.now(tz)
整理作業中
[編集]Python/整理中 (複素数、正規表現、HTTPクライアント、JSON、pass)