作业要求:下述所有代码画图以及分析代码执行流程
1、以定义阶段为准,先画出名称空间的嵌套关系图
2、然后找到调用函数的位置,写出函数调用时代码的执行过程,涉及到名字的查找时,参照1中画好
的嵌套图,标明查找顺序,一层一层直到找到位置
===================题目一===================
input=333
def func():
input=444
func()
print(input)
答:func() ——> def func(): 代码块 ——> 局部变量input = 444 ——> print(input) 全局变量 input = 333(打印333)
===================题目二===================
def func():
print(x)
x=111
func()
答:func() ——> def func():代码块 ——> 全局变量:x =111 ——> print(x)
===================题目三===================
x=1
def func():
print(x)
def foo():
x=222
func()
foo()
答:foo() ——> 局部变量x = 222 ,func() ——> 全局变量x = 1 ,print(x)
===================题目四===================
input=111
def f1():
def f2():
# input=333
print(input)
input=222
f2()
f1()
答:f1() ——> f2() ——> e层:input = 222 ——> print(input)
===================题目五===================
x=111
def func():
print(x)
x=222
func()
答:报错,x = 222 被标记成局部变量,使用前没有被赋值
===================题目六===================
x=111
def foo():
print(x,)
def bar():
print(x)
foo()
bar()
答:foo() ——> 全局变量x = 111 ——> print(x) ——> bar() ——> x = 111 ——> print(x)
===================题目七===================
x=1
def func2():
func1()
x=2
def func1():
print(x)
x=3
func2()
答:x =1 ——> x = 2 ——> x = 3 ——> func2() ——> func1() ——> print(x)
===================题目八===================
1、如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名
2、针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能
def login():
global login_user
while not login_user:
with open('users.txt','r',encoding = 'utf-8') as f:
user = input('请输入入账号:').strip()
pwd = input('请输入密码:').strip()
for line in f:
user1,pwd1 = line.strip().split(':')
if user == user1:
if pwd == pwd1:
login_user = user
print('登陆成功')
return
else:
print('登陆失败')
break
else:
print('没有这个用户哦')
def look_at_it(user):
while not login_user:
login()
with open('db.txt','r',encoding = 'utf-8') as f1:
for line in f1:
user1, money = line.strip().split(':')
if user == user1:
print('余额为:{}'.format(money))
return
else:
print('没有这个用户哦')
login_user=None
login()
print(login_user)
look_at_it(login_user)