函数返回值

  • 函数并非总是直接显示输出,它可以处理一些数据,并返回一个或一组值,函数返回的值被称为返回值。
  • 使用return语句将值返回到调用函数的代码行中
# 返回简单值
def get_formatted_name(first_name,last_name):
"""返回整洁的姓名"""
full_name = first_name + ' ' + last_name
return full_name.title() musician = get_formatted_name('jimi','hendrix')
print(musician)
Jimi Hendrix
# 让实参变为可选
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('jimi', 'hendrix')
print(musician) musician = get_formatted_name('john','hooker','lee')
print(musician)
Jimi Hendrix
John Lee Hooker

返回字典

  • 函数可以返回任何类型的值,包括列表和字典等较复杂的数据结构
# 返回字典
def build_person(first_name, last_name):
'''返回一个字典,其中包含有关一个人的信息 '''
person = {'first': first_name, 'last': last_name}
return person
musician = build_person('jimi', 'hendrix')
print(musician)
{'first': 'jimi', 'last': 'hendrix'}
# 混合案例:
def get_formatted_name(first_name, last_name):
full_name = first_name + ' ' + last_name
return full_name.title()
while True:
print("Please tell me your name: ")
f_name = input("First_name: ")
l_name = input("Last_name: ")
judge = input("Whether to continue running (y/n): ")
if (judge == 'n'):
break
else:
continue
formatted_name = get_formatted_name(f_name,l_name)
print("\nHello, " + formatted_name + "!")
Please tell me your name:
First_name: li
Last_name: yege
Whether to continue running (y/n): y
Please tell me your name:
First_name: wang
Last_name: erxiao
Whether to continue running (y/n): n

传递列表

  • 列表可能是名字、数字、或更复杂的对象如字典,将列表传递给函数后,函数就能直接访问其内容,使用列表来处理列表的效率
def greet_users(names):
'''向列表中的每位用户都发出简单的问候'''
for name in names:
msg = "Hello , " + name.title() + "!"
print(msg) usernames = ['hahaha','try','margot']
greet_users(usernames)
Hello , Hahaha!
Hello , Try!
Hello , Margot!

函数中修改列表

  • 将列表传递给函数后,函数就可以对其进行修改
  • 函数中对列表所作的任何修改都是永久性的,可以高效地处理大量数据
# 不使用函数传递
# 首先创建一个列表,其中包含一些要打印的设计
unprinted_designs = ['iphone case','robot pendant','dodecahedron']
completed_models = []
# 模拟打印每个设计,直到没有未打印的设计为止
# 打印每个设计后,都将其移到列表 completed_models 中
while unprinted_designs:
# 模拟根据设计制作 3D 打印模型的过程
current_design = unprinted_designs.pop()
print("Printing model: " + current_design)
completed_models.append(current_design)
# 显示打印好的所有模型
print("\nThe following models have been printed: ")
for completed_model in completed_models:
print(completed_model)
Printing model: dodecahedron
Printing model: robot pendant
Printing model: iphone case The following models have been printed:
dodecahedron
robot pendant
iphone case
# 使用函数传递列表
def print_models(unprinted_designs,completed_models):
while unprinted_designs:
# 模拟根据设计制作 3D 打印模型的过程
current_design = unprinted_designs.pop()
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)
print(unprinted_designs)
Printing model: dodecahedron
Printing model: robot pendant
Printing model: iphone case The following models have been printed:
dodecahedron
robot pendant
iphone case
[]
# 使用函数传递列表,禁止函数修改列表,可以使用里列表的副本,使用切片
def print_models(unprinted_designs,completed_models):
while unprinted_designs:
# 模拟根据设计制作 3D 打印模型的过程
current_design = unprinted_designs.pop()
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)
print(unprinted_designs)
Printing model: dodecahedron
Printing model: robot pendant
Printing model: iphone case The following models have been printed:
dodecahedron
robot pendant
iphone case
['iphone case', 'robot pendant', 'dodecahedron']

