函数---名称空间和作用域

今日新名词:

1)globals()查看全局作用域的内容;

2)locals()查看局部作用域的内容;

3)global() 调用修改全局作用域变量的权限;

4)nonlocal()调用修改局部作用域变量的权限.

=====================================================================

1)查看全局作用域中的内容:包括名字和对应的值

print(globals())  #查看全局作用域的内容  包括(内置名称空间+全局名称空间)

2)查看局部作用域中的内容:

print(locals())  #查看当前作用域中的内容

#全局不允许查看调用局部的内容;但局部允许查看调用全局的内容

===============================================================

3)修改全局变量的方法

修改方法: global()    # 注意跟查看全局作用域的方法globals()就查一个字母s,修改后的变量后面其他人调用全局的它都是这个值

flag = False
def login(): #创建个函数
    global flag   #获取修改这个变量的权限
    uname = input("用户名:") #用户登陆
    upwd = input("密码:")
    if uname == "alex" and upwd == "123":
        flag = True   #如果登陆成功就修改全局的变量
    else:
        flag = False  #如果不成功,保持原样

def fatie():   #发帖需求
    if flag == True:   #只有上面登陆成功了,才会修改全局变量,才可以发帖
        print("可以发帖")
    else:   #查看到没有被修改就提示它,去登陆
        print("滚去登录")

login()  
fatie()
fatie()

4)修改局部变量的方法:

nonlocal()     #寻找离他最近的一个变量,只在局部作用域范围内,调用后,就可从新赋值,并且作用于调用的局部内(从哪调的,作用于哪)但是它永远不着全局,局部找一遍没有,就报错.

a= 50
def funcl():
    a = 10
    def funce2():
        nonlocal a  #不找全局
        a+=20
        print("最里面的",a)
    funce2()
funcl()
输出结果为:最里面的 30

5)函数的嵌套:

函数里查找并使用变量的顺序:自己,上一层,上一层,上一层,直到内置作用域,没有就报错

6)函数的调用

就记住一点就行,def name() 只是创建了个函数,没有被调用就是空,摆设;只有name()才是调用函数,这个函数才会启动起来  

猜你喜欢

转载自www.cnblogs.com/lgw1171435560/p/10084376.html