pythonの予約語

pythonでは、適当な変数名を付けることができます。ところが、特別な機能を持つ名前は予約語といい、変数名に使うことができません。予約語の一覧は次の方法で確認することができます。

import keyword
print('\n'.join(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

ところが、このほかにも実質的に使わない方が良いものがあります。例えばsumという名前です。何かの合計を代入するためにうっかり使ってしまいそうです。

l=[1,2,3,4,5]
sum(l)
sum=15
sum(l)
TypeError                                 Traceback (most recent call last)
<ipython-input-35-f6898f877ccb> in <module>
      2 sum(l)
      3 sum = 15
----> 4 sum(l)

TypeError: 'int' object is not callable

3行目でsumに数字を代入するところで、関数から数値を示す変数に上書きされてしまいます。このため、4行目でsum本来の機能を果たすことができなくなっています。このような事態になった時には、pythonを一度終わらせて再起動すればもとにもとりますが、面倒くさいときには、次のコマンドを入寮します。

%reset
Once deleted, variables cannot be recovered. Proceed (y/[n])? 

このように聞いてくるので’y’を入力すると、sumは元の関数に戻ります。

sumのように使わない方が良い名前は次の通りです。

print(', '.join(keyword.__builtins__))

__name__, __doc__, __package__, __loader__, __spec__, __build_class__, __import__, abs, all, any, ascii, bin, breakpoint, callable, chr, compile, delattr, dir, divmod, eval, exec, format, getattr, globals, hasattr, hash, hex, id, input, isinstance, issubclass, iter, len, locals, max, min, next, oct, ord, pow, print, repr, round, setattr, sorted, sum, vars, None, Ellipsis, NotImplemented, False, True, bool, memoryview, bytearray, bytes, classmethod, complex, dict, enumerate, filter, float, frozenset, property, int, list, map, object, range, reversed, set, slice, staticmethod, str, super, tuple, type, zip, __debug__, BaseException, Exception, TypeError, StopAsyncIteration, StopIteration, GeneratorExit, SystemExit, KeyboardInterrupt, ImportError, ModuleNotFoundError, OSError, EnvironmentError, IOError, WindowsError, EOFError, RuntimeError, RecursionError, NotImplementedError, NameError, UnboundLocalError, AttributeError, SyntaxError, IndentationError, TabError, LookupError, IndexError, KeyError, ValueError, UnicodeError, UnicodeEncodeError, UnicodeDecodeError, UnicodeTranslateError, AssertionError, ArithmeticError, FloatingPointError, OverflowError, ZeroDivisionError, SystemError, ReferenceError, MemoryError, BufferError, Warning, UserWarning, DeprecationWarning, PendingDeprecationWarning, SyntaxWarning, RuntimeWarning, FutureWarning, ImportWarning, UnicodeWarning, BytesWarning, ResourceWarning, ConnectionError, BlockingIOError, BrokenPipeError, ChildProcessError, ConnectionAbortedError, ConnectionRefusedError, ConnectionResetError, FileExistsError, FileNotFoundError, IsADirectoryError, NotADirectoryError, InterruptedError, PermissionError, ProcessLookupError, TimeoutError, open, copyright, credits, license, help, __IPYTHON__, display, get_ipython

この記事を書いた人

コメント

コメントする

目次
閉じる