1. 程式人生 > >Python基礎學習四:for迴圈,函式,迭代器

Python基礎學習四:for迴圈,函式,迭代器

12、for迴圈

"""

for 變數 in 序列

執行的程式碼塊

"""

list01 = ['joe', 'susan', 'jack' ,'Tom']

# 遍歷列表

for i in list01:

print(i)

pass空操作,無任何意義,

pass語句的使用表示不希望任何程式碼或命令的執行

pass語句是一個空操作,在執行的時候不會產生任何反應

pass語句常出現在if、while、for等各種判斷或者迴圈語句中

當遍歷字典中的值時,可以用字典的value()來直接查詢

13.函式

    組織好的、可重複使用的、使用者實現單一或者關聯功能的程式碼段。函式能夠提高應用的模組性和程式碼的重複利用率,另外也可以根據自己的需要進行使用者自定義函式的建立。

    ①函式的定義規則

        函式程式碼塊以def關鍵詞開頭,後接函式識別符號名稱和圓括號()

        任何傳入引數和變數必須放在圓括號中間。

        函式的第一行語句可以選擇性地使用文件字串——用於存放函式說明

        函式內容以冒號起始,並且縮排。

# def Pname(): # 不妨
#     """
#         獲取姓名
#     :return:
#     """
#     print('大家好我是小明同學!')
#
# Pname()

    ②yield生成器

1.生成一個迭代器

——》yield的作用是把一個函式變成一個generator

    generator 生成器

使用了yield的函式被稱為生成器。

跟普通函式不同的是,生成器是一個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是一個迭代器。

在呼叫生成器執行的過程中,每次遇到yield時函式會暫停並儲存當前所有的執行資訊,返回yield的值,並在下一次從當前位置繼續執行。

注意:可以通過for迴圈或者手動呼叫Xun(5)的next()方法

[x for x in range()]列表推導式

使用生成器可以達到延遲操作的效果,所謂延遲操作就是指在需要的時候產生結果,而不是立即產生結果,節省資源消耗,和宣告一個序列不同的是生成器,在不適用的時候幾乎是不佔記憶體的。

# def getNum(n):
#     i = 0
#     while i <= n:
#         # print(i)
#         # return i  #返回一個i,結束函式的執行
#         yield i
#         i += 1
# 呼叫函式
# getNum(5)
# print(getNum(5))
# a = getNum(5)
# print(next(a))
# print(next(a))
# print(next(a))
# print(next(a))
# print(next(a))
# print(next(a))
# for i in a:   #for迴圈遍歷
#     print(i)
# a = (x for x in range(100000))
# print(a)

2.send()操作可以將值傳送到上一次yield的地方,a = yield 1這個表示式,如果這個表示式只是x = 1,相信每個人都能理解是把1的值賦給了x,而現在等號右邊是一個yield 1,所以先要執行yield 1,然後才是賦值。yield把1值返回到了呼叫者那裡,因為執行等號右邊的yield就是暫停,所以不會對a賦值,那這個表示式的下一步操作:賦值,卻換句話說a = yield只執行了一般,而send()裡面的值的作用是把值轉進當前的yield

# def gen():
#     i = 0
#     while i < 5:
#         temp = yield i         # 並不是個賦值操作
#         print(temp)            # 因為yield之後返回結果到呼叫者的地方,暫停執行
#         i += 1
# a = gen()
# print(next(a))
# print(next(a))
# print(a.send('我是a'))          # 可以將這個值傳送到上一次yield的地方

3.迭代器

迭代器是Python最強大的功能之一,是訪問集合元素的一掌方式。

什麼是迭代物件:可以用for in遍歷的物件都可以叫做是可迭代物件:Iterable

迭代器,可以被next()函式呼叫的並不斷返回下一個值得物件叫做迭代器:iterator,它是一個可以記住遍歷的位置的物件,迭代器物件從集合的第一個元素開始訪問,直到所有的元素被訪問結束。

迭代器只能往前不會後退。迭代器有兩個基本的方法:iter()和next()

字串,列表或元組,集合物件都可用於建立迭代器。

list01 = [1, 2, 3, 4, 5]
# print(next(list01))           # list01不是迭代器所以無法呼叫next
a = iter(list01)
print(next(a))
print(next(a))