2012-06-11 22 views
1

我是Python初学者,刚开始使用软件包。在Python中调用函数时,你是否总是需要引用这个包?

当你在导入软件包后调用函数时,你是否总是需要引用它才能使其工作,或者这只是一个好习惯?

例如,我正在使用ipython中的pandas包。

import pandas 
import numpy as np 

df = pandas.read_csv('/Users/admin/Documents/data.csv') 

我是否总是要使用包名来调用函数?如果我不这样做,是否最好总是引用它?

+0

你也可以做'from大熊猫进口read_csv',然后你可以调用read_csv,而不必再次编写“熊猫”。 – demux

回答

6

如果您调整您的导入语句,那么您不需要包名称。

例如:

from pandas import read_csv 
import numpy as np 

df = read_csv('/Users/admin/Documents/data.csv') 

请参阅此相关的问题:Importing modules in Python - best practice

1

如果您有一个对象的本地引用,则可以使用该引用。如果你不这样做,那么你必须首先引用该模块,然后访问它的对象。

2

不,你不必;您可以使用from [package] import [symbol]表单,该表单将[symbol]导入到本地名称空间中。这就是说,除非你的应用程序是面向对象的(而不是以模块为中心的),否则它通常会变得非常危险(意外地在本地重复使用导入的名称)并且混淆了(很难弄清楚什么是从哪里来的,它打算这样做),当你不使用包名时。

0

如果您改变import语句

from pandas import * 

然后你可以直接引用的函数:

df = read_csv('/Users/admin/Documents/data.csv') 

这将带来一切从导入包到当前的命名空间。您还可以分段指定应导入的内容。正如在下面的评论中所讨论的那样,这两种方法都有优点和缺点。

在我看来,在当前的情况下,使用哪种方法都不会造成混淆。 :)

+3

不要这样做。这是非常糟糕的做法。 – deadly

+1

要详细说明,使用'from package import symbol'时,导入所需的符号是一个好主意,以避免将某些东西拖入您不想要的名称空间中。 –

+0

@deadly为什么'import *'不好的做法?覆盖'namespaces'? – mikebmassey

1

python中的导入语句有几种不同的形式。你可以这样做,只导入read_csv功能:

from pandas import read_csv 

df = read_csv('/path/to/file') 

或这对大熊猫模块中导入的一切,让你不必与pandas.前缀是:

from pandas import * 

df = read_csv('/path/to/file') 

这种方法虽然通常不鼓励,因为它很难看到函数/类/变量来自哪里。

看到http://docs.python.org/tutorial/modules.html更多信息

相关问题