コンテンツにスキップ

Python

出典: フリー教科書『ウィキブックス(Wikibooks)』
Wikipedia
Wikipedia
ウィキペディアPythonの記事があります。
ウィキバーシティ
ウィキバーシティ
ウィキバーシティPythonの学習教材があります。
Python

Pythonは高水準な汎用プログラミング言語です。 Pythonの設計思想は、コードの読みやすさを重視しています。 たとえばブロックは波括弧 { } ではなくインデントで構造化されているなど、その構造に対するアプローチは独特です。

また、Pythonは、オブジェクト指向・インタープリタ型・動的型付け・クロスプラットフォームなプログラミング言語です。 これらのアプローチは、プログラマーが小規模および大規模なプロジェクトで自己説明的で論理的なコードを書けるようにすることを目的としています。

目次

[編集]
進捗状況の凡例
数行の文章か目次があります。
:本文が少しあります。
:本文が半分ほどあります。
: 間もなく完成します。
: 一応完成しています。


入門

[編集]
基本事項 — pythonの実行方法Hello, world!
変数と代入 — 変数とは代入識別子
数値入力と文字入力と出力表示 — input(), int(), float()
条件分岐と繰り返し — if, else, for, while
演算子 —
関数 — def、引数、ローカル変数、id()、戻り値、キーワード引数デコレーター

基礎

[編集]
コレクション — 複数の要素をまとめたデータ構造です。
シーケンス — データの順序付きコレクションです。
リスト — list 順序つきの可変シーケンスで、異なるデータ型の要素を含むことができます。
タプル — tuple 順序つきの不変シーケンスで、異なるデータ型の要素を含むことができます。
文字列 — string 文字の並びで、シングルクォートまたはダブルクォートで囲まれた不変のデータ型です。
辞書 — dict キーと値の対応付けを持つ可変コレクションで、中括弧{}を使って定義されます。
セット — set 重複のない要素のコレクションで、中括弧{}を使って定義し、順序は保持されません。
レンジ — range 数値の範囲を生成する不変のシーケンスで、通常、forループなどで使用されます。
三種の内包表記とジェネレーター式
モジュールのインポート — math モジュール、random モジュール、importlib
array — 効率的な数値計算のために配列を提供する
例外処理 — try、except、finally、複数の例外の場合分け
クラス — クラス定義、__init__()、self
ファイルの書き込みと読み込み — open関数, with文を使ったリソース管理、オープンモード、write、readline

応用

[編集]
型ヒント — 型アノテーション
イテレータ
演算子オーバーロード
改廃された技術

モジュール

[編集]

標準モジュール

[編集]

標準モジュール — 標準モジュールの一覧

Tkinter — GUIアプリケーションの作成
urllib — url拡張、識別
sqlite3 — 簡易的なデータベースの利用
yaml — yaml書式の解析

サードパーティモジュール

[編集]
その他のモジュール —
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ゲームを簡単に作成できるライブラ

拡張モジュールの作成

[編集]
c言語による拡張
ctypesによる拡張

リファレンス

[編集]
組込み関数
組込み型
PEPについて
PEP(Python Enhancement Proposal)は、Pythonプログラミング言語の改善や機能追加に関する提案や文書のことです。PEPはPythonコミュニティによって作成され、議論されます。Pythonの開発者やユーザーが新しいアイデアを提案し、共有するためのフレームワークとして機能しています。

PEPはさまざまなカテゴリーにわたる提案を含みます。例えば:

  1. 新機能の提案: 新しい機能や機能の変更についての提案が含まれます。例えば、新しい文法、標準ライブラリへの追加、言語の機能強化などがあります。
  2. 改善案: Pythonの改善や修正に関する提案も含まれます。これには、パフォーマンスの向上、既存の機能の改善、コードの可読性の向上などが含まれます。
  3. プロセスやガイドライン: Pythonコミュニティの運営や開発プロセスに関する提案もあります。例えば、コードスタイルのガイドライン、バージョン管理に関する規則、開発プロセスの改善などが挙げられます。
PEPはPythonの設計や開発プロセスに透明性と一貫性をもたらし、Pythonの成長と発展を支えてきました。PEPが提案されると、Pythonのコミュニティで議論され、採用されることがあります。採用されたPEPは、将来のPythonのバージョンで実装されることがあります。

Python 3.13 の新機能

[編集]

Python 3.13 では、言語仕様、実装、標準ライブラリに多彩な新機能と改良が導入されました。以下に主な新機能とその使用例を示します。

新しい対話型インタプリタの導入

[編集]

Python 3.13 では、ユーザーエクスペリエンスを向上させる新しい対話型シェルがデフォルトとなりました。主な特徴は以下の通りです:

  • 複数行の編集と履歴の保持
  • 直接的な REPL コマンドのサポート(例:helpexitquit など)
  • カラー表示による視認性の向上
  • インタラクティブなヘルプブラウジング(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.TypeVartyping.ParamSpectyping.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)