当前位置: 首页 > news >正文

2025-10-08 Python 标准库 3——内置常量

文章目录

  • 1. 内置常量
    • 1.1. `False`
    • 1.2. `True`
    • 1.3. `None`
    • 1.4. `NotImplemented`
    • 1.5. `Ellipsis`
    • 1.6. `__debug__`
  • 2. `site`模块添加的常量
    • 2.1. `quit(code=None)` / `exit(code=None)`
    • 2.2. `help`
    • 2.3. `copyright`
    • 2.4. `credits`
    • 2.5. `license`
  • 3. 注意事项与总结

在Python中,有一批特殊的值被称为“内置常量”——它们无需导入任何模块,直接存在于内置命名空间中,是Python语言底层提供的基础值。这些常量分为两类:一类是核心功能依赖的 核心内置常量,另一类是 site模块自动添加的 交互式专用常量(仅用于解释器交互场景)。

参考文档:内置常量 — Python 3.13.7 文档

1. 内置常量

这类常量是Python语法和核心功能的一部分,贯穿于日常开发中,必须理解其本质和限制。

1.1. False

  • 定义:布尔(bool)类型的“假值”,是所有逻辑判断中“否定”状态的基础表示(如2 > 3的结果就是False)。
  • 关键限制赋值非法——任何试图给False赋值的操作(如False = 0)都会直接引发SyntaxError,它是不可修改的“真正常量”。

1.2. True

  • 定义:布尔(bool)类型的“真值”,对应逻辑判断中“肯定”状态(如2 < 3的结果就是True)。
  • 关键限制:与False完全一致,赋值非法,会引发SyntaxError,不可修改。

1.3. None

  • 定义:代表“空值”的特殊对象,常用于表示“无结果”“未赋值”或“默认空参数”。例如:
    • 函数未指定返回值时,默认返回None(如def func(): pass,调用func()得到None);
    • 函数参数的默认值设为None,表示“未传入该参数”(如def add(a, b=None): ...)。
  • 类型特性NoneNoneType类型的唯一实例——也就是说,世界上只有一个None,判断“是否为空”推荐用is None(而非== None)。
  • 关键限制赋值非法,会引发SyntaxError,不可修改。

1.4. NotImplemented

  • 定义:用于“双目运算特殊方法”(如__eq__(等于)、__lt__(小于)、__add__(加法))或“原地双目运算特殊方法”(如__imul__(原地乘法)、__iand__(原地与运算))的返回值,表明“当前方法未实现对其他类型的支持”。
  • 行为逻辑:当解释器看到方法返回NotImplemented时,会尝试“反射操作”——比如a + b调用a.__add__(b)返回NotImplemented,则解释器会再尝试b.__add__(a);若所有尝试都返回NotImplemented,则引发TypeError(如1 + "2"会报错)。
  • 版本变更(3.9+):在布尔上下文中求值(如if NotImplemented:)已被弃用,目前虽会返回True,但会触发DeprecationWarning;未来版本将直接引发TypeError,务必避免此类用法。
  • 特别提醒不可与NotImplementedError混淆
    • NotImplemented是“常量”,用于方法返回,告诉解释器“该运算没实现”;
    • NotImplementedError是“异常”,用于主动抛出,表示“方法本身没被实现”(如def func(): raise NotImplementedError)。

1.5. Ellipsis

  • 定义:与省略号字面值...完全等价,常用于表示“省略内容”或“多维切片”(典型场景是NumPy,如arr[..., 0]表示取最后一维的第0个元素)。
  • 类型特性Ellipsistypes.EllipsisType类型的唯一实例
  • 赋值差异:可对Ellipsis赋值(如Ellipsis = 1,但强烈不推荐),但对...赋值(如... = 1)会引发SyntaxError

1.6. __debug__

  • 定义:布尔值常量,由Python启动方式决定:
    • 未用-O(优化)选项启动时,__debug__True
    • -O选项启动时,__debug__False(此时assert语句会被自动忽略)。
  • 核心关联assert语句的本质是“if __debug__: 检查表达式,不满足则抛AssertionError”——这也是为什么-O模式下assert会失效(因为__debug__False,整个assert块被跳过)。
  • 关键限制赋值非法,会引发SyntaxError,不可修改。

2. site模块添加的常量

site模块是Python启动时自动导入的(除非用-S命令行选项跳过),它会向内置命名空间添加一批常量——这些常量仅为了方便“交互式解释器”(如Python Shell、IPython)的使用,绝对不推荐在程序代码中依赖(如脚本、项目代码)。

