目录
1.函数的三种定义方式
函数如果没被调用,则运行只会检查函数内的语法,不会执行函数里的代码
1.空函数
def hanshuming():
#TODO 这个函数的功能,暂时不会写
pass #写个空函数,占个位置
2.有参函数
def hanshuming(x,y)
if x>y:
print(x)
else:
print(y)
hanshuming(30,20) #调用函数
3.无参函数
def hanshuming():
print(1)
func() #调用函数
2.函数的返回值
当我们需要函数的执行结果时,这时就是要拿到函数的返回值
(1)如果函数没有返回值,默认返回None
None就是返回值,调用函数得到的一个结果
(2)函数可以通过return返回出返回值
(3)return可以终止函数
终止的是函数,当函数终止时,其内部的循环或其他程序也会停止
(4)return可以返回多个值,以元组(相当于列表)的形式存储
3.函数的参数(形参、实参)
1.形参(位置形参、默认形参)
(1)位置形参:从左到右一个一个写过去,就叫做位置形参
- 与位置实参一一对应,依次接收值
(2)默认形参:给位置形参一个默认值,让它成为默认形参
-
默认形参:以后调用不需要为它传值,但是如果为它传值,他也会接收。
-
默认参数必须放在最后面(即放在位置参数的后面)
(3)形参的一些格式
形参后面跟 冒号(:)+数据类型 ;定义函数时 括号内的意思 ( -> 关键字 )
def f1(nums: list, target: int) -> int:
print(nums, target)
return [1, 2]
#冒号后面的数据类型是指该参数要用的数据类型,但不是限制死的
#而第一行最后的int,是指函数的返回值必须为int类型,是限制死的
def compare(num1, num2=140): # 形参:一般具有描述意义,毫无作用,只是用来接收实参)相当于 变量名用来接收变量值
if num1 > num2:
print(num1)
else:
print(num2)
2.实参(位置实参、关键字实参)
(1)位置实参:从左到右一个一个写过去,就叫做位置实参
- 与位置形参一一对应,依次传值
(2)关键字实参:位置实参加上默认值,然后按照位置形参名传值
-
关键字实参必须放在位置实参后面
-
关键字实参,按照位置实参名给值,一般用于参数过多(一般建议函数参数不超过3个)
4.注册和登陆的函数
1.注册函数
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('保存成功')
register()
2.登陆函数
def login():
# 登陆
print('登录功能')
username_inp = input('请输入你的用户名:')
pwd_inp = input('请输入你的密码:')
with open('user_info.txt', 'r', encoding='utf8') as fr:
data = fr.read()
data_split = data.split('|')
j=0
for i in data_split:
j+=1
i=i.split(':')
if username_inp==i[0] and pwd_inp==i[1]:
print('登陆成功')
break
else:
if j==len(data_split):
print('登陆失败')
else:
continue
login()