python函數的定義與實例詳解

目錄

1. What is 函數?

2. 函數的參數

2.1普通參數

2.2 收集參數

3. 函數的返回值return

4.函數變量的作用域

5. 函數導入的方式

6.函數文檔

6.1文檔寫法

6.2文檔查看


 

1. What is 函數?

       以前我們都熟知函數有一次函數(正比例函數),二次函數,三次函數等等各種數學公式。通過各種方式求得結果的一種解決方法,而這裏也是一樣,函數就是一種解決方法。接下來我們就來看下函數的定義:

邏輯框架:

def 函數名([參數1],[參數2],[….]):
     函數體

值得注意的有:1.函數嚴格區分大小寫          2.函數重名會被覆蓋         3.函數後面有一個冒號       4.函數名遵循命名規則

瞭解完定義,還得知道怎麼用纔是運用。接下來就來講解函數的調用,其中方式爲:

函數名([參數1],[參數2…])

2. 函數的參數

2.1普通參數

     瞭解完函數的定義及調用,接下來我們就可以體會一下其中的內涵啦!!!首先是函數中的參數,其中參數有形參(在定義函數的時候 括號內的變量)以及實參(在函數調用的時候 傳入的參數),然後就是關鍵字參數,對於關鍵字就是你的形參名可以形容在調用的時候使用形參名=值

例如:

def func(a,b,c): #a,b,c爲形式參數
    pass
func(1,2,3) #其中1,2,3爲實際參數
func(c=10,b=20,a=30)   # 關鍵字參數

在瞭解參數定義的以後,我們能聯想到在生活中有很多東西都是規定好的(默認的),因此在這裏有定義一個默認參數,其中機構爲:

def 函數名(參數名=值…):

實例:

def func(a = 10, b = 10):  # 正確給形參默認值的操作
def func(a, b = 10):  # 正確給形參默認值的操作
#def func(a = 10, b): # 錯誤給形參默認值的操作 
    pass

注意:

  1. 函數在定義的時候 如果有形參 且沒有默認值,必須傳實參
  2. 如果沒有形參則不能傳實參
  3. 如果形參沒有默認值 那麼實參的個數必須和形參的個數相同
  4. 如果形參有默認值 那麼可以不用傳實參
  5. 形參和實參一一對應
  6. 當給形參的默認值時 必須遵循默認值的規則

2.2 收集參數

由於python的隨意性,我們瞭解在很多情況下,也就是傳入的參數的個數不固定,我們引入了收集參數的定義。同時地下出現了元組與字典屬性,對於元組類型,是個有序的集合。而對於字典類型,我們可以理解爲成對出現的鍵值對,能夠從前面探知到後面的類型。

(1) 以元組的形式去接收 *參數名 (任意數量的實參)

注意的有:

  1. args前面帶有星號*
  2. 能夠與普通參數共存

實體結構:

def 函數名(*args): (args 可以隨意取)
     pass
  1. 實例:

    def demo(*args):
        print(args)  
        print(type(args))  # 都爲tuple
    # demo(1,2,3,4)  # (1, 2, 3, 4)
    demo(1)  # (1,)
    demo()  # () 空元組

    (2) 以字典的形式去接收不確定實參 **kwargs (任意數量的關鍵字實參)

    主體結構:

    def 函數名(**kwargs):
        pass
    

    函數名(x=1,y=2,z=3)

    實例:

    def demo(**kwargs):
        print(kwargs)  # {'x': 1, 'y': 2, 'z': 3, 'a': 4}
        print(type(kwargs))  # <class 'dict'>
    demo(x =1,y=2)  # ok 

    (3) 將參數爲字典的值變成爲關鍵字參數傳入函數 **實參名

    主體結構:

    def 函數名(**kwargs):
             passmyDict = {'x':1,'y':2} # 字典的值
    函數名(**myDict) # 等價於需要傳入關鍵字參數
    函數名(x=1,y=2)

    實例:

  2. def func(**kwargs):
        print(kwargs)
    myDict = {'x':1,'y':2}
    func(**myDict)  # ok  # {'x': 1, 'y': 2}

    (4) *args和**kwargs的組合

  • 主體結構:

  1. def 函數名(*args,**kwargs):
        pass
    

    注意:

  • *args和**kwargs的實參可傳可不傳,不傳的話爲空元組,空字典
  • *args和**kwargs的實參 可以對某個不進行傳參 某個不傳參數的爲空元組或空字典
  • 組合的順序: 位置參數,默認參數(x=1),可變參數(args),鍵值對參數(關鍵字參數kwargs)

實例:

def func4(*args, **kwargs):
    print(args)
    print(kwargs)
func4(x=1,y=2)  # ()  {'x'= 1, 'y'= 2}
func4(x=5) #{'x'= 5}

3. 函數的返回值return

1.return 會把值返回給調用處(就是函數名()的位置)

函數執行遇到return 就認爲執行完畢 下面代碼不在執行

def sum(x, y):
    print("輸出的和爲:")
    return x + y  # 函數執行 遇到return 就認爲函數完畢 下面代碼不在執行
    # print("輸出的和就是:")  # 不執行
print(sum(1, 2))  # 返回值爲 3

2.return 返回多個值

def func():
    pass
    return 1,2,3
    # tuple 這種寫法返回元組

3.函數無返回值時,默認返回NONE

4.函數變量的作用域

對於變量而言,我們主要研究在於範圍,其中有全局和局部之分。而在函數這部分講解,是因爲他的區分是在函數。在函數外部定義的變量我們稱之爲全局變量,在函數內部定義的變量我們稱之爲局部變量。值得注意的是:函數內可以用全局變量,但函數外不可以用局部變量。

實例

num1 = 23 #全局變量
def func1():
    print(num1) #23
func1
def func2():
    num2 = 32423dfjk
    print('局部變量爲:{0}'.format(num2))
dunc2()
print('num2') #NONE

但是爲了方便,我們可以將局部變量聲明爲全局變量,關鍵字爲global

num1 = 11 #全局變量
def func3():
    global num1 = 22 #局部變量爲全局變量
    print(num1)
func3()
print(num1) #結果爲22

5. 函數導入的方式

在瞭解到這些之後,我們必須的有一個更高的認識。對於日常中我們經常會建立文件夾來歸類相同的事物,等需要用時就知道在哪進行打開,對於函數也是如此。每當我們定義好一個函數以後,就會將它進行打包放到一個庫中,等日後需要用時,我們就進行調用,其形式如下所示:

from 庫名 import 包名
from 庫名 import 包名 as 別名
from 庫名.包名 import 方法名1,方法名2,…
import 包名 as 別名

___name___:系統屬性 可以在包被引入時候 可以判斷當前程序執行是否在主文件裏,在主文件裏值爲__main__
作用:在運行時檢測該模塊是被導入還是被直接執行
如果模塊是被導入,__name__的值爲模塊名字;如果是被直接執行,__name__的值爲"__main__"。
注意:

  1. 不要將包或者庫的名字中存在數字,起一個規範的有意義的字母的名字
  2. 如果模塊包含的屬性和方法與你的某個模塊同名,你必須使用import module來避免名字衝突

6.函數文檔

          函數文檔的作用在於提供函數相應的參考信息

6.1文檔寫法

  • 使用三引號來進行註釋
  • 一般具有特定格式
  • 參看案例
  • def func5():
        '''
        這是多行註釋信息
        註釋函數作用
        不在運行中
        '''
        for i in [1:20]:
            print(i)
    func5()
    

     

6.2文檔查看

  • 使用函數help,形如help(func);
  • 使用_doc_,查看案例
  • help(func5())
    func5._doc_

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章