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

1、返回值

1.1、返回简单的值

 #返回简单值
def get_formatted_name(first_name,last_name):
"""返回整洁的名字"""
full_name = first_name + ' ' + last_name
return full_name.title() #将首字母大写 musician = get_formatted_name('jim','harry')
print(musician)

执行结果:

Jim Harry

1.2、实参可选

什么叫参数可选,就是在调用函数时,如果形参中定义的值在函数调用时并不存在,那么怎么要实参可选呢?就是把形参定义一个默认值,这个默认值为即可。

 #实参可选
def get_formatted_name(first_name,last_name,middle_name = ''):
"""返回整洁的名字"""
if middle_name:
full_name = first_name + ' ' + middle_name + ' '+ last_name
else:
full_name = first_name + " " + last_name
return full_name.title() musician = get_formatted_name('jim','harry')
print(musician)
musician = get_formatted_name('jim','harry','coo')
print(musician)

执行结果:

Jim Harry
Jim Py Harry

1.3、返回字典

函数可以返回任意值,包括列表、字典等复杂的数据结构

 #返回字典
def get_formatted_name(first_name,last_name):
"""返回整洁的名字"""
full_name = {'first':first_name,'last':last_name}
return full_name musician = get_formatted_name('jim','harry')
print(musician)

执行结果:

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

还可以增加年纪等信息

 #拓展,增加年纪等信息
def get_formatted_name(first_name,last_name,age = ''):
"""返回整洁的名字"""
person = {'first':first_name,'last':last_name}
if age:
person['age'] = age
return person
musician = get_formatted_name('jim','harry',age = '')
print(musician)

