python 中__name__的用法
时间: 2023-10-03 08:07:38 浏览: 45
在Python中,`__name__`是一个特殊的内置变量,用于表示当前模块的名字。它通常用于判断一个模块是作为主程序运行还是被导入为一个模块。
当一个模块作为主程序运行时,`__name__`的值将被自动设置为`'__main__'`;而当一个模块被导入时,`__name__`的值将是模块的文件名(不包括扩展名)。
这个特性可以用于编写可执行模块和可导入模块的代码区分。例如,我们可以将一些测试代码放在`if __name__ == '__main__':`下面,这样当模块作为主程序执行时,这部分代码会被运行,而当模块被导入时,这部分代码则不会执行。
以下是一个示例:
```python
# mymodule.py
def my_function():
print("This is my function.")
if __name__ == '__main__':
# 作为主程序执行时执行的代码
print("This is the main program.")
my_function()
```
如果我们直接运行这个模块,输出将会是:
```
This is the main program.
This is my function.
```
但如果我们在另一个模块中导入并调用`my_function()`,输出将只有一行:
```
This is my function.
```
使用`__name__`变量能够帮助我们在不同的上下文中执行特定的代码,从而提高模块的可重用性。
相关问题
python中__name__函数的用法
__name__函数是一个内置的特殊变量,在Python中用于获取当前模块的名称。它通常用于判断模块是作为独立运行的脚本还是作为被导入的模块。
当一个Python文件作为主程序直接运行时,__name__的值将被设置为'__main__',即模块的名称为'__main__'。这时可以在脚本中添加一些测试代码,只有当该脚本作为主程序运行时才会执行。
例如,假设有一个名为example.py的脚本文件,其中包含如下代码:
```
def func():
print("Hello, CSDN!")
if __name__ == "__main__":
func()
```
当我们直接运行example.py时,输出结果为"Hello, CSDN!"。而如果将example.py作为模块导入到另一个程序中,不会执行if条件下的代码。
这种用法可以方便地将模块作为库使用,同时也可以在需要时作为独立的脚本执行一些特定操作。
Python中__setattr__方法
__setattr__方法是Python中的一个特殊方法,用于设置对象的属性值。当我们使用“对象.属性 = 值”的方式给对象设置属性值时,实际上是调用了该对象的__setattr__方法。该方法的定义如下:def __setattr__(self, name, value)。其中self表示对象本身,name表示属性名,value表示属性值。在__setattr__方法中,我们可以对属性值进行一些限制或处理,比如检查属性值的类型、范围等。