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

为什么呢?因为很多动态语言使用的基本方法是“延迟绑定”(late binding)。这代表了两个意思:创建绑定的过程是动态的

在环境里寻找绑定的过程也是动态的

我也可以断言,python是不能完全避免“延迟绑定”的。

我没有用过python,也不清楚python的实现,为什么我敢如此断言呢?因为以下代码可以在python解释器里执行:

somename = input()

def a():

return 2

exec("def{}(): return 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中使用sys模板和logging模块获取行号和函数名的方法

    From: http://www.jb51.net/article/49026.htm 这篇文章主要介绍了python中使用sys模板和logging模块获取行号和函数名的方法,需要的朋友可以参考下 ...

  2. python画图y轴在右侧_解决python中画图时x,y轴名称出现中文乱码的问题

    如下所示: #-*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from matplotlib.font_ ...

  3. python中的命名空间_深入理解Python中的命名空间和范围

    Python中的命名空间和范围 在Python中,每个包.模块.类.函数和方法函数都拥有一个"名称空间",其中解析了变量名称.下面本篇文章就来带大家认识一下Python中的命名空间 ...

  4. python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想

    [递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...

  5. python统计元音字母个数_计算Python中的元音(Counting vowels in python)

    计算Python中的元音(Counting vowels in python) def main(): print(count) def countVowels(string): vowel=(&qu ...

  6. python中输入字符串_简单讲解Python中的字符串与字符串的输入输出

    简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...

  7. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  8. python中获取文件大小_如何在Python中获取文件大小

    python中获取文件大小 We can get file size in Python using the os module. 我们可以使用os模块在Python中获取文件大小. Python中的 ...

  9. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  10. python中数字是常量吗,【python】常量与变量

    1.代码 (1)机器码:由二进制组成,是给计算机看的,计算机可以直接执行. (2)汇编码:由数字.字母和符号组成的代码. 汇编语言书写的代码必须按照计算机的计算流程 (写代码的流程就是模拟计算机运行的 ...

最新文章

  1. 三个小命令检查电脑!
  2. 测试php是否连接mysql_如何测试php是否连接mysql成功
  3. 【机器学习】机器学习从零到掌握之十三 -- 教你理解Logistics回归之梯度上升算法
  4. nmon--linux压力测试工具
  5. Compound社区发起一项讨论 向5000名早期活跃用户发放总供应量5%的COMP代币
  6. Windows 7 下 QT5 开发环境搭建
  7. LINUX7安装APACHE
  8. golang数据库的操作,更新删除增加单行查找与多行查找
  9. echarts无数据时显示暂无数据或者用图片代替
  10. OpenCV-识别细胞图中的细胞总数
  11. Roguelike到底是啥?讲讲和Roguelike 相关知识(搬运)
  12. 在 OpenBSD 系统下的安装PHP
  13. D语言/DLang 2.085.1 发布,修复性迭代
  14. r语言中的或怎么表示什么不同_R语言 基本语法
  15. 正宇丨你选择了开始,就不要轻言放弃
  16. H5移动端禁止长按保存图片
  17. SPSS多元线性回归残差分析的基本方法
  18. Verilog中 reg和wire 用法 以及always和assign的区别
  19. 大型应用+go+java_企业应用程序,Go比Java更明智!
  20. 让子弹飞 | 院士深度解析Alphafold DB的未来影响

热门文章

  1. 【每日邮报】利物浦对阵阿森纳能走出牢狱要谢天谢地谢Peter
  2. 顺便发现一bug??
  3. 洛谷 P2746 [USACO5.3]校园网Network of Schools
  4. Linux常用服务安装部署
  5. Oracle SQL优化
  6. java_method_下拉框成json
  7. 5.springMVC数据回显(就是后台向页面传参的过程)
  8. TCP服务器:多进程
  9. 一个用BitMap类完成的网页随机码图片生成类
  10. python自学书籍推荐豆瓣-想学python,请问有没好的书籍推荐?