def some_function():
some_dict = {'random': 'values'}
a = some_dict['random']
return a
Run Code Online (Sandbox Code Playgroud)
什么是some_dict在内存中创建的字典?(第一次调用函数?)
字典何时被some_dict销毁/取消分配?(当函数返回时?)
如果是这样,这是否意味着每次调用函数时都会创建字典对象?
在学习/处理python时我应该担心这些事吗?
我在哪里可以了解某种语言的详细信息?我尝试查看文档但找不到我要找的东西.
提前感谢您,如果您能回答上述所有4个问题,我们将不胜感激!
The*_*ion 14
some_dict每次调用函数时,都会在内存中创建字典.some_function().例如,考虑caller()调用函数的函数callee(some_function()在您的问题中),如
def caller():
callee()
Run Code Online (Sandbox Code Playgroud)
从您的使用案例中,我们想callee()多次调用,我们需要重用相同的字典callee().让我们来看看正常的使用案例.
1.生成字典callee().这是您问题中的示例.
def caller():
for loop:
callee()
def callee(dictionary):
generate dictionary
do something with dictionary
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每次callee()调用时,都必须生成一个新的字典.这是因为只要callee()返回,它的所有局部变量都会被释放.因此,您不能在不同的callee()s 之间"重用"相同的字典.
2.字典生成caller()并作为参数传递给callee().
def caller():
generate dictionary
for loop:
callee(dictionary)
def callee(dictionary):
do something with dictionary
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将生成字典caller(),然后将其传递给每个callee()函数.因此,每次调用时callee(),都不需要重新生成字典.
字典通过引用传递,因此每次调用时都不会传递大量数据结构callee().我不打算深入讨论这个问题(你可以在这里找到一个很好的解释),但实质上,将字典作为参数传递的成本可以忽略不计callee().
| 归档时间: |
|
| 查看次数: |
6678 次 |
| 最近记录: |