問題1。 Python的主要功能是什麽?
python特性如下:
- 解釋型
- 動態類型
- 麵向對象
- 簡潔明了
- 免費自由
- 有一個龐大的社區
Q.2。區分深層和淺層拷貝。
深拷貝將對象複製到另一個對象中。這意味著如果您對對象的副本進行更改,則不會影響原始對象。在Python中,我們使用函數 deepcopy(),我們導入拷貝模塊,用法如下:
>>> import copy >>> b=copy.deepcopy(a)
但是,淺拷貝會將一個對象的引用複製到另一個對象。因此,如果我們在副本中進行更改,則會影響原始對象。方法 copy(),用法如下:
>>> b=copy.copy(a)
Q.3。區分列表和元組。
主要區別在於列表是可變的,但元組是不可變的。例子:
>>> mylist=[1,3,3] >>> mylist[1]=2 >>> mytuple=(1,3,3) >>> mytuple[1]=2
Traceback (most recent call last):
File “<pyshell#97>”, line 1, in <module>
mytuple[1]=2
TypeError: ‘tuple’ object does not support item assignment
Q.4。用Python解釋三元運算符。
在Python中,與C++不同,我們沒有?:,但我們有:
[on true] if [expression] else [on false]
如果表達式為True,則執行[on true]下的語句。否則,在[on false]下執行。
以下是如何使用它:
>>> a,b=2,3 >>> min=a if a<b else b >>> min
2
>>> print("Hi") if a<b else print("Bye")
Hi
Q.5。如何在Python中實現多線程?
線程是一個輕量級的進程,並且多線程允許我們一次執行多個線程。如您所知,Python是一種多線程語言。它有一個multi-threading包。
GIL(全局解釋器鎖)確保一次執行單個線程。一個線程保存GIL並在將其傳遞給下一個線程之前做了一些工作。這就產生了並行執行的錯覺。但實際上,它隻是在CPU上輪流輪流。當然,所有傳遞都會增加執行的開銷。
問題6。在Python中解釋繼承。
當一個類繼承自另一個類時,它被稱為繼承自parent /base /super類的子類/派生/子類。它繼承/獲取所有成員(屬性和方法)。
繼承使我們可以重用我們的代碼,並且還可以更輕鬆地創建和維護應用程序。 Python支持以下類型的繼承:
- 單一繼承 – 類繼承自單個基類。
- 多重繼承 – 一個類繼承自多個基類。
- 多級繼承 – 類繼承自基類,而基類又繼承自另一個基類。
- 分層繼承 – 多個類繼承自單個基類。
- 混合遺傳 – 混合繼承是兩種或更多種類型的繼承的組合。
Q.7。什麽是Flask?
Python Flask正如我們之前討論的那樣,是一個用於Python的Web微框架。它基於’Werkzeug,Jinja 2和良好意圖’BSD許可證。它的兩個依賴項是Werkzeug和Jinja2。這意味著它幾乎不依賴於外部庫。因此,我們可以稱之為輕型框架。
會話使用簽名cookie來允許用戶查看和修改會話內容。它會記住從一個請求到另一個請求的信息。但是,要修改會話,用戶必須具有密鑰Flask.secret_key。
Q.8。如何在Python中管理內存?
Python有一個私有堆空間來容納所有對象和數據結構。作為程序員,我們無法訪問它;由解釋器來管理它。但是使用核心API,我們可以訪問一些工具。 Python內存管理器控製分配。
此外,內置的垃圾收集器會回收所有未使用的內存,以便可以將其用於堆空間。
Q.9。在Python中解釋 help()和 dir()函數。
help()函數顯示文檔字符串及其參數的幫助。
>>> import copy >>> help(copy.copy)
有關copy模塊中的方法copy的幫助:
copy(X)
對任意的淺拷貝操作Python對象。
有關詳細信息,請參閱模塊的__doc__字符串。
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__’]
Q.10。每當你退出Python時,所有內存都是de-allocated嗎?
這裏的答案是否定的。該模塊使用循環引用其他對象或從全局命名空間引用的對象,並不總是在退出Python時釋放。
另外,C庫保留的部分內存是不可能de-allocate的。
Q.11。什麽是monkey補丁?
在run-time上動態修改類或模塊。
>>> class A: def func(self): print("Hi") >>> def monkey(self): print "Hi, monkey" >>> m.A.func = monkey >>> a = m.A() >>> a.func() 輸出
Hi,monkey
Q.12。 Python中的字典是什麽?
A python dictionary 是我從未在其他語言中看到過的東西,比如C++或者Java編程。Python中的字典擁有key-value對。
>>> roots={25:5,16:4,9:3,4:2,1:1} >>> type(roots)
>>> roots[9]
3
字典是可變的,我們也可以使用comprehension來創建它。
>>> roots={x**2:x for x in range(5,0,-1)} >>> roots
{25:5,16:4,9:3,4:2,1:1}
Q.13。 * args和** kwargs是什麽意思?
如果我們不知道將多少個參數傳遞給函數,比如當我們想要傳遞一個列表或一個元組值時,我們使用* args。
>>> def func(*args): for i in args: print(i) >>> func(3,2,1,4,7)
3
2
1
4
7
**當我們不知道將會有多少關鍵字參數時,它會獲取關鍵字參數。
>>> def func(**kwargs): for i in kwargs: print(i,kwargs[i]) >>> func(a=1,b=2,c=7)
A.1
B.2
C.7
args和kwargs這個詞是一個慣例,我們可以使用任何東西代替它們,但最好延用管理。
Q.14。編寫Python邏輯來計算文件中的大寫字母數。
>>> import os >>> os.chdir('C:\\Users\\lifei\\Desktop') >>> with open('Today.txt') as today: count=0 for i in today.read(): if i.isupper(): count+=1 print(count)
26
Q.15。什麽是負的索引?
我們來看一個list吧。
>>> mylist=[0,1,2,3,4,5,6,7,8]
與正索引不同,負索引從右邊開始搜索。
>>> mylist[-3]
6
這也有助於從後麵切片:
>>> mylist[-6:-1]
[3,4,5,6,7]
Q.16。你如何本地(in-place)隨機化列表的內容?
為此,我們將從random模塊中導入函數 shuffle()。
>>> from random import shuffle >>> shuffle(mylist) >>> mylist
[3,4,8,0,5,7,6,2,1]
Q.17。用Python解釋 join()和 split()。
join()允許我們通過我們指定的字符將字符串中的字符連接在一起。
>>> ','.join('12345')
“1,2,3,4,5”
split()允許我們在指定的字符周圍分割一個字符串。
>>> '1,2,3,4,5'.split(',')
[‘1’,’2’,’3’,’4’,’5’]
問題18。Python是區分大小寫(case-sensitive)嗎?
如果語言區分myname和Myname之類的標識符,則語言為case-sensitive。換句話說,它關心小寫或大寫。讓我們用Python嘗試一下。
>>> myname='Ayushi' >>> Myname
Traceback (most recent call last):
File “<pyshell#3>”, line 1, in <module>
Myname
NameError: name ‘Myname’ is not defined
如您所見,這引發了NameError。這意味著Python確實是case-sensitive。
Q.19。在Python中標識符可以多長?
在Python中,標識符可以是任意長度。除此之外,我們必須遵循一些規則來命名一個:
- 它隻能以A-Z或a-z中的字符或下劃線開頭。
- 其餘部分可以包含以下內容:A-Z /a-z /_ /0-9。
- 正如我們在前一個問題中所討論的那樣,Python是區分大小寫的(case-sensitive)。
- 關鍵字不能用作標識符。 Python有以下關鍵字:
and | def | False | import | not | True |
as | del | finally | in | or | try |
assert | elif | for | is | pass | while |
break | else | from | lambda | with | |
class | except | global | None | raise | yield |
continue | exec | if | nonlocal | return |
問題20。你如何將字符串轉換為小寫?
我們使用 lower()方法。
>>> 'AyuShi'.lower()
“ayushi”
要將其轉換為大寫,我們使用 upper()。
>>> 'AyuShi'.upper()
“AYUSHI”
另外,要檢查字符串是全部大寫還是全部小寫,我們使用方法 isupper()和 islower()。
>>> 'AyuShi'.isupper()
False
>>> 'AYUSHI'.isupper()
True
>>> 'ayushi'.islower()
True
>>> '@yu$hi'.islower()
True
>>> '@YU$HI'.isupper()
True
因此,像@和$這樣的字符同時滿足大小寫判斷。
此外, istitle()將告訴我們字符串是否屬於標題情況。
>>> 'The Corpse Bride'.istitle()
True
Q.21。 Python中的pass語句是什麽?
我們的代碼中可能有時候還沒有決定要做什麽,但我們必須輸入一些東西才能使它在語法上正確。在這種情況下,我們使用pass語句。
>>> def func(*args): pass >>>
同樣,break終止循環。
>>> for i in range(7): if i==3: break print(i)
0
1
2
最後,continue語句跳到下一次迭代。
>>> for i in range(7): if i==3: continue print(i)
0
1
2
4
五
6
Q.22。什麽是Python中的閉包?
當嵌套函數引用其封閉範圍中的值時,會產生閉包。這裏的重點是它記住了價值。
>>> def A(x): def B(): print(x) return B >>> A(7)()
7
有關閉包的更多深度解析,請參閱Python中的閉包。
Q.23。解釋Python中的//,%和**運算符。
//運算符執行除法(floor division)。它將返回除法結果的整數部分。
>>> 7.0//2
3
普通除法將在這裏返回3.5。
同樣,**執行取冪。
>>> 2**10
1024
最後,%是模數。
>>> 13%7
6
>>> 3.5%1.5
0.5
問題24。什麽是membership操作符?
通過操作符’in’和’not in’,我們可以確認某個值是否是另一個的成員。
>>> 'me' in 'disappointment'
真正
>>> 'us' not in 'disappointment'
真正
Q.25。在Python中解釋identity運算符。
操作符’是’和’不’告訴我們兩個值是否具有相同的身份。
>>> 10 is '10'
False
>>> True is not False
True
Q.26。Python除了10進製,還可以使用那些進製?
在Python中,可以用二進製,八進製和十六進製輸入數字。
- 二進製數由0和1組成。要輸入二進製,我們使用前綴0b或0B。
>>> int(0b1010)
10
要將數字轉換為二進製形式,我們使用 bin()。
>>> bin(0xf)
“0b1111”
- 八進製數可以包含0到7之間的數字。我們使用前綴0o或0O。
>>> oct(8)
“0o10”
- 十六進製數字可以包含0到15之間的數字。我們使用前綴0x或0X。
>>> hex(16)
“為0x10”
>>> hex(15)
“0xf”
問題27。如何獲得字典中所有鍵的列表?
使用函數 keys()。
>>> mydict={'a':1,'b':2,'c':3,'e':5} >>> mydict.keys()
dict_keys([‘a’,’b’,’c’,’e’])
Q.28。帶有前導下劃線的標識符的意義?
由於Python沒有私有變量的概念,因此使用前導下劃線來聲明變量private是一種慣例。這就是為什麽我們不能對我們不想私有的變量這樣做。
Q.29。如何在一個語句中聲明多個賦值?
有兩種方法可以做到這一點:
>>> a,b,c=3,4,5 #This assigns 3, 4, and 5 to a, b, and c respectively >>> a=b=c=3 #This assigns 3 to a, b, and c
Q.30。什麽是tuple unpacking?
這是一種將一組值打包成元組的方法。
>>> mytuple=3,4,5 >>> mytuple
(3,4,5)
這將3,4和5打包成mytuple。
現在,我們將元組中的值解包為變量x,y和z(tuple unpacking)。
>>> x,y,z=mytuple >>> x+y+z
12