首先,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. python中可以用中文作为变量-Python中用中文变量名、函数名,会影响性能吗?

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

  3. python静态变量和静态方法_python的静态成员变量、实例成员变量、静态方法、类方法、实例方法...

    标签: 静态成员变量(类变量)和普通成员变量(实例变量) 静态成员变量只能通过类名.变量名获得,实例成员变量,通过该实例引用.变量名获得. 在实例对静态成员变量赋值时,实例 python是动态类型的语 ...

  4. python常量变量和对象_Python学习笔记——变量和常量

    一.变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型. 在Python中,不需要事先声明变量名和类型,直接赋值即可创建各种类型的对象变量 ...

  5. python特殊方法大全_python中星号变量的几种特殊用法

    在Python中星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解,本文将详细介绍"星号参数" ...

  6. python中的变量的引用_python中的变量引用小结

    python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...

  7. python函数名与变量名可以一样吗_python--第一类对象,函数名,变量名

    一 . 第一类对象 函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用 可以作为返回值返回 , 可以作为参数进行传递 def func(): def people(): print('金 ...

  8. python变量的作用_Python中的变量

    Python中的变量是用来表示一个值的标识符.变量代表了计算机内存中的一个地址.变量允许在程序中访问其他对象,调用函数或执行其他运算. 1.变量命名规则 变量是Python中的标识符,它应该遵循标识符 ...

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

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

最新文章

  1. java监控activemq,ActiveMQ与Spring整合-监听消息
  2. 如何使用Elasticsearch groovy script脚本更新数据
  3. WCF学习之旅—第三个示例之二(二十八)
  4. HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)
  5. wireshark过滤使用
  6. Linux加密框架 crypto 算法模板 HMAC模板举例
  7. 隐藏ribbon按钮
  8. Oracle数据库的启动与关闭
  9. 修改JEECG项目浏览器标题
  10. icesat/glas与SRTM参考椭球、基准对比
  11. weka 贝叶斯 java_weka中朴素贝叶斯的实现
  12. 科研笔记2:科技论文作图规范
  13. ubuntu/deepin安装配置mysql
  14. 程序员的圣诞礼物:计算机寓言之夏
  15. 程序员技术面常用知识点
  16. CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM 开源项目汇总
  17. PowerMill 2017五轴联动编程视频教程
  18. 数据恢复领军企业飞客与全球数据恢复“兵工厂”ACE建立战略合作
  19. shop源码PHP免授权,ShopsN五核全网免费开源电商系统 v2.4.0(拼团)
  20. 智慧园区物业可视化大屏

热门文章

  1. centos6.5安装mongodb2.6
  2. 物联网碰到云计算会怎么样?
  3. matlab学习:人脸识别之LBP (Local Binary Pattern)
  4. 什么样的项目是成功的?
  5. 使用nginx代理,怎么获取真实的IP
  6. Linux挂载点和文件系统类型介绍
  7. FragmentActivity和Activity的具体区别
  8. 哈佛大学计算机生物科学,生命科学专业
  9. [转载] python通过adb获取android手机耗电量
  10. 北航计算机学院博士机试考试题,北航2015考博真题回忆及全套资料 - 考博 - 小木虫 - 学术 科研 互动社区...