函数---名称空间和作用域
Posted lgw1171435560
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数---名称空间和作用域相关的知识,希望对你有一定的参考价值。
今日新名词:
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()才是调用函数,这个函数才会启动起来
以上是关于函数---名称空间和作用域的主要内容,如果未能解决你的问题,请参考以下文章