🐍

精読「独習Python」(標準ライブラリ 基本)

2024/12/28に公開



独習Python
「独習Python」は、初心者から中級者までを対象に、Pythonの基礎から応用までを体系的に学べる入門書で、豊富な例題と練習問題を通じて実践的なスキルを身につけられる一冊です。

関連記事

標準ライブラリ 基本

Pythonでは、標準的な言語機能に加えて、コードから自在に呼び出せる命令(郡)をあまた提供している(=ライブラリ

ライブラリの分類

ライブラリで提供される機能は、大まかに以下の観点から分類できる

  • 型と関数
機能 説明
関数 コードの中で呼び出せる簡単な道具 print, input, sum
コードの中で扱える情報(値)の性質を表す仕組みで、それ自体が関数を持っていて情報を操作できる int, str, list
  • 組み込みライブラリとモジュール
機能 説明
組み込みライブラリ Pythonインタプリターに組み込まれているライブラリ print
モジュール ビルドインではない型/関数の束 datetime
import datetime # datetimeモジュール

date = datetime.date(2025, 1, 1)

print(date) # 組み込みライブラリ

関数

関数への入力のことを引数、出力のことを戻り値と言う

(=クラス)は扱える値のルールや設計図であり、具体的な値を用意することをインスタンス化と呼ぶ。インスタンス化された値はオブジェクトインスタンスと呼ばれ、コード内で利用できる

msg = 'こんにちは' # 'こんにちは'という文字列リテラルによって、str型(クラス)のインスタンス(オブジェクト)を生成し、変数msgに代入する

組み込み型/関数とモジュール

モジュールに属する型、関数を利用するには、対象のモジュールを読み込む必要がある(=インポート

import math
print(math.floor(1.34)) # 出力:1

文字列の操作

文字列の長さを取得する

text = "Hello, World!"
print(len(text))  # 出力: 13

文字列を大文字小文字で変換する

text = "Hello, World!"
print(text.upper())  # 出力: HELLO, WORLD!
print(text.lower())  # 出力: hello, world!

部分文字列を取得する

text = "Hello, World!"
print(text[7:12])  # 出力: World

文字の種類を判定する

text = "Hello123"
print(text.isalpha())  # 出力: False (文字と数字が混在)
print("Hello".isalpha())  # 出力: True (すべて文字)
print("123".isdigit())  # 出力: True (すべて数字)

文字列を検索する

text = "Hello, World!"
print(text.find("World"))  # 出力: 7
print(text.find("Python"))  # 出力: -1 (見つからない場合)

文字列の前後から空白を除去する

text = "  Hello, World!  "
print(text.strip())  # 出力: "Hello, World!"

文字列に特定の文字列が含まれているかを判定する

text = "Hello, World!"
print("World" in text)  # 出力: True
print("Python" in text)  # 出力: False

文字列を特定の区切り文字で分割する

text = "apple,banana,orange"
print(text.split(","))  # 出力: ['apple', 'banana', 'orange']

リストを結合する

words = ["apple", "banana", "orange"]
print(", ".join(words))  # 出力: "apple, banana, orange"

文字列を置き換える

text = "Hello, World!"
print(text.replace("World", "Python"))  # 出力: "Hello, Python!"

文字を整形する

name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")  # 出力: "My name is Alice and I am 30 years old."

str型bytes型を変換する

# strからbytes
text = "Hello, World!"
byte_data = text.encode("utf-8")
print(byte_data)  # 出力: b'Hello, World!'

# bytesからstr
decoded_text = byte_data.decode("utf-8")
print(decoded_text)  # 出力: "Hello, World!"

日付/時刻の操作

日付/時刻値を生成する

from datetime import datetime

# 現在の日時を取得
now = datetime.now()
print(now)  # 出力例: 2024-12-28 14:30:00.123456

# 特定の日付/時刻を生成
specific_time = datetime(2024, 12, 25, 18, 0, 0)
print(specific_time)  # 出力: 2024-12-25 18:00:00

年月日、時分秒などの時刻要素を取得する

from datetime import datetime

now = datetime.now()

print(now.year)   # 出力: 2024
print(now.month)  # 出力: 12
print(now.day)    # 出力: 28
print(now.hour)   # 出力: 14
print(now.minute) # 出力: 30
print(now.second) # 出力: 0

日付/時刻を加算/減算する

from datetime import datetime, timedelta

now = datetime.now()

# 1日後
tomorrow = now + timedelta(days=1)
print(tomorrow)  # 出力例: 2024-12-29 14:30:00.123456

# 1時間前
one_hour_ago = now - timedelta(hours=1)
print(one_hour_ago)  # 出力例: 2024-12-28 13:30:00.123456

日付/時刻値の差分を求める

from datetime import datetime

start = datetime(2024, 12, 25)
end = datetime(2024, 12, 28)

diff = end - start
print(diff.days)  # 出力: 3 (日数の差)

日付/時刻値を比較する

from datetime import datetime

now = datetime.now()
future_date = datetime(2024, 12, 31)

print(now < future_date)  # 出力: True
print(now > future_date)  # 出力: False

日付/時刻値を整形する

from datetime import datetime

# 日時をフォーマット
now = datetime.now()
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted)  # 出力例: 2024-12-28 14:30:00

# フォーマットされた文字列から日時を生成
date_str = "2024-12-25 18:00:00"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print(parsed_date)  # 出力: 2024-12-25 18:00:00

カレンダーを生成する

import calendar

# 2024年12月のカレンダーを生成
print(calendar.month(2024, 12))

# 出力例:
#    December 2024
# Mo Tu We Th Fr Sa Su
#                    1
#  2  3  4  5  6  7  8
#  9 10 11 12 13 14 15
# 16 17 18 19 20 21 22
# 23 24 25 26 27 28 29
# 30 31

参考

https://amzn.to/41RlbuT

Discussion