亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python基礎學習之函數方法實例詳解

系統 1524 0

本文實例講述了Python基礎學習之函數方法。分享給大家供大家參考,具體如下:

前言

與其他編程語言一樣,函數(或者方法)是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。

python的函數具有非常高的靈活性,可以在單個函數里面封裝和定義另一個函數,使編程邏輯更具模塊化。

一、Python的函數方法定義

函數方法定義的簡單規則:

1. 函數代碼塊以 def 關鍵詞開頭,后接函數標識符名稱和圓括號()。
2. 任何傳入參數和自變量必須放在圓括號中間。圓括號之間可以用于定義參數。
3. 函數的第一行語句可以選擇性地使用文檔字符串―用于存放函數說明。
4. 函數內容以冒號起始,并且縮進。
5. return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當于返回 None。

函數demo:

            
def test_method():
  test_string = "test"
  return test_string


          

方法和函數的區別就是,方法是屬于類里面的,可以獲取調用類的屬性和定義的成員,使用self訪問,方法的定義如下:

            
Class A:
  self.test_string = "test"
  def test_method(self):
    return self.test_string


          

注: 如果方法沒有使用類成員,則不需要帶self,即方法和函數一致,此時也成為靜態方法@staticmethod

二、函數和方法的參數類型:

1. 必備參數: 必備參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣,必備參數定義在函數定義的括號()內。

2. 默認參數: 默認參數在調用方法或函數,不傳入該參數時,會使用默認的值,默認值寫在(內), 必須在必備參數之后 ,如 def test_method(str, default_str = "hello")

3. 不定長參數: python函數除了可以定義默認參數之外,還可以定義可變參數,如 *args和**kwargs :

(1) 函數內部可變參數的名字前面有個 * 號,我們可以傳入0個、1個或多個參數給可變參數,在函數內部,直接把變量 args 看成一個 tuple 就好了;
(2) 雙星號(**):**kwargs將參數以字典的形式導入,如bar(1,a=2,b=3),在內部kwargs參數就是{'a': 2, 'b': 3};
(3) 對于函數外部帶單星號*,外部傳入的參數帶*號,則在內部則是以解壓方式賦給函數的每個參數;

4. 匿名函數: python使用lambda來創建匿名函數:

(1)lambda只是一個表達式,函數體比def簡單很多;
(2)lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去;
(3)lambda函數擁有自己的命名空間,且不能訪問自有參數列表之外或全局命名空間里的參數;

lambda的demo:

            
sum = lambda arg1, arg2: arg1 + arg2;


          

調用:

            
sum(1,2)
# 返回3


          

三、方法的復用和繼承:

1. 方法的繼承:

(1) 如果一個類繼承了基類,則需要在這個類的構造函數(__init__())里面調用基類的初始化方法,即添加: super().__init__() 來初始化基類;
(2) 這個類可以調用基類中存在而本類不存在的方法,這就是子類調用父類的方法,可以直接使用self調用;

2. python函數沒有重載功能:

函數重載主要是為了解決兩個問題:

①.可變參數類型;

②.可變參數個數。

另外,一個基本的設計原則是,僅僅當兩個函數除了參數類型和參數個數不同以外,其功能是完全相同的。

對于情況1,函數功能相同,但是參數類型不同,python 如何處理?答案是根本不需要處理,因為 python 可以接受任何類型的參數,如果函數的功能相同,那么不同的參數類型在python中很可能是相同的代碼,沒有必要做成兩個不同函數;

對于情況2,函數功能相同,但參數個數不同,python 如何處理?大家知道,答案就是缺省參數。 對那些缺少的參數設定為缺省參數即可解決問題 。因為你假設函數功能相同,那么那些缺少的參數終歸是需要用的;
鑒于情況1跟情況2都有了解決方案,python自然就不需要函數重載了

3. 方法覆蓋: 一個類用 self 調用 基類中存在而本類也存在 的方法,這時 子類方法會優先被調用 ,替代調用父類的方法,如果要調用父類的該方法,需要用 super() 參數;

四、Python函數與方法的其他知識:

Python常用內置函數:

(1) dir() 函數不帶參數時,返回當前范圍內的變量、方法和定義的類型列表;帶參數時,返回參數的屬性、方法列表。如果參數包含方法 __dir__() ,該方法將被調用;

(2) type()函數,type()只帶一個變量參數則返回變量的類型,但是該函數如果帶三個參數則可以返回新創建的類對象(動態創建類對象):

            
# 使用type()函數定義類
# 實例方法
def __init__(self, name):
  # 實例屬性
  self.name = name
# 類方法
@classmethod
def study(cls):
  pass
# 靜態方法
@staticmethod
def cal_student_num():
  pass
# 元類最大的作用不在于創建一個新的類
A = type(
  'A',
  (object,),
  {
    'role': 'student',
    '__init__': __init__,
    'study': study,
    'cal_student_num': cal_student_num
  })


          

(3) Python函數中,可以通過聲明全局變量(global 變量名)來調用函數外部的變量,也可以通過將外部變量傳參的形式傳入函數內使用,global的方式會改變外部變量的值;

關于Python相關內容感興趣的讀者可查看本站專題:《Python函數使用技巧總結》、《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人综合亚洲亚洲欧美 | 999伊人 | 99国产超薄丝袜足j在线观看 | 欧美久在线观看在线观看 | 亚洲精品国产综合99久久一区 | 久色99| 亚洲国产激情在线一区 | 99九九99九九九视频精品 | 呦系列视频一区二区三区 | 国产99区 | 免费在线成人网 | 亚洲免费精品视频 | 亚洲第99页 | 久久中精品中文 | 天天综合天天综合 | 国产亚洲欧美日韩在线看片 | 国产在线观看一区精品 | 在线国产视频一区 | 亚洲三级中文字幕 | 亚洲综合在线成人一区 | 午夜操操 | 一级aaa级毛片午夜在线播放 | 国产欧美在线观看 | 精品一区二区三 | 七次郎在线成人精品 | 日韩毛片免费在线观看 | 免费看一级黄色录像 | 精品一区二区三区中文字幕 | 免费观看成人www精品视频在线 | 亚洲国产一区二区三区四区五区 | 69网站在线观看 | 四虎永久精品免费网址大全 | 女bbbbxxxx毛片视频丶 | 亚洲欧美中文日韩二区一区 | 国产一区二区三区在线观看免费 | 国产亚洲精品激情一区二区三区 | 欧洲成人免费视频 | 一区二区三区日韩 | 日本一级作爱片在线观看 | 六月色 | 久久视频精品线视频在线网站 |