函数/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])

  

 

posted @ 2020-03-17 21:16  清轩挽长风  阅读(270)  评论(0编辑  收藏  举报