初識Python


Python又來已久.但一直沒有細致梳理過.本篇算是在體驗Coding Python過程中做的一些零散的筆記.主要使用過程一些發現和感受.隨時更新. 在參考文檔寫了一個簡單While循環控制Console輸出.

   1:  #my first python application console something
   2:  principal=1000  #inital amount
   3:  rate=0.05 #interest rate
   4:  numyears=5 #number of years
   5:  year=1
   6:   
   7:  while year<numyears:
   8:      principal=principal*(1+rate)
   9:      print(year,principal)
  10:      year+=1

代碼很簡單.第一感覺Python代碼可讀性很強.就像閱讀一段句子一般. 但是Python在代碼處理方式上有很多細節.可能從代碼排版形式並沒有不同.但是如果不細究是看不到Python這樣設計的初衷.俗話說醉翁之意不在酒.

首先Python中每個執行語句都是自然換行的方式結束的.相對於C#和Java 標准的分號是存在明顯的區別的.

   1:  int principal=1000;
   2:  Doule rate=0.05;

如果說在一行編寫多條執行語句.Python其實也考慮到這點需求.這時語句之間必須使用分號進行分隔即可.就像聲明還可以采用這種方式寫在一行:

   1:  first_name="chen"; last_name="kai"; my_name=first_name+last_name;
   2:  print(my_name)

但Python對這種寫在一行的代碼格式並不提倡.官方文檔中提到這樣的寫法最好用於測試調試語句.因為這樣可以很方便在調試只刪一行就刪除全部的調試語句.While語句循環控制中.首先判斷條件表達式是否為真.如果為真則繼續執行冒號后面的語句.其實冒號后面的全部的縮近語句塊為循環體.

相對於C#和Java采用大括號的方式來標識語法快邏輯的完整邊界.而Python采用縮進塊的方式來表示程序邏輯.在冒號后三條語句循環體. Python並未指定縮進的空白[空格或制表符]. 但是在語法唯一的要求是同一層次的語句必須有相同的縮進空白. 類似 現在修改一下循環中縮進空白如下:

   1:  #my first python application console something
   2:  principal=1000  #inital amount
   3:  rate=0.05 #interest rate
   4:  numyears=5 #number of years
   5:  year=1
   6:   
   7:  while year<numyears:
   8:      principal=principal*(1+rate)
   9:  print(year,principal)
  10:      year+=1

當你F5調試.會發現Console輸出如下:

2013-02-01_140033

調試出錯.提示UnExpected Indent. 很明顯Python編譯器認為這種寫法是一種語法錯誤.編譯就不會通過.

其實Python的作者Guido van Rossum是故意設計一種限制性很強的語法.這樣做雖然會導致有經驗開發者剛開始使用不習慣.但它也把其他編程語言不好編程習慣拒之門外.保證使用Python過程是足夠Clean.類似如上Python語法縮進規則.則在語法層次已經做了明確的規范.

另外可以看到Python語法塊邊界定義很奇特. 完全是由每行的首字符在這一行的位置來決定.相對C#和Java.是用一對花括號{}來明確的定出模塊的邊界的,與字符的位置毫無關系.曾經這種做法在業界引起過一定爭議.因為自從C這類的語言誕生后,語言的語法含義與字符的排列方式分離開來,曾經被認為是一種程序語言的進步。不過不可否認的是,Pythone這種語法規則強制開發人員縮進(包括if,for和函數定義等所有需要使用模塊的地方),Python程序自身確實變得更加清晰和美觀.

通過這一段代碼應該能夠明顯感受相對於C# Java Perl語言Python可讀性很強.其實要明白為何Python 為何這樣做?主要歸結於Python語言設計哲學:

Python的設計哲學是“優雅”、“明確”、“簡單”。因此Perl語言中“總是有多種方法來做同一件事”的理念在Python開發者中通常是難以忍受的。Python開發者的哲學是“用一種方法,最好是只有一種方法來做一件事”。在設計Python語言時,如果面臨多種選擇,Python開發者一般會拒絕花俏的語法,而選擇明確的沒有或者很少有歧義的語法。由於這種設計觀念的差異,Python源代碼通常被認為比Perl具備更好的可讀性

在這種設計哲學指導下.你會發現對於同一需求.用Python編寫后代碼基本不存在歧義.因為本身做法就是很明確的.這對於跨平台移植來說無疑來說是一個很大的優點.代碼可以高度復用.

條件語句If用法如下:

   1:  #condition if
   2:  first_num=120;
   3:  second_num=100;
   4:  if first_num<second_num:
   5:      print("first < second")
   6:  else:
   7:      print("first >= second")

如上是我按照C#判斷語句習慣寫的.編譯可以通過.可以發現IF-Else采用縮進方式來明確代碼塊邊界.Else在官方文檔在某些情況下可以省略的。寫法如下:

   1:  if first_num<second_num: print("first < second")
   2:  else: print("first >= second")

當if-Else只有一個語句.可以再語法上不適用縮進方式.這種寫法編譯會通過.但是Python並不推薦.除掉縮進也就在某種程度上破壞了代碼的可讀性.在判斷可以添加判斷條件:

   1:  if first_num>third_num and second_num<fourth_num:
   2:      pass
   3:  if not (first_num>third_num or third_num>second_num):
   4:      print("right way")

在判斷語句Python設計可以通過Or and或Not關鍵字來建立條件表達式. 而不是類似C#采用字符|| 和&& 方式.我一直認為明確具有語義的語言要比冷冰冰的字符要更有意義.主要是因為好讀切字義簡單容易理解.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM