面試準備基礎2

對於python高級中的面試準備2:
(1)迭代器
迭代是訪問集合元素的一種方式。迭代器是一個可以記住遍歷的位置的對象。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
—可迭代對象:直接作用於for循環的數據類型:
一類是集合數據類型,如list、tuple、dict、set、str等;
一類是 generator,包括生成器和帶yield的generator function。
這些可以直接作用於for循環的對象統稱爲可迭代對象

(2)判斷是否可以迭代
可以使用isinstance()判斷一個對象是否是Iterable對象,生成器也是一種迭代器:可迭代對象(iterable)和迭代器(Iterator)。生成器都是Iterator對象,但是list、dict、str都是可迭代,但是不是迭代器,可以使用iter()函數把可迭代對象變成迭代器
對於迭代器和可迭代對象的總結:
凡是可做用於for循環的對象都是Iterable類型(可迭代對象)
凡是可做用於next()函數的對象都是Iterator類型(迭代器對象)
集合數據類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個 Iterator對象。

(3)閉包(編程語言中的一種重要的語法)需要理解python中的引用----就是指針、地址的概念。
什麼是閉包:
閉包就是函數中定義函數,裏面的函數會使用外面函數的變量或者外面函數傳進來的參數等。內部函數就稱爲函數閉包。
閉包的總結:
----1.閉包優化了變量,原來需要類對象完成的工作,閉包也可以完成
----2.由於閉包引用了外部函數的局部變量,則外部函數的局部變量沒有及時釋放,消耗內存

(4)裝飾器
裝飾器是程序開發中經常會用到的一個工作,用好了裝飾器開發效率如虎添翼

def w1(func):
	def test():
		......
		func()
	return test
@w1
def  desc():
	pass

@函數名是python的一種語法糖
這段代碼的執行是這樣的:
第一步:desc() 執行desc函數的時候,相當於desc=w1(desc),此時的desc指向的是test,也就是執行test函數了,中間做了一個函數執行轉移。
第二步:執行test,test函數中會執行desc函數的,這個就是函數裝飾器的使用方法

裝飾器的一些功能:
引入日誌
函數執行時間統計
執行函數前預備處理----相當於在函數之前添加一些驗證的操作或者其他的操作()
執行函數後清理功能
權限校驗等場景
緩存

(5)裝飾器的類型
無參數的函數裝飾器(被裝飾的函數沒有參數)
有參數的函數裝飾器(被裝飾的函數有參數)
以上是針對於函數來說的,還有類裝飾器的

(6)python中的os和sys
os 模塊:這個模塊表示的是python解釋器和操作系統交互的模塊
sys模塊:這個模塊表示的是python解釋器的搜索路徑–模塊調用的搜索路徑,sys.path就是python解釋器的搜索路徑,sys.path.append(),sys.path.insert()-----都可以在python解釋器中插入搜索路徑

(7)python中的作用域
命名空間—也就是作用域:globals、locals。LEGB規則
python使用LEGB的順序來查找一個符號對應的對象
locals -> enclosing function -> globals -> builtins

(8)== 和 is
總結:
is:是比較兩個引用是否指向了同一個對象(引用比較,也就是比較地址是否一樣)
==:是比較兩個對象是否相等,也就是對象裏面的值

(9)深拷貝、淺拷貝
淺拷貝:對於一個對象的頂層拷貝,通俗的理解就是拷貝了引用,並沒有拷貝內容,兩種的引用是一樣的—地址:引用中的內容改變,這兩者都會發生改變,由於兩者都是指向同一片內存的

深拷貝:深拷貝是對於一個對象所有層次的拷貝(遞歸),也就是新開闢一段內存,和之前的東西是沒有關係。其中任意一個發生改變時,都不會影響到另外一方,新舊之分

淺拷貝對不可變類型和可變類型的copy不同—具體使用的時候在看

(10)進制、位運算
進制的理解和表示,以及進制的轉換等操作
位運算:
&按位與
|按位或
^按位異或
~按位異或
<<按位左移

按位右移

用途:直接操作二進制,省內存,效率高
移位運算的操作:左移運算(左移1位)相當於乘以2(把原數據乘以2)

(11)私有化
xx: 公有變量
_x:單前置下劃線,私有化屬性或方法(私有化處理)
_x的變量、函數、類在使用from xxx import *時都不會被導入

(12)property裝飾器的作用
還記得裝飾器(decorator)可以給函數動態加上功能嗎?對於類的方法,裝飾器一樣起作用。Python內置的@property裝飾器就是負責把一個方法變成屬性調用的,簡單理解就是把裝飾的函數當成屬性來調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章