Python如何从函数名中删除父对象的名称

时间:2016-03-21 07:46:14

标签: python

我有一个带有我自己的函数的.py文件,我在几台机器上运行ipython。问题是在某些平台上我可以调用sin(),size(),plot()这样的函数而不需要父类名的前缀,而在其他平台上我需要编写完整路径:numpy.sin(),ndarray .size(),pyplot.plot()。 1)确定何时使用完整路径以及何时可以使用短格式的规则是什么? 2)我可以手动将函数设置为其简短形式吗?

3 个答案:

答案 0 :(得分:1)

看一下import语句的定义。有两种形式:

import math
math.sin(1)

第二种形式是:

from math import sin
sin(1)

请注意,由于模块也是对象,您还可以在第一种情况下将math.sin存储在局部变量中:

import math
sin = math.sin
sin(1)

答案 1 :(得分:1)

调用从其他模块导入的函数的方式取决于您的导入方式。

如果你这样做

import numpy

然后你像这样调用numpy模块的sin函数:

numpy.sin()

如果你厌倦了一直输入“numpy”,你可以这样做:

import numpy as np
np.sin()

可以

from numpy import sin, cos
sin()
cos()

但是这会使用导入的名称来填充您的命名空间。

你甚至可以做

from numpy import *

但是该格式非常不鼓励,因为它将所有 numpy名称转储到您的命名空间中。如果你使用多个模块进行这样的“星级”导入,那么如果有任何重复的名称,则后面的导入将破坏先前导入的名称。有关此主题的各种意见,请参阅Why is “import *” bad?

我的偏好是在我的代码中使用完整的模块名称,而不是经常在我的代码中提及,并使用短名称(如我的第二个例子中所示)来更频繁地使用。 from modulename import thing形式在短脚本中很方便,但在大型程序中它变得难以处理,特别是如果您从多个模块以这种方式导入事物。

请注意,您始终可以通过简单的赋值语句将函数分配给短名称

s = numpy.sin

这对于在函数内部进行局部引用非常有用,因为查找这样的引用比查找全局引用更快。

答案 2 :(得分:0)

基本上有管理https://docs.python.org/3/reference/import.html

中所述的import语句的规则

然而,在这种特定情况下,如果没有看到代码,我猜想使用from something import somethingelse导入将导入函数,以便它们在没有显式模块调用的情况下可用。

你也可以from something import *导入所有功能。