资讯专栏INFORMATION COLUMN

python里能不能用中文

anquan / 1751人阅读

摘要:而且我们一直在讲的,也可以用中文来编程。带来的一个额外功能就是,你可以使用中文作为变量名。另外如果在代码里写中文,别忘了在开头加上或的声明。

现代计算机和编程的起源和推动力量主要源自美国,再加上26个字母很便于表示(算上大小写,6位bit就够了),因此英语一直是编程领域的不二之选。但这就给部分非英语国家的编程学习者带来一些困扰。以至于有些人还没开始学,就担心自己的英语问题。这完全没必要,因为 编程初期所用到的单词很有限 ,你就当做一个符号去记,也能很快熟悉。而且我们一直在讲的 Python,也可以 “用中文”来编程

Python3 对于字符编码这一块做了很大改进。带来的一个额外功能就是,你可以 使用中文作为变量名 。比如:

</>复制代码

  1. >>> 名字 = "张三"
  2. >>> 年龄 = 18
  3. >>> print(名字, 年龄)
  4. 张三 18

注意,Python2 是不行的。另外如果在代码里写中文,别忘了在开头加上 #coding: gbk#coding: utf8 的声明。关于版本 2 和 3 的差别之前的文章里有多次说过,不太清楚的同学请在公众号里回复关键字 2v3

上面这样的写法完全是符合语法的,但我个人没有习惯这么来命名。不过非要这么来的,我们可以尝试把教程里的“猜数字”代码改一下(原版代码见 教程 22 课 ):

</>复制代码

  1. from random import randint
  2. def 是否相等(参数1, 参数2):
  3. if 参数1 < 参数2:
  4. print("太小了")
  5. return False;
  6. if 参数1 > 参数2:
  7. print("太大了")
  8. return False;
  9. if 参数1 == 参数2:
  10. print("猜中了!")
  11. return True
  12. 答案 = randint(1, 100)
  13. print("猜猜我想的是几?")
  14. 是否猜中 = False
  15. while 是否猜中 == False:
  16. 猜测值 = int(input())
  17. 是否猜中 = 是否相等(猜测值, 答案)

使用中文变量名,执行效果和原版完全一致(除非代码的编码出了问题)。更进一步,你还可以通过某些方式更改系统提供的函数名:

</>复制代码

  1. from random import randint as 随机整数
  2. 输入 = input输出 = print
  3. 对 = True
  4. 错 = False
  5. 整数 = int
  6. def 是否相等(参数1, 参数2):
  7. if 参数1 < 参数2:
  8. 输出("太小了")
  9. return 错;
  10. if 参数1 > 参数2:
  11. 输出("太大了")
  12. return 错;
  13. if 参数1 == 参数2:
  14. 输出("猜中了!")
  15. return
  16. 答案 = 随机整数(1, 100)
  17. 输出("猜猜我想的是几?")
  18. 是否猜中 = 错
  19. while 是否猜中 == 错:
  20. 猜测值 = 整数(输入())
  21. 是否猜中 = 是否相等(猜测值, 答案)

这里牵涉到3个概念:

from random import randint as 随机整数 是引入模块时指定 别名

对 = True,就是一个普通的 变量赋值

输入 = input整数 = int,要理解这个用法,你需要有面向对象的认识:在 Python 中 函数也是一种对象 ,可以像普通值一样赋值给变量。赋值之后,这个变量就相当于这个函数,可以通过括号语法来调用。

如果你还嫌不够彻底,有人给了更凶残的解决方案:一个叫做“ 周蟒 ”的项目,相当于把 Python 翻译成了中文。(不过项目很久没更新了,我在 py3 上安装未成功)

在 py2 上通过 pip 即可安装:

</>复制代码

  1. pip install zhpy

之后就能通过 zhpy 进入交互环境,或者直接 zhpy test.py 执行你的中文 py 代码文件。

写出来代码是酱婶儿的:

</>复制代码

  1. 从 random 导入 randint 作为 随机整数
  2. 定义 是否相等(参数1, 参数2):
  3. 如果 参数1 < 参数2:
  4. 打印 "太小了"
  5. 返回 假
  6. 如果 参数1 > 参数2:
  7. 打印 "太大了"
  8. 返回 假
  9. 如果 参数1 == 参数2:
  10. 打印 "猜中了!"
  11. 返回 真
  12. 答案 = 随机整数(1, 100)
  13. 打印 "猜猜我想的是几?"
  14. 是否猜中 = 假
  15. 当 是否猜中 == 假:
  16. 猜测值 = 整数(输入())
  17. 是否猜中 = 是否相等(猜测值, 答案)

几乎帮你把所有基础语法都转成了中文,甚至还可以用 emoji 表情……之前有同学对猜数字代码的理解还有疑惑,尤其是 bingo 这个变量,那如果写成这样,是不是更容易理解一点呢?

除此之外,还有不少中文编程语言,其中最出名的莫过于“ 易语言 ”。虽然科班出身的程序员都不太看得上这种语言,但不得不承认,它在我国的草根黑客圈中有着广泛的群众基础。

