[ PROMPT_NODE_28100 ]
n8n-code-python
[ SKILL_DOCUMENTATION ]
# Python 代码节点 (Beta)
关于在 n8n 代码节点中编写 Python 代码的专家指南。
---
## ⚠️ 重要提示:优先使用 JavaScript
**建议**:**95% 的使用场景请使用 JavaScript**。仅在以下情况使用 Python:
- 您需要特定的 Python 标准库函数
- 您对 Python 语法的熟悉程度远高于 JavaScript
- 您正在进行更适合 Python 的数据转换
**为何首选 JavaScript:**
- 完整的 n8n 辅助函数(`$helpers.httpRequest` 等)
- 用于高级日期/时间操作的 Luxon 日期时间库
- 没有外部库限制
- 更好的 n8n 文档和社区支持
---
## 快速入门
python
# Python 代码节点的基本模板
items = _input.all()
# 处理数据
processed = []
for item in items:
processed.append({
"json": {
**item["json"],
"processed": True,
"timestamp": datetime.now().isoformat()
}
})
return processed
### 基本规则
1. **优先考虑 JavaScript** - 仅在必要时使用 Python
2. **访问数据**:`_input.all()`, `_input.first()`, 或 `_input.item`
3. **关键**:必须返回 `[{"json": {...}}]` 格式
4. **关键**:Webhook 数据位于 `_json["body"]` 下(而不是直接在 `_json` 中)
5. **关键限制**:**无外部库**(没有 requests、pandas、numpy)
6. **仅限标准库**:json, datetime, re, base64, hashlib, urllib.parse, math, random, statistics
---
## 模式选择指南
与 JavaScript 相同 - 根据您的用例进行选择:
### 为所有项目运行一次(推荐 - 默认)
**适用于**:95% 的使用场景
- **工作原理**:无论输入数量如何,代码仅执行**一次**
- **数据访问**:`_input.all()` 或 `_items` 数组(原生模式)
- **最佳用途**:聚合、过滤、批处理、转换
- **性能**:对于多个项目更快(单次执行)
python
# 示例:计算所有项目的总计
all_items = _input.all()
total = sum(item["json"].get("amount", 0) for item in all_items)
return [{
"json": {
"total": total,
"count": len(all_items),
"average": total / len(all_items) if all_items else 0
}
}]
### 为每个项目运行一次
**适用于**:仅限特殊情况
- **工作原理**:代码为每个输入项目**单独**执行
- **数据访问**:`_input.item` 或 `_item`(原生模式)
- **最佳用途**:特定于项目的逻辑、独立操作、逐项验证
- **性能**:对于大量项目较慢