Python 簡明教程學習筆記

ecy2 10年前發布 | 4K 次閱讀 5.2.1版本發布
數據結構()
list用法:

 shoplist = ['apple', 'mango', 'carrot', 'banana']
 len(shoplist)
 for item in shoplist:
 shoplist.append('rice')
 shoplist.sort()
 shoplist[0]

元組
 zoo = ('wolf', 'elephant', 'penguin')
 len(zoo)
 new_zoo = ('monkey', 'dolphin', zoo)
 new_zoo[2][2]表示企鵝
 new_zoo[2]表示zoo這個元組

字典
 ab = {       'Swaroop'   : 'swaroopch@byteofpython.info',
              'Larry'     : 'larry@wall.org',
                'Matsumoto' : 'matz@ruby-lang.org',
                'Spammer'   : 'spammer@hotmail.com'
        }
 ab['Guido']
 del ab['Spammer']
 for name, address in ab.items():
 if 'Guido' in ab:
序列
 索引
 shoplist[0] 【0】作為該LIST得索引 

 切片
 shoplist[0:1] 【0:1】作為切片表示從0開始1結束
參考
 mylist=shoplist  mylist作為shoplist的副本,mylist的item改變不會影響shoplist,而shoplist改變則會影響mylist

字符串
 name='Swaroop'
 if name.startswith('Swa'):
 if 'a' in name:
 if name.find('war')!=-1:

面向對象()

類使用class關鍵字創建。類的域(變量)和方法被列在一個縮進塊中。
類的方法和普通函數只有一個區別,類的方法必須有一個額外的第一個參數的名稱,但是在調用這個方法的時候你不為這個參數賦值,由PYTHON提供這個值,這個特別的變量指對象本身,按照慣例他的名稱是self
有一個類MyClass和這個類的對象MyObject :MyObject.method(arg1,arg2)的時候python自動轉化為MyClaa.method(MyObject,arg1,arg2)

創建一個類:
 class Person:
  pass # An empty block
 p=Person()
 print p
 輸出:<__main__.Person instance at 0xf6fcb18c>
 可以注意到存儲對象的計算機內存地址打印出來了,因為Python可以在任何空位存儲對象

使用對象的方法:
 class Person:
  def sayHi(self):
   print 'hello,how are you?'
 p=person()
 p.syaHi()
 注意:sayHi方法沒有任何參數,但仍然在函數定義時有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()
 輸出:hello,my name is Swaroop
 __init__()方法,只是在創建類的新實例的時候,把參數包括在括號內跟在類名后面,從而傳遞給_init()方法。ps相當于:java中的構造函數

 __del__()方法,在對象消逝的時候調用

類和對象的方法:
 類的變量和對象的變量不同:對象的變量賦值如"self.name" 而類的變量"name"

 所有的類成員都是公共的   但以雙下劃線為前綴的數據成員如:__a,Python會有效的把他作為似有變量.
 慣例:如果某個變量只想在類和對象中使用,就應該以單下劃線為前綴。
繼承:
 class SchoolMember:
  def __init__(self,name,age):
   self.name=name
   self.age=age
   print '(Initialized SchoolMember:%s)'%self.name
  del tell(self):
   print 'Name:"%s" Age:"%s"'%(self.name,self.age)

 class Teacher(SchoolMember):
  def __init__(slef,name,age,salary)
   SchoolMember.__init__(self,name,age)
   self.salary=salary
  del tell(self):
   SchoolMember.tell(self)
   print'salary:"%d"'%slef.salary

 __init__方法專門使用self變量調用,這樣我們就可以初始化對象的基本類部分。
 這一點十分重要——Python不會自動調用基本類的constructor,必須手動自己調用。
 如果在繼承元組中列了一個以上的類,那么它就被稱作 多重繼承


輸入輸出()
raw_input和print  輸入和輸出:

文件:
 file類的對象來打開一個文件,分別使用file類的方法read,readline,write方法來恰當的讀寫文件,完成對文件的操作時,調用close方法
 poem='''write into file's content'''
 f=file('poem.txt','w')
 f.write(poem)
 f.close()
 f=file('poem.txt')
 while True:
  line=f.readline()
  if len(line)==0:
   break
  print line
 f.close()
 注意:只讀模式'r',寫入模式'w',追加模式'a',不指定為只讀模式.
存儲器(pickle):
 pickle和cPickle的區別,功能相同,cPickle(C語言寫的)比pickle更快

 import cPickle as p
 shoplistfile='shoplist.data'
 shoplist = ['apple', 'mango', 'carrot']
 f = file(shoplistfile, 'w')
 p.dump(shoplist,f)#dump the object to a file
 f.close()
 del shoplist

 f=file(shoplistfile)
 storedlist=p.load(f)
 print storedlist
異常()
try..except:
 import sys

 try:
      s = raw_input('Enter something --> ')
 except EOFError:
      print '\nWhy did you do an EOF on me?'
      sys.exit() # exit the program
 except:
      print '\nSome error/exception occurred.'
      # here, we are not exiting the program
 print 'Done'

 將有可能發生錯誤的語句放入try:語句中,用except:來處理這些錯誤,對于每一個try從句至少有一個except從句與其關聯
引發異常:
 raise語句
 class ShorInputException(Exception):
  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 ShorInputException(len(s),3)
 except EOFError:
  print '\nWhy did you do an EOF on me?'
 except ShorInputException,x:
  print 'ShortInputException: The input was of length %d, \
          was expecting at least %d' % (x.length, x.atleast)
 else:
  print 'No exception was raised'
try...finally:


Python標準庫()
sys模塊:

os模塊:
 os.name返回操作系統平臺
 os.getcwd()返回當前工作目錄
 os.getenv(),os.putenv讀取和設置環境變量
 os.listdir返回指定目錄下的所有文件和目錄名
 os.remove() 刪除一個文件
 os.system()用來運行shell命令
 os.linesep字符串給出當前平臺的行終止符,windows-'\r\n'linx-'\n'mac-'\r'
 os.path.split()返回一個路徑的目錄名和文件名
 os.path.isfile(),os.path.isdir()分別檢測是文件還路徑
 os.path.existe用來檢測給出的路徑是否存在

更多()
特殊的方法:
 __init__()
 __del__()
 __getitem__()可以用來獲取元組或list相對位置的值
在函數中接收元組和列表:
 當要使函數接收元組或字典形式的參數的時候,有一種特殊的方法,它分別使用*和**前綴。這種方法在函數需要獲取可變數量的參數的時候特別有用。
 def powersum(power, *args):
  total=0
  for i in args:
   total+=pow(i,power)
  return total
 >>> powersum(2,3,4)
  25
 >>> powersum(2,10)
 100
 由于args變量前有*前綴,所有多余的函數參數都會作為一個元組存在args中,如果**為前綴,那么對于的參數會被認為是字典的鍵/值對
lambda形式:
 def make_repeater(n):
  return lambda s:
   s*n
 twice=mak_repeater(2)
 print twice('word')
 print twice(5)
 輸出:wordword
      10
 注意:lambda語句用來創建函數對象,lambda需要一個參數(s)這個參數作為函數體,而表達式的質被這個新建的函數返回。注意即便是print語句也不能用在lambda形式中,只能使用表達式.
 猜想:
exec和eval語句:
 >>>exec 'print "hello world"'
 hello world
 >>>eval('2*3')
 6
 exec用來執行存儲在文件或字符串中的python語句
 eval用來執行存儲在字符串中的python表達式
 本文由用戶 ecy2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!