真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么學(xué)習(xí)Python技術(shù)

本篇內(nèi)容主要講解“怎么學(xué)習(xí)Python技術(shù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么學(xué)習(xí)Python技術(shù)”吧!

主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站建設(shè)、程序開發(fā)、微網(wǎng)站、微信小程序等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)絡(luò)營(yíng)銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營(yíng)銷、管理等多方位專業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類型的建設(shè)項(xiàng)目的能力。

collection.len()是面向?qū)ο笳Z言的寫法,len(collection)是Python語言的寫法,這種風(fēng)格叫做Pythonic。從前者到后者,就像變魔術(shù)一樣,一瞬間讓人眼前一亮。這個(gè)魔術(shù)就是Python魔法方法,或者叫雙下方法,它是用雙下劃線開頭和雙下劃線結(jié)尾的特殊方法,比如obj[key],Python解釋器實(shí)際上會(huì)轉(zhuǎn)換成obj.__getitem__(key)來運(yùn)行,但是使用者并無感知。

__getitem__和__len

____getitem__用來獲取數(shù)據(jù),__len__用來返回長(zhǎng)度,這2個(gè)魔法方法是Python基礎(chǔ),我們通過一副撲克牌來了解:

import collections  # 定義一副牌 Card = collections.namedtuple('Card', ['rank', 'suit'])  class FrenchDeck:     # 大小     ranks = [str(n) for n in range(2, 11)] + list('JQKA')     # 花色     suits = 'spades diamonds clubs hearts'.split()      def __init__(self):         # 生成一副牌         self._cards = [Card(rank, suit) for suit in self.suits                                         for rank in self.ranks]      def __len__(self):         return len(self._cards)      def __getitem__(self, position):         return self._cards[position]

本來我們對(duì)這副牌什么都不能做,但是由于實(shí)現(xiàn)了__len__,可以使用len()函數(shù)查看有多少張牌:

>>> len(deck) 52

由于實(shí)現(xiàn)了__getitem__,可以使用中括號(hào)索引取值:

>>> deck[0] Card(rank='2', suit='spades')

能進(jìn)行切片:

>>> deck[:3] [Card(rank='2', suit='spades'), Card(rank='3', suit='spades'), Card(rank='4', suit='spades')] >>> deck[12::13] [Card(rank='A', suit='spades'), Card(rank='A', suit='diamonds'), Card(rank='A', suit='clubs'), Card(rank='A', suit='hearts')]

能迭代:

>>> for card in deck:  # doctest: +ELLIPSIS ...   print(card) Card(rank='2', suit='spades') Card(rank='3', suit='spades') Card(rank='4', suit='spades') ...

發(fā)現(xiàn)沒有,魔法方法是可以用來裝B的!別人寫個(gè)類只能get、set,你寫個(gè)類還能花式炫技,666。

Python魔法方法是給Python解釋器使用的,一般不需要直接調(diào)用,Python會(huì)自己去調(diào),比如把len(my_object)寫成my_object.__len__(),就弄巧成拙了。

魔法方法實(shí)現(xiàn)運(yùn)算符

前面例子實(shí)現(xiàn)了取值和長(zhǎng)度,接著再看一個(gè)例子,使用__repr__、__abs__、__bool__、__add__、__mul__,實(shí)現(xiàn)運(yùn)算符:

from math import hypot  # 二維向量 class Vector:      def __init__(self, x=0, y=0):         self.x = x         self.y = y      # 表達(dá)式     def __repr__(self):         return 'Vector(%r, %r)' % (self.x, self.y)      # 絕對(duì)值     def __abs__(self):         return hypot(self.x, self.y)      # 布爾值     def __bool__(self):         return bool(abs(self))      # 加法     def __add__(self, other):         x = self.x + other.x         y = self.y + other.y         return Vector(x, y)      #乘法     def __mul__(self, scalar):         return Vector(self.x * scalar, self.y * scalar)

__add__實(shí)現(xiàn)了加法:

>>> v1 = Vector(2, 4) >>> v2 = Vector(2, 1) >>> v1 + v2 Vector(4, 5)

__abs__實(shí)現(xiàn)了絕對(duì)值:

>>> v = Vector(3, 4) >>> abs(v) 5.0

__mul__實(shí)現(xiàn)了乘法:

>>> v * 3 Vector(9, 12)

__repr__實(shí)現(xiàn)了對(duì)象的字符串表示:

Vector(4, 5)

否則得到的字符串可能是。

__bool__實(shí)現(xiàn)了布爾值:

if Vector(4, 5):     return True

其他魔法方法

怎么學(xué)習(xí)Python技術(shù)


一篇文章是講不完魔法方法的,我們會(huì)在后續(xù)文章中,繼續(xù)探討如何使用和實(shí)現(xiàn)它們。

Tips

本小節(jié)內(nèi)容是我看《流暢的Python》第一遍時(shí)記錄的知識(shí)點(diǎn):

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. collections.namedtuple可以用來創(chuàng)建只有少數(shù)屬性但沒有方法的對(duì)象,比如

鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)beer_card = Card('7', 'diamonds')
  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 2.random.choice和random.sample不一樣的地方在于,sample是返回序列,choice是返回元素,當(dāng)使用sample(list,  1)[0]的時(shí)候,不如直接使用choice(list)。

  3. 特殊方法的存在是為了被Python解釋器調(diào)用的。

  4. PyVarObject是表示內(nèi)存中長(zhǎng)度可變的內(nèi)置對(duì)象的C語言結(jié)構(gòu)體。list或str或bytearray的__len__實(shí)際上返回的PyVarObject.ob_size屬性,這個(gè)比調(diào)用一個(gè)方法要快的多。

  5. len之所以不是一個(gè)普通方法,是為了讓python自帶的數(shù)據(jù)結(jié)構(gòu)可以走后門,abs也是同理。

  6. 很多時(shí)候調(diào)用__init__方法的目的是,在你自己的子類的__init__方法中調(diào)用超類的構(gòu)造器。

  7. abs,如果輸入是整數(shù)或者浮點(diǎn)數(shù),它返回的是輸入值的絕對(duì)值;如果輸入是復(fù)數(shù),那么返回這個(gè)復(fù)數(shù)的模。

  8. __repr__和__str__二選一的話,__repr__更好,因?yàn)槿绻粋€(gè)對(duì)象沒有__str__函數(shù),解釋器會(huì)用__repr__作為替代。

  9. python對(duì)象的一個(gè)基本要求就是它得有合理的字符串表示形式,這就是數(shù)據(jù)模型中存在特殊方法__repr__和__str__的原因。

  10. 為了判定一個(gè)值x為真還是為假,python會(huì)調(diào)用bool(x),它的背后是調(diào)用x.__bool__()。如果不存在,就會(huì)調(diào)用x.__len__(),返回0為Flase,非0為True。

  11. python通過運(yùn)算符重載這一模式提供了豐富的數(shù)值類型,除了內(nèi)置那些,還有decimal.Decimal和fractions.Fraction。

到此,相信大家對(duì)“怎么學(xué)習(xí)Python技術(shù)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


標(biāo)題名稱:怎么學(xué)習(xí)Python技術(shù)
文章URL:http://weahome.cn/article/ieocsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部