あなたが参照している本は明らかにの意味を大幅に簡略化しようとしていNone
ます。Python変数には初期の空の状態はありません– Python変数は、定義されたときに(のみ)バインドされます。値を指定せずにPython変数を作成することはできません。
>>> print(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
>>> def test(x):
... print(x)
...
>>> test()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: test() takes exactly 1 argument (0 given)
>>> def test():
... print(x)
...
>>> test()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in test
NameError: global name 'x' is not defined
ただし、変数が定義されているかどうかによって、関数の意味を変えたい場合があります。次のデフォルト値で引数を作成できますNone
。
>>> def test(x=None):
... if x is None:
... print('no x here')
... else:
... print(x)
...
>>> test()
no x here
>>> test('x!')
x!
この場合、この値が特別なNone
値であることは、それほど重要ではありません。私は任意のデフォルト値を使用できました:
>>> def test(x=-1):
... if x == -1:
... print('no x here')
... else:
... print(x)
...
>>> test()
no x here
>>> test('x!')
x!
…しかし、None
周りにあることには2つの利点があります。
-1
意味がはっきりしないような特別な値を選ぶ必要はありません。
- 実際には、関数は
-1
通常の入力として処理する必要があります。
>>> test(-1)
no x here
おっとっと!
したがって、この本はほとんどリセットという単語の使用において少し誤解を招きやすい– None
名前への割り当ては、その値が使用されていないか、関数がデフォルトの方法で動作する必要があるが値をリセットする必要があることをプログラマに知らせるシグナルである元の未定義の状態にするには、del
キーワードを使用する必要があります。
>>> x = 3
>>> x
3
>>> del x
>>> x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
None
変数のデフォルトの空の状態ではありません。