函数
精髓:可以把函数当成变量去用
func=内存地址
def func():
print('from func')
1、可以赋值
f=func
print(f,func)
f()
2、可以当做函数当做参数传给另外一个函数
def foo(x): ##### x = func的内存地址
##### print(x)
x()
foo(func) ##### foo(func的内存地址)
3、可以当做函数当做另外一个函数的返回值
def foo(x): ##### x=func的内存地址
return x ##### return func的内存地址
res=foo(func) ##### foo(func的内存地址)
print(res) ##### res=func的内存地址
res()
4、可以当做容器类型的一个元素
l=[func,]
##### print(l)
l[0]()
dic={'k1':func}
print(dic)
dic['k1']()
函数对象应用示范:
def login():
print('登录功能')
def transfer():
print('转账功能')
def check_banlance():
print('查询余额')
def withdraw():
print('提现')
def register():
print('注册')
func_dic={
'1':login,
'2':transfer,
'3':check_banlance,
'4':withdraw,
'5':register
}
##### func_dic['1']()
while True:
print("""
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
""")
choice = input('请输入命令编号:').strip()
if not choice.isdigit():
print('必须输入编号,傻叉')
continue
if choice == '0':
break
if choice in func_dic:
func_dic[choice]()
else:
print('输入的指令不存在')
##### if choice == '1':
##### login()
##### elif choice == '2':
##### transfer()
##### elif choice == '3':
##### check_banlance()
##### elif choice == '4':
##### withdraw()
##### else:
##### print('输入的指令不存在')
修正
def login():
print('登录功能')
def transfer():
print('转账功能')
def check_banlance():
print('查询余额')
def withdraw():
print('提现')
def register():
print('注册')
func_dic = {
'0': ['退出', None],
'1': ['登录', login],
'2': ['转账', transfer],
'3': ['查询余额', check_banlance],
'4': ['提现', withdraw],
'5': ['注册', register]
}
func_dichttps://www.baidu.com')
get('https://www.cnblogs.com/linhaifeng')
get('https://zhuanlan.zhihu.com/p/109056932')
传参的方案二:
def outter(url):
##### url='https://www.baidu.com'
def get():
response=requests.get(url)
print(len(response.text))
return get
baidu=outter('https://www.baidu.com')
baidu()
cnblogs=outter('https://www.cnblogs.com/linhaifeng')
cnblogs()
zhihu=outter('https://zhuanlan.zhihu.com/p/109056932')
zhihu()
今日作业:
1、函数对象优化多分支if的代码练熟
2、编写计数器功能,要求调用一次在原有的基础上加一
温馨提示:
I:需要用到的知识点:闭包函数+nonlocal
II:核心功能如下:
def counter():
x+=1
return x
要求最终效果类似
print(couter()) ##### 1
print(couter()) ##### 2
print(couter()) ##### 3
print(couter()) ##### 4
print(couter()) ##### 5
周末作业
编写ATM程序实现下述功能,数据来源于文件db.txt
0、注册功能:用户输入账号名、密码、金额,按照固定的格式存入文件db.txt
1、登录功能:用户名不存在,要求必须先注册,用户名存在&输错三次锁定,登录成功后记录下登录状态(提示:可以使用全局变量来记录)
下述操作,要求登录后才能操作