这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数

自定义函数,编程里面的精髓!

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

结果:

哇哦!他真的可以有

经过查询他显示的是这个函数的内存地址,而不是这个函数的结果什么的,函数并没有被调用温馨提示

调用函数一定要在函数名后面加上括号

函数参数

自定义函数的参数,分为几大类:位置传参

关键字传参

必选参数

默认参数

可变参数

……

形参与实参

白话时间:(个人理解基础的表达,如有不同之处请指教提出)

形参:

就是参数名称,一个没有被赋值的变量名,不会实际的参与函数的运算,而是起到一个类似占位符的作用。

实参:

实际参加函数运算的值,已经赋值给了相对应的变量名。

ps:以上基于个人理解,本非准确表达,在个人理解基础上的白话表达

位置参数

位置参数就是按照参数的位置进行表达和相对应的

参数写的位置决定了它所对应的值,这种写法如果有多个参数必须注意,写错位置整个函数有可能会报错,整个程序有可能会奔溃!!!

关键字参数

关键字参数虽然写法较为麻烦但是很好的解决了多个参数因为位置错误导致的函数报错及程序不稳定问题

通过定义的参数名称来确定对应参数的值,可以有效的解决问题

例:print() 里面除了经常用的输出内容还有end参数

end参数默认是‘\n’,如果通过关键字参数进行重新定义就可以改变for i in range(10):

print(i)结果:

0

1

2

3

4

5

6

7

8

9for 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')

以上就是举例子,命名方式不符合规定,不要借鉴

不安以上方式可能出现各种奇怪的情况

到此这篇关于python自定义函数def的应用详解的文章就介绍到这了,更多相关python自定义函数def内容请搜索ZaLou.Cn

在python中使用关键字define定义函数_python自定义函数def的应用详解相关推荐

  1. python中必须使用import引入模块_Python之import方法引入模块详解

    在python用import或者from-import或者from-import-as-来导入相应的模块,作用和使用方法与C语言的include头文件类似.其实就是引入某些成熟的函数库和成熟的方法,避 ...

  2. python中for in range的用法_Python for i in range ()用法详解

    for i in range ()作用: range()是一个函数, for i in range () 就是给i赋值: 比如 for i in range (1,3): 就是把1,2依次赋值给i r ...

  3. python中 for i in range(10)_Python for i in range ()用法详解

    for i in range ()作用: range()是一个函数, for i in range () 就是给i赋值: 比如 for i in range (1,3): 就是把1,2依次赋值给i r ...

  4. 在python中使用关键字define定义函数_python等价于'define func()'或如何在python中注释掉函数调用...

    尽管我认为这个问题是非常清楚和有效的(尽管有很多其他的回答),但简短的回答是"Python不支持这个". 除了preprocessor suggestion之外,唯一可能的解决方案 ...

  5. python中代理模式分为几种_Python设计模式之代理模式实例详解

    本文实例讲述了Python设计模式之代理模式.分享给大家供大家参考,具体如下: 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 #!/usr/bin/env py ...

  6. python中形参可以使用中文定义嘛_python中函数的参数分类

    详解python函数的参数 一.参数的定义 1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: ...

  7. 在python中查看关键字、需要执行_python关键字以及含义,用法

    Python常用的关键字 1.and , or and , or 为逻辑关系用语,Python具有短路逻辑,False and 返回 False 不执行后面的语句, True or 直接返回True, ...

  8. python中linspace函数_python的range和linspace使用详解

    在python中要产生一个数字序列,最快的方法就是使用range和linspace函数,但是这两者不太一样,但总的来说实现的效果是一致的,都能获取一个数字序列. range range一看其名就知道是 ...

  9. python中map()和dict()怎么用?你知道吗?-用法详解

    map()用法 map()是python的内置函数,会根据提供的函数对指定序列做映射. 语法: map(func, iter, ...) 其中func为一个功能函数,iter表示可迭代参数序列.map ...

最新文章

  1. 清华大学人工智能研究院成立听觉智能研究中心,将专注基础研究和成果产业化
  2. pytorch adagrad_【学习笔记】Pytorch深度学习—优化器(二)
  3. TypeScript 联合类型(union type)
  4. oracle数据库归档闪回,[Oracle]Oracle的闪回归档
  5. 用计算机和手算标准差不一致,计量师基础知识教案二第三章.ppt
  6. 物联网工程专业考研方向
  7. c语言return后面有没有分号,为什么末尾加return 0;}反而不能通过?(符号英文半角,分号没漏)...
  8. python中shape错误_python中shape错误
  9. soc 设计soc设计 uml实务手册_芯片设计进阶之路——SOC电源管理系统
  10. 软件测试面试之逻辑篇(一)
  11. 什么是sp,怎么运作,他们是怎么发财的
  12. 不敢相信,技术栈,居然被P站秒了
  13. k8s - service
  14. php作业批改系统源码,在线|WEB作业批改系统
  15. 智能车浅谈——硬件篇
  16. 【机器视觉】Halcon 19安装教程详解
  17. Windows脚本:打开浏览器访问任意网址
  18. 说说Oracle分区
  19. 小数点用计算机怎么用,用Windows计算器进行小数数制转换的方法
  20. 吉大计算机副教授,吉林大学计算机科学与技术学院徐昊副教授

热门文章

  1. LTE-怎么获取上行资源
  2. Cmake 实例学习 一
  3. 根据CPU核数合理设置线程池大小
  4. 服务器 主动 推送 客户端浏览器 消息***
  5. 重定向后,如何通过浏览器返回定向之前的页面?
  6. Mac OS X 下查看和设置JAVA_HOME
  7. [转]单点登录原理与简单实现
  8. 7个华丽的基于Canvas的HTML5动画
  9. 图片的另一种展现—将后台图片编码直接展现为图片
  10. 国外优秀开源PHP建站程序一览