Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのキーワード完全ガイド:予約語の一覧と使い方

他のプログラミング言語と同様に、Pythonにも予約語(キーワード)が存在します。これらの単語は特別な意味を持ち、命令やパラメータとして機能します。キーワードは変数名や関数名、クラス名などの識別子として使用することはできません。

Pythonのキーワード一覧

TrueFalseclassdefreturn
ifelifelsetryexcept
raisefinallyforinis
notfromimportgloballambda
nonlocalpasswhilebreakcontinue
andwithasyielddel
orassertNone

True / False キーワード

TrueFalse は Python における真偽値(ブール値)を表します。比較演算子の結果として返されるほか、ブール型の変数に格納できます。

コード例

# キーワード: True, False
print(5 < 10)   # True
print(15 < 10)  # False

実行結果

True
False

class / def / return キーワード

  • class: ユーザー定義クラスを定義する
  • def: ユーザー定義関数を定義する
  • return: 関数から呼び出し元へ値を返し、処理を終了する

コード例

# キーワード: class, def, return
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __str__(self):
        return '({},{})'.format(self.x, self.y)  # return で値を返す

p1 = Point(10, 20)
p2 = Point(5, 7)
print('Points are: ' + str(p1) + ' and ' + str(p2))

実行結果

Points are: (10,20) and (5,7)

if / elif / else キーワード

これらは条件分岐(意思決定)に使用されます。if の条件が真ならそのブロックを実行し、偽なら elif の条件を順に評価します。すべて偽の場合は else ブロックが実行されます。

コード例

# キーワード: if, elif, else
def if_elif_else(x):
    if x < 0:
        print('x is negative')
    elif x == 0:
        print('x is 0')
    else:
        print('x is positive')

if_elif_else(12)
if_elif_else(-9)
if_elif_else(0)

実行結果

x is positive
x is negative
x is 0

try / except / raise / finally キーワード

例外処理に使用されます。try ブロックで例外が発生する可能性のあるコードを記述し、except で捕捉・処理します。raise で意図的に例外を発生させ、finally ブロックは例外の有無にかかわらず必ず実行されます。

コード例

# キーワード: try, except, raise, finally
def reci(x):
    if x == 0:
        raise ZeroDivisionError('Cannot divide by zero')
    else:
        return 1 / x

def try_block_example(x):
    result = 'Unable to determine'
    try:
        result = reci(x)
    except ZeroDivisionError:
        print('Invalid number')
    finally:
        print(result)

try_block_example(15)
try_block_example(0)

実行結果

0.06666666666666667
Invalid number
Unable to determine

for / in / is / not キーワード

  • for: 反復処理(for ループ)を行う
  • in: 要素がコンテナ(リスト等)に含まれるか判定する、またはループで要素を取り出す
  • is: オブジェクトの同一性(メモリアドレスが同じか)を判定する
  • not: 条件式を否定する

コード例

# キーワード: for, in, is, not
animal_list = ['Tiger', 'Dog', 'Lion', 'Peacock', 'Snake']
for animal in animal_list:
    if animal is 'Peacock':
        print(animal + ' is a bird')
    elif animal is not 'Snake':
        print(animal + ' is mammal')

実行結果

Tiger is mammal
Dog is mammal
Lion is mammal
Peacock is a bird
注意: 文字列比較では is ではなく == を使用するのが推奨されます。is はオブジェクトの同一性を比較するため、インタープリタの実装によって結果が異なる場合があります。

from / import キーワード

  • import: モジュールを現在の名前空間にインポートする
  • from ... import: モジュールから特定の属性(関数、クラス等)のみをインポートする

コード例

# キーワード: from, import
from math import factorial
print(factorial(12))

実行結果

479001600

global キーワード

関数内でグローバル変数を変更する場合に使用します。宣言なしでグローバル変数を参照することは可能ですが、代入しようとするとローカル変数として扱われます。global を宣言することで、グローバル変数への書き込みが可能になります。

コード例

# キーワード: global
glob_var = 50

def read_global():
    print(glob_var)

def write_global1(x):
    global glob_var
    glob_var = x

def write_global2(x):
    glob_var = x  # ローカル変数として扱われる

read_global()      # 50
write_global1(100)
read_global()      # 100
write_global2(150)
read_global()      # 100(グローバル変数は変更されない)

実行結果

50
100
100

lambda キーワード

無名関数(ラムダ関数)を作成します。関数名を持たず、式として記述できる簡易的な関数です。return 文は不要で、式の評価結果が自動的に返されます。

コード例

# キーワード: lambda
square = lambda x: x ** 2
for item in range(5, 10):
    print(square(item))

実行結果

25
36
49
64
81

nonlocal キーワード

ネストした関数(内側の関数)で、外側の関数のローカル変数を参照・変更するために使用します。global と異なり、モジュールレベルではなく「外側の関数のスコープ」の変数を対象とします。

コード例