2.1. quit(code=None) / exit(code=None)

  • 功能:交互式环境中快速退出解释器。
  • 行为细节
    • 直接打印对象(如输入quit并回车):显示提示信息Use quit() or Ctrl-D (i.e. EOF) to exit
    • 作为函数调用(如quit()exit(0)):引发SystemExit异常,code为退出码(默认None,对应退出码0,表示正常退出)。
  • 使用警告:程序代码中退出应使用sys.exit()(需导入sys模块),而非quit()——因为site模块可能被-S选项跳过,导致quit()未定义。

2.2. help

  • 功能:调用Python内置的帮助系统,查询语法、函数、类的文档。
  • 行为细节
    • 直接打印对象(如输入help并回车):显示提示信息输入 help() 可获取交互式帮助,或输入 help(object) 查看特定对象的帮助信息
    • 调用方式:
      • 输入help():启动交互式帮助界面(可输入关键词查询);
      • 输入help(str):查看str类的详细文档;
      • 输入help(print):查看print函数的用法。

2.3. copyright

  • 功能:查看Python的版权信息。
  • 使用方式:直接打印(print(copyright))或调用(copyright()),都会输出Python的版权文本(如“Copyright © 2001-2025 Python Software Foundation”)。

2.4. credits

  • 功能:查看Python项目的贡献者信息。
  • 使用方式:直接打印(print(credits))或调用(credits()),输出所有为Python开发做出贡献的人员名单。

2.5. license

  • 功能:查看Python的许可证协议(Python Software Foundation License v2)。
  • 行为细节
    • 直接打印对象(如输入license并回车):显示提示信息Type license() to see the full license text
    • 调用(license()):以分页形式(一屏显示完后按回车继续)展示完整的许可证文本。

3. 注意事项与总结

  1. 区分“真正的常量”NoneFalseTrue__debug__这四个常量绝对不能赋值,任何赋值操作都会引发SyntaxError,开发中需视为“只读值”。
  2. NotImplemented的正确场景:仅在自定义类的“双目运算特殊方法”(如__add__)中返回,不可用于布尔判断(如if result is NotImplemented是合理的,if result则不合理),更不能替代NotImplementedError
  3. site模块常量的边界:仅限交互式解释器使用,程序代码中应避免——比如退出用sys.exit(),查帮助用help()函数(虽help来自site,但help()本身是内置函数,可安全使用)。
  4. 版本兼容性:若项目需兼容Python 3.9+,需注意NotImplemented在布尔上下文的弃用问题,避免写出未来会报错的代码。
http://www.dtcms.com/a/459213.html

相关文章:

  • 小企业网站维护什么东西网站制作南宁
  • 可以做猫头像的网站安装2个wordpress
  • 工业元宇宙:数字孪生开发框架设计精髓
  • 企业网站管理的含义及内容免费高清大图网站
  • 站长之家官网查询专门做超市dm网站
  • 网站做备案关于科技的名言
  • 北京门户网站制作公司做网站赚钱容易吗
  • 平台网站功能彩票网站制作
  • 网站服务器有哪些类型有哪些类型有哪些类型有哪些类型抚州建设公司网站
  • PerfTest 分布式集群测试实战,让压测回归简单
  • java oom排查
  • 咨询学校网站开发费用做外贸网站信息
  • wordpress发布文章提示失败厦门网站优化公司
  • 网站 系统设置如何做优化网站排名
  • 网站备案填了虚假座机能过吗上海制作公司
  • 毕业设计心理评测网站开发高密专业网站建设价格
  • 珠宝销售网站源码wordpress网站如何添加栏目
  • 深圳龙华网站开发手游代理平台哪个好
  • 江苏专业做网站的公司有哪些百度seo排名优化联系方式
  • 如何做网站搜索栏网站建设流程方案
  • 学校网站系统破解版中国企业网
  • 微信公众号自己微网站吗有哪些可以做兼职的翻译网站
  • 精品课程网站建设步骤培训网站开发需求说明书
  • 小型网站制作深圳wordpress前端新增头像上传
  • 优秀国外网站设计赏析网站怎样做全国地区推广
  • 淘宝网站那个做的营销型网站建立
  • 徐州祥云做网站网络营销公司如何建立
  • 公司网站首页模板网站改版专题页
  • 桂林市生活网官方网站普陀网页设计
  • 网站无障碍建设百度seo权重