牛客網 python (1)
1. python my.py v1 v2 命令執行指令碼,通過 from sys import argv如何獲得v2的引數值?
sys.argv是傳遞給python指令碼的命令列引數【字串】列表 argv[0]為該指令碼自身路徑,其餘為命令列引數
2. 以”\0”結尾是C/C++中存在,在python中不存在
3.
python中主要存在四種命名方式:
1、object #公用方法
2、_object #半保護
#被看作是“protect”,意思是隻有類物件和子類物件自己能訪問到這些變數,
在模組或類外不可以使用,不能用’from module import *’匯入。
#__object 是為了避免與子類的方法名稱衝突, 對於該識別符號描述的方法,父
類的方法不能輕易地被子類的方法覆蓋,他們的名字實際上是
_classname__methodname。
3、_ _ object #全私有,全保護
#私有成員“private”,意思是隻有類物件自己能訪問,連子類物件也不能訪
問到這個資料,不能用’from module import *’匯入。
4、_ _ object_ _ #內建方法,使用者不要這樣定義
4. Python3引數順序:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。
Python引數順序:必選引數、預設引數、可變引數和關鍵字引數。
5.
6.
7.
__new__和__init__的區別,說法正確的是?
正確答案: A B C D
__new__是一個靜態方法,而__init__是一個例項方法
__new__方法會返回一個建立的例項,而__init__什麼都不返回
只有在__new__返回一個cls的例項時,後面的__init__才能被呼叫
當建立一個新例項時呼叫__new__,初始化一個例項時用__init__
根據官方文件:
- __init__是當例項物件建立完成後被呼叫的,然後設定物件屬性的一些初始值。
- __new__是在例項建立之前被呼叫的,因為它的任務就是建立例項然後返回該例項,是個靜態方法。
即,__new__在__init__之前被呼叫,__new__的返回值(例項)將傳遞給__init__方法的第一個引數,然後__init__給這個例項設定一些引數。
8. 協程是一種使用者態的輕量級執行緒,協程的排程完全由使用者控制。協程擁有自己的暫存器上下文和棧。協程排程切換時,將暫存器上下文和棧儲存到其他地方,在切回來的時候,恢復先前儲存的暫存器上下文和棧,直接操作棧則基本沒有核心切換的開銷,可以不加鎖的訪問全域性變數,所以上下文的切換非常快。
9.
Python 中的 tuple 結構為 “不可變序列”,用小括號表示。為了區別數學中表示優先順序的小括號,當 tuple 中只含一個元素時,需要在元素後加上逗號。
詳情可參考文件中的解釋:
- Using a trailing comma for a singleton tuple:a,or(a,)
10.
Python 中字串的前導 r
代表原始字串識別符號,該字串中的特殊符號不會被轉義,適用於正則表示式中繁雜的特殊符號表示。
最典型的例子,如要輸出字串 \n
,由於反斜槓的轉義,因此一般的輸出語句為:
1 |
|
這裡的 \\
將被轉義為 \
。而採用原始字串輸出時,則不會對字串進行轉義:
1 |
|