作为开发,那么我们前面学的那些知识其实够了,但是不够精简,也不好维护,比如需要打印斐波那契数列:

而当我们需要再次打印斐波那契数列,又要把这段代码加上,是不是很烦,有没有方法可以解决,当然可以,那就是自定义函数,你把斐波那契数列定义为一个函数,然后需要时调用函数就行,这样一劳永逸对不对?

自定义函数

1.作用:

为了代码最大程度的重用和简化代码冗余而提供的基本程序结构,函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件,其用于将相关功能打包并参数化

2.创建函数格式:
def  yourfunctionname():

  suite

这个格式其实不陌生,前面其实稍微的提了一下,不过没有细说

例:就上面提到的斐波那契数列:

3.在python中,可以创建4种函数:

  • 全局函数:定义在模块中,导入模块后的函数
  • 局部函数:嵌套在其他函数中,自定义函数内层还可以嵌套函数,这种则为局部函数
  • lambda函数:表达式,用完则过
  • 方法(非彼方法):与特定数据类型关联的函数,并且只能与数据类型关联一起使用,比如列表的方法等

注意:自定义函数和变量原理一样,需要先创建,再调用

前面的斐波那契数列可能来得猛了点,搞懵了吧?别急,下面看看简单的

是不是很简单?如果这个你能看懂,那么恭喜你,基本懂了,再看稍微难的函数慢慢就懂了,照着这个简单的函数的模子来刻就是了。

那么当你懂简单的用法后你会想更上一层楼,这是每个人的上进心在‘作怪’,所以你在想,这个代码还是太死了,我想让它活起来,加什么进去它就返回什么,是的,括号内是可以加参数的:

也很简单对吧?

可以加多个参数吗?当然可以:

可以赋值给变量吗?你不废话吗?(/滑稽):

问题来了?为何是None?

None,表示空值,判断时始终为假,不为0,因为0是有意义的。

因为我定义的函数只是打印啊,又没有存储的,如果这样的话是可以的:

可以是可以了,这return是啥?

return,单词意思是“返回”,这个关键词简直就是函数必不可少的,而且也被很多大牛说的【如果函数没有return,那么这个函数将毫无意义】,为什么这么说,你想,函数,如果不返回值,比如向上面的print语句的话,其实是不正统的,运用自定义函数的初衷,其实就是为了得到一个想要的结果而使用的,如果没有结果,那这个函数岂不是一个残的?

注意:return即表示整个函数程序的结束,当函数程序内有return语句则返回,后面的语句则被跳过,例:

上面的例子可以看出,return之前的和return之后的代码运行的结果是不同的

好的,接着说,有人会想了,我定义好的函数,我怎么知道它可不可以被调用呢?那么这么这里就要说到一个函数—callable()

callable()

1.作用:

可调用函数,用于测试定义的函数

2.例:

这个不可调用的例子举的有点牵强哈,不好意思,一时也没想起一个好例子,反正你知道这个函数可以测试你定义的函数能不能调用就行了

对象后面加入小括号,即表示对其调用,在类那一块又会说到,加入小括号其实就是对其实例化的操作

函数的调用,即使用了函数名.__call__(两边双下横线)特殊方法:

这个__calll__()是魔法方法,后面会提到,这里暂且不说

好的,函数这一块有很多重要的知识点,我觉得还是应该分开讲解,这样更好理解和掌握,所以本篇博文就到这里

最新文章

  1. Dynamics CRM 2015-Sign Out选项
  2. web兼容学习分析笔记--块级、内联、内联块级元素
  3. ORACLE之ASM概念
  4. I’ve seen the world,lit it up as my stage now
  5. UML九种图详解-外链
  6. MUI - Dialog 提示窗
  7. less-1
  8. 三星 note3销售地查询、销售地代码
  9. java获得url里面所带参数的值
  10. Linux中判断大小端的一种方法
  11. PCRE-正则库及用法
  12. effective c++ 条款5 c++ 默默实现的函数
  13. jenkins综合cobertura,来电显示cobertura的report
  14. HashMap和HashSet的源代码分析
  15. windows安装多个python及pip版本
  16. APPLE-SA-2019-3-25-6 iCloud for Windows 7.11
  17. python---redis的python使用
  18. mysql sql_mode=only_full_group_by问题?
  19. MySQL主从报错1594
  20. JSONP使用及注意事项小结

热门文章

  1. 09-部署配置kubedns插件
  2. Oracle.ManagedDataAccess 提示ORA-01017 错误【解决方案】
  3. (转)tasklist命令参数应用详细图解
  4. Linux驱动:内核等待队列
  5. div盒子水平垂直居中方法
  6. U盘上安装Ubuntu系统 便捷式系统 - 赖大大
  7. Kafka实战-数据持久化
  8. Kafka实战-入门
  9. [Mysql]——通过例子理解事务的4种隔离级别
  10. 快速排序的Java和python实现,亲测实际可用