関数内にタプルを宣言するか、グローバルに宣言する必要がありますか?内部にある場合は、すべての関数呼び出しで再作成されますか?それ以外の場合は、関数が呼び出されるたびに作成されますので、それが一定の値のタプルがある場合関数の内部でタプルを宣言する
def isBracket(s):
t = ('a','b','c','d')
return s in t
関数内にタプルを宣言するか、グローバルに宣言する必要がありますか?内部にある場合は、すべての関数呼び出しで再作成されますか?それ以外の場合は、関数が呼び出されるたびに作成されますので、それが一定の値のタプルがある場合関数の内部でタプルを宣言する
def isBracket(s):
t = ('a','b','c','d')
return s in t
は、関数の外に置くと間違って何もありません。
この定数のメンタルスコープを使用するコードに近づけておくために、関数定義のすぐ上に配置します。
t = ('a','b','c','d')
def isBracket(s):
return s in t
dis
モジュールを使用して、機能のバイトコードを逆アセンブルできます。
>>> import dis
>>> def isBracket(s):
... t = ('a','b','c','d')
... return s in t
...
>>> dis.dis(isBracket)
2 0 LOAD_CONST 5 (('a', 'b', 'c', 'd'))
3 STORE_FAST 1 (t)
3 6 LOAD_FAST 0 (s)
9 LOAD_FAST 1 (t)
12 COMPARE_OP 6 (in)
15 RETURN_VALUE
>>> t = ('a','b','c','d')
>>> def isBracket(s):
... return s in t
...
>>> dis.dis(isBracket)
2 0 LOAD_FAST 0 (s)
3 LOAD_GLOBAL 0 (t)
6 COMPARE_OP 6 (in)
9 RETURN_VALUE
あなたは番目のバージョンの改善を見ることができます:あなたは違いが表示されますtuple
がロードされ、すべてのコールを保存する必要はありません。
はいそれはすべての関数呼び出しで再作成されます – dnit13