《简明Python教程》学习笔记
《简明Python教程(A Byte of Python)》: http://woodpecker.org.cn/abyteofpython_cn/chinese/index.html
Python的创造者是Guido van Rossum。
Python的官方介绍是:“Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。”
特点:语法简单,无需管理内存,可移植性,是解释型语言,可嵌入c/c++等程序,带有庞大的标准库,免费开源。
数有四种类型:整数,长整数,浮点数,复数(-5+4j)。
字符串:可用成对的单引号或双引号,另外还可用三个单引号,包含多行字符串,其中可任意使用单引号双引号,如'''sam'p'le '''。(Python没有char类型)
变量:无需声明或定义数据类型,直接赋值。像basic语言。
代码:一个语句可以分号结尾或者省去分号,直接回车
Python代码的层次结构完全依靠缩进,不依靠 { } 。
运算符:和c类似,不同在于:**乘方,//整除,^异或,~按位翻转(x的按位翻转是-(x+1),~5是6),布尔操作“非”“与”“或”分别是not, and, or,和c的!, &&, ||不同。
注释:以井号#开头,不使用c/c++的注释符号,应该是为了遵循Unix的脚本习惯吧。
控制语句
条件控制:if elif else 和c类似,不过不使用括号,句末加上冒号:。Python没有switch语句,可以使用if elif else或字典。
while循环:while else (else为可选)
for循环:for i in range(1, 5): 注意range(1, 5)表示[1, 2, 3, 4],相当于c的for (int i = 1; i < 5; i++)。range默认步长是1,range(1, 5, 2)表示步长为2,[1, 3]。
break: 用于终止循环,else不会被执行。
函数
用def定义,例如 def func1(a, b=1): 第二个参数具有默认值。可如此调用func1(1) func1(1, 2) func1(b=2, a=3)改变参数顺序
函数参数是传值的。
变量具有作用域,可通过global来声明全局变量
return语句:如果没有返回,相当于写成return None
pass语句:表示空的语句块,例如 def func(): pass
文档字符串DocString:每个函数(或模块、类)的第一个逻辑行的字符串是文档字符串。通常是一个多行字符串,首行以大写字母开始,句号结尾。第二行空行,第三行是详细描述。可以func.__doc__打印出来
模块:通过import导入模块。模块文件扩展名必须是.py。字节编译过的模块是.pyc,可加快模块加载速度,与平台无关。模块就是一个单独的.py文件。没什么特殊之处。
数据结构:内建三种数据结构:列表list、元组tuple和字典。
list: 可增删查的列表。alist = ['a', 'b', 'c']
元组tuple: 不可变的列表。atuple = ('a', 'b', 'c') 空元组直接(),但一个成员的元组必须加上逗号 atuple = ('a', )为了区分元组和表达式中一个带圆括号的对象。元祖用处最多的地方是打印,如 print '%s is %d' % (var0, var1)
字典dict: d = {key1: value1, key2:value2} 用d['key']来获得值
列表、元组都可以使用索引index来访问成员,如alist[0]。index可以为负数,-1表示序列的最后一个元素。
列表直接赋值不会产生列表的拷贝,相当于只是Pointer复制。如list2 = list1两者完全相同。list2 = list1[:]这样才会产生新拷贝。
class类: 和其他oo类似。但类的函数参数第一个必须是self,调用时不需要加self。初始化用__init__。显式删除对象用__del__。
class
Person
:
def
__init__
(self, name):
self.name = name
def
sayHi
(self):
print
'Hello, my name is'
, self.name
p = Person(
'Swaroop'
)
p.sayHi()
class的继承:子类__init__不会自动调用基类的__init__
class Male(Person):
def__init__(self, name, salary):
Person.__init__(self, name)
self.salary = salary
输入输出
文件
读方式打开 f = file('aaa.txt')
读一行(包含回车) line = f.readline()
写方式打开 f = file('aaa.txt', 'w')
写入 f.write('abc')
关闭 f.close()
存储器pickle,可在文件中持久存储任何Python对象。
import cPickle as p
f = file("a.dat", 'w')
p.dump(['a', 'b'], f)
f.close()
f = file('a.dat')
alist = p.load(f)
异常处理
try:
except EOFError:
except:
自定义异常类型
class
ShortInputException
(Exception):
'''A user-defined exception class.'''
def
__init__
(self, length, atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast
try
:
s =raw_input
(
'Enter something --> '
)
if
len
(s) <
3
:
raise ShortInputException(len
(s),
3
)
# Other work can continue as usual here
except
EOFError:
print
'\nWhy did you do an EOF on me?'
except
ShortInputException, x:
print
'ShortInputException: The input was of length %d, \
was expecting at least %d'% (x.length, x.atleast)
else
:
print
'No exception was raised.'
lambda创建函数对象
def
make_repeater
(n):
return lambda
s: s*n
twice = make_repeater(2
)
print
twice(
'word'
)
print
twice(
5
)
输出
$ python lambda.py
wordword
10
posted on 2012-04-25 23:10 VinceOniPhone 阅读(369) 评论(0) 编辑 收藏 举报