Python基礎學習(四)

Python 集合:

    set 顧明思義,就是個集合,集合的元素是唯一的,無序的。一個{ }裏面放一些元素就構成了一個集合,set裏面可以是多種數據類型(但不能是列表,集合,字典,可以是元組)

    它可以對列表裏面的重複元素進行去重

list1 = [1,2,3,23,1,4,2]
list1 = set(list1)

集合的關係測試:

a = {1,2,3,4,5}
b = {1,3,5,7,9}

a.symmetric_difference(b) #對稱差集
a.difference(b) #差集
a.intersection(b) #交集
a.union(b) #並集


Python之文件操作:


    ptython 不同模式打開文件的完全列表:

模式描述
r以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。
r+打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。
w打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb以二進制格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
w+打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb+以二進制格式打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
ab以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
a+打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。


    File文件對象屬性

    一個文件被打開後,你有一個file對象,你可以得到有關該文件的各種信息。

    以下是和file對象相關的所有屬性的列表:

屬性描述
file.closed返回true如果文件已被關閉,否則返回false。
file.mode返回被打開文件的訪問模式。
file.name返回文件的名稱。
file.softspace如果用print輸出後,必須跟一個空格符,則返回false。否則返回true。


Python之字符集編碼:

  1. py2裏默認編碼是ascii

  2. Python3.x 源碼文件默認使用utf-8編碼,所以可以正常解析中文,無需指定utf-8編碼。



    轉碼:

    720333-20160805105601403-2095217232.png


Python 函數

    函數是組織好的,可重複使用的,用來實現單一,或相關聯功能的代碼段。

    函數能提高應用的模塊性,和代碼的重複利用率。你已經知道Python提供了許多內建函數,比如print()。但你也可以自己創建函數,這被叫做用戶自定義函數。


    定義一個函數

            你可以定義一個由自己想要功能的函數,以下是簡單的規則:


    • 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號()

    • 任何傳入參數和自變量必須放在圓括號中間。圓括號之間可以用於定義參數。

    • 函數的第一行語句可以選擇性地使用文檔字符串—用於存放函數說明。

    • 函數內容以冒號起始,並且縮進。

    • return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。


    函數參數:

        1.默認參數,如下:address 就是一個默認參數,在沒有傳入值的情況下默認爲“CN”;

def test(name,age,address="CN"):
    print("name:",name)
    print("age:",age)
    print("address", address)

test("lilei", 18)

        2.位置參數,傳入的參數一一對應,不能多也不能少;

test("lilei", 18, "US")

        3.關鍵字參數,可以無序,可以和位置參數公用,但位置參數必須在關鍵字參數之前。

test(age=18,name="lilei")
test("lilei", age=18)

        4.非固定參數,若你的函數在定義時不確定傳入多少個參數,就可以使用非固定參數:*args、**kwargs

def test1(*args):
    print(args)

test1("lilei", 18, "CN")
test1(*["lilei", 18, "CN"])

def test2(**kwargs):
    print(kwargs)
    
test2("Jack",32,"CN","Python",sex="Male",province="ShanDong")


局部變量和全局變量:

    在子程序中定義的變量稱爲局部變量,在程序的一開始定義的變量稱爲全局變量。

    全局變量作用域是整個程序,局部變量作用域是定義該變量的子程序。

    當全局變量與局部變量同名時:

    在定義局部變量的子程序內,局部變量起作用;在其它地方全局變量起作用。

    其中在子程序中用 關鍵字 global 定義全局變量。 


遞歸:

    在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞歸函數。

def calc(n):
    print(n)
    if int(n/2) ==0:
        return n
    return calc(int(n/2))
 
calc(10)

    遞歸特性:

        1. 必須有一個明確的結束條件

        2. 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少

        3. 遞歸效率不高,遞歸層次過多會導致棧溢出(在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章