Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Noneとバイナリデータ | 異なる型間の相互作用
Pythonのデータ型

bookNoneとバイナリデータ

メニューを表示するにはスワイプしてください

実際のプログラムでは、欠損値やバイナリデータを扱う。値が存在しないことを示すには None を使用し、生のバイナリコンテンツには bytesbytearray を使用する。それぞれの適切な用途と、テキストとバイト間の安全な変換方法を理解する。

「値なし」を示す None

None は「何もない」ことを意味する単一のオブジェクト。

1234567
result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
copy

is None0 も偽と判定されるため、真偽値のチェックではなく "" を使用する。

123
value = 0 print(not value) # True print(value is None) # False
copy

デフォルト値とフォールバック

None は、値が意図的に存在しないことを明確に示すマーカーとして使用。0"" のような有効な値と「値が提供されていない」状態を区別できるため、デフォルト値やフォールバックの動作がより安全かつ予測可能になる。

1234567
x = None print(x or "unknown") # 'unknown' print("unknown" if x is None else x) x = 0 print(x or "unknown") # 'unknown' print("unknown" if x is None else x) # 0
copy

関数とパラメータ

この例は、関数がパラメータに None を設定してタグが指定されていないことを示す方法を説明しています。これにより、関数は安全なデフォルト値を割り当てつつ、必要に応じて呼び出し元が値を上書きできるようになります。

1234567
def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" print(add_tag("hello")) # [general] hello print(add_tag("hello", "news")) # [news] hello
copy

バイナリデータ

str はテキストを保持し、bytes および bytearray は生のバイト値を保持します。

1234
b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
copy

エンコーディングとデコーディング

エンコーディングはテキストをバイト列に変換し、信頼性の高い保存や転送を可能にします。デコーディングはそのバイト列を再び読みやすいテキストに戻します。UTF-8のような定義済みエンコーディングを使用することで、文字が正しく保持されます。

123
text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
copy

テキストとバイト列の混在

テキスト(str)とバイト列(bytes)は、異なるデータ型を表すため直接結合できません。安全に混在させるには、明示的なエンコーディングを用いてテキストを先にバイト列へ変換する必要があります。

123456
try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
copy

長さの違い

一部の文字は、テキスト要素としては1文字でも、バイト列では複数バイトになる場合があります。そのため、str型とエンコード後の長さが異なることがあります。これはUTF-8のようなエンコーディングが、1文字を複数バイトで表現する場合があるためです。

123
ch = "é" len(ch) # 1 len(ch.encode()) # 2
copy

ファイル

バイナリファイルは "rb" モードで開く必要があり、生のバイト列が保存された通りに読み込まれる。これにより、Python がデータをテキストとして解釈しようとするのを防ぐ。

# with open("example.png", "rb") as f:
#     blob = f.read()
question mark

どのチェックが欠損値を正しく検出するか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  3
some-alt