前回までの「Python初体験」の続きです。

今回は文字列の解説です。

まず、大した話ではないのですが、Pythonでは""''がおんなじで、CやC++(C#も)が''で囲む「文字」と""で囲む「文字列」を峻別するので、それに慣れた私はちょっと吃驚しました。さらにまた、トリプルクオート("""または'''により、改行を含む複数行文字列を表すことが出来るそうです。
例えば、'ABC'"ABC"、さらに''ABC''""ABC""皆同じ文字列です。また、
'''ABC
DEF'''


"""ABC
DEF"""

は、"ABC\nDEF"と同じだそうです。

 

C系言語(をやってきた私にとっての最も注意すべきことですが)との大きな違いは、Pythonにはヌル文字がなく)、ヌル文字は単なる'\0'またはb'\0'の意味しかありません。
:「ヌル(null)文字

この理由は、そもそもPythonでは文字列が文字列長情報を持つバイナリーデータなので、ヌル文字による終端記号(Terminator-文字列の終わりを知らせるサイン)の必要がない訳です。()なお、文字列=""は空文、即ち長さ0の文字列データが「ある」-not None)です。
:バイナリーデータはエンコードの種類で異なります。Pythonの文字列デフォルトはUTF-8ですが、文字列.encode('shift_jis')とか文字列.encode(encoding='utf_16_le')で文字列データが変わります。なお、Copilot君によれば「Pythonの文字列は、内部的にはUnicode文字列として表現されます。Unicodeは、世界中のすべての文字を表現するための標準的な文字コードです。Pythonの文字列は、UTF-8エンコーディングでエンコードされたUnicode文字列として表現されます。UTF-8は、Unicode文字をバイト列に変換するための一般的なエンコーディング形式の1つです。」とのことです。またC系言語で終端記号は"NULL"や"null"などと書かれ、ASCIIでは1byteの\0、WindowsのUTF-16では2bytesの\0\0となります。

では、C系言語で変数の実体がないもの(例:文字列ポインターchar* ptr = null(0);→ポインター変数ptrはメモリーに存在するが、それが差し示す文字列はメモリーに無い。)のような「不存在(無い)」はどのように扱われるのでしょうか?PythonではそれをNoneといって、「不存在」を表すようです。

例えば、

fruits = {1:"apple", 2:"lemon", 3:"melon"}
print("fruisは3までしかありません。fruits.get[4]は", fruits.get(4), "となります。")

(出力)fruisは3までしかありません。fruits.get[4]は None となります。

dict = {"リンゴ":1, "レモン":2, "メロン":3}
print("辞書(dict)に「西瓜」は", dict.get("西瓜"), "です。")

(出力)辞書(dict)に「西瓜」は None です。

のように書くのだそうです。吃驚!

なお、条件式のis==の違いは「is演算子がオブジェクトの同一性を判定するのに対し、==演算子はオブジェクトの値の等価性を判定する」ということは、前回学習しましたね。
 

では、また次回。