Python 基础语法速通

第 2 章:变量、类型与 None

赋值即绑定;类型可注解;空值叫 None。

01赋值与「常量」

Python 没有 val/const 关键字;约定用全大写表示常量。

Python
name = "Ada"
age = 30
age = 31
PI = 3.14159   # 约定:别改
Kotlin
val name = "Ada"
var age = 30
age = 31
const val PI = 3.14159
ArkTS
const name: string = "Ada";
let age: number = 30;
age = 31;
const PI: number = 3.14159;

02常用类型对照

PythonKotlinArkTS备注
intInt / LongnumberPython int 任意精度
floatDouble / Floatnumber
boolBooleanbooleanTrue/False 首字母大写
strStringstring不可变
Nonenullnull单例

03类型注解(可选)

写法接近 ArkTS / Kotlin 后置类型,但解释器默认不强制检查(交给 mypy / Pyright)。

Python
name: str = "Ada"
age: int = 30
def greet(who: str) -> str:
    return f"hi {who}"
Kotlin
val name: String = "Ada"
val age: Int = 30
fun greet(who: String): String = "hi $who"
ArkTS
const name: string = "Ada";
const age: number = 30;
function greet(who: string): string {
  return `hi ${who}`;
}
注解写给人和工具看;运行期 name = 1 仍可能成功——别当成 Kotlin 编译器。

04None 与可选

Python
from typing import Optional
n: Optional[int] = None
# 3.10+ 也可: n: int | None = None
if n is None:
    n = 0
Kotlin
var n: Int? = null
if (n == null) {
    n = 0
}
ArkTS
let n: number | null = null;
if (n === null) {
  n = 0;
}
判空用 is None / is not None,不要 == None(习惯与身份比较)。

05字符串插值

Python
name = "Ada"
print(f"hello {name}")
print("hello {}".format(name))
Kotlin
val name = "Ada"
println("hello $name")
println("hello ${name.length}")
ArkTS
const name = "Ada";
console.info(`hello ${name}`);

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