2012-01-09 40 views
17

每当我尝试使用任何的Python的幂和对数模块的内置功能,我得到这样一个错误:Python的数学模块

NameError: name 'sqrt' is not defined 

我一直在使用math.sqrt(4)sqrt(4)sqrt(4.0)尝试,但他们都没有工作。例外情况是pow,它的工作原理如此。这真的很奇怪,我不确定有什么问题。

+3

如果函数不是内置的,你必须导入它包含在该模块。参见[Python库(http://docs.python.org/library/),以及内置的[列表-INS](http://docs.python.org/library/functions.html)。 – 2012-01-09 02:22:23

回答

44

pow内置于语言(的数学库不一部分)。问题是你没有导入数学。

试试这个:

import math 
math.sqrt(4) 
2

你需要说math.sqrt当您使用它。或者,做from math import sqrt

嗯,我刚刚看了你的问题更彻底....你是如何导入math?我只是想import math然后math.sqrt其完美。你在做什么像import math as m?如果是这样,那么你有m(或任何名字,你as后使用)前缀的功能。

pow正在工作,因为有两个版本:__builtin__中的始终可用版本和math中的另一个版本。

4

地址:

import math 

的开始。然后用:

math.sqrt(num) # or any other function you seem neccessary 
10

您也可以导入作为

from math import * 

然后你可以使用任何数学函数没有前缀的数学。例如

sqrt(4) 
0

从数学进口开方

使用的sqrt(4)工作得很好。只需使用“导入数学”时,只需使用math.sqrt(4)。