Python学习笔记_函数
2017-09-13 11:19
302 查看
1、函数文档,在函数定义开头的字符串,一般介绍接口,fun.__doc__()查看。
2、关键字参数,fun(name=" "),可使用默认参数值。
3、可变参数,*args,**kargs,python只接受元组、字典格式的参数,可变参数一般放在参数列表的末尾,若要放在中间,后面的参数最好使用关键字。
4、python的函数均有返回值,无return也会返回None对象。
5、全局/局部变量
在函数作用域内访问全局变量是可以的,但感觉若想改变全局变量的值则不被允许。图中,a,b,c三个全局变量,企图在函数func内部改变他们的值,a=10后打印出来的值仍然是10,因为函数内部a=10创建了一个局部变量a,所以全局变量没有被改变。我的理解是判断一个全局变量否被改变是看id是否变化,所以b[0]的值被改变,因为b的id未变化,变化的是b[0]的引用。python当然也提供了改变的方法,就是在函数内部利用global关键字,如c。
6、闭包
看了各种说法简直凌乱,个人理解是在一个函数中定义内定义另一个函数,在内嵌函数中引用了上层函数的对象就产生了闭包。
如图,在内嵌函数func2中引用了func1的便产生了闭包环境,在func2中企图改变x的值时会报错,报的错误是x在使用前不存在。
发现解决的方法有两种,在Python2中,只能将y改为列表就可以了,我的理解是原理跟上面一样(有的参考资料说是因为列表的存储不在函数的栈内,可能这个才是正确的吧,但这个是什么鬼,不懂啊
,后面填坑)。在Python3中,就给出了nonlocal关键字的解决方法,类似global,从字面意思上来看一个是申明为全局变量,一个是申明为非局部变量。
7、lambda表达式
用来制造匿名函数,在函数作为参数时很方便。例如Python内建函数filter(),map()。
filter():第一个参数可以是默认的也可以是一个函数,将第二个参数中的每一个对象放到第一个函数里进行计算,返回为True的值。
map():将第二个参数中的每一个对象放到第一个函数里进行计算,返回所有值。
图中,lambda x: x%2 等价于下面的定义。
2、关键字参数,fun(name=" "),可使用默认参数值。
3、可变参数,*args,**kargs,python只接受元组、字典格式的参数,可变参数一般放在参数列表的末尾,若要放在中间,后面的参数最好使用关键字。
4、python的函数均有返回值,无return也会返回None对象。
5、全局/局部变量
在函数作用域内访问全局变量是可以的,但感觉若想改变全局变量的值则不被允许。图中,a,b,c三个全局变量,企图在函数func内部改变他们的值,a=10后打印出来的值仍然是10,因为函数内部a=10创建了一个局部变量a,所以全局变量没有被改变。我的理解是判断一个全局变量否被改变是看id是否变化,所以b[0]的值被改变,因为b的id未变化,变化的是b[0]的引用。python当然也提供了改变的方法,就是在函数内部利用global关键字,如c。
6、闭包
看了各种说法简直凌乱,个人理解是在一个函数中定义内定义另一个函数,在内嵌函数中引用了上层函数的对象就产生了闭包。
如图,在内嵌函数func2中引用了func1的便产生了闭包环境,在func2中企图改变x的值时会报错,报的错误是x在使用前不存在。
发现解决的方法有两种,在Python2中,只能将y改为列表就可以了,我的理解是原理跟上面一样(有的参考资料说是因为列表的存储不在函数的栈内,可能这个才是正确的吧,但这个是什么鬼,不懂啊
,后面填坑)。在Python3中,就给出了nonlocal关键字的解决方法,类似global,从字面意思上来看一个是申明为全局变量,一个是申明为非局部变量。
7、lambda表达式
用来制造匿名函数,在函数作为参数时很方便。例如Python内建函数filter(),map()。
filter():第一个参数可以是默认的也可以是一个函数,将第二个参数中的每一个对象放到第一个函数里进行计算,返回为True的值。
map():将第二个参数中的每一个对象放到第一个函数里进行计算,返回所有值。
图中,lambda x: x%2 等价于下面的定义。
相关文章推荐
- python核心编程学习笔记-2016-08-02-01-读取文件的函数中的文件指针问题
- Noah的学习笔记之Python篇:函数“可变长参数”
- 【python学习笔记】18:numpy数组函数与矩阵运算
- Python3.3 学习笔记4 - 函数 - 内置和其他一些函数
- 我的python学习笔记.函数
- Python学习笔记 —— 函数
- Python快速入门学习笔记(三)——函数的定义与调用
- Python学习笔记总结(二)函数和模块
- python 函数学习笔记一
- Python控制流和函数--Python学习笔记二
- Python学习笔记7-把函数当参数传递、指定可变参数
- Python-函数其他(学习笔记4)
- python函数学习笔记
- python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
- Python学习笔记总结(二):函数和模块
- Python学习笔记,6,函数
- Python学习笔记(三):随机生成函数方法
- Python学习笔记—函数
- Python学习笔记:range函数
- 如何用python计算三角形的斜边?-学习笔记3-函数