本篇目录:
一、 函数的介绍
二、 函数的定义
三、 定义函数的三种类型
四、 函数调用的阶段
五、 Return返回值
==========================================================================
一、 函数的介绍
1. 什么是函数?为什么要有函数?
1.1. 具备一个特定功能的工具(类比)>>>函数
1.2 事先准备工具的过程(类比)>>>函数的定义
1.3 工具直接拿来使用,使用其特定的功能>>>函数的调用
1.4 没有函数的话,程序会有以下缺点:
a. 组织结构不清晰,可读性差
b. 管理维护难度大,扩展性差
c. 代码冗余,重复
#1 定义函数 def print_sym(sym*count): print(sym*count) def print_msg(msg): print('\033[35m%s\033[0m' %msg)
二、函数的定义
1. 函数的语法结构
1.1 函数的结构,def是define的意思,代表定义
def 函数名(参数1,参数2,参数3。。。): ''' 此处用来增加文档描述,阐述函数的功能,增加可读性 '''
代码块部分
1.2 函数可以通过函数名直接调用,函数的命名必须能准备反应函数的功能
1.3 代码块部分是函数功能实现的代码
注意点:
# 函数和变量都是占用内存地址,过程相似,但是函数并不是变量
三、定义函数的三种类型
1. 带参函数
1.1 参数是外部调用函数的部分传入函数的值
1.2 函数中的代码块逻辑中需要函数调用者传入值
def max2(x,y): ''' 这是一个比较大小的函数,返回较大的数 ''' if x >y: print(x) else: print(y) #调用函数max2 max2(100, 200)
def auth(username,pwd): ''' 该函数用来验证用户输入的用户名和密码 ''' if username == inp_name and pwd == inp_pwd: print('登陆成功!') else: print('登陆失败') #调用auth() auth()
def interactive(): ''' 该函数用来返回用户输入的用户名和密码 ''' inp_name = input('Username>>>:').strip() inp_pwd = input('Password>>>:').strip() return inp_name, inp_pwd def auth(inp_name, pwd): ''' 该函数用来验证return的结果是元组类型 ''' res = interactive() x = res[0] y = res[1] print(x) print(y)
2. 无参函数
1.1 函数本身定义无参数,调用者也不需要传入参数
def print(): ''' 该函数用来展示无参函数 ''' print('\033[35m--------------------\033[0m') print('--------------不需要传入参数------------')
1.2 函数体的代码逻辑不需要函数的调用者传入值
def auth(): ''' 该函数用来展示无参函数 ''' inp_name = input('Username>>>:').strip() inp_pwd = input('Password>>>:').strip() if username == inp_name and pwd == inp_pwd: print('登陆成功!') else: print('登陆失败') #调用auth() auth()
3. 空函数
什么事都不做的函数就是一个空函数。
即便是一个空函数,它也会有如下属性:
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
# Tips:当我们在写程序的过程中,遇到一个卡壳的地方,我们可以在函数末尾加一个pass,暂时的跳过思维的断路的地方。
四、 函数调用的阶段
1. 调用守则: 必须先定义再调用
定义阶段不执行代码,只检测语法
2. 调用方式:函数名+括号
调用阶段根据函数名找到函数的内存地址,执行函数的代码体
五、 Return返回值
1. 什么时候该有返回值
函数代码体执行完毕后,需要返回一个结果给调用者
2. Return返回值的三种情况
2.1 当函数代码块中没有Return,返回为None
2.2 如果返回值后跟一个值,就返回值本身
2.3 return返回的值用逗号分割,返回多个值,组成一个元组(类型)
2.4 如果函数体内有多个Return,则返回第一Return的值(Return代表函数结束)
# return返回值没有类型限制 # 函数内可以写多个return,但是只到第一个return就结束 # return是函数结束的标志