20201121 第十二堂 物件導向(上)
20201121 第十二堂 物件導向(上)
列表推導式
- 舊列表 -> 新列表
- 語法:
- [表示式 for 變數 in 舊列表]
- [表示式 for 變數 in 舊列表 if 條件]
- 練習:
-
過濾長度小於等於3的人名
names = [‘Amy’,‘Clara’,‘Apple’,‘Tom’,‘Chanel’]
result = [name for name in names if len(name) > 3]
print(result)
結果:
[‘Clara’, ‘Apple’, ‘Chanel’] -
再將所有名字首字母都大寫
names = [‘Amy’,‘clara’,‘Apple’,‘tom’,‘chanel’]
result = [name.capitalize() for name in names if len(name) > 3]
print(result)
結果:
[‘Clara’, ‘Apple’, ‘Chanel’] -
將 1-100之間能夠被3整除的組成一個新的列表
new_list = [i for i in range(1,101) if i % 3 ==0]
print(new_list)
結果:
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99] -
將 1-100之間既能夠被3和5整除的組成一個新的列表
new_list = [i for i in range(1,101) if i % 3 == 0 and i % 5 == 0]
print(new_list)
結果:
[15, 30, 45, 60, 75, 90]
-
生成器(瞭解)
-
生成器的作用:解決資源優化的問題,節省記憶體
-
當我們建立一些程式碼的時候,運算出來的結果非常大,但是我們往往只運用其中幾個資料,那麼這種情況會很浪費以及佔用記憶體資源。因此使用生成器,我們可以在使用資料的時候,將需要運動的資料提取出來,就不需要全部資料執行一遍。
-
生成器該如何創捷?
-
可以通過列表推導式來得到生成器,將中括號變成括號
0-10之內分別和3相乘的列表new_list = [x * 3 for x in range(21)]
print(type(new_list)) 列表g = (x * 3 for x in range(21))
print(type(g)) 生成器只需要變成括號
方法一:呼叫_ next _ ( )得到元素
方法二:通過next()來得到元素
g = (x * 3 for x in range(21))
print(type(g))
print(g.next())
print(g.next())
print(next(g))呼叫第一次,提取的是第一個元素,第二次是第二個元素,第三次是第三個元素,以此類推
-
通過函式的方式來得到生成器
只要函式中出現了yield,那麼這個函式就是生成器
def fn1():
num = 0
while True:
num += 1
yield num
g = fn1()
print(g)
print(g.next())
print(g.next())
print(next(g))結果:
<generator object fn1 at 0x000001F7D554CA50>
1
2
3
-
迭代器
- 迭代:獲取元素的一個過程
- 可迭代物件:
- 列表,集合,元組,字串…只要能夠遍歷,就是可迭代物件
- 生成器
- 如何來判斷一個物件是否是可迭代的?
-
isinstance()檢查一個物件是否是另一個物件的例項
lst = [1,2,3,4,5]
print(isinstance(lst,Iterable))
列表True
print(isinstance(‘123’,Iterable))
字串True
print(isinstance(123,Iterable))
整數False
g = (x * 3 for x in range(21))
print(isinstance(g,Iterable))
生成器True -
可以被next()函式呼叫,並不斷返回下一個值的物件稱之為迭代器,Iterator
-
可迭代的物件不是迭代器
lst = [1,2,3,4,5]
print(next(lst))
TypeError: ‘list’ object is not an iterator -
通過iter()將可迭代物件變成一個迭代器
lst = [1,2,3,4,5] lst = iter(lst) print(next(lst)) print(next(lst)) 結果: 1 2
-
物件導向
面向的基本結構
- 程式在執行當中,所有的資料都是存在記憶體當中執行
- 物件就是記憶體中專門用來儲存指定資料的一塊區域
- 物件實際上就是一個容器。專門用來儲存資料的容器
- 物件的結構
- id(標識)
- type(型別)型別決定了物件有那些功能
- value(值)物件中儲存的具體資料
物件導向的簡介
- Python就是一個物件導向的語言
1.我穿衣服出門
2.我騎上了自行車
3.我把自行車放到停車處
4.我去買了瓶水
5.我結賬
6.我起自行車回家
7.我回到家喝水
整個結果就是我在家喝水 - 程式導向
- 在程式當中把整個的邏輯分解成一個個小的步驟去完成
- 好處:非常清晰,符合人的思維邏輯
- 缺點:複用性比較低,可能只適用一個功能
- 物件導向
- 我出去買水回家喝水
- 物件導向編寫的程式碼比較容易維護,容易服用。但是不太符合人的思維邏輯,編寫起來有點麻煩。
類的簡介
-
類(class)
-
類是一張圖紙,在程式中我們需要根據類來建立多個物件
-
Python內建的物件,如:int,str,list,tuple…
-
在開發的時候,只用Python提供的物件是不能夠滿足我們的需求,這個時候要自定義物件
-
物件是類的例項(instance)
-
類就是用來建立物件的物件,類是type型別的物件
‘’’
class 類名([父類]):
程式碼塊
‘’’
class MyClass():
passprint(MyClass)
<class ‘main.MyClass’>
mc = MyClass()
mc是MyClass這個類建立出來的物件,mc是MyClass類的例項mc2 = MyClass()
mc3 = MyClass()
mc4 = MyClass()r = isinstance(mc2,MyClass)
print®
True
-
-
類的定義:類和物件都是對現實生活中事物的抽象
-
實際上所有事物是由兩部分組成:資料(屬性)和行為(方法)
-
在類的程式碼塊當中,我們可以定變數和函式
在類中定義的變數,我們稱之為屬性(或者說是所有例項的公共屬性)。也就是所有例項都可以訪問這些變數嘗試定義一個人類:
class Person:
a = 1
b = 2
p1 = Person()
p2 = Person()
print(p1.a,p2.b)
結果: 1 2呼叫方法:物件.方法名()
class Person:
name = ‘葫蘆娃’
公共屬性,所有例項都可以訪問
p1 = Person()
p2 = Person()
print(p1.name,p2.name)
結果:葫蘆娃 葫蘆娃 -
在類中定義函式我們稱之為方法,這些方法都可以通過該類的例項來訪問
class Person: def speak(a): TypeError: speak() takes 0 positional arguments but 1 was given需要新增一個實參 print('hello...') p1.speak() 結果:hello...
-
方法呼叫和函式呼叫的區別:
如果是函式呼叫,函式由幾個形參,我們就會傳遞幾個實參
如果是方法呼叫,預設傳遞一個引數,所以方法中至少要定義一個形參
相關文章
- 物件導向(上)物件
- Java課堂筆記(二):物件導向Java筆記物件
- java物件導向(上)Java物件
- Python物件導向(上)Python物件
- 物件導向-物件導向思想物件
- Java物件導向詳解-上Java物件
- Java語言之物件導向—類與物件(上)Java物件
- 物件導向與程式導向物件
- 程式導向與物件導向物件
- “程序導向”和“物件導向”物件
- 物件導向物件
- 物件導向,搞定物件物件
- JAVA物件導向基礎--物件導向介紹Java物件
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- PHP物件導向PHP物件
- 物件導向 -- 反射物件反射
- JavaScript 物件導向JavaScript物件
- JS物件導向JS物件
- Java物件導向Java物件
- Python——物件導向Python物件
- 物件導向--下物件
- scala物件導向物件
- 物件導向(下)物件
- Python物件導向Python物件
- 物件導向(oop)物件OOP
- [Java物件導向]Java物件
- python 物件導向Python物件
- Java — 物件導向Java物件
- python-程式導向、物件導向、類Python物件
- Python如何設計物件導向的類(上)Python物件
- Java物件導向——類與物件Java物件
- Js物件導向(1): 理解物件JS物件
- php中的程式導向與物件導向PHP物件
- 初識物件導向物件
- 物件導向拾遺物件
- 物件導向--繼承物件繼承
- java物件導向(中)Java物件
- python物件導向(一)Python物件