在Python中,一切都是对象,包括常量数据类型,如整数数据类型(1,2,3...),字符串数据类型("ABC")。想要使用这些对象,就要使用它的对象引用。赋值操作符,实际上是使得对象引用对内存中存放数据的对象进行引用。

 
    那什么是标识符?标识符是对对象引用起的一个名字。
 
有效的Python标识符规则:
(1)长度任意长;
(2)标识符不能与关键字同名;
(3)在2.x版本的Python中,标识符以ASCII的字母或下划线开始,后面可以接字母、数字、下划线;在3.x的Python中,标识符ASCII字母、下划线以及大多数非英文语言的字母,只要是Unicode编码的字母都可以充当引导字符,后续字符可以是任意引导符,或任意非空格字符,包括Unicode编码中认为是数字的任意字符。(因此可以使用阿拉伯语、中文、日语或俄语字符或Unicode字符集支持的任意其他语言中的字符进行命名)
 
约定:
(1)不要使用Python预定义的标识符名,因此要避免使用NotImplemented与Eliiipsis等名字,这些在未来有可能被Python的新版本使用到;
(2)不要使用Python内置函数名或内置数据类型或异常名作为标识符名;
(3)关于下划线的约定,名字的开头和结尾都使用下划线的情况应该避免,因为Python中大量采用这种名字定义了各种特殊方法和变量;在有些情况,以一个或两个下划线引导的名称,但是没有使用两个下划线结尾的应该特殊对待。
 
举例:
>>> math=2
>>> math
2
上面的语句是合法的,但是它将与math数据类型绑定的对象引用重新与int数据类型对象绑定,那么将不能正常使用math数据类型的属性了。
>>> int=2
>>> int
2
和上面的一样,是合法的但是不提倡。
#合法
a123_=2
_a123=2
我=2 #中文
α=2 #希腊字母
#不合法的标识符名
a-b=2 #因为包含了减法操作符,'-'不是一个Unicode字母、数字、下划线,不能将2赋值给操作符
2miles=2 #不能数字开头
I'm=2 #单引号不是一个Unicode字母、数字或下划线
 
关于下划线还有一点想说的:
    单一的下划线可以作为一个标识符,在交互解释器或Python Shell内部,下划线实际上存放了最后一个被评估的表达式的结果。在通常运行的程序中,使用下划线和其他普通标识符一样,需要自己预先定义,非系统占有。
    在不关心迭代针对的数据项是,有些程序员喜欢在for...in..中使用_,如:
#没有使用到迭代的数据项
for _ in (0,1,2,3,4,5):
print("Hello")
    另外要注意一点,一些编写国际化程序的程序员一般会使用_作为其翻译函数的名称。这些程序员一般不使用gettext("translate me"),而是使用_("translate me")。
    当变量是私有的时候,用_xxx 来表示变量是很好的习惯。
    在类中,“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;“双下划线” 开始的是类的私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。
 
参考:
《Python 3 程序开发指南》(第二版)
 
本文链接:

【原创】Python第二章——标识符命名规则的更多相关文章

  1. Java第二天——标识符命名规则、Java的知识、快捷键的使用、Scanner获取值的常用方法

    1.标识符命名规则 字母.下划线.数字.美元符号($)由这四个部分组成. 标识符=首字母+其他 首字母:字母.下划线.美元符号($) 其他:字母.下划线.数字.美元符号($) 注意: 1.首字母不能为 ...

  2. 简学Python第二章__巧学数据结构文件操作

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  3. Golang的标识符命名规则

    Golang的标识符命名规则 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关键字 1>.Go语言有25个关键字 Go语言的25个关键字如下所示: break,defau ...

  4. C++之关键字&标识符命名规则

    关键字 **作用:**关键字是C++中预先保留的单词(标识符) * **在定义变量或者常量时候,不要用关键字** C++关键字如下: 提示:在给变量或者常量起名称时候,不要用C++得关键字,否则会产生 ...

  5. 【Java】标识符 & 命名规则

    Java的标识符和命名规则 什么是标识符[Identifier]? 指用来标识某个实体的一个符号.在不同的应用环境下有不同的含义. 在编程语言中,标识符是开发者编程时使用的名字,对于变量.常量.函数. ...

  6. 2.6 C#的标识符命名规则

    C#标识符的命名规则 程序中的变量名.常量名.类名.方法名,都叫做标识符.C#有一套标识符的命名规则,如果命名时不遵守规则,就会出错.这套规则简单说有下面三条: ①标识符只能由英文字母.数字和下划线组 ...

  7. [JAVA第二课] java命名规则

    Java良好的命名规则以及代码风格可以看出来一个程序员的功底,好多公司也会注重这方面,他们招聘员工在有些时候往往就是根据一个人的代码风格来招人,所以下面就就我知道的代码风格作简要的说明一下.Java命 ...

  8. 翻译:Identifier Name标识符命名规则

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  9. python之变量的命名规则

    变量的命名规则: 1.变量名由数字.字母和下划线组成名 2.变量名不能以数字开头 3.禁止使用python中的关键字 4.不能使用中文和拼音 5.变量名要区分大小写 6.变量名要有意义 7.推荐写法: ...

随机推荐

  1. promise 链式

    let send = (item) => Promise.resolve(`此时参数是:(${item})`) async function init(){ const arr = [1,2,3 ...

  2. 小白的CTF学习之路5——内存的逻辑结构

    很衰的一天,各种意料之外的问题,但都挡不住我每日一更的步伐 内存的逻辑结构大致分为以下几种: 数组 栈与队列 链表 二叉树 以上,数组,栈,链表是我这章要说明的 在学习前需要了解的两个问题: 1.内存 ...

  3. 将n个东西分成n1,n2,n3,n4,....nr 共 r组分给r个人有多少种分法。

    (n!/(n1! *n2! *n3!..nr!) )   * r!/( 同数量组A的数量! 同数量组B的数量!....) 比方20个东西分成2,2,,2,2   3,3,3,3 8组分给8个人有多少种 ...

  4. function()

    avaScript中的function可以有以下两种用法:一是做“普通逻辑代码容器”,也就是我们通常意义上的函数.方法,和我们C/C++里的函数没什么大分别,只是写法稍有不同.用法更加灵活:二是做对象 ...

  5. CentOS 7 rpm安装jdk

    RPM 安装jdk1.8.0_111 ,查询系统自带的jdk rpm -qa | grep java 查询结果如下: [root@bogon ~]# rpm -qa | grep java javap ...

  6. Unity3D编辑器扩展(二)——定义自己的窗口

    上一篇我们讲了如何定义菜单按钮 https://www.cnblogs.com/xiaoyulong/p/10115053.html 这一篇我们讲如何定义自己的窗口. 定义窗口我们需要继承 Edito ...

  7. 效果监控js源码

    function _bxmPlatformFn(e, t) { var n, o, i = ""; try { i = localStorage.getItem("lis ...

  8. openXML设置Excel行组合

    重要代码: row = new DOS.Row() { RowIndex = new DOX.UInt32Value(rowIndex), Spans = new DOX.ListValue<D ...

  9. web项目中对post请求乱码处理

    <filter> <filter-name>characterEncoding</filter-name> <filter-class>org.spri ...

  10. qscoj 喵哈哈村的打印机游戏 区间dp

    点这里去看题 区间dp ,dp[l][r][d]代表从l到r的区间底色为d,具体看代码 第一次见到区间dp...两个小时对着敲了五遍终于自己敲懂了一遍ac #include<bits/stdc+ ...