【从零学Python】关于python下划线命名的事儿、enumerate()

一、 Python 的类的下划线命名有什么不同

1,以一个下划线开头的命名 ,如_getFile

这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入。

2,以两个下划线开头的命名 ,如__filename .

双下划线开头的命名形式在 Python 的类成员中使用表示名字改编 (Name Mangling),即如果有一 Test 类里有一成员 __x,那么 dir(Test) 时会看到 _Test__x 而非 __ x。这是为了避免该成员的名称与子类中的名称冲突。但要注意这要求该名称末尾没有下划线。

3,以两个下划线开头和结尾的命名,如 init()

双下划线开头双下划线结尾的是一些 Python 的“魔术”对象,如类成员的 init、del、add、getitem 等,以及全局的 file、name 等。Python 官方推荐永远不要将这样的命名方式应用于自己的变量或函数,而是按照文档说明来使用。

4,其它

在 Python 的官方推荐的代码样式中,还有一种单下划线结尾的样式,这在解析时并没有特别的含义,但通常用于和 Python 关键词区分开来,比如如果我们需要一个变量叫做 class,但 class 是 Python 的关键词,就可以以单下划线结尾写作 class_。

二、enumerate()
enumerate()函数用于将一个可遍历的数据对象(列表、元组、字符串等)组合为一个索引序列,同时列出数据下标和数据
在运行C3D代码时,遇到一行代码:labels={label:index for index,label in enumerate(sorted(set(a)))},又一次读不懂字典所表示的含义。

a=[1,2,3,4,5,8,1,2,0]
b=sorted(a)
print(b)
for index,label in enumerate(sorted(set(a))):
    print("index,label",index,label)
labels={label:index for index,label in enumerate(sorted(set(a)))}
print(labels)
c=set(a)
print(c)

输出

[0, 1, 1, 2, 2, 3, 4, 5, 8]

index,label 0 0

index,label 1 1

index,label 2 2

index,label 3 3

index,label 4 4

index,label 5 5

index,label 6 8

{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 8: 6}

{0, 1, 2, 3, 4, 5, 8}

如上述代码所示,应该将labels={label:index for index,label in enumerate(sorted(set(a)))}拆分为

for index,label in enumerate(sorted(set(a))):
    labels[label] = index
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值