【问题标题】:Why is "import" a statement but "reload" a function?为什么“import”是一个语句,但“reload”是一个函数?
【发布时间】:2016-08-18 22:03:32
【问题描述】:

我知道如何使用这两种方法,但我很好奇为什么决定将一个作为语句而另一个作为函数。

【问题讨论】:

  • 从来没有想过。
  • 因为import 语句受益于像from __ import __ as __ 这样的替代语法,而reload 只需要模块对象来重新使用它的加载器。
  • import 用于导入模块,reload() 也可以加载模块的某些部分。
  • @cricket_007 如果它是一个声明,那么它就像reload(random) #module object 一样容易写成reload random #name
  • 我可能会检查何时添加了 reload 函数。由于它是如此常见的名称,我认为如果它突然变成一个关键字,它会破坏很多现有的代码。

标签: python


【解决方案1】:

首先你可以使用函数从importlib's documentation导入:

__import__() 函数
import 语句是这个函数的语法糖。

例如,这两个语句是等价的:

from random import randint as random_int

random_int = __import__("random").randint

然而,import 语句极大地受益于替代语法,而 reload 并没有任何替代含义。

如果 reload 是自己的声明,我也可以想象很多初学者会犯这个错误:

from random import *
reload random #does not affect the current namespace!

由于reload 函数需要一个模块(from _ import * 没有预测),编码人员可能想知道为什么不重新加载导入的名称。与this answer相关

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多