o 1. 解釋一下 Python 中 pass 語句的作用?
o 2. 簡述你對 input()函數的理解
o 3. Python 中的 is 和==
o 4. Python 中的作用域
o 5. 三元運算寫法和應用場景?
o 6. 了解 enumerate 么?
o 7. 列舉 5 個 Python 中的標準模塊
o 8. 如何在函數中設置一個全局變量
o 9. pathlib 的用法舉例
o 10. Python 中的異常處理,寫一個簡單的應用場景
o 11. Python 中遞歸的最大次數,那如何突破呢?
o 12. 什么是面向對象的 mro
o 13. isinstance 作用以及應用場景?
o 14. 什么是斷言?應用場景?
o 15. lambda 表達式格式以及應用場景?
o 16. 新式類和舊式類的區別
o 17. dir()是干什么用的?
o 18. 一個包里有三個模塊,demo1.py、demo2.py、demo3.py,但使用 from tools import * 導入模塊時,如何保證只有 demo1、demo3 被導入了。
o 19. 列舉 5 個 Python 中的異常類型以及其含義
o 20. copy 和 deepcopy 的區別是什么?
o 21. 代碼中經常遇到的*args, **kwargs 含義及用法。
o 22. Python 中會有函數或成員變量包含單下劃線前綴和結尾,和雙下劃線前綴結尾,區別是什么?
o 23. w、a+、wb 文件寫入模式的區別
o 24. 舉例 sort 和 sorted 的區別
o 25. 什么是負索引?
o 26. pprint 模塊是干什么的?
o 27. 解釋一下 Python 中的賦值運算符
o 28. 解釋一下 Python 中的邏輯運算符
o 29. 講講 Python 中的位運算符
o 30. 在 Python 中如何使用多進制數字?
o 31. 怎樣聲明多個變量并賦值?
1.解釋一下 Python 中 pass 語句的作用?
答:pass 實際上就是一個占位符,在寫一個函數但是不確定里面寫啥的時候,這個時候可以使用 pass。示例如下
def foo():
pass
2.簡述你對 input()函數的理解
答:
在 Python3 中 input 函數可以接收用戶輸入的字符串。
然后根據程序的需要轉換成所需格式即可。
3.Python 中的 is 和==
答:
==的作用是判斷兩個對象的值是否相同,is 表示的誰是誰,這也就意味著對象完全相等。我們知道一個對象有各自的內存地址和對應的值,當內存地址和值都相同的時候使用 is 可以得到結果 True。另外需要注意的下面兩點特殊的情況。
這些變量很可能在許多程序中使用。 通過池化這些對象,Python 可以防止對一致使用的對象進行內存分配調用。
1)介于數字-5 和 256 之間的整數
2)字符串僅包含字母、數字或下劃線
4.Python 中的作用域
答:
Python 中,一個變量的作用域總是由在代碼中被賦值的地方所決定
當 Python 遇到一個變量的話它會按照這的順序進行搜索
本地作用域(Local)—>當前作用域被嵌入的本地作用域(Enclosing locals)—>全局/模塊作
5.三元運算寫法和應用場景?
答:
Python 中的三元運算又稱三目運算,是對簡單的條件語句的簡寫。 是一種比較 Pythonic 的學法,形式為:val = 1 if 條件成立 else 2 代碼示例如下:
a = 2
b = 5
# 普通寫法
if a > b:
val = True
else:
val = False
# 改為三元運算符后
val = a if a > b else b
print(val) # 5
6.了解 enumerate 么?
答:
enumerate 可以在迭代一個對象的時候,同時獲取當前對象的索引和值。 代碼示例如下
from string import ascii_lowercase
s = ascii_lowercase
for index, value in enumerate(s):
print(index, value)
7.列舉 5 個 Python 中的標準模塊
答:
pathlib:路徑操作模塊,比 os 模塊拼接方便。
urllib:網絡請求模塊,包括對 url 的結構解析。
asyncio: Python 的異步庫,基于事件循環的協程模塊。
re:正則表達式模塊。
itertools:提供了操作生成器的一些模塊。
8.如何在函數中設置一個全局變量
答:
通過使用 global 對全局變量進行修改。
n = 0
def foo():
global n
n = 100
foo()
print(n)
x = 0
9.pathlib 的用法舉例
答:
pathlib 可以對文件以及文件的其他屬性進行操作。比較喜歡的一點是路徑拼接符"/"的使用。
10.Python 中的異常處理,寫一個簡單的應用場景
答:
比如在計算除法中出現為 0 的情況出現異常
try:
1 / 0
except ZeroDivisionError as e:
print(e.args)
11.Python 中遞歸的最大次數,那如何突破呢?
答:
Python 有遞歸次數限制,默認最大次數為 1000。通過下面的代碼可以突破這個限制
import sys
sys.setrecursionlimit(1500) # set the maximum depth as 1500
另外需要注意的是 sys.setrecursionlimit() 只是修改解釋器在解釋時允許的最大遞歸次數,此外,限制最大遞歸次數的還和操作系統有關。
12.什么是面向對象的 mro
答:
Python 是支持面向對象編程的,同時也是支持多重繼承的。一般我們通過調用類對象的 mro()方法獲取其繼承關系。
13.isinstance 作用以及應用場景?
答:
isinstance 是判斷一個對象是否為另一個對象的子類的,例如我們知道在 Python3 中 bool 類型其實是 int 的子類,所以我們可以對其檢測。
print(isinstance(True,int))
14.什么是斷言?應用場景?
答:
在 Python 中是斷言語句 assert 實現此功能,一般在表達式為 True 的情況下,程序才能通過。
#assert()方法,斷言成功,則程序繼續執行,斷言失敗,則程序報錯
# 斷言能夠幫助別人或未來的你理解代碼,
# 找出程序中邏輯不對的地方。一方面,
# 斷言會提醒你某個對象應該處于何種狀態,
# 另一方面,如果某個時候斷言為假,
# 會拋出 AssertionError 異常,很有可能終止程序。
def foo(a):
assert a==2,Exception("不等于 2")
print("ok",a)
if __name__ == '__main__':
foo(1)
15.lambda 表達式格式以及應用場景?
答:
lambda 表達式其實就是一個匿名函數,在函數編程中經常作為參數使用。 例子如下
a = [('a',1),('b',2),('c',3),('d',4)]
a_1 = list(map(lambda x:x[0],a))
16.新式類和舊式類的區別
答:
Python 2.x 中默認都是經典類,只有顯式繼承了 object 才是新式類,Python 3.x 中默認都是新式類,經典類被移除,不必顯式的繼承 object。 新式類都從 object 繼承,經典類不需要。 新式類的 MRO(method resolution order 基類搜索順序)算法采用 C3 算法廣度優先搜索,而舊式類的 MRO 算法是采用深度優先搜索。 新式類相同父類只執行一次構造函數,經典類重復執行多次。
17.dir()是干什么用的?
答:
當在使用某一個對象不知道有哪些屬性或者方法可以使用時,此時可以通過 dir() 方法進行查看。
18.一個包里有三個模塊,demo1.py、demo2.py、demo3.py,但使用 from tools import *導入模塊時,如何保證只有 demo1、demo3 被導入了。
答:
增加_init_.py 文件,并在文件中增加:
__all__ = ['demo1','demo3']
19.列舉 5 個 Python 中的異常類型以及其含義
AttributeError
對象沒有這個屬性
NotImplementedError
尚未實現的方法
StopIteration
迭代器沒有更多的值
TypeError
對類型無效的操作
IndentationError
縮進錯誤
20.copy 和 deepcopy 的區別是什么?
答:
copy.copy()淺拷貝,只拷貝父對象,不會拷貝對象的內部的子對象。 copy.deepcopy()深拷貝,拷貝對象及其子對象。
21.代碼中經常遇到的*args, * *kwargs 含義及用法。
答:
在函數定義中使用 *args 和**kwargs 傳遞可變長參數。 *args 用來將參數打包成 tuple 給函數體調用。 **kwargs 打包關鍵字參數成 dict 給函數體調用。
22.Python 中會有函數或成員變量包含單下劃線前綴和結尾,和雙下劃線前綴結尾,區別是什么?
答:
“單下劃線” 開始的成員變量叫做保護變量,意思是只有類對象和子類對象自己能訪問到這些變量; “雙下劃線” 開始的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據。
以單下劃線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用“from xxx import *”而導入;以雙下劃線開頭的(__foo)代表類的私有成員;
以雙下劃線開頭和結尾的(_foo)代表 Python 里特殊方法專用的標識,如 _init()代表類的構造函數。
代碼示例
class Person:
"""docstring for ClassName"""
def __init__(self):
self.__age = 12
self._sex = 12
def _sex(self):
return "男"
def set_age(self,age):
self.__age = age
def get_age(self):
return self.__age
if __name__ == '__main__':
p=Person()
print(p._sex)
#print(p.__age)
#Python 自動將__age 解釋成 _Person__age,于是我們用 _Person__age 訪問,這次成功。
print(p._Person__age)
23.w、a+、wb 文件寫入模式的區別
答:
w 表示寫模式支持寫入字符串,如果文件存在則覆蓋。 a+ 和 w 的功能類型不過如果文件存在的話內容不會覆蓋而是追加。 wb 是寫入二進制字節類型的數據。
24.舉例 sort 和 sorted 的區別
答:
相同之處 sort 和 sorted 都可以對列表元素排序,sort() 與 sorted() 的不同在于,sort 是在原位重新排列列表,而 sorted() 是產生一個新的列表。 sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作。
list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。
25.什么是負索引?
答:
負索引一般表示的是從后面取元素。
26.pprint 模塊是干什么的?
答:
pprint 是 print 函數的美化版,可以通過 import pprint 導入。示例如下
import pprint
pprint.pprint("this is pprint")
27.解釋一下 Python 中的賦值運算符
答:
通過下面的代碼列舉出所有的賦值運算符
a=7
a+=1
print(a)
a-=1
print(a)
a*=2
print(a)
a/=2
print(a)
a**=2
print(a)
a//=3
print(a)
a%=4
print(a)
28.解釋一下 Python 中的邏輯運算符
答:
Python 中有三個邏輯運算符:and、or、not
print(False and True) #False
print(7<7 or True) #True
print(not 2==2) #False
29.講講 Python 中的位運算符
答:按位運算符是把數字看作二進制來進行計算的。Python 中的按位運算法則如下:
下表中變量 a 為 60,b 為 13,二進制格式如下:
a = 0011 1100
b = 0000 1101
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
30.在 Python 中如何使用多進制數字?
答:
我們在 Python 中,除十進制外還可以使用二進制、八進制和十六進制
二進制數字由 0 和 1 組成,我們使用 0b 或 0B 前綴表示二進制數
print(int(0b1010))#10
使用 bin()函數將一個數字轉換為它的二進制形式
print(bin(0xf))#0b1111
八進制數由數字 0-7 組成,用前綴 0o 或 0O 表示 8 進制數
print(oct(8))#0o10
十六進數由數字 0-15 組成,用前綴 0x 或者 0X 表示 16 進制數
print(hex(16))#0x10
print(hex(15))#0xf
32.怎樣聲明多個變量并賦值?
答:
Python 是支持多個變量賦值的,代碼示例如下
#對變量 a,b,c 聲明并賦值
a,b,c = 1,2,3
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
