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块钱是我给儿子的,就相当于调用函数时传递到参数,让儿子买烟这个事情最终的目标是 ...
随机推荐
- ### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaojian.blog.po.BlogType and java.lang.String ### Cause: java.lang.IllegalArgumentException: ...
### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: cn.xiaoj ...
- HashMap,HashTable 区别,实现原理。
HashMap是HashTable 的轻量级,非线程安全的,都是实现了map接口 区别:hashmap 允许空键值对的存在,非线程安全,效率高于hashtable,因为hashtable 是synch ...
- Persistence.beans
SF_USERS user = new SF_USERS(); user.setCTIME("20170103"); String ids = "fish,water&q ...
- DZNEmptyDataSet框架阅读
前段时间使用公司封装的空白页占位视图工具,工具是对DZNEmptyDataSet框架的封装.这个框架以前在许多项目也都用过,却没有认真阅读过源码,真的很遗憾.这两天趁五一放假有空,将DZNEmpt ...
- 解决RabbitMQ远程不能访问的问题
刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题: 出于安全的考虑,guest这个默认的用户只能通过http://localhost:1567 ...
- 怎样使用七牛云CDN加速并绑定阿里云域名
昨天晚上在某个群里看到群友问,七牛云能不能绑定自己的域名作为静态资源文件的前缀,忽然想起来我已经有快两年时间没有登录过我的七牛云账号了,不禁老脸一红,这是有多久没有自己前后端都弄了,幸好还没有老年痴呆 ...
- 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》-总结
一.什么是业务中台 概念来自于阿里,介于前台和后台(此后台指的是云计算.数据库.消息队列.缓存等基础服务) 采用共享式架构设计解决以往烟囱式架构设计的资源浪费.重复造轮.试错成本高的问题 阿里的中 ...
- 系统升级更新,cocoaPods不可用的问题
1.在终端运行: $ sudo gem install cocoa pods 会出现以下错误: ERROR: While executing gem ... (Errno::EPERM) Opera ...
- 支撑京东小程序的开发框架 「Taro」
Taro 简介 现在支持小程序的平台太多了,例如: 微信小程序 QQ小程序 支付宝小程序 百度小程序 字节跳动小程序 针对他们都各自开发一套的话开发成本就太高了. 如果写一套代码,就能开发出适配这么多 ...
- Codeforces Round #615 (Div. 3)
A. Collecting Coins 题目链接:https://codeforces.com/contest/1294/problem/A 题意: 你有三个姐妹她们分别有 a , b , c枚硬币, ...