python 作用域与命名空间

作用域

作用域分为:

  1. 全局作用域
  2. 局部作用域

在函数内部的作用域叫做局部作用域,局部作用域中的变量叫做局部变量

非函数内部的作用域叫做全局作用域,全局作用域中的变量叫做全局变量

局部作用域可以使用全局变量,全局变量不能试用局部变量

变量的使用规则: 从内向外,找到后返回

  1. 函数作用域中命名全局变量global
def fn():
	global 变量 # 现在改变量为全局变量
# 注意:不可以在函数中先使用一个全局变量后在用该变量命名局部变量
报错:
    a = 1 
    def fn():
        print(a) # 全局变量
        a += 1 # 这个a是局部变量 
        
  1. 在函数或其他作用域中使用或修改上一层(非全局)变量nonlocal
a = 1 
def fn1():
    a = 2 
    def fn2():
        a = 3  # a = 4 
        def fn3():
            nonlocal a 
            a = 4 
报错:
    b = 1 
    def fn():
        nonlocal b            

命名空间

命名空间: python中的所有变量都被存储在命名空间内,每个作用域都有一个命名空间
		命名空间本质就是一个字典,是用来存储变量的字典
locals():获得挡前作用域的命名空间

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 作用域与命名空间 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 变量与数据类型

    注释 单行注释 语法:# 注释的内容 说明多行代码的功能时,一般将注释写在代码的上一行 # 打印hello print(hello) print(hello) print(hello) 说明单行代码时,一般写在右边 print(1+2) # 加法运算 变量 先定义后使用 变量名规则: 变量名只能是字母、数字或者下划线的任意组合,且不能是数字开头 变量名不能取…

    Python开发 2023年4月2日
    00
  • 序列类型

    序列类型 字符串 由很多个字符组成的字符序列,字符串属于 **序列类型 序列简介 数值类型:可以表示 数字,数值 int float bool 序列类型:存储多个数据的一种数据类型 str : 可以存储数字,字母,特殊符号,中文等数据.表现形式为 一对引号包囊起来的数据 list 列表 tuple 元组 数据结构:在编程语言中将会某种方式组合起来的数据元素集…

    Python开发 2023年4月2日
    00
  • 用户的交互

    用户的交互 用户交互:人往计算机中 input/输入数据,计算机print/输出结果 input 输入 输入input:程序执行input,程序就会停止下来等待用户键盘输入,用户输入的任何内容,都会被存为字符串。 默认存储的类型是字符串类型 print 输出 print(‘hello’) # 输出单个值 print(a, b) # 输出多个值,值用逗号隔开,…

    Python开发 2023年4月2日
    00
  • python数据类型

    序列类型 str 字符型 list 列表 tuple 元组 列表与元组最大的区别就是列表可变,而元组不可变 遍历 从头到尾,依次访问到每一个 range() 包头不包尾 range(start,end,step) start 开始 end 结束 step 步长(步长可以是负数) 下标(索引) 序列类型有下标 # 正向下表 默认第一个为0 第二个为1 … …

    Python开发 2023年4月2日
    00
  • 流程控制

    流程控制 顺序结构:程序从头到尾顺序依次执行每一个 分支结构:判断看看程序往哪个方向走 循环结构:程序会循环,不断地重复执行同一段代码 分支结构 if语句 if 如果 elif 否则如果 # 可多个 可0个 else 否则 # 从上往下判断,如果为true了就不会再往下执行 可嵌套 if ture: if a = 1 : # 嵌套的 else : # 都为嵌…

    Python开发 2023年4月2日
    00
  • python 模块、原始字符串

    模块 三种方法: import from 模块 import 成员,成员 from 模块 import * *代表所有的成员 隐藏成员: 模块中以下划线_开头的属性 隐藏成员不会被from 模块 import * 导入 导入模块时会将模块的代码全部执行 as 取别名 from module01 import f as f1 模块变量 __file__ : 模…

    Python开发 2023年4月2日
    00
  • 普通函数、参数、匿名函数、高阶函数、递归函数、闭包、装饰器

    函数 定义 # 定义函数 def fn(): print(“这是函数内部”) # 调用 fn() fn() # 区分 fn: 这是真正意义上的函数本身 fn(): 这是调用函数 参数 形参 实参 函数参数可有可无,要看具体使用 形参是定义函数的参数 实参就是调用函数时需要传递的参数,函数有多少个形参就要传递多少个实参 形参的 默认值参数 形参里面可以设置默认…

    Python开发 2023年4月2日
    00
  • python 生成器与迭代器

    生成器 生成器: 节省空间 # generator 生成器 f = [i for i in range(1,1001)] # 列表 f = (i for i in range(1,1001)) # 生成器 在创建列表是,会在内存中全部创建出来,而生成器不会全部创建出来,而是使用一个就创建一个,结束后会被当垃圾回收掉 # 垃圾回收机制 只要符合没有被对象引用,…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部