了解python dict内存分配

时间:2016-08-19 21:46:54

标签: python

def func(bar):

    my_dict = {  
        'query1': 'select * from table1',  
        'query2': 'select * from table2'  
    }
    my_dict[bar]

func('query1')    

我的问题是my_dict执行查询并保存它还是只根据条形变量执行查询

2 个答案:

答案 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关联的值,并在竞争函数时销毁整个事物。