1. 程式人生 > 其它 >python全棧開發

python全棧開發

必備常識


硬體組成

進位制轉換

註釋

基本資料型別


變數

整型(int)

浮點型(float)

字串(str)

列表(list)

元組(tuple)

字典(dict)

集合(set)

流程控制


if 條件語句

for 迴圈

while 迴圈

函式


定義和呼叫

  • 定義

    - 功能會重複使用、或者程式碼量較多的時候,定義成函式
    - 基本語法
    	def 函式名(引數列表):
            函式體
    - 呼叫
    	函式名()
        
    - 函式定義時不執行函式體,只有當呼叫函式的時候才會執行。因此,只要符合函   數的定義形式,只要不呼叫函式,即便函式體內由語法錯誤或者邏輯錯誤,執行   程式也不會報錯。
    
    
    # ############################################################
    
    #函式定義與呼叫
    def func1():
       print("HelloWorld")
    func1() #列印HelloWorld
    
    
    
    
    
    
    #定義不執行,呼叫才執行
    def func2():
        pri("HelloWorld") #有語法錯誤
    #func2() #呼叫時,才報錯
        
    
  • 引數

    - 引數就是變數在函式中的特殊稱謂,引數根據實際情況定義
    - 形式引數(形參):在函式定義的時候,緊跟在函式名後的變數,相當於數學函   數中的自變數,只起到表示的作用,方便在函式體中使用,沒有具體的值。
    - 實際引數(實參):在函式呼叫的時候,形式引數被賦值後,叫做實際引數,相   當於數學函式中的自變數被賦予具體的值後的名稱。
    - 傳參:呼叫函式時,給形式引數賦值的過程。
    - 位置引數:傳參的一種形式。按照形參的位置順序,依次傳入具體的值。
    - 關鍵字引數:傳參的一種形式。直接以變數賦值的形式(變數名 = 變數值)傳入   具體的資料,此時可以不遵從形參的位置順序。但是,位置引數和關鍵字引數混   用的時候,關鍵字引數必須寫在位置引數的後面。
    - 預設引數:定義時被賦值的形參。在定義的時候可以給形參賦初值,可以根據具   體情況,在呼叫的時候以關鍵字引數的方式重新給該形參賦值。定義函式時,默   認引數寫在普通引數的後面。
    - 可變長度引數:特殊的形參,*引數名(一般寫成 *args) 和 **引數名(一般寫成   **kwargs)。可以接收任意個多餘的引數。以位置引數的形式傳參的多餘引數存   放在元組中,並且元組的名字是args;以關鍵字引數的形式傳入的多餘引數存放   到字典中,並且字典的名字是kwargs。
    
    
    
    # #############################################################
    
    #位置引數和關鍵字引數
    def add_num(x, y, z):
        result = x + y + z
        return result
    
    value = add_num(2, 3, 4)
    # value = add_num(2, z = 4, y = 3)
    print(value)
    
    
    
    
    
    #預設引數和可變長度引數
    def add_anyNum(sumary=0, *args):
        for index in range(0, len(args)):
            sumary += args[index]
        return sumary
    
    value = add_anyNum(1,2,3,4,5,6,7)
    print(value)
    
  • 作用域

常見函式

  • 函式的分類

    - 根據引數分類
    '''
    	1. 無參函式:一般應用於不處理資料的情況
    	2. 有參函式:一般應用於需要處理資料的時候
    '''
    
    - 根據函式體分類
    '''
    	1. 空函式:函式體為pass。一般用於寫程式結構的時候,後面再寫上具體的        功能
    	2. 實體函式:普通的函式,定義的時候有具體的功能程式碼
    '''
    
    - 根據返回值分類
    '''
    	1. 有返回值函式:一般用於處理資料之後返回結果,預設返回None
    	2. 無返回值引數:一般用於不處理資料的函式中
    '''
    

檔案操作


模組


面向物件


面向物件

  • 面向物件與面向過程

      解決一個問題,可能需要用到多個函式,當函式的個數達到十幾個甚至幾十個的時候,找起來會非常的麻煩,大大降低了開發的效率。面向物件就是把這些函式歸到一類,並且以後再次出現這類問題的時候,能夠快速地找到每一步對應的函式;而面向過程中,每次解決同類的問題,程式設計師需要在一堆函式中,準確地找到目標函式。
    
  • 應用場景

      當處理一類問題,要用到多個函式的時候,建議使用面向物件。當然,如果只是為了解決這一個問題,以後不會再處理類似的問題時,沒有必要採取面向物件的程式設計方式。
    
  • 物件和類

    - 類:多個函式放到一個地方,這個地方叫做類
    - 物件:類裡面的所有內容屬於誰,誰就是這個類的物件
    

