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

    #命名空间

      内置命名空间

        是随着python解释器的启动随之加载到内存中,不需要任何第三方的干扰  

        是python解释器内置的

      全局命名空间

        是个人所写的所有代码的变量或者函数

        它可以在全局或者局部读取运行

      局部命名空间

        是个人写在函数内部的代码,只可以在调用这个函数使用

        随着这个函数的结束也将从内存中释放掉

    命名的变量名字可以是任何(部分不可以)关键字,

    例子:def input():

      print(‘ssss’)

    input()

    局部空间找不到的代码会去全局找 全局找不到的会去内置找 内置找不到会报错    然而内置不能去全局或者全局去局部找,更不能跳级找

      

    作用域

      全局作用域

        它可以调用全局或者内置的函数或者变量

        ‘global’  #声明全局变量   #:‘globals’查找全局变量  不管把它放在函数内部或者外部都是查找全局变量

      局部作用域

        它只能调用这个函数本身的函数或者变量

          ‘nonlocal’ #  :它是声明局部变量  ’locals‘  #把它放在某个函数内部才查找某个函数内部所有变量  如果把它放在全局位置则它查找全局变量

          ’locals‘和’globals‘这俩方法不经常用 需要知道它

    例子:

    a = 1        
    b = 2
    def func():
    x = 'sss'
    y = 'fff'
    print(locals())
    print(globals())
    func()
    print(locals())
    print(globals())

      #  作用域:

    对于不可变类型如:str int bool complex 的全局类型如果想修改必须加global 而对于可变类型如:dict list set 元祖中嵌套的可变的类型不用加个global 即可直接修改

  • 相关阅读:
    批处理文件双击运行成功,程序调用却运行失败解决方案
    前端安全之加解密种类与HTTPS加密原理(二)
    node包管理nvm与pnpm(一)
    React状态管理—reduxAPI原理分析(三)
    动态规划原理与算法实践(二)
    双指针算法基本原理和实践(一)
    分治算法基本原理和实践(三)
    编程范式(一)
    Java基础
    前端模块化CommonJS、AMD、CMD、ES6模块(二)
  • 原文地址:https://www.cnblogs.com/yuexijun/p/9745686.html
Copyright © 2011-2022 走看看