一:复习巩固题
1、以下格式自行推导至少10遍
def index(*x,**y):
print(x,y)
def wrapper(*args,**kwargs): # args=(1,2) kwargs={"a":1,"b":2}
index(*args,**kwargs) # index(1,2,a=1,b=2)
# index(*(1,2),**{"a":1,"b":2}) # index(1,2,a=1,b=2)
wrapper(1,2,a=1,b=2)
2、练习把参数包给函数10遍
步骤一:准备好一个函数,该函数体代码需要一个参数
def func():
print(x)
步骤二:包值
x = 2
def func():
print(x)
步骤三:闭到outter函数内
def outter():
x = 2
def func():
print(x)
步骤四:基于return将内部func返回到全局
def outter():
x = 2
def func():
print(x)
return func # 一定不要加括号
f=outer()
步骤五:最终格式,把outter写活
def outter(x):
# x = 2 # 注释掉
def func():
print(x)
return func
f1=outer(1) # 把x=1包给函数func
f2=outer(2) # 把x=2包给函数func
f3=outer(3) # 把x=3包给函数func
def outer(x):
def func():
print(x)
return func
outer(4)()
# 二:作业要求:下述所有代码画出名称空间嵌套图以及分析代码执行流程
# 1、以定义阶段为准,先画出名称空间的嵌套关系图
# 2、然后找到调用函数的位置,写出函数调用时代码的执行过程,涉及到名字的查找时,参照1中画好
# 的嵌套图,标明查找顺序,一层一层直到找到位置
# ===================题目一===================
input=333
def func():
input=444
print(input)
func()
print(input)
input=333为全局变量,函数调用时,打印input为局部变量,同级查找存在input =444,故调用函数打印值444,最后打印input为全局变量,全局变量往上找,打印333
# ===================题目二===================
def func():
print(x)
x=111
func()
定义函数,print的打印的x是局部变量,同级未找到,调用函数前,定义全局变量x=111,故打印111
# ===================题目三===================
x=1
def func():
print(x)
def foo():
x=222
func()
foo()
并列定义2个函数,func和foo,调用foo,转而调用foo(),print的x为局部变量,局部无x变量,向上寻找,全局变量x=1,故打印1
# ===================题目四===================
input=111
def f1():
def f2():
# input=333
print(input)
input=222
f2()
f1()
嵌套定义的函数f1,f2,全局变量input=111,调用f1,结果为调用f2,打印input时,同级有333,若无333,则外函数有222,若无222,全局有111,若无111,内置有input功能
# ===================题目五===================
x=111
def func():
print(x) #
x=222
func()
x=111为全局变量,定义函数func,调用函数,打印x,同级寻找在print下一行有给x赋值,但是要求先赋值再调用,报错
# ===================题目六===================
x=111
def foo():
print(x,)
def bar():
print(x)
foo()
bar()
全局变量x,两个并列的函数,调用函数时,局部变量都无x,都调用的全局变量,打印的都是111
# ===================题目七===================
x=1
def func2():
func1()
x=2
def func1():
print(x)
x=3
func2()
x 为全局变量,func1和func2并列,调用函数func2,转而取值func1(),打印3
# ===================题目八===================
1、如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名
login_user=None
while not login_user:
name = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
def login(user,psw):
if user =='aa' and psw =='123':
global login_user
login_user = user
print('登录成功')
else:
print('登录失败')
login(name,password)
2、针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能
login_user=None
while not login_user:
name = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
def login(user,psw):
if user =='aa' and psw =='123':
global login_user
login_user = user
print('登录成功')
else:
print('登录失败')
login(name,password)
def check(user):
with open('db.txt','r+',encoding='utf-8') as f:
for i in f:
if user in i:
user_info = i.strip().split(':')
money = user_info[2]
print('{}账户余额为{}'.format(user,money))
check(login_user)
day13作业
最新推荐文章于 2024-04-29 17:36:23 发布