学習記録_Python実践レシピ(第3章、第9章)
1. dir() 関数
-
概要: オブジェクトが持つ属性やメソッドの一覧を返す。
-
用途: 「このオブジェクトに何ができるか」を調べたいときに使用する。
-
例:
file_obj = open('python.txt') file_dir = dir(file_obj) print('__enter__' in file_dir) # True-
__enter__があるのでwith open(...)で利用可能。
-
2. time.sleep()
-
概要: プログラムを指定した秒数だけ一時停止する。
-
例:
import time time.sleep(3) # 3秒間プログラムが止まる
3. os.remove()
-
概要: 指定したファイルを削除する。
-
注意: 存在しないファイルを指定すると
FileNotFoundErrorが出る。 -
例:
import os os.remove("test.txt")
4. redirect_stdout
-
概要:
print()の出力先を一時的にファイルなどへ変更する。 -
仕組み:
print()は標準出力に書き込むが、redirect_stdoutを使うと出力先が差し替わる。 -
例:
from contextlib import redirect_stdout with open("output.txt", "w") as f: with redirect_stdout(f): print("これはファイルに書き込まれる") -
ポイント:
withブロック内ではprint()は画面に表示されず、ファイルに書かれる。
5. map(), filter(), round()
-
map(func, iterable)
→ 各要素に関数を適用するイテレータを返す。nums = [1, 2, 3] result = map(lambda x: x*2, nums) print(list(result)) # [2, 4, 6] -
filter(func, iterable)
→ 条件を満たす要素だけを返すイテレータ。nums = [1, 2, 3, 4] result = filter(lambda x: x % 2 == 0, nums) print(list(result)) # [2, 4] -
round(number, ndigits)
→ 四捨五入。ndigitsで小数点以下の桁数を指定。print(round(3.14159, 2)) # 3.14
6. do_something_func()
- 実在する標準関数ではない。
- サンプルコードで「何らかの処理をする関数」のダミー名としてよく使われる。
7. サードパーティライブラリ
- 定義: Python標準ライブラリに含まれないが、外部からインストールして使うライブラリ。
-
インストール方法: 通常
pip install ライブラリ名を使用。 -
例:
requests,numpy,pandas
8. 標準ライブラリの2種類
-
① Python本体に組み込み → すぐに使える(例:
math,sys) -
② インストール時に付属のモジュール → Python本体ではなく同梱(例:
email,http)
9. retrying ライブラリ
-
概要: 処理が失敗したときに自動でリトライしてくれるライブラリ。
-
失敗とは? → 基本的に「例外が発生した」ことを意味する。
-
例:
from retrying import retry @retry(stop_max_attempt_number=3) def risky_task(): print("実行中…") raise ValueError("失敗") risky_task()→ 最大3回リトライして失敗すれば例外が投げられる。
10. secrets モジュール
-
概要: 暗号学的に安全な乱数を扱うための標準ライブラリ。
-
よく使う関数:
-
secrets.randbelow(n)→ 0 以上 n 未満の乱数 -
secrets.choice(seq)→ シーケンスからランダムに1つ選ぶ -
secrets.token_hex(n)→ 安全なランダム文字列を生成
-
-
違い:
randomよりもセキュリティ用途に適している。
11. random.randint() vs 複数取得
-
random.randint(a, b)→ a〜b の整数を1つ返す。 -
複数個欲しい場合は リスト内包表記 を使う。
import random nums = [random.randint(1, 10) for _ in range(5)] print(nums) # 例: [7, 2, 10, 1, 5]
12. sorted() と引数の違い
-
① 集合(set)
print(sorted({8, 3, 4, 3})) # [3, 4, 8]→ set は重複を持たないので
{8, 3, 4}→[3, 4, 8] -
② リスト(list)
print(sorted([8, 3, 4, 3])) # [3, 3, 4, 8]→ リストは重複を保持するので
[3, 3, 4, 8]
13. 文字列を sorted() した場合
-
文字列はイテラブルなので、1文字ずつ取り出して Unicode順 に並べる。
-
例:
print(sorted("Python")) # ['P', 'h', 'n', 'o', 't', 'y'] -
大文字は小文字より先に並ぶ(ASCII/Unicodeのコード順)。
-
日本語も「五十音順」ではなく「Unicode順」になる。
14. reversed() の注意点
-
reversed()は イテレータ を返す。 -
イテレータは一度消費すると再利用できない。
-
例:
nums = [1, 2, 3] rev = reversed(nums) print(list(rev)) # [3, 2, 1] print(list(rev)) # [] (空になる) -
対策:
- 毎回
reversed(nums)を呼ぶ - もしくは
list(reversed(nums))を変数に保存して使う
- 毎回
✅ まとめ
- dir() → 属性一覧
- time.sleep() → 一時停止
- os.remove() → ファイル削除
- redirect_stdout → 出力先を切替
- map/filter/round → データ処理の基本関数
- retrying → 失敗時に自動リトライ(例外が基準)
- secrets vs random → セキュリティ用乱数と通常乱数の違い
- sorted() → setとlistで結果が違う、文字列はUnicode順
- reversed() → イテレータなので一度しか使えない
Discussion