import *
在Python中使用函数(大概来自importlib
)相当于什么?
我知道您可以使用导入一个模块mod = __import__(...)
,该模块将委派给当前配置的实现。您也可以做类似的事情
mod_spec = importlib.utl.spec_from_file_location(...)
mod = importlib.util.module_from_spec(mod_spec)
mod_spec.loader.exec_module(mod)
这样您就可以做一些疯狂的事情,例如通过在调用之前将它们插入模块中来将其注入模块exec_module
。
但是,我的问题仍然存在。如何import *
以函数形式工作?哪个函数决定根据模块的存在/内容从模块加载哪些名称__all__
?
没有的功能from whatever import *
。实际上,也不存在任何功能import whatever
!当你做
mod = __import__(...)
该__import__
功能仅负责部分工作。它为您提供了一个模块对象,但是您必须将该模块对象分别分配给变量。没有函数可以导入模块 并将其
分配给变量import whatever
。
在中from whatever import *
,有两个部分:
whatever
“准备模块对象”部分与中的几乎相同import whatever
,并且可以由相同的函数处理__import__
。两者之间有一个细微的差异,import *
它将加载软件包__all__
列表中所有尚未加载的子模块。__import__
如果您提供,将为您处理fromlist=['*']
:
module = __import__('whatever', fromlist=['*'])
分配名称的部分是发生较大差异的地方,同样,您必须自己处理。只要您处于全球范围内,这就非常简单:
if hasattr(module, '__all__'):
all_names = module.__all__
else:
all_names = [name for name in dir(module) if not name.startswith('_')]
globals().update({name: getattr(module, name) for name in all_names})
函数作用域不支持分配在运行时确定的变量。
在Java8中,新的包是Java。util。函数包含很多函数接口。该软件包的文档(http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)多次提到“函数形状”: 有几种基本函数形状,包括函数(从T到R的一元函数)、消费者(从T到void的一元函数)、谓词(从T到布尔的一元函数)和供应者(从T到
问题内容: 这段代码来自http://docs.python.org/2/tutorial/errors.html#predefined-clean-up- actions 我不明白的是print命令末尾的含义。 我还检查了文档http://docs.python.org/2/library/functions.html#print。 没有足够的理解,这是一个错误吗?(似乎不是。它来自官方教程)。
问题内容: 在Python中像在C中一样具有特殊含义吗?我在Python Cookbook中看到了这样的函数: 你能向我解释一下还是指出我在哪里可以找到答案(Google将解释为通配符,因此我找不到令人满意的答案)。 问题答案: 假设知道位置和关键字参数是什么,下面是一些示例: 范例1: 如你在上面的示例中所见,函数签名中仅包含参数。由于d和k不存在,因此将它们放入字典。该程序的输出为: 范例2:
问题内容: 在Swift函数签名中,参数after意味着什么?更具体地说,这是否意味着需要在传递参数之前将其解开,或者在传递参数时(自动)将其解开。这是一个示例: 在这种情况下,该函数是UIButton的目标,因此无论发生什么情况,它都会自动发生。 我的想法是,这意味着您可以期待一个未包装的对象,因此您无需尝试对其进行包装。 问题答案: 这不是完全重复的- 函数签名中 隐式展开的可选 变量 有一些
问题内容: 在此页面中,我找到了新的JavaScript函数类型: 我已经知道了什么,以及做的,但不知道什么是注定的。它是什么? 问题答案: 这是一个生成器功能。 生成器是可以退出并稍后重新输入的函数。它们的上下文(变量绑定)将在重新进入时保存。 调用生成器函数不会立即执行其主体。而是返回该函数的迭代器对象。调用迭代器的方法时,将执行生成器函数的主体,直到第一个表达式指定要从迭代器返回的值,或者使
第一章走马观花的带着大家复习了一下C++ Template的基本语法形式,也解释了包括 typename 在内,类/函数模板写法中各个语法元素的含义。形式是功能的外在体现,介绍它们也是为了让大家能理解到,模板之所以写成这种形式是有必要的,而不是语言的垃圾成分。 从下一章开始,我们便进入了更加复杂和丰富的世界:讨论模板的匹配规则。其中有令人望而生畏的特化与偏特化。但是,请相信我们在序言中所提到的:将