1.函数基础

函数是程序中不可或缺的一部分,之前也已经学了很多python的内置函数。

def my_func(message):print('Got a message: {}'.format(message))# 调用函数 my_func()
my_func('Hello World')
# 输出
Got a message: Hello World

其中:

  • def是函数的声明
  • my_func 是函数的名称
  • 括号里的message则是函数的参数
  • 而print那行则是函数的主体部分,可以执行相应的语句
  • 在函数最后,你可以返回调用结果(return或yield),也可以不返回

如果在函数内部调用其他函数,函数间哪个声明在前、哪个在后就无所谓了,因为def是可以执行语句,函数在调用之前都不存在,只需保证调用时,所需的函数都已声明定义,而且函数的参数可以设定默认值。

python是dynamically typed的,可以接受任何数据类型(整型、浮点型、字符串等)对函数参数来讲,这一点同样适用。如果两个参数的数据类型不同,两者是无法相加的,那么会报错。

python不用考虑输入的数据类型,让代码去判断执行,同样一个函数,可以同时应用在整型、列表、字符串等操作中,这叫做多态,必要时可以在开关加上数据的类型检查。

python函数的另一个特性,是python支持函数的嵌套,所谓的函数嵌套,就是指函数里面又有函数。

def f1():print('hello')def f2():print('world')f2()
f1()# 输出
hello
world

而函数的嵌套主要有两个作用,一是函数能够保证内部函数的隐私,内部函数只能被外部函数所调用和访问, 不会暴露在全局作用域。因此,如果你的函数内部有一些隐私,不想暴露在外,那就可以使用函数的嵌套,将其封装在内部函数中,只通过外部函数来访问;第二,合理的使用函数嵌套,能够提高程序的运行效率。

2.函数变量作用域

如果变量在函数内部定义的,就称为局部变量,只在函数内部有效,一旦函数执行完毕,局部变量就会被回收,无法访问。可以在文件内的任何地方访问,,当然在函数内部也是可以的,不过,我们不能在函数内部随便改变全局变量的值。

对于嵌套函数来讲,内部函数可以访问外部函数定义的变量,但是无法修改,若要修改,必须加上nonlocal这个关键字。如果不加,而内部函数的变量又和外部函数变量同名,内部函数变量会覆盖外部函数的变量。

3.闭包

闭包其实和刚刚讲的嵌套函数类似,不同的是,这里外部函数返回的是一个函数,而不是一个具体的值。返回的函数通常赋于一个变量,这个变量可以在后面被继续执行调用。

使用闭包的一个原因,可以让程序更简洁易读。

而且闭包常常和装饰器一起使用。

4.总结

  • python中函数的参数可以接受任意的数据类型,使用起来需要注意,必要时请在函数开头加入数据类型的检查
  • 和其他语言不同,python中函数的参数可以设定默认值
  • 嵌套函数的使用,能保证数据的隐私性,提高程序运行效率
  • 合理地使用闭包,则可以简化程序的复杂度,提高可读性

09 | 不可或缺的自定义函数相关推荐

  1. 【Python核心】不可或缺的自定义函数

    一个规范的值得借鉴的Python程序,除非代码量很少(比如 10 行.20 行以下),基本都应该由多个函数组成,这样的代码才更加模块化.规范化 函数是Python程序中不可或缺的一部分 事实上,在前面 ...

  2. MySQL自定义函数(CREATE FUNCTION)

    在使用 MySQL 的过程中,MySQL 自带的函数可能完成不了我们的业务需求,这时候就需要自定义函数. 自定义函数是一种与存储过程十分相似的过程式数据库对象.它与存储过程一样,都是由 SQL 语句和 ...

  3. MS SQL自定义函数IsPositiveInteger MS SQL自定义函数IsNumeric 水晶报表使用IEnumerableT数据源...

    MS SQL自定义函数IsPositiveInteger 判断字符串是否为正整数,0开始的的数字不算. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ...

  4. Microsoft SQL Server 自定义函数整理大全--转【叶子】的文章

    SQL SERVER中是允许有自定义函数,Microsoft SQL Server并不将用户限制在定义为 Transact-SQL语言一部分的内置函数上,而是允许用户创建自己的用户定义函数. 函数是由 ...

  5. [转]Microsoft SQL Server 自定义函数整理大全

    SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数. 函数 ...

  6. (4.32)自定义函数整理大全

    转自:https://blog.csdn.net/maco_wang/article/details/6261639 SQL SERVER中是允许有自定义函数,Microsoft SQL Server ...

  7. SQL存储过程与自定义函数实例

    存储过程 1.create PROCEDURE Sp_Conn_Sort ( @tblName   varchar(255),       -- 表名 @strGetFields varchar(10 ...

  8. matlab中设置拟合初值,如何确定自定义函数拟合时的参数初值?

    本帖最后由 bearbb 于 2013-5-10 15:09 编辑 在做多元非线性模拟时出现了问题 a=[ 537.15        2.846653612        39.44841337  ...

  9. vba里使用python自定义函数(xlwings)

    http://club.excelhome.net/thread-1452827-1-1.html 今天讲一下怎么在vba里面使用python的自定义函数.在vba板块提下python主要是pytho ...

最新文章

  1. IBM技术专家:Hyperleger Fabric 架构与部署实例解析
  2. Linux查看进程和进程管理
  3. 工作中系统报错:数据库连接失败怎么办?
  4. 英语笔记-20151209
  5. Web socket广播
  6. @程序员,掌握这四点,想不优秀都难!
  7. MFC工作笔记0011---atoi的用法
  8. 天天早上慢跑一小时对身体好吗?
  9. java ide排名_Java程序员的困惑,Java IDE到底怎么选
  10. Directx11教程(47) alpha blend(4)-雾的实现
  11. 图像语义分割(20) 通过图像合成方法检测训练中未出现的类别未知的物体
  12. python学习之路四(类和对象1)
  13. Java 反射常用方法
  14. sql分页查询与offset的使用
  15. 易语言静态连接器提取_vc98linker修复静态编译
  16. 十一、 人工变量之 “大M” 法
  17. 计算机的标点符号有哪些,电脑标点符号怎么打出来,四个电脑小技巧轻松输入各种符号...
  18. freeswitch系列三 SIP软电话xlite、linphonec接入kamailio+freeswitch
  19. 陪玩源码,根据用户需求和功能开发搭建
  20. 【干货】动力电池热管理设计流程和方法(11页ppt)

热门文章

  1. GotW#63 狂乱的代码
  2. java生成word 带表格_【java】Freemarker 动态生成word(带图片表格)
  3. BAT批处理文本替换
  4. 数据结构 :: 顺序栈与链式栈的设计与实现
  5. 搭建一套简单的CDN网络
  6. 什么是分布式,分布式和集群的区别又是什么?
  7. Windows系统完全卸载删除 Node.js
  8. 管理网络(网络概念)
  9. java中Map遍历的四种方式
  10. fortune命令简介