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

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

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

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

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

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

到此这篇关于python自定义函数def的应用详解的文章就介绍到这了,更多相关python自定义函数def内容请搜索聚米学院以前的文章或继续浏览下面的相关文章希望大家以后多多支持聚米学院!

python函数def无效_python自定义函数def的应用详解相关推荐

  1. python求平均值函数是什么_python自定义函数ma(x,y)求简单平均值输出结果到列表...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 def ma(x,y): ''' # 自定义函数"ma(x,y)"指南 函数格式:ma(x,y) 函数功能:求序列数据x的y周期的简单 ...

  2. python属性使用教程_Python对象的属性访问过程详解

    只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...

  3. python生成器yield原理_Python generator生成器和yield表达式详解

    前言 Python生成器(generator)并不是一个晦涩难懂的概念.相比于MetaClass和Closure等概念,其较为容易理解和掌握.但相对于程序结构:顺序.循环和分支而言其又不是特别的直观. ...

  4. python迭代器创建序列_Python 中迭代器与生成器实例详解

    Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的 ...

  5. python查看模块功能_Python进阶之inspect模块使用详解

    前几篇内容我们详细探讨了如何从Python中获取帮助信息: 前情回顾 1.查看模块.类提供了哪些接口: 需要帮助吗?dir函数的孪生兄弟,Python中魔法方法__dir__详解 2.查看对象内部属性 ...

  6. python find(urlopen.read())_Python小白必看之urlopen()详解

    一.  简介 urllib.request.urlopen()函数用于实现对目标url的访问. 函数原型如下:urllib.request.urlopen(url, data=None, [timeo ...

  7. python采用单例模式游戏_Python实现Singleton模式的方式详解

    前言 使用python实现设计模式中的单例模式.单例模式是一种比较常用的设计模式,其实现和使用场景判定都是相对容易的.本文将简要介绍一下python中实现单例模式的几种常见方式和原理.一方面可以加深对 ...

  8. python装饰器性能_python装饰器的特性原理详解

    这篇文章主要介绍了python装饰器的特性原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天发现了装饰器的另一种用法,下面就先上代码: d ...

  9. python迭代器与生成器_python的迭代器与生成器实例详解

    本文以实例详解了python的迭代器与生成器,具体如下所示: 1. 迭代器概述: 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后 ...

  10. [转载] python 遍历字符串 字符_python 遍历字符串(含汉字)实例详解

    参考链接: Python字符串| rfind python 遍历字符串(含汉字)实例详解 python 遍历字符串(含汉字)实例详解 s = "中国china" for j in ...

最新文章

  1. 2015年获得大数据顶尖职位必备的9项技能
  2. Python 2.7.10安装pycurl遇到的问题汇总
  3. linux服务器文件索引inodes满了
  4. 对X264/FFMPEG架构探讨---感觉不错
  5. java applet 换行_Java复习题
  6. alv界面允许数字输入负号_在Excel中输入这些字符,我被虐哭了
  7. no such file or directory什么意思_为什么这次 MySQL 崩溃恢复要这么久-爱可生
  8. 拳王虚拟项目公社:闲鱼操作卖资源如何赚钱?闲鱼怎么卖虚拟资源?卖什么资源赚钱?
  9. 软件测试基础知识(一)
  10. 计算机出现黑屏问题方法派出,电脑重装系统开机常见黑屏问题的解决方法
  11. 【绘图】matlab 绘制窗口分布
  12. MATLAB模糊控制器
  13. (result, consumed) = self._buffer_decode(data, self.errors, final)报错
  14. Android随机点名器,Excel基础知识-详解随机点名器
  15. Nginx和Zuul的区别与关联
  16. runauto 病毒
  17. Scikit-plot画图
  18. 笔记二:php去除空格
  19. 雷达导引头伺服系统的建模与仿真
  20. 自考之《管理经济学》导图总结

热门文章

  1. 查看电脑的数据库地址
  2. 自定义devexprsss分页控件
  3. zbox mysql_我服务器原来有apache和mysql,然后我把zbox的apache端口改成8000,mysql改成3307,无法打开网页...
  4. 华为手机百度云息屏后停止下载_让客厅成为娱乐中心,华为智慧屏S系列轻松就能做到...
  5. linux mint xmind运行,[deepin]安装XMind8并创建运行图标
  6. 拳皇重生服务器维护,《拳皇97 OL》3月8日更新维护公告
  7. Docker架设服务器系列
  8. 【技术博客】当蒸馏遇上GAN
  9. Java Poi 根据文字内容 插入 word 图片
  10. 成都车展:百度车联网的“阅兵”表演