2016-01-22 56 views
-1

Flask的顶级__init__.py,以下做:为什么导入整个模块然后重命名它的一个功能?

from . import json 
jsonify = json.jsonify 
  1. 为什么不import json
  2. 为什么要重命名json.jsonify?为什么不(i)import json然后在需要时拨打json.jsonify()或(ii)from json import jsonify,然后在需要时拨打jsonify()

我知道有两种意见,但他们很少赐教:

# We're not exposing the actual json module but a convenient wrapper around 
# it. 
from . import json 

# This was the only thing that flask used to export at one point and it had 
# a more generic name. 
jsonify = json.jsonify 
+3

似乎应该写成'from .json import jsonify' ... – mgilson

回答

2
  1. 为什么不import json

,因为这会从标准库导入json模块,作者想要导入自己的json模块。

  1. 为什么要重命名json.jsonify

为了使它更容易写和读。想象一下,你正在使用flaskflask.jsonify()写入速度更快,而且比flask.json.jsonify()更具可读性(或者,它更容易导入,并且不会让你感觉自己从库的深层内容中导入了某些东西)。

为什么不得(i)import json然后调用json.jsonify()在需要的地方

记住这个文件指定出口。您必须将其称为flask.json.jsonify()

或(ii)from json import jsonify,然后在需要时拨打jsonify()

是,第二行可能已经写成

from .json import jsonify 

(如mgilson正确地指出)。我想,这是个人风格的问题。

+0

呃...它有点不同。 '.json import jsonify'不会使'flask.json'可用。从评论中看,他们似乎不想提供这些信息,但有时候评论会说谎。 。 。 – mgilson

+0

@mgilson:是的,这就是为什么我说第二行可能有不同的写法。我对引用的评论的理解是,通过“实际的json模块”,他们意味着标准库。 – fjarri

+0

啊 - 是的,这就解释了为什么他们按照他们的方式来写,而不是从'.json import jsonify' – mgilson

相关问题