迭代器,生成器及內建函式補充

2021-07-12 04:24:24 字數 2181 閱讀 3366

print(vars().keys())

print(vars()) #返回物件的變數,若無引數與dict()方法類似

_name_

name用來規定這個檔案的用處,如果是主檔案(可執行檔案),name== 「main」 否則,name等於模組名

_file_.py檔案的路徑

print(os.path

.dirname(os.path

.dirname(__file__))) #顯示當前目錄的上一級目錄

sys.path() #執行路徑

os.path

.dirname

#檢視當前目錄的上一層

os.path

.join

#拼接

例子:把當前目錄的執行路徑新增到sys.path()

import os

import sys

a1 = os.path

.dirname(__file__)

a2 = "bin"

c1 = os.path

.join(a1, a2)

sys.path

print(sys.path)

_builtins_

內建函式在此

__doc__     #.py檔案的注釋

__package__ #指定.py檔案所在的資料夾,本檔案不顯示

__cached__ #快取,匯入模組時,模組檔案會產生.pyc檔案(略懂)

乙個函式呼叫時返回乙個迭代器,那這個函式就叫做生成器(generator);如果函式中包含yield語法,那這個函式就會變成生成器

def

func

():yield

1yield

2yield

3yield

4

上述**中:func是函式稱為生成器,當執行此函式func()時會得到乙個迭代器。

>>> temp = func()

>>> temp.__next__()

1>>> temp.__next__()

2>>> temp.__next__()

3>>> temp.__next__()

4>>> temp.__next__()

traceback (most recent call last):

file "", line 1, in

stopiteration

例子:

利用生成器自定義range

def

nrange

(num):

temp = -1

while

true:

temp = temp + 1

if temp >= num:

return

else:

yield temp

迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可以不存在或者被銷毀。這個特點使得它特別適合用於遍歷一些巨大的或是無限的集合,比如幾個g的檔案

特點:

a = iter([1,2,3,4,5])aat

0x101402630>

a.__next__()

1a.__next__()

2a.__next__()

3a.__next__()

4a.__next__()

5a.__next__()

traceback (most recent call last):

file "", line

1, in

stopiteration

python 迭代器 生成器 內建函式

迭代器是迭代取值的工具,迭代是乙個重複的過程,每一次重複都是基於上一次的結果而來的.為什麼要用迭代器呢?1.可以不依賴索引取值 2.同一時刻在記憶體中只有乙個值,不會過多的占用記憶體 如何用迭代器?可迭代的物件 但凡內建有 iter 方法的物件都是可迭代的物件,列如str,list,dict,tup...

02 迭代器生成器內建函式

day2迭代器生成器內建函式 列表與生成器表示式的區別 把列表解析的換成 得到的就是生成器表示式 列表解析與生成器表示式都是一種便利的程式設計方式,只不過生成器表示式更加節省記憶體空間 python不但使用迭代器協議,讓for迴圈變得更加通用。大部分內建函式,也是使用迭代器協議訪問物件的 可迭代物件...

迭代器及生成器

user bin env python coding utf 8 1迭代器必需遵循迭代協議,需要使用iter轉換為遵循迭代協議,必須能夠使用next方法。for相當於進行了iter和next兩個方法。把序列 轉換為了可迭代序列 例1 x hellow c x.iter print type c pr...