有如下例子程式
a = [1, 2, 3]
b = (1, 2, 3)
if isinstance(a, (list, tuple)):
print('1.ok')
else:
print('1.error')
if isinstance(b, (list, tuple)):
print('2.ok')
else:
print('2.error')
if isinstance(a, (tuple, dict)):
print('3.ok')
else:
print('3.error')
if isinstance(b, (list, dict)):
print('4.ok')
else:
print('4.error')
if isinstance(a, (list, )):
print('5.ok')
else:
print('5.error')
if isinstance(a, (list)):
print('6.ok')
else:
print('6.error')
輸出:
1.ok
2.ok
3.error
4.error
5.ok
6.ok
得出結論:isinstance的第二個引數可以是個元組,若第乙個引數是這個元組中的任意值,則isinstance就返回真。最後的兩個例子說明了,這兩種寫法等同於直接就寫個'list'
再看下個例子
example = 'example'
result = example.split()
print(type(result))
輸出:
可以看出乙個特性:字串經過split後,結果變成了乙個list,內容沒有刻意列印,其實是['example']
繼續下個例子程式:
class test:
def __init__(self):
pass
def function(self):
print('function')
t = test()
res = reduce(getattr, ['function'], t)
res()
這個程式利用了reduce函式的特性。
reduce內部會有乙個迭代的過程,而迭代的次數由第二個引數決定,此處可以看出,第二個引數是只有乙個元素的list,所以可以肯定,reduce內部只迭代一次。而迭代的內容為將t和第二個引數的元素(此處為字串『function』)作為第乙個引數函式的引數。其實此處的getattr函式可以模擬為乙個lambda d, x : d[x]。
reduce迭代一次後結束返回getattr的值,其實就是test中於字串'function'匹配的函式,最後一句當然是呼叫這個函式了
最後乙個例子程式
from operator import attrgetter, itemgetter
ma_li = [, ]
ma_li2 = [[1, 3, 3], [4, 2, 1], [3, 5, 4]]
print(sorted(ma_li, key=itemgetter('b'), reverse=false))
print(sorted(ma_li2, key=itemgetter(1), reverse=false))
class taste:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def __repr__(self):
return '{} {} {}'.format(self.a, self.b, self. c)
ma_li3 = [taste(1, 2, 3), taste(1, 1, 2), taste(3, 5, 5)]
print(sorted(ma_li3, key=attrgetter('b'), reverse=false))
這個例子是關於使用sorted函式對列表內容元素進行排序的時候,如何施以排序規則
輸出:
[, ]
[[4, 2, 1], [1, 3, 3], [3, 5, 4]]
[1 1 2, 1 2 3, 3 5 5]
總結:
若想學通python,那麼必須理解python的屬性機制,最近看的很多github上面的開源程式,大多都是利用了屬性__dict__來完成了很多功能。其次python的功能庫很多,得最起碼的掌握幾個,因為很多需求功能都是需要第三方庫的
還得繼續學習
GitHub 上開源的 Python 教程
簡體 sxkdz a whirlwind tour of python 原版 a whirlwind tour of python 繁體 python 旋風之旅 正體中文版 github jakevdp whirlwindtourofpython github jakevdp pythondatas...
github上建立部落格
今天玩了一把在github上建自己的部落格,然後嘗試了一下發布文章 首先你要有乙個github的賬號,怎麼註冊略過 這裡注意添你的 使用者名稱 github.com,不然你要用建立分支的方法建立部落格,這個裡詳細的說明,中還有怎麼繫結自己的網域名稱 然後用git上傳你的部落格的內容到倉庫,githu...
GitHub上Pull request步驟總結
1.git clone 輸入要clone的位址,這裡假設是 2.cd example 切換目錄,以example為例 3.把要上傳的檔案拷貝到 example 資料夾下 4.git add homework 要上傳檔案的檔名,這裡是homework 5.git commit m my first h...