首页 > 编程语言 >Pythonic魔法——命名空间

Pythonic魔法——命名空间

时间:2023-04-16 14:02:26浏览次数:47  
标签:Pythonic 变量 Python 魔法 空间 作用域 命名 变量名

什么是 Python 命名空间?

Python 命名空间是一个变量名和对象之间的映射,其中包含了所定义的函数、类和变量等的名称和值。在 Python 中,命名空间包括以下三种类型:

  1. 内置命名空间(built-in namespace): 它包含了 Python 中的内置函数和异常等,这些对象可以在任何时候直接访问,而无需导入任何模块。
  2. 全局命名空间(global namespace): 它在模块载入时创建,包含了模块中定义的所有函数、类和变量等。模块内的全局变量在模块内的所有函数和类中都是可见的。
  3. 局部命名空间(local namespace): 它在函数被调用时创建,包含了函数内定义的所有变量、函数和参数等。局部命名空间的变量只能在函数体内访问,当函数执行完后,该命名空间也被销毁。

其中,Python 命名空间的内存结构是以字典类型实现的,变量的名字作为键名,变量的值作为键值。Python 可以通过不同的命名空间进行变量的定位,保持不同的变量之间互不干扰,从而保证程序的正常运行。

变量名称解析规则

在 Python 中,当程序引用变量时,Python 解释器首先在当前作用域下查找该变量,如果当前作用域中没有找到该变量,则解释器会沿着作用域嵌套的方向向上查找,直到找到该变量或者到达顶层作用域。

具体来说,变量名称解析的顺序如下:

  1. 在局部命名空间中查找变量。
  2. 如果局部命名空间中没有找到变量,则会在当前作用域的上一级作用域中查找变量,即函数作用域或者模块作用域。
  3. 如果在模块作用域中也没有找到变量,则会在内置命名空间中查找。
  4. 如果仍然没有找到该变量,则抛出 NameError 异常。

变量的命名规则

在 Python 中,良好的命名规范有助于提高程序的可读性和可维护性。以下是 Python 变量命名的一些规则:

  • 变量名必须以字母或者下划线开头,不能以数字开头。
  • 变量名必须没有空格和特殊字符,如 @、$。
  • 变量名必须描述变量的作用,以便于程序的阅读和理解。
  • 变量名的长度应当合适,既不过长也不过短。
  • 变量名应当使用小写字母,常量则应采用大写字母表示。
  • 变量名的命名方式应当尽量遵循命名惯例,如使用驼峰式命名法等。

总结

Python 命名空间是 Python 程序中的一个基本概念,它为 Python 提供了灵活的变量赋值和访问等操作。在 Python 中,变量名称解析的顺序以及良好的命名规范都是程序正确运行的重要因素。因此,了解 Python 命名空间的使用规则以及遵循良好的变量命名规范都是 Python 编程的关键。

标签:Pythonic,变量,Python,魔法,空间,作用域,命名,变量名
From: https://blog.51cto.com/u_16072827/6193451

相关文章

  • stata 重命名
    rename批量重命名2.1圆括号与批量重命名rename(old1old2...)(new1new2...)[,options]将需要批量重命名的变量放置在第1对圆括号中,新的变量名放置在第2对圆括号中,这个操作方法比较简单粗暴,主要有以下几种应用场景:*将stat重命名成status,inc重命名成income,eq......
  • 批量改名高手软件批量重命名TXT文档文件的方法
    最近有很多朋友在问,如何管理文件?比如说各种形式的文件该怎么批量重命名呢?今天小编能给大家分享一个新的处理技巧,下面一起来试试。材料准备:一台Win系统的电脑安装一个文件批量改名高手文件素材若干步骤演示:步骤1:打开【文件批量改名高手】,在“文件批量重命名”中,单击“添加文件”步骤......
  • Midjourney魔法解锁:打造电商AI模特,实现无限场景换装
    在网上看到过下图这样一篇《模特不存在了》的帖子:是一个卖内衣的店主,通过Midjourney把石膏模特身上的衣服,穿到了AI生成的模特身上。网上看到的把石膏模特的内衣穿在了AI模特身上可以看到这张图片上左侧的衣服,几乎无差别的穿到了AI模特的身上。但这个帖子没有公布方法和技巧,那......
  • 对话ChatGPT:Prompt是普通人“魔法”吗?
    在ChatGPT、Midjourney、StableDiffusion等新事物的作用下,不少人或多或少听说过Prompt的概念。虽然OpenAI掀起的大模型浪潮再度刷新了人们对AI的认知,但现阶段的AI终归还不是强人工智能,大模型里的“知识”存储在一个隐性空间里,需要输给AI正确的指令,也就是过去几个月中频频被讨论的P......
  • C# Json序列化,设置驼峰命名(字段首字母小写)
    相关代码:varserializerSettings=newJsonSerializerSettings{//设置为驼峰命名ContractResolver=newCamelCasePropertyNamesContractResolver()};varresult=JsonConvert.Ser......
  • BFT最前线|商汤科技发布大模型—商量;昆仑万维将推出大模型天工;王小川大模型产品命名为
    原创|文BFT机器人01商汤科技发布大模型商量4月10日,商汤科技发布大语言模型——商量(SenseChat),其背后的AI大模型「日日新SenseNova」,寓意为“苟日新、日日新、又日新“。和ChatGPT有些类似,商量作为一款聊天助手,具有语言理解、支持问答、解决复杂问题、提供定制化建议、创......
  • 数据库命名规范
    字段命名使用英文字母、数字和下划线,多个单词之间用下划画分隔,禁止用大写,全部采用小写。字段名称一般采用名词或动宾组合:eg:user_nameis_good一般不超过三个单词最好给字段一个默认值,最好不能为null,字符型的默认值为一个空字符串,数值型的默认值为0,逻辑型的默认值为0在命......
  • 用驼峰的实体类接受命名不规范的响应参数
    参考资料地址:https://blog.csdn.net/qq_41143240/article/details/115671561使用JsonProperty注解importcom.alibaba.fastjson.JSON;importcom.fasterxml.jackson.annotation.JsonProperty;importlombok.Data;importjava.util.HashMap;/***用驼峰的实体类接受命......
  • C++逆向分析——友元、内部类、命名空间和static
    友元友元可以理解为:朋友、元素;老师认为这个友元是C++中的一个垃圾,因为友元的存在破坏了面向对象的封装性,不推荐使用,之所以有这个章节是因为有人不了解这个概念。注意:在一些新版本的C++编译器里面已经不再提供类似于友元这样的特性了。大家都知道在C++中对象的私有成员,外部是无......
  • AI助手帮你轻松做好Imagenet数据集重命名与复制
    AI助手帮你轻松做好Imagenet数据集重命名与复制任务需求我们对Imagenet数据集进行了水下的退化处理,保存的数据集所有图片的深度图,格式为.npy。但是命名存在一些问题,现有格式为:n02009912_1916.JPEG.npy,需要更改为n02009912_1916.npy,因此尝试用ChatGPT对数据集进行批量处理要求点......