当前位置: 代码迷 >> 综合 >> Python 温故而知新
  详细解决方案

Python 温故而知新

热度:80   发布时间:2023-12-22 01:24:54.0

1. 打印变量和变量自显

>>> myString = 'Hello World!'
>>> print myString
Hello World!
>>> myString
'Hello World!'

 

因为: print 语句调用str()函数显示对象,而交互式解释器则调用repr()函数来显示对象

 

sys.stdout.write('hello')不会在末尾加上'/n',而print会

 

2. 打印文件

handle = open('poem.txt', 'r')
for eachline in handle:
    print eachline,
handle.close()

适用于文件大小适中的文件。对于很大的文件来说, 上面的代码会占用太多的内存, 这时你最好一次读一行

 

3. 模块再议

模块是一种组织形式, 它将彼此有关系的Python 代码组织到一个个独立文件当中。
模块可以包含可执行代码, 函数和类或者这些东西的组合。

 

4. 实用函数

  • dir([obj])              显示对象的属性,如果没有提供参数, 则显示全局变量的名字
  • help([obj])           以一种整齐美观的形式 显示对象的文档字符串, 如果没有提供任何参数, 则会进入交互式帮助。
  • int(obj)                将一个对象转换为整数
  • len(obj)               返回对象的长度
  • open(fn, mode)   以 mode('r' = 读, 'w'= 写)方式打开一个文件名为 fn 的文件
  • range([[start,]stop[,step]) 返回一个整数列表。起始值为 start, 结束值为 stop - 1; start默认值为 0, step默认值为1。
  • raw_input(str)  等待用户输入一个字符串, 可以提供一个可选的参数 str 用作提示信息。
  • str(obj)               将一个对象转换为字符串
  • type(obj)             返回对象的类型(返回值本身是一个type 对象!)

5. 关键字

and       del       from      not       while    
as        elif      global    or        with     
assert    else      if        pass      yield    
break     except    import    print              
class     exec      in        raise              
continue  finally   is        return             
def       for       lambda    try
6. 下划线命名
_xxx 不用'from module import *'导入
__xxx__系统定义名字
__xxx 类中的私有变量名
7.模块结构和布局
# (1) 起始行(Unix)
# (2) 模块文档
# (3) 模块导入
# (4) 变量定义
# (5) 类定义
# (6) 函数定义
# (7) 主程序
8. 单元测试的极致
如果模块是被导入, __name__ 的值为模块名字
如果模块是被直接执行, __name__ 的值为 '__main__'
这种设计很巧妙
if __name__ == '__main__':   
    test()
9. 模块调用细则
时刻记住一个事实,那就是所有的模块都有能力来执行代码。
最高级别的Python 语句--也就是说, 那些没有缩进的代码行在模块被导入时就会执行, 不管是不是真的需要执行。
由于有这样一个“特性”,比较安全的写代码的方式就是除了那些真正需要执行的代码以外, 几乎所有的功能代码都在函数当中。
再说一遍, 通常只有主程序模块中有大量的顶级可执行代码,所有其它被导入的模块只应该有很少的顶级执行代码,所有的功能代码都应该封装在函数或类当中。
10. 时髦的内存管理
  • 变量无须事先声明
  • 变量无须指定类型
  • 程序员不用关心内存管理
  • 变量名会被“回收”
  • del 语句能够直接释放资源

因为:

Python 中不但变量名无需事先声明,而且也无需类型声明。Python 语言中,
对象的类型和内存占用都是运行时确定的。尽管代码被编译成字节码,Python 仍然是一种解释
型语言。在创建--也就是赋值时,解释器会根据语法和右侧的操作数来决定新对象的类型。
在对象创建后,一个该对象的应用会被赋值给左侧的变量。

 

11. 引用计数

借用COM里面的技术