1. 程式人生 > 其它 >Python3簡單的入門筆記

Python3簡單的入門筆記

目錄

Python3簡單的入門筆記

入門級基礎知識:

輸入和輸出:

輸出

  • print("Hello World!");
  • print所帶有的幾條特性:
    1. print()預設結尾自帶換行。
    2. 不想要自動換行的話要加上end = ""
    3. print("Hello","World!");這樣逗號隔開的輸出方式也是允許的,中間會自動加上空格。

輸入

  • 輸入採用的是input()
  • input()所具有的幾個特性:
    1. 括號內可以加一串字串用來充當輸入的提醒語,就和C語言中,我們每次輸入之前都要列印一串提醒的語句的效果相同。

各種格式控制

print的格式控制:

  • 用法:print("格式控制符"%變數)
  • 你會發現這種格式控制的方法沒辦法輸出二進位制數!
  • 如果不在原處指定位數的話,可以採取用*號代替的方式,然後具體的欄位寬度放在後面的二元組的左端。
  • 允許在一條字串中有多個變數的存在,這個就和C語言中的scanf的效果是差不多的。不過要強調的一點是,順序一定要正確,順序一定要正確,順序一定要正確!
  • print("I like %(book_name)s which costs %(price)8.2f$"%{"book_name":"《Universe》","price":1.2343})
    * 這個例子表示的是我們還可以用字典的鍵值的對映結合格式控制符來進行格式控制,這種方法可讀性強。

型別轉換:

  • 轉整數用int()
  • 轉浮點數用float()
  • 轉字串用str()
  • ord()檢視一個字元的ascll碼值。
  • chr()將ascll碼值轉換成對應的字元。
  • list()將其他資料型別(主要是元組)轉化成列表。
  • set()將其他資料型別(主要是元組)轉化成集合。
  • 另外元組也可以轉化成字典,使用的是dict()
    ,不過要求元組是二元組,能左右對應鍵值。
  • eval()可以執行一句符合語法規範的程式碼的字串。比如eval("2*3")

變數

  • 在python中,每一種變數在使用之前,都必須要先賦初值。
  • 可以用type()來檢視某一個變數的具體的型別是什麼。

標誌符

  • 標誌符的規定同C只允許用字母,數字,下劃線來命名且不允許數字開頭。另外不允許使用保留字。
  • 但是對於Python3有一個不同的地方是,它允許使用中文來定義變數!

基本資料型別

number(數字的資料型別)

  • 關於進位制數的表示方法:
  • python有一個非常好的功能是它支援非常大的整數,不需要像C語言那樣考慮很多關於資料型別的容量範圍的問題。
  • 關於浮點數:
  • 其中e是一種科學計數法的表示方法,後面跟的數字表示10的指數。
  • 複數:
  • bool型別的值:
  • Python註釋的使用方法:

    其中,可以使用Crtl+/實現多行註釋、取消。

