Learn_Day7 登录实例、冒泡排序、递归函数、初识装饰器
上节补充:
# 函数名可以当作参数进行传递
def f1():
return "F1"
def f2(arg):
# print(arg)
return "F2"
x = 123
print("f1:", f1())
# f1: F1
print("f2(x):", f2(x))
# f2(x): F2
print("f2(f1):", f2(f1))
# f2(f1): F2
# 实现筛选功能等同于fillter
def MyFillter(func, seq):
result = []
for i in seq:
ret = func(i)
if ret:
result.append(i)
return result
def f1(x):
if x > 22:
return True
else:
return False
r = MyFillter(f1, [11, 22, 33, 44])
print("MyFillter:", r)
# MyFillter: [33, 44]
# 实现筛选功能等同于map
li = [11, 22, 33, 44]
def x(arg):
return arg + 100
def MyMap(func, arg):
result = []
for i in arg:
ret = func(i)
result.append(ret)
return result
r = MyMap(x, li)
print("MyMap:", r)
# MyMap: [111, 122, 133, 144]
实例 ==>> 用户登录:
# strip() 使用strip时无参数默认去掉两端的空格和换行符\n,有参数则去掉两端的指定值(即参数值)
# split() 用参数分割字符串("alex|123" ==>> split("|") ==>> "alex","123")
# 方法1
user = input("USERNAME:")
pwd = input("PASSWORD:")
f = open("db.txt", 'r', encoding="utf-8")
for line in f:
line = line.strip()
line_list = line.split("|")
print(line_list)
if user == line_list[0] and pwd == line_list[1]:
print("登录成功!")
break
# 方法2
def login(username, password):
"""
用于用户名密码验证
:param username:用户名
:param password:密码
:return:True:验证成功;False:验证失败
"""
f = open("db.txt", 'r', encoding="utf-8")
for line in f:
line = line.strip()
line_list = line.split("|")
if user == line_list[0] and pwd == line_list[1]:
return True
return False
user = input("USERNAME:")
pwd = input("PASSWORD:")
# is_login = login(user, pwd)
# if is_login:
if login(user, pwd):
print("登录成功")
else:
print("失败")
冒泡排序:
# a1 = 123, a2 = 456, 将a1与a2的值互换
a1 = 123
a2 = 456
temp = a1
a1 = a2
a2 = temp
print("a1:", a1, "a2:", a2)
# a1: 456 a2: 123
# 对列表li进行排序
li = [2, 3, 45552, 212, 2343565, 13, ]
for i in range(len(li) - 1):
if li[i] > li[i + 1]:
temp = li[i]
li[i] = li[i + 1]
li[i + 1] = temp
print("li:", li)
# li: [2, 3, 212, 45552, 13, 2343565]
递归函数:
def f1():
return "f1"
def f2():
r = f1()
return r
def f3():
r = f2()
return r
def f4():
r = f3()
return r
print(f4()) # f1
#斐波那契函数:
def func(a1, a2, n):
a3 = a1 + a2
if n == 10:
return a2
return func(a2, a3, n + 1)
print(func(0, 1, 1))
参考实例:http://m.blog.csdn.net/article/details?id=49422093
初识装饰器:
装饰器用于装饰某个函数(类或方法),让函数(类或方法)在执行前或执行后做一些操作
- 执行outer函数并且将下面的函数名当作参数
- 将outer 参数的返回值重新赋值给f1(f1=outer的返回值)
# 装饰器
def outer(func):
def inner():
print("hello")
r = func()
print("end")
return r
return inner
@outer
def f1():
print("F1")
f1()
# hello
# F1
# end

浙公网安备 33010602011771号