Python数学模块

23
无论我尝试使用Python的指数和对数模块中的任何内置函数,都会出现类似于这样的错误:
NameError: name 'sqrt' is not defined

我尝试使用math.sqrt(4)sqrt(4)sqrt(4.0),但它们都不能正常工作。唯一能正常工作的是pow函数。这真的很奇怪,我不知道出了什么问题。


3
如果函数不是内置的,你需要导入所在的模块。请参阅Python库内置函数列表 - President James K. Polk
我在试图想象一种情况,即你希望 math 在启动时不被自动导入的场景下。Python:是否有一个可以放置所有模块默认导入的地方? - Brent Bradburn
7个回答

57

pow 是语言内置的函数,不需要使用数学库导入。问题在于你没有导入 math 库。

尝试这样做:

import math
math.sqrt(4)

18

你也可以导入为

from math import *

那么你可以在不加math前缀的情况下使用任何数学函数,例如:

sqrt(4)

但请注意,Python代码风格指南中提到:“应避免使用通配符导入(from <module> import *),因为这会使命名空间中存在哪些名称变得不清晰,既让读者困惑,也让许多自动化工具感到困惑。”。 - Matthias

5

新增:

import math

一开始,然后使用:

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

2
当你使用它时,需要说math.sqrt。或者,做from math import sqrt
嗯,我仔细阅读了你的问题... 你是如何导入math的?我刚刚尝试了import math然后math.sqrt,这很完美。你是在做像import math as m这样的事情吗?如果是这样,那么你必须用m(或者在as之后使用的任何名称)前缀函数。 pow可以工作,因为有两个版本:一个始终可用于__builtin__,另一个版本在math中。

1
import math #imports math module

import math as m
print(m.sqrt(25))

from math import sqrt #imports a method from math module
print(sqrt(25))

from math import sqrt as s
print(s(25))

from math import *
print(sqrt(25))

0
import math as m
a=int(input("Enter the no"))
print(m.sqrt(a))

from math import sqrt
print(sqrt(25))

from math import sqrt as s
print(s(25))

from math import *
print(sqrt(25))

一切正常。


2
不要直接放置代码,提供解释。请查看此链接以更好地回答:https://stackoverflow.com/help/how-to-answer - Sumanth Shastry

0

在程序中:

from math import sqrt

使用sqrt(4)非常完美。只有当你使用"import math"时才需要使用math.sqrt(4)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接