第 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常用类型对照
| Python | Kotlin | ArkTS | 备注 |
|---|---|---|---|
int | Int / Long | number | Python int 任意精度 |
float | Double / Float | number | |
bool | Boolean | boolean | True/False 首字母大写 |
str | String | string | 不可变 |
None | null | null | 单例 |
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}`);