Python

#1
TIOBE#1
PYPL#1
GitHub#4
RedMonk#2
IEEESpectrum#1
JetBrains#2
プログラミング言語オブジェクト指向機械学習データサイエンスWeb開発自動化

プログラミング言語

Python

概要

Pythonは、シンプルで読みやすい構文を持つ汎用プログラミング言語です。

詳細

Pythonは1991年にGuido van Rossumによって開発されたインタープリター型のプログラミング言語で、「コードの読みやすさ」を重視した設計思想が特徴です。豊富な標準ライブラリと膨大なサードパーティ製パッケージエコシステムにより、データ分析・機械学習からWeb開発、デスクトップアプリケーション、システム管理まで幅広い分野で活用されています。インデントによるブロック構造やシンプルな文法により、プログラミング初心者にも習得しやすく、かつ大規模システムにも対応できる柔軟性を持っています。

書き方の例

Hello World

# 基本的な出力
print("Hello, World!")

# 変数を使った出力
message = "こんにちは、Python!"
print(message)

# フォーマット文字列を使った出力
name = "太郎"
age = 25
print(f"私の名前は{name}で、{age}歳です。")

File I/O

# ファイルの書き込み
with open("sample.txt", "w", encoding="utf-8") as file:
    file.write("これはテストファイルです。\n")
    file.write("Pythonでファイル操作を学んでいます。")

# ファイルの読み込み
with open("sample.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

# 行ごとの読み込み
with open("sample.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())  # 改行文字を除去

条件分岐

# 基本的なif文
score = 85

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"

print(f"得点: {score}, 評価: {grade}")

# 複数条件の組み合わせ
age = 20
has_license = True

if age >= 18 and has_license:
    print("運転できます")
elif age >= 18:
    print("免許を取得してください")
else:
    print("18歳になってから免許を取得してください")

リスト、辞書、タプル

# リスト(配列)の操作
fruits = ["りんご", "バナナ", "オレンジ"]
fruits.append("ぶどう")  # 要素の追加
print(f"果物リスト: {fruits}")
print(f"最初の果物: {fruits[0]}")

# 辞書(ハッシュ)の操作
person = {
    "name": "田中太郎",
    "age": 30,
    "city": "東京"
}
person["job"] = "エンジニア"  # 新しいキーと値の追加
print(f"名前: {person['name']}, 年齢: {person['age']}")

# タプル(変更不可なリスト)
coordinates = (10, 20)
print(f"座標: x={coordinates[0]}, y={coordinates[1]}")

ループ、繰り返し処理

# リストの要素を順番に処理
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    print(f"数値: {num}, 2倍: {num * 2}")

# range()を使った数値ループ
for i in range(1, 6):
    print(f"{i}の2乗は{i**2}です")

# 辞書の要素を処理
student_scores = {"太郎": 85, "花子": 92, "次郎": 78}
for name, score in student_scores.items():
    print(f"{name}さんの得点: {score}")

# while文
count = 0
while count < 5:
    print(f"カウント: {count}")
    count += 1

関数の定義と呼び出し

# 基本的な関数
def greet(name):
    """挨拶をする関数"""
    return f"こんにちは、{name}さん!"

# デフォルト引数を持つ関数
def calculate_area(width, height=10):
    """長方形の面積を計算する関数"""
    return width * height

# 複数の値を返す関数
def get_name_age():
    """名前と年齢を返す関数"""
    return "田中太郎", 25

# 関数の呼び出し
message = greet("山田")
print(message)

area = calculate_area(5)  # heightはデフォルト値10を使用
print(f"面積: {area}")

name, age = get_name_age()  # タプルのアンパック
print(f"名前: {name}, 年齢: {age}")

クラスの定義と使用

class Car:
    """車を表すクラス"""
    
    def __init__(self, make, model, year):
        """コンストラクタ(初期化メソッド)"""
        self.make = make      # メーカー
        self.model = model    # モデル
        self.year = year      # 年式
        self.mileage = 0      # 走行距離
    
    def drive(self, distance):
        """運転して走行距離を増やすメソッド"""
        self.mileage += distance
        print(f"{distance}km 運転しました。総走行距離: {self.mileage}km")
    
    def get_info(self):
        """車の情報を取得するメソッド"""
        return f"{self.year}年式 {self.make} {self.model}"

# クラスのインスタンス化と使用
my_car = Car("トヨタ", "プリウス", 2022)
print(my_car.get_info())
my_car.drive(50)
my_car.drive(30)

ライブラリの使用

# 標準ライブラリの使用
import datetime
import random
import json

# 現在の日時を取得
now = datetime.datetime.now()
print(f"現在時刻: {now.strftime('%Y年%m月%d日 %H:%M:%S')}")

# ランダムな数値生成
random_number = random.randint(1, 100)
print(f"ランダムな数値: {random_number}")

# JSON データの処理
data = {
    "name": "Python学習者",
    "skills": ["基本構文", "関数", "クラス"],
    "level": "初級"
}

# 辞書をJSON文字列に変換
json_string = json.dumps(data, ensure_ascii=False, indent=2)
print("JSON形式:")
print(json_string)

# 有名なサードパーティライブラリの例
# pip install requests でインストール
try:
    import requests
    response = requests.get("https://api.github.com/users/python")
    if response.status_code == 200:
        user_data = response.json()
        print(f"GitHubユーザー: {user_data['name']}")
except ImportError:
    print("requestsライブラリがインストールされていません")

特徴的な機能

リスト内包表記

# 基本的なリスト内包表記
squares = [x**2 for x in range(1, 6)]
print(f"1-5の2乗: {squares}")

# 条件付きリスト内包表記
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(f"偶数の2乗: {even_squares}")

デコレーター

def timer(func):
    """関数の実行時間を計測するデコレーター"""
    import time
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f"{func.__name__}の実行時間: {end - start:.4f}秒")
        return result
    return wrapper

@timer
def slow_function():
    """時間のかかる処理のサンプル"""
    import time
    time.sleep(1)
    return "処理完了"

result = slow_function()

コンテキストマネージャー

class DatabaseConnection:
    """データベース接続のコンテキストマネージャー例"""
    
    def __enter__(self):
        print("データベースに接続しました")
        return self
    
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("データベース接続を終了しました")
    
    def query(self, sql):
        print(f"実行中: {sql}")

# with文を使った安全なリソース管理
with DatabaseConnection() as db:
    db.query("SELECT * FROM users")

バージョン

バージョン ステータス LTS リリース日 サポート終了日
Python 3.13 最新 - 2024-10-07 2029-10
Python 3.12 現行 - 2023-10-02 2028-10
Python 3.11 現行 - 2022-10-24 2027-10
Python 3.10 現行 - 2021-10-04 2026-10
Python 3.9 現行 - 2020-10-05 2025-10
Python 3.8 セキュリティ修正のみ - 2019-10-14 2024-10
Python 2.7 サポート終了 - 2010-07-03 2020-01-01

参考ページ

公式ドキュメント

学習リソース

  • Real Python - 実践的なPythonチュートリアル
  • Python.jp - 日本Pythonユーザー会
  • PyPI - Pythonパッケージインデックス

開発ツール