函数和常用模块【day04】:函数参数及调用(二)
本节内容
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】:函数参数及调用(二)相关推荐
- Kotlin的高阶函数和常用高阶函数
Kotlin的高阶函数和常用高阶函数 文章来源:企鹅号 - Android先生 高阶函数的定义 将函数当做参数或者是返回值的函数 什么是高阶函数 可以看看我们常用的 函数: 首先我们可以知道, 是 的 ...
- python 常用内置函数_python常用内置函数使用|python基础教程|python入门|python教程...
基础小函数.字符串函数.序列函数 序列.元组.列表小函数 max() 求最大值(列表.元组.序列) min() 求最小值 len() 求长度 >>> a = [1,2,3,4] &g ...
- 常用python内置函数_python常用内置函数
一 反射相关 1 hasattr 根据字符串的形式 , 去判断对象中是否有成员 1 hasattr(object,name)2 判断对象object是否包含名为name的特性(hasattr是通过 ...
- day15 匿名函数及常用内置函数
""" 今日内容:1.生成器的send方法2.递归函数3.匿名函数4.匿名函数的应用5.常用的内置函数 """""&qu ...
- linux函数脚本,linux 函数_linux常用脚本和函数
摘要 腾兴网为您分享:linux常用脚本和函数,自动刷宝,英语字典,携程,享家等软件知识,以及智慧人社app,安卓终端,vdhcoapp,matebook管家,钦州智慧党建,商户号系统,税务app,济 ...
- 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 ...
- C语言第六课:函数(上)——分类、参数与调用
目录 前言: 一.什么是函数? 二.C语言中函数的分类: 1.库函数: 为什么会出现库函数? 我们该怎么来学习函数? 库函数学习示例: 库函数学习注意: 2.自定义函数: 三.参数: 1.形式参数(形 ...
- Python生成器的send方法、递推函数、匿名函数及常用内置函数
1.生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 1.1 什么是send方法? send方法相当于高级的next方 ...
- 什么是CRT函数以及常用的CRT函数
什么是CRT函数 C Runtime是windows平台下的一个概念.一般来说,CRT函数就是标准的C语言函数.例如,printf.scanf.strlen.fopen等函数就属于CRT函数. 在wi ...
- desc excel 公式_Excel小技巧之Power Pivot Generate函数、高级DAX函数与常用筛选器函数...
一.使用Generate函数创建信息叠加表 [目标:将姓名与月份组合,生成每个月份均有对应姓名对应的表格][基本思路:pivot中创建度量值,利用DAX函数创建链接回表后在EXCEL释放] ...
最新文章
- 将模式对话框的返回值回送(PostBack)到服务端
- python怎么打日志_怎样调试 日志 python 代码
- 如何补救数据中心电缆
- PMP知识点(八、沟通管理)
- Vue项目端口号占用
- 获取不到时间_一月自考成绩查询时间一出,看了文章这次稳过
- 17 初探Context的使用场景
- 【存储过程】MySQL存储过程/存储过程与自定义函数的区别
- 为什么手机上传图片这么慢 前端_解决BootStrap Fileinput手机图片上传显示旋转问题_心病_前端开发者...
- java Web程序使用wro4j合并、压缩js、css等静态资源
- check_mk自定义监控增加性能数据图形展示
- Java中List的使用
- Hibernate 验证版本不兼容问题
- 深度学习领域堪称圣经的书籍(深度学习又称之为花书)-由图灵奖获得者Yoshua Bengio所著
- R语言—数据的调整与处理
- 美联储如期加息带动全球金融市场
- 零基础应该怎么学剪辑,大概要学多长时间?在磨金石教育学靠谱吗?
- android 自定义控件之AutoCompleteTextView邮箱后缀自动补全
- 【MES】工业4.0之MES系统方案
- 普陀区科技创新型小巨人企业