变量与数据类型-给世界贴标签

70 阅读4分钟

晚上十点多,楼下便利店的灯光像失焦的月亮。

我站在冰柜前,拿了一瓶6°C的冰红茶-大瓶,注意到瓶身的标签上写着[无糖/1000ml/0kcal],那一刻,我意识到:人类所有温柔和残忍,都始于万物贴标签。python同样也是。

桂枝老家在延津,过去是黄河南岸的小驿口。驿丁每天干一件事:就是给来往公文贴条子——“急”“加急”“十万火急”。贴错了,驿丁挨板子;贴对了,战报快马入京。后来到了京城,我才知道,条子改叫“变量”,公文改叫“数据”,军机处改叫“Python”。道理一样:先贴条,再办事。

变量——把张三塞进信封

zhang_san = 1

张三原来是保定府的镖师,现在被装进一个牛皮信封,信封上写“zhang_san”。里头只塞一张纸条:1,表示“活着”。 要是张三阵亡,纸条换 0,信封还在,人名不变换了命数。这就叫变量——信封不变,纸条能换。

字符串——把话刻在竹简上

message = "请调三千石粮草"

竹简一卷,刀片刻字,刻下去就是“请调三千石粮草”,这叫字符串。想截取其中几字:

message[:4] # 请调三千

message[-2:] # 粮草

跟锯竹子一样,想锯哪段锯哪段。字刻深了,千年后的人还能听见刀声;刻歪了,千年后的人哈哈大笑:这谁呀,把‘三’刻成了‘王’。

整数与浮点数——把日子切成块和渣

year = 1875 rainfall = 28.7

整数 1875,像城墙砖,垒的方方正正,踩上去“噔噔响”;浮点数 28.7,像黄河水,漫过堤岸,多出来的 0.7 是浪花咬下的砖角。

year + rainfall # 1903.7

砖碰水,碰不出第三样,却能算出明年是灾年还是丰年。1903.7,听起来像一场迟到的雨,落在开封府的账簿上,淹了三千石粮,也淹了三百户人家的叹息。

布尔值——生死状上的朱砂印

alive = True relief = False

朱砂印一按,只有红与黑:True 是生,False 是亡。写判词:

if alive:
    send_home()
else:
    send_urn()

没有第三种颜色。

列表——把军需串成糖葫芦

supplies = ["马草", "豆饼", "箭羽", "火药"]

一根绳子串四样,像关帝庙前的糖葫芦。串起的不止是军需,也串起一条从边关到京城的命:马草在最前头,干黄得像老驿丁的胡子;豆饼排第二,硬得能硌掉门牙;箭羽第三,轻飘飘却带着嗖嗖冷风;火药压尾,一点火星就能掀翻整座望楼。此时大概最想加一味“救心丸”?

supplies.append("救心丸")

绳子“啪”一声多出第五颗,像半夜里突然塞进手里的武功秘籍——“徒儿啊,别怕,师父给你备了救心丸。”

想倒序:

supplies.reverse()

先吃救心丸,再吃火药,顺序乱了,人也乱了。火药打头,救心丸收尾。

所以师父说:
“军需的次序就是命数,先马草再火药,马才能跑,人才能活;一旦反了,先吃救心丸再吃火药,救心丸也救不回炸碎的心。

草喂马,饼养人,羽上弦,火殿后,丸守心——一步不乱,一线生机

字典——给州县发户口牌

registry = {
    "开封府": {"grain": 3000, "troops": 800},
    "洛阳县": {"grain": 1500, "troops": 400}
}

这一张小小的户口牌,似乎比官道上的黄土更懂人心,户口牌一钉,开封府三千石粮、八百兵,洛阳县一千五百石、四百兵,一目了然。查粮?一根手指就够:

registry["开封府"]["grain"] # 3000

这不比师爷翻账簿快十倍。

类型转换——把银子兑成铜钱

柜台上,碎银子“当啷”一声滚到算盘旁。老掌柜眯眼一掂:

price = "三两五钱"
price_copper = float(price) * 1000   # 3500 文

银子写“三两五钱”,一兑,成了 3500 枚铜钱。叮——算盘珠子一响,不管他是轿夫、脚夫,还是军爷都看得懂。

贴错了怎么办?

驿站贴条子贴歪了,军棍二十:Python 贴歪了, type(x) 一看便知,撕了重贴,不流血,不挨棍。老驿丁说:“贴好条子,下辈子不跑断腿。” Python 说:“不用下辈子,下一行重贴。”

-----------

桂枝走出军机处,夜风吹乱手中清单。

在便利店的我有所感悟:所谓历史,不过是把天下拆成一枚枚标签,再贴回天下的胸口。 张三还是张三,开封还是开封,只是名字被锁进抽屉,钥匙在 Python 手里。

下一篇:如何让纸飞机永不落地