一、 返回值

函数作用:显示输出、处理数据并返回数据结果

函数返回值的定义:函数返回值被称为返回值

写法: 函数体内 return 返回值 (将值返回到调用函数的代码行)

返回值类型:

“”"
1、返回简单值
2、返回字典
3、列表
4、复杂数据结构
“”"

1、返回简单值

def get_formatted_name(first_name,last_name):"""返回整洁的姓名"""full_name = first_name + ' ' + last_namereturn full_name.title()musician = get_formatted_name('jimi', 'hendrix')
print(musician)

结果:

Jimi Hendrix

1.1 将实参变成可选的

可选值作用:让函数能够处理各种不同情形,确保函数调用尽可能简单

原始例子

def get_formatted_name(first_name,middle_name,last_name):"""返回整洁的姓名"""full_name = first_name + ' ' + middle_name + ' ' + last_namereturn full_name.title()musician = get_formatted_name('jojn', 'lee', 'hooker')
print(musician)

结果:

Jojn Lee Hooker

将实参变为可选案例 将可选实参变为空字符串,并在循环体中加入if_else语句

def get_formatted_name(first_name,last_name,middle_name = ''):"""返回整洁的姓名"""if middle_name:full_name = first_name + ' ' + middle_name + ' ' + last_nameelse:full_name = first_name + ' ' + last_namereturn 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

注意:使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参。

这让python依然能够正确的解读位置实参

这个例子说明,当一个实参的是可选时(即有默认值以及可选值),

这个实参必须放到最后一个实参位置

1.2、返回字典

def build_person(first_name,last_name):"""返回一个字典,其中包含有关一个人的信息"""person = {'first':first_name, 'last':last_name}return personmusician = build_person('jimi', 'hendrix')
print(musician)

结果:

{'first': 'jimi', 'last': 'hendrix'}

1.2.1扩展 增加姓名、职业

def build_person(first_name, last_name, age = '', occupation = ""):"""返回一个字典,其中包含有关一个人的信息"""person = {'first':first_name,'last':last_name,}if age:person['age']  = ageif occupation:person['occupation'] = occupationreturn person

结果:

