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),不可能实现 @王加加 所说的"所有变量名函数名等名称,在转成字节码后,只是一个个 ...
- python中可以用中文作为变量-Python中用中文变量名、函数名,会影响性能吗?
首先,python这样的语言,只能做有限的"词法编址"(lexical address),不可能实现 @王加加 所说的"所有变量名函数名等名称,在转成字节码后,只是一个个 ...
- python静态变量和静态方法_python的静态成员变量、实例成员变量、静态方法、类方法、实例方法...
标签: 静态成员变量(类变量)和普通成员变量(实例变量) 静态成员变量只能通过类名.变量名获得,实例成员变量,通过该实例引用.变量名获得. 在实例对静态成员变量赋值时,实例 python是动态类型的语 ...
- python常量变量和对象_Python学习笔记——变量和常量
一.变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型. 在Python中,不需要事先声明变量名和类型,直接赋值即可创建各种类型的对象变量 ...
- python特殊方法大全_python中星号变量的几种特殊用法
在Python中星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解,本文将详细介绍"星号参数" ...
- python中的变量的引用_python中的变量引用小结
python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...
- python函数名与变量名可以一样吗_python--第一类对象,函数名,变量名
一 . 第一类对象 函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用 可以作为返回值返回 , 可以作为参数进行传递 def func(): def people(): print('金 ...
- python变量的作用_Python中的变量
Python中的变量是用来表示一个值的标识符.变量代表了计算机内存中的一个地址.变量允许在程序中访问其他对象,调用函数或执行其他运算. 1.变量命名规则 变量是Python中的标识符,它应该遵循标识符 ...
- python函数闭包的应用_python学习第10天----函数名应用、闭包、迭代器
1.函数名的应用 1)如果直接打印函数名,打印出的为函数的地址 deffunc():print("你好,世界")print(func) 输出: View Code #可将函数赋值给 ...
最新文章
- java监控activemq,ActiveMQ与Spring整合-监听消息
- 如何使用Elasticsearch groovy script脚本更新数据
- WCF学习之旅—第三个示例之二(二十八)
- HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)
- wireshark过滤使用
- Linux加密框架 crypto 算法模板 HMAC模板举例
- 隐藏ribbon按钮
- Oracle数据库的启动与关闭
- 修改JEECG项目浏览器标题
- icesat/glas与SRTM参考椭球、基准对比
- weka 贝叶斯 java_weka中朴素贝叶斯的实现
- 科研笔记2:科技论文作图规范
- ubuntu/deepin安装配置mysql
- 程序员的圣诞礼物:计算机寓言之夏
- 程序员技术面常用知识点
- CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM 开源项目汇总
- PowerMill 2017五轴联动编程视频教程
- 数据恢复领军企业飞客与全球数据恢复“兵工厂”ACE建立战略合作
- shop源码PHP免授权,ShopsN五核全网免费开源电商系统 v2.4.0(拼团)
- 智慧园区物业可视化大屏
热门文章
- centos6.5安装mongodb2.6
- 物联网碰到云计算会怎么样?
- matlab学习:人脸识别之LBP (Local Binary Pattern)
- 什么样的项目是成功的?
- 使用nginx代理,怎么获取真实的IP
- Linux挂载点和文件系统类型介绍
- FragmentActivity和Activity的具体区别
- 哈佛大学计算机生物科学,生命科学专业
- [转载] python通过adb获取android手机耗电量
- 北航计算机学院博士机试考试题,北航2015考博真题回忆及全套资料 - 考博 - 小木虫 - 学术 科研 互动社区...