こんにちは、なりなりです(^ ^)
今回はPythonの文法の基礎として、リテラル、変数、コメントアウトについて勉強しましょう!
リテラルとは
リテラルとは、プログラムのソースコードにおいて使用される、数値や文字列を直接に記述した定数のことです。
じゃあ、定数と呼べばいいじゃないかという話は置いときます(⌒-⌒; )
数値リテラル
数値リテラルは
- 真理値(True, False)
- 整数
- 浮動小数点数
- 複素数
の4種類とシンプル。文系の人は複素数も必要無いでしょう。
10進数の整数は説明不要ですよね。
これも文系の人には馴染みが薄いかもしれませんが、Pythonでは2進数(bynary)、8進数(Octal)、16進数(hexadecimal)の表記が素直で、それぞれ数値の前に"0b"、"0o"、"0x"を付ければOKです。
また、10進数をそれぞれに変換して文字列として返す関数、bin()、oct()、hex()も有り、これらを使って10進数の12を変換すると、
>>> bin(12) '0b1100' >>> oct(12) '0o14' >>> hex(12) '0xc' >>> 0xc 12
となります。
単純にoctaやhexaを入力してやるとdec(10進)に変換してくれます。
>>> bin(-1) '-0b1'
負の数を2進数表現すると、ハードウェアのエンジニア的には残念な表示になります。
LSIなどで演算する場合は、通常は固定小数点型で、符号付き整数は2の補数で表します。
この場合、-1は4ビットの整数なら0bF、8ビットなら0bFFになるんです。
と言うわけで、そのうち固定小数点型を自分の手で作ることになりそうです。
Pythonも演算子のオーバーロードが出来るようなので、過去にC++で作った固定小数点型をPython化すると思います。
文字列リテラル
"文字列"
'文字列'
として表し、'(シングルクオーテーション)と"(ダブルクオーテーション)の区別は有りません。
CやExcelでは半角1文字は'で囲む「文字」、全角又は半角2文字以上は"で囲む「文字列」で慣れているので、気持ち悪く感じる人は多い気がします。
要するに、Pythonには文字列しかなく、文字というリテラルが無いのです。
変数
変数宣言
Pythonには昔のBASICよろしく、変数宣言がありません。これには、C言語やJAVAをはじめとした言語を知っている大半のプログラマーが違和感を覚えるでしょう。
その変数の型は、最初に入力された値で決まるのですから。僕も変数宣言は有った方が良いように感じます。
変数の型
Pythonに標準で用意されている型、組込み型には
- 真理値型
- 整数型
- 浮動小数点型
- 複素数型
- 文字列型
- リスト型
- 辞書型
などが有ります。
文字列型まではリテラルと同じで、定数が変数になっただけ。
リストによく似たものにタプルという聞きなれないものも有りますが、リストと違って
- 一度定義された要素を変更出来ない
- 各要素の型は別々(数値と文字列とか)で構わない
といった特徴が有ります。
変更出来ないので、いわゆる変数とは一線を画しますね。僕には使い所が想像出来ません。
リスト型
リスト型はC言語などでいう配列型で、要素として真理値型〜文字列型を指定出来ます。
>>> list=['リンゴ','バナナ','キウイ'] >>> list ['リンゴ', 'バナナ', 'キウイ'] >>> list[0] 'リンゴ'
リスト型の初期化と要素の表示例です。
辞書(ディクショナリ)型
リスト型に似ていますが、これは先に例を見た方が分かりやすいでしょう。
>>> dic={'リンゴ':100,'バナナ':200,'キウイ':300} >>> dic {'リンゴ': 100, 'キウイ': 300, 'バナナ': 200} >>> dic['キウイ'] 300
辞書型という名前の通り要素をキーで指定するのがリスト型と異なるところです。
辞書型の初期化は中括弧を使うところもリスト型との違いです。
中括弧はiPhoneだと入力に困りますが、Pythonistaが追加表示してくれる括弧の長押しで表れます。
僕はあまり使いませんが、データベースなどを扱うには辞書型は便利でしょうね。
コメントアウト
apple = 100 #リンゴの価格
#の後ろがコメントになります。
Cでの//と同じですね。コメントアウト出来るのは一行だけです。
Python公式のコメントアウト方法はこれだけですが、テクニックとして
'''(シングルクオーテーション3つ)と'''の間、又は、"""(ダブルクオーテーション)と"""の間の複数行をコメントアウト出来るようです。
但し、'''と'''、'''"と"""のインデントが合っていないとエラーとなります。
今日はここまで(^-^)
文法の勉強は早くも飽きてきたのですが、最後に次回、オブジェクト思考型言語として重要な、オブジェクトやクラスについて書いて終わろうと思います。