今天為大家收集了一些Python的麵試題,最近好多小夥伴給我留言說在學習Python,希望可以多發一些Python的文章。小編非常欣慰有這麼多好學的小夥伴,那大家加油,把Python學好,每天都進步一點點。接下來就把這12道麵試題分享給大家。
1.單引號、雙引號和三引號之間的區別
單引號和雙引號主要是用來表示字符串
比如:
單引號:'python'
雙引號:"python"
區別:
若你的字符串裏麵本身包含單引號,必須用雙引號包裹。
比如:"can't find the log "
三引號
三單引號:'''python ''',也可以表示字符串一般用來輸入多行文本,或者用於大段的注釋。
三雙引號:"""python""",一般用在類裏麵,用來注釋類,這樣省的寫文檔,直接用類的對象__doc__訪問獲得文檔。
2.Python的參數傳遞,是值傳遞還是引用傳遞?
Python的參數傳遞有:
位置參數
默認參數
可變參數
關鍵字參數
函數的傳值到底是值傳遞還是引用傳遞,要看情況
不可變參數用值傳遞:
比如像整數和字符串這樣的不可變對象,是通過拷貝進行傳遞的,因為你無論如何都不可能在原處改變不可變對象。
可變參數是用引用傳遞:
比如像列表,字典這樣的對象是通過引用傳遞,和C語言裏麵的用指針傳遞數組很相似,可變對象能在函數內部改變。
3.什麼是lambda函數?它的好處是什麼?
lambda 表達式,通常是在需要一個函數,但是又不想費神去命名一個函數的場合下使用,也就是指匿名函數。
lambda函數:首要用途是指點短小的回調函數。
lambda [arguments]:expression
>>> a=lambdax,y:x+y
>>> a(3,11)
好處:
lambda能和def做同樣種類的工作,特別是對於那些邏輯簡單的函數,直接用lambda會更簡潔,而且省去取函數名的麻煩。
4.字符串格式化: %和 .format的區別是什麼?
字符串的format函數非常靈活,很強大,可以接受的參數不限個數,並且位置可以不按順序,而且有較為強大的格式限定符(比如:填充、對齊、精度等)。
5.Python是如何進行內存管理的?
Python內部使用引用計數,來保持追蹤內存中的對象,所有對象都有引用計數。
引用計數增加的情況:
一個對象分配一個新名稱
將其放入一個容器中(如列表、元組或字典)
引用計數減少的情況:
使用del語句對對象別名顯示的銷毀
引用超出作用域或被重新賦值
垃圾回收
當一個對象的引用計數歸零時,它將被垃圾收集機製處理掉。
內存池機製
Python提供了對內存的垃圾收集機製,它將不用的內存放到內存池而不是返回給操作係統:
Pymalloc機製:為了加速Python的執行效率,Python引入了一個內存池機製,用於管理對小塊內存的申請和釋放。
對於Python對象,如整數,浮點數和List,都有其獨立的私有內存池,對象間不共享他們的內存池。也就是說如果你分配又釋放了大量的整數,用於緩存這些整數的內存就不能再分配給浮點數。
6.介紹一下except的用法和作用
try…except…except…[else…][finally…]
執行try下的語句,如果引發異常,則執行過程會跳到except語句。對每個except分支順序嚐試執行,如果引發的異常與except中的異常組匹配,執行相應的語句。
如果所有的except都不匹配,則異常會傳遞到下一個調用本代碼的最高層try代碼中。
try下的語句正常執行,則執行else塊代碼。如果發生異常,就不會執行。
如果存在finally語句,最後總是會執行。
7.下麵的代碼會不會報錯?
list = ['a', 'b', 'c', 'd', 'e']
print list[10:]
當試圖訪問一個超過列表索引值的成員將導致 IndexError(比如訪問以上列表的 list[10])。盡管如此,試圖訪問一個列表的以超出列表長度數作為開始索引的切片將不會導致 IndexError,並且將僅僅返回一個空列表。
一個討厭的小問題是它會導致出現Bug ,並且這個問題是難以追蹤的,因為它在運行時不會引發錯誤。
8.以下的代碼的輸出將是什麼? 並進行解釋
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print Parent.x, Child1.x, Child2.x
Child1.x = 2
print Parent.x, Child1.x, Child2.x
Parent.x = 3
print Parent.x, Child1.x, Child2.x
>>>
1 1 1
1 2 1
3 2 3
可能使你困惑的應該是最後一行的輸出結果是 3 2 3 而不是 3 2 1。為什麼改變了 Parent.x 的值還會改變 Child2.x 的值,但是同時 Child1.x 值卻沒有改變?
這個答案的關鍵是:在 Python中,類變量在內部是作為字典處理的。如果一個變量的名字沒有在當前類的字典中發現,將搜索祖先類(比如父類)直到被引用的變量名被找到.
首先,在父類中設置 x = 1 會使得類變量 x 在引用該類和其任何子類中的值為 1。這就是因為第一個 print 語句的輸出是 1 1 1
然後,如果任何它的子類重寫了該值(例如,我們執行語句 Child1.x = 2)該值僅僅在子類中被改變。這就是為什麼第二個 print 語句的輸出是 1 2 1
最後,如果該值在父類中被改變(例如,我們執行語句 Parent.x = 3),這個改變會影響到任何未重寫該值的子類當中的值(在這個示例中被影響的子類是 Child2)。這就是為什麼第三個 print 輸出是 3 2 3了。
9.說出下麵list1,list2,list3的輸出值分別是什麼?
def extendList(val, list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print "list1 = %s" % list1
print "list2 = %s" % list2
print "list3 = %s" % list3
>>>
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']
許多人會錯誤的認為 list1 應該等於 [10] 以及 list3 應該等於 ['a']。認為 list 的參數會在 extendList 每次被調用的時候會被設置成它的默認值 []。
盡管如此,實際發生的事情是,新的默認列表僅僅隻在函數被定義時創建一次。隨後當 extendList 沒有被指定的列表參數調用的時候,其使用的是同一個列表。這就是為什麼當函數被定義的時候,表達式是用默認參數被計算,而不是它被調用的時候。
因此,list1 和 list3 是操作的相同的列表。而list2是操作的它創建的獨立的列表(通過傳遞它自己的空列表作為list參數的值)
10.請寫出一段Python代碼,實現刪除list裏麵重複的元素
1. 使用set函數,set(list)
2. 使用字典函數
>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]
>>> b={}
>>>b=b.fromkeys(a)
>>>c=list(b.keys())
>>> c
11.用sort進行排序,然後從最後一個元素開始判斷
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
a.sort()
last=a[-1]
for i inrange(len(a)-2,-1,-1):
if last==a:
del a
else:last=a
print(a)
12.寫出你認為最Pythonic的代碼
下麵給大家列出一些例子
交互變量
非Pythonic
temp = a
a = b
b = temp
pythonic:
a,b=b,a
判斷其值真假
name = 'Tim'
langs = ['AS3', 'Lua', 'C']
info = {'name': 'Tim', 'sex': 'Male', 'age':23 }
非Pythonic
if name != '' and len(langs) > 0 and info != {}:
print('All True!')
pythonic:
if name and langs and info:
print('All True!')
列表推導式
[x for x in range(1,100) if x%2==0]
zip創建鍵值對
keys = ['Name', 'Sex', 'Age']
values = ['Jack', 'Male', 23]
dict(zip(keys,values))
pythonic的代碼其實有很多,這裏就給大家舉幾個典型的例子。
來源:技術學派頭條號
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答本文介紹火星3D模型師的培訓內容,包括火星地形建模、紋理映射、3D打印等技術,以及火星時代教育的傳授方法。
找尋最好的角色遊戲原畫培訓機構,火星時代教育是不二之選,專業培訓團隊,資深行業導師,打造你的遊戲原畫夢想。”/> <meta name=
脫穎而出的模型設計培訓機構評估,詳細分析火星時代教育在優質教學、多元化課程設計以及專業師資方麵的超越
零基礎华体会hth体育app在线登录 模型培訓 - 如何啟動您的华体会hth体育app在线登录 之旅
零基礎也能學習华体会hth体育app在线登录 。本文將介紹火星時代教育提供的零基礎华体会hth体育app在线登录 模型培訓課程以及如何通過它開始你的华体会hth体育app在线登录 之旅。
火星時代教育的零基礎3D-Max培訓課程為您全方位解析3D-Max設計軟件的使用技巧和操作方法,幫助您無壓力掌握3D-Max並充分提升設計實力
本文詳細解析什麼樣的影視模型培訓中心是優質的,同時強調火星時代教育對於雕塑未來影視模型界英才的重要作用。
1. 打開微信掃一掃,掃描左側二維碼
2. 添加老師微信,馬上領取免費課程資源
同學您好!