Learning Python(1)

Chap1

1.  Python的爸爸:Guido van Rossum

2.  Python的特点:高级、面向对象、可升级、可扩展、可移植性、易学易读易维护、健壮性、高效的快速原型开发工具、内存管理器、解释型和字节编译(字节编译结果是生成一种近似机器语言的中间形式)。

语言分类的维度

一、 High vs. Low
二、 General vs. Targeted
基本指令集适用于广泛的应用,还是只针对特定用途
三、 Interpreted vs. Compiled
解释型语言,写完源代码后,源码虽然要经过简单检验,但主要是进入解释器,解释器控制每一条指令的执行流程,最后输出结果。因此,解释器在运行时是直接处理代码的。(便于调试,因为处理原始代码,速度相对慢)
编译型语言,写完源码后,马上需要首先送入到编译器中产生所谓的目标代码,两个好处:一,帮助寻找代码的bug;二,这个步骤一般能够在执行之前,将代码转化为高效的指令。(执行较快,却不便于调试)

3. 从命令行启动脚本
Unix衍生系统:
$python script.py
#!/usr/local/bin/python—-shell魔术字符串—脚本第一行
#!/usr/bin/env python—-帮助在系统搜索路径中找到python解释器
$script.py—-将文件属性设置为可执行rwx

Windows/DOS环境:
C:> script.py

 

Chap2

1.  在交互式解释其中显示变量的值:

print语句显示变量的字符串表示(str()函数显示对象),或者仅用变量名查看该变量的原始值(repr()函数)。仅用变量名查看时,输出字符串用单引号括起来了,为的是让非字符串也能以字符串的方式显示在屏幕上——即它显示的是该对象的字符串表示,而非字符串本身。

2.  >>print %s is number %d!” %(“Python”,1)
Python is number 1!
%实现字符串替换功能

3.  import sys
print >>sys.stderr, ’Fatal error: invalid input!’
——————————————————-
logfile=open(‘/tmp/mylog.txt’,’a’)
print>>logfile, ’Fatal error: invalid input!’
logfile.close()

4.  user=raw_input(‘Enter login name:’)
Enter login name:root
raw_input只能用于文本输入,有时需要int()等函数进行转换。

5.  注释还包括一种特殊注释—文档字符串,与普通注释不同,可以在运行时访问,也可以用来自动生成文档。
>>> def foo():
…     “This is a doc string.”
…     return 1

>>> print foo.__doc__
This is a doc string.

6.  列表元素[],元素的个数及元素的值可以改变;
元组元素(),不可以更改(尽管他们的内容可以)。
元组可以看成是只读的列表,通过切片运算可以得到子集。
字典元素{},键值对,值可以是任意类型的Python对象。

7.  如何打开文件  handle = open(file_name,access_mode = ‘r’)

8.  for item in  [‘a1’,’a2’,’a3’]:
print item,#加一个逗号避免自动换行
print #用于输出一个换行符

 

chap3

1.  Python语句中的一些基本规则和特殊字符:
1) 注释(#)
2) 继续(\),另外在使用闭合操作符(小括号、中括号和花括号)时,单一的语句可以跨多行,另外就是三引号包括下的字符串也可跨多行。
3) 多个语句构成代码组(:)
4) 同一行书写多个语句(;)
5) 语句(代码块)用缩进块的方式体现
6) 不同的缩进深度分隔不同的代码块
7) Python文件以模块的形式组织

2.  Python用下划线作为变量前缀和后缀指定特殊变量。
_xxx 不用’from module import*’导入
_xxx_系统定义名字
_xxx 类中的私有变量名

3.  模块结构和布局
1) 起始行

#/usr/bin/env python

2) 模块文档

“this is a test module”

3) 模块导入

import sys

4) 变量定义

debug = True

5) 类定义

class FooClass(object):“Foo calss”

pass

6) 函数定义

def test():“test function”

foo = FooClass()

if debug:

print ‘ran test()’

7) 主程序

if __name__ == ‘__main__’:test()

所有的模块都有一个内置属性 __name__一个模块的 __name__ 的值要看您如何应用模块。如果 import模块, 那么 __name__ 的值通常为模块的文件名, 不带路径或者文件扩展名。当您直接运行模块, __name__ 的值是 __main__, 所以测试套件执行。当您导入模块, __name__ 的值就是别的东西了, 所以测试套件被忽略。这样使得在将新的模块集成到一个大程序之前开发和调试容易多了。

__name__指示模块应如何被加载—
如果模块是被导入,__name__的值为模块名字;
如果模块是被直接执行,__name__的值为‘__main__’。

4.  Python中动态绑定变量,类型也是动态的。It inherits it from its value.

 

Leave a Reply

Your email address will not be published. Required fields are marked *