キーワードとは、Pythonで予約されている単語です。 キーワードを変数名、関数名、その他の識別子として使用することはできません。
Pythonプログラミングの全キーワード一覧
False | await | else | import | pass |
なし | ブレーク | 除く | イン | レイズ |
真 | クラス | 最後 | is | 戻り |
と | ||||
continue | for | lambda | try | |
as | def | from | nonlocal | while |
assert | del | global | not | with |
async | elif | if | or | yield |
上記のキーワードはPythonのバージョンにより変更される可能性があります。 追加されるものもあれば、削除されるものもあるかもしれません。
>>> import keyword>>> print(keyword.kwlist)
Description of Keywords in Python with examples
True, False
True
and False
are truth values in Python. Pythonの比較演算や論理(Boolean)演算の結果です。 例えば、
>>> 1 == 1True>>> 5 > 3True>>> True or FalseTrue>>> 10 <= 1False>>> 3 > 7False>>> True and FalseFalse
ここで、最初の3つの文は真なので、インタプリタはTrue
を返し、残りの3つの文はFalse
を返すことがわかります。 PythonのTrue
とFalse
は、1
と0
と同じ意味です。 これは次の例で正当化できます:
>>> True == 1True>>> False == 0True>>> True + True2
None
None
はPythonの特別な定数で、値がないこと、またはNULL値を表わします。 複数のNone
オブジェクトを作ることはできませんが、変数に代入することは可能です。 これらの変数は互いに等しくなります。
None
が False
, 0
または空のリスト、辞書、文字列などを意味しないことに特に注意する必要があります。 例えば、
>>> None == 0False>>> None == False>>> None == FalseFalse>>> x = None>>> y = None>>> x == yTrue
何も返さないボイド関数は、自動的にNone
オブジェクトを返します。 None
は、プログラムフローがreturnステートメントに遭遇しない関数でも返されます。 例えば、
def a_void_function(): a = 1 b = 2 c = a + bx = a_void_function()print(x)
Output
None
このプログラムでは、内部で何らかの演算を行うものの、値を返さない関数があります。 ですから、xを表示すると、自動的に(暗黙のうちに)返されるNone
が得られます。 同様に、別の例を示します。
def improper_return_function(a): if (a % 2) == 0: return Truex = improper_return_function(3)print(x)
Output
None
この関数にはreturn
文がありますが、すべてのケースで到達しているわけではありません。 この関数は入力が偶数のときだけTrue
を返します。
この関数に奇数を与えると暗黙のうちにNone
が返されます。
and, or , not
and
, or
, not
はPythonの論理演算子です。 and
はオペランドがともに True
のときのみ True
になる。 and
の真理値表は以下の通りである。
A | B | A と B |
---|---|---|
真 | 真 | False |
真 | FalseFalse | |
False | True | |
False | FalseFalse |
or
はオペランドのいずれかがTrue
であれば、True
となる。 or
の真理値表は以下のとおりです。
A | B | A or B |
---|---|---|
真 | 真 | FalseTrue |
False | True | |
False | False |
not
演算子は真実値の反転に使用される。 not
の真理値表は以下の通りです。
A | not A |
---|---|
True | False |
False | True |
以下に使用例を示します。
>>> True and FalseFalse>>> True or FalseTrue>>> not FalseTrue
as
as
は、モジュールをインポートする際に別名を作成するために使用されます。
例えば、Python には math
という標準モジュールがあります。 例えば、πの余弦が何であるかを別名を用いて計算したいとします。 as
:
>>> import math as myAlias>>>myAlias.cos(myAlias.pi)-1.0
ここで、math
モジュールをmyAlias
という名前を付けてインポートしています。 これで、math
モジュールをこの名前で参照できるようになった。
assert
assert
はデバッグのために使われます。
プログラミングをしていると、内部の状態を知りたくなったり、仮定が正しいかどうかをチェックしたくなったりすることがあります。 assert
はこのような場合に役立ち、より便利にバグを見つけることができます。 assert
の後には条件が続きます。
条件が真であれば、何も起こりません。 しかし、条件が偽の場合、AssertionError
が発生する。 例えば、
>>> a = 4>>> assert a < 5>>> assert a > 5Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>AssertionError
理解を深めるために、AssertionError
と一緒に表示されるメッセージも用意することができる。
>>> a = 4>>> assert a > 5, "The value of a is too small"Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>AssertionError: The value of a is too small
この時点で、
assert condition, message
は
if not condition: raise AssertionError(message)
async, await
キーワード async
と await
は Python の asyncio
library が提供するものであることがわかるだろう。 これらはPythonで並列コードを記述するために使用される。 例えば、
import asyncioasync def main(): print('Hello') await asyncio.sleep(1) print('world')
プログラムを実行するには、
asyncio.run(main())
上記のプログラムでは、async
キーワードで関数が非同期に実行されることを指定しています。
ここでは、最初のHelloが表示されています。 await
キーワードで1秒待たされる。
break
は、for
と while
ループの中で、その通常の動作を変更するために使用されます。
これは次の二つの例で説明できる。
for i in range(1,11): if i == 5: break print(i)
Output
1234
ここで、for
ループは1から10までの数字を表示するつもりである。 しかし、iが5になるとif
の条件が満たされ、ループを抜ける。
for i in range(1,11): if i == 5: continue print(i)
出力
1234678910
ここで、continue
を使って同じプログラムをしています。 つまり、条件を満たすとそのイテレーションはスキップされる。 しかし、ループを抜けるわけではありません。 したがって、5以外のすべての値が出力されます。
Python break と continue 文についてもっと知る。
class
class
は Python で新しいユーザー定義クラスを定義するために使われます。
クラスとは実際の状況を表現しようとする関連した属性とメソッドのコレクションです。 データと機能をクラスでまとめるこの考えは、オブジェクト指向プログラミング (OOP) の概念の中心です。
クラスはプログラムのどこででも定義することができます。 しかし、モジュールで単一のクラスを定義するのは良い習慣である。
class ExampleClass: def function1(parameters): … def function2(parameters): …
Python オブジェクトとクラスについてもっと知る。
def
def
はユーザー定義関数を定義するために使用されます。
def
の使用法を以下に示します。
def function_name(parameters): …
Python 関数についてもっと知る。 Pythonではすべてがオブジェクトです。 変数の参照を削除するには del
>>> a = b = 5>>> del a>>> aTraceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>NameError: name 'a' is not defined>>> b5
ここで、変数aの参照が削除されたことが分かります。 つまり、それはもう定義されていない。
del
はリストや辞書から項目を削除するためにも使われます。
>>> a = >>> del a>>> a
if, else, elif
if, else, elif
は条件分岐や意思決定に使われます。
ある条件をテストしてその条件が真のときだけブロックを実行したい場合、if
と elif
が使用されます。 elif
はelse ifの略。 else
は条件が偽の場合に実行されるブロックである。 これは、次の例で明らかになります:
def if_example(a): if a == 1: print('One') elif a == 2: print('Two') else: print('Something else')if_example(2)if_example(4)if_example(1)
Output
TwoSomething elseOne
ここで、関数は入力された数字をチェックし、それが1または2であれば結果を表示します。 これ以外の入力があると、else
の部分が実行されます。
Python if と if…else Statement についてもっと知る。
except, raise, try
except, raise, try
は Python で例外とともに使われます。
例外とは基本的には、プログラム実行中に何か問題が起こったというエラーを指します。 IOError
, ValueError
, ZeroDivisionError
, ImportError
, NameError
, TypeError
などはPythonの例外のいくつかの例です。 try...except
ブロックは Python で例外をキャッチするために使用されます。
我々は raise
キーワードを使用して明示的に例外を発生させることができます。 以下はその例です。
def reciprocal(num): try: r = 1/num except: print('Exception caught') return return rprint(reciprocal(10))print(reciprocal(0))
出力
0.1Exception caughtNone
ここで、関数reciprocal()
は入力された数値の逆数を返します。
10を入力すると、通常の出力である0.1が得られます。 しかし、0を入力すると自動的にZeroDivisionError
が発生します。
これをtry…except
ブロックで捕らえ、None
を返しています。
if num == 0: raise ZeroDivisionError('cannot divide')
finally
finally
はリソースやファイルストリームを閉じるために try…except
ブロックと共に使用されます。
finally
を使用すると、処理されない例外があってもその中のコードブロックが実行されることを保証します。 たとえば、
try: Try-blockexcept exception1: Exception1-blockexcept exception2: Exception2-blockelse: Else-blockfinally: Finally-block
ここで Try-block
に例外があった場合、それは except
または else
ブロックで処理されます。 しかし、どのような順番で実行が流れても、エラーがあってもFinally-block
が実行されるので安心である。 これはリソースの後始末に便利です。
Pythonプログラミングの例外処理について詳しく見る
for
for
はループ処理に使用されます。 一般的には、ループさせたい回数がわかっているときにfor
を使います。
Pythonでは、リストや文字列などのあらゆるタイプのシーケンスで使用することができます。
names = for i in names: print('Hello '+i)
Output
Hello JohnHello MonicaHello StevenHello Robin
Python for loop についてもっと知る。
from, import
import
キーワードは現在のネームスペースにモジュールをインポートするために使用されます。 from…import
は、特定の属性や関数を現在の名前空間にインポートするために使用されます。 例えば、
import math
は math
モジュールをインポートします。 これで、math.cos()
としてその中のcos()
関数を使用することができます。 しかし、もし cos()
関数だけをインポートしたい場合は、from
as
from math import cos
これで cos()
関数だけを使うことができ、 math.cos()
と書く必要はありません。
Python モジュールと import 文についてもっと知りたい方はこちら。
global
global
は、関数内の変数がグローバル(関数外)であることを宣言するために使います。
グローバル変数の値を読む必要がある場合、global
と定義する必要はないのです。 これは理解できる。
もし我々が関数内部でグローバル変数の値を変更する必要があるなら、global
で宣言しなければならない。
globvar = 10def read1(): print(globvar)def write1(): global globvar globvar = 5def write2(): globvar = 15read1()write1()read1()write2()read1()
Output
1055
ここで、read1()
関数は単にglobvar
の値を読み取っています。 そのため、global
と宣言する必要はありません。 しかし、write1()
関数は値を変更しているので、変数をglobal
と宣言する必要があります。
出力では、変更が行われたことがわかります(10が5に変更されています)。 write2()
もこの値を変更しようとしています。 しかし、global
.
として宣言していません。したがって、新しいローカル変数globvar
が作成され、この関数の外からは見えません。 このローカル変数を15に変更しても、グローバル変数は変更されない。 4240>
in
in
はシーケンス(リスト、タプル、文字列など)が値を含んでいるかどうかをテストするために使用されます。 値があれば True
を、なければ False
を返します。
for i in 'hello': print(i)
Output
hello
is
is
は Python でオブジェクトの同一性をテストするために使用されます。 ==
演算子が2つの変数が等しいかどうかをテストするために使われるのに対し、is
は2つの変数が同じオブジェクトを参照しているかどうかをテストするために使われます。
オブジェクトが同じならTrue
、違うならFalse
が返されます。
>>> True is TrueTrue>>> False is FalseTrue>>> None is NoneTrue
PythonではTrue
、False
、None
のインスタンスは1つだけなので、それらは同一であることがわかっています。
>>> == True>>> is False>>> {} == {}True>>> {} is {}False
空のリストや辞書は別の空のものと等しくなります。 しかし、これらはメモリ上に別々に配置されているため、同一のオブジェクトではありません。
>>> '' == ''True>>> '' is ''True>>> () == ()True>>> () is ()True
リストや辞書と異なり、文字列やタプルは不変(一度定義された値を変更できない)であるためである。 したがって、2つの同じ文字列またはタプルは、同様に同一である。
lambda
lambda
は、匿名関数(名前のない関数)を作成するために使用されます。 これは、return
ステートメントを含まないインライン関数である。 評価されて返される式で構成されています。 例:
a = lambda x: x*2for i in range(1,6): print(a(i))
Output
246810
ここで、lambda
ステートメントを使用して、値を2倍にするインライン関数を作成しました。
Pythonのラムダ関数についてもっと知る
nonlocal
nonlocal
キーワードの使用方法はglobal
キーワードと非常によく似ています。 nonlocal
は、ネストされた関数(関数の中の関数)内の変数がローカルでないこと、つまり外側の包含関数にあることを宣言するために使用されます。 ネストされた関数内の非ローカル変数の値を変更する必要がある場合、nonlocal
で宣言する必要がある。 そうしないと、その名前のローカル変数がネストされた関数の中に作られます。
def outer_function(): a = 5 def inner_function(): nonlocal a a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a)outer_function()
Output
Inner function: 10Outer function: 10
ここで、inner_function()
はouter_function
の中にネストされています。
変数aはouter_function()
の中に入っています。 そのため、inner_function()
で変更したい場合は、nonlocal
で宣言する必要があります。 aはグローバル変数ではないことに注意してください。
したがって、出力から、変数が入れ子のinner_function()
内部で正常に変更されたことがわかります。 nonlocal
キーワードを使用しない場合の結果は次のようになります:
def outer_function(): a = 5 def inner_function(): a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a)outer_function()
Output
Inner function: 10Outer function: 5
ここで、ネストした関数内の変数aがnonlocal
であることを宣言していません。 したがって、同じ名前の新しいローカル変数が作成されますが、非ローカルaは出力に見られるように変更されません。
pass
pass
は Python の null 文です。 これが実行されると何も起こりません。 これはプレースホルダーとして使用されます。
まだ実装されていないが、将来的に実装したい関数があるとします。 プログラムの途中に,
def function(args):
と書くだけでは、IndentationError
となる。 その代わりにpass
文で空白のボディを構成する。
def function(args): pass
空のclass
でも同じことができる。
class example: pass
return
return
文は関数内でそれを終了し値を返すために使われる。
値を明確に返さない場合は自動的にNone
が返される。
def func_return(): a = 10 return adef no_return(): a = 10print(func_return())print(no_return())
Output
10None
while
while
はPythonのループ処理に使われる。
while
ループ内の文は while
ループの条件が False
になるか break
文に遭遇するまで実行を継続され続ける。
i = 5while(i): print(i) i = i – 1
Output
54321
0はFalse
に等しいことに注意。
Python whileループについてもっと知りたい方はこちら。
with
with
文は、コンテキストマネージャによって定義されたメソッドの中でコードブロックの実行をラップするために使われます。
コンテキストマネージャは、__enter__
と __exit__
メソッドを実装するクラスです。 with
ステートメントの使用は、__exit__
メソッドがネストされたブロックの最後で呼び出されることを保証します。 この考え方は、try…finally
ブロックの使い方と似ている。 4240>
with open('example.txt', 'w') as my_file: my_file.write('Hello world!')
この例では、テキスト Hello world!
をファイル example.txt
に書き込んでいます。 Fileオブジェクトには__enter__
と__exit__
メソッドが定義されているので、それ自体がコンテキスト・マネージャとして機能する。
最初に__enter__
メソッドが呼ばれ、次にwith
文の中のコードが実行され、最後に__exit__
メソッドが呼ばれる。 __exit__
メソッドはエラーがあっても呼び出されます。
yield
yield
は return
文のように関数内で使用されます。 しかし、yield
はジェネレータを返します。
ジェネレータは、一度に1つのアイテムを生成するイテレータです。 大きな値のリストは多くのメモリを消費します。 ジェネレータはこのような状況で、すべての値をメモリに格納する代わりに、一度に1つの値だけを生成するので便利です。 例えば、
>>> g = (2**x for x in range(100))
とすると、2の99乗までの累乗を生成するジェネレータgが生成される。
>>> next(g)1>>> next(g)2>>> next(g)4>>> next(g)8>>> next(g)16
のように、next()
関数を使って数字を生成することができる。このタイプのジェネレータは、関数からyield
ステートメントで返される。 以下はその例です。
def generator(): for i in range(6): yield i*ig = generator()for i in g: print(i)
Output