コンテンツ
Pythonプログラムの変数
変数はデータを代わりに入れる箱のことです。
プログラムの中で、数値や文字などのデータを
変数といわれる箱に入れることで、プログラムの中で使いまわすことができます。
実際にプログラムを見てイメージをつかむほうがわかりやすいので
次のサンプルプログラムを使って説明します。
変数"var1"に15を代入し、変数"var2"に12を代入します。
変数"var1"と"var2"を足し算した値を"sum"という変数に代入して求めます。
※Visual Studio Codeを起動します。
「lesson2-1.py」のファイルを作成します。
「lesson2-1.py」のファイルには、
以下のプログラムを書いて保存してください。
# coding: utf-8
var1 = 15 #変数"var1"に15を代入します。
var2 = 12 #変数"var2"に12を代入します。
sum = var1 + var2 #変数"var1"と"var2"を足した値を、変数"sum"に代入します。
print(sum) #変数"sum"の内容を出力します。
PowerShellの画面で
「python lesson2-1.py」と入力します。
PS C:\PythonProgram> python lesson2-1.py
27
変数の文法について
変数 = 値
“=”は「左辺に右辺の値を代入する」、という意味を持っています。
今回のサンプルプログラム「lesson2-1.py」では、
変数var1に”15″という数値を扱っていますので、
var1の型は、”数値型”となります。
lesson1のプログラムの中に書くコメントで説明しましたが、
もし、エンコードを指定しなかった場合
coding: utf-8
をファイルの先頭に書きましたが、もし書かないでこのファイルを保存した場合
“var1 = 15 #変数”var1″に15を代入します。”
の1行目のプログラムを実行するときに、文字コードを指定しなさい
というエラーが出ます。
PS C:\PythonProgram> python lesson2-1.py
File "lesson2-1.py", line 1
SyntaxError: Non-UTF-8 code starting with '\x95' in file lesson2-1.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
そのため、コメントなどで日本語を書く場合は、
encodeを指定するようにしましょう。
変数に使える文字について
・1文字目に数字は使えません
変数の名前は基本的になんでもよいのですが、
予約語と呼ばれるすでに決まっている文字列は変数には使えません。
また、1文字目に数字は使えませんので注意してください。
例えば、さきほどのサンプルで”var1″としたものを
“1var”とすることはできません。
試しに「lesson2-2.py」のファイルを作成し
以下のプログラムを書いて保存してください。
1var = 15
lesson2-2.pyを実行して、結果を確認します。
PS C:\PythonProgram> python lesson2-2.py
File "lesson2-2.py", line 1
1var = 15
^
SyntaxError: invalid syntax
「SyntaxError: invalid syntax」というエラーが表示され、
1行目がPythonの規約通りに書かれていないというエラー種別が出ています。
今回は、変数の名前を規約通りにしなかった(1文字目に数字を入れた)ので
変数名を修正すればエラーが解決します。
Pythonの変数名に予約語は使えない
予約語とは何かというと、Pythonプログラムの中で
あらかじめ使うことが決まっている文字列のことです。
Pythonプログラムの中で、文法がありますが、
そういった文法のルールの中で使うことが決まっている文字列が該当します。
試しに「lesson2-3.py」のファイルを作成し
以下のプログラムを書いて保存してください。
yield = 1
lesson2-3.pyを実行して、結果を確認します。
PS C:\PythonProgram> python lesson2-3.py
File "lesson2-3.py", line 1
yield = 1
^
SyntaxError: invalid syntax
「SyntaxError: invalid syntax」というエラーが表示され、
1行目がPythonの規約通りに書かれていないというエラー種別が出ています。
今回は、変数の名前”yield”が予約語なので、
規約通りに変数を宣言しなかったというエラーになります。
変数名を修正すればエラーが解決します。
予約語がなにかわからないと変数名に使ってしまう可能性があるため、
予約語は覚える必要があります。
なお、Pythonには予約語を表示する機能がありますので
以下のコマンドを実行して確認します。
PS C:\PythonProgram> python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
これらが、Python 3.7.2 の時点での予約語になります。
Python 変数の開放
Pythonでは、変数に格納されている値を開放(廃棄)することが可能です
値の開放(廃棄)には、del文を使います。
Pythonコマンドを実行して、
以下のプログラムを対話モードで確認してみてください。
>>> var = 111 #変数"var"に"111"の値を代入します。
>>> print(var) #変数"var"の値を出力します。
111
>>> del var #変数"var"の値を開放(廃棄)します。
>>> print(var) #変数"var"の値が開放(廃棄)されているので、出力できません。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'var' is not defined
del文で変数”var”の値を開放したため、
print文でvarの値を出力しようとしたところ
エラーとなりました。
NameError: name ‘var’ is not defined
となり、”var”という変数は定義されていない、という警告です。
以上で2章:変数編の終了です。