表达式math.sqrt()是否必要?

时间:2013-08-22 16:00:53

标签: python math

我今天刚开始玩python;我完全不知道自己在做什么。下面是我编写的一个用于显示素数的小程序,它似乎运行良好而且非常快:

import math
N = input('List primes up to: ')
N = int(N)
for i in range(3,N,2):
    for d in range(2,int(math.sqrt(i))):
        if i%d==0:
            break
else :
    print(str(i))

sqrt()功能不起作用,除非我同时保留math.sqrt()部分和import math部分。此外,当我在shell中输入内容时,只有在我使用math.sqrt()而不是sqrt()时才有效。

所以......对于简单的事情来说,这是一个长篇大论的问题:我可以使用某种#include <math.h> - esque行,对于shell和程序文件(尽管每行可能有不同的行)所以我可以每次我想使用数学模块中的函数时,请避免输入“math.”部分? (这是一个模块,对吗?)(因为我发誓我已经阅读过某个地方使用sqrt()代替math.sqrt()的程序。但也许不是。)

2 个答案:

答案 0 :(得分:4)

好吧,你可以像这样直接导入一个函数:

from math import sqrt
# elsewhere
sqrt(n)

您甚至可以从模块中导入所有内容:

from math import *

这样您就不必使用模块前缀并说出math.sqrt。但是,建议您这样做,以避免可能的名称冲突,以防两个模块定义具有相同名称的函数(在实践中经常发生的事情)。简而言之,这是首选方式:

import math
# elsewhere
math.sqrt(n)

答案 1 :(得分:1)

尝试:

from math import sqrt

或者,如果您想要math模块中的所有名称:

from math import *

使用这两种方法中的任何一种,现在只允许sqrt(n)代替math.sqrt(n)

但请注意,第二种方法将导入math模块中的每个名称。通常最好只导入您需要的内容(如第一个示例中所示)。