zer*_*uno 3 python function python-import python-3.x
从文档:
导入的外卡形式
from module import *- 只允许在模块级别使用.试图在类或函数定义中使用它会引发一个问题SyntaxError.
为什么?避免在函数中使用它有什么意义?有什么问题?
CPython实现对局部变量使用了一种特殊的优化:它们不是在运行时从字典中动态查找的,就像全局变量一样,而是在编译时静态分配索引,并在运行时通过索引查找,这是一个快得多.这要求Python编译器能够在编译时识别所有本地名称,如果在函数级别进行通配符导入,这是不可能的.
在Python 2中,仍然存在一种后备机制,在无法始终静态确定所有本地名称的情况下调用该机制.这种机制使用动态字典表示局部变量,大大减慢了执行速度.
例如这段代码
def f():
exec "x = 2"
print x
Run Code Online (Sandbox Code Playgroud)
在Python 2中按预期工作,而
def f():
exec("x = 2")
print(x)
Run Code Online (Sandbox Code Playgroud)
NameError在Python 3 中得到一个结果.
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |