def func(bar):
my_dict = {
'query1': 'select * from table1',
'query2': 'select * from table2'
}
my_dict[bar]
func('query1')
我的问题是my_dict执行查询并保存它还是只根据条形变量执行查询
答案 0 :(得分:1)
在这种特定情况下,根本不执行任何查询。它只是str
个对象,这意味着它们实际上什么都不做。
让我们尝试详细介绍其他2个案例。假设您有一个函数execute_query
,它执行一个以参数:
def func(query):
my_dict = {
'query1': execute_query('select * from table1'),
'query2': execute_query('select * from table2'),
}
return my_dict[query]
func('query1')
在这种情况下,两个查询都将被执行,因为Python解释器将分析字典组合。另一方面,如果你有一个引用这个函数,它就不会调用该函数。例如:
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')
答案 1 :(得分:0)
这将在内存中创建包含两个元素的字典,找到与键bar
关联的值,并在竞争函数时销毁整个事物。