练习

# 1.魔术师
# 创建一个包含魔术师名字的列表,并将其传递给一个名为 show_magicians() 的函数,这个函数打印列表中每个魔术师的名字
names = ['liuqian','xiaowang','zhangsan','lisi']
def show_magicians(names):
for name in names:
print("The magicians names is " + name.title() + ".")
show_magicians(names)
The magicians names is Liuqian.
The magicians names is Xiaowang.
The magicians names is Zhangsan.
The magicians names is Lisi.
# 2.了不起的魔术师
# 在你为完成练习编写的程序中,编写一个名为 make_great() 的函数,对魔术师列表进行修改,在每个魔术师的名字中都加入字样 “the
# Great” 。调用函数 show_magicians() ,确认魔术师列表确实变了
names = ['liuqian','xiaowang','zhangsan','lisi']
def show_magicians(names):
for name in names:
print("The magicians names is " + name.title() + ".")
def make_great(names):
great_magicians = []
while names:
new_names = names.pop()
great_magician = new_names + "the Great"
great_magicians.append(great_magician)
for great_magician in great_magicians:
names.append(great_magician) show_magicians(names)
print("\n")
make_great(names)
show_magicians(names)
The magicians names is Liuqian.
The magicians names is Xiaowang.
The magicians names is Zhangsan.
The magicians names is Lisi. The magicians names is Lisithe Great.
The magicians names is Zhangsanthe Great.
The magicians names is Xiaowangthe Great.
The magicians names is Liuqianthe Great.
# 3.不变的魔术师
# 在调用函数 make_great() 时,向它传递魔术师列表的副本。由于不想修改原始列表,请返回修改后的
# 列表,并将其存储到另一个列表中。分别使用这两个列表来调用 show_magicians() ,确认一个列表包含的是原来的魔术师名字,而另一个列表包含的是添加了字
# 样 “the Great” 的魔术师名字。
def show_magicians(names):
for name in names:
print("The magicians names is " + name.title() + ".")
def make_great(names):
great_magicians = []
while names:
new_names = names.pop()
great_magician = new_names + "the Great"
great_magicians.append(great_magician)
print(names)
for great_magician in great_magicians:
names.append(great_magician)
print(names) names = ['liuqian','xiaowang','zhangsan','lisi']
show_magicians(names)
print("\n")
copy = names[:]
make_great(copy)
show_magicians((copy))
The magicians names is Liuqian.
The magicians names is Xiaowang.
The magicians names is Zhangsan.
The magicians names is Lisi. ['liuqian', 'xiaowang', 'zhangsan']
['liuqian', 'xiaowang']
['liuqian']
[]
['lisithe Great']
['lisithe Great', 'zhangsanthe Great']
['lisithe Great', 'zhangsanthe Great', 'xiaowangthe Great']
['lisithe Great', 'zhangsanthe Great', 'xiaowangthe Great', 'liuqianthe Great']
The magicians names is Lisithe Great.
The magicians names is Zhangsanthe Great.
The magicians names is Xiaowangthe Great.
The magicians names is Liuqianthe Great.

