def func(bar):
my_dict = {
'query1': 'select * from table1',
'query2': 'select * from table2'
}
my_dict[bar]
func('query1')
私の質問はmy_dictは、両方のクエリを実行し、それを保存したり、それだけでメモリ内の2つの要素で辞書を作成する変数理解Pythonの辞書のメモリ割り当て
def func(bar):
my_dict = {
'query1': 'select * from table1',
'query2': 'select * from table2'
}
my_dict[bar]
func('query1')
私の質問はmy_dictは、両方のクエリを実行し、それを保存したり、それだけでメモリ内の2つの要素で辞書を作成する変数理解Pythonの辞書のメモリ割り当て
この場合、クエリはまったく実行されません。彼らが実際に何もしないことを意味するのはstr
のオブジェクトだけです。
他の2つのケースを詳しく見てみましょう。あなたは、パラメータとして与えられたクエリを実行する機能execute_query
持つと仮定:Pythonインタプリタが辞書組成を分析するので、この場合は
def func(query):
my_dict = {
'query1': execute_query('select * from table1'),
'query2': execute_query('select * from table2'),
}
return my_dict[query]
func('query1')
を、両方のクエリが実行されます。一方、この関数に対しての参照がある場合、その関数は呼び出されません。例:
def do_query1():
return execute_query('select * from table1')
def do_query2():
return execute_query('select * from table2')
def func(query):
my_dict = {
'query1': do_query1,
'query2': do_query2,
}
return my_dict[query]() # <-- appropriate function will be call here
func('query1')
「実行済み」とはどういう意味ですか?あなたのコードでは、起こりうる唯一のことは、 'bar'が同じ辞書のキーの1つであれば、' my_dict'の値を参照することができるということです。 – nbro