优草派  >   Python

Python中的__name__怎么用?

赵天宇            来源:优草派

在Python中,__name__是一个特殊的变量,用于表示当前模块的名称。它在不同的场景下拥有不同的用途,可以用来判断代码是作为模块导入,还是直接运行。

1.作为模块导入

Python中的__name__怎么用?

当一个Python文件作为模块导入到另一个Python文件中时,__name__的值为该模块的名称。例如,我们有一个名为“example.py”的文件,其中包含如下代码:

```

def func():

print("This is a function in example module.")

if __name__ == "__main__":

print("This is the main module.")

```

在另一个Python文件中导入该模块并调用其中的函数:

```

import example

example.func()

```

这时,输出的结果为“This is a function in example module.”,而不会输出“This is the main module.”。这是因为在导入模块时,Python会先执行模块中的代码,而当__name__的值为模块名称时,说明该模块是被导入的,因此不会执行if语句中的代码。

2.直接运行

当我们直接运行一个Python文件时,__name__的值为“__main__”,因此可以利用这个特性来编写测试代码,例如:

```

def func():

print("This is a function in example module.")

if __name__ == "__main__":

func()

```

当我们直接运行该文件时,输出的结果为“This is a function in example module.”。这是因为在直接运行文件时,Python会将该文件视为主模块,并将__name__的值设置为“__main__”,因此会执行if语句中的代码。

3.模块初始化

在Python中,每个模块都会在第一次导入时被初始化,因此可以利用这个特性来执行一些初始化操作。例如,我们可以在模块中定义一个全局变量,并在初始化时给它赋值:

```

# example.py

count = 0

def increment():

global count

count += 1

if __name__ == "__main__":

print("This is the main module.")

```

当我们导入该模块并调用其中的函数:

```

import example

example.increment()

print(example.count)

```

输出的结果为“1”,说明全局变量count已经被成功初始化并赋值为0。

4.代码调试

__name__还可以用于代码调试,例如我们可以在代码中加入一些调试信息,只有在__name__的值为“__main__”时才会输出,例如:

```

def func():

print("This is a function in example module.")

if __name__ == "__main__":

print("This is the main module.")

print("Debug information.")

```

当我们直接运行该文件时,输出的结果为:

```

This is the main module.

Debug information.

```

而当该文件被作为模块导入时,不会输出“Debug information.”。

综上所述,__name__是一个十分有用的变量,可以用于判断代码是作为模块导入,还是直接运行,可以用于模块初始化和代码调试等多个场景。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行