登录

python - 一py文件中的中关于import的疑问?

描述问题

地址见: autojump-中的import (第86-90行)

摘录部分如下(line: 86-90)

import copy as _copy
import os as _os
import re as _re
import sys as _sys
import textwrap as _textwrap

from gettext import gettext as _

为什么要将系统包重命名那样,不是多此一举么?

我的理解, 作为Python开发者,一般来说:

  1. Python官方包也不算多

  2. 浸淫久了,自然耳濡目染耳熟能详,一般不会去重名(虽然理论上会)

  3. 用Python久了,导入哪个官方包,脑袋就会如同肌肉记忆一样

上下文环境

  1. Linux

  2. autojump

# Python
高洛峰高洛峰2139 天前621 次浏览

全部回复(2) 我要回复

  • 天蓬老师

    天蓬老师2017-04-18 09:35:31

    这里有答案:

    Why are modules imported as _<name> in another module?

    举个简单的例子,比如说有模块 a, b,其中

    # a.py
    import os as _os
    # import os
    
    def cur_cwd():
        print _os.getcwd()
    

    另外,同目录下的模块 b.py 如下:

    from a import * 
    cur_cwd()
    # print _os.getcwd()
    

    b中不能使用 os,或者 _os 。如果在 a.py 中直接引入 os,那么 b.py 中就可以使用 os 了。

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:35:31

    • 一般来说确实有点多此一举,不过有可能会有用户自己定义的包、类,或者函数的名称与标准库的相同的情况,不过开发人员一般会避免这样。

    • 有一种可能是为了向引用这份代码的文件隐藏这份代码import的内容,例如有一份main.py import 了这个文件,就无法在main.py直接调用这些标准库的函数,例如copy.copy()就不能直接使用,或许有这样做必要性。

    回复
    0
  • 取消回复发送