函数基础

1.控制文件内的指针移动
    f.seek(以字节为单位)
        0  参照文件开头,可以在T模式和B模式下用
        1  参照当前文件所在位置,
        2  参照文件末尾 只能在b模式下用
            with open('',mode='rb') as f:
                f.seek(0,2)
                print(f.tell())
                print(f.read().decode('utf-8'))
        f.tell查找文件当前位置  参照文件开头    
    f.truncate
    #只有T模式下的read n ,n代表字符个数,除此以外都是以字节为单位    
函数:
    什么是函数:
        在程序中具备某一功能的工具=》函数
        实现准备好工具=》函数的定义
        遇到应用场景,哪来就用=》函数的调用
    为什么要用函数:
        1.代码冗余
        2.程序的组织结构不清晰,可读性差
        3.扩展性差    
    如何用函数:
        函数的使用必须遵循一个原则:
            1.先定义
                定义语法:只检测语法,不执行代码
                    def 函数名(参1,参2,参3)
                        '''
                            文档注释
                        '''
                        代码块
                        return 值(返回值)
            2.后调用:执行函数体代码
                    函数名()
        定义函数的三种形式
            1.无参函数
            2.有参函数
            3.空函数  
        调用函数的三种形式
            1.语句形式:函数名+() 单纯执行某些功能
            2.表达式形式: 只针对有返回值
            3.函数的调用可以作为另外一个函数的参数传入(将函数的返回值做为参数传入另外一个函数                   )
            
        函数分为两大类:
            内置函数
            自定义函数

        函数的返回值
            函数体代码的运行成果
            为什么要有返回值?
                执行一段功能需要到函数的处理结果做进一步的处理,则函数必须要有返回值
            如何用:
                return 返回值的特点:
                    1.返回的值没有类型限制,也没有个数限制
                            1.return 或者没有return:返回值为None
                            2.return 只有一个值:返回的就是该值本身
                            3.return (值1,值2,值3):返回元组
                        
                    2.return 是函数结束运行的标志,函数内可以有多个return,但只要执行一次函数就立即接护送,并且将resturn后的值当做本次调用的结果返回
                
        函数的参数:
            1.形参:在定义函数时,括号内指定的参数(变量名),称之为形参
                
            2.实参:在调用函数时,括号内传入的参数(变量值),称之为实参
            
            二者关系:在调用时,实参值(变量值)会传给形参(变量名),该种关系在调用函数时生效,调用结束取消绑定
            
        函数参数的详解

            1.形参:
                1.1位置形参:在定义阶段,按照从左到右的顺序依次定义的形参
                    特点:必须被传值,不能多也不能少
                        每次传值都需要传入
                1.2 默认参数:在定义阶段,已经为某个形参赋值,改形参就称之为默认形参
                    注意:位置形参必须要跟在默认形参前面
                    特点:在定义阶段已经有值,调用阶段可以不用为其传值
                        每次可传值也可以不传值
                1.3形参中*与**的用法
                    *args
                    1.形参中的*功能是:会将溢出的位置实参存成元祖形式然后赋值紧跟其后变量名
                    **kwargs
                    2.形参中的**功能是:会将溢出的关键字实参存成字典形式然后赋值紧跟其后变量名
            2.实参:
                可以混用关键字实参和位置实参,但是同一个形参只能被赋值一次,
                位置实参必须跟在关键字实参的前面
                2.1位置实参:在调用阶段,按照从左到右的顺序依次传入的值
                    特点:这种传值方式会与形参一一对应
                2.2 关键字实参:在调用阶段,使用key:value的格式传值
                    特点:可以完全打乱位置,单仍然可以为指定形参传值
                2.3实参中*与**的用法
                    1.实参中的*功能是:先将实参打散成位置实参,然后与形参做对应
                    2.实参中的**功能是:先将实参打散成关键字实参,然后与形参做对应
                                        只能跟字典
                为一个函数传参,内部函数想要跟传参函数一致,则需要形参设置为*args **kwargs,内部函数也要设置同样的格式
                def index(x,y,z)
                    print(x,y,z)
                def wrapper(*args,*kwargs):
                    index(*args,,**kwargs)

posted @ 2018-11-27 14:34  yyf1  阅读(135)  评论(0编辑  收藏  举报