首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么print(__name__)提供'builtins'?

print(name)提供'builtins'是因为在Python中,name是一个特殊的全局变量,它表示当前模块的名称。当一个Python文件被直接运行时,其name变量的值为'main';而当该文件作为模块被导入时,其name变量的值为模块的名称。

'builtins'是Python中的一个内置模块,它包含了Python的内置函数和异常。当我们在一个Python文件中使用print(name)时,如果该文件被直接运行,name的值为'main',因此print语句会输出'main';如果该文件被导入为模块,name的值为模块的名称,因此print语句会输出模块的名称。

这种设计可以方便地判断一个Python文件是被直接运行还是被导入为模块,并且可以在需要时执行一些特定的代码。例如,我们可以在一个Python文件中添加以下代码:

if name == 'main': # 在这里写入只有在该文件被直接运行时才会执行的代码

这样,当该文件被导入为模块时,if语句的条件不满足,其中的代码不会被执行;只有当该文件被直接运行时,if语句的条件满足,其中的代码才会被执行。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云数据库 MySQL 版(CMYSQL):https://cloud.tencent.com/product/cdb_mysql
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 Python 3 把 print 改为函数?

以下对 print() 函数的争议是提取自 Guido 本人的 Python-3000 消息【2】: print 是唯一的应用程序级功能,并拥有专属的语句。...为 print 设置特殊的语法只会给进化带来一个更加巨大的屏障,例如这有个猜想,一个新的 printf() 函数不用多久就会出现,跟 print() 函数共存。...如果 print() 是个函数,就可以非常容易地在一个模块内替换它(仅需 def print(*args):…),甚至可以在整个程序内替换(例如放一个不同的方法进 __builtin__.print)。...因此,当前版本的以下写法不能被直接转换: print "a", print 它不会在“a”与换行符之间打印一个空格。...print ("Hello") Hello >>> print ("Hello", "world") Hello world 幸运的是,因为 print 是 Python 2 中的一个语句,所以它可以被通过自动化工具而检测到

63220
  • 为什么 Python 3 把 print 改为函数?

    以下对 print() 函数的争议是提取自 Guido 本人的 Python-3000 消息【2】: print 是唯一的应用程序级功能,并拥有专属的语句。...为 print 设置特殊的语法只会给进化带来一个更加巨大的屏障,例如这有个猜想,一个新的 printf() 函数不用多久就会出现,跟 print() 函数共存。...如果 print() 是个函数,就可以非常容易地在一个模块内替换它(仅需 def print(*args):…),甚至可以在整个程序内替换(例如放一个不同的方法进 __builtin__.print)。...因此,当前版本的以下写法不能被直接转换: print "a", print 它不会在“a”与换行符之间打印一个空格。...例如,在 2.x 中: >>> print ("Hello") Hello >>> print ("Hello", "world") ('Hello', 'world') 而在 3.0 中: >>> print

    52120

    Python内置函数

    翻译 原博客:https://sadh.life/post/builtins/#so-whats-a-builtin 前言 如Python标准库文档所言: Python 标准库非常庞大,所提供的组件涉及范围十分广泛...显然,一篇博客无法覆盖Python标准库的所有内容,这篇博客对Python的内置(builtin)模块提供了一个简要的概述。 什么是内置(builtin)呢?...Python中的每个模块都有一些预定义的全局变量,例如__name__ 和__doc__ ,它们分别是模块的名称和模块的文档字符串。...您可以在 REPL(Read-Evaluate-Print-Loop,Python解释器的功能) 中尝试此操作: >>> print(__name__) __main__ >>> print(__doc...print(dir(__builtins__)) (数了一下,有154个) 有很多,所以我们会将它们分成不同类型,逐个击破。

    57430

    Python中的命名空间和作用域(2)

    Python提供了名为globals()和locals()的内置函数。这些内置函数允许你访问全局和本地的命名空间字典。...'>, '__spec__': None, 13 '__annotations__': {}, '__builtins__': , 14...print(x) ... >>> f() 40 >>> x 40 完全没有必要这样做,因为全局声明已经较为明确地表达了这种做法的意图。但它确实为globals() 的应用提供了另一个例证。...事实上,在本例中,global x语句不仅不能提供对闭包作用域内x的访问,而且还在全局范围内创建了一个名为x的对象,其值为40: >>> def f(): ......第9行的print()语句确认对g()的调用已将闭包作用域内的x值更改为40。 最佳实践 尽管Python提供了关键字global和nonlocal,但这些关键字的使用并不总是可取的。

    1K20

    为什么要用日志库而不是print进行日志输出

    这是一个SpringBoot项目,负责对外提供接口数据与一些对数据的定时操作。排查logback输出的日志文件都是INFO级别。一个WARN、ERROR、FATAL都没有出现。...为什么要用日志库而不是System.out.println() 类似于上面出现的情况,我们大多数情况下对于日志的输出都会有个固定的目录。其中涉及到服务器的管理、架构、权限、灵活性等。...优先级 log4j提供优先级支持,log4j提供了几种优先级的支持:DEBUG、INFO、WARN、ERROR、FATAL。...还提供接口提供我们来自由定制的插件来实现项目的需求。例如文件统一发送到某个远程文件系统或直接发送告警短信、或者发送HTTP请求等。例如当前我们统一接入告警系统需要发送一些webhock。...日志库允许逐级控制日志目录,提供细粒度的日志输出控制。而System.out.println()只能提供应用程序级别的控制。 快速实现自定义的输出(通知)。

    1.7K21
    领券