- 论坛徽章:
- 0
|
foo='abc'
for i,ch in enumerate(foo):
print ch,'(%d)'%i
如果模块是被导入, __name__ 的值为模块名字
如果模块是被直接执行, __name__ 的值为 '__main__'
测试代码仅当该文件被直接执行时运行, 也就是说不是被别的模块导入时。上文及核心笔
记中提到如何判断一个模块是被直接运行还是被导入。我们应该利用 __name__ 变量这个有利
条件。将测试代码放在一个或者叫main(), 或者叫test()(或者你随便取个啥名字)的函数中,
如果该模块是被当成脚本运行, 就调用这个函数。
一个循环引用发生在当你有至少两个对象互相引用时, 也就是说所有的引用都消失时, 这
些引用仍然存在, 这说明只靠引用计数是不够的。Python 的垃圾收集器实际上是一个引用计
数器和一个循环垃圾收集器。 当一个对象的引用计数变为0,解释器会暂停,释放掉这个对象
和仅有这个对象可访问(可到达)的其它对象。作为引用计数的补充, 垃圾收集器也会留心被
分配的总量很大(及未通过引用计数销毁的那些)的对象。 在这种情况下, 解释器会暂停下
来, 试图清理所有未引用的循环。
核心提示:实践
在上面的例子中,您会注意到我们使用的是浮点数而不是整数。为什么这样?整数对象和
字符串对象是不可变对象,所以Python 会很高效的缓存它们。这会造成我们认为Python 应该
创建新对象时,它却没有创建新对象的假象。
python字符串切片操作。。。重点!!略,以后再补。
float VS double
C 语言有单精度和双精度两种浮点类型。 Python 的浮点类型实际上是C 语言的双精度浮
点类型。 Python 认为同时支持两种浮点类型的好处与支持两种浮点类型带来的开销不成比例,
所以Python 决定不支持单精度浮点数。对那些宁愿放弃更大的取值范围而需要更高精确度的
用户来说, Python 还有一种十进制浮点数类型 Decimal, 不过你必须导入decimal 模块才可
以使用它。浮点数总是不精确的。Decimals 则拥有任意的精度。在处理金钱这类确定的值时,
Decimal 类型就很有用。 在处理重量,长度或其它度量单位的场合, float 足够用了。 |
|