1. python單下劃線_foo、雙下劃線__foo、__foo__的區別。
"單下劃線" 開始的成員變數叫做保護變數,意思是只有類物件和子類物件自己能訪問到這些變數;
"雙下劃線" 開始的是私有成員,意思是只有類物件自己能訪問,連子類物件也不能訪問到這個資料。
以單下劃線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用「from *** import *」而匯入;以雙下劃線開頭的(__foo)代表類的私有成員;以雙下劃線開頭和結尾的(__foo__)代表python裡特殊方法專用的標識,如 __init__()代表類的建構函式。
2. python中__new__和__init__的區別,說法正確的是? (a b c d)
a.__new__是乙個靜態方法,而__init__是乙個例項方法。
b.__new__方法會返回乙個建立的例項,而__init__什麼都不返回。
c.只有在__new__返回乙個cls的例項時,後面的__init__才能被呼叫。
d.當建立乙個新例項時呼叫__new__,初始化乙個例項時用__init__。
__init__ 方法為初始化方法, __new__方法才是真正的建構函式。
__new__方法預設返回例項物件供__init__方法、例項方法使用。
__init__ 方法為初始化方法,為類的例項提供一些屬性或完成一些動作。
__new__ 方法建立例項物件供__init__ 方法使用,__init__方法定製例項物件。
__new__是乙個靜態方法,而__init__是乙個例項方法。
3. 有如下函式定義,執行結果正確的是?()
def dec(f):
n =3
return f(*args,**kw) * n
@dec
def foo(n):
return n *2
a.foo(2) == 12 b.foo(3) == 12 c.foo(2) == 6 d.foo(3) == 6
4. 裝飾器執行順序。
def decorator_a(func):
print 'get in decorator_a'
def inner_a(*args, **kwargs):
print 'get in inner_a'
return func(*args, **kwargs)
return inner_a
def decorator_b(func):
print 'get in decorator_b'
def inner_b(*args, **kwargs):
print 'get in inner_b'
return func(*args, **kwargs)
return inner_b
@decorator_b
@decorator_a
def f(x):
print 'get in f'
return x * 2
f(1)
實際上執行的結果如下:
get in decorator_a
get in decorator_b
get in inner_b
get in inner_a
get in f
4.下列** [i**i for i in xrange(3)] 的執行結果是(a)
a.[1, 1, 4] b.[0, 1, 4] c.[1, 2, 3] d.(1, 1, 4)
(1)這是乙個列表生成式,即對於生成器 xrange(3) 中的每個值(分別是0,1,2),賦值給變數 i,然後執行 i**i 的操作。
(2)xrange() 與 range() 的用法完全相同,區別是 xrange() 的返回值是生成器,而 range() 的返回值是列表。(python3 range即為原來的xrange)
(3)python 中的 ** 運算代表冪運算,但有個特殊情況,官方文件中把 0**0 的值定義為 1。
5. 'a' < 'b' < 'c' 返回(true)。('a' > 'b' or 'c') 返回 ('c')。
python 支援連續比較,'a' < 'b' < 'c' 相當於 'a' < 'b' and 'b' < 'c',其本質是字元 ascii 碼的大小比較,該判斷式結果為 true。
6. 下列**的列印結果是 (報錯)。
x =1
def change(a):
x +=1
print x
change(x)
python的變數作用範圍(即legb規則)。是錯在 x+=1,print(x)沒錯。定義在外部的變數是有全域性作用域,但是函式內部未宣告global時,只可讀而不能寫。
7. 如何解釋下面的執行結果? (b)
print 1.2 - 1.0 == 0.2
false
a. python的實現有錯誤
b. 浮點數無法精確表示
c. 布林運算不能用於浮點數比較
d. python將非0數視為false
python 中浮點數的運算存在誤差。1.2 - 1.0的值不是0.2,而是0.19999999999999996。
python 牛客輸入練習
練習位址 基本可以通過sys.stdin來實現讀取輸入 通過判斷len input 當前行長度來跳出程式。缺省會讀取回車,則若是空行接回車,則長度為1 若通過input strip 則可以去除首尾的回車鍵和空格鍵,則此時長度為0。自己的練習記錄 描述 不知道一共多少行,每輸入一行,輸出結果 whil...
牛客網python考題筆記
一,賦值問題 list1 list2 list1 list1 1 5 sum list1 1 list2 1 print sum 5 5 10 賦值 只是複製了新物件的引用,不會開闢新的記憶體空間 賦值就是引用如b a 賦值引用,a 和 b 都指向同乙個物件。a 2 b a b和a理解為引用,a指標...
牛客 獎學金
某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績 語文 數學 英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學 排在前面,這樣,每個學生的排序是唯一確定的。...