python def函数报错详解_python自定义函数def的应用详解
这篇文章主要介绍了python自定义函数def的应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数
自定义函数,编程里面的精髓!
def
自定义函数的必要函数:def
使用方法:
1
2
3
def 函数名(参数1,参数2,参数…):
函数体(语句块)
return [返回值]
注意事项
函数名的命名规则:和标识符的基本规则是一样的,基本上由小写字母和数字下划线构成
def 是关键字,不能够修改(define的简称)
函数后面一定要加括号(英文状态的)括号里面是否加参数看具体情况
括号后面的冒号不能够忘记
函数体必须加上缩进(建议4个空格)
案例分析
1
2
3
4
5
6
def hello():#自定义hello()函数
print('hello world !')
hello()# 调用函数
hello world !# 输出结果
该处是定义了一个输出‘hello world !'的函数,只要调用hello()即可实现对函数体的调用。
来个复杂点的练练手,感受一下磨刀霍霍向木兰
1
2
3
4
5
6
7
def add(x, y):# 新建add()
return x+y
add(3,7)# 调用add()
运行ing
输出none
啊累累!啊累累!啊累累!
我写了个bug还是写了一个寂寞?
哦哦哦!我建了一个房子没有留门(泪目)
没有输出怎么能够有结果?
1
2
3
4
5
6
print(add(3,7))
print(add('hello ','world'))
#运行结果
10
hello world
作死挑战
记得每一次调用函数都加了 ()那么不加括号的是什么东西?
难道就是传说中的写了个寂寞还是什么东西?
让我们一起来作死看看
1
2
3
4
5
6
print(hello)# 调用hello
print(add)# 调用add
结果:
哇哦!他真的可以有
经过查询他显示的是这个函数的内存地址,而不是这个函数的结果什么的,函数并没有被调用
温馨提示
调用函数一定要在函数名后面加上括号
函数参数
自定义函数的参数,分为几大类:
位置传参
关键字传参
必选参数
默认参数
可变参数
……
形参与实参
白话时间:(个人理解基础的表达,如有不同之处请指教提出)
形参:
就是参数名称,一个没有被赋值的变量名,不会实际的参与函数的运算,而是起到一个类似占位符的作用。
实参:
实际参加函数运算的值,已经赋值给了相对应的变量名。
ps:以上基于个人理解,本非准确表达,在个人理解基础上的白话表达
位置参数
位置参数就是按照参数的位置进行表达和相对应的
参数写的位置决定了它所对应的值,这种写法如果有多个参数必须注意,写错位置整个函数有可能会报错,整个程序有可能会奔溃!!!
关键字参数
关键字参数虽然写法较为麻烦但是很好的解决了多个参数因为位置错误导致的函数报错及程序不稳定问题
通过定义的参数名称来确定对应参数的值,可以有效的解决问题
例:print() 里面除了经常用的输出内容还有end参数
end参数默认是‘\n',如果通过关键字参数进行重新定义就可以改变
1
2
for iin range(10):
print(i)
结果:
0
1
2
3
4
5
6
7
8
9
1
2
for iin range(10):
print(i,end= ' ')
结果:
0 1 2 3 4 5 6 7 8 9
默认参数
在函数涉及过程中很多参数不一定所有人一定用的上,可以设置一个默认值,这样子需要的人可以DIY,没有需要的就采用默认参数
比如print()中 end 就是默认参数默认值为‘\n'
1
2
3
4
5
6
7
def add(x=0, y=0):
return x+y
print(add())
结果:
0
必选参数
必选参数就是必须要写的参数,这个与默认参数相对,不是默认参数就是必选参数,如果没有对必选参数进行导入就会引发报错,导致系统函数奔溃
1
2
3
4
5
6
7
8
def add(x, y):# 新建add()
return x+y
print(add())
Traceback (most recent call last):
print(add())
TypeError: add() missing2 required positional arguments:'x' and 'y'
这个就是缺少x,y参数导致的异常。
所有在使用函数及自定义时要注意必选参数的设置
可变参数
可变参数这个名字比较高大上,但是实际上很简单
比如要写一个多个数字相加的函数怎么办呢?
直接写?
1
2
def add(x, y):# 新建add()
return x+y
那如果是3个值呢?
会应为多了一个参数报错
那么就改成三个参数?
1
2
def add(x, y, z):# 新建add()
return x+y+z
问题来了如果是2个值那么就会报错缺一个参数,如果是4个及以上就会报错,多了参数
啊啊啊啊啊啊啊啊啊!
只是什么东西,难度python一世英名就毁在这里了嘛?
不不不!
神奇的事情发生了
1
2
3
def 函数名(参数1,参数2,参数…,*可变参数):
函数体(语句块)
返回值
emmm,奇怪的知识增长了
1
2
3
4
5
6
7
8
9
def add(x,*y):
for numin y:
x+= num
return x
print(add(2,3,4))
结果
9
ps:*y 所产生的是一个tuple(元组)
我们需要先逐个遍历才能够拿到每一个的结果。
可变关键字参数
如果有多个关键字参数或者字典的导入使用 *参数名 无法满足怎么办
难道python一世英名就这样子栽了吗?
不不不
一个 * 不行那么就来两个 **
1
2
3
4
5
6
7
def personinfo(name, age,**message):
print(f'name:{name},age:{age},{message}')
personinfo('张三',23, message= {'city':'北京','heigh':180})
结果:
name:张三,age:23,{'message': {'city':'北京','heigh':180}}
在里面得到的结果是一个字典,看例子可以知道得到了一个镶嵌的字典
参数问题解答参数的书写要求:
① 必选参数写在最前面
②默认参数写在必选参数后面
③默认参数后面是关键字参数
④关键字后面是*函数名(可变参数)
⑤后面跟着可变关键字参数(**函数名)
ps:按照该顺序走,没有的可以不写
1
2
def a(x , y=0,*z,**i):
print(f'x:{x};y:{y};z:{z};i')
以上就是举例子,命名方式不符合规定,不要借鉴
不安以上方式可能出现各种奇怪的情况
到此这篇关于python自定义函数def的应用详解的文章就介绍到这了
python def函数报错详解_python自定义函数def的应用详解相关推荐
- python自定义函数详解_Python自定义函数
自定义函数 使用def定义函数,例如: def my_abs(x) : if x >= 0 : return x else : return -x 函数可以返回多个值,但是这是假象,实际上函数返 ...
- python打包exe报错编码问题_python打包成exe,但执行exe报错,求解。
1.pycharm pycharm-professional-2018.1.4.exe 已安装 64位的. 2.python python-3.7.0.exe 已安装32 ...
- python算闰年和平年的天数_Python自定义函数计算给定日期是该年第几天的方法示例...
本文实例讲述了Python自定义函数计算给定日期是该年第几天的方法.分享给大家供大家参考,具体如下: 写一个函数,计算给定日期是该年的第几天. 满足闰年的条件: 闰年是公历中的名词,能被4整除但不能被 ...
- python函数求n年后本息_Python自定义函数计算给定日期是该年第几天的方法示例...
本文实例讲述了Python自定义函数计算给定日期是该年第几天的方法.分享给大家供大家参考,具体如下: 写一个函数,计算给定日期是该年的第几天. 满足闰年的条件: 闰年是公历中的名词,能被4整除但不能被 ...
- 一.关于itoa,atoi添加头文件后仍报错,编写相应自定义函数解决方案。
1.首先itoa.atoi的头文件 在stdlib.h下. 有时即使添加了stdlib.h依旧无法使用这两个函数. 比如stm32下编程时. 2.自定义函数如下: /* 将整数转化为字符串: num, ...
- python写函数求两个数最小公倍数_Python自定义函数实现求两个数最大公约数、最小公倍数示例...
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- mysql cast报错_在mysql中使用cast函数报错
今天遇到在使用mysql的cast函数报错的问题,这个函数的意思是把当前的字段转成某种类型的字段,我使用cast(xxxx as int) 这种方式,但是发现报错了,查阅资料发现 参考这个百度,总结来 ...
- 在python中使用关键字define定义函数_python自定义函数def的应用详解
这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...
- 关于vs2010调用python中Py_Initialize函数报错的原因
程序刚开始运行到Py_Initialize()函数,报错:ImportError: No module named site 如遇到这个函数报错那么基本上就是你没有将相关路径添加到环境变量中. 两个方 ...
最新文章
- html如何超链接到servlet
- Visual Studio项目引用出现感叹号怎么办?
- rest api 可选参数_可选类型API
- MySQL_存储过程
- 华为笔试题-磁盘容量排序
- perl将字符串时间转换成 epoch time
- 基于已有集群动态发现方式部署 Etcd 集群
- retrofit2 上传图片
- 老板子华硕A7N8X-X
- 计算机网络的abc类地址,abc类私有ip地址范围
- csv 计算机系统化验证,计算机化系统CSV验证问答.doc
- 基于ATmega16单片机 程控滤波器程序源代码
- vue使用coreUI的CDataTable踩坑记录
- mac 不显示 外接屏幕_macbook pro 外接显示器显示不完全
- 个人信息安全规范----6、个人信息的委托处理、共享、转让、公开披露
- 字节跳动财务报表_【实锤】这一波疫情过后,字节跳动要上市了
- Mapper的xml文件基础语法笔记,增删改查,遍历
- 【Linux】CentOS7设置笔记本合盖不休眠
- PTA基础编程题目集6-5
- Aspose.Words 22.11.0 Crack | Aspose.Words
热门文章
- 年底,喜庆红色中国风C4D电商促销背景,美工收好!
- Linux 如何隔离CPU核心 isolcpus=0-2
- srsLTE源码学习:生成多播信道表gen_mch_tables
- Matlab二进制文件的读写
- java 水表识别_水表识别 --数字的分割
- latex中怎么设置每一行文字都对齐_排版系列教程 | LaTeX,为学术论文排版而生【浮动体篇】...
- springsecurity oauth2_跟OAuth2杠上了,老师,我要学全套的!
- 工程经济作业1答案_2015年一级建造师铁路工程真题及答案1
- 怎么看曲线有没有斜渐近线_?成考结束后,怎么看你有没有被录取?
- 滚动插件jQuery Marquee