学习http://poson.iteye.com/blog/412556,做以下总结及整理。
1、解决代码中中文注释乱码
在文件开头增加 # -*- coding: utf-8 -*- 或者#coding:utf-8
2、print函数调用可以用圆括号把参数包含在其中,也可以省略圆括号。
比如:
print('hello world')
3、Python的bool类型
真为True,假为False。注意,首字母大写。
4、Python为强类型语言。所以不同类型不能混合使用
比如
age=5
print 'she age is'+age
这样将会出错。应该将age转为字符串型:str(age)
5、某个数与整数相乘,得到的是数学意义上的结果。某字符串与整数i相乘得到的是某字符串本身连接i次。
str='5'
i=5
print str*i,i*i
6、元组、列表、词典
元组(tuple),小括号
列表(list),中(方)括号
词典(dictionary),大括号
7、分支结构
·elif
if 条件 :
...
elif 条件 :
...
else:
...
注意是elif,不是else if
·not expression中的expression值有哪些
if not expression:
None、0、空字符、False都能匹配。
if not 0:
print 'none'
if not []:
print 'none'
if not False:
print 'none'
if not '':
print 'nont'
if not None:
print 'nont'
8、函数
·函数体至少要有一个语句。如果函数体为空,需要使用pass语句占位。
def fun1():
pass
·如果返回多个值,返回值是一个元组(tuple)
9、class
#coding:utf-8
#表示文件的编码是utf8
#建立一个类,类名是A,注意A后面有一个冒号
class A:
count = 0
def __init__(self, name): #构造函数,传入参数是name;
self.name = name #self类似java里面this关键字
def setName(self, name): #A的一个成员函数
self.name = name
def getName(self):
return self.name
#__name__是一个系统变量
#当您直接运行模块,__name__ 的值是 __main__;
#当您把该文件作为一个导入模块,__name__ 就是其他的文件名(不带后缀的文件名)
#这样方便测试
if __name__ == "__main__":
#初始化一个对象A
a = A('poson')
print a.getName()
10、几行代码搞定python 设计模式
#!/usr/bin/env python
# -*- coding:utf-8
class HttpBase:
def get(self):
psss
class Http1(HttpBase):
def get(self):
print 'http1'
class Http2(HttpBase):
def get(self):
print 'http2'
class Base:
def __init__(self):
self.httpobj = None
def http(self):
self.httpobj.get()
def compute(self):
self.http()
self.show()
#虚函数
def show(self):
pass
def notify(self, k):
print 'notify', k
#桥接模式,通过A,B 关联不同的http1和http2
class BaseA(Base):
def __init__(self):
self.httpobj = Http1()
def notify(self, k):
print 'A notify', k
def show(self):
print 'show a'
class BaseB(Base):
def __init__(self):
self.httpobj = Http2()
def notify(self, k):
print 'B notify', k
def show(self):
print 'show b'
#观测者模式
class Observer:
def __init__(self):
self.listOB = []
def register(self, obj):
self.listOB.append(obj)
def notify(self):
for obj in self.listOB:
obj.notify(len(self.listOB))
#适配器模式
class B1:
def http(self):
BaseB().http()
#工厂模式
class Factory:
def CreateA(self):
return BaseA()
def CreateB(self):
return BaseB()
#单例模式
class Logger(object):
log = None
@staticmethod
def new():
import threading
#线程安全
mylock = threading.RLock()
mylock.acquire()
if not Logger.log:
Logger.log = Logger()
mylock.release()
return Logger.log
def write(self, v):
print 'Logger ', v
if __name__ == "__main__":
a = Factory().CreateA()
b = Factory().CreateB()
objS = Observer()
objS.register(a)
objS.register(b)
a.compute()
b.compute()
objS.notify()
b1 = B1()
b1.http()
Logger.new().log.write('v')