本节内容

1、为什么要有参数

2、返回值

3、有参数函数调用

一、为什么要有参数?

无参数实现

def CPU报警邮件()#发送邮件提醒连接邮箱服务器发送邮件关闭连接def 硬盘报警邮件()#发送邮件提醒连接邮箱服务器发送邮件关闭连接def 内存报警邮件()#发送邮件提醒连接邮箱服务器发送邮件关闭连接while True:if cpu利用率 > 90%:CPU报警邮件()if 硬盘使用空间 > 90%:硬盘报警邮件()if 内存占用 > 80%:内存报警邮件()

有参数实现

def 发送邮件(邮件内容)#发送邮件提醒连接邮箱服务器发送邮件关闭连接while True:if cpu利用率 > 90%:发送邮件("CPU报警了。")if 硬盘使用空间 > 90%:发送邮件("硬盘报警了。")if 内存占用 > 80%:发送邮件("内存报警了。")

二、返回值

之前在day3-函数介绍中提到了return关键字,但是那个只是提到,并没有详细的介绍的return关键字的用法,下面我们就来详细的阐述一下。

1、return作用

  return其实有两个作用:

需要用一个变量来接受程序结束后返回的结果
它是作为一个结束符,终止程序运行

def test():print("in the test_1")return 0print("the end") #结果中没有打印x = test()
print(x)#输出
in the test_1 #第一次打印
0 #结果返回值

注:从上面的代码可以看出,return 0后面的代码就不执行了,只执行return前面的代码;变量x接受了test()函数结束后的返回结果

2、返回多个值

  上面我们试了返回一个常量值,或者说一个对象值,下面我们来试试,不返回值,或者说返回多个值得情况
从上面的例子可以看出:

# __auther__ == luoahongdef test_1():print("in the test_1")def test_2():print("in the test_2")return 0def test_3():print("in the test_3")return 1,"hello",["xiedi","shuaigao"],{"name":"xiedi"}x = test_1()
y = test_2()
z =test_3()
print(x)
print(y)
print(z)#输出
in the test_1
in the test_2
in the test_3
None #x的值
0  #y的值
(1,"hello",["xiedi","shuaigao"],{"name":"xiedi"}) #z的值 

没有定义,返回值数=0,返回:None
只定义了1个返回值,返回值=1 ,返回:定义的那个值,或者说定义的那个object
定义了2个以上,返回值 > 1,返回:1个元组(tuple)
提问:这边我们不经意的要问,为什么要有返回值?

因为我们想要想要这个函数的执行结果,这个执行结果会在后面的程序运行过程中需要用到。

三、有参数函数调用

 在此之前,我们演示的函数都是没有带参数的,下面我们就来说说带参数的函数。在讲之前,我们先来说一下,什么是形参,什么是实参吧!

形参:指的是形式参数,是虚拟的,不占用内存空间,形参单元只有被调用的时才分配内存单元
实参:指的是实际参数,是一个变量,占用内存空间,数据传递单向,实参传给形参,形参不能传给实参
代码如下:

1、位置参数

从上面的例子可以看出,实际参数和形式参数是一一对应的,如果调换位置,x和y被调用的时,位置也会互换,代码如下:
那有些同学会说,那我多一个或者少一个参数,总归没事了吧!那我看看行不行呢?

①多一个参数

def test(x,y):print(x)print(y)
print("--------多一个参数----")
test(1,2,3)#输出
--------多一个参数----
Traceback (most recent call last):File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>test(1,2,3)
TypeError: test() takes 2 positional arguments but 3 were given  #test()函数需要传两个实参,你传了三个实参

②少一个参数

def test(x,y):print(x)print(y)
print("--------少一个参数----")
test(1)#输出
--------少一个参数----
Traceback (most recent call last):File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>test(1)
TypeError: test() missing 1 required positional argument: 'y'  #没有给y参数传实参

2、关键字参数

 到这边有些小伙伴不经意的要说,像这种位置参数,有点死,我不想这么干,万一我传错了咋办,对吧!OK,没有问题,下面我们就来讲讲关键字传参。

 关键字传参不需要一一对应,只需要你指定你的哪个形参调用哪一个实参即可,代码如下:

def test(x,y):print(x)print(y)print("--------互换前------")
test(x=1,y=2)
print("--------互换后------")
test(y=2,x=1)#输出
--------互换前------
1
2
--------互换后------
1
2

但是,这是又有小伙伴要问了,那我可不可以位置参数和关键字参数结合起来用呐?接下来,我们就来探讨一下。

①位置参数在前,关键字参数在后

def test(x,y):print(x)print(y)test(1,y=2)#输出
1
2

我擦这样是可以的,那我试试这种情况,我把后面关键字不传给y,我传给x,代码如下:

def test(x,y):print(x)print(y)test(1,x=2)#输出
Traceback (most recent call last):File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>test(1,x=2)
TypeError: test() got multiple values for argument 'x' #给x形参传的值过多

报错的意思是:给形参x传的值过多。这种报错的原因是:实参1已经传给了形参x,后面的x=2又传了一次,所以报错。

②关键字在前,位置参数在后

def test(x,y):print(x)print(y)test(y=2,1)#输出
File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8test(y=2,1)^
SyntaxError: positional argument follows keyword argument # 关键字参数在位置参数的前面

我去,看来这样不行。那我位置参数放前面,中间放关键字参数总行了吧!代码如下:

