Python学習ノート(一)


勉強しますhttp://poson.iteye.com/blog/412556以下のようにまとめて整理します.
1、解決コードの中の中国語の注釈は文字化けしています.
ファイルの先頭に萼-*-codingを追加します.utf-8-*-または菗coding:utf-8
2、print関数呼び出しは、括弧でパラメータを含めてもいいし、括弧を省略してもいいです.
たとえば:
print('hello world')
3、Pythonのbookタイプ
本当に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、タプル、リスト、辞書
タプル、小かっこ
リスト、中かっこ
辞書、大かっこ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、関数
・関数体には少なくとも1つの語句が必要です.関数が空の場合は、パス文でビットを占めます.
def fun1():
  pass
・複数の値を返すと、戻り値は元のグループになります.
9、クラス
#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')