In diesem speziellen Fall wird überhaupt keine Abfrage ausgeführt. Es ist nur str
Objekte, was bedeutet, dass sie tatsächlich nichts tun.
Lassen Sie uns versuchen, 2 andere Fälle zu beschreiben. Angenommen, Sie haben eine Funktion execute_query
, die eine Abfrage als Parameter angegeben ausführen:
def func(query):
my_dict = {
'query1': execute_query('select * from table1'),
'query2': execute_query('select * from table2'),
}
return my_dict[query]
func('query1')
In diesem Fall beide Abfrage ausgeführt werden, weil Python-Interpreter wird die Wörterbuch Zusammensetzung analysieren. Auf der anderen Seite, wenn Sie eine Referenz zu dieser Funktion haben, wird es die Funktion nicht aufrufen. Beispiel:
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')
Was meinen Sie mit "ausgeführt"? Mit Ihrem Code ist das einzige, was passieren könnte, dass Sie auf einen Wert von "my_dict" verweisen können, wenn "bar" einer der Schlüssel des gleichen Wörterbuchs ist ... – nbro