# キーワード: nonlocal
def outer():
    x = 50
    print('x from outer: ' + str(x))
    def inner():
        nonlocal x
        x = 100
        print('x from inner: ' + str(x))
    inner()
    print('x from outer: ' + str(x))

outer()

実行結果

x from outer: 50
x from inner: 100
x from outer: 100

pass キーワード

何もしない「ヌル文」です。構文上は文が必要だが、実装を後回しにしたい場合などにプレースホルダーとして使用します。

コード例

# キーワード: pass
def sample_function():
    pass  # 未実装

sample_function()

実行結果

(出力なし)

while / break / continue / and キーワード

  • while: 条件が真の間、繰り返し処理を行う
  • break: 現在のループを即座に抜ける
  • continue: 現在のイテレーションをスキップし、次のイテレーションへ進む
  • and: 論理積(両オペランドが真なら真)

コード例

# キーワード: while, break, continue, and
i = 0
while True:
    i += 1
    if i >= 5 and i <= 10:
        continue  # 5〜10 はスキップ
    elif i == 15:
        break     # 15 でループ終了
    print(i)

実行結果

1
2
3
4
11
12
13
14

with / as キーワード

  • with: コンテキストマネージャを用いて、リソースの確保と解放を自動的に行うブロックを定義する(ファイル操作等で必須)
  • as: インポート時の別名定義や、with 文でコンテキストマネージャの戻り値を変数にバインドする際に使用する

コード例

# キーワード: with, as
with open('sampleTextFile.txt', 'r') as my_file:
    print(my_file.read())

実行結果

Test File.
We can store different contents in this file
~!@#$%^&*()_+/*-+\][{}|:;"'<.>/,'"]

yield キーワード

ジェネレータ関数を定義する際に使用します。return と異なり、関数の実行を一時停止して値を呼び出し元に返し、次回呼び出し時に続きから再開します。メモリ効率の良いイテレータを作成できます。

コード例

# キーワード: yield
def square_generator(x, y):
    for i in range(x, y):
        yield i * i

my_gen = square_generator(5, 10)
for sq in my_gen:
    print(sq)

実行結果

25
36
49
64
81

del / or キーワード

  • del: オブジェクトへの参照を削除する(オブジェクト自体は参照カウントが0になればガベージコレクションされる)
  • or: 論理和(いずれかのオペランドが真なら真)

コード例

# キーワード: del, or
my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
index = []
for i in range(len(my_list)):
    if my_list[i] == 30 or my_list[i] == 60:
        index.append(i)
for item in index:
    del my_list[item]
print(my_list)

実行結果

[10, 20, 40, 50, 60, 80, 90, 100, 110]
注意: リストをイテレート中に要素を削除するとインデックスがずれるため、上記のように削除対象のインデックスを先に集めてから逆順で削除するか、リスト内包表記で新しいリストを作るのが安全です。

assert キーワード

デバッグ用のアサーション(検証)を行います。条件が真なら何もしませんが、偽の場合 AssertionError を発生させます。本番環境では python -O オプションで無効化できます。

コード例

# キーワード: assert
val = 10
assert val > 100

実行結果

Traceback (most recent call last):
  File "", line 3, in 
AssertionError

None キーワード

None は「値の不在」を表す特殊な定数です(他言語の nullnil に相当)。None オブジェクトはシングルトンであり、複数のインスタンスを作成することはできませんが、複数の変数に代入できます。戻り値のない関数は暗黙的に None を返します。

コード例

# キーワード: None
def test_function():
    print('Hello')

x = test_function()
print(x)

実行結果

Hello
None

※ この記事は Python 3.x を基準としています。キーワードの一覧は import keyword; print(keyword.kwlist) で確認できます。

  1. Pythonでクラスを定義する方法を解説!基本構文と書き方のポイント

    Pythonでは、ほぼすべてのコードがクラスを使って実装されています。プログラマーはクラスを利用することで、関連性の高いコードをひとつにまとめて管理できます。これは「class」というキーワードによって実現されており、クラスはオブジェクト指向プログラミングの構成要素を集約したものです。クラスとは何かクラスとは、オブジェクト(インスタンス)を生成するための設計図・テンプレートです。オブジェクトはメンバー変数(属性)を持ち、それに関連付けられた振る舞い(メソッド)を備えています。Pythonでは、classキーワードを使うことでクラスを作成します。基本的なクラスの定義方法まずは、関数やメソッドを一

  2. Pythonの予約キーワード(予約語)とは?一覧と確認方法をわかりやすく解説

    予約語(キーワード)とは予約語(reserved words)は「キーワード」とも呼ばれ、言語仕様の中であらかじめ意味と構文が定義された特別な単語のことです。条件分岐やループ処理といったプログラミング命令を記述する際には、必ずこれらのキーワードを使用します。重要なポイントとして、予約語は変数名や関数名など、他のプログラミング要素の識別子(identifier)として使用できません。例えば「def」や「import」という名前の変数を作成しようとすると、SyntaxError(構文エラー)が発生します。Python 3の予約キーワード一覧以下は、Python 3で定義されている予約キーワードの一