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个概念:
from random import randint as 随机整数 是引入模块时指定 别名
对 = True,就是一个普通的 变量赋值
输入 = 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 翻译成了 文言文 ……比如官方示例里的代码:
用警兮用嚴。
印道
一至一
哉兮
印編曰雜申
雜申矣
又纖曰龍鼠矣
又曰
一矣
亂曰
國無人莫我知兮 又何懷乎故都
既莫足與為美政兮 吾將從彭咸之所居
資曰
印重一至一兮
重起一至十合始印終
是不是感到不明觉厉!但实际上也就是字面上的翻译。比如 用警兮用嚴。,其实就是use warnings; use strict;。那么曰龍鼠矣,龙鼠又是什么鬼?根据下图自行体会吧(欢迎评论区抢答):
看了这些中文写出的代码,你现在有啥想法?觉得太酷炫了,还是视作异端?
最后还是说句,尽管可以用中文写代码,尽管有大量的中文资料、教程、文档,就算你自己也接受使用中文来学习编程甚至写代码,我还是 强烈建议你尽量提升下英文 ,逼着自己去 看报错、看原版文档、看 StackOverflow 上的问答 ,哪怕一开始你用翻译工具慢慢查。英语能力虽然对你编程起步的下限影响不大,但对你编程发展的上限至关重要。和学编程一样,这是个长期的过程,坚持下去总会有提升的。
之前我们还做过一个整理编程英语高频词汇的小项目,有需要的可以拿去参考:《我们用程序整理出了一份Python英语高频词汇表,拿走不谢!》,希望对你有所帮助。
════
其他文章及回答:
欢迎搜索及关注公众号: Crossin的编程教室
python中可以用中文作为变量-python里能不能用中文相关推荐
- python变量必须以字母和下划线_【转载】关于python中带下划线的变量和函数的意义...
Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...
- linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...
本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...
- (1)今有2018年1月1日—15日的猪肉价格和牛肉价格的数据,它们存在于一个Excel表格中,如下表所示。将其读入Python中并用一个数据框变量df保存......
目录 (1)今有2018年1月1日-15日的猪肉价格和牛肉价格的数据,它们存在于一个Excel表格中,如下表所示.将其读入Python中并用一个数据框变量df保存. (2)分别绘制1月1日-10日的猪 ...
- python中的命名空间_深入理解Python中的命名空间和范围
Python中的命名空间和范围 在Python中,每个包.模块.类.函数和方法函数都拥有一个"名称空间",其中解析了变量名称.下面本篇文章就来带大家认识一下Python中的命名空间 ...
- python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想
[递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...
- python统计元音字母个数_计算Python中的元音(Counting vowels in python)
计算Python中的元音(Counting vowels in python) def main(): print(count) def countVowels(string): vowel=(&qu ...
- python中输入字符串_简单讲解Python中的字符串与字符串的输入输出
简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...
- python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
- python中获取文件大小_如何在Python中获取文件大小
python中获取文件大小 We can get file size in Python using the os module. 我们可以使用os模块在Python中获取文件大小. Python中的 ...
最新文章
- zabbix4.0构建实录
- DWR小结DWRUtil篇
- oracle 数据精度转换,oracle数据值型数据改精度测试
- 交叉线和直连线的线序,做法和使用场合
- 【CyberSecurityLearning 附】DNS复习演示所有实验
- 文档扫描OCR识别-1(python)
- 中国首富或将易主,5500个富豪即将诞生!
- C#对window 硬件类操作,ManagementObjectSearcher
- C++容器遍历时删除元素
- JavaScript 计时器
- 机器学习必备的数学基础有哪些?
- mongodb ssl java_MongoDB自签名SSL连接:SSL对等证书验证失败
- UE4之A点绕B点旋转
- nodejs redis 发布订阅_Redis 发布订阅,小功能大用处,真没那么废材
- 面试阿里,你必须知道的背景知识——双非上岸阿里巴巴系列
- 快速学习法:一年搞定MIT计算机课程
- 如何评价一个开源项目(一)--活跃度
- 斯坦福图机器学习CS224W笔记自用:How Expressive are Graph Neural Networks?
- java重复代码重构_重构重复代码
- 用python画价格—需求曲线图
热门文章
- 一些开源搜索引擎实现——倒排使用原始文件,列存储Hbase,KV store如levelDB、mongoDB、redis,以及SQL的,如sqlite或者xxSQL...
- ES批量索引写入时的ID自动生成算法
- 【Android测试】【第十四节】Appium——简述
- typeof做类型判断时容易犯下的错
- Netlog 的数据库及 LAMP 架构
- Linux防火墙iptables学习
- 修改Mysql的root密码方法归纳
- 深入了解Brackets编辑器 [好东西啊]
- npm获取配置,设置代理
- in_array 判断问题的疑惑解决。