执行结果:

 {'age': '', '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、传递列表(修改列表、禁止函数修改列表)

使用背景:向函数传递列表很有用,这种列表包含的可能是名字、数字或者更复杂的对象(如字典),将列表传递给函数后,函数就可以直接访问其内容。

示例:

将打印出对每个人的问候语。

 #传递列表
def greet_users(names):
"""向列表中的每位用户都发出简单的问候"""
for name in names:
msg = 'Hello,' + name.title() + "!"
print(msg) usernames = ['harry','kobe','james']
greet_users(usernames)

执行结果:

 Hello,Harry!
Hello,Kobe!
Hello,James!

2.1、在函数中修改列表

将列表传递给函数后,函数可对其进行修改,在函数中对这个列表所做的任何修改都是永久性的。

 #禁止函数修改列表
def print_models(unprinted_desgins,completed_models):
"""
模拟打印每个设计,直到没有未打印的设计为止
打印每个设计后,都将其移到列表completed_models中
"""
while unprinted_desgins:
current_design = unprinted_desgins.pop() #模拟根据设计制作3D打印模型的过程
print('Printing model:' + current_design)
completed_models.append(current_design) def show_completed_models(completed_models):
"""显式打印好的所有模型"""
print("\nThe following models have been printed:")
for completed_model in completed_models:
print(completed_model) unprinted_designs = ['iphone case','robot pendant','dodecahedron']
completed_models = [] print_models(unprinted_designs,completed_models)
show_completed_models(completed_models)

执行结果:

 Printing model:dodecahedron
Printing model:robot pendant
Printing model:iphone case The following models have been printed:
dodecahedron
robot pendant
iphone case

2.2、禁止函数修改列表

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

执行结果:

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

3、传递任意数量的实参

使用背景:不知道函数需要接受多少个实参,函数无法处理超出预定形参的实参数量,那么可以只用一个形参 *toppings;

这样不管提供了多个实参,都可以收入。

示例:

 #传递任意数量的实参
def user_name(*toppings):
print(toppings) user_name('Harry','james','kobe')

执行结果:

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

以上,将执行结果封装在一个元祖中。

也可以对输入的实参进行遍历操作:

 def user_name(*toppings):
print("\n点名情况如下:")
for topping in toppings: #进行遍历操作
print(topping) user_name('Harry','james','kobe')

执行结果:

 点名情况如下:
Harry
james
kobe

3.1、结合使用位置实参和任意数量实参

可以在函数名增加一些班级、性别等形参,这样就会使用位置实参

 #结合使用位置实参和任意数量实参

 def user_name(classes,*toppings):
print(classes + "点名情况如下:")
for topping in toppings:
print(topping) user_name("高3(1)班",'Harry','james','kobe')

执行结果:

高3(1)班点名情况如下:
Harry
james
kobe

python函数2(返回值、传递列表...)的更多相关文章

  1. 函数的学习2——返回值&传递列表——参考Python编程从入门到实践

    返回值 函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值.函数的返回值被称为返回值. 1. 简单的返回值 def get_formatted_name(first_name, l ...

  2. Python函数之返回值、作用域和局部变量

    一.函数返回值 说到返回值,相信大家肯定都认识,没错,就是return. 所谓返回值可以这样理解:函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回. 那具体怎么用呢?接 ...

  3. Python函数的返回值和作用域

    函数的返回值和作用域 1.返回值 def guess(x):    if x > 3:        return "> 3"    else:        retu ...

  4. 『无为则无心』Python函数 — 27、Python函数的返回值

    目录 1.返回值概念 2.return关键字的作用 3.返回值可以返回的数据类型 4.函数如何返回多个值 5.fn5 和 fn5()的区别 6.总结: 1.返回值概念 例如:我们去超市购物,比如买饮料 ...

  5. Python 函数作为返回值

    函数作为返回值高阶函数除了可以接收函数作为参数外,还可以把函数作为结果值返回. def lazy_sum(*args): def sum(): ax=0 for n in args: ax = ax ...

  6. python函数的返回值 讲解

    我们一起来聊聊python函数返回值的特殊情况,之前我也碰到过类似方面的问题,到后来查阅了一些资料后,发现原来是这样. 首先,写函数的时候,一定要写函数的文档,这样方便我们识别函数是做什么的.我记得很 ...

  7. python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变

    函数参数传递本质上和变量整体复制一样,只是两个变量分别为形参a和实参b.那么,a=b后,a变了,b值是否跟着变呢?这取决于对象内容可变不可变 首先解释一下,什么是python对象的内容可变不可变? p ...

  8. python函数的返回值

    返回值:return1.没有返回值    #不写return    #只写return:结束一个函数    #return None2.有一个返回值    #可以返回任何数据类型    #只要返回就可 ...

  9. Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数

    Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数 内容大纲 1.函数的初识 2.函数的定义 3.函数的调用 4.函数的返回值 5.函数的参数 1.函数初识 # def ...

  10. python中函数的返回值

    函数返回值(一) <1>“返回值”介绍 现实生活中的场景: 我给儿子10块钱,让他给我买包烟.这个例子中,10块钱是我给儿子的,就相当于调用函数时传递到参数,让儿子买烟这个事情最终的目标是 ...

随机推荐

  1. Windows和Linux下与VMware虚拟机通过内网IP通讯

    首先分两种情况:一种是你的电脑已经在一个内网的环境下且有额外的内网IP地址,和另一种只是想给自己电脑上的虚拟机分配个内网IP来通讯. ①有可用的内网IP 找到一个空闲的IP地址(这里以192.168. ...

  2. Mac重装操作系统系统

    恢复出厂设置 第一种 1.开机 2.commond + R,进入recover模式. 3.选择磁盘工具 4.显示所有设备 5.抹掉硬盘.格式选择 (1):Mac OS 扩展(日志式). (2): Ma ...

  3. ASP.NET Core Web程序托管到Windows 服务

    前言 在 .NET Core 3.1和WorkerServices构建Windows服务 我们也看到了,如何将workerservices构建成服务,那么本篇文章我们再来看看如何将web应用程序托管到 ...

  4. 简简单单之Linux命令入门

    show me the code and talk to me,做的出来更要说的明白 GitHub 项目JavaHouse同步收录 我是布尔bl,你的支持是我分享的动力! 引入 作为一名合格的后端开发 ...

  5. 测试工具Fiddler(一)—— 基础知识

    Fiddler基础知识 一.Fiddler是什么? Fiddler是一个http协议调试代理工具,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据.设置断点. ...

  6. 异数OS TCP协议栈测试(二)--短连接篇

    异数OS TCP协议栈测试(二)--短连接篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 测试目标 TCP 短链接IO性能测试,Client Se ...

  7. Entity Framework 6+ 连接Mysql

    好吧.这个博客开不开的 我感觉.. 都一样了. 前言: 公司改造Sqlserver ->Mysql Sql2016老夫对不住你啊.. 好 前沿结束. 需要的家伙: 1.mysql-for-vis ...

  8. 异步查询转同步加redis业务实现的BUG分享

    在最近的性能测试中,某一个查询接口指标不通过,开发做了N次优化,最终的优化方案如下:异步查询然后转同步,再加上redis缓存.此为背景. 在测试过程中发现一个BUG:同样的请求在第一次查询结果是OK的 ...

  9. arch_遇到的问题

    archlinux安装 wiki安装 可以参考这个来安装 $如果你跟我一样是用校园网安装的$ 记得使用pppoe-setup 来联网 arclinux 图形界面安装 参考 kde图形安装 需要创建一个 ...

  10. 重写ThreadFactory方法和拒绝策略

    最近项目中要用到多线程处理任务,自然就用到了ThreadPoolTaskExecutor这个对象,这个是spring对于Java的concurrent包下的ThreadPoolExecutor类的封装 ...