本篇目录:
一、 函数的介绍
二、 函数的定义
三、 定义函数的三种类型
四、 函数调用的阶段
五、 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是函数结束的标志