python 閱讀github上某專案所得總結

2021-07-28 19:01:47 字數 2468 閱讀 9529

有如下例子程式

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...