--------------------------函数相关练习题及知识点补充---------------------------
-
加密练习题
#注册时输入n(不区分大小写)即可完成注册 def funs(a): import hashlib obj = hashlib.md5('hjafsdkada'.encode('utf-8')) obj.update(a.encode('utf-8')) result = obj.hexdigest() return(result) user_list = [] def register(): print('*******用户注册*********') while True: user = input('请输入注册用户名:') if user.lower() == 'n': return pwd =input('请输入注册密码:') if pwd.lower()=="n": return temp = {'username':user,'password':funs(pwd)} user_list.append(temp) def login(): print("*******用户登录*********") login_name =input('输入登录用户名:') login_pwd =input('输入登录密码:') for item in user_list: if login_name == item['username'] and funs(login_pwd) == item['password']: return True register() result=login() if result: print('登录成功') else: print('登录失败')
-
不显示密码登录
import getpass pwd = getpass.getpass('请输入密码') print(pwd)
-
函数闭包
#练习1 funs_list = [] for i in range(10): funs_list.append(lambda x:x+i) #此时因为函数并未执行,所以在列表中的是九个纯函数,但此时i的值为9 for j in range(0,len(funs_list)): result = funs_list[j](j) print(result) #输出结果为:9 10 11 12........... #练习2 funs_list = [] for i in range(10): funs_list.append(lambda x:x+i) #此时i的值为9 for i in range(0,len(funs_list)):#此时for循环时使i从0开始,便修改了原来为9的i result = funs_list[i](i) print(result) #输出结果为:0 2 4 6 8 12........... #练习3 def f1(): print('f1') return f3() #此处先把f3函数执行后,再返回f3函数的返回值即None def f2(): print('f2') return f1 def f3(): print('f3') func = f2() result = func() print(result
-
函数注意事项
def func(): print('dvge') v1 = func() #此处会执行print,v1是接受返回值并执行函数不要弄混了 print(v1)
-
函数的嵌套
def func(name): v = lambda x:x + name # 注意:此处为函数嵌套函数 return v v1 = func("杨子列") v2 = func("扬子鳄") v3 = v1('金角') v4 = v2 ('银角') print(v1,v2,v3,v4)