当前位置: 首页 > 面试题库 >

为什么某些函数在函数名称前后都有下划线“ __”?

柳威
2023-03-14
问题内容

这种“强调”似乎经常发生,我想知道这是否是Python语言中的要求,还是仅仅是一个约定问题?

另外,有人可以说出并解释哪些函数倾向于带有下划线,以及为什么(__init__例如)?


问题答案:

从Python PEP 8-Python代码样式指南:

[描述性:命名样式](https://www.python.org/dev/peps/pep-0008/#descriptive-naming-

styles)

可以识别以下使用前划线或后划线的特殊形式(通常可以将它们与任何大小写惯例结合使用):

  • _single_leading_underscore:“内部使用”指示器较弱。例如from M import *,不导入名称以下划线开头的对象。

  • single_trailing_underscore_:按惯例用于避免与Python关键字发生冲突,例如

Tkinter.Toplevel(master, class_='ClassName')

* __double_leading_underscore:在命名类属性时,调用名称修饰(在类FooBar内部,__boo变为_FooBar__boo;见下文)。

* __double_leading_and_trailing_underscore__:位于用户控制的名称空间中的“魔术”对象或属性。例如__init__
__import____file__。请勿发明此类名称;仅按记录使用它们。

请注意,带下划线和双下划线的名称本质上是为Python本身保留的:“切勿发明此类名称;仅按文档说明使用它们”。



 类似资料:
  • 问题内容: 我正在使用go,特别是QT绑定。但是,我不理解以下结构中前导下划线的使用。我知道一般使用下划线,但不知道此特定示例。 它与struct标签有关吗? 问题答案: 这些称为空白字段,因为空白标识符用作字段名称。 不能引用它们(就像任何以空白标识符作为名称的变量一样),但它们会参与结构的内存布局。通常,实际上,它们被用作填充,以将后续字段与字节位置(或内存位置)对齐,以匹配来自(或进入)另一

  • 问题内容: 我在课堂上有这个功能: 我尝试使用此函数来调用该函数: 问题是编译器希望它看起来像这样: 为什么第一个会导致错误? 问题答案: Swift 2.0更新 :现在,默认情况下,函数的功能与方法相同,并且对于两种方法而言: 第一个参数没有外部名称;和 其他参数的外部名称与内部名称相同。 除此之外,下面的规则仍然适用,只是速记语法已消失。 这是一个更一般的答案:函数在类之外定义为真函数时以及在

  • 问题内容: 我有两个几乎相同的简单JS小提琴,它们在选择更改时调用一个函数。在这两种情况下,函数名称都与select ID相同,但是由于某种原因,第一个小提琴可以正常工作,而第二个小提琴却因JavaScript错误而失败 :在FF9(Linux),Chromium16(Linux),IE8(Windows)中正常运行: 和 在FF9(Linux),Chromium16(Linux),IE8(Win

  • 问题内容: 我需要将一个函数作为参数传递给另一个函数,然后从该函数内部调用传递的函数……这可能对我来说更容易用代码解释。我基本上想做这样的事情: 有没有办法做到这一点..我正在使用PHP 4.3.9 谢谢! 问题答案: 我想你在找。 PHP手册中的示例:

  • 本文向大家介绍vue-router钩子函数有哪些?都有哪些参数?相关面试题,主要包含被问及vue-router钩子函数有哪些?都有哪些参数?时的应答技巧和注意事项,需要的朋友参考一下 全局的:beforeEach、beforeResolve、afterEach 路由的:beforeEnter 组件的:beforeRouteEnter、beforeRouteUpdate、beforeRouteLea

  • 问题内容: 我对实际的编程语言还很陌生,而Python是我的第一个。我对Linux有一点了解,足以应付暑假工作(我还在读高中),在工作中,我有很多空闲时间用来学习Python。 一件事一直让我着迷。当您拥有以下表达式时,Python中到底有什么不同? 我知道什么方法可以做什么,什么东西我可以得到,但是我的问题是:上面的双下划线方法与看起来更简单的等价方法有什么不同? PS,我不介意接受有关编程历史