Python學習筆記(3)

chszs發表於2008-12-29
版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chszs/article/details/3639706

Python學習筆記(3)

1)Statements and Syntax
Hash mark (#)表示Python註釋
NEWLINE(/n)是標準行操作符
Backslash(/)表示一行繼續
Semicolon(;)在同一行連線兩個語句
Colon(:)從suite中分隔首行
Suites通過縮排進行限制
Python檔案以模組進行組織

2)Variable Assignment
等號(=)是賦值操作符
>>> anInt = -12
>>> String = `cart`
>>> aFloat = -3.1415*(5.0**2)
>>> anotherString = `shop`+`ping`
>>> aList = [3.14e10, `2nd elmt of a list`, 8.82-4.371j]
多個賦值
>>> x,y,z = 1,2,`a string`
>>> x
1
>>> y
2
>>> z
`a string`

例子:
交換x和y的值
>>> (x,y) = (5,6)
>>> x
5
>>> y
6
>>> (x,y) = (y,x)
>>> x
6
>>> y
5

3)Identifiers
有效的Python識別符號:
 – 第一個字元必須是字母或下劃線
 – 其後的字元可以是字母、數字或下劃線
 – 大小寫敏感
 
關鍵字:目前有28個關鍵字
and elif global or assert else if pass
break except import print class exec in raise
continue finally is return def for lambda try
del from not while

Built-ins
Python內建的都應該做關鍵字處理,作為系統保留對待。
Python不支援識別符號過載。

特殊的下劃線識別符號
Python指定了特殊的帶下劃線字首或字尾的變數。
_xxx 不用‘ from module import * ’ 匯入
_xxx__ 系統定義的名字
__xxx 請求私有名

4)Document
Python提供了一個機制,文件字串能通過__doc__特殊變數動態取回。在模組、類宣告、或函式宣告的第一個未賦值字串能通過使用obj.__doc__訪問,obj代表模組、類或函式名。

Indentation
縮排在Python中扮演了一個重要角色。縮排4個字元最佳,縮排代表某個塊。

Module Structure and Layout
模組有簡單的物理方式和邏輯組織。在每個檔案內,應該建立一致的、易讀的結構。最好是按如下進行佈局:
  -startup line 開始行
  -module documentation 模組說明文件
  -module import 模組匯入部分
  -variable declarations 變數宣告
  -class declarations 類宣告
  -function declarations 函式宣告
  -”main” body 模組主體部分

例子:
# /usr/bin/env python
“this is a test module”
import sys
import string
debug = 1
class FooClass:
  “Foo Class”
  pass
def test():
  “test function”
  foo = FooClass
  if debug:
  print `ran test()`
if __name__ == `__main__`:
  test()

在主體部分建立測試
良好的程式設計習慣是為整個應用程式提供一套測試集。

5)Memory Management
記憶體管理
  -變數並不提前宣告
  -變數型別不需宣告
  -在程式設計師部分無記憶體管理
  -變數名可回收再用
  -del語句允許清晰地重新分配
一旦某資料物件不再需要時,Python的垃圾回收器會自動釋放該資料物件。此行為無需程式設計人員操心。
Python通過跟蹤物件的引用數量,來決定物件是否需要。這稱為“引用計算”。

del語句
del語句移除一物件的單個引用,其語法如下:
del obj1[, obj2 [,…objN…]]
例如:
# 初始化string物件,設定引用數為1
foo1 = `foobar`
# 通過賦值給另一變數,增加引用數
foo2 = foo1 # 建立一個別名
# 通過函式呼叫再次增加引用數
check_val(foo1)
# 從名稱空間移除foo2;`foobar`物件的引用數減少
del foo2
# 移除`foobar`物件的最後一個引用,減少其引用數為0,最終導致物件變成不可訪問的。
del foo1

6)第一個Python程式
#!/usr/bin/env python

“fgrepwc.py — searches for string in text file”

import sys
import string

# print usage and exit
def usage():
  print “usage: fgrepwc [-i] string file”
  sys.exit(1)

# does all the work
def filefind(word, filename):
   
  #reset word count
  count = 0
   
  # can we open file? if so, return file handle
  try:
  fh = open(filename, `r`)
  # if not, exit
  except:
  print filename, “:”, sys.exc_info()[1]
  usage()
   
  # read all file lines into list and close
  allLines = fh.readlines()
  fh.close()
   
  # iterate over all lines of file
  for eachLine in allLines:
  # search each line for the word
  if string.find(eachLine, word)>-1:
  count = count+1;
  print eachLine,
   
  # when complete, display line count
  print count
   
#validates arguments and calls filefind()
def checkargs():
  # check args; `argv` comes from `sys` module
  argc = len(sys.argv)
  if argc != 3:
  usage()
  # call fgrepwc.filefind() with args
  filefind(sys.argv[1], sys.argv[2])
   
#execute as application
if __name__ == `__main__`:
  checkargs()


相關文章