変数やメンバ変数などそのものを配列で扱えます。しかも値を文字列で取得できます。これは便利ですね。グローバル、ローカル変数そのものが配列でアクセスできます。
globals() locals()
型でさえ抽象されてます。同じ変数名で型を変えることが Python なら可能です。なんか抵抗があるようなところが型破りな Python なわけです。
a = 0 # int a *= 1.0 # float a = str(a) # string
ここで型は変数の属性、変えることのできる属性の一種です。
これができるってことはつまり静的型チェックがないわけなんですが、そもそも Python はコンパイラなんてもたないんですよね。
有名どころでは、True/False がそのまま数です。
if False + 1: print('???')