09 | 不可或缺的自定义函数
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 | 不可或缺的自定义函数相关推荐
- 【Python核心】不可或缺的自定义函数
一个规范的值得借鉴的Python程序,除非代码量很少(比如 10 行.20 行以下),基本都应该由多个函数组成,这样的代码才更加模块化.规范化 函数是Python程序中不可或缺的一部分 事实上,在前面 ...
- MySQL自定义函数(CREATE FUNCTION)
在使用 MySQL 的过程中,MySQL 自带的函数可能完成不了我们的业务需求,这时候就需要自定义函数. 自定义函数是一种与存储过程十分相似的过程式数据库对象.它与存储过程一样,都是由 SQL 语句和 ...
- MS SQL自定义函数IsPositiveInteger MS SQL自定义函数IsNumeric 水晶报表使用IEnumerableT数据源...
MS SQL自定义函数IsPositiveInteger 判断字符串是否为正整数,0开始的的数字不算. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ...
- Microsoft SQL Server 自定义函数整理大全--转【叶子】的文章
SQL SERVER中是允许有自定义函数,Microsoft SQL Server并不将用户限制在定义为 Transact-SQL语言一部分的内置函数上,而是允许用户创建自己的用户定义函数. 函数是由 ...
- [转]Microsoft SQL Server 自定义函数整理大全
SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数. 函数 ...
- (4.32)自定义函数整理大全
转自:https://blog.csdn.net/maco_wang/article/details/6261639 SQL SERVER中是允许有自定义函数,Microsoft SQL Server ...
- SQL存储过程与自定义函数实例
存储过程 1.create PROCEDURE Sp_Conn_Sort ( @tblName varchar(255), -- 表名 @strGetFields varchar(10 ...
- matlab中设置拟合初值,如何确定自定义函数拟合时的参数初值?
本帖最后由 bearbb 于 2013-5-10 15:09 编辑 在做多元非线性模拟时出现了问题 a=[ 537.15 2.846653612 39.44841337 ...
- vba里使用python自定义函数(xlwings)
http://club.excelhome.net/thread-1452827-1-1.html 今天讲一下怎么在vba里面使用python的自定义函数.在vba板块提下python主要是pytho ...
最新文章
- IBM技术专家:Hyperleger Fabric 架构与部署实例解析
- Linux查看进程和进程管理
- 工作中系统报错:数据库连接失败怎么办?
- 英语笔记-20151209
- Web socket广播
- @程序员,掌握这四点,想不优秀都难!
- MFC工作笔记0011---atoi的用法
- 天天早上慢跑一小时对身体好吗?
- java ide排名_Java程序员的困惑,Java IDE到底怎么选
- Directx11教程(47) alpha blend(4)-雾的实现
- 图像语义分割(20) 通过图像合成方法检测训练中未出现的类别未知的物体
- python学习之路四(类和对象1)
- Java 反射常用方法
- sql分页查询与offset的使用
- 易语言静态连接器提取_vc98linker修复静态编译
- 十一、 人工变量之 “大M” 法
- 计算机的标点符号有哪些,电脑标点符号怎么打出来,四个电脑小技巧轻松输入各种符号...
- freeswitch系列三 SIP软电话xlite、linphonec接入kamailio+freeswitch
- 陪玩源码,根据用户需求和功能开发搭建
- 【干货】动力电池热管理设计流程和方法(11页ppt)