• 函数基础


    一、函数的基本使用

    1、什么是函数

    在程序具备某一功能的工具==》函数

    事先准备好工具===》函数的定义

    遇到应用场景,拿来就用==》函数的调用

                     分两大类

                             1、内置函数

                             2、自定义函数

    2、为何要用函数

    1、代码冗余

    2、 程序结构不清晰,可读性差

    3、扩展性差

    3、如何用函数

    函数的使用必须遵循一个原则

                      1、先定义

                              定义语法

                                 def 函数名(参1,参2,参3.....):

                                     '''

                                      文档注释

                                      '''

                                      代码1

                                      代码2

                                      代码3

                                      ...

                                     return 值

                      2、 后调用

                                  函数名()

    定义阶段:只检测语法,不执行代码

    def func():
        print('from func 1')
        print('from func 2')
        print('from func 3')
        print('from func 4')

    调用阶段:开始执行函数体代码

    func()
    func()
    func()
    示范一:
    def foo():
        print('from foo')
        bar()
    
    foo()
    示范二:
    def bar():
        print('from bar')
    
    def foo():
        print('from foo')
        bar()
    
    foo()
    示范三:
    定义
    def foo():
        print('from foo')
        bar()
    
    def bar():
        print('from bar')
    
    调用
    foo()

    定义函数调用的三种形式

    1、无参函数

    def func():
        print('from func')
    
    func()

    2、有参函数

    def max2(x,y):
        # x=1
        # y=2
        if x > y:
            print(x)
        else:
            print(y)
    
    max2(1,2)
    max2(3,4)

    3、空函数

    def register():
        pass

    调用函数的三种形式

    1、语句形式

    def func():
        print('from func')
    func()

    2、表达式形式

    def max2(x,y):
        if x > y:
            return x
        else:
            return y
    
    res=max2(1000,2000) * 12
    print(res)
    
    res=len('hello')
    print(res)

    3、函数的调用可以当做另一个函数的参数调用

    def max2(x,y):
        if x > y:
            return x
        else:
            return y
    
    res=max2(max2(1,2),3)
    print(res)

    二、函数的返回值

    1、什么是函数的返回值

                  返回值是函数体代码的运行结果

    2、为何要有返回值

                  需要拿到函数的处理结果做进一步的处理,则函数必须有返回值

    3、如何用

            return 返回值的特点

                     1、返回值没有类型限制,也没有个数限制

                          I、return空或者函数没return,则返回None

                          II、return 值:返回的就是该值的本身               

                          III、return 值1 值2 值3:返回元祖(值1,值2,值3)

                     2、return是函数结束运行的标志,函数内可以有多个return,但只要执行一次函数就立即结束,并将return后的值当作本次调用的结果返回

    def func():
        # return 1,1.2,'aaa',[1,2,3]
        pass
    res=func()
    print(res)
    

    def func(): print('aaaa') return 1 print('bbb') return 2 print('ccc') return 3 func()

    三、函数参数的使用

    1、函数的参数分为两大类

    1、形参:在定义函数时括号内指定的参数(变量名)称之为形参

    2、实参:在调用函数时括号内指定的值(变量值)称之为实参

    二者的关系,在调用函数时,实参值(变量值)会传给形参(变量名),这种绑定关系在调用函数时生效,调用结束后解除绑定

    def func(x,y):
        x=1
        y=2
        print(x,y)#
    
    func(1,2)
    print(x)
    a=1
    b=2
    func(a,b)

    2、函数参数详解

    1、形参

    1.1位置形参:在定义阶段,按照从左到右的顺序依次定义的形参

    特点;必须被传值

    def func(x,y,z):
        print(x,y,z)
    
    
    func(1,2,3)
    func(1,2,3,4)
    func(1,2,)

    1.2默认形参,在定义阶段就已经为某个形参赋值,该形参称之为默认形参

    特点:在定义阶段就已经有值,意味着调用阶段可以不用为其传值

    注意点:位置形参必须放到默认形参的前面

    def func(x,y=2):
        print(x,y)
    
    func(1)
    func(1,3333333)
    
    def register(name,age,sex='male'):
        print(name,age,sex)
    
    register('靓仔',18,)
    register('小红',28,)
    register('小黑',38,)
    register('花姑娘',16,'female')
    
    def func(y=2,x):
        print(x,y)

    1.3形参中*与**的用法

    形参中带*:*回将溢出的位置实参存成元祖的形式,然后赋值其后的变量名

    def func(x,y,*args):
        print(x,y,args)
    
    func(1,2,3,4,5,6)

    形参中带**:**会将溢出关键字实参存为字典的格式然后赋值其后的变量名

    def func(x,y,**kwargs):
        print(x,y,kwargs)
    
    func(1,y=2,z=3,m=1,n=2)

    2、实参

    2.1、位置实参:在调用阶段按照从左到右的顺序依次传入的值

    特点这种传值方式会与形参一一对应

    2.2、关键字实参:在调用阶段按照key=value的格式传值

    特点:可以完全打乱位置,但仍能给指定的形参传值

    注意可以混用位置形参与关键字实参但是

    同一形参只能被赋值一次

    位置实参必须在关键字实参的前面

    func(1,z=3,y=2)
    func(1,z=3,y=2,x=333)
    func(x=1,2,z=3) # 报语法错误

    2.3实参中*与**的用法

    实参中带*:先将实参打散成位置实参然后再与形参对应

    def func(x,y,z):
        print(x,y,z)
    
    func(1,[2,3])
    func(*[1,2,3]) #func(1,2,3)
    func(*'hello') #func('h','e','l','l','o')
    func(*'hel') #func('h','e','l')

    2.4实参中带**:先将实参打散成关键字实参,然后再与形参对应

    def func(x,y,z):
        print(x,y,z)
    
    func(**{'x':1,'z':3,'y':2}) #func(z=3,y=2,x=1)
    ef index(x,y,z):
        print(x,y,z)
    
    def wrapper(*args,**kwargs): # args=(1,2,3,4,5) kwargs={'c':3,'b':2,'a':1}
        index(*args,**kwargs) #index(*(1,2,3,4,5),**{'c':3,'b':2,'a':1}) #index(1,2,3,4,5,a=1,b=2,c=3)
                              #index(1,z=3,y=2)
    # wrapper(1,2,3,4,5,a=1,b=2,c=3)
    
    wrapper(1,z=3,y=2)

      

  • 相关阅读:
    Gmail邮件被屏蔽
    每天读两本书的方法
    如何做到一天读一本书?
    给网站加图标
    接口和类的异同
    生气的时候如何不生气
    只有某行文字间距较大
    视频流媒体监控系统EasyDSS是如何在无人机巡查秸秆焚烧中发挥作用的?
    互联网直播点播平台EasyDSS视频直播通道被占用了怎么处理?
    互联网直播点播平台EasyDSS如何实现电梯监控?EasyDSS电梯云物联解决方案介绍
  • 原文地址:https://www.cnblogs.com/liushen1995/p/10026694.html
Copyright © 2020-2023  润新知