网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月05日漏签0天
python吧 关注:479,906贴子:1,981,626
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 3回复贴,共1页
<<返回python吧
>0< 加载中...

Python中下划线的基本操作

  • 只看楼主
  • 收藏

  • 回复
  • 漩涡鸣人1990
  • 童生
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
关于Python中下划线你了解多少?今天我们就给大家讲讲Python中下划线的一些基本操作,在初学阶段,我们要弄清楚python是什么?是一种面向对象、解释型计算机程序设计语言,也是一种功能强大而完善的通用型语言,这种语言相对来程序员来说是非常简捷而清晰。

好了,正式开始本次python教程的学习:
一、单下划线(_)
通常情况下,会在以下3种场景中使用:
1、在解释器中:在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果。这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用。
?
12345678910 >>> _ Traceback (most recent call last):File "", line 1, inNameError: name '_' is not defined>>> 42>>> _42>>> 'alright!' if _ else ':(''alright!'>>> _'alright!'
2、作为一个名称:这与上面一点稍微有些联系,此时“_”作为临时性的名称使用。这样,当其他人阅读你的代码时将会知道,你分配了一个特定的名称,但是并不会在后面再次用到该名称。例如,下面的例子中,你可能对循环计数中的实际值并不感兴趣,此时就可以使用“_”。
?
123 n = 42for _ in range(n):do_something()
3、国际化:也许你也曾看到”_“会被作为一个函数来使用。这种情况下,它通常用于实现国际化和本地化字符串之间翻译查找的函数名称,这似乎源自并遵循相应的C约定。例如,在Django文档“转换”章节中,你将能看到如下代码:
?
12345 from django.utils.translation import ugettext as _from django.http import HttpResponsedef my_view(request):output = _("Welcome to my site.")return HttpResponse(output)
可以发现,场景二和场景三中的使用方法可能会相互冲突,所以我们需要避免在使用“_”作为国际化查找转换功能的代码块中同时使用“_”作为临时名称。
二、名称前的单下划线(如:_shahRIAr)
程序员使用名称前的单下划线,用于指定该名称属性为“私有”。这有点类似于惯例,为了使其他人(或你自己)使用这些代码时将会知道以“_”开头的名称只供内部使用。正如Python文档中所述:
以下划线“_”为前缀的名称(如_spam)应该被视为API中非公开的部分(不管是函数、方法还是数据成员)。此时,应该将它们看作是一种实现细节,在修改它们时无需对外部通知。
正如上面所说,这确实类似一种惯例,因为它对解释器来说确实有一定的意义,如果你写了代码“from <模块/包名> import *”,那么以“_”开头的名称都不会被导入,除非模块或包中的“__all__”列表显式地包含了它们。了解更多请查看“Importing * in Python”。
名称前的双下划线(如:__shahriar)
名称(具体为一个方法名)前双下划线(__)的用法并不是一种惯例,对解释器来说它有特定的意义。Python中的这种用法是为了避免与子类定义的名称冲突。Python文档指出,“__spam”这种形式(至少两个前导下划线,最多一个后续下划线)的任何标识符将会被“_classname__spam”这种形式原文取代,在这里“classname”是去掉前导下划线的当前类名。例如下面的例子:
?
12345678 >>> class A(object):... def _internal_use(self):... pass... def __method_name(self):... pass...>>> dir(A())['_A__method_name', ..., '_internal_use']
正如所预料的,“_internal_use”并未改变,而“__method_name”却被变成了“_ClassName__method_name”。此时,如果你创建A的一个子类B,那么你将不能轻易地覆写A中的方法“__method_name”。
?
123456 >>> class B(A):... def __method_name(self):... pass...>>> dir(B())['_A__method_name', '_B__method_name', ..., '_internal_use']
这里的功能几乎和Java中的final方法和C++类中标准方法(非虚方法)一样。
三、名称前后的双下划线(如:__init__)
这种用法表示Python中特殊的方法名。其实,这只是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。通常,你将会覆写这些方法,并在里面实现你所需要的功能,以便Python调用它们。例如,当定义一个类时,你经常会覆写“__init__”方法。
虽然你也可以编写自己的特殊方法名,但不要这样做。
?
123456 >>> class C(object):... def __mine__(self):... pass...>>> dir(C)... [..., '__mine__', ...]
其实,很容易摆脱这种类型的命名,而只让Python内部定义的特殊名称遵循这种约定。
总结:以上就是关于Python中下划线【单下划线(_)、名称前的单下划线、名称前后的双下划线】的基本使用方法。Python相关资料:http://www.kokojia.com/python/video37875-2972.html


  • san11030
  • 童生
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
又是麦子学院


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回python吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示