Python-10
@(Python)
目录
函数的基本使用
一、什么是函数
- 函数是具备某一功能的工具
- 函数使用原则:必须遵循先定义后调用的原则
- 事先将工具准备好,即函数的定义
- 遇到场景拿来就用,即函数的调用
二、为什么要用函数
- 避免-程序冗长
- 增强-程序的扩展性
- 增加-程序的可读性
三、函数的定义
1. 定义函数
① 函数定义语法
def 函数名(参数1,参数2):
'''
# 函数功能的描述信息
:param 参数1: # 可写描述
:param 参数2: # 可写描述
:return: 返回值描述
'''
代码1 # 缩进4个空格
代码2
代码3
...
return # 返回值
说明:
- 参数可以理解为变量
return
可以返回指定的值
② 函数的调用
- 语法:
函数名()
,即,函数名加括号- 函数名,类似于变量,函数也对应有内存地址
2. 函数的定义阶段与调用阶段
- 函数的使用必须遵循先定义,后调用的原则
① 函数的定义阶段
- 只会检测函数体的语法,不执行函数体代码,语法没有问题后,会申请内存空间存储
② 函数的调用阶段
- 函数可以调用函数,但是要注意执行顺序
3. 函数定义的三种形式:
- 定义函数时,参数用来接收函数体外部,传入的值,参数其实就是一个变量名
- 如果需要传值就使用参数,反之就不需要
函数参数的应用场景:
- 如果函数体依赖外部传值,必须定义有参函数
- 如果函数体不依赖外部传值,必须定义无参函数
① 无参函数
- 定义函数时,函数后括号内没有参数,称为无参函数
def func():
pass
- 特点:定义为无参函数,意味着,调用时也不需要传入参数
② 有参函数
- 定义有参函数:
def func(x,y):
res=x+y
- 使用参数传值:
func(10,20)
③ 空函数
- 写函数之前使用
pass
占位,便于梳理思路
def func():
pass
def func(x):
pass
4. 使用函数
① 没用函数之前:
# 用户注册
# 输入账号和密码
user_name=input('注册用户名:').strip()
user_passwd01=input('密码:').strip()
user_passwd02=input('确认密码:').strip()
# 验证两次密码是否正确
if user_passwd01 == user_passwd02:
# 存入文件
with open(r'db.txt',mode='at',encoding='utf-8') as db_file:
name_passwd='%s:%s
' %(user_name,user_passwd01)
db_file.write(name_passwd)
db_file.flush() # 表示立马刷新到磁盘,一般不用会影响性能
print('注册成功')
else:
print('两次密码不一致')
# 用户认证
# 输入用户名和密码
inp_user_name=input('登录用户名:').strip()
inp_user_passwd=input('登录密码:').strip()
# 将用户名和密码与文件中的比对
with open(r'db.txt',mode='rt',encoding='utf-8') as auth_file:
for line in auth_file:
info=line.strip('
').split(':')
if inp_user_name == info[0] and inp_user_passwd == info[1]:
print('login successfull')
break
# 这个else应该放在这一级
else:
print('用户或密码错误')
② 使用函数之后:
def check_username():
# 输入账号
while True:
user_name=input('注册用户名:').strip()
if user_name.isalpha():
return user_name
else:
print('用户名必须是字母')
def check_userpasswd():
# 输入密码
while True:
user_passwd01=input('密码:').strip()
user_passwd02=input('确认密码:').strip()
if user_passwd01 == user_passwd02:
return user_passwd01
else:
print('两次密码不一致')
def db_write(user_name,user_passwd01):
# 写入文件
with open(r'db.txt',mode='at',encoding='utf-8') as db_file:
name_passwd='%s:%s
' %(user_name,user_passwd01)
db_file.write(name_passwd)
db_file.flush() # 表示立马刷新到磁盘,一般不用影响性能
print('注册成功')
def register():
'''
注册功能
:return:
'''
# 检查用户名
x=check_username()
# 检查密码
y=check_userpasswd()
# 写入文件
db_write(x, y)
register()
def auth():
'''
用户认证
:return:
'''
# 输入用户名和密码
inp_user_name=input('登录用户名:').strip()
inp_user_passwd=input('登录密码:').strip()
# 将用户名和密码与文件中的比对
with open(r'db.txt',mode='rt',encoding='utf-8') as auth_file:
for line in auth_file:
info=line.strip('
').split(':')
if inp_user_name == info[0] and inp_user_passwd == info[1]:
print('login successfull')
break
# 这个else应该放在这一级
else:
print('用户或密码错误')
auth()
说明:
return
是函数的终止标志,也用于返回值