0

I want to be able to access the strptime function directly (no datetime.datetime.strptime() or datetime.strptime().)

I can do this:

from datetime import datetime
strptime = datetime.strptime

But is there a way to accomplish the same thing on the import line?

Also, can you do multiple items on one line?

Here's pseudocode of what I really want to do:

from datetime.datetime import strftime, strptime

Datetime is just the example case, a similar thing would be useful for importing class methods in other libraries.

4

2 回答 2

1

这些是datetime类型的方法,不能直接导入。您不能直接导入模块顶级命名空间下的任何内容。从文档中

from表单不绑定模块名称:它遍历标识符列表,在步骤(1)中找到的模块中查找它们中的每一个[即,正在导入的模块],并将本地名称空间中的名称绑定到这样找到的对象。

也就是说,导入的名称必须是模块命名空间中的名称。它们的嵌套不能比这更深了。因此,您不能像您显然想要做的那样,只导入模块中类的某些方法。

于 2013-06-02T22:22:58.223 回答
0

“我可以在导入行执行此操作吗?”问题的答案 没有。

请参阅Python 2 中 import 语句的定义。该语句从模块中导入东西。模块内部有一个datetimedatetime。你能做的最好的就是

from datetime import datetime

您已经很好地理解了它的作用,因为您在问题中完美地使用了它。看起来你想做

from datetime import datetime.strptime

但这是一个语法错误,因为datetime.strptime它不是标识符。

你不能说

from datetime.datetime import strptime

要么是因为 Python 会寻找一个名为datetime.datetime.

import 语句不能按您希望的方式工作。

请注意,datetime模块的作者选择创建strptime一个类方法(使用@classmethod)而不是一个函数。因此,如果您想在strptime没有类限定符的情况下使用,则必须执行您所做的操作,即分配给名为strptime.

于 2013-06-02T22:22:47.593 回答