Python函數


函數的定義

# java
public void 方法名(形參1,形參2,...){
    方法體;
    return 值;
}

# python
def 函數名(形參1,形參2,...):
    函數體
    return 值

函數的調用:

函數名(實參1,實參2,...)

總結:函數通過def定義,通過return返回,如果沒有return那么返回None。
作用:實現一種功能,是一種封裝。

# 定義
def add():
    print("Hello World")

# 調用
add()

# 在主方法調用(main+“回車” 自動生成)
if__name__=='__main__':  
    add()

根據是否有參數和是否有返回值,可以把函數分為四類

1、無參無返回(無返回表示返回None)

# 定義:	
def run():
    print("我獨自一個人在跑步")

# 調用:
run()

2、無參有返回

# 定義:
def xzy():
    print("我在努力寫作業")
    return "作業"

# 調用:
return_value=xzy()
print(return_value)

3、有參無返回

# 定義:
def qj(money,jinzi,shoushi):
    print("我搶劫完就跑了")

# 調用:
qiangjie("錢","金子","首飾")

4、有參有返回

# 定義:
def add(a,b):
    c=a+b
    return c

# 調用:
sum=add(30,40)
print(sum)

總結:有參數就要傳值,有返回值一般就要接收

有特別含義的參數

1.有默認值的參數

# 定義:(兩個參數只有一個有默認值要寫到后面)
def adds(a,b=100):
    c=a+b
    return c

# 調用:
print(adds(30))
print(adds(30,200))

2.有*不定長的參數(這種參數會把傳入的值組合成一個元組)

# 定義:
def add(a,*b):
    print(a)
    print(b)

# 調用:
add(30)
add(30,100)
add(30,100,200,300,400,500,600)

3.帶**不定長的參數(這種參數會把傳入的值組合成一個字典)

# 定義:
def adds(a,**b):
    print(a)
    print(b)

# 調用:
adds(30)
adds(30,aaa=2,bbb=3,ccc=4)

嵌套函數

1.嵌套調用(在一個函數里面調用另一個或多個函數)

def sort(lis):
    for cs in range(len(lis)):
        for a in range(len(lis)-1):
            if lis[a]>lis[a+1]:
                temp=lis[a]
                lis[a]=lis[a+1]
                lis[a+1]=temp
    test()
    return lis

def test():
    print("WWWWWWWWW")

2.嵌套定義(內部的函數只能在內部調用)

def a():
    test=1
    print(test)
    def b():
        test=2
        print(test)
        def c():
            test=3
            print(test)
    b()

函數遞歸

1.自己調用自己

def a():
    print("aaaaaa")
    a()

2.函數之間相互調用

def a():
    print("aaaaaa")
    b()

def b()
    print("bbbbbb")
    a()

匿名函數lambda

sum=lambda a,b:a+b

print(sum(10,20))

值傳遞和引用傳遞

  • 值傳遞:只是傳遞變量的值
  • 引用傳遞:傳遞的是指向值的內存地址。例如(傳list和dict)

當函數傳入list或者是dict時,則是引用傳遞

練習

1.寫函數,接收兩個數字參數,返回最大值

def num(a,b):
    max=a if a>b else b
    return max

print(num(30,23))

2.寫函數,獲取傳入列表的所有奇數位索引對應的元素,並將其作為新列表返回。

def getJs(lis):
    new_list=[]
    for a in range(len(lis)):
        if a%2==0:
            new_list.append(lis[a])
    return new_list

print(getJs([82,42,60,12,33,79,19,43]))

3.寫函數,判斷用戶傳入的對象(列表)長度是否大於5,如果大於5,那么僅保留前五個長度的內容並返回。不大於5返回本身。
例如:
傳入1:[34,23,52,352,666,3523,5] 返回1:[34,23,52,352,666]
傳入2:[34,23,52] 返回2:[34,23,52]

def ls(lis):
    new_lis=[]
    if len(lis)>5:
        new_lis.append(lis[0])
        new_lis.append(lis[1])
        new_lis.append(lis[2])
        new_lis.append(lis[3])
        new_lis.append(lis[4])
        return new_lis
    else:
        return lis

print(ls([34,23,52,352,666,3523,5]))
print(ls([4,23,52]))

