1. 程式人生 > >python如何學習(二)

python如何學習(二)

map 逗號 NPU bin 制表符 項目規範 不可 替換 計算機技術

最近開始整理python的資料,博主建立了一個qq群,希望給大家提供一個交流的同平臺 78486745 。

一、編程開發規範

作為一門開發語言,python自然也有自己的編程規範,以下是特有且必須遵循的規範:

  1. 代碼開頭
    python中代碼必須頂格編寫,除非被作為語句嵌套在條件判斷或條件循環中。
  2. 代碼層級
    代碼與代碼之間的邏輯層級關系(涉及邏輯判斷、包含關系等情況)通過空格來界定,第一層頂格編寫,第二層(被包含或者邏輯判斷後的執行動作)開頭預留4個空格(如果不考慮跨平臺可以使用tab)
  3. 對齊方式
    同一個層級的代碼必須嚴格對齊,如第一層都是頂格,第二層都是4個空格開頭,第三層則是8個空格,以此類推。
  4. 註釋
    單行註釋用#開頭,單獨一行作為註釋或者在代碼後面通過#跟上註釋均可,多行註釋在首尾處用成對的三引號引用即可,可以是成對的三個單引號或者三個雙引號。
  5. 代碼塊
    if邏輯判斷和for循環條件後面均以冒號結尾,然後通過4個空格開始下一層級的實際執行動作語句編寫。這部分在冒號後面接上的語句稱為代碼塊。
  6. 程序命名
    編寫的python程序必須以.py結尾。
  7. 項目規範
    啟動一個項目開發時先在開發工具中創建project,然後根據需要創建目錄,最後在目錄下創建當前活動的py程序。

二、變量

python中的變量也用於存儲臨時值以便後續靈活調用,在定義時只能使用字母、數字、下劃線的任意組合,且不能以數字開頭,不能以python內置的關鍵字來命名變量(如and,import,global,finally等,有待後續學習加深印象)。對變量進行字符串類型的賦值時,字符串需要用成對的引號引起來,可以是單引號、雙引號或者三引號。

建議通過以下兩種形式來定義較為復雜的變量,便於閱讀:

  1. 駝峰體
    即每個單詞的首字母大寫,其他小寫,如MappingTable
  2. 下劃線
    不同單詞之間通過下劃線分開,如mappting_table

三、字符編碼

字符編碼經歷了ASCII碼->unicode->UTF-8的演變過程,python 2.x默認使用ASCII編碼,而3.x默認使用UTF-8編碼。由於字符編碼事關重大,一言不合就會導致亂碼,因此強烈建議統一使用萬用的utf-8編碼。怎麽使用呢?

  1. 程序開頭明確顯式定義
#!/usr/bin/env python
# -*- coding: utf-8 -*-  

windows下編程可忽略第一行,但為了保留移植性建議始終聲明變量。

  1. 在程序解釋器中選擇utf-8字符編碼

以上兩個條件缺一不可,雖然python 3.x版本默認使用utf-8編碼,但還是建議在程序中聲明編碼格式。

以上是結果,下面談談為什麽強烈建議使用urf-8編碼,以及為什麽utf-8編碼就可以通吃。

最早就只有包括所有字母的大小寫、數字、必要的特殊符號等合計才127個字符被編碼到計算機裏,這個編碼就是ASCII編碼。由於需要進行編碼的字符才有127個,因此用7個二進制位就足以搞定了,但8個二進制位才能構成一個完整的字節,因此索性用8個二進制位來進行編碼,剩余的一位只好浪費掉。所以ASCCI碼只占用一個字符。

隨著計算機技術的推廣和普及,其他不以英語為官方語言的國家也開始使用計算機了。那麽現在問題來了,一個字節的8個bit位只能表示非常有限的字符(設計時只包括所有字母的大小寫、數字、必要的特殊符號,其中整數還不能超過255),既有的ASCII編碼表裏沒有包含其他國家的語言字符,但顯然也沒法強迫全球都使用英語,於是各個國家開始進行本土化改良,設計能滿足自己國家需要的編碼,如國內的GB2312。這裏的改良涉及兩個要點,一是原有的一個字節的編碼空間要擴充為兩個字節甚至更多,二是新的編碼還不能與既有的ASCII編碼沖突,否則老美要跟你捉急了!你可以想象,中國搞定了一套,日本也搞定了一套,接著是韓國、越南等巴拉巴拉,大家都有自己的編碼標準,各自為政,遇到多語言混合使用的場景這編碼表還不炸開鍋,連同計算機一起傻掉!這時Unicode應運而生。Unicode把所有語言都統一到一套編碼裏,用兩個甚至更多的字節來進行編碼(通常用兩個字節,搞不定時再喊人加砝碼呀),這樣就不會再有亂碼問題了。

