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

python 源码中 PyId_stdout 如何定义的

python 源代码中遇到一个变量名 PyId_stdout,搜不到在哪里定义的,如下只能搜到引用的位置(python3.8.10):
在这里插入图片描述
找了半天发现是用宏来构造的声明语句:

// filepath: Include/cpython/object.h
typedef struct _Py_Identifier {struct _Py_Identifier *next;const char* string;PyObject *object;
} _Py_Identifier;#define _Py_static_string_init(value) { .next = NULL, .string = value, .object = NULL }
#define _Py_static_string(varname, value)  static _Py_Identifier varname = _Py_static_string_init(value)
#define _Py_IDENTIFIER(varname) _Py_static_string(PyId_##varname, #varname)

实际定义 PyId_stdout 的位置在:

// filepath: Python/pythonrun.c
_Py_IDENTIFIER(builtins);
_Py_IDENTIFIER(excepthook);
_Py_IDENTIFIER(flush);
_Py_IDENTIFIER(last_traceback);
_Py_IDENTIFIER(last_type);
_Py_IDENTIFIER(last_value);
_Py_IDENTIFIER(ps1);
_Py_IDENTIFIER(ps2);
_Py_IDENTIFIER(stdin);
_Py_IDENTIFIER(stdout);
_Py_IDENTIFIER(stderr);
_Py_static_string(PyId_string, "<string>");
http://www.lryc.cn/news/99943.html

相关文章:

  • Mybatis映射关系mybatis核心配置文件
  • Mybatis中limit用法与分页查询
  • libcomposite: Unknown symbol config_group_init (err 0)
  • Spring Tool Suite 4
  • 带你读论文第三期:微软研究员、北大博士陈琪,荣获NeurIPS杰出论文奖
  • 农业中的计算机视觉 2023
  • 掌握三个基础平面构成法则 优漫动游
  • 叶工好容5-日志与监控
  • Dubbo 指定调用固定ip+port dubbo调用指定服务 dubbo调用不随机 dubbo自定义调用服务 dubbo点对点通信 dubbo指定ip
  • BCNet论文精读
  • PHP8的注释-PHP8知识详解
  • 优化企业集成架构:iPaaS集成平台助力数字化转型
  • 前端存储之sessionStorage和localStorage
  • 上海亚商投顾:沪指放量大涨1.84% 证券股掀涨停潮
  • 微服务划分的原则
  • 作业 - 3
  • MTK联发科安卓核心板MT8385(Genio 500)规格参数资料_性能介绍
  • ChatGPT付费创作系统小程序端开发工具提示打开显示无法打开页面解决办法
  • CVPR2023新作:pix2pix3D
  • Django自定义用户错误记录
  • Abaqus 导出单元刚度矩阵和全局刚度矩阵
  • Pytorch(一)
  • 图数据库Neo4j学习三——cypher语法总结
  • 2023杭电多校第一场部分题解
  • 算法38:反转链表【O(n)方案】
  • redis基本架构:一个键值数据库包含什么?(这篇文章主要是一个引导的作用)
  • HIS信息管理系统 HIS源码
  • 微信小程序之富文本那些事
  • kaggle新赛:RSNA 2023 腹部创伤检测大赛赛题解析(CV)
  • 【JavaEE初阶】Servlet (二) Servlet中常用的API