|
4.3.2. str 函数
str 将数据强制转型为字符串。每种数据类型都可以强制转型为字符串。
例 4.6. str 介绍
>>> str(1)
'1'
>>> horsemen = ['war', 'pestilence', 'famine']
>>> horsemen
['war', 'pestilence', 'famine']
>>> horsemen.append('Powerbuilder')
>>> str(horsemen)
"['war', 'pestilence', 'famine', 'Powerbuilder']"
>>> str(odbchelper)
"<module 'odbchelper' from 'c:\\docbook\\dip\\py\\odbchelper.py'>"
>>> str(None)
'None' 对于简单的数据类型比如整型,你可以预料到 str 的正常工作,因为几乎每种语言都有一个将整型转化为字符串的函数。
然而 str 可以作用于任何数据类型的任何对象。这里它作用于一个零碎构建的列表。
str 还允许作用于模块。注意模块的字符串形式表示包含了模块在磁盘上的路径名,所以你的显示结果将会有所不同。
str 的一个细小但重要的行为是它可以作用于 None,None 是 Python 的 null 值。这个调用返回字符串 'None'。你将会使用这一点来提高你的 info 函数,这一点你很快就会看到。
info 函数的核心是强大的 dir 函数。dir 函数返回任意对象的属性和方法列表,包括模块对象、函数对象、字符串对象、列表对象、字典对象 …… 相当多的东西。
例 4.7. dir 介绍
>>> li = []
>>> dir(li)
['append', 'count', 'extend', 'index', 'insert',
'pop', 'remove', 'reverse', 'sort']
>>> d = {}
>>> dir(d)
['clear', 'copy', 'get', 'has_key', 'items', 'keys', 'setdefault', 'update', 'values']
>>> import odbchelper
>>> dir(odbchelper)
['__builtins__', '__doc__', '__file__', '__name__', 'buildConnectionString'] li 是一个列表,所以 dir(li) 返回所有列表方法的一个列表。注意返回的列表只包含了字符串形式的方法名称,而不是方法对象本身。
d 是一个字典,所以 dir(d) 返回字典方法的名称列表。其中至少有一个方法,keys,看起来还是挺熟悉的。
这里就是真正变得有趣的地方。odbchelper 是一个模块,所以 dir(odbchelper) 返回模块中定义的所有部件的列表,包括内置的属性,例如 __name__,__doc__, 以及其它你所定义的属性和方法。在这个例子中,odbchelper 只有一个用户定义的方法,就是在第 2 章中论述的 buildConnectionString 函数。
最后是 callable 函数,它接收任何对象作为参数,如果参数对象是可调用的那么返回 True,否则返回 False。可调用对象包括函数、类方法,甚至类自身。(下一章将更多的关注类)。
例 4.8. callable 介绍
>>> import string
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.join
<function join at 00C55A7C>
>>> callable(string.punctuation)
False
>>> callable(string.join)
True
>>> print string.join.__doc__
join(list [,sep]) -> string
Return a string composed of the words in list, with
intervening occurrences of sep. The default separator is a
single space.
(joinfields and join are synonymous) string 模块中的函数现在已经不赞成使用了(尽管很多人现在仍然还在使用 join 函数),但是在这个模块中包含了许多有用的变量比如 string.punctuation,这个模块包含了所有标准的标点符号字符。
string.join 是一个用于连接字符串列表的函数。
string.punctuation 是不可调用的对象;它是一个字符串。(字符串确有可调用的方法,但是字符串本身不是可调用的。)
string.join 是可调用的;这个函数可以接受两个参数。
任何可调用的对象都有 doc string。通过将 callable 函数作用于一个对象的每个属性,可以确定哪些属性(方法、函数、类)是你要关注的,哪些属性(常量等等)是你可以忽略、之前不需要知道的。 |
|