在Python中调用函数时,您是否始终必须引用该包?

时间:2012-06-11 20:10:04

标签: python packages

我是Python初学者,刚刚开始使用套餐。

当您在导入包之后调用函数时,是否始终必须引用它才能使其正常工作,或者这只是一种好的做法?

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

import pandas
import numpy as np

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

我是否总是必须使用包名来调用该函数?如果我不这样做,最好总是参考它吗?

5 个答案:

答案 0 :(得分:6)

如果您调整import语句,则不需要包名称。

例如:

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]表单,它将[符号]导入到本地名称空间。也就是说,除非您的应用程序是面向对象的(而不是以模块为中心),否则通常不会,它变得既危险(意外地在本地重用导入的名称)又令人困惑(很难弄清楚某些东西来自哪里以及什么当你不使用包名时,它就是这样做的。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

python中的import语句有几种不同的形式。您可以这样做只导入read_csv函数:

from pandas import read_csv

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

或者这样导入pandas模块中的所有内容,这样就不必在pandas.前面添加前缀:

from pandas import *

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

但通常不鼓励这种方法,因为它很难看出函数/类/变量的来源。

请参阅http://docs.python.org/tutorial/modules.html了解详情

答案 4 :(得分:0)

如果您将导入语句更改为

from pandas import *

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

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

这会将导入的包中的所有内容都带到当前的命名空间中。您还可以指定要导入的分段内容。正如下面的评论中所讨论的,两种方法都有利有弊。

在我看来,使用您当前背景下最不容易混淆的方法。 :)