Python 基础语法速通

第 1 章:心智模型

先接受三件事:动态类型、缩进定块、文件即模块。其余语法都挂在这上面。

01动态类型 vs 静态类型

Python 默认运行期才确定类型;Kotlin / ArkTS 在编译期就拦住类型错误。

Python
name = "Ada"      # 运行时才是 str
name = 42          # 合法:变量可改绑到 int
print(type(name))  # <class 'int'>
Kotlin
var name: Any = "Ada"
name = 42          // 需要 Any / 换类型才行
println(name)
ArkTS
let name: string | number = "Ada";
name = 42;         // 联合类型才允许
console.info(name);
Python 可以「先写后验」。类型注解(下一章)是可选护栏,不是编译器硬门槛。

02缩进 = 代码块

没有大括号;同一层级必须同一缩进(推荐 4 空格)。

Python
if True:
    print("in block")
    print("same indent")
print("out")
Kotlin
if (true) {
    println("in block")
    println("same braces")
}
println("out")
ArkTS
if (true) {
  console.info("in block");
  console.info("same braces");
}
console.info("out");
混用 Tab / 空格会 IndentationError。编辑器开「显示空白」最省事。

03文件即模块

一个 .py 文件就是一个模块;包是带 __init__.py(或命名空间包)的目录。

Python
# math_utils.py
def add(a, b):
    return a + b

# main.py
from math_utils import add
print(add(1, 2))
Kotlin
// MathUtils.kt
fun add(a: Int, b: Int) = a + b

// 同模块或 import
import com.example.add
ArkTS
// MathUtils.ets
export function add(a: number, b: number): number {
  return a + b;
}

import { add } from './MathUtils';

04真值与「空」

条件里这些算假:None、False、0、""、[]、{}、set()。

Python
items = []
if not items:
    print("empty")
Kotlin
val items = emptyList<Int>()
if (items.isEmpty()) {
    println("empty")
}
ArkTS
const items: number[] = [];
if (items.length === 0) {
  console.info("empty");
}
不要用 if items == [] 判空;习惯写 if not items / if items:。

Python 基础语法速通 · 对照 Kotlin / ArkTS · 本地预览稿