如果包中使用了子包结构(就像示例中的Sound包),不存在什么从邻近的包中引用子模块的便捷方法--必须使用子包的全名。例如,如果Sound.Filters.vocoder 包需要使用Sound.Effects 包中的echosa模块,它可以使用from Sound.Effects import echo。
6.4.3 多重路径中的包
包支持一个另为特殊的变量, __path__。 在包的__init__.py文件代码执行之前,该变量初始化一个目录名列表。该变量可以修改,它作用于包中的子包和模块的搜索功能。
这个功能可以用于扩展包中的模块集,不过它不常用。
mq110 回复于:2005-05-31 16:56:30
7. 输入和输出
有几种方法可以表现程序的输出结果;数据可以用可读的结构打印,也可以写入文件供以后使用。本章将会讨论几种可行的做法。
7.1 设计输出格式
我们有两种大相径庭的输出值方法:表达式语句和print语句。(第三种访求是使用文件对象的wite()方法,标准文件输出可以参考sys.stdout。详细内容参见库参考手册。)
可能你经常想要对输出格式做一些比简单的打印空格分隔符更为复杂的控制。有两种方法可以格式化输出。第一种是由你来控制整个字符串,使用字符切片和联接操作就可以创建出任何你想要的输出形式。标准模块 string 包括了一些操作,将字符串填充入给定列时,这些操作很有用。随后我们会讨论这部分内容。第二种方法是使用 % 操作符,以某个字符串做为其左参数。 % 操作符将左参数解释为类似于 sprintf()风格的格式字符串,并作用于右参数,从该操作中返回格式化的字符串。
当然,还有一个问题,如何将(不同的)值转化为字符串?很幸运,Python总是把任意值传入 repr() 或 str() 函数,转为字符串。相对而言引号('')等价于repr(),不过不提倡这样用。
函数str() 用于将值转化为适于人阅读的形式,而 repr()转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常) 某对象没有适于人阅读的解释形式的话,str()会返回与repr()等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的解读方式。字符串和浮点数,有着独特的解读方式。
以下是一些示例:
>;>;>; s = 'Hello, world.'
>;>;>; str(s)
'Hello, world.'
>;>;>; repr(s)
"'Hello, world.'"
>;>;>; str(0.1)
'0.1'
>;>;>; repr(0.1)
'0.10000000000000001'
>;>;>; x = 10 * 3.25
>;>;>; y = 200 * 200
>;>;>; s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '...'
>;>;>; print s
The value of x is 32.5, and y is 40000...
>;>;>; # The repr() of a string adds string quotes and backslashes:
... hello = 'hello, world\n'
>;>;>; hellos = repr(hello)
>;>;>; print hellos
'hello, world\n'
>;>;>; # The argument to repr() may be any Python object:
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 下一页
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 指南 一个 可以 Python 模块 文件 方法 函数 对象 字符串 |
注册
个人空间
