python函數基礎(函數的定義和調用)


函數的定義

python定義函數使用def關鍵字

return[表達式]語句用於退出函數,選擇性的向調用方返回一個表達式,不帶參數值的return語句返回none

def 函數名(參數列表):
    函數體

 

def get_money_fromATM(cardno,password,money):
    #密碼要求是6位字符串類型
    if type(password) is str and len(password)==6:
        print('密碼正確')
    else:
        print('密碼格式錯誤')
    #金額小於3000元的能被100整除的整數
    if type(money) is int :
        if money%100==0 and money<=3000:
            print('金額正確')
        else:
            print('金額格式錯誤,請重新輸入')

get_money_fromATM(12412412412,'123456',2300)


#運行結果
密碼正確
金額正確

 

#計算面積的函數
def z(x,y):
    i=x*y
    print(i)
   
z(2,7)

#運行結果:
14

 

def sum(x,y):
    z=x+y
    print('函數內',z)

#調用的函數中沒有return表達式
z=sum(5,9)
print('函數外',z)

#運行結果
函數內 14
函數外 None

 

def sum(x,y):
    z=x+y
    print('函數內',z)
    return z

#調用的函數中沒有return表達式
z=sum(5,9)
print('函數外',z)

#運行結果
函數內 14
函數外 14

可變參數

def sum(*lst): 參數前面加一個星號,表示這個參數是可變的,也就是說可以接受多個參數,將這些參數構成一個元組,只能通過為止參數傳參

可變參數有兩種形式:

  • 位置可變參數 : 參數前加一個星號,參數構成一個元組,參數只能以 位置參數 的形式傳參
  • 關鍵字可變參數 : 參數前加兩個星號,參數構成一個字典,參數只能以 關鍵字參數 的形式傳參

當默認參數和可變參數一起出現的時候,默認參數相當於普通參數

通常來說:

  • 默認參數靠后
  • 可變參數靠后
  • 默認參數和可變參數不同時出現

keyword-only: 必須以Key->Value對的形式出現的,叫做keyword-only

參數的傳遞

 

 

 

 傳遞不可變對象實例

def jiaohuan(m,n):
    temp=m
    m=n
    n=temp
    return

a=2
b=3
print(a,b)
jiaohuan(a,b)
print(a,b)

#運行結果
2 3
2 3

 

調用函數時可使用的正式參數類型:必需參數、關鍵字參數、默認參數、不定長參數

必需參數

  必需參數須以正確的順序傳入函數。調用時的數量不須和聲明時的一樣

  調用printme函數,必須傳入一個參數,不然會出現語法錯誤

def printme(str):
    "打印任何傳入的字符串"
    print(str)

printme("調用printme函數")

#運行結果
調用printme函數

 

關鍵字參數

  關鍵字參數和函數調用關系緊密,函數調用使用關鍵字參數來確定傳入的參數值

  使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為python解釋器能夠用參數名匹配參數值

def printme(str):
    "打印任何傳入的字符串"
    print(str)

printme(str="調用printme函數")

#運行結果
調用printme函數

 

參數的默認值 

def inc(base,x=1): 給第二個參數設置一個默認值,若是不傳遞參數,則使用默認的參數值,若是傳遞參數,則使用傳遞的參數值

默認參數

  調用函數時,如果沒有傳遞參數,則會使用默認參數,默認參數只能放在參數列表的最后一個,但可以有多個默認參數

def sum(name,age=50):
    print(name,age)

name='白雲'
age=45
sum(name,age)

#運行結果
白雲 45

 

 

不定長參數

  你可能需要一個函數能處理比當初聲明時更多的參數,這些參數叫做不定長參數,聲明時不會命名

  加了星號的變量名會存放所有未命名的變量參數。如果在函數調用時沒有指定參數,它就是一個空元組,我們也可以不向函數傳遞未命名的變量

def printinfo(str,*varchar):
    '打印任何輸入的字符串'
    print('輸出:')
    print(str)
    for var in varchar:
        print(var)

#調用函數printinfo
printinfo(10)
printinfo(70,60,50,40,30)

#運行結果
輸出:
10
輸出:
70
60
50
40
30

 

匿名函數

python使用laabda來創建匿名函數

所謂匿名,即不再使用def語句這樣標准的形式定義一個函數

sum=lambda x,y:x+y

print(sum(1,2))

#運行結果
3

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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