網(wǎng)站做支付需要準備什么東西嗎/seo技術(shù)培訓唐山
一、面向?qū)ο? ? ?
????????面向?qū)ο缶幊?#xff08;Object-Oriented Programming,簡稱 OOP)是一種程序設計范式,它通過使用“對象”和“類”來組織代碼。Python 是一種面向?qū)ο蟮木幊陶Z言,支持 OOP 的核心概念。 ??
面向過程:
側(cè)重點是過程
按照一定的
順序步驟
完成對某一特定問題的處理如何將大象放入冰箱中?
1-打開冰箱門
2-將大象放入冰箱
3-關(guān)上冰箱門
如何將老虎放入冰箱中?
1-打開冰箱門
2-將老虎放入冰箱
3-關(guān)上冰箱門
如何將獅子關(guān)在籠子中?
1-打開籠子門
2-將獅子趕入籠子中
3-關(guān)上籠子門
面向過程需要針對某一類問題需要重復編寫代碼
面向?qū)ο?#xff1a;
側(cè)重點在對象
將一類問題進行歸納總結(jié),按照一個統(tǒng)一標準處理同一類問題
如何將一項物品放入一個空間內(nèi)?
物品是什么?和空間是什么?
處理的數(shù)據(jù)
處理方式(動作) 函數(shù)功能
打開
關(guān)閉
將一類問題分析后的內(nèi)容進行類的創(chuàng)建,歸納過程
針對類進行創(chuàng)建對象,對象是什么有數(shù)據(jù)本身決定
數(shù)據(jù)是大象,對象就是一個大象對象
大象的處理方式可以通過函數(shù)實現(xiàn)
面向過程的開發(fā) 比較簡單快捷,但是需要重復編寫代碼
面向?qū)ο蟮拈_發(fā) 開發(fā)較復雜,需要考慮一類問題的處理,可以重復利用代碼,不需要針對每個問題重復寫代碼
二、面向?qū)ο筇匦?/h2>
????????面向?qū)ο箝_發(fā)(OOP)的三大主要特性是:封裝(Encapsulation)、繼承(Inheritance)和多態(tài)(Polymorphism)。這些特性使得 OOP 能夠創(chuàng)建模塊化、可維護和可擴展的代碼。下面詳細介紹每個特性:
封裝(Encapsulation)
封裝是將對象的狀態(tài)(屬性)和行為(方法)捆綁在一起,并隱藏對象的內(nèi)部實現(xiàn)細節(jié)。通過封裝,類可以控制其屬性的訪問和修改,這有助于保護對象的完整性和防止外部代碼對其進行不正當?shù)牟僮鳌?/p>
class Person:def __init__(self, name, age):self.__name = name # 私有屬性self.__age = age # 私有屬性def get_name(self):return self.__namedef set_name(self, name):self.__name = namedef get_age(self):return self.__agedef set_age(self, age):if age > 0:self.__age = ageelse:raise ValueError("Age must be positive")# 創(chuàng)建對象
person = Person("Alice", 30)
print(person.get_name()) # 輸出:Alice
print(person.get_age()) # 輸出:30person.set_age(31)
print(person.get_age()) # 輸出:31
繼承(Inheritance)
????????繼承允許一個類(子類)繼承另一個類(父類)的屬性和方法,從而實現(xiàn)代碼重用。子類可以擴展或修改父類的行為。
class Animal:def __init__(self, name):self.name = namedef speak(self):raise NotImplementedError("Subclass must implement abstract method")class Dog(Animal):def speak(self):return f"{self.name} says Woof!"class Cat(Animal):def speak(self):return f"{self.name} says Meow!"# 創(chuàng)建對象
dog = Dog("Buddy")
cat = Cat("Whiskers")print(dog.speak()) # 輸出:Buddy says Woof!
print(cat.speak()) # 輸出:Whiskers says Meow!
多態(tài)(Polymorphism)
????????多態(tài)允許不同類的對象通過相同的接口執(zhí)行不同的操作。它使得代碼可以處理不同類型的對象,而無需知道這些對象的具體類型。
class Animal:def speak(self):raise NotImplementedError("Subclass must implement abstract method")class Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"# 多態(tài)函數(shù)
def make_animal_speak(animal):print(animal.speak())# 使用多態(tài)函數(shù)
dog = Dog()
cat = Cat()make_animal_speak(dog) # 輸出:Woof!
make_animal_speak(cat) # 輸出:Meow!
三、匿名函數(shù)
和函數(shù)的作用一致,都是進行代碼邏輯的封裝,
區(qū)別1 在定義時,匿名函數(shù)可以不指定函數(shù)的名字
區(qū)別2 匿名函數(shù)執(zhí)行實現(xiàn)簡單的計算
區(qū)別3 匿名函數(shù)會自動將計算的結(jié)果返回
定義格式:
lambda 參數(shù)1,參數(shù)2...:計算邏輯(參數(shù)的處理邏輯)
# 匿名函數(shù)的使用
# 加法計算功能
def add(a,b):data = a+breturn datares = add(12,15)
print(res)# 使用匿名函數(shù)實現(xiàn)
# 定義匿名函數(shù)時,需要指定一個變量接收
f = lambda a,b:a+b# 使用變量調(diào)用匿名函數(shù)
print(type(f))
res2 = f(20,30)
print(res2)
使用場景:
? ? ? ? 1、進行簡單的數(shù)據(jù)計算
? ? ? ? 2、匿名函數(shù)當成參數(shù)進行傳遞,實現(xiàn)對數(shù)據(jù)的處理
# 匿名函數(shù)成參數(shù)使用
rdd = [1,2,3,4,5,6]def reduce(f):# f參數(shù) 接收一個累加計算的函數(shù)計算的函數(shù)# 實現(xiàn)數(shù)據(jù)的遍歷過程init = 0for i in rdd:# 遍歷數(shù)據(jù)時進行數(shù)據(jù)的sum求和# 實際的pyspark開發(fā)中,sum求和的計算不在reduce中實現(xiàn),由開發(fā)人員自己編寫計算邏輯# init = init+iinit= f(init,i)return init# 開發(fā)人員在調(diào)用reduce函數(shù)編寫數(shù)據(jù)的累加計算邏輯
res= reduce(lambda a,b:a+b)
print(res)
四、類的構(gòu)成
面向?qū)ο箝_發(fā)的流程
????????1-封裝一個類
????????2-使用類創(chuàng)建一個對象
在封裝一個類的時候需要指定數(shù)據(jù)和行為,數(shù)據(jù)可以通過變量進行定義,在類中不叫變量,稱為屬性,行為可以通過函數(shù)進行定義,在類中稱為方法
class 類名:屬性name = '張三'方法def eat(self):def paly_game(self):# 調(diào)用類創(chuàng)建對象
object = 類名() # 當前對象就是張三# 執(zhí)行某個行為
object.eat()object.paly_game()