初識Python

  • 2019 年 10 月 6 日
  • 筆記

(目錄)

列表和元組

    列表就是所謂的數組,它擁有着數組的屬性,但是在PY中,列表中封裝了許多方法。
    元組就是靜態數組,靜態理解為不可變,元組的內容一旦創建之後就定了,不能通過代碼來修改元組的內容和大小。雖然一個元組的內容不可以改變,但是可以將兩個元組的內容合併成一個元組。然而,對於長度為1~20的元組,即使它們不在被使用,它們的空間也不會立刻還給系統,而是留待未來使用。這意味着當未來需要一個同樣大小的新的元組時,我們不再需要向操作系統申請一塊內存來存放數據,因為我們已經有了預留的空間。這樣會話費更少的時間。

字典

    與列表和元組不同,字典存儲的是鍵值對,鍵是不可以重複的。

副本問題

在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。

def change(num):     num=10  a=1  change(a)  print("The a is ",a)
The a is  1

如上代碼所示,有一個change函數,此函數的內容是想改變a的值。在函數調用中並未改變a的值,這是因為在函數調用過程中產生了副本,改變的只是副本的值,而不是對象本體。

可變參數

def myprint(arg,*vartuple):     print("輸出:",arg,end=" "),     for var in vartuple:        print(var,end=" ")     return  myprint(10,20,30)
註:因為print每次調用過程中都會自動換行,若需要不換行,則可以在print函數內部增加end=「 」,      雙引號中的內容可自擬。(此方法針對與3.x版本)。若是2.x版本,則可以在print後面加「,」。

參數列表解析

import sys, getopt    def main(argv):     inputfile = ''     outputfile = ''     try:        opts, args = getopt.getopt(argv,"hi:o:",["help","ifile=","ofile="])     except getopt.GetoptError:        print ('test.py -i <inputfile> -o <outputfile>')        sys.exit(2)     for opt, arg in opts:        if opt in ("-h","--help"):           print( 'help:test.py -i <inputfile> -o <outputfile>')           sys.exit()        elif opt in ("-i", "--ifile"):           inputfile = arg        elif opt in ("-o", "--ofile"):           outputfile = arg     print( '輸入的文件為:', inputfile)     print('輸出的文件為:', outputfile)    if __name__ == "__main__":     main(sys.argv[1:])

輸出結果:

python test.py -i in.txt -o out.txt  輸入的文件為: in.txt  輸出的文件為: out.txt    python test.py --ifile in.txt --ofile out.txt  輸入的文件為: in.txt  輸出的文件為: out.txt    python test.py -h  help:test.py -i <inputfile> -o <outputfile>

代碼解析:

  1. 處理所使用的函數叫getopt(),因為是直接使用import導入的getopt模塊,所以要加上限定getopt才可以。
  2. argv代表執行py文件的參數。
  3. "hi: o:"代表執行文件的代碼選項:-h -i -o。其中i和o後面分別有「:」,則代表-i選項和-o選項後面必須加參數。
  4. ["help","ifile=","ofile="]代表的是長選項,若長選項後面未加「=」,則代表該選項後面不加參數;若長選項後面有「=」可用–ifile和–ofile,用法與-i和-o相同。
  5. 一個python的文件有兩種使用的方法,第一是直接作為腳本執行,第二是import到其他的python腳本中被調用(模塊重用)執行。因此if __name__ == '__main__'的作用就是控制這兩種情況執行代碼的過程,在if __name__ == '__main__'下的代碼只有在第一種情況下(即文件作為腳本直接執行)才會被執行,而import到其他腳本中是不會被執行的。

    每個python模塊(python文件,也就是此處的test.py和import_test.py)都包含內置的變量__name__,當運行模塊被執行的時候,__name__等於文件名(包含了後綴.py);如果import到其他模塊中,則__name__等於模塊名稱(不包含後綴.py)。而「main」等於當前執行文件的名稱(包含了後綴.py)。進而當模塊被直接執行時,if __name__ == '__main__'結果為真