Py学习  »  Python

VB / Python / SQL 三语言对照

GISAI • 2 周前 • 91 次点击  


 


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