名称空间与作用域
1. 定义域与名称空间解释
input = 333 # 定义全局变量input,赋值333 def func(): # 定义全局函数func input = 444 # 定义局部变量input,赋值444 func() # 调用全局函数func print(input) # 打印全局变量input的值 ''' 过程: 定义全局变量input,并将其赋值为333,调用全局函数func(),执行函数func() 定义全局函数func()内局部变量input,赋值444,无返回值,func()调用结束后, 销毁func(),只剩全局变量input=333,print输出为333 调用 ''' def func(): # 定义全局变量func() print(x) # 输出x x = 111 # 全局变量x赋值为111 func() # 调用函数func() ''' 过程: 定义全局函数func(),定义全局变量x,赋值为111,调用全局函数func(),函数定义输出x,但函数func()并无x,到全局名称空间去找,找到x=111 输出x=111''' x = 1 # 定义全局变量x,并赋值为111 def func(): # 定义全局函数func() print(x) # 输出x def foo(): # 定义全局函数foo() x = 222 # 定义局部变量x,赋值为222 func() # 调用全局函数func() foo() # 调用全局函数foo() ''' 过程: 定义全局变量x=1,调用全局函数foo(),执行函数foo(),定义函数foo(),内部局部变量x=222,调用全局''' input = 111 # 定义全局变量input=111 def f1(): # 定义全局函数f1() def f2(): # 定义局部函数f2() print(input) # 局部函数f2输出input input = 222 # 全局函数f1定义input=222 f2() # 调用局部函数f2 f1() # 调用全局函数f1 x = 111 # 定义全局变量x,赋值111 def func(): # 定义全局函数func(),无形参 print(x) # 输出x x = 222 # 定义局部变量x,赋值222 func() # 调用函数func() x = 111 # 定义全局变量x,赋值111 def foo(): # 定义全局函数foo(),无形参 print(x, ) # 输出x def bar(): # 定义全局函数bar(),无形参 print(x) # 输出x foo() # 调用全局函数foo() bar() # 调用全局函数bar() x = 1 # 定义全局变量x,赋值1 def func2(): # 定义全局函数func2(),无形参 func1() # 调用全局函数func1() x = 2 # 定义全局变量x,赋值2 def func1(): # 定义全局函数func1(),无形参 print(x) # 输出x x = 3 # 定义全局变量x,赋值3 func2() # 调用全局函数func2()
2. 实现登录成功记录下用户名
# 如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名login_user=None login_user = None def login(): account = input('请输入账号:') password = input('请输入密码:') if account == 'avery' and password == '123': print('登录成功') global login_user login_user = account else: print('登陆失败') return login_user print(login())
3. 针对查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能
login_user = None def login(): account = input('请输入账号:') password = input('请输入密码:') if account == 'avery' and password == '123': print('登录成功') global login_user login_user = account else: print('登陆失败,请重新输入') return login_user