1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      python中的頂層函數(shù) c++頂層函數(shù)

      python最頂層基類是什么

      object是最頂層基類。object是type的實例,而type又繼承object。頂層基類的特性:

      公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出烏魯木齊免費做網(wǎng)站回饋大家。

      1、可以賦值一個變量。

      2、可以添加到集合對象中。

      3、可以作為參數(shù)傳遞給函數(shù)。

      4、可以當作函數(shù)的返回值。

      Python pandas數(shù)據(jù)計數(shù)函數(shù)value_counts

      value_counts是一種查看表格某列中有多少個不同值的快捷方法,并計算每個不同值有在該列中個數(shù),類似Excel里面的count函數(shù)

      其是pandas下面的頂層函數(shù),也可以作用在Series、DataFrame下

      常規(guī)用法:

      pandas 的 value_counts() 函數(shù)可以對Series里面的每個值進行計數(shù) 并且 排序,默認是降序

      可以看出,既可以對分類變量統(tǒng)計,也可以對連續(xù)數(shù)值變量統(tǒng)計

      如果是要對結(jié)果升序排列,可以添加 ascending=True 來改變

      如果不想看統(tǒng)計的個數(shù),而是想看占比,那么可以設(shè)置 normalize=True 即可,結(jié)果是小數(shù)形式

      可以通過apply,對每一列變量進行統(tǒng)計

      以上是自己實踐中遇到的一些點,分享出來供大家參考學習,歡迎關(guān)注DataShare公眾號

      如何在Python中使用static,class,abstract方法

      方法在Python中是如何工作的

      方法就是一個函數(shù),它作為一個類屬性而存在,你可以用如下方式來聲明、訪問一個函數(shù):

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      class Pizza(object):

      ...???? def __init__(self, size):

      ...???????? self.size = size

      ...???? def get_size(self):

      ...???????? return self.size

      ...

      Pizza.get_size

      unbound method Pizza.get_size

      Python在告訴你,屬性_get_size是類Pizza的一個未綁定方法。這是什么意思呢?很快我們就會知道答案:

      Python

      1

      2

      3

      4

      Pizza.get_size()

      Traceback (most recent call last):

      File "stdin", line 1, in module

      TypeError: unbound method get_size() must be called with Pizza instance as first argument (got nothing instead)

      我們不能這么調(diào)用,因為它還沒有綁定到Pizza類的任何實例上,它需要一個實例作為第一個參數(shù)傳遞進去(Python2必須是該類的實例,Python3中可以是任何東西),嘗試一下:

      Python

      1

      2

      Pizza.get_size(Pizza(42))

      42

      太棒了,現(xiàn)在用一個實例作為它的的第一個參數(shù)來調(diào)用,整個世界都清靜了,如果我說這種調(diào)用方式還不是最方便的,你也會這么認為的;沒錯,現(xiàn)在每次調(diào)用這個方法的時候我們都不得不引用這個類,如果不知道哪個類是我們的對象,長期看來這種方式是行不通的。

      那么Python為我們做了什么呢,它綁定了所有來自類_Pizza的方法以及該類的任何一個實例的方法。也就意味著現(xiàn)在屬性get_size是Pizza的一個實例對象的綁定方法,這個方法的第一個參數(shù)就是該實例本身。

      Python

      1

      2

      3

      4

      Pizza(42).get_size

      bound method Pizza.get_size of __main__.Pizza object at 0x7f3138827910

      Pizza(42).get_size()

      42

      和我們預(yù)期的一樣,現(xiàn)在不再需要提供任何參數(shù)給_get_size,因為它已經(jīng)是綁定的,它的self參數(shù)會自動地設(shè)置給Pizza實例,下面代碼是最好的證明:

      Python

      1

      2

      3

      m = Pizza(42).get_size

      m()

      42

      更有甚者,你都沒必要使用持有Pizza對象的引用了,因為該方法已經(jīng)綁定到了這個對象,所以這個方法對它自己來說是已經(jīng)足夠了。

      也許,如果你想知道這個綁定的方法是綁定在哪個對象上,下面這種手段就能得知:

      Python

      1

      2

      3

      4

      5

      6

      7

      m = Pizza(42).get_size

      m.__self__

      __main__.Pizza object at 0x7f3138827910

      # You could guess, look at this:

      ...

      m == m.__self__.get_size

      True

      顯然,該對象仍然有一個引用存在,只要你愿意你還是可以把它找回來。

      在Python3中,依附在類上的函數(shù)不再當作是未綁定的方法,而是把它當作一個簡單地函數(shù),如果有必要它會綁定到一個對象身上去,原則依然和Python2保持一致,但是模塊更簡潔:

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      class Pizza(object):

      ...???? def __init__(self, size):

      ...???????? self.size = size

      ...???? def get_size(self):

      ...???????? return self.size

      ...

      Pizza.get_size

      function Pizza.get_size at 0x7f307f984dd0

      靜態(tài)方法

      靜態(tài)方法是一類特殊的方法,有時你可能需要寫一個屬于這個類的方法,但是這些代碼完全不會使用到實例對象本身,例如:

      Python

      1

      2

      3

      4

      5

      6

      7

      class Pizza(object):

      @staticmethod

      def mix_ingredients(x, y):

      return x + y

      def cook(self):

      return self.mix_ingredients(self.cheese, self.vegetables)

      這個例子中,如果把_mix_ingredients作為非靜態(tài)方法同樣可以運行,但是它要提供self參數(shù),而這個參數(shù)在方法中根本不會被使用到。這里的@staticmethod裝飾器可以給我們帶來一些好處:

      Python不再需要為Pizza對象實例初始化一個綁定方法,綁定方法同樣是對象,但是創(chuàng)建他們需要成本,而靜態(tài)方法就可以避免這些。

      Python

      1

      2

      3

      4

      5

      6

      Pizza().cook is Pizza().cook

      False

      Pizza().mix_ingredients is Pizza.mix_ingredients

      True

      Pizza().mix_ingredients is Pizza().mix_ingredients

      True

      可讀性更好的代碼,看到@staticmethod我們就知道這個方法并不需要依賴對象本身的狀態(tài)。

      可以在子類中被覆蓋,如果是把mix_ingredients作為模塊的頂層函數(shù),那么繼承自Pizza的子類就沒法改變pizza的mix_ingredients了如果不覆蓋cook的話。

      類方法

      話雖如此,什么是類方法呢?類方法不是綁定到對象上,而是綁定在類上的方法。

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      class Pizza(object):

      ...???? radius = 42

      ...???? @classmethod

      ...???? def get_radius(cls):

      ...???????? return cls.radius

      ...

      Pizza.get_radius

      bound method type.get_radius of class '__main__.Pizza'

      Pizza().get_radius

      bound method type.get_radius of class '__main__.Pizza'

      Pizza.get_radius is Pizza().get_radius

      True

      Pizza.get_radius()

      42

      無論你用哪種方式訪問這個方法,它總是綁定到了這個類身上,它的第一個參數(shù)是這個類本身(記住:類也是對象)。

      什么時候使用這種方法呢?類方法通常在以下兩種場景是非常有用的:

      工廠方法:它用于創(chuàng)建類的實例,例如一些預(yù)處理。如果使用@staticmethod代替,那我們不得不硬編碼Pizza類名在函數(shù)中,這使得任何繼承Pizza的類都不能使用我們這個工廠方法給它自己用。

      Python

      1

      2

      3

      4

      5

      6

      7

      class Pizza(object):

      def __init__(self, ingredients):

      self.ingredients = ingredients

      @classmethod

      def from_fridge(cls, fridge):

      return cls(fridge.get_cheese() + fridge.get_vegetables())

      調(diào)用靜態(tài)類:如果你把一個靜態(tài)方法拆分成多個靜態(tài)方法,除非你使用類方法,否則你還是得硬編碼類名。使用這種方式聲明方法,Pizza類名明永遠都不會在被直接引用,繼承和方法覆蓋都可以完美的工作。

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      class Pizza(object):

      def __init__(self, radius, height):

      self.radius = radius

      self.height = height

      @staticmethod

      def compute_area(radius):

      return math.pi * (radius ** 2)

      @classmethod

      def compute_volume(cls, height, radius):

      return height * cls.compute_area(radius)

      def get_volume(self):

      return self.compute_volume(self.height, self.radius)

      抽象方法

      抽象方法是定義在基類中的一種方法,它沒有提供任何實現(xiàn),類似于Java中接口(Interface)里面的方法。

      在Python中實現(xiàn)抽象方法最簡單地方式是:

      Python

      1

      2

      3

      class Pizza(object):

      def get_radius(self):

      raise NotImplementedError

      任何繼承自_Pizza的類必須覆蓋實現(xiàn)方法get_radius,否則會拋出異常。

      這種抽象方法的實現(xiàn)有它的弊端,如果你寫一個類繼承Pizza,但是忘記實現(xiàn)get_radius,異常只有在你真正使用的時候才會拋出來。

      Python

      1

      2

      3

      4

      5

      6

      7

      Pizza()

      __main__.Pizza object at 0x7fb747353d90

      Pizza().get_radius()

      Traceback (most recent call last):

      File "stdin", line 1, in module

      File "stdin", line 3, in get_radius

      NotImplementedError

      還有一種方式可以讓錯誤更早的觸發(fā),使用Python提供的abc模塊,對象被初始化之后就可以拋出異常:

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      import abc

      class BasePizza(object):

      __metaclass__??= abc.ABCMeta

      @abc.abstractmethod

      def get_radius(self):

      """Method that should do something."""

      使用abc后,當你嘗試初始化BasePizza或者任何子類的時候立馬就會得到一個TypeError,而無需等到真正調(diào)用get_radius的時候才發(fā)現(xiàn)異常。

      Python

      1

      2

      3

      4

      BasePizza()

      Traceback (most recent call last):

      File "stdin", line 1, in module

      TypeError: Can't instantiate abstract class BasePizza with abstract methods get_radius

      混合靜態(tài)方法、類方法、抽象方法

      當你開始構(gòu)建類和繼承結(jié)構(gòu)時,混合使用這些裝飾器的時候到了,所以這里列出了一些技巧。

      記住,聲明一個抽象的方法,不會固定方法的原型,這就意味著雖然你必須實現(xiàn)它,但是我可以用任何參數(shù)列表來實現(xiàn):

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      import abc

      class BasePizza(object):

      __metaclass__??= abc.ABCMeta

      @abc.abstractmethod

      def get_ingredients(self):

      """Returns the ingredient list."""

      class Calzone(BasePizza):

      def get_ingredients(self, with_egg=False):

      egg = Egg() if with_egg else None

      return self.ingredients + egg

      這樣是允許的,因為Calzone滿足BasePizza對象所定義的接口需求。同樣我們也可以用一個類方法或靜態(tài)方法來實現(xiàn):

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      import abc

      class BasePizza(object):

      __metaclass__??= abc.ABCMeta

      @abc.abstractmethod

      def get_ingredients(self):

      """Returns the ingredient list."""

      class DietPizza(BasePizza):

      @staticmethod

      def get_ingredients():

      return None

      這同樣是正確的,因為它遵循抽象類BasePizza設(shè)定的契約。事實上get_ingredients方法并不需要知道返回結(jié)果是什么,結(jié)果是實現(xiàn)細節(jié),不是契約條件。

      因此,你不能強制抽象方法的實現(xiàn)是一個常規(guī)方法、或者是類方法還是靜態(tài)方法,也沒什么可爭論的。從Python3開始(在Python2中不能如你期待的運行,見issue5867),在abstractmethod方法上面使用@staticmethod和@classmethod裝飾器成為可能。

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      import abc

      class BasePizza(object):

      __metaclass__??= abc.ABCMeta

      ingredient = ['cheese']

      @classmethod

      @abc.abstractmethod

      def get_ingredients(cls):

      """Returns the ingredient list."""

      return cls.ingredients

      別誤會了,如果你認為它會強制子類作為一個類方法來實現(xiàn)get_ingredients那你就錯了,它僅僅表示你實現(xiàn)的get_ingredients在BasePizza中是一個類方法。

      可以在抽象方法中做代碼的實現(xiàn)?沒錯,Python與Java接口中的方法相反,你可以在抽象方法編寫實現(xiàn)代碼通過super()來調(diào)用它。(譯注:在Java8中,接口也提供的默認方法,允許在接口中寫方法的實現(xiàn))

      Python

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      import abc

      class BasePizza(object):

      __metaclass__??= abc.ABCMeta

      default_ingredients = ['cheese']

      @classmethod

      @abc.abstractmethod

      def get_ingredients(cls):

      """Returns the ingredient list."""

      return cls.default_ingredients

      class DietPizza(BasePizza):

      def get_ingredients(self):

      return ['egg'] + super(DietPizza, self).get_ingredients()

      這個例子中,你構(gòu)建的每個pizza都通過繼承BasePizza的方式,你不得不覆蓋get_ingredients方法,但是能夠使用默認機制通過super()來獲取ingredient列表。

      打賞支持我翻譯更多好文章,謝謝!


      分享題目:python中的頂層函數(shù) c++頂層函數(shù)
      鏈接URL:http://www.ef60e0e.cn/article/hhjcos.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        湟中县| 左云县| 佛冈县| 易门县| 宁阳县| 定西市| 富宁县| 奈曼旗| 越西县| 连山| 屏南县| 宝鸡市| 长葛市| 眉山市| 五家渠市| 安庆市| 本溪市| 景谷| 宜黄县| 华亭县| 黄陵县| 灵宝市| 达拉特旗| 定日县| 鱼台县| 邯郸县| 新源县| 桂林市| 东莞市| 望奎县| 布尔津县| 马山县| 兴国县| 汕尾市| 措勤县| 张家口市| 栖霞市| 陆河县| 福海县| 金堂县| 永新县|