Python学习笔记之函数的参数和返回值的使用


Posted in Python onNovember 20, 2019

01、函数参数和返回值的作用

函数根据 有没有参数 以及 有没有返回值,可以相互结合,共有四种:

  • 无参数 无返回值
  • 无参数 有返回值
  • 有参数 无返回值
  • 有参数 有返回值

Python学习笔记之函数的参数和返回值的使用

定义函数时候,是否接收参数,或者时候返回结果,是根据实际功能需求决定的。

如果函数内部处理的数据不确定,就可以将外界的数据以参数形式传递到函数内部。

如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值。

02、函数的返回值—进阶

  • 在程序开发中,有时候,会希望一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的操作
  • 返回值是函数完成工作后,最后给调用者的一个结果
  • 在函数中使用return关键字可以返回结果
  • 调用函数的一方,可以使用变量来接收函数的返回结果

问题:一个函数执行后能否返回多个结果???

示例:温度和湿度的测量

假设开发一个函数,同时返回当前温度和湿度先

返回温度

def measure():
  temp = 39
  return temp


result = measure()
print(result)

运行结果:

Python学习笔记之函数的参数和返回值的使用

利用元组在返回温度的同时,返回湿度

改造如下:

def measure():
  temp = 39
  wetness = 50
  # 如果函数返回的类型是元组,小括号可以省略
  return temp, wetness


result = measure()
print(type(result))
print(result)
print(result[0])
print(result[1])

运行结果:

Python学习笔记之函数的参数和返回值的使用

注意:

如果函数的返回值类型是元组,可以一次使用多个变量接收元组中的元素
使用多个变量接收结果时,变量的个数应该和元组中元素的个数保持一致。

def measure():
  temp = 39
  wetness = 50
  # 如果函数返回的类型是元组,小括号可以省略
  return temp, wetness


gl_temp, gl_wetness = measure()
print(gl_temp)
print(gl_wetness)

执行结果:

Python学习笔记之函数的参数和返回值的使用

03、函数的参数—进阶

3.1 关于函数的两个问题

问题1:在函数内部,针对参数使用赋值语句,会不会影响调用函数时传递的实参变量?——————No

无论传递的参数是可变还是不可变

只要针对参数使用赋值语句,就会在函数内部修改局部变量的引用,不会影响到外部变量的引用。

def demo(num, num_list):
  print("函数内部:")
  num = 200
  num_list = [1, 2, 3]
  print(num)
  print(num_list)
  print("内部代码完成")


gl_num = 99
gl_list = [4, 5, 6]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)

运行结果:

Python学习笔记之函数的参数和返回值的使用

问题2:如果传递的参数是可变类型,在函数内部,使用方法修改了数据内容,会不会影响调用函数时传递的实参变量?——————YES

def demo(num_list):
  num_list.extend([1, 2, 3])
  print(num_list)


gl_list = [6, 7, 8]
print(gl_list)
demo(gl_list)
print(gl_list)

运行结果:

Python学习笔记之函数的参数和返回值的使用

3.2缺省参数

定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数

调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定的参数默认值

函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用

例如:对列表排序的方法

gl_num_list = [6, 3, 9]

# 默认是升序排序,因为这种需求更多
gl_num_list.sort()
print(gl_num_list)

# 只有当需要降序排序的时候,才需要传递reverse参数
gl_num_list.sort(reverse=True)
print(gl_num_list)

运行结果:

Python学习笔记之函数的参数和返回值的使用

指定函数的缺省参数值

在参数后使用赋值语句,可以指定参数的缺省值

def print_info(name, gender=True):
  gender_text = "男生"
  if not gender:
    gender_text = "女生"
  print("%s 是 %s" % (name, gender_text))


print_info("张三")
print_info("李四", False)

执行结果:

Python学习笔记之函数的参数和返回值的使用

提示:

缺省参数,需要使用最常见的值作为默认值

如果一个参数的值不能确定,则不应该设置该默认值,具体的数值在调用函数时,由外界传递!

缺省参数的注意事项:

①缺省参数的定义位置

必须保证带有默认值的缺省参数在参数列表末尾

So,以下定义是错误滴

Python学习笔记之函数的参数和返回值的使用

②调用带有多个缺省参数的函数

在调用函数的时候,如果有多个缺省参数,需要指定参数名,这样解释其才能知道对应关系。

Python学习笔记之函数的参数和返回值的使用

正确书写:

Python学习笔记之函数的参数和返回值的使用

3.3多值参数

定义支持多值参数的函数

  • 有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数
  • Python中有两种多值参数:
    • 参数名前增加一个*可以接受元组
    • 参数名前增加两个*可以接收字典
  • 一般在给多值参数命名时,习惯使用以下两个名字
    • *args — 存放 元组 参数,前面有 *
    • **kwargs — 存放 字典参数,前面有**
  • args是arguments的缩写,有变量的含义
  • kw是keyword的缩写,kwargs可以记忆键值对参数
def demo(num, *args, **kwargs):
  print(num)
  print(args)
  print(kwargs)


demo(1, 2, 3, 4, 5, name="小米", age=18, gender=True)

运行结果:

Python学习笔记之函数的参数和返回值的使用

元组和字典的拆包

在调用带有多值参数的函数时,如果希望

  • 将一个 元组变量,直接传递给args
  • 将一个 字典变量,直接传递给kwargs

就可以使用拆包,简化参数的传递,拆包的方式是:

  • 在元组变量前,加一个*
  • 在字典变量前,加两个*

在开发时,如果需要直接将一个元组或者字典变量传递给函数内部,则需要拆包。

如果我们不进行拆包操作,所传参数会进行打包传递,如下图:

Python学习笔记之函数的参数和返回值的使用

进行拆包后:

Python学习笔记之函数的参数和返回值的使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django Admin实现上传图片校验功能
Mar 06 Python
Python安装Flask环境及简单应用示例
May 03 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
django认证系统 Authentication使用详解
Jul 22 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
django实现将后台model对象转换成json对象并传递给前端jquery
Mar 16 Python
Python读取JSON数据操作实例解析
May 18 Python
django正续或者倒序查库实例
May 19 Python
浅谈Python 命令行参数argparse写入图片路径操作
Jul 12 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 Python
Python求解正态分布置信区间教程
Nov 20 #Python
Python pandas RFM模型应用实例详解
Nov 20 #Python
使用Python实现正态分布、正态分布采样
Nov 20 #Python
Python pandas自定义函数的使用方法示例
Nov 20 #Python
Python求正态分布曲线下面积实例
Nov 20 #Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 #Python
Python实现数值积分方式
Nov 20 #Python
You might like
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
如何去掉文章里的 html 语法
2006/10/09 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
js 操作select相关方法函数
2009/12/06 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python正则表达式常用函数总结
2017/06/24 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python对切片命名的实现方法
2018/10/16 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
python中doctest库实例用法
2020/12/31 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
农田水利实习自我鉴定
2013/09/19 职场文书
财务助理岗位职责
2013/11/10 职场文书
住房抵押登记委托书
2014/09/27 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
个人党性分析材料
2014/12/19 职场文书
财务部会计岗位职责
2015/02/03 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