Python 函数返回值及传递列表的更多相关文章

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

    python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 #返回简单值 def get_formatted_name(first_name,last_name): "& ...

  2. python函数返回值

    2016-08-09  15:01:38 python函数返回值使用return语句,可以返回任意类型的数.如果return语句执行,它之后的所有语句都不再执行. def func(x,y): pri ...

  3. Python 函数返回值、作用域

    函数返回值 多条return语句: def guess(x): if x > 3: return "> 3" else: return "<= 3&qu ...

  4. Python 函数返回值

    本章详细介绍 返回值: 0x 00 返回值简介 0x 01 指定返回值与隐含返回值 0x 02 return 语句位置与多条 return 语句 0x 03 返回值类型 0x 04 函数嵌套 0x 0 ...

  5. day09 python函数 返回值 参数

    day09 python   一.函数     1.函数         函数是对功能的封装         语法:         定义函数:             def 函数名(形参):    ...

  6. python 函数返回值笔记

    今天学习python时候学习到闭包和柯里化 感觉看概念时候不好理解,自己写下大概就明白点了 柯里化如下 定义一个加法函数 def add(x, y): return x + y 这是没有柯里化之前的函 ...

  7. python 函数返回值(总结)

    关键字:return 没有返回值的叫过程 def test1(): msg="我是一个过程" print(msg) 有return的叫函数 def test02(): msg=&q ...

  8. Python 函数返回值类型

    [ i for i in dir(set) if not i.startswith('_') ]   

  9. Python学习教程(learning Python)--2.3.4Python函数返回值

    本节讨论Python函数返回值问题. Python和C语言一样,也可以在函数结束时返回一个值.但在定义自己的Python函数时,是不需要指定返回值数据类型的,这和Python不关心变量的数据类型是一致 ...

  10. Python return语句 函数返回值

    return语句是从python 函数返回一个值,在讲到定义函数的时候有讲过,每个函数都要有一个返回值.Python中的return语句有什么作用,今天就来仔细的讲解一下. python 函数返回值 ...

随机推荐

  1. java 转换指定文件夹文件编码工具

    import java.io.*; public class test { public static void main(String[] args) { printFiles(new File(& ...

  2. Android Studio Dolphin 稳定版正式发布

      作者 / Yuri Blaise, Product Manager, Android为了帮助开发者们更轻松地打造高质量应用,Android Studio 团队深入调研,为大家带来了最新稳定版 An ...

  3. Pytorch-UNet-master>utils>data_loading.py

    模块,包   在package_runoob同级目录下,用test.py调用package_runoob包中内容 参考链接: Python 模块 | 菜鸟教程 (runoob.com) Dataset ...

  4. 初探redis缓存击穿、穿透、雪崩问题

    现分析Redis缓存使用过程失效的一些问题,在有缓存的情况下,查询数据的顺序是先查询缓存,如果查询到数据则直接返回数据,如果没有查询到数据,则到数据库中查询,数据库中有数据的话,将查询出的数据写到缓存 ...

  5. Codeforces Round #857 Div.1/Div.2 CF1801/1802 2A~2F 题解

    点我看题(Div2) Div 2A. Likes 如果要赞最多,肯定是先放所有的点赞,再放所有移除的操作.如果要最少,那就先把赞分成两种:最后被移除的和没被移除的:最后先放所有被移除的,放一个移除一个 ...

  6. 一文快速回顾 Java 操作数据库的方式-JDBC

    前言 数据库的重要性不言而喻,不管是什么系统,什么应用软件,也不管它们是 Windows 上的应用程序,还是 Web 应用程序,存储(持久化)和查询(检索)数据都是核心的功能. 大家学习数据库时,比如 ...

  7. SpringBoot使用邮件发送

    使用场景: 定时任务报错 消息推送 日志报错提醒 1.导入依赖 <dependency> <groupId>org.springframework.boot</group ...

  8. Kattis mapcolouring(状压dp)

    刚知道vj上查看别人代码,看不到汉字...我理解的都注明后边了. #include <bits/stdc++.h> #define ll long long #define met(a, ...

  9. 声网 VQA:将实时互动中未知的视频画质用户主观体验变可知

    在实时互动场景中,视频画质是影响观众体验的关键指标,但如何实时评价视频的画质一直是个行业难题,需要将未知的视频画质用户主观体验变成可知. 未知的部分往往是最需要攻克的,声网也一直在持续探索符合实时互动 ...

  10. 【读书笔记】Nice Families Of GF

    目录 Nice Families Of GF rational rational algebraic D-finite总览 下定义 逻辑关系 例子 更多的例子和判别法 运算是否有性质? 运算是否有性质 ...