常見12個python面試題整理

wangsys發表於2021-09-11

常見12個python面試題整理

1、python有哪些特性?

python是一門解釋性開發語言,主要特點有:

可解釋
具有動態特性
物件導向
簡明簡單
開源
具有強大的社群支援

2、深複製和淺複製之間的區別是?

深複製就是完全複製一個物件複製到另一個物件中,如果你對一個物件的複製做出改變時,不會影響原物件。在Python中使用函式deepcopy()執行深複製,匯入模組copy,

>>> import copy
>>> b=copy.deepcopy(a)

常見12個python面試題整理

淺複製知識複製一個物件的指標不復制其本身,如果我們在複製中改動,會影響到原物件。我們使用函式function()執行淺複製,

>>> b=copy.copy(a)

常見12個python面試題整理

3、列表和元祖之間區別是?

列表和元祖之間主要是可變性不同,列表是可變的而元祖是不可變的,下面列舉的實列說明:

>>> mylist=[1,3,3]
>>> mylist[1]=2
>>> mytuple=(1,3,3)
>>> mytuple[1]=2Traceback (most recent call last):
File "<pyshell#97>", line 1, in <module>
mytuple[1]=2

則會出現以下報錯

TypeError: ‘tuple’ object does not support item assignment

4、什麼是Flask?

Flask是Python編寫的一款輕量級Web應用框架。其 WSGI 工具箱採用 Werkzeug ,模板引擎則使用 Jinja2。Flask使用 BSD 授權。其中兩個環境依賴是Werkzeug和jinja2,這意味著它不需要依賴外部庫。正因如此,我們將其稱為輕量級框架。

Flask會話使用簽名cookie讓使用者檢視和修改會話內容。它會記錄從一個請求到另一個請求的資訊。不過,要想修改會話,使用者必須有金鑰Flask.secret_key。

5、在Python中是如何管理記憶體的?

Python有一個私有堆空間來儲存所有的物件和資料結構。作為開發者,我們無法訪問它,是直譯器在管理它。但是有了核心API後,我們可以訪問一些工具。Python記憶體管理器控制記憶體分配。

另外,內建垃圾回收器會回收使用所有的未使用記憶體,所以使其適用於堆空間。

6、解釋python中的help()和dir()函式?

Help()函式是一個內建函式,用於檢視函式或模組用途的詳細說明

>>> import copy
>> help(copy.copy)
Help on function copy in module copy:
 copy(x)
 Shallow copy operation on arbitrary Python objects.
 See the module’s __doc__ string for more info.

Dir()函式也是內建函式,dir() 函式不帶引數時,返回當前範圍內的變數、方法和定義的型別列表;帶引數時,返回引數的屬性、方法列表。

>>> dir(copy.copy)
執行結果
[‘__annotations__’, ‘__call__’, ‘__class__’, ‘__closure__’, ‘__code__’, ‘__defaults__’, ‘__delattr__’, ‘__dict__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__get__’, ‘__getattribute__’, ‘__globals__’, ‘__gt__’, ‘__hash__’, ‘__init__’, ‘__init_subclass__’, ‘__kwdefaults__’, ‘__le__’, ‘__lt__’, ‘__module__’, ‘__name__’, ‘__ne__’, ‘__new__’, ‘__qualname__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’]

7、什麼是猴子補丁?

在執行期間動態修改一個類或模組。

>>> class A:    def func(self):        print("Hi")
>>> def monkey(self):print "Hi, monkey"
>>> m.A.func = monkey
>>> a = m.A()
>>> a.func()
執行結果:
Hi, Monkey

8、請解釋下使用*args和*kwargs含義?

當我們不知道向函式傳遞多少引數時,比如我們向傳遞一個列表或元組,我們就使用*args。

>>> def func(*args):
    for i in args:
        print(i)  
>>> func(3,2,1,4,7)
執行結果為: 3 2 1 4 7

在不知道該傳遞多少關鍵字引數時,使用**kwargs來收集關鍵字引數

>>> def func(**kwargs):
    for i in kwargs:
        print(i,kwargs[i])
>>> func(a=1,b=2,c=7)
執行結果為:a.1 b.2 c.7

9、python中的字典是什麼?

Python字典是一個容器,可以裝列表,變數,字串,浮點數等。。。。

注意:

1. Python的字典是一對一的形式,key:value,可以理解key是下標,value是內容

標準形式:{a:b},那麼a就相當於下標,value就相當於內容。

2.下標是唯一的,即key賦值的時候不可以重複,不可用變數去賦值他,因為列表是可變的,所有也不能用列表去賦值

3.字典的儲存沒有順序,我們憑藉key值去取value的內容

>>> roots={25:5,16:4,9:3,4:2,1:1}
>>> type(roots)<class 'dict'
>>> roots[9]

執行結果為:
3

字典是不可變的,可以用一個推導式來建立它

>>> roots={x**2:x for x in range(5,0,-1)}
>>> roots

執行結果為:
{25: 5, 16: 4, 9: 3, 4: 2, 1: 1}

10、什麼是負索引?

Python中的序列索引可以是正也可以是負。

如果是正索引,0是序列中的第一個索引,1是第二個索引。

如果是負索引,-1是最後一個索引,-2是倒數第二個索引。

>>> lst=[11,22,33,44,55]
全取列表
>>> lst[:]
[11, 22, 33, 44, 55]
列表倒序
>>> lst[::-1]
[55, 44, 33, 22, 11]
取最後一個
>>> lst[-1]
55

取第一個
>>>lst[0]
11

11、解釋一下python中的成員運輸符?

透過成員運算子‘in’和‘not in’,我們可以確認一個值是否是另一個值的成員

>>> 'me' in 'disappointment'
True >>> 'us' not in 'disappointment'
True

12、講下python中的位運算子?

與(&),按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0

>>> 0b110 & 0b010
2

或(|),按位或運算子:只要對應的二個二進位有一個為1時,結果位就為1

>>> 3|2
3

異或(^),按位異或運算子:當兩對應的二進位相異時,結果為1

>>> 3^2
1

取反(~),按位取反運算子:對資料的每個二進位制位取反,即把1變為0,把0變為1

>>> ~2
-3

左位移(<<),運算數的各二進位全部左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0

>>> 1<<2
4

右位移(>>),把">>"左邊的運算數的各二進位全部右移若干位,>> 右邊的數字指定了移動的位數

>>> 4>>2
1

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3244/viewspace-2833845/,如需轉載,請註明出處,否則將追究法律責任。

相關文章