Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我要把代码放在_uinit__uu.py文件中?_Python_Module - Fatal编程技术网

Python 为什么我要把代码放在_uinit__uu.py文件中?

Python 为什么我要把代码放在_uinit__uu.py文件中?,python,module,Python,Module,我想知道我应该在\uuuu init\uuuuuy.py文件中输入什么类型的代码,以及与此相关的最佳实践是什么。或者,这通常是一种不好的做法吗 对于任何解释这一点的已知文档的引用也非常感谢。该领域的最佳实践之一是从库中导入所有需要的类(例如,请查看)。因此,您的库的用户可以执行以下操作: from coollibrary import OneClass, SecondClass 而不是 from coollibrary.package import OneClass from coollibr

我想知道我应该在
\uuuu init\uuuuuy.py
文件中输入什么类型的代码,以及与此相关的最佳实践是什么。或者,这通常是一种不好的做法吗


对于任何解释这一点的已知文档的引用也非常感谢。

该领域的最佳实践之一是从库中导入所有需要的类(例如,请查看)。因此,您的库的用户可以执行以下操作:

from coollibrary import OneClass, SecondClass
而不是

from coollibrary.package import OneClass
from coollibrary.anotherpackage import SecondClass

此外,良好的实践包括在
\uuuu init\uuuuuuuuuuupy
版本常量库和框架通常在
\uuuuuuuuuuuuuuuuuuuuuuu.py
文件中使用初始化代码来整洁地隐藏内部结构,并为用户提供统一的界面

让我们举一个例子。表单模块中的各种函数和类根据其分类定义在不同的文件中

forms/
  __init__.py
  extras/
    ...
  fields.py
  forms.py
  widgets.py
  ...
现在,如果您要创建一个表单,您必须知道每个函数都是在哪个文件中定义的,并且您创建联系人表单的代码必须是这样的(这既不方便又难看)

相反,在Django中,您可以直接从表单名称空间引用各种小部件、表单、字段等

from django import forms

class CommentForm(forms.Form):
    name = forms.CharField()
    url = forms.URLField()
    comment = forms.CharField(widget=forms.Textarea)
from widgets import *
from fields import *
from forms import *
from models import *
这怎么可能?为了实现这一点,Django将以下语句添加到
forms/\uuuu init\uuuu.py
文件中,该文件将所有小部件、表单、字段等导入
forms
命名空间

from django import forms

class CommentForm(forms.Form):
    name = forms.CharField()
    url = forms.URLField()
    comment = forms.CharField(widget=forms.Textarea)
from widgets import *
from fields import *
from forms import *
from models import *
如您所见,这简化了创建表单的过程,因为现在您不必担心每个函数/类的定义位置,只需直接从
forms
名称空间使用所有这些函数/类即可。这只是一个示例,但您可以在其他框架和库中看到类似的示例

  • 为方便起见:其他用户不需要知道您的函数的确切位置

    your_package/
      __init__.py
      file1.py/
      file2.py/
        ...
      fileN.py
    
    # in __init__.py
    from file1 import *
    from file2 import *
    ...
    from fileN import *
    
    # in file1.py
    def add():
        pass
    
    然后其他人可以通过调用add()

    不知道file1,比如

    from your_package.file1 import add
    
  • 放些东西来初始化。例如,日志记录(应该放在顶层):


  • 你所说的版本常数的可能重复是什么意思?你能把这句话说清楚吗?
    import logging.config
    logging.config.dictConfig(Your_logging_config)