當前位置:
首頁 > 知識 > python里能不能用中文

python里能不能用中文

現代計算機和編程的起源和推動力量主要源自美國,再加上26個字母很便於表示(算上大小寫,6位bit就夠了),因此英語一直是編程領域的不二之選。但這就給部分非英語國家的編程學習者帶來一些困擾。以至於有些人還沒開始學,就擔心自己的英語問題。這完全沒必要,因為編程初期所用到的單詞很有限,你就當做一個符號去記,也能很快熟悉。而且我們一直在講的 Python,也可以「用中文」來編程

Python3 對於字元編碼這一塊做了很大改進。帶來的一個額外功能就是,你可以使用中文作為變數名。比如:

>>> 名字 = "張三"
>>> 年齡 = 18
>>> print(名字, 年齡)
張三 18

注意,Python2 是不行的。另外如果在代碼里寫中文,別忘了在開頭加上 #coding: gbk 或 #coding: utf8 的聲明。關於版本 2 和 3 的差別之前的文章里有多次說過,不太清楚的同學請在公*號里回復關鍵字 2v3

上面這樣的寫法完全是符合語法的,但我個人沒有習慣這麼來命名。不過非要這麼來的,我們可以嘗試把教程里的「猜數字」代碼改一下(原版代碼見教程 22 課):

from random import randint
def 是否相等(參數1, 參數2):
if 參數1 < 參數2:
print("太小了")
return False;
if 參數1 > 參數2:
print("太大了")
return False;
if 參數1 == 參數2:
print("猜中了!")
return True
答案 = randint(1, 100)
print("猜猜我想的是幾?")
是否猜中 = False
while 是否猜中 == False:
猜測值 = int(input())
是否猜中 = 是否相等(猜測值, 答案)

使用中文變數名,執行效果和原版完全一致(除非代碼的編碼出了問題)。更進一步,你還可以通過某些方式更改系統提供的函數名:

from random import randint as 隨機整數
輸入 = input輸出 = print
對 = True
錯 = False
整數 = int
def 是否相等(參數1, 參數2):
if 參數1 < 參數2:
輸出("太小了")
return 錯;
if 參數1 > 參數2:
輸出("太大了")
return 錯;
if 參數1 == 參數2:
輸出("猜中了!")
return 對
答案 = 隨機整數(1, 100)
輸出("猜猜我想的是幾?")
是否猜中 = 錯
while 是否猜中 == 錯:
猜測值 = 整數(輸入())
是否猜中 = 是否相等(猜測值, 答案)

這裡牽涉到3個概念:

  1. from random import randint as 隨機整數 是引入模塊時指定

    別名

  2. 對 = True,就是一個普通的

    變數賦值

  3. 輸入 = input、整數 = int,要理解這個用法,你需要有面向對象的認識:在 Python 中

    函數也是一種對象

    ,可以像普通值一樣賦值給變數。賦值之後,這個變數就相當於這個函數,可以通過括弧語法來調用。

如果你還嫌不夠徹底,有人給了更兇殘的解決方案:一個叫做「周蟒」的項目,相當於把 Python 翻譯成了中文。(不過項目很久沒更新了,我在 py3 上安裝未成功)

在 py2 上通過 pip 即可安裝:

pip install zhpy

之後就能通過 zhpy 進入交互環境,或者直接 zhpy test.py 執行你的中文 py 代碼文件。

寫出來代碼是醬嬸兒的:

從 random 導入 randint 作為 隨機整數
定義 是否相等(參數1, 參數2):
如果 參數1 < 參數2:
列印 "太小了"
返回 假
如果 參數1 > 參數2:
列印 "太大了"
返回 假
如果 參數1 == 參數2:
列印 "猜中了!"
返回 真
答案 = 隨機整數(1, 100)
列印 "猜猜我想的是幾?"
是否猜中 = 假
當 是否猜中 == 假:
猜測值 = 整數(輸入())
是否猜中 = 是否相等(猜測值, 答案)

幾乎幫你把所有基礎語法都轉成了中文,甚至還可以用 emoji 表情……之前有同學對猜數字代碼的理解還有疑惑,尤其是 bingo 這個變數,那如果寫成這樣,是不是更容易理解一點呢?

除此之外,還有不少中文編程語言,其中最出名的莫過於「易語言」。雖然科班出身的程序員都不太看得上這種語言,但不得不承認,它在我國的草根黑客圈中有著廣泛的群眾基礎。

另外,我還發現了一個有趣語言,叫 PerlYuYan。看名字就知道是基於 Perl,但讓你想不到的是,它將 Perl 翻譯成了文言文……比如官方示例里的代碼:

用警兮用嚴。
印道
一至一
哉兮
印編曰雜申
雜申矣
又纖曰龍鼠矣
又曰
一矣
亂曰
國無人莫我知兮 又何懷乎故都
既莫足與為美政兮 吾將從彭咸之所居
資曰
印重一至一兮
重起一至十合始印終

python里能不能用中文

打開今日頭條,查看更多圖片

是不是感到不明覺厲!但實際上也就是字面上的翻譯。比如 用警兮用嚴。,其實就是use warnings; use strict;。那麼曰龍鼠矣,龍鼠又是什麼鬼?根據下圖自行體會吧(歡迎評論區搶答):

python里能不能用中文

看了這些中文寫出的代碼,你現在有啥想法?覺得太酷炫了,還是視作異端?

最後還是說句,儘管可以用中文寫代碼,儘管有大量的中文資料、教程、文檔,就算你自己也接受使用中文來學習編程甚至寫代碼,我還是強烈建議你盡量提升下英文,逼著自己去看報錯、看原版文檔、看 StackOverflow 上的問答,哪怕一開始你用翻譯工具慢慢查。英語能力雖然對你編程起步的下限影響不大,但對你編程發展的上限至關重要。和學編程一樣,這是個長期的過程,堅持下去總會有提升的。

之前我們還做過一個整理編程英語高頻辭彙的小項目,有需要的可以拿去參考:《我們用程序整理出了一份Python英語高頻辭彙表,拿走不謝!》,希望對你有所幫助。

════

其他文章及回答:

如何自學Python | 新手引導 | 精選Python問答 | Python單詞表 | 人工智慧 | 爬蟲 | 我用Python | requests | 計算機視覺 | 字元播放器 | 一圖學Python

{!-- PGC_COLUMN --}

? 著作權歸作者所有

作者:crossin

原文:https://my.oschina.net/crossin/blog/3004779

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

DBScan+iris數據集實現+參數調節
使用node.js的開發框架express創建一個web應用

TAG:程序員小新人學習 |