Python簡介

  • Python是膠水語言,也就是通常會跟隨著另一個比較低階的語言出現
  • Python主要底層就是用C寫的,如果要自己擴展新的功能,大部分也是用C擴展
  • 它的整體架構跟Java很像,後面有一個PythonVM
  • 所有Python程式碼都要轉換成接近機器語言的格式才能執行,有點像是編譯的過程
  • 通常Script語言都拿來做系統管理比較多,但是Python的架構又比Shell Script大,所以Python也有GUI, Net, Web的功能
  • 簡單而言
    • Java能做的Python也都可以做,只是兩個語言的理念不太一樣
    • Java希望它的JDK能夠涵蓋所有開發者的需求
    • Python則常使用第三方的模組來作開發
  • 至於執行檔
    • 有套件可以轉換成exe
    • 原理是把整包Python執行環境打包進去
    • 不強制使用者一定要安裝Python解譯器
  • James Cheng
    • 它的定位其實跟Java差不多,只是Java都要經過編譯的手續才能執行
    • 開發速度Python還是快一點點
    • 好處就是可攜,只要有Python的地方,程式碼都可以執行

 

  • Python設計格言「There is only one way to do it」,代表達成目的盡可能只用一個方法,以達簡單之目的。

Python 入門指南 - 認識 Python 語言

  • Python 是物件導向程式語言 (object-oriented programming language) 
  • Object Python 中最基本的物件,其實 Python 中所有東西都是物件,用雙引號的String也是物件的一種
  • 屬於直譯 (interpret) 式的程式語言 (programming language),因此無須編譯 (compile)
  • 直譯代表程式會逐行被執行,如果程式中有語法錯誤 (syntax error),直譯器 (interpreter) 就會暫停執行
  • Python也提供互動介面(Command Line),可以當做簡單計算機,測試某段小程式

Python 入門指南 - 資料型態與變數

  • 與一般程式相同,但是代表bool的值多了 None,其意義代表null的情況
  • 陣列分成三種
    • 陣列用[1,2]宣告,裡面的值可以改變
    • 序列用(1,2) 宣告,值不可改變
    • 字典(dictionary),以key-value的方式儲存

b = [1, 2.0, "3", [4], (5)] #陣列
b = (1, 2.0, "3", [4], (5)) #序列
b = {1:2.0, "3":[4]} #字典

Python 入門指南 - 變數命名規則與縮排

  • Python撰寫時不能任意縮排,縮排在python是切割程式區塊(block)
  • 縮排通常用於控制結構(for if….)、函式與類別中

Python 入門指南 - 運算式與陳述

  • Python用的andornot,是直接使用英文做為運算元,而非&| or !等符號。

a = True
b = False
c = a and b # c 會等於 False
d = a or b  # d 會等於 True
e = not b   # e 會等於 True

Python 入門指南 - 迴圈

  • 迴圈或其它需要 {} 的部份,在Python只用縮排來代表
  • For迴圈語法較特別,語法如下

for i in range(10, 0, -1):

  • Forin連用,in要接多個元素的物件(陣列),例如用range()來產生一個依序的range物件
  • Range(10,0,-1)代表,產生一陣列從10~0 每一次遞減1

Python 入門指南函式

  • Python的函式關建字是def,後面接函式名稱與傳入參數,沒有太大變化
  • 差別是不用定義回傳資料的型態

def big(a, b):

  • 字串的比較,是從第一個字姆開始比較大小

Python 入門指南類別

class Demo:
    def setAtt(self, a = 22, b = 33):
        self.a = a
        self.b = b 
   def do_something(self):
        return self.a + self.b

  • Selfpython類別中預設的參數,代表物件的實體,類似javathis

Python 入門指南注意事項

  • 記得每個區段(原本用{}的部份),都改用tab來做區隔,不能用空白取代( error)
  • 要讓print 輸出時不換行 要改成 print(“xxx” , end=’’)
  • 透過chr(i)可把數字轉成字元(ASCII),轉回來用ord(i)
  • 字元的串接,”abc”.join(x),此用法會把x插入在abc中間,型成axbxc,若要把陣列直接轉成str,可以用 “”.join(array),前面的””不放資料即可

Python軟體開發串列

  • B = [ 1,2.0,”3”,[4],(5)]

操作

說明

d[i] = x

將索引值 i 的元素設定為 x

d[i:j] = t

將索引值 i j 的元素設定為 t

del d[i:j]

刪除索引值 i j 的元素

x in d

判斷 x 是否為 d 的元素

x not in d

判斷 x 是否非為 d 的元素

d + e

合併 d e 兩個串列

d * 5

d 中所有元素複製為 5

 
  • 詳見範例:array.py

Python軟體開發 – import

  • 亂數產生密碼表
  • pythom提供的模組用import匯進來,例如random,就用 import random

import random;
code = [chr(i) for i in range(97,123)]
random.shuffle(code);
print("".join(code));

  • 若將Class這些定義和測試的程式寫在一起,除了不好閱讀外,被其它程式import時,會優先執行沒有縮排的code。也就是說,測試程式會先被執行。
  • 為了避免此問題,可以將程式寫在if __name__ == '__main__': 的地方。

Python軟體開發if __name__ == '__main__':

  • 我們將一開始寫的Encryptclass分開,變成兩個檔案,Encrypt.pymain.py
  • main.py可以用import Encrypt方式拉進來,但原本寫在Encrypt.py的測試程式也會被執行
  • 為了讓測試程式也能存在,可將測試程式移到if __name__ == '__main__': 當中
  • 範例請見example(encrypt)

Python軟體開發__init__()

  • 相當於java class的建構子,寫在class裡面,當class被建立後就會被執行
  • list(),其功用是將原為string的資料,將每個字元切開轉成array
  • __str__函式建於class中,其中用是當print class時,會以__str__的內容為主

認識標準模組庫及 Tk

  • 另外像預設的浮點數會有誤差,這時使用 decimal 就可以避免誤差的產生,例如

from decimal import *
print()
print(round(0.7 * 1.05, 2))
print(round(Decimal("0.7") * Decimal("1.05"), 2))
print()
print(1.00 % 0.10)
print(Decimal("1.00") % Decimal("0.10"))
print()
print(1 / 7)
print(Decimal("1") / Decimal("7"))
print()

 

文章標籤
全站熱搜
創作者介紹
創作者 y23462001 的頭像
y23462001

y23462001的部落格

y23462001 發表在 痞客邦 留言(0) 人氣(161)