目录
1.简述定义函数的三种方式
1.空函数
def register():
# TODO:注册功能,暂时不会写
pass # 写个空函数,占个位置
2.有参函数(有参数()的函数)
def compare(x, y):
# x = 10
# y = 20
if x > y:
print(x)
else:
print(y)
# 当你使用手电筒,在使用的时候调一下(输入一个参数)
compare(30,40) # 使用函数的得传参
3.无参函数
def func():
print(1)
func()
2.简述函数的返回值
1. 如果函数没有返回值,默认返回None
None就是返回值(使用函数后拿到的一个结果)
2. 函数可以通过return返回出返回值
def compare():
x = 10
y = 20
if x > y:
return x
else:
return y
res = compare()
print(res)
3. return 可以终止函数
def print_1_10():
for i in range(10):
if i == 5:
return # 终止函数
print(i)
print_1_10()
4. return 可以返回多个值,以列表形式存储
def return_nums():
return 10, 100, 1000
res = return_nums()
print(res[1])
3.简述函数的参数
ef compare(num1, num2): # 形(形式)参:一般具有描述意义,毫无作用(接收实参) --》 变量名(接收变量值)
if num1 > num2:
print(num1)
else:
print(num2)
compare(80, 140) # 实(实际)参 :具有实际的意义,具体的一个值(传给形参) --》 变量值
1.位置形参
从左到右一个一个写过去,就叫做位置形参
2.默认形参
(默认值)形参:给位置形参一个默认值,让他成为默认形参
特点:在定义阶段,就已经被赋值,以后调用不需要为他传值,但是你为他传值的话,他也会接收
def func(x, y=10):
print(x)
print(y)
func(2)
默认参数必须得放在最后面(位置参数后面)
默认形参的值只在定义阶段赋值一次,也就是说默认参数的值在函数定义阶段就已经固定了。
3.位置实参
位置实参:从左到右一个一个写过,就叫做位置实参,(有多少个位置形参,就必须有多少个位置实参,从左到右依次传值)
4.关键字实参
在调用函数时,按照key=value的形式为指定的参数传值,称为关键字实参。
func(y=2, x=1)
特点:可以打破位置的限制,但仍能为指定的形参赋值。
func(x, y=2)
func(y=2, x) # SyntaxError: positional argument follows keyword argument #可以混用位置实参和关键字实参,但是位置实参必须在关键字实参的左边
func(x, x=1) # NameError: name 'x' is not defined #可以混用位置实参和关键字实参,但不能对一个形参重复赋值
4.编写注册函数
将用户信息保存到文件内,用户信息可保存为`nick:123|sean:456|tank:789
def register():
# 注册
print('注册功能')
username_inp = input('请输入你的用户名:')
print('username_inp:', username_inp)
pwd_inp = input('请输入你的密码:')
print('pwd_inp:', pwd_inp)
with open('user_info.txt', 'a', encoding='utf8') as fa:
if ':' in username_inp:
print('输入错误,用户名不能含有 :')
else:
fa.write(f'{username_inp}:{pwd_inp}')
print('保存成功')
login()
5.编写登录函数
从文件内读取用户信息进行身份识别
def login():
# 登陆
print('登录功能')
with open('user_info.txt', 'r', encoding='utf8') as fr:
data = fr.read()
data_split = data.split(':')
username, pwd = data_split[0], data_split[1]
username_inp = input('请输入你的用户名:')
pwd_inp = input('请输入你的密码:')
if username == username_inp and pwd == pwd_inp:
print('登录成功')
else:
print('登录失败')
register()