另外,我还发现了一个有趣语言,叫 PerlYuYan 。看名字就知道是基于 Perl,但让你想不到的是,它将 Perl 翻译成了 文言文 ……比如官方示例里的代码:

</>复制代码

  1. 用警兮用嚴。
  2. 印道
  3. 一至一
  4. 哉兮
  5. 印編曰雜申
  6. 雜申矣
  7. 又纖曰龍鼠矣
  8. 又曰
  9. 一矣
  10. 亂曰
  11. 國無人莫我知兮 又何懷乎故都
  12. 既莫足與為美政兮 吾將從彭咸之所居
  13. 資曰
  14. 印重一至一兮
  15. 重起一至十合始印終

是不是感到不明觉厉!但实际上也就是字面上的翻译。比如 用警兮用嚴。,其实就是use warnings; use strict;。那么曰龍鼠矣,龙鼠又是什么鬼?根据下图自行体会吧(欢迎评论区抢答):

看了这些中文写出的代码,你现在有啥想法?觉得太酷炫了,还是视作异端?

最后还是说句,尽管可以用中文写代码,尽管有大量的中文资料、教程、文档,就算你自己也接受使用中文来学习编程甚至写代码,我还是 强烈建议你尽量提升下英文 ,逼着自己去 看报错、看原版文档、看 StackOverflow 上的问答 ,哪怕一开始你用翻译工具慢慢查。英语能力虽然对你编程起步的下限影响不大,但对你编程发展的上限至关重要。和学编程一样,这是个长期的过程,坚持下去总会有提升的。

之前我们还做过一个整理编程英语高频词汇的小项目,有需要的可以拿去参考:《我们用程序整理出了一份Python英语高频词汇表,拿走不谢!》,希望对你有所帮助。

════

其他文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 人工智能 | 爬虫 | 我用Python | requests | 计算机视觉 | 字符播放器 | 一图学Python

欢迎搜索及关注公众号: Crossin的编程教室

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43073.html

相关文章

  • Chrome开发者工具,爬虫必备,解决一半的问题

    摘要:但这边特别提醒的是里看到的代码不等于请求网址拿到的返回值。这个文件包含了列表中所有请求的各项参数及返回值信息,以便你查找分析。理解了这几步,大部分网上的数据都可以拿到,说解决一半的问题可不是标题党。 网上爬虫的教程实在太多了,知乎上搜一下,估计能找到不下一百篇。大家乐此不疲地从互联网上抓取着一个又一个网站。但只要对方网站一更新,很可能文章里的方法就不再有效了。 每个网站抓取的代码各不相...

    jiekechoo 评论0 收藏0
  • 爬虫攻防实践

    摘要:之前在学校曾经用过的方法做过一些爬虫脚本来玩,从正式转前端之后,出于兴趣,我对爬虫和反爬虫又做了一些了解,并且做了一些爬虫攻防的实践。爬虫脚本通常会很频繁的进行网络请求,比如要爬取豆瓣排行榜的电影,就会连续发送个网络请求。 之前在学校曾经用过request+xpath的方法做过一些爬虫脚本来玩,从ios正式转前端之后,出于兴趣,我对爬虫和反爬虫又做了一些了解,并且做了一些爬虫攻防的实践...

    wanglu1209 评论0 收藏0
  • 爬虫攻防实践

    摘要:之前在学校曾经用过的方法做过一些爬虫脚本来玩,从正式转前端之后,出于兴趣,我对爬虫和反爬虫又做了一些了解,并且做了一些爬虫攻防的实践。爬虫脚本通常会很频繁的进行网络请求,比如要爬取豆瓣排行榜的电影,就会连续发送个网络请求。 之前在学校曾经用过request+xpath的方法做过一些爬虫脚本来玩,从ios正式转前端之后,出于兴趣,我对爬虫和反爬虫又做了一些了解,并且做了一些爬虫攻防的实践...

    xiangzhihong 评论0 收藏0
  • python_bomb----有趣的微信聊天机器人

    摘要:模块是一个文件,以结尾,包含了对象定义和语句模块让你能够有逻辑地组织你的代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。命令执行成功,执行结果命令执行失败一秒后执行关机命令 Python 模块(Module) 是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句 模块让你能够有逻辑地组织你的 Python 代码段。 把相关的代...

    bawn 评论0 收藏0
  • 写第一个Python程序

    摘要:关于中文为了处理汉字,程序员设计了用于简体中文的和用于繁体中文的。年一共收录了个字符,包括个汉字和个其它符号。年的是取代的正式国家标准。区分中文编码的方法是高字节的最高位不为。 Python 2和 Python3的区别 3.0有Unicode support ,这代表着可以直接默认写中文,2是不行的 有一些库改名了,但表面上变化不大,都是些大写变小写,下划线没了之类的 Twisted...

    ISherry 评论0 收藏0

发表评论

0条评论

anquan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<