python-- 函數

來源:互聯網
上載者:User

標籤:內建函數   作用   pytho   預設值   閉包   開頭   引用   多個   函數定義   

 函數

 一、函數的定義與調用

函數的定義:函數及工具,我們把事先準備工具的過程可以當做定義一個函數,拿來用準備好的工具叫做函數的調用

結論:函數必須是先定義後調用的。

1、定義一個函數 

def func():    print(‘hello word‘)func()

注; def 為關鍵字,func為函數名,後跟的括弧與冒號必須寫,def與func之間用空格分開

func():調用函數體中的值------稱為函數的調用

函數名;由數字、字母,底線組成。不能以數字開頭。不能是python的關鍵字

-------- 寫函數應有注釋說明

寫一個函數;關鍵字+函數名--------子代碼-----優先寫注釋-------再寫函數體

2、函數的分類

         內建函數:無須定義,python解譯器都弄好了

            如

print(len(‘hfgsgj00‘))   #求長度print(max([1,2,3,4]))     #最大值print(min([54,778,65,7865]))  #最小值print(sum([12,4864,5]))   #求和

          自訂函數:  

def mylen():    pass

3、傳回值

     傳回值:return(返回)後的那個數就叫傳回值

      return與函數而言有三種形式的返回  

    1,沒有傳回值------就是不寫return的情況下,函數預設返回None,唯寫return後沒有傳回值函數也預設返回None

    2,只返回一個值--------後跟一個傳回值,可以跟任意類型的值

    3,返回多個值-------return後可以跟多個任意類型的傳回值,返回的值是以元群組類型

注;如果在函數中有多個return,當函數執行時只執行第一個return,執行完第一個return函數結束執行

二、參數

     1,形參:形式參數,在函數定義時接受的值

      參數種類與定義;

          1、預設參數:設定預設值

          2、位置參數:按位置順序一一對應傳參

          3、動態參數:*arges接受一個或多個參數,群組成員組,   **kwargs接受多個關鍵字參數,並組成字典類型

     2,實參:真實存在的值,在函數調用時傳入的值

         1,按位置傳參:按照位置一一對應傳入參數

def func(x,y):    print(x)    print(y)func(10,20)

         2、按關鍵字傳參:就是以變數的形式和賦值的形式傳參

def func(x,y):      print(x)        print(y)    func(y=10,x=20) 

三,空間命名和範圍
       1、三種空間命名(命名空間載入由硬碟到記憶體)

             1,局部空間命名:程式運行中,調用時才載入

             2、全域空間命名:程式運行中,從上到下載入

             3、內建空間命名:運行程式前載入

        2、空間命名的取值(從內往外取值)

             1,局部調用時:  局部空間-------全域空間---------內建空間

             2,全域調用時:全域空間-------內建空間

         3、範圍:命名空間和範圍是分不開的,因為範圍的劃才得到的命名空間

             1,全域作範圍:全域生效,包含內建名稱空間和全域名稱空間,在檔案的任何位置都能別應用

             2,局部範圍:局部空間名稱,只能在局部範圍之內才會生效

四,函數名本質

        函數名本質就是函數的記憶體位址

        1,可以被應用

        2、可以當做函數的參數和傳回值

        3,可以被當做容器類型的元素

五,閉包

閉包函數:內建函式包含對外部範圍而非全域範圍名字的引用,該內建函式被稱為閉包函數-------函數內部定義的函數稱為內建函式

六 ,裝飾器    

          1,裝飾器的形成過程

              文法糖、帶參數的裝飾器、hold的住所有函數、帶傳回值的裝飾器

                  定義:裝飾器就是一個閉包函數

                  功能:在不修改原函數及其調用方式的情況下對函數的功能進行擴充

          2,裝飾器的開放封閉原則

               對擴充是開放的,對修改是封閉的

          3、裝飾器的主要功能和裝飾器的固定結構

               裝飾器的主要功能:在不改變調用方式的基礎上在函數前後加功能

              裝飾器的固定結構

def time(func):                             def inner(*args,**kwargs):             #函數執行之前要做的                           ret=func(*args,**kwargs)           #函數執行之後要做的                           return ret                      return inner                                                  

          4,帶參數的裝飾器

def outer(flag):                                       def timer(func):                                       def inner(*args,**kwargs):                             if flag:                                               print(‘‘‘執行函數之前要做的‘‘‘)                         re = func(*args,**kwargs)                          if flag:                                               print(‘‘‘執行函數之後要做的‘‘‘)                         return re                                      return inner                                   return timer                                                                                      @outer(False)                                      def func():                                            print(111)                                                                                        func()                                             


  5、多個裝飾器裝飾一個函數

def wrapper1(func):                             def inner():                                    print(‘wrapper1 ,before func‘)              func()                                      print(‘wrapper1 ,after func‘)           return inner                                                                        def wrapper2(func):                             def inner():                                    print(‘wrapper2 ,before func‘)              func()                                      print(‘wrapper2 ,after func‘)           return inner                                                                        @wrapper2                                   @wrapper1                                   def f():                                        print(‘in f‘)                                                                       f()                                         

 

python-- 函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.