《Python基础教程》[挪]Magnus Lie Hetland——学习笔记(6)

第六章  抽象

6.1 懒惰—化繁为简,函数调用

6.3 创建函数

       >>>def hello(name):                      #遵循块结构

                     return ‘Hello,’ + name + ‘!’     #可以利用元组返回一个以上的值

       print hello(‘world’)                        #调用

        注:不返回值的函数也可以认为是一种“过程”,可能返回none,return是作为结束函数体使用的

       记录函数:在开头加注释,或者引入文档字符串描述函数功能,使用

       function.__doc__或者help(function)调用查询,见例子

6.4 参数

       参数存储在局部作用域

       不可变的字符串/元组在被函数修改时,只能用新值覆盖

       关键字参数:使用参数名提供的参数

                              关键字参数可以设置默认值,调用时不更改则返回默认值

                              >>>def function(x=x1,y=y1)

                                          Return x,y

       收集参数:加 * 号,收集其余的位置参数并返回元组(没有参数返回空元祖)

       

                            同样的,** 号收集参数并返回字典,没有则返回{}

       反转过程:在调用函数时,用 * 代替元组,用 ** 代替字典(类似指针)

                            >>> params=("沈建谅很帅",6,6,6)

                            >>> print_params(*params)

                            沈建谅很帅

                            (6, 6, 6)

                            注:一般只在定义函数(允许使用不定数目的参数)或者调用(“分割”字典或者序列)时才使用。

6.5 作用域

       变量-值:main中的不可见字典  E   命名空间/作用域

                        分为全局和局部(函数/循环等作用域)

       局部和全局变量同名时 globals()      返回全局变量的值  globals()[‘变量名’]

                                                   locals()     返回局部变量的字典

                                                     vars()      返回全局变量的字典且不可修改

       在函数内部定义全局变量:global x

6.6 递归函数调用自身

       阶乘计算:                                                          幂计算:

                         

       函数式编程:map、filter 、reduce (3.0中被移到 functools 模块)

                               lambda:匿名函数。

                               map:将序列中的元素全部传递给一个函数。map(str,range(10))

                               filter:基于一个返回布尔值的函数对元素进行过滤。

                             reduce:对一个序列的每个项迭代调用函数。它会将序列的两个元素与给定的函数联合使用,并且将它们的返回                                              值和第3个元素继续联合使用,直到整个序列处理完毕。

猜你喜欢

转载自blog.csdn.net/JackSparrow_sjl/article/details/81218166
今日推荐