这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数
自定义函数,编程里面的精髓!
def
自定义函数的必要函数:def
使用方法:
def 函数名(参数1,参数2,参数…): 函数体(语句块) return [返回值]
注意事项
- 函数名的命名规则:和标识符的基本规则是一样的,基本上由小写字母和数字下划线构成
- def 是关键字,不能够修改(define的简称)
- 函数后面一定要加括号(英文状态的)括号里面是否加参数看具体情况
- 括号后面的冒号不能够忘记
- 函数体必须加上缩进(建议4个空格)
案例分析
def hello(): #自定义hello()函数 print('hello world !') hello() # 调用函数 hello world ! # 输出结果
该处是定义了一个输出‘hello world !'的函数,只要调用hello()即可实现对函数体的调用。
来个复杂点的练练手,感受一下磨刀霍霍向木兰
def add(x, y): # 新建add() return x+y add(3, 7) # 调用add() 运行ing 输出none
啊累累!啊累累!啊累累!
我写了个bug还是写了一个寂寞?
哦哦哦!我建了一个房子没有留门(泪目)
没有输出怎么能够有结果?
print(add(3, 7)) print(add('hello ', 'world')) #运行结果 10 hello world
作死挑战
记得每一次调用函数都加了 ()那么不加括号的是什么东西?
难道就是传说中的写了个寂寞还是什么东西?
让我们一起来作死看看
print(hello) # 调用hello print(add) # 调用add 结果: <function hello at 0x0000020213737048> <function add at 0x0000020213737678>
哇哦!他真的可以有
经过查询他显示的是这个函数的内存地址,而不是这个函数的结果什么的,函数并没有被调用
- 温馨提示
- 调用函数一定要在函数名后面加上括号
函数参数
自定义函数的参数,分为几大类:
- 位置传参
- 关键字传参
- 必选参数
- 默认参数
- 可变参数
- ……
形参与实参
白话时间:(个人理解基础的表达,如有不同之处请指教提出)
形参:
就是参数名称,一个没有被赋值的变量名,不会实际的参与函数的运算,而是起到一个类似占位符的作用。
实参:
实际参加函数运算的值,已经赋值给了相对应的变量名。
ps:以上基于个人理解,本非准确表达,在个人理解基础上的白话表达
位置参数
位置参数就是按照参数的位置进行表达和相对应的
参数写的位置决定了它所对应的值,这种写法如果有多个参数必须注意,写错位置整个函数有可能会报错,整个程序有可能会奔溃!!!
关键字参数
关键字参数虽然写法较为麻烦但是很好的解决了多个参数因为位置错误导致的函数报错及程序不稳定问题
通过定义的参数名称来确定对应参数的值,可以有效的解决问题
例:print() 里面除了经常用的输出内容还有end参数
end参数默认是‘\n',如果通过关键字参数进行重新定义就可以改变
for i in range(10): print(i)
结果:
0
1
2
3
4
5
6
7
8
9
for i in range(10): print(i,end= ' ')
结果:
0 1 2 3 4 5 6 7 8 9
默认参数
在函数涉及过程中很多参数不一定所有人一定用的上,可以设置一个默认值,这样子需要的人可以DIY,没有需要的就采用默认参数
比如print()中 end 就是默认参数默认值为‘\n'
def add(x=0, y=0): return x+y print(add()) 结果: 0
必选参数
必选参数就是必须要写的参数,这个与默认参数相对,不是默认参数就是必选参数,如果没有对必选参数进行导入就会引发报错,导致系统函数奔溃
def add(x, y): # 新建add() return x+y print(add()) Traceback (most recent call last): print(add()) TypeError: add() missing 2 required positional arguments: 'x' and 'y'
这个就是缺少x,y参数导致的异常。
所有在使用函数及自定义时要注意必选参数的设置
可变参数
可变参数这个名字比较高大上,但是实际上很简单
比如要写一个多个数字相加的函数怎么办呢?
直接写?
def add(x, y): # 新建add() return x+y
那如果是3个值呢?
会应为多了一个参数报错
那么就改成三个参数?
def add(x, y, z): # 新建add() return x+y+z
问题来了如果是2个值那么就会报错缺一个参数,如果是4个及以上就会报错,多了参数
啊啊啊啊啊啊啊啊啊!
只是什么东西,难度python一世英名就毁在这里了嘛?
不不不!
神奇的事情发生了
def 函数名(参数1,参数2,参数…,*可变参数): 函数体(语句块) 返回值
emmm,奇怪的知识增长了
def add(x, *y): for num in y: x += num return x print(add(2,3,4)) 结果 9
ps:*y 所产生的是一个tuple(元组)
我们需要先逐个遍历才能够拿到每一个的结果。
可变关键字参数
如果有多个关键字参数或者字典的导入使用 *参数名 无法满足怎么办
难道python一世英名就这样子栽了吗?
不不不
一个 * 不行那么就来两个 **
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:按照该顺序走,没有的可以不写
def a(x , y=0, *z, **i): print(f'x:{x};y:{y};z:{z};i')
以上就是举例子,命名方式不符合规定,不要借鉴
不安以上方式可能出现各种奇怪的情况
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 伍佰.2002-冬之火九重天演唱会特选录音专辑2CD【滚石】【WAV+CUE】
- 李宗盛1996《李宗盛的凡人歌2CD》滚石[WAV+CUE][1G]
- 刘德华 《天意》1:1直刻黑胶LPCD[WAV+CUE][1.1G]
- 刘德丽2024《赤的疑惑HQCD》头版限量编号MQA[低速原抓WAV+CUE]
- 英雄联盟万圣节有什么皮肤返场 2024万圣节皮肤返场一览
- lol万圣节赠礼活动什么时候开始 2024万圣节活动时间介绍
- 2024全球总决赛blg是全华班吗 全球总决赛blg选手所属国家介绍
- 《LOL》S14半决赛:T1战胜GEN晋级决赛!对决BLG
- 《完蛋美女前传》白白演员抱怨:都没人玩我的线
- 玩家热议OLED屏对画面提升巨大:比PS5 Pro值得买
- PatriciaPaay-TheLadyIsAChamp(ExpandedEdition)(2024)[24Bit-96kHz]FLAC
- 尚士达.2024-莫回头【智慧小狗】【DTS-WAV分轨】
- 区瑞强-黄金时代HQCDII头版限量wav
- 孙露《终于等到你》[WAV分轨][488M]
- 张信哲《歌时代》 潮水音乐 [WAV+CUE]