Python 当整个路径为';你没提到吗?

Python 当整个路径为';你没提到吗?,python,pandas,Python,Pandas,我对Python非常陌生,我正试图了解导入是如何工作的。当涉及到read\u csv. 在调用read_csv函数时,我们通常使用以下行 import pandas as pd ... ... file=pd.read_csv(Filename) read_csv模块位于pandas.io.parsers模块中。为什么我们不在访问read_csv之前提及整个路径?我的意思是,为什么不: import pandas.io.parsers as pd ... ... file=pd.read_cs

我对Python非常陌生,我正试图了解导入是如何工作的。当涉及到
read\u csv.

在调用read_csv函数时,我们通常使用以下行

import pandas as pd
...
...
file=pd.read_csv(Filename)
read_csv模块位于pandas.io.parsers模块中。为什么我们不在访问read_csv之前提及整个路径?我的意思是,为什么不:

import pandas.io.parsers as pd
...
...
file=pd.read_csv(Filename)
如果我们可以访问一个函数而不给出整个路径,为什么要使用

import matplotlib.pyplot as plt
...
...
plt.show()
当我们可以写作的时候

import matplotlib as plt
...
...
plt.show()

我想问的是,Python代码中使用的导入是否只是约定(是否可以将.pyplot附加到
matplotlib.pyplot
上?)或者是否有特定的规则?当与同一名称的其他方法发生冲突时,我们是否使用整个位置?那么包中的模块是否包含非唯一的函数名?

这取决于包是否选择向包命名空间公开一些“更深层”的函数。这是通过一个名为
\uuuu init\uuuu.py
的文件完成的。这提供了灵活性,因为它允许开发人员将源代码块组织在多个文件夹中,但用户可以轻松地将包作为一个整体导入

这也意味着导入的“规则”——无论是导入
matplotlib
还是
matplotlib.pyplot
——取决于包的维护者。
matplotlib
matplotlib.pyplot
都被视为包,因为它们都有一个
\u init.py
文件与源代码中各自的文件夹相关联。通过编写
import matplotlib
import matplotlib.pyplot
导入的具体内容取决于这些
\u init\u.py
文件的内容

例如,您可以在中看到,在源根目录下有一个名为
\uuuu init\uuuu.py
的填充名称,这意味着每当您在代码中导入熊猫时,它都会导入一些名称。它包括在第150行左右导入
read_csv

from pandas.io.api import (
# ...
read_csv, 
# ...
)

这取决于包是否选择向包命名空间公开一些“更深层”的函数。这是通过一个名为
\uuuu init\uuuu.py
的文件完成的。这提供了灵活性,因为它允许开发人员将源代码块组织在多个文件夹中,但用户可以轻松地将包作为一个整体导入

这也意味着导入的“规则”——无论是导入
matplotlib
还是
matplotlib.pyplot
——取决于包的维护者。
matplotlib
matplotlib.pyplot
都被视为包,因为它们都有一个
\u init.py
文件与源代码中各自的文件夹相关联。通过编写
import matplotlib
import matplotlib.pyplot
导入的具体内容取决于这些
\u init\u.py
文件的内容

例如,您可以在中看到,在源根目录下有一个名为
\uuuu init\uuuu.py
的填充名称,这意味着每当您在代码中导入熊猫时,它都会导入一些名称。它包括在第150行左右导入
read_csv

from pandas.io.api import (
# ...
read_csv, 
# ...
)

抱歉,我有几个疑问。(1)“它允许开发人员将源代码块组织在多个文件夹中…”您的意思是说read_csv的代码存在于init.py中,而api模块的其他源代码则位于不同的位置?(2) 只要存在init.py文件,任何“文件夹”都可以标记为包吗?(3) init.py文件可以用于导入任何内容吗?类、子包、函数。。?(4) Noob问题,在非技术术语中,什么是名称空间?1)相反,只有读取csv的导入存在于pandas
\uuu init\uuuuuuuuuuupy
,负责解析csv文件的实际代码位于
pandas.io.parsers
,而pandas.io.api又导入了读取csv。。。在github上浏览源代码,亲自查看。2) 是(具有
\uuuu init\uuuu.py
是包的定义)。3) 对。4) 它是与给定“名称”相关联的所有内容,例如pandas名称空间包含您可以使用
pd…访问的所有内容
在您通过编写
import pandas as pd
导入名称空间之后。抱歉,我有几个疑问。(1)“它允许开发人员将源代码的块组织在多个文件夹中…”您的意思是说read_csv的代码存在于init.py中,而api模块的其他源代码则位于不同的位置?(2) 只要存在init.py文件,任何“文件夹”都可以标记为包吗?(3) init.py文件可以用于导入任何内容吗?类、子包、函数。。?(4) Noob问题,在非技术术语中,什么是名称空间?1)相反,只有读取csv的导入存在于pandas
\uuu init\uuuuuuuuuuupy
,负责解析csv文件的实际代码位于
pandas.io.parsers
,而pandas.io.api又导入了读取csv。。。在github上浏览源代码,亲自查看。2) 是(具有
\uuuu init\uuuu.py
是包的定义)。3) 对。4) 它是与给定“名称”相关联的所有内容,例如pandas名称空间包含您可以使用
pd…访问的所有内容通过写入
导入名称空间后,将其导入为pd