成員

  • 屬性

    - 屬性就是變數在面向物件中的特殊稱謂
    - 例項屬性(例項變數):封裝到物件中的變數
    - 類變數(類屬性):封裝到類中的變數
    
  • 方法

    - 方法就是函式在面向物件中的特殊稱謂
    - 所有的方法都屬於類
    - 例項方法(物件方法):方法必須含有self引數,主要用於處理封裝到物件中的   資料,只能通過例項呼叫。
    - 類方法:@classmethod裝飾器修飾,self替換為cls引數,主要用於處理類變數   或其他方法。通過類直接呼叫,物件也可以呼叫但是不推薦。
    - 靜態方法:@staticmethod裝飾器修飾,一般用不到引數。通過類直接呼叫,對   象也可以呼叫但不推薦。
    - 屬性:@property裝飾器修飾,只能由一個self引數,一般會有返回值,只能通   過物件呼叫,呼叫的時候不要加括號。
    - 特殊方法
    	'''
    		1. __init__(self):初始化方法,例項化物件時自動呼叫,主要用於            獲取物件中封裝的資料
    		2. __new__(self):構造方法,用於建立空物件(例項化物件的時候,            先執行構造方法建立物件,再執行初始化方法)
    		3. __call__(self):類中定義call方法後,物件加括號執行call方法
    		4. __str__(self):類中定義str方法後,列印物件的時候執行該方法
    		5. __dict__(self):將物件中的屬性轉換為字典形式
    		6. __enter__(self)__exit__(self,exc_type,exc_val,exc_tb)              _:上下文管理。主要用於在類中做檔案操作,在類中,定義enter方            法和exit方法,with 類():... 首先執行enter方法,在執行with            類中的方法,最後執行exit中的方法
    		7. __add__(self):兩個物件相加
    	'''
    - 內建函式
    '''
    	1. issubclass(A, B):判斷A是否是B的派生類,基類的基類也滿足
    	2. isinstance(A, B):判斷A是否是B的例項,B可以是基類
    	3. super():找到基類。如果派生類中的方法與基類中的方法名衝突,但是        想要執行基類中的方法,可以super().方法()。如果多個基類中都有,          只找第一個。
    '''
        
        
        
        
        
       
    
    class Student(object):
        identity = "person"
    
        # 1.例項方法(繫結方法)
        def get_information(self, name, age, height, weight):
            self.name = name
            self.age = age
            self.height = height
            self.weight = weight
    
        # 2.類方法
        @classmethod
        def change_identity(cls):
            cls.identity = "student"
    
        # 3.靜態方法
        @staticmethod
        def who_is():
            print("I am a boy.")
    
        # 4.屬性
        @property
        def bmi(self):
            result = float(self.height) / float(self.weight)
            return result
    
    brank = Student()
    brank.get_information("BrankYeen", 18, 1.70, 70)
    Student.change_identity()
    print(Student.identity)
    Student.who_is()
    print(brank.bmi)
    
    
    
    # ##############################################################
    
    
    class Student(object):
        # 初始化方法
        def __init__(self, name , age):
            self.name = name
            self.age = age
            
        # str方法
        def __str__(self):
            return "這是一個Student類的物件"
        
        # call方法
        def __call__(self):
            print(f"{self.name}的年齡是{self.age}")
            
            
    brank = Student("BrankYeen", 18)
    brank()
    print(brank)
    
    
    
    # ############################################################
    
    
    
    class Person(object):
        def func(self):
            print("Person.func")
    
    class Student(Person):
        def func(self):
            super().func()
            print("Student.func")
    
    brank = Student()
    print(isinstance(brank, Student))
    print(isinstance(brank, Person))
    print(issubclass(Student, Person))
    brank.func()
    
  • 成員修飾符

    - 無論是方法還是屬性,都可以分為公有和私有。公有的成員可以在外部進行訪     問,而私有的成員只能在類的內部進行使用。
    - 可以在類中的定義方法,將私有成員作為返回值,此時就可以在外部訪問到私有   成員;也可以直接呼叫內建方法:物件._類名__私有成員
    
    
    
    
    class Student(object):
        __identity = "student"
        
        def private_attribute(self):
            return Student.__identity
    
    brank = Student()
    print(brank._Student__identity)
    print(brank.private_attribute())
    
    

三大特徵

  • 封裝

  • 繼承

    - 如果一個類想要用另一個類中的方法,則需要繼承該類;繼承一個類叫做單繼     承,繼承多個類叫做多繼承,繼承的順序決定了基類的優先順序。
    - 被繼承的類叫做基類(父類),需要繼承的類叫做派生類(子類)
    
    
  • 多型

網路程式設計


併發程式設計


資料庫程式設計