码迷,mamicode.com
首页 > 编程语言 > 详细

python函数2(返回值、传递列表...)

时间:2019-02-17 00:54:11      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:mode   des   包含   ast   completed   ...   3d打印   就是   使用   

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

 

python函数2(返回值、传递列表...)

标签:mode   des   包含   ast   completed   ...   3d打印   就是   使用   

原文地址:https://www.cnblogs.com/aszeno/p/10386149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!