函数

函数定义:使用关键字def加上函数名,定义以冒号结尾,
                后面的所有缩进行构成了函数体;
                其中有被称为文档字符串的注释,文档字符串由三引号括起,python使用它们生成程序中函数的文档;
                调用函数,可依次指定函数名以及用括号括起的必要信息;
形参:函数完成其工作所需的一项信息;(定义时用到)
实参:调用函数时传递给函数的信息;(调用时用到)
调用函数时,将实参传递给函数,这个值被存储在形参中;
传递实参(方法):
1.位置实参 基于实参的顺序
2.关键字实参 传递给函数的名称-值对,使用关键字实参时,务必准确地指定函数定义中的形参名;
3.默认值 编写函数时,可给每个形参指定默认值,调用函数中给形参提供了实参时,python将使用指定的实参值,否则,将使用形参的默认值;
    注意:使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参,这让python依然能够正确地解读位置实参;
返回值:函数返回的值;
            在函数中,可以使用return语句将值返回到调用函数的代码行;
            调用返回值的函数时,需要提供一个变量,用于存储返回的值;
            函数可返回任何类型的值,包括列表和字典等较复杂的数据结构;
传递列表:将列表传递给函数后,函数就能直接访问其内容;
               在函数中能够修改列表(都是永久性的)
               禁止函数修改列表时:可向函数传递列表的副本而不是原件;
                    要将列表的副本传递给函数:function_name(list_name[:])
                    切片表示法[:]创建列表的副本
传递任意数量的实参:1.python允许函数从调用语句中收集任意数量的实参;
                                2.如果让函数接受不同类型的实参,必须在函数定义中将接纳任意实参的形参放在最后;python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中;
                                3.当需要接收任意数量的实参,但预先不知道传递给函数的会是什么样的信息,可将函数编写成能够接受任意数量的键-值对,调用语句提供了多少就接受多少;
将函数存储在模块中:import语句允许当前运行的程序文件中使用模块中的代码;import 模块名 ;模块名.函数名()
                                导入特定的函数:from 模块名 import 函数名; 此时调用函数无需句点;
                                使用as给函数指定别名:from 模块名 import 函数名 as 别名;  
                                使用as给模块指定别名:import 模块名 as 别名;
                                导入模块中的所有函数:from 模块名 import *;
 
 
为什么有命名关键字参数:
命名参数配合默认参数使用可以简化代码,比如在写类的构造函数时,有10个参数,8个有合理的默认值,那么可以将这8个定义为命名关键字参数,前两个就是必须赋值的位置参数。这样,在后面生成对象时,如果要替换默认值:
①要么按顺序给后面8个参数替换默认值(C++做法);
②要么用关键字参数的传值方式给这8个关键字不一定按顺序来赋值(Python做法);
③要么混合①②的做法,不过容易混淆。(也就是全用必选参数,前面一部分按顺序赋值,后面一部分用关键字参数赋值)

                                
posted @ 2019-02-15 16:53  瞧七  阅读(141)  评论(0编辑  收藏  举报