字串:

  • 字串可以用單引號也可以用雙引號,也就是說不進行特別區分字元與字串。
  • Python3直接支援中文符號,變數名可以直接用中文來起。
  • 轉義字元依然可以在字串中使用。要記得用的是反斜槓\
  • 如果不想讓轉義字元發生轉義,那就要在字串前加上r表示原始字串。
  • 如果一個多行的段落想要用一個字串變數來儲存的話,那就要用三個單引號'''或者三個雙引號"""在頭尾引用起來。
  • 字串相加的效果本質上就是字串直接連線在一起的做法。
  • 字串可以和數字做乘法,相當於執行了多次字串的加法,本身和本身相加。
  • 不能讓字串和數字相加。

列表:

  • 列表是寫在方括號[]之間,元素之間用逗號分隔開的資料型別。
  • 列表中的元素可以是多樣化的,它可以支援數字,可以支援字串,甚至可以支援列表(也就是巢狀)。
  • 列表對元素的訪問有兩種方式,一種是像陣列那樣,用下標索引法來訪問。
  • 另一種方法是擷取其中的一個片段,稱為切片訪問。比如這樣[0:2]不過要注意的一點是,在做列表切片的時候,得到的新列表是不包含右界的那個下表所對應的元素的。上面的例子會得到的只有list[0],list[1]這兩個元素。
  • -1表示倒數第一個數,-2依次類推。
  • 切片步長可以隔著對應步長來取元素。[起始下標:終止下標:步長],如果沒有起始下標和終止下標的話,會預設從頭到尾遍歷。圖中list=[1,2,3,4,5,6]
  • 對於巢狀的列表的訪問,要先在第一層列表中訪問到所需要訪問的第二層列表所在的位置,然後再用列表的訪問方式訪問第二層列表中的元素。
  • 字串是一種特殊的列表,所以對列表的操作都可以同樣被運用到字串上。

元組Tuple:

  • 元組和列表相似,不同之處在於元組的元素不能修改。
  • 元組寫在()中,元素之間用逗號隔開。
  • 元組中元素的型別可以不相同,這點和列表相似,同時它也支援巢狀。

集合Set:

  • 集合符合數學上對集合的定義,即確定性,無序性,互異性。所以集合是一個無序的不包含重複元素的序列。
  • 集合主要用來進行成員關係的測試和刪除重複元素。(集合會自動刪除重複的元素)
  • 集合的初始化可以用大括號{}或者set()函式。
  • 可以用in來判斷一個元素是否在一個集合中,返回的結果是bool型的值。比如對於set1 = {1,2,3,4,5}3 in set1返回的結果就是True。

集合的運算:

  • 集合的並,並集運算。本質上用的是邏輯運算中的邏輯或|
  • 集合的交,交集運算。本質上用的是邏輯運算中的邏輯與&
  • 集合的差,差集運算。本質上用的是-減法運算。比如set1 - set2得到的集合是從set1中取出set1與set2共有的那一部分元素後得到的集合。
  • 集合的補,補集運算。set1 ^ set2,補集運算得到的集合是除去兩個集合中同時存在的元素後剩下的元素所組成的集合便是這兩個集合的補集。另,兩個集合的補集等於這兩個集合的並集與他們的交集的差。 set1 ^ set2 = (set1 | set2) - (set1 & set2)

字典dictionary:

  • 字典是一種對映型別,用{}標識,它是一個無序的 鍵(key):值(value)對 集合。
  • 鍵必須使用不可變的型別,在同一個字典中,鍵是唯一的。
  • 字典中的元素是通過鍵來存取的。
  • 字典很想C++中的map容器的使用方法,它的載入一個數據的方法和修改某一個鍵的值的方法,都與map一樣。
  • 字典在使用之前一般要初始化,最常用的初始化是新建一個空的字典:dic = {}

  • 可以用dict()方法:
    • 利用元組(二元組)來構造字典,二元組的左值為鍵,右值為對應的值。
    • 也可以直接用賦值的方式直接讓dict(鍵1= 值1,鍵2= 值2)這樣的方式來構造字典。
  • 字典常用內建函式:
    • .values()檢視字典中所有的值。
    • .keys()檢視字典中所有的鍵。
    • .clear()清空字典。

基本運算:

算術運算:

  • 其中比較特殊的是:
    • **可以作為指數的運算子比如10**3指的就是1000.
    • //代表商的整數部分,向下取整也就相當於直接省略小數部分,相當於C語言中的/而python中的/的效果卻是等同於數學意義上的除法。
    • 求餘運算的一些特點,就是結果的符號同符號右邊的數:

比較運算:

  • 算術運算的優先順序高於比較運算,也就是說允許比較運算子的兩邊存在算術表示式。

賦值運算:

  • 賦值運算子左邊是變數右邊可以是變數也可是常量也可是表示式。

邏輯運算:

  • 在邏輯運算中會把0視作False而其他非零值視為True。
  • 反過來,在邏輯運算中,Fasle確實等於0,但True只能等於1,其他非零值(除了1)只是可以視為True但並不等於True。
  • or運算:
  • 左為x值,右為y值,如果左為True就返回x,否則,若右為True則返回y。

程式結構和控制語句:

Python的行:

  • python的每一條語句並不存在像C語言的;一樣的結束符號,因此客觀上來講,python會把一行看成一條語句,也就是說我們不能直接把條比較長的語句直接寫在多行,如果需要這樣操作的話,必須在行末加上\才行。
  • 另外什麼情況下可以不需要斜槓也能支援多行處理呢?

流程控制:

  • 順序,分支,迴圈。
  • 程式碼塊由縮排開始,由逆縮排結束。
  • 分支語句:
    • if-else結構同C。
    • if-elif-else結構同C的if-else if-else結構。
  • 迴圈語句:
    •  while 條件:
       	迴圈體
      
    •  for 迴圈變數 in 序列:
       	語句塊
      
    • for與range的配合可以直接控制迴圈的次數:
    • 有以下兩種方式,一種是指定次數,另一種是指定切片。沒有指定開頭開始的位置的的話都是預設從0開始。

列表推導式:

  • 效果有點和給定一個表示式後跟它的兩個變數的取值集合的效果類似。
  • 如果C語言要達到這樣的效果是需要有邏輯與的介入才能夠實現好這樣的操作的,但是python可以支援直接操作,這樣更符合數學直觀。
  • break語句用於直接終止break所在層的迴圈。
  • continue語句用於跳過迴圈體後續的還沒執行的語句,直接進入到下一層迴圈中。
  • pass語句本質上就是一個佔位語句,沒有任何的實際作用,主要用於提升程式碼的可讀性,和維持框架的整體性,比如在一些分支中有一些分支是需要考慮到的,但是考慮到後本身又不需要執行對應的語句,這時候就可以用pass語句來佔位,表示我們從邏輯上也考慮到了對應的情況,先佔個位置,從程式的維護來說,也方便後續程式要維護的情況下,便於後來者讀懂程式的分支邏輯。

函式:


  • 函式定義:
def 函式名稱(引數1,引數2,.....):
	"作為函式說明的一個文件字串"  #相當於一條簡明的使用說明。(可選)
	函式體
	return(返回值)	
  • 函式呼叫:
    用函式名稱加上引數的形式來呼叫。
  • 一些不同於C的特點:
    • 關於多個值返回的問題,在Python中,可以直接返回一個元組,後續再對元組進行拆分就可以得到多個值了。
    • 以及在引數的設定上,又必選引數可選引數的區別。可選引數必須被賦予一個預設的值,並且可選引數必須放在必選引數的後面。
    • 可以使用函式名.__doc__來列印相關函式的幫助文件資訊。比如:

      所以當我們對一些要用的函式不太清楚的時候,可以通過列印它的__doc__資訊來了解它。
    • 對所返回的元組進行拆包的方式就是,返回的元組的個數是多少個,那我們就在賦值語句的左側按對應的順序設定對應數量的變數即可。假設當前函式fun將返回一個三元組,於是我們便可以這樣接收返回值。v1,v2,v3 = fun()

全域性變數與區域性變數


  • 在Python中要求如果在某一個函式中要改變某一個全域性變數的值的話,那必須在這個函式內部用global語句來宣告這個變數以表示這個變數是一個全域性變數, 這個就有點類似在C++/C語言中進行多檔案程式設計的時候,在標頭檔案中定義的全域性變數,需要加上extern的外部宣告,並且在對應的需要使用的對應檔案中依然要對相關的全域性變數在當前檔案中也再一次進行宣告(但是不加extern),這樣才允許使用這個全域性變數。

  • 有點像C語言中的結構體,但是功能上應該高於結構體。其中的類體就相當於結構體,只不過範圍更廣,它不僅包含了物件還包含了方法。
  • class語句來宣告。
  • 一個關於類的具體例子:
  • 一個關鍵的點是,在類中所定義的所有的方法都必須帶上self這個引數,儘管在具體賦值的時候並不需要賦值該引數,但是類中的每一個方法(本質是函式),都需要帶上這個引數。
  • 在例項化類的過程中會預設呼叫類中的__init__函式,所以僅需要用類名並傳入初始化所需要的引數即可。而對於其他的程式語言的話,往往需要new這個關鍵字。

檔案:

  • 以上為python中對檔案的讀寫方法。

異常:

  • 以上是Python中對異常的情況進行處理的相關的執行框架。
  • try:語句下的語句塊是待執行的語句部分。
  • except (異常) :語句下的語句塊是執行當try:中的語句出現了異常,並且被捕捉到後,程式會執行的內容。特別地,當不知道具體的異常時什麼的情況下,可以直接使用except:,此時程式依然會捕捉髮生的異常,只不過不方便進行具體異常的提示而已。
  • else:部分是try:中的語句沒有出現異常的情況下程式所執行的語句塊。
  • finally:語句下的語句塊是無論異常是否發生都會執行的語句塊。

匯入外部庫:

  • import語句可以後跟庫名直接匯入某一個庫。
  • from (庫)import (具體方法)可以從某一個庫中具體匯入某一個具體的方法。
  • import (庫)as (別名)匯入庫後可以用庫的別名來使用它,更簡潔方便。

獲取幫助資訊:

  • 使用dir(object)來獲取object的所有的方法。
  • 使用help(object)來獲取object是如何工作的,相當於dir()的詳細版。

鳴謝:《深度學習應用開發-TensorFlow實踐》---吳明暉 、李卓蓉 、金蒼巨集。