• 函数/return


    什么是函数

    • 相当于具备某一功能的工具
    • 函数的使用必须遵循一个原则:先定义后使用

    为什么要用函数

    • 代码冗余,程序组织结构不清晰,可读性差
    • 可维护性,可扩展性差

    如何用函数

    要使用函数必须遵循先定义后调用的原则

    定义函数发生的事情:

    • 申请内存空间,保存函数体代码
    • 将上输内存地址绑定给函数名
    • 定义函数不会执行函数体代码,但会检测其语法

    调用函数发生的事情:print(函数名),得到函数体的内存地址

    • 通过函数名找到函数的内存地址
    • 通过加括号就是在触发函数体代码的执行
    def foo():
        bar()  # 此时只检测语法,不管有没有定义
        print('from foo')
    def bar():  # bar=函数的内存地址
        print('from bar')
    foo()  #此时才进行调用
    

      

    函数语法的格式

    def 函数名(参数1,参数2,...):
        '''文档描述'''
        函数体
        函数体
        函数体
        return 值

    • 必须要有:def,函数名,括号,冒号,函数体
    • 可以没有:参数,返回,文档描述
    • 函数名的命名规则与变量名一样,更多地应该命名成动词

     定义函数的三种格式

    def func():
        pass
    # 定义无参函数
    # 调用
    func()
    

      

    def func(x,y):
        res = x+y
        return res
    # 定义有参函数
    # 调用的时候,也要传入参数
    func()

    函数——工厂

    参数——原材料

    返回值——产品

      

    空的函数体,用于开发程序时候的大纲
    定义空函数通常是有用的,因为在程序设计的开始,往往是先想好程序都需要完成什么功能, 然后把所有功能都列举出来用pass充当函数体“占位符”,这将使得程序的体系结构立见,清晰且可读性强。 之后我们便可以统筹安排编程任务,有选择性的去实现函数体功能来替换掉pass,从而提高开发效率。

      

    三种定义

    函数相当于一个工厂,函数体相当于加工的模板流程,参数相当于加工的原材料,返回值相当于工厂的产品

    各个工厂干的活不一样,有些工厂必须要原材料才能运行,有些工厂不需要原材料,有工厂不产生产品

    1. 无参 / 有参 数函数的应用场景:写死 / 不写死功能
    2. 空函数的应用场景:构思代码的时候,编程写框架的时候

    调用函数

    语句的形式,只加括号调用,不做其他操作
    func(x,y)
    
    
    表达式
    res = func(x,y)  # 赋值表达式
    func(x,y) * 10  # 数学表达式
    
    
    函数调用
    func(func(1,2),y)  # 实际上传入的参数是func(1,2)的返回值和y
    

     return 

    若需要将函数体代码执行的结果返回给调用者,则需要用到return。

    • return的返回值无类型限制,且可以将多个返回值放到一个元组内。
    • return是函数结束的标志,即函数体代码一旦运行到 return,会立刻终止函数的运行;
    • 函数内可以有多个return,但只执行一次函数就结束了,并且会将 return后的值当做本次运行的结果返回。

    #PS:

    结束程序的执行的力度:

    exit > return > break > 条件为假

    def func():
        return (777)
    res=func()
    print(res) # 返回值为777
    

      

    def func():
        pass
    res=func()
    print(res) # 返回值None
    

      

    def func():
        return (77,'aaa',[1,2])
    res=func()
    print(res,type(res)) # 返回值为元祖(77, 'aaa', [1, 2])
    

      

  • 相关阅读:
    九度OJ 1014:排名 (排序)
    九度OJ 1013:开门人和关门人 (排序)
    九度OJ 1012:畅通工程 (最小生成树)
    Java高级工程师(一)
    FastJson JSON对象及JavaBean之间的相互转换
    webservice 和 RESTful API 接口调用
    [转] jqGrid 属性 事件 合集
    Jqgrid 事件重新设置行数据, 以及 Thymeleaf js下获取model的值
    mybatis配置文件说明--- 注重顺序
    美丽的for循环语句
  • 原文地址:https://www.cnblogs.com/Tornadoes-Destroy-Parking-Lots/p/12513498.html
Copyright © 2020-2023  润新知