python函數2(返回值、傳遞列表...)


python函數2(返回值、傳遞列表...)

 1、返回值

1.1、返回簡單的值

1 #返回簡單值
2 def get_formatted_name(first_name,last_name):
3     """返回整潔的名字"""
4     full_name = first_name + ' ' + last_name
5     return full_name.title() #將首字母大寫
6 
7 musician = get_formatted_name('jim','harry')
8 print(musician)

執行結果:

Jim Harry

1.2、實參可選

什么叫參數可選,就是在調用函數時,如果形參中定義的值在函數調用時並不存在,那么怎么要實參可選呢?就是把形參定義一個默認值,這個默認值為即可。

 1 #實參可選
 2 def get_formatted_name(first_name,last_name,middle_name = ''):
 3     """返回整潔的名字"""
 4     if middle_name:
 5         full_name = first_name + ' ' + middle_name + ' '+ last_name
 6     else:
 7         full_name = first_name + " " + last_name
 8     return full_name.title()
 9 
10 musician = get_formatted_name('jim','harry')
11 print(musician)
12 musician = get_formatted_name('jim','harry','coo')
13 print(musician)

執行結果:

Jim Harry
Jim Py Harry

 

1.3、返回字典

函數可以返回任意值,包括列表、字典等復雜的數據結構

1 #返回字典
2 def get_formatted_name(first_name,last_name):
3     """返回整潔的名字"""
4     full_name = {'first':first_name,'last':last_name}
5     return full_name
6 
7 musician = get_formatted_name('jim','harry')
8 print(musician)

執行結果:

1 {'last': 'harry', 'first': 'jim'}

還可以增加年紀等信息

1 #拓展,增加年紀等信息
2 def get_formatted_name(first_name,last_name,age = ''):
3     """返回整潔的名字"""
4     person = {'first':first_name,'last':last_name}
5     if age:
6         person['age'] = age
7     return person
8 musician = get_formatted_name('jim','harry',age = '27')
9 print(musician)

執行結果:

1 {'age': '27', 'last': 'harry', 'first': 'jim'}

 

1.4、結合使用函數和while循環

函數可以結合之前學過的while循環進行使用,讓人機交互成為可能。

#結合使用函數和while循環
def get_formatted_name(first_name,last_name):
    """返回整潔的名字"""
    full_name = first_name + ' ' + last_name
    return full_name

while True:
    print("\nPlease inter your name?")
    print("inter q to quit!")

    f_name = input('First name :')
    if f_name == 'q':
        break

    l_name = input('Last name:')
    if l_name == 'q':
        break
    musician = get_formatted_name(f_name,l_name)
    print(musician)

 

2、傳遞列表(修改列表、禁止函數修改列表)

 

使用背景:向函數傳遞列表很有用,這種列表包含的可能是名字、數字或者更復雜的對象(如字典),將列表傳遞給函數后,函數就可以直接訪問其內容。

 示例:

將打印出對每個人的問候語。

1 #傳遞列表
2 def greet_users(names):
3     """向列表中的每位用戶都發出簡單的問候"""
4     for name in names:
5         msg = 'Hello,' + name.title() + "!"
6         print(msg)
7 
8 usernames = ['harry','kobe','james']
9 greet_users(usernames)

執行結果:

1 Hello,Harry!
2 Hello,Kobe!
3 Hello,James!

2.1、在函數中修改列表

將列表傳遞給函數后,函數可對其進行修改,在函數中對這個列表所做的任何修改都是永久性的。

 1 #禁止函數修改列表
 2 def print_models(unprinted_desgins,completed_models):
 3     """
 4     模擬打印每個設計,直到沒有未打印的設計為止
 5     打印每個設計后,都將其移到列表completed_models中
 6     """
 7     while unprinted_desgins:
 8         current_design = unprinted_desgins.pop()
 9 
10         #模擬根據設計制作3D打印模型的過程
11         print('Printing model:' + current_design)
12         completed_models.append(current_design)
13 
14 def show_completed_models(completed_models):
15     """顯式打印好的所有模型"""
16     print("\nThe following models have been printed:")
17     for completed_model in completed_models:
18         print(completed_model)
19 
20 unprinted_designs = ['iphone case','robot pendant','dodecahedron']
21 completed_models = []
22 
23 print_models(unprinted_designs,completed_models)
24 show_completed_models(completed_models)

執行結果:

1 Printing model:dodecahedron
2 Printing model:robot pendant
3 Printing model:iphone case
4 
5 The following models have been printed:
6 dodecahedron
7 robot pendant
8 iphone case

2.2、禁止函數修改列表

#禁止函數修改列表
print_models(unprinted_designs[:],completed_models)

執行結果:

Printing model:dodecahedron
Printing model:robot pendant
Printing model:iphone case

 

 

3、傳遞任意數量的實參

使用背景:不知道函數需要接受多少個實參,函數無法處理超出預定形參的實參數量,那么可以只用一個形參 *toppings;

這樣不管提供了多個實參,都可以收入。

示例:

1 #傳遞任意數量的實參
2 def user_name(*toppings):
3     print(toppings)
4 
5 user_name('Harry','james','kobe')

執行結果:

('Harry', 'james', 'kobe')

以上,將執行結果封裝在一個元祖中。

也可以對輸入的實參進行遍歷操作:

1 def user_name(*toppings):
2     print("\n點名情況如下:")
3     for topping in toppings: #進行遍歷操作
4         print(topping)
5 
6 user_name('Harry','james','kobe')

執行結果:

1 點名情況如下:
2 Harry
3 james
4 kobe

3.1、結合使用位置實參和任意數量實參

可以在函數名增加一些班級、性別等形參,這樣就會使用位置實參

1 #結合使用位置實參和任意數量實參
2 
3 def user_name(classes,*toppings):
4     print(classes + "點名情況如下:")
5     for topping in toppings:
6         print(topping)
7 
8 user_name("高3(1)班",'Harry','james','kobe')

執行結果:

高3(1)班點名情況如下:
Harry
james
kobe

 


免責聲明!

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



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