首先,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中用中文变量名、函数名,会影响性能吗?相关推荐

  1. python变量名要求_Python中用中文变量名、函数名,会影响性能吗?

    首先,python这样的语言,只能做有限的"词法编址"(lexical address),不可能实现 @王加加 所说的"所有变量名函数名等名称,在转成字节码后,只是一个个 ...

  2. matlab子函数调用变量,matlab中,怎么样用function自定义函数调用另一个函数名为输入?...

    点击查看matlab中,怎么样用function自定义函数调用另一个函数名为输入?具体信息 答:test定义两个参数,一个是函数,一个是函数的变量. function [z]=test11(funna ...

  3. python读取txt中的一列称为_python读取中文txt文本的方法

    对于python2.7 字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode,再从unico ...

  4. python加中文注释_Python使用中文注释和输出中文(原创)

    刚开始学习python,需要在Python中注释中文和输出中文,现在开始尝试: 仅为初步学习参考,高手请绕行. -------------------------------------------- ...

  5. python函数闭包的应用_python学习第10天----函数名应用、闭包、迭代器

    1.函数名的应用 1)如果直接打印函数名,打印出的为函数的地址 deffunc():print("你好,世界")print(func) 输出: View Code #可将函数赋值给 ...

  6. python变量隔一个数取出来_Python(二):变量、常量,字符串操作

    变量&常量 变量和常量都是存储值的内存区域,"变量"就是说值可以改变,"常量"就是说这个值不能改,是只读的,关于常量不详细介绍了 命名 上一次说过命名规 ...

  7. python使用get函数在字典中加入键_Python使用字典键作为函数名

    我希望能够使用字典键作为函数名,但我不确定是否可行.作为一个简单的例子,我想要一个class().dictkey(otherstuff)的选项,而不是class().dothis(dictkey, o ...

  8. 阿里云python中文社区_python写中文

    字符串 你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码.当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: ```pytho ...

  9. 阿里云python中文社区_python 写中文

    字符串 你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码.当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: ```pytho ...

最新文章

  1. linux kernel 内存管理 感想总结(未完待续)
  2. Lync与Exchange 2013 UM集成配置
  3. WebGoat系列实验Cross-Site Scripting (XSS)
  4. PHP工厂模式的研究
  5. python中的小魔法(一)
  6. WCF中使用控件的委托,线程中的UI委托
  7. 在 CentOS 上安装和配置 Xen 虚拟化
  8. python怎么输出数组全部数据_打印numpy数组的全部内容
  9. NYOJ-58 最少步数
  10. mysql tode_FAQ: MyDB Studio for MySQL
  11. InnoDB如何实现多版本
  12. Playing with OS(操作系统)
  13. Android Studio 生成*.aar文件及使用方法
  14. 《python 编程从入门到实践》变量
  15. [项目管理] 如何评估工作量
  16. 基于 HttpClient 4.5 的 HttpClientUtils
  17. by mysql 按每分钟group_MySQL group by 统计每5分钟数据量
  18. HIDS逐渐的成为主流
  19. MyBatis入门(从零到一)
  20. 了解 什么是 22 端口

热门文章

  1. 【转】状态压缩动态规划
  2. (转)在Symbian上启动浏览器
  3. Notepad++没有插件管理器(Plugin Manager)的解决方法
  4. 知识图谱在招聘推荐匹配的应用
  5. 【报告分享】2019年大数据行业研究报告.pdf(附下载链接)
  6. 通俗易懂!视觉slam第四部分——slam刚体三维空间运动
  7. mac中的csv文件到windows平台乱码的解决办法
  8. 蓝桥杯基础练习十六进制转十进制
  9. redhat自带mysql_rhel4卸载系统自带的mysql4.1
  10. 互联网金融时代下机器学习与大数据风控系统