Unicode搞定了多國語言亂碼和編碼統一的問題,但你會發現如果需要處理的內容全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上就不太經濟劃算。OK,Unicode的演進改良版utf-8就是來解決這個問題的。utf-8的優勢在於它使用“可變長編碼”,在繼續沿用ASCII編碼基礎上來對1個字節不能搞定的那些語言字符進行編碼設計,這樣英文還是用1個字節,遇到中文就用3個或者更多的字節來處理。這樣既可以保障空間和性能的最大化,還能兼顧老美的老巢和其他非英文的編碼兼容問題,一舉三得!所以你會發現ASCII其實是utf-8的子集,utf-8向下兼容。

四、 Python解釋器

python是一門解釋性語言,自然不能缺了解釋器(類似於JVM)。官方支持Cpython、Jpython、Ironpython和pypy等,默認使用基於C語言實現的Cpython。它也是最為廣泛使用的解釋器。程序運行時會把.py文件轉換成.pyc字節碼文件,然後運行在python虛擬機上。

最近開始整理python的資料,博主建立了一個qq群,希望給大家提供一個交流的同平臺 78486745 。

五、構建Python的開發環境

構建好包括解釋器(虛擬機)和開發工具IDE在內的Python的開發環境才便於展開程序開發之旅。

其中解釋器(虛擬機)從python官方下載安裝即可,需要註意的是建議安裝3.7版本,windows下安裝後需要把python的bin目錄和scripts目錄追加到系統環境變量path和用戶變量path中。我的win 7用戶不是以administor,補充追加了用戶變量後才能在cmd下傻瓜式地輸入python。linux下系統默認是2.x的版本,安裝3.7版本時需要先將舊版本重命名為其他目錄(如python2.6)後再安裝,安裝完畢無需額外設置環境變量。

好的程序猿都得有自己好使的IDE,python程序建議使用pycharm工具來進行開發。從官網下載安裝社區版即可,需要註意的是選擇後本地的解釋器和項目的默認字符編碼。其他一些好玩的特性、快捷鍵等只有後續逐步體會了。

六、模塊初識

python內置了很多模塊,同時也可以自定義編寫一些好玩的模塊,使用模塊時需要通過關鍵字import導入。導入後python會從系統變量的路徑中從前往後一次查找,首次成功查找匹配後不再進行後續查找。因此如果需要使用自定義模塊,需要特別關註自定義模塊的存放位置,底線是只存放在系統變量的一個路徑下,否則可能得到意外的結果。

七、用戶輸入和格式化輸出

用戶輸入通過input來實現,示例如下:

YourName=input("Please input you name here: ") 

簡單的輸出通過print來實現,示例如下:

print("Hi,", YourName)  #調用輸出上面用戶輸入的變量YourName

註意:

  1. 3.x版本中input默認接收用戶輸入的類型為字符串,如果需要使用其他的數據類型則需要進行轉換,如 UserAge=int(input("Please input your name:"))
  2. print輸出中可以接上轉義符號\來實現更多的輸出顯示效果,如 \n表示換行,\t為制表符。

print的使用進階——字符串的格式化輸出:

python中,對字符串進行格式化輸出與c語言是相同的,即借助%來實現。%s表示與字符串替換,%d表示用整數替換,%f表示用浮點數替換,如果輸出的字符串中本身就需要%(比如輸出比率),則需要用連續的兩個%%來輸出%。

 示例程序如下:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
print ("Your name is %s" %"Bob")
print ("Your age is %d" %21)
print ("Your name is %s,age is %d" %("Bob",21))

從以上示例程序可看出,利用print進行格式化輸出的基本格式是在需要替換輸出的位置用%s,%d等占位符,然後在後面通過%來接上實際替換後需要輸出的內容,如果需要替換輸出的元素不止一個,則需要在%後面通過一對圓括號把實際替換後需要輸出的內容包含進來,同時在每個元素之間用逗號隔開。

八、Python的運行邏輯

Python的運行工作邏輯如下:

內存加載代碼->語法分析->解釋器加載->生成字節碼->執行字節碼->生成機器碼->CPU執行

【搜索圓方圓,獲得“python教程”,“python下載”,“python入門”類相關信息。】

python如何學習(二)