zoukankan      html  css  js  c++  java
  • 【Python学习】【第四节】【变量作用域】

    变量的作用域由变量的定义位置决定,在不同位置定义,作用域是不一样的,主要有局域变量和全局变量。

    一、局域变量

    在函数内部定义的变量,作用域仅限于局域内部。

    函数的参数也属于局域变量。

    二、全局变量

    除了在函数内部定义变量,python还允许在所有函数的外部定义变量,这样的变量称为全局变量。

    方式一:在函数体外定义的变量

    方式二:在函数体内,使用global var

    三、获取制定作用域范围中的变量

    1.globals(),函数返回一个包含全局范围内所有变量的字典,该字典中的每个键值对,键为变量名,值为该变量的值,并可对全局变量的值进行修改。

    a="你好"
    b="Hello"
    def text():
        print(a)
        print(b)
    print(globals()) #{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001F22163F3C8>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/00260573/Desktop/Python/time/12.py', '__cached__': None, 'a': '你好', 'b': 'Hello', 'text': <function text at 0x000001F2216F73A8>}

      globals()["a"]="您好"
      print(a)  #“您好”,a的值变化了

    2.locals()

    a="你好"
    b="Hello"
    def text():
        c="lucy"
        d="Lucas"
        print("函数内部的locals:%s"%locals())
    text() #函数内部的locals:{'c': 'lucy', 'd': 'Lucas'}
    print(
    "函数内部的locals:%s"%locals()) #函数外部的locals:{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000002CA9B8EF3C8>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/00260573/Desktop/Python/time/12.py', '__cached__': None, 'a': '你好', 'b': 'Hello', 'text': <function text at 0x000002CA9BA773A8>}

    在函数外调用locals()与globals()的作用一样

    注意,当使用 locals() 函数获得所有局部变量组成的字典时,可以向 globals() 函数那样,通过指定键访问对应的变量值,但无法对变量值做修改。例如:

    a="你好"
    b="Hello"
    def text():
        c="lucy"
        d="Lucas"
        locals()["c"]="lily"
        print(c)
    text()  #Lucy

    3.vars(object

    vars() 函数也是 Python 内置函数,其功能是返回一个指定 object 对象范围内所有变量组成的字典。如果不传入object 参数,vars() 和 locals() 的作用完全相同,传入object参数,与globals()的作用完全相同。

  • 相关阅读:
    python的正负无穷float("inf")的用法
    python中几个常见的黑盒子之“字典dict” 与 “集合set”
    python中几个常见的“黑盒子”之 列表list
    Python 排序---sort与sorted学习
    django中使用Profile扩展User模块(基于django 1.10版本下)
    获取Linux进程运行在哪个CPU内核上面的方法
    【转】Crontab定时任务配置
    【转】sudo命令情景分析
    【转】详解Python的装饰器
    一步步来配置安卓开发环境ADTBundle
  • 原文地址:https://www.cnblogs.com/yuhuang/p/12960803.html
Copyright © 2011-2022 走看看