函数
【一】引言
前面写的项目都是面条版
从头到尾没有中断
报错,更新功能很麻烦
【二】函数的概念
将某一块代码快封装起来后可以在某处直接使用的代码块
先定义再调用
【三】函数语法
【1】标准函数结构
def 函数名():
代码体
【2】定义函数
def login():
print("登录")
login()
【3】函数的内部原理
-
在函数定义阶段
-
def 表示在内存空间中开辟一块空间地址
-
login是空间地址的名字
-
()函数可能会收到参数
-
代码体 函数能执行的代码块
【四】函数类型
【1】有参和无参函数
- 函数是否需要接受参数,位置参数
# 方式一: 在函数头顶上指定参数
username = 'qwer'
password = '11'
def login():
# 函数内部可以直接使用外部函数头顶上面的参数
if username == 'qwer' and password == '11':
print(f"当前用户登录成功")
else:
print("当前用户登录失败")
login()
# 方式二:有参函数,在函数名后面的()放变量名即可
def login(username, password):
# 函数内部可以直接使用外部函数头顶上面的参数
if username == 'qwer' and password == '11':
print(f"当前用户登录成功")
else:
print("当前用户登录失败")
# (1)按照位置传递参数 : 参数位置不能随意更改
login('qwer', '11')
login('11', 'qwer')
当前用户登录成功
当前用户登录失败
# (2)关键字传递参数 并且和函数定义时定义的参数名一样
login(password='11', username='qwer')
当前用户登录成功
- 区分有参或无参看函数名后面的()有没有变量名
- 无参函数不需参数传递就能直接调用
- 有参函数调用的时候需要传递参数
- 传参可以按照位置传,定义时哪个变量在前就先传哪个
- 传参可以按照关键字传,变量定义的先后不会影响
【五】有返回值函数和无返回值函数
函数的返回值是元组
# 函数的返回值是元组
def get_user_pwd():
username = input("请输入用户名 :>>>>> ").strip()
password = input("请输入密 码 :>>>>> ").strip()
return username, password
def login(username, password):
if username == '11' and password == '22':
print(f"登录成功")
else:
print('登录失败')
def register(username, password):
# 模拟打开了文件并写入内容
data = f'{username}|{password}'
print(data)
def main():
print(f"当前功能如下 : 1 登录 2 注册")
func_id = input("请输入功能ID ").strip()
func_id = int(func_id)
if func_id == 1:
username, password = get_user_pwd()
login(username=username, password=password)
elif func_id == 2:
username, password = get_user_pwd()
register(username=username, password=password)
main()
- 区分有参或无参看函数名后面的()有没有变量名
- 无参函数不需参数传递就能直接调用
- 有参函数调用的时候需要传递参数
- 传参可以按照位置传,定义时哪个变量在前就先传哪个
- 传参可以按照关键字传,变量定义的先后不会影响