文章详情页 您现在的位置是:网站首页>文章详情
悉数python中的下划线
Jeyrce.Lu 发表于:2020年5月6日 21:42 分类:【Python】 2011次阅读
在python程序中,我们会经常看到下划线的存在,但是关于下划线的用法,你真的理解了吗?本文带你全面了解python中的所有下划线用法。
var_var、func_func,下划线作为分隔符
此类用法为python的基本风格,PEP8规范推荐函数、变量分割符为下划线,这一点不同于其他驼峰命名法(但是类的命名推荐大驼峰命名法)
open_source = "MIL" is_valid = False def get_user_name(): return "Jeeyshe"
_var、_func,单下划线开头变量或方法
(1)此类变量和方法用于表示私有,是文件的内部实现
_name = "Jeeyshe" def _show(): print("Jeeyshe")
如上_name变量和_show方法代表的就是内部实现,仅支持本文件调用
from src.source import *
以上导入方法将会忽略掉_name, _show,但是遗憾的是,仍然可以通过单独导入的方式使用
from src.source import _name, _show
(2)用于定义抽象父类
class _BaseWorker(object): def __init__(self): self.name = None def get(self): raise NotImplementedError def set(self, name): raise NotImplementedError class LightWorker(_BaseWorker): def get(self): return self.name or self.__class__.__name__ def set(self, name): self.name = name class NormalWorker(_BaseWorker): def get(self): return self.name or self.__str__() def set(self, name): self.name = name
var_、func_,下划线结尾变量(可多个)或方法
此种用法和普通变量并无区别,但是可以用来解决自定义资源和系统内置变量命名冲突的情况
import sys import time def sys_(): time.sleep(3) sys.exit(0) time_ = "Morning"
__var和__func
(1)对于普通变量核函数,此用法和_var、以及任意多下划线变量_____var完全无差别
(2)对于类中的__func方法,将阻止子类继承
class C(object): def __get(self): return self.__class__.__name__ def get(self): self.__get() class D(C): def has(self): self.__get()
此时通过D创建的实例无法调用__get方法
from src.source import C, D if __name__ == '__main__': c = C() c.get() d = D() d.has() Traceback (most recent call last): File "/home/jeeyshe/Code/python/xshop/src/server.py", line 16, in <module> d.has() File "/home/jeeyshe/Code/python/xshop/src/source.py", line 91, in has self.__get() AttributeError: 'D' object has no attribute '_D__get'
__var__、__func__双下划线包裹的魔术方法和变量
此类方法和变量在系统中都具有特殊的意义和用法,除非你自己直到你在干什么,否则一定不要将自己的变量方法如此定义,常用的变量方法如下
import os root = os.path.dirname(os.path.abspath(__file__)) class XXX(object): def __init__(self, name, children): self.name = name self.children = children def __getitem__(self, item): return item if item in self.children else None if __name__ == '__main__': file = os.path.join(root, "xxx.txt")
_特殊变量
单独的下划线也是python中的一种特殊变量(一个或多个下划线都可),这种变量可谓是一枝独秀。
(1)用于忽略一些不想要的值,如在一个列表中我们只需要第一个值
s = [1, 2, "xx"] n, _, _ = s
(2)用于普通变量进行赋值或导入
from os import path as _ if __name__ == '__main__': print(_.join("/root", "xxx.txt")) _ = 5 print(_)
(3)最骚操作,作为临时变量承载上一次的赋值(但是仅仅在交互式环境起作用)
In [5]: s = "xxx" In [6]: _ Out[6]: '' In [7]: s Out[7]: 'xxx' In [8]: _ Out[8]: 'xxx'
python中的下划线实际上并不统一,包括单双个数,变量和方法,并没有一个统一的标准去约束。
版权声明 本文属于本站 原创作品,文章版权归本站及作者所有,请尊重作者的创作成果,转载、引用自觉附上本文永久地址: http://blog.lujianxin.com/x/art/6op5r64l227y
上一篇:Linux性能工具和知识图谱
下一篇:悉数python中的下划线
猜你喜欢
文章评论区
作者名片
- 作者昵称:Jeyrce.Lu
- 原创文章:61篇
- 转载文章:3篇
- 加入本站:2046天
作者其他文章
站长推荐
友情链接
站点信息
- 运行天数:2047天
- 累计访问:164169人次
- 今日访问:0人次
- 原创文章:69篇
- 转载文章:4篇
- 微信公众号:第一时间获取更新信息