zoukankan      html  css  js  c++  java
  • 函数---名称空间和作用域

    一.命名空间。

    二.作用域

    三函数的嵌套。

    今日新名词:
    
    1)globals()函数 查看全局作用域的内容;
    
    2)locals()函数 查看局部作用域的内容;
    
    3)global 方法 调用全局作用域的变量并获得修改权限;
    
    4)nonlocal 方法 调用局部作用域的变量并获得修改权限.

    一.命名空间.

    命名空间: 用来存放名字和值的关系的空间叫命名空间,我们的变量存储的时候就是存储再这片空间中

    命名空间的分类:
    1. 全局名称空间: 我们在py文件中自己写的变量, 函数..... 2. 内置名称空间: 我们python解释器提供好的一些内置内容(print, input....) 3. 局部名称空间: 在我们执行函数的时候.会产生一个局部名称空间. 放的是: 函数内部的内容(变量, 函数,类...)
    名称空间可能会有无数个, 局部名称空间而言. 相对是独立的.一般互不干扰

    取值顺序:
    1.局部命名空间  →→  2.全局命名空间  →→  3.内置命名空间                    

    二.作用域.

    作用域命名空间: 

    作用域就是作用的范围.分为两类:
    
    1.全局作用域:  包含内置和全局命名间,在整个文件的任何位置都可以使用(遵循从上到下的顺序)
    
    2.局部作用域: 在函数内部可以使用

    就是说,一个变量名如果是全局变量,那么它就是全局作用域; 

          如果是局部变量名(函数内),它就是局部作用域.

    1)查看全局命名空间内容的方法:globals()

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

    2)查看局部命名空间(变量名和函数信息)的方法:locals()

    print(locals())  #打印局部作用域中的内容

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

    3)修改全局变量的方法

    修改方法: global()    #修改后的变量,其他人再调用就是修改后的值

    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)函数的嵌套:

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

    6)函数的调用

    1.如果指定了函数的调用者,那么函数的返回值就会给调用者;  如果没有指定调用者,那么就只会执行函数体里面的内容

    2.函数名就相当于一个变量名,只有函数名加(),函数体才会执行.

    3.函数调用变量值的顺序:先查看本域  →→ 父级域 →→ 全局作用域. 

    函数---名称空间和作用域(相关练习)

  • 相关阅读:
    感悟
    shadow classification
    interpolation
    c语言调试技巧
    注册博客园
    用jQuery实现图片预加载和等比例缩小,大图可以点击关闭
    焦点图,带数字显示,支持常见浏览器
    又一个jquery轮播效果,焦点图,带数字显示序号,这个可以添加对应标题在图片上,支持主流浏览器
    纯css下拉菜单,支持CSS3圆角
    Jquery 下拉菜单,可以设置颜色,支持CSS3圆角
  • 原文地址:https://www.cnblogs.com/lgw1171435560/p/10084376.html
Copyright © 2011-2022 走看看