python的变量名可以是中文吗_Python中用中文变量名、函数名,会影响性能吗?
首先,python这样的语言,只能做有限的"词法编址"(lexical address),不可能实现 @王加加 所说的“所有变量名函数名等名称,在转成字节码后,只是一个个地址,名称只是在写代码的时候增加可读性。”
为什么呢?因为很多动态语言使用的基本方法是“延迟绑定”(late binding)。这代表了两个意思:创建绑定的过程是动态的
在环境里寻找绑定的过程也是动态的
我也可以断言,python是不能完全避免“延迟绑定”的。
我没有用过python,也不清楚python的实现,为什么我敢如此断言呢?因为以下代码可以在python解释器里执行:
somename = input()
def a():
return 2
exec("def{}():\nreturn 1".format(somename))
print(a())
在shell里运行效果如下:
ayanamists@DESKTOP-KBI2TVT:~$ python test.py
"a"
1
显然地,在执行之前的任何一个阶段,都不可能知道a会绑定上什么东西。
至于那位答主根据字节码给出的结果, 我在他的代码中加上一行:
import dis
def a(s):
exec("s = 0")
return s+1
dis.dis(a)
print(a(1))
结果是
ayanamists@DESKTOP-KBI2TVT:~$ python test.py
3 0 LOAD_CONST 1 ('s = 0')
3 LOAD_CONST 0 (None)
6 DUP_TOP
7 EXEC_STMT
4 8 LOAD_FAST 0 (s)
11 LOAD_CONST 2 (1)
14 BINARY_ADD
15 RETURN_VALUE
1
这反而说明解释器必须在运行时知道‘s’这个标识符对应的是0号局部变量。
综上所述,python在编译成字节码时确实进行了一定的词法编址工作,把一些绑定映射为了一个“地址”,但由于无法避免某些【延迟绑定】的出现,它不可能真正地扔掉标识符,某些时候仍然需要用标识符来寻找绑定。
至于题主的问题,从上面的分析可以看出如果没有用标识符寻找绑定的过程,对性能没有任何影响
如果有,影响最大的因素也应该是【标识符编码后的长度】,当然,utf-8编码下,非ascii字符确实比ascii字符要长,不过用python这种语言的时候,根本无需纠结这点性能。
另外,有些人不喜欢用非ascii字符做标识符,这无可厚非。但标识符这东西,只要你自己、和你合作的人看得懂、看得舒服就可以。别人怎么说,不太重要。
python的变量名可以是中文吗_Python中用中文变量名、函数名,会影响性能吗?相关推荐
- python变量名要求_Python中用中文变量名、函数名,会影响性能吗?
首先,python这样的语言,只能做有限的"词法编址"(lexical address),不可能实现 @王加加 所说的"所有变量名函数名等名称,在转成字节码后,只是一个个 ...
- matlab子函数调用变量,matlab中,怎么样用function自定义函数调用另一个函数名为输入?...
点击查看matlab中,怎么样用function自定义函数调用另一个函数名为输入?具体信息 答:test定义两个参数,一个是函数,一个是函数的变量. function [z]=test11(funna ...
- python读取txt中的一列称为_python读取中文txt文本的方法
对于python2.7 字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode,再从unico ...
- python加中文注释_Python使用中文注释和输出中文(原创)
刚开始学习python,需要在Python中注释中文和输出中文,现在开始尝试: 仅为初步学习参考,高手请绕行. -------------------------------------------- ...
- python函数闭包的应用_python学习第10天----函数名应用、闭包、迭代器
1.函数名的应用 1)如果直接打印函数名,打印出的为函数的地址 deffunc():print("你好,世界")print(func) 输出: View Code #可将函数赋值给 ...
- python变量隔一个数取出来_Python(二):变量、常量,字符串操作
变量&常量 变量和常量都是存储值的内存区域,"变量"就是说值可以改变,"常量"就是说这个值不能改,是只读的,关于常量不详细介绍了 命名 上一次说过命名规 ...
- python使用get函数在字典中加入键_Python使用字典键作为函数名
我希望能够使用字典键作为函数名,但我不确定是否可行.作为一个简单的例子,我想要一个class().dictkey(otherstuff)的选项,而不是class().dothis(dictkey, o ...
- 阿里云python中文社区_python写中文
字符串 你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码.当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: ```pytho ...
- 阿里云python中文社区_python 写中文
字符串 你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码.当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: ```pytho ...
最新文章
- linux kernel 内存管理 感想总结(未完待续)
- Lync与Exchange 2013 UM集成配置
- WebGoat系列实验Cross-Site Scripting (XSS)
- PHP工厂模式的研究
- python中的小魔法(一)
- WCF中使用控件的委托,线程中的UI委托
- 在 CentOS 上安装和配置 Xen 虚拟化
- python怎么输出数组全部数据_打印numpy数组的全部内容
- NYOJ-58 最少步数
- mysql tode_FAQ: MyDB Studio for MySQL
- InnoDB如何实现多版本
- Playing with OS(操作系统)
- Android Studio 生成*.aar文件及使用方法
- 《python 编程从入门到实践》变量
- [项目管理] 如何评估工作量
- 基于 HttpClient 4.5 的 HttpClientUtils
- by mysql 按每分钟group_MySQL group by 统计每5分钟数据量
- HIDS逐渐的成为主流
- MyBatis入门(从零到一)
- 了解 什么是 22 端口