社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

VB / Python / SQL 三语言对照

GISAI • 1 周前 • 78 次点击  


 


ArcGIS

编程语法规范速览

VB / Python / SQL 三语言对照


 


日常开发 / 语法避坑 / 字符规范


一、三种语言的角色定位

ArcGIS 的二次开发与日常数据处理依赖三种语言,适用场景各不相同。

语言

应用场景

ArcGIS 模块

Python (ArcPy)

推荐方案;ArcGIS Pro 标准自动化脚本,跨平台

ArcGIS Pro Python 控制台、ArcPy 模块

VBA / VB

ArcMap 时代的经典桌面脚本(已被 Python 替代)

ArcMap VBA 编辑器

SQL

企业级地理数据库直接查询;定义查询;空间 SQL

Query Layers、ArcSDE、ST_Geometry

建议: 新项目一律采用 Python + ArcPy 方案;SQL 用于企业级数据库直接读写。



 


二、大小写敏感性

语言

是否区分大小写

示例

Python

严格区分

arcpy.SelectLayerByAttribute() ≠ arcpy.selectLayerByAttribute()

VB

不区分

SELECT = Select = select(关键字相同)

SQL

通常不区分(关键字层面)

WHERE = where(关键字相同)

其中: 文件地理数据库 / 企业数据库 SQL 关键字不区分大小写,但字段名是否区分与平台有关。

Oracle: 表名、字段名不区分大小写,但内容区分

PostgreSQL / SQL Server: 均为小写形式存储,需使用双引号保留原始大小写

实战注意: Python 中 ArcPy 函数和参数名称严格区分大小写。使用代码补全工具可以避免拼写错误。

import arcpy

# 正确: 函数名首字母大写

arcpy.analysis.Buffer("roads", "roads_buf", "100 Meters")


 


# 函数名拼写错误会抛 NameError 或 AttributeError



 


三、引号使用规则

3.1 数字不加引号,字符串加引号

三类语言都遵循此通用规则。

# 正确: 数字不加引号

arcpy.analysis.Buffer("roads", "roads_buf", 100)  # 100 是数值


 


# 注意: 部分工具需要字符串参数时反而会报错

3.2 三种语言对字符串引号的不同要求

语言

规定

示例

SQL

单引号 (') 包裹字符串

SELECT * FROM cities WHERE name = 'Beijing'

VB

一定双引号 (")

arcpy.SelectLayerByAttribute_management "cities" "NEW_SELECTION" ""NAME" = 'Beijing'"

Python

单引号或双引号均可,建议统一

name = 'Beijing' 或 name = "Beijing"

3.3 嵌套引号的处理

当字符串内部需要包含引号时,需要转义或使用不同引号。

# Python: 用反斜杠转义或换用另一种引号

label = "He's a student"   # 双引号包裹,内部单引号


 


# SQL: 字符串内嵌引号用两个连续单引号

SELECT * FROM cities WHERE name = 'O''Brien'



 


四、半角字符与全角字符

重要原则: ArcGIS 编程语言要求使用半角字符(英文标点),而不是全角字符(中文标点)。全角符号会导致 SyntaxError 或语法解析失败。

4.1 容易混淆的字符对照

类别

半角(正确)

全角(错误)

逗号

,

括号

()

()

引号

' "

' "

冒号

:

分号

;

空格

ASCII 空格 U+0020

全角空格 U+3000

4.2 典型错误案例

坑:复制粘贴导致全角: 从网页、Word、PDF 复制的代码经常带入全角符号,例如中文逗号 ',' 或全角冒号 ':' 在 Python 中会被当作非法字符而直接报错。

# 错误: 使用了全角逗号(Chinese comma)

arcpy.analysis.Buffer("roads","roads_buf",100)  # SyntaxError


 


# 正确: 全部使用半角符号

arcpy.analysis.Buffer("roads", "roads_buf", 100)

4.3 调试方法

将代码复制到记事本(或 Notepad++),使用「显示所有字符」功能

在编辑器中将字体设置为 Consolas / Courier New,便于区分全角与半角

使用专业代码编辑器(VS Code、PyCharm)的高亮提示功能

若提示 invalid character,首先检查不可见字符:制表符、空格、零宽字符



 


五、语法错误排查技巧

5.1 常见错误信号

错误信息

常见原因

排查方向

SyntaxError

标点符号错误(中文/全角)、括号不匹配

逐字符核对括号、逗号、引号

IndentationError

缩进不一致或混入 Tab 与空格

编辑器中显示空格和 Tab,统一为 4 空格

NameError

变量名拼写错误、大小写错误

检查变量定义和大小写

AttributeError

ArcPy 函数或参数名拼写错误

用 arcpy.提示确认函数名

TypeError

参数类型不匹配(字符串当作数字)

使用 str() / int() 转换

5.2 标准排查流程

出现语法错误,建议按以下流程排查:

第一步: 将代码复制到记事本,仔细观察每一个标点

第二步: 用开发工具重新输入,避免隐藏字符干扰

第三步: 从最小可运行代码开始,逐段添加定位问题

第四步: 使用 print() / arcpy.AddMessage() 打印中间结果

第五步: 对比 Esri 帮助文档中的官方示例确认语法

5.3 三语言对照速记

要点

Python

VB

SQL

大小写

严格

不区分

大多不区分

字符串引号

单/双均可

必须双

必须单

嵌套引号

\' \  或混用

连续 ""

连续 ''

注释符号

# 单行

' 或 Rem

-- 单行 / /* */ 多行

数组/列表

[ 1, 2, 3 ]

无内建数组

IN(1,2,3) 或子查询

— 文档结束 —


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/199571