zoukankan      html  css  js  c++  java
  • 函数复习(一)---函数基础

    一、定义函数

    1.如何自定义函数    (return 返回值和参数不是必须要写的)

    #语法
    def 函数名(参数1,参数2,参数3,...):
        '''注释'''
        函数体
        return 返回的值
    
    #函数名要能反映其意义

    2.函数的使用原则先定义,在调用   (******)

    def foo():
        print('from foo')
        bar()
        
    def bar():
        print('from bar')
    foo() #会报错吗?   不会
    
    #结论:函数的使用,必须遵循原则:先定义,后调用我们在使用函数时,一定要明确地区分定义阶段和调用阶段,会先走定义阶段的foo和bar,等到调用foo函数的时候,内存中已经存在bar函数了

    3.函数在定义阶段

    只检测语法,不执行代码
    也就说,语法错误在函数定义阶段就会检测出来,而代码的逻辑错误只有在执行时才会知道

    4.定义函数的三种形式

    #1、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印
    #2、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值
    #3、空函数:设计代码结构

    二、调用函数

    1.函数返回值

    return:函数内可以有多个return,但是只能执行一次return
    执行return函数就立刻结束,并且return后的值当做本次调用的结果返回
    
    return返回值没有类型限制
    无return->默认返回None
    return 1个值->返回1个值
    return 逗号分隔多个值->返回一个元组

    2.函数调用的三种形式

    1 语句形式:foo()
    2 表达式形式:3*len('hello')
    3 当中另外一个函数的参数:range(len('hello'))

    三、函数的参数

    1.具体应用 (******)重点

    1.位置参数:按照从左往右的顺序依次定义的参数
    位置形参:必须被传值,多一个少一个都不行
    位置实参:与形参一一对应传值
    
    2.关键字参数:按照key=value的形式定义的实参
    特点:指名道姓的给形参传值,不再依赖位置
    注意:1.关键字实参必须在位置实参的后面。2.不能为同一个参数赋值多次
    
    3.默认参数:在函数定义阶段,就已经为形参赋值了
    特点:定义阶段已经有值意味着调用阶段可以不用传值
    位置参数通常用于经常变化的参数,而默认参数指的是大多数情况下都一样的
    注意:1.默认参数必须放在位置形参的后面  2.默认参数的值只在定义时被赋值一次  3.默认参数的值通常应该是不可变类型
    
    4.可变长参数:(分在形参使用和在实参使用)
    在调用函数时,实参值的个数不固定 实参的形式有:位置实参,关键字实参 在形参中使用的解决方案:用
    *,**接收多余的实参 (*接收多余的位置实参,**接收多余的关键字实参)

    在实参中使用的解决方案:用*,**打散 (*打散元组,**打散字典,然后把打散的值传给一一传给形参)

    了解:命名关键字参数
    *后定义的参数,必须被传值(有默认值的除外),且必须按照关键字实参key=value的形式传递 def foo(x,y,*,m,n) print(x,y) print(m,n) foo(1,2,n=4,m=3) #如果不用key=value形式传参,那么传的值都会被*接收
  • 相关阅读:
    OO第四单元总结
    OO第三单元总结
    OO第二单元作业总结
    OO第一次总结
    OO第四单元总结
    OO第三单元总结
    OO第二单元总结
    OO第一单元总结
    使用pushplus+python实现亚马逊到货消息推送微信
    OO第四次博客作业
  • 原文地址:https://www.cnblogs.com/wangcuican/p/12088451.html
Copyright © 2011-2022 走看看