python函数2(返回值、传递列表...)
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(返回值、传递列表...)的更多相关文章
- 函数的学习2——返回值&传递列表——参考Python编程从入门到实践
返回值 函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值.函数的返回值被称为返回值. 1. 简单的返回值 def get_formatted_name(first_name, l ...
- Python函数之返回值、作用域和局部变量
一.函数返回值 说到返回值,相信大家肯定都认识,没错,就是return. 所谓返回值可以这样理解:函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回. 那具体怎么用呢?接 ...
- Python函数的返回值和作用域
函数的返回值和作用域 1.返回值 def guess(x): if x > 3: return "> 3" else: retu ...
- 『无为则无心』Python函数 — 27、Python函数的返回值
目录 1.返回值概念 2.return关键字的作用 3.返回值可以返回的数据类型 4.函数如何返回多个值 5.fn5 和 fn5()的区别 6.总结: 1.返回值概念 例如:我们去超市购物,比如买饮料 ...
- Python 函数作为返回值
函数作为返回值高阶函数除了可以接收函数作为参数外,还可以把函数作为结果值返回. def lazy_sum(*args): def sum(): ax=0 for n in args: ax = ax ...
- python函数的返回值 讲解
我们一起来聊聊python函数返回值的特殊情况,之前我也碰到过类似方面的问题,到后来查阅了一些资料后,发现原来是这样. 首先,写函数的时候,一定要写函数的文档,这样方便我们识别函数是做什么的.我记得很 ...
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
函数参数传递本质上和变量整体复制一样,只是两个变量分别为形参a和实参b.那么,a=b后,a变了,b值是否跟着变呢?这取决于对象内容可变不可变 首先解释一下,什么是python对象的内容可变不可变? p ...
- python函数的返回值
返回值:return1.没有返回值 #不写return #只写return:结束一个函数 #return None2.有一个返回值 #可以返回任何数据类型 #只要返回就可 ...
- Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数
Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数 内容大纲 1.函数的初识 2.函数的定义 3.函数的调用 4.函数的返回值 5.函数的参数 1.函数初识 # def ...
- python中函数的返回值
函数返回值(一) <1>“返回值”介绍 现实生活中的场景: 我给儿子10块钱,让他给我买包烟.这个例子中,10块钱是我给儿子的,就相当于调用函数时传递到参数,让儿子买烟这个事情最终的目标是 ...
随机推荐
- selenium自动化测试入门 Alert/Confirm/Prompt 弹出窗口处理
一.Alert/Confirm/Prompt弹出窗口特征说明 Alert弹出窗口: 提示用户信息只有确认按钮,无法通过页面元素定位,不关闭窗口无法在页面上做其他操作. Confirm 弹出窗口: 有确 ...
- HR系列GPS北斗时间同步服务器在电力系统典型应用
HR系列GPS北斗时间同步服务器在电力系统典型应用 时间同步系统主要由主时钟.若干从时钟.时间信号传输介质组成.根据时间同步现场的不同要求,时间同步系统的结构配置有多种形式,主要分为三种:基本式.主从 ...
- VMware上安装Kali Linux 超详细教程
一.下载镜像文件 下载好系统对应镜像文件 https://www.kali.org/downloads/ 二.创建新的虚拟机 1.创建新的虚拟机 我们使用自定义的配置方法. 2.添加镜像文件的路径 ...
- MySQL数据库保存emoji表情
何为emoji表情?这里的全是. MySQL数据库为什么不能存储emoji?不是MySQL不能,而是MySQL的utf8编码不能!原来MySQL下的utf8编码每个字符占3个字节,而emoji占4个字 ...
- 【linux学习笔记】
网上看一个两小时突击linux的教程,就想补充一下linux的知识.想着一天抽出俩小时立马就能学完呢,结果乱七八糟的事情拖了四五天,实际完成某项任务的时间超出预期完成任务的两部不止.好了," ...
- Go Web 编程之 请求
概述 前面我们学习了处理器和处理器函数,如何编写和注册处理器.本文我们将学习如何从请求中获取信息. 请求的结构 通过前面的学习,我们知道处理器函数需要符合下面的签名: func (w http.Res ...
- 【转】ArcGIS Server 10.1 动态图层—添加栅格
本文将介绍如何通过arcgisserver10.1动态图层添加栅格影像.与添加矢量数据不同的是,天际栅格用到了RasterDataSource接口,如下所示 <esri:DynamicLayer ...
- ZooKeeper Java Example
A Simple Watch Client Requirements Program Design The Executor Class The DataMonitor Class Complete ...
- 极简安装 TensorFlow 2.0 GPU
前言 之前写了几篇关于 TensorFlow 1.x GPU 版本安装的博客,但几乎没怎么学习过.之前基本在搞 Machine Learning 和 Data Mining 方面的东西,极少用到 NN ...
- 如何编写Robot Framework测试用例2---(测试用例语法1)
基本语法 测试用例由关键字组成,关键字的来源有三种: 1从测试库引入:2从资源文件引入:3从关键字表中引入(自定义关键字) 下面就是一个典型的测试用例组织形式. 图中有2个测试用例“Valid Log ...