4.寫函數,檢查傳入的字符串是否含有空字符串,返回結果,包含空字符串返回True,不包含返回False
例如:
傳入:"hello world"
返回:True

def hw(a):
    if ' ' in a:
        return True
    else:
        return False

print(hw('hello world'))

5.寫函數,接收n個數字,求這些數字的和

def su(*a):
    s = sum(a)
    return s

print(su(12,21,32))
print(su(3,2,1))

6.定義一個函數,實現兩個數四則運算,要注意有3個參數,分別是運算符和兩個運算的數字.
例如:
傳入:10,*,20
返回:200

def a(x,y,z):
    if z=="*":
        i=int(x)*int(y)
        return i
    elif z=="/":
        i=int(x)/int(y)
        return i
    elif z=="+":
        i=int(x)+int(y)
        return i
    elif z=="-":
        i=int(x)-int(y)
        return i
    else:
        print("請輸入兩個數字和“+、-、*、\ ”其中一個運算符")

print(a(10,20,"*"))
print(a(30,40,"+"))

7.實現學生管理系統,完成對學員的增,刪,改,查和退出學生管理系統。
要求1:使用一個list用於保存學生的姓名。
要求2:輸入0顯示所有學員信息,1代表增加,2代表刪除,3代表修改,4代表查詢,exit代表退出學生管理系統。每一個功能定義一個自定義函數。界面如下:
系統界面如下:
-----------------------歡迎進入T666班學生管理系統-----------------------------
請選擇系統功能:
0:顯示所有學員信息
1:添加一個學員信息
2:刪除一個學員信息
3:修改一個學員信息
4:查詢一個學員信息
exit:退出學生管理系統
'''

lis=["郭易","湯碗珍"]

'''
(0)輸入0后效果如下:
0
["郭易","湯碗珍"..]
'''

def all():
    print(lis)

'''

(1)輸入1后效果如下:
1
請輸入增加人的姓名:張三
["郭易","湯碗珍",'張三'..]
'''

def insert():
    i=input("請輸入增加人的姓名:")
    lis.append(i)
    print(lis)

'''

(2)輸入2后效果如下:
2
請輸入刪除人的姓名:張三
["郭易","湯碗珍"..]
'''

def delete():
    d=input("請輸入刪除人的姓名:")
    lis.remove(d)
    print(lis)

'''

(3)輸入3后效果如下:<注意:如果list中沒有這個學員則打印:T666班沒有這個學員>
3
請輸入需要修改人的姓名:張三
請輸入需要修改后的姓名:李四
["郭易","湯碗珍",'李四'..]
'''

def update():
    uq=input("請輸入需要修改人的姓名:")
    uh=input("請輸入需要修改后的姓名:")
    xb=lis.index(uq)
    lis.pop(xb)
    lis.insert(xb,uh)
    print(lis)

'''
(4)輸入4后效果如下:<注意:如果list中沒有這個學員則打印:T666班沒有這個學員>
請輸入查詢人的姓名:張三
張三在座位號(3<下標>)的位置。
'''

def select():
    s=input("請輸入查詢人的姓名:")
    if s in lis:
        xb=lis.index(s)
        print(s+"在座位號"+str(xb)+"的位置")
    else:
        print("未找到此同學,請輸入正確名字")

'''
(5)輸入exit后效果如下:
exit
歡迎使用T666的學生管理系統,下次再見。
'''

def exit():
    print("歡迎使用T666的學生管理系統,下次再見。")

while True:
    if __name__ == '__main__':
        xz=input("\n"+"-----------------------歡迎進入T666班學生管理系統-----------------------------"
             +"\n"+"請選擇系統功能:"+"\n"
             +"0:顯示所有學員信息"
             +"\n"+"1:添加一個學員信息"
             +"\n"+"2:刪除一個學員信息"
             +"\n"+"3:修改一個學員信息"
             +"\n"+"4:查詢一個學員信息"
             +"\n"+"exit:退出學生管理系統"+"\n")

if xz=="0":
    all()
elif xz=="1":
    insert()
elif xz=="2":
    delete()
elif xz=="3":
    update()
elif xz=="4":
    select()
elif xz=="exit":
    exit()
    break


免責聲明!

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



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