我正在阅读Python的基础知识,并在解释器中测试一些内置函数。我正在看的文档是在谈论Python 3 ......我正在使用Python 2.7.3。
>>> x = '32456'
>>> x
'32456'
>>> isalpha(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'isalpha' is not defined
我做了一些研究,似乎isalpha()
仅限于Python 3 ......即使在sin(3.3)
import math
那为什么我会看到错误?我必须导入一些其他模块才能使这些功能起作用吗?
答案 0 :(得分:2)
isalpha()
不是函数,而是str
类型的方法。如果必须,可以将其作为未绑定方法提取,并将其命名为函数:
>>> "hello".isalpha()
True
>>> "31337".isalpha()
False
>>> isalpha = str.isalpha
>>> isalpha("hello")
True
>>> isalpha("31337")
False
导入模块中的函数是该模块的成员。要将函数拉入主命名空间,请使用from
语句:
>>> import math
>>> math.sin(3.3)
-0.1577456941432482
>>> from math import cos
>>> cos(3.3)
-0.9874797699088649
现在为什么Python以这种方式工作? math
模块和logging
模块都有一个名为log()
的函数,但它们的功能完全不同。
>>> import math, logging
>>> help(math.log)
log(...)
log(x[, base])
Return the logarithm of x to the given base.
If the base not specified, returns the natural logarithm (base e) of x.
>>> help(logging.log)
log(level, msg, *args, **kwargs)
Log 'msg % args' with the integer severity 'level' on the root logger. If
the logger has no handlers, call basicConfig() to add a console handler
with a pre-defined format.
如果所有导入的符号按照from math import *
时的方式直接进入主命名空间,则程序将无法使用这两个模块的log()
函数。
答案 1 :(得分:1)
isalpha
是字符串的方法,而不是你想象的内置函数。
>>> '34r'.isalpha()
False
>>> '45'.isalpha()
False
>>> 'rt'.isalpha()
True
要使用sin
,您需要导入:from math import sin
答案 2 :(得分:0)
对于if (world.rank() != 0) {
while (!interrupt())
world.send(ROOT, ID, a, bufferSize);
// I prefer not to send finish/interrupt as another message
}
else {
while (/*there is any packet to be received*/)
world.recv(boost::mpi::any_source, ID, a, bufferSize);
}
,您必须sin(3.3)
,然后致电import math
。