def test(x,y,z):print(x)print(y)test(1,y=2,3)#输出File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8test(1,y=2,3)^
SyntaxError: positional argument follows keyword argument

还是一样的错误,我去,那我只能把关键字参数放最后试试!

def test(x,y,z):print(x)print(y)print(z)test(1,2,z=3)#输出
1
2
3

那我最后两个用关键字参数呐?

def test(x,y,z):print(x)print(y)print(z)test(1,z=2,y=3)#输出
1
3
2

总结:

既有关键字,又有位置参数时,是按位置参数的顺序来
关键字参数是不能写在位置参数的前面的

转载于:https://www.cnblogs.com/luoahong/p/9889426.html

函数和常用模块【day04】:函数参数及调用(二)相关推荐

  1. Kotlin的高阶函数和常用高阶函数

    Kotlin的高阶函数和常用高阶函数 文章来源:企鹅号 - Android先生 高阶函数的定义 将函数当做参数或者是返回值的函数 什么是高阶函数 可以看看我们常用的 函数: 首先我们可以知道, 是 的 ...

  2. python 常用内置函数_python常用内置函数使用|python基础教程|python入门|python教程...

    基础小函数.字符串函数.序列函数 序列.元组.列表小函数 max() 求最大值(列表.元组.序列) min() 求最小值 len() 求长度 >>> a = [1,2,3,4] &g ...

  3. 常用python内置函数_python常用内置函数

    一  反射相关 1 hasattr  根据字符串的形式 , 去判断对象中是否有成员 1 hasattr(object,name)2 判断对象object是否包含名为name的特性(hasattr是通过 ...

  4. day15 匿名函数及常用内置函数

    """ 今日内容:1.生成器的send方法2.递归函数3.匿名函数4.匿名函数的应用5.常用的内置函数 """""&qu ...

  5. linux函数脚本,linux 函数_linux常用脚本和函数

    摘要 腾兴网为您分享:linux常用脚本和函数,自动刷宝,英语字典,携程,享家等软件知识,以及智慧人社app,安卓终端,vdhcoapp,matebook管家,钦州智慧党建,商户号系统,税务app,济 ...

  6. 8.Hive基础—函数—系统内置函数、常用内置函数、自定义函数、自定义UDF函数、自定义UDTF函数

    本文目录如下: 第8章 函数 8.1 系统内置函数 8.2 常用内置函数 8.2.1 空字段赋值 8.2.2 CASE WHEN THEN ELSE END 8.2.3 行转列 8.2.4 列转行 8 ...

  7. C语言第六课:函数(上)——分类、参数与调用

    目录 前言: 一.什么是函数? 二.C语言中函数的分类: 1.库函数: 为什么会出现库函数? 我们该怎么来学习函数? 库函数学习示例: 库函数学习注意: 2.自定义函数: 三.参数: 1.形式参数(形 ...

  8. Python生成器的send方法、递推函数、匿名函数及常用内置函数

    1.生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 1.1 什么是send方法? send方法相当于高级的next方 ...

  9. 什么是CRT函数以及常用的CRT函数

    什么是CRT函数 C Runtime是windows平台下的一个概念.一般来说,CRT函数就是标准的C语言函数.例如,printf.scanf.strlen.fopen等函数就属于CRT函数. 在wi ...

  10. desc excel 公式_Excel小技巧之Power Pivot Generate函数、高级DAX函数与常用筛选器函数...

    一.使用Generate函数创建信息叠加表 [目标:将姓名与月份组合,生成每个月份均有对应姓名对应的表格][基本思路:pivot中创建度量值,利用DAX函数创建链接回表后在EXCEL释放]       ...

最新文章

  1. 将模式对话框的返回值回送(PostBack)到服务端
  2. python怎么打日志_怎样调试 日志 python 代码
  3. 如何补救数据中心电缆
  4. PMP知识点(八、沟通管理)
  5. Vue项目端口号占用
  6. 获取不到时间_一月自考成绩查询时间一出,看了文章这次稳过
  7. 17 初探Context的使用场景
  8. 【存储过程】MySQL存储过程/存储过程与自定义函数的区别
  9. 为什么手机上传图片这么慢 前端_解决BootStrap Fileinput手机图片上传显示旋转问题_心病_前端开发者...
  10. java Web程序使用wro4j合并、压缩js、css等静态资源
  11. check_mk自定义监控增加性能数据图形展示
  12. Java中List的使用
  13. Hibernate 验证版本不兼容问题
  14. 深度学习领域堪称圣经的书籍(深度学习又称之为花书)-由图灵奖获得者Yoshua Bengio所著
  15. R语言—数据的调整与处理
  16. 美联储如期加息带动全球金融市场
  17. 零基础应该怎么学剪辑,大概要学多长时间?在磨金石教育学靠谱吗?
  18. android 自定义控件之AutoCompleteTextView邮箱后缀自动补全
  19. 【MES】工业4.0之MES系统方案
  20. 普陀区科技创新型小巨人企业

热门文章

  1. 使用vue来做局部刷新
  2. Git使用列表(四)
  3. .NET中的文件IO操作实例
  4. Alteral Max 10 FPGA 优点
  5. GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读
  6. LVS负载均衡群集部署之——NAT模式的介绍及搭建步骤
  7. python专业名词_python 术语
  8. 电脑销售渠道_为园区企业搭建服务麦格米特,长城电脑等企业产业链销售渠道...
  9. 封神-核心功能 | 钉钉告警+数据网关
  10. 如何量化技术团队的效能?