初識python: 自定義函數


什么是函數?

函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。函數能提高應用的模塊性,和代碼的重復利用率。

函數的定義方法:

def test(x):
'函數定義方法'
x+=1
return x
解釋:
def:定義函數關鍵字
test:函數名
():可定義形參
'':文檔描述
x+=1:代碼塊或程序處理邏輯
return:結束並返回值

函數為什么要有返回值?
通過返回值接收函數的執行結果,后續的邏輯需要通過此結果執行其對應操作。

實例:給一個文件寫入日志信息
import time
# 定義函數
def test1():
    '函數練習:添加日志記錄'
    log_time = time.strftime('%Y-%m-%d %X')
    with open('file_a','a') as f:
        f.write(log_time+':log msg\n')
# 調用函數
test1()

 

函數返回值說明:
return 返回值數量=0:返回一個空值(None)
返回值數量=1:返回一個對象(object)
返回值數量>1:返回一個元組(tuples)

實例:
#函數返回類型
def test_None():
    print('返回一個空值')
x=test_None()
print(x)

def test_object():
    print('返回一個對象')
    return 0
y=test_object()
print(y)

def test_tuples():
    print('返回一個元組')
    return 1,'hello world',['qwe','asd'],{'001':'simple'}
z=test_tuples()
print(z)
 
        
形參:定義的參數叫形參(x,y)
實參:實際傳入的參數叫實參(1,2)
不指定參數的情況下:實參與形參位置一一對應

實例:
注:位置傳參與關鍵字傳參共用時,關鍵字參數不能寫在位置參數之前
def test_sum(x,y):
    '兩數之和'
    z = x + y
    return z
t_sum=test_sum(1,2) #實參與形參位置一一對應
print(t_sum)

t_sum2=test_sum(x=1,y=2) #與形參位置無關
print(t_sum2)

t_sum3=test_sum(1,y=2) # 錯誤方式:test_sum(x=1,2) 位置傳參與關鍵字傳參共用時,關鍵參數不能寫在位置參數之前
print(t_sum3)

 

默認值參數:
# 默認值參數
def test_default(x,y=2):
    '默認值參數'
    z = x + y
    return z
print(test_default(2)) #print(tesst_default(2,2))

 

參數組(不定長參數):

# 參數組,接受位置參數,將多個實參存入一個元組中
# 定義格式:*變量名(一般規范為 *args)
def test_group(*args):
    '參數組'
    print(args)
test_group(1,2,3,4,5,6)

def test_group2(x,*args):
    '參數組與位置參數混用'
    print(x)
    print(args)
test_group2(1,2,3,4,5,6)

# 接受關鍵字參數組,轉換成字典
def test_group3(**kwargs):
    '參數組鍵值對形式'
    print(kwargs['name'])
test_group3(name='simple',age=25,sex='m')

def test_group4(name,**kwargs):
    '參數、參數組鍵值對混用'
    print(name)
    print(kwargs)
test_group4('simple',age=25,sex='m')

#注:參數組必須放在位置參數、默認參數之后
def test_group5(name,age=25,**kwargs):
    '參數、默認參數、參數組鍵值對混用'
    print(name)
    print(age)
    print(kwargs)
test_group5('simple',age=3,sex='m',game='lol')

def test_group6(name,age=25,*args,**kwargs):
    '參數、默認參數、參數組、參數組鍵值對混用'
    print(name)
    print(age)
    print(*args)
    print(kwargs)
test_group5('simple',age=3,sex='m',game='lol')

 







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM