python - 一py文件中的中关于import的疑问?
高洛峰
高洛峰 2017-04-18 09:33:31
0
2
974

描述问题

地址见: 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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(2)
Peter_Zhu

Voici les réponses :

Pourquoi les modules sont-ils importés en tant que _<name> dans un autre module ?

Pour donner un exemple simple, disons qu'il y a des modules a et b, où

# a.py
import os as _os
# import os

def cur_cwd():
    print _os.getcwd()

De plus, le module b.py dans le même répertoire est le suivant :

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

Vous ne pouvez pas utiliser os ou _os dans b. Si os est introduit directement dans a.py, alors os peut être utilisé dans b.py.

伊谢尔伦
  • D'une manière générale, c'est effectivement un peu inutile, mais il peut y avoir des cas où les noms des packages, classes ou fonctions définis par l'utilisateur sont les mêmes que ceux de la bibliothèque standard, mais les développeurs évitent généralement cela.

  • Une possibilité est de masquer le contenu de cette importation de code des fichiers qui font référence à ce code. Par exemple, si un main.py importe ce fichier, ces fonctions de bibliothèque standard ne peuvent pas être appelées directement dans main.py. par exemple, copy.copy() ne peut pas être utilisé directement et cela peut être nécessaire.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal