1. 程式人生 > 實用技巧 >七、python函式

七、python函式

一、函式定義

輸入一定的資料後,能夠根據裡面的執行步驟,算出另一些資料的值

def 函式的名稱(函式引數1,引數2~~~): ''' 文件字串 docstring 函式的註釋,這個函式是幹嘛用的 引數: 返回值: ''' 函式體(函式的具體執行的邏輯) return 函式的返回值(輸出) 2)函式呼叫
def add(a,b):
    '''兩個數相加'''
    c = a + b
    return c
sum = add(3,4)
print(sum)

3)函式返回值return

函式裡面的return表示函式的返回值,在呼叫函式之後可以通過變數進行接收

函式體遇到return就終止執行,相當於for/while中的break

def add(a,b):
    if a > 100:
        return a + b  #return終止函式,後面就不會執行
    return a + b*3
print(add(150,50))

函式的輸出資料是由return決定的,函式沒有retruen,得到的資料就是None

def add(a,b):
    c = a + b
print(add(1,2))  #結果是none
#定義一個有返回值的append函式
def append(origin_list,element):
    origin_list.append(element)
    
return origin_list print(append(['zjx'],'python')) #結果['zjx', 'python']

注意:沒有定義的函式,無法呼叫。

4)函式的引數

形式引數:函式在定義的時候寫的引數,相當於變數名,如上的origin_list

實際引數:函式在呼叫的時候寫的引數,他是值,如上的['zjx']

函式從呼叫的角度來說,分為形式引數和實際 引數。形參是指函式建立和定義過程中小括號裡的引數;而實參指得是函式在被呼叫過程中傳遞進來的引數

def add(a,b):
    c = a + b
print(add(1,2))  #a,b是形參,1,2是實參

位置引數:形式引數和實際引數要一一按照順序對應

def append(origin_list,element):
    origin_list.append(element)
    return origin_list
print(append(['zjx'],'python')) 

5)函式文件(.__doc__)

函式文件的作用是描述該函式的功能,給函式寫文件是為了讓別人可以更好的理解你的函式。

函式文件字串可以通過特殊屬性._ _doc_ _

6)預設引數

在函式定義的時候給形式引數一個預設值,有實參時按實參,無實參時按形參的預設值

可以簡化函式呼叫過程,只需要傳入少量引數就可以實現呼叫過程

如果呼叫函式的時候傳入了這個實際引數,預設值不會生效

預設引數必須放到為位置引數的後面

def append(origin_list,element="hello"):
    origin_list.append(element)
    return origin_list
print(append(['zjx'])) 

7)關鍵字引數

可以提高函式呼叫時候的可讀性,更加容易理解實際引數的意義

關鍵字的名字就是形式引數

關鍵字引數區別位置引數:可以不按照順序呼叫

關鍵字引數也要放到位置引數後面

def get_name(first_name,middle_name,last_name):
    '''獲取名字'''
    return first_name + middle_name + last_name
print(get_name( middle_name = 'jing',first_name='zhang',last_name='xuan'))    #關鍵字引數在呼叫的時候,可以不按照順序

8)可變長引數

1.位置可變長引數 *args 函式裡面(元組)

*names:在函式內部的表現形式:names是一個元組

可以接收從函式呼叫的時候,多餘的位置引數

加在其他位置引數的後面
def get_name(firstname,*names):
  print(firstname)
  print(names)
  return firstname
get_name('zhang','jingxue','好看')   
'''
結果:
zhang
('jingxue', '好看')
'''

可不可以只有*names 可以的

def get_name(*names):
  print(names)
get_name('jingxue','好看')   

'''
結果:
('jingxue', '好看')
'''


2.關鍵字可變長引數 ** kwargs函式裡面得到的是{字典}

# 呼叫函式時**kwargs不傳入引數,返回的是空字典{}
def
get_name(*names,**kwargs): print(names) print(kwargs) get_name('zjx','wang') ''' 結果: ('zjx', 'wang') {} '''
# 呼叫函式時**kwargs傳入引數,返回的是字典{},以key-value形式儲存
def
get_name(*names,**kwargs): print(names) print(kwargs) get_name('zjx','wang',middle='hello',last='python') ''' 結果: ('zjx', 'wang') {'middle': 'hello', 'last': 'python'} '''

注意:兩個*代表關鍵字引數,一個*號代表位置引數。關鍵字引數要放在位置引數後面

   位置可變長引數*names 要放在關鍵字可變長引數**kwargs的前面