**如下:
s = [timestamp, token, nonce]
s.sort()
sha1 = hashlib.sha1()
# for i in s:
# sha1.update(i.encode('utf-8'))
map(sha1.update, s)
hashcode = sha1.hexdigest()
在py3環境下時算出來的雜湊值怎麼都不對,那問題處在**呢?
原來,1. 在py2中,map返回的是乙個列表
2.在py3中,map返回的是乙個生成器
什麼意思呢?簡單來說就是py3返回的生成器,他的值是在你呼叫的時候才計算生成,而py2中返回的是列表,返回的時候就把結果算好了。所以在py3中需要使用for的**段,而不用使用map。
下面是測試**
l1 = ["1", "2", "3"]
def a(x):
print(x)
return x+"1"
r = map(a, l1)
for i in r:
pass
# print(r)
exit()
當把for**段注釋時,程式無輸出。當執行上述**時,輸出如下:
123即驗證了上述說法process finished with exit code 0
py2與py3的區別
py2與py3的區別 1 py2 的預設編碼是ascii,py3的預設編碼是utf 8 2 py2print函式可以用引號引起來也可以括起來執行,py3必須括號括起來執行 3 py2互動使用函式raw input 得到了str,input 得到了int資料型別,py3使用input 得到str 4 ...
py2和py3之間的區別
1.編碼 py2採用的是ascll編碼 py3採用unicode編碼 2.print py2中print是乙個關鍵字 py3中print是乙個函式,含有括號 3.input py2中raw input 這個函式返回乙個字串,但不會對輸入的字串進行計算 比如將它轉化成int或者float input ...
py2和py3之間的不同
很瑣碎,而print語法的變化可能是最廣為人知的了,但是仍值得一提的是 python 2 的 print 宣告已經被print 函式取代了,這意味著我們必須包裝我們想列印在小括號中的物件。python 2 不具有額外的小括號問題。但對比一下,如果我們按照 python 2 的方式不使用小括號呼叫pr...