深入解析自定义函数:编程精髓与实用技巧,轻松掌握def函数定义
我这里三岁了,来和大家聊聊自定义函数这个神奇的东西,用白话给大家展示一下如何玩转自定义函数。

自定义函数是编程的本质!
定义
自定义函数必备函数:def
使用方法:
def 函数名(参数1、参数2、参数...):
函数体(语句块)
返回[返回值]
注意事项
函数名的命名规则:标识符的基本规则是一样的,基本都是由小写字母和数字和下划线组成
def 是关键字,不能修改(define 的缩写)
请务必在函数后面添加括号(英文)。括号内是否添加参数需要根据具体情况而定。
不要忘记括号后面的冒号
函数体必须缩进(建议4个空格)
案例研究
def hello(): #自定义 hello() 函数
打印('你好世界!')
hello() # 调用函数
你好世界! # 输出结果
输出“你好世界!”在这里定义! ' 函数,只需调用 hello() 即可调用函数体。
我们来做一个更复杂的练习,感受一下木兰刀的磨砺
def add(x, y): # 创建新的 add()
返回x+y
add(3, 7) # 调用 add()
跑步
输出无
啊累!啊累!啊累!
我到底是写了bug还是写了孤独?
哦哦哦!我建造了一座没有门的房子(泪)
没有输出怎么可能有结果呢?
打印(添加(3, 7))
打印(添加('你好','世界'))
#运行结果
10
你好世界
死亡挑战
记得每次调用函数的时候都会加上(),那么不加括号又是什么呢?
难道是传说中写的是孤独什么的?
我们一起尝试自杀吧
print(hello) # 打个招呼
print(add) # 调用add
结果:
哇!他真的可以有
经过查询,他显示的是这个函数的内存地址,而不是这个函数的结果。该函数未被调用。
温馨提示
调用函数时,请务必在函数名后添加括号。
功能参数
自定义函数的参数分为几类:
位置参数传递
关键字参数传递
所需参数
默认参数
可变参数
……
形式参数
白话时间:(表达基于个人理解,如有差异请告知)
形式参数:
它是参数名称。没有被赋值的变量名不会真正参与函数的操作,而是起到占位符的作用。
实际参数:
函数运算中使用的实际值已被赋值给相应的变量名。
ps:以上纯属个人理解,并不准确表达。这是基于个人理解的白话表达。
位置参数
位置参数根据参数的位置来表示和对应。
参数写入的位置决定其对应的值。如果这种方式有多个参数,一定要注意。如果写错了位置,整个函数可能会报错,整个程序可能会崩溃! ! !
关键字参数
关键字参数的写法虽然比较麻烦,但有效解决了多个参数因位置不正确而导致的功能错误和程序不稳定的问题。
通过定义的参数名确定对应参数的值可以有效解决问题
例:print()除了常用的输出内容外,还有end参数。
end参数默认为'\n',如果通过关键字参数重新定义,则可以更改。
对于范围(10)内的 i:
打印(一)
结果:
对于范围 (10) 内的 i:
打印(我,结束='')
结果:
0 1 2 3 4 5 6 7 8 9
默认参数
在函数涉及的过程中,很多参数不一定是每个人都会用到的。可以设置一个默认值,方便需要的人DIY,不需要的人使用默认参数。
例如 print() 中的 end 是默认参数,默认值为 '\n'
def add(x=0, y=0):
返回x+y
打印(添加())
结果:
所需参数
必需参数是必须写入的参数。这与默认参数相反。默认参数都是必需参数。如果没有导入所需的参数,就会报错,系统功能崩溃。
def add(x, y): # 创建新的 add()
返回x+y
打印(添加())
回溯(最近一次调用最后一次):
打印(添加())
类型错误:add() 缺少 2 个必需的位置参数:“x”和“y”
这是由于缺少 x 和 y 参数而导致的异常。
使用功能和定制时,请注意所需参数的设置。
可变参数
变量参数的名字很奇特,但实际上非常简单。
例如,如果我想编写一个将多个数字相加的函数该怎么办?
直接写?
def add(x, y): # 创建新的 add()
返回x+y
如果有 3 个值怎么办?
因为多了一个参数就会报错。
那改成三个参数呢?
def add(x, y, z): # 创建新的 add()
返回 x+y+z
问题来了。如果有2个值就会报错。缺少一个参数。如果有4个或更多的值,就会报错。参数太多。
啊啊啊啊啊啊啊!
这只是一些东西。难道Python的名声就毁在这儿了吗?
不不不!
神奇的事情发生了
def函数名(参数1、参数2、参数...、*可变参数):
函数体(语句块)
返回值
emmm,奇怪的知识又增长了
def 添加(x,*y):
对于 y 中的 num:
x += 数字
返回x
打印(添加(2,3,4))
结果
ps: *y 产生一个元组(tuple)
我们需要一项一项的遍历,才能得到每一项的结果。
可变关键字参数
关键字参数有多个或者不能满足使用*参数名导入字典怎么办
Python在这个世界上的声誉是不是毁了?
不不不
如果一个*不起作用,那么两个**
def personinfo(姓名、年龄、**消息):
print(f'姓名:{姓名},年龄:{年龄},{消息}')
personinfo('张三', 23, message = {'城市':'北京', '身高': 180})
结果:
姓名:张三,年龄:23,{'message': {'city': '北京', 'heigh': 180}}
里面得到的结果是一个字典。从示例中可以看到,您已经获得了马赛克词典。
参数问题解答参数书写要求:
① 先写入需要的参数
②默认参数写在所需参数后面。
③默认参数后面是关键字参数
④关键字后跟*函数名(变量参数)
⑤后面是可变关键字参数(**函数名)
ps:按照这个顺序,没有的就不用写了。
def a(x, y=0, *z, **i):
print(f'x:{x};y:{y};z:{z};i')