{'first': 'jimi', 'last': 'hendrix', 'age': 36, 'occupation': 'teacher'

1.2.3 结合使用函数和while循环

def get_formatted_name(first_name,last_name):"""返回整洁姓名"""full_name = first_name + ' ' + last_namereturn full_name.title()# 这是一个无限循环
while True:print("\nPlease tell me your name: ")f_name = input("First name: ")l_name = input("Last name:  ")formatted_name = get_formatted_name(f_name, l_name)print("\nHello," + formatted_name.title() + "!")

结果

Please tell me your name: First name: zhangLast name:  Hello,Zhang !Please tell me your name: First name: guanLast name:  yuHello,Guan Yu!Please tell me your name:
注意:由于是无限循环,所以按快捷键ctrl + c 结束循环

1.2.4修改设置退出条件

while True:print("\nPlease tell me your name: ")print("(Enter 'q' at any time to quit)")# 设置退出条件f_name = input("First name: ")if f_name == 'q':breakl_name = input("Last name:  ")if l_name == 'q':breakformatted_name = get_formatted_name(f_name, l_name)print("\nHello," + formatted_name.title() + "!")

结果:

Please tell me your name:
(Enter 'q' at any time to quit)First name: zhangLast name:  feiHello,Zhang Fei!Please tell me your name:
(Enter 'q' at any time to quit)First name: guanLast name:  yuHello,Guan Yu!Please tell me your name:
(Enter 'q' at any time to quit)First name: q

1.4 传递列表

def greet_users(names):"""向列表中的每一位用户都发出邀请的问候"""for name in names:msg = "Hello, " + name.title() + "!"print(msg)usernames  = ['hannah','ty','margot']
greet_users(usernames)

结果:

Hello, Hannah!
Hello, Ty!
Hello, Margot!

1.4.1 在函数中修改列表(修改列表是永久性的)

创建一个列表,其中包含一些要打印的设计

unprinted_designs = ['iphone case','robot pendant','dodecahedron']
completed_models = []

模拟打印每个设计,直到没有未打印的设计为止

打印每个设计后,都将其移到表completed_models中

while unprinted_designs:current_design = unprinted_designs.pop()# 模拟根据设计制造3A打印模型的过程print("Print model: " + current_design)completed_models.append(current_design)# 显示打印好的所有模型
print("\nThe following models have been printed: ")
for completed_model in completed_models:print(completed_model)print(unprinted_designs) # 结果为空,说明列表被永久性修改了# 显示打印好的所有模型
print("\nThe following models have been printed: ")
for completed_model in completed_models:print(completed_model)print(unprinted_designs) # 结果为空,说明列表被永久性修改了

结果:

Print model: dodecahedron
Print model: robot pendant
Print model: iphone caseThe following models have been printed:
dodecahedron
robot pendant
iphone case
[]

封装成两个函数

1、打印模型函数

def print_models(unprinted_designs,completed_models):"""模拟打印每个设计,直到没有未打印的设计为止打印每个设计后,都将其移到表completed_models中"""while unprinted_designs:current_design = unprinted_designs.pop()# 模拟根据设计制造3A打印模型的过程print("Print model: " + current_design)completed_models.append(current_design)

2、显示函数

def show_completed_models(completed_models):"""显示打印好的所有模型"""print("\nThe following models have been printed: ")for completed_model in completed_models:print(completed_model)

3、主函数

unprinted_designs = ['iphone case','robot pendant','dodecahedron']
completed_models = []print("\nunprinted_designs未处理前结果",":",unprinted_designs)
print_models(unprinted_designs, completed_models)print("unprinted_designs处理后结果",":",unprinted_designs)
show_completed_models(completed_models)

结果:

unprinted_designs未处理前结果 : ['iphone case', 'robot pendant', 'dodecahedron']
Print model: dodecahedron
Print model: robot pendant
Print model: iphone case
unprinted_designs处理后结果 : []The following models have been printed:
dodecahedron
robot pendant
iphone case

上面两个函数给我们的启发:每个函数都应只负责一项具体的工作,

这样能便于项目的维护和扩展

总结:

1、返回值类型:返回简单值、返回字典、返回列表、返回复杂数据结构
2、实参变为可选注意事项:可变实参必须位于没有默认值的实参的后面,然后在函数体中使用if-else语句来对可变实参进行分情况写执行条件即可
3、函数块优点:其一使主程序变得可维护和可扩展;其二,使复制的事情简单化(即将复杂的事情拆分为许多小步骤来实现)

Python基础学习_函数数def_返回值及返回值类型_函数块相关推荐

  1. python基础学习_转行零基础该如何学习python?很庆幸,三年前的我选对了

    这似乎是一个如荼如火的行业,对于一直在思考着转行的我,提供了一个不错的方向. 这个行业当然就是python程序员,真正开始决定转行是在24岁的时候,到现在已经有三年多了,我从零开始,每天用业余两个小时 ...

  2. python | 基础学习(一)了解Bug、pycharm、变量、程序的三大流程(顺序、if、while)、运算符、快捷键

    文章目录 一.引言 1.python的起源 2.解释器 3.python的设计目标 4.python的特点 二.python 1.了解BUG 2.python的三种运行方式 ①解释器python/py ...

  3. 8.Python基础学习笔记day8-正则表达式、网络编程、进程与线程

    8.Python基础学习笔记day8-正则表达式.网络编程.进程与线程 一.正则表达式 ''' 1. [1,2,3,4]中任意取3个元素排列: A43 = 4x3x2 = 24itertools.pe ...

  4. Python基础学习之 os 模块详解

    Python基础学习之 os 模块详解 文章目录 Python基础学习之 os 模块详解 1. 路径操作 1.1 os.chdir(),切换当前工作目录: 1.2 os.getcwd(),返回工作目录 ...

  5. Python 基础学习笔记 03

    Python基础系列 Python 基础学习笔记 01 Python 基础学习笔记 02 Python 基础学习笔记 03 Python 基础学习笔记 04 Python 基础学习笔记 05 文章目录 ...

  6. Python基础学习-方法

    Python基础学习-方法 方法的重载 方法的动态性 私有属性和私有方法(实现封装) 私有方法 @property装饰器 面向对象的三大特征介绍 继承 语法格式 类成员的继承和重写 查看类的继承层次结 ...

  7. python心得体会-终于懂得python基础学习心得

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

  8. python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识

    1.1Python的对象 python的内置对象类型有很多,包括数字,字符串,列表,集合,元组,字典等等,在Python中,一切皆对象 pickle腌制--在Python中,如果有一些对象需要持久性存 ...

  9. Python基础学习笔记之(二)

    Python基础学习笔记之(二) zouxy09@qq.com http://blog.csdn.net/zouxy09 六.包与模块 1.模块module Python中每一个.py脚本定义一个模块 ...

  10. Python基础学习笔记之(一)

    Python基础学习笔记之(一) zouxy09@qq.com http://blog.csdn.net/zouxy09 前段时间参加微软的windows Azure云计算的一个小培训,其中Pytho ...

最新文章

  1. 云效(原RDC)如何构建一个基于Maven的Java项目
  2. XamarinEssentials教程首选项Preferences判断项目是否存在
  3. 初识Kubernetes
  4. 台湾大学林轩田机器学习基石课程学习笔记7 -- The VC Dimension
  5. 凡人和神学习和使用软件的七个层次
  6. 如何使用 vSphere Certificate Manager 替换 SSL 证书 (2097936)
  7. Spring-BeanDefinitionRegistryPostProcessor接口
  8. Android编程之指定ListView的item位置
  9. wcf 接收post数据_简单聊下HTTP中POST和GET请求本质区别
  10. jaxws-ri下载链接
  11. python tqdm模块的简单使用
  12. 《RunningMan》评论及弹幕情感分析
  13. WEB打印插件Lodop
  14. 图像处理之超像素分割(SLIC)
  15. nRF24L01无线模块笔记
  16. SkeyeARS 超高清8K视频录像检索、 回放、控制解决方案
  17. python3.7怎么设置字体大小,python字体大小如何设置
  18. python列表反向查询_Python反向索引查询
  19. 简单的图标移入效果(css缩放)
  20. MATLAB小技巧(9) 图片合成视频与视频分帧

热门文章

  1. Geography V.S. Geometry
  2. vue发送请求时遇到index.vue6ced90 Uncaught (in promise) TypeError Cannot read properties of undefined
  3. c++中this指针的理解(转载:苦涩的茶 ——产品开发 C++类中this指针的理解)
  4. matlab让一个点变为指定颜色,MATLAB中的颜色控制
  5. ESP8266-Arduino编程实例-BMP280气压传感器驱动
  6. itutorgroup:在线教育与传统线下教育的七大区别你知多少?
  7. 路由器装linux系统,linux路由器Quagga的配置(一):安装
  8. hive插入多条数据sql_30分钟入门 Hive SQL(HQL 入门篇)
  9. php 股票数据 sina,腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据...
  10. telegram协议电报群组采集,群用户提取,私发消息,群拉人,关键词监控回复等引流自动化