`
qindongliang1922
  • 浏览: 2183731 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117527
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59896
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71300
社区版块
存档分类
最新评论

Python3.4里面__name和__main__的作用

阅读更多
在python的代码里我们经常会看到这样两个片段,__name__和__main__那么代表什么意思呢?

在这之前,我们先来了解下python文件的调用方法,主要有两种
1,直接在cmd或shell终端调用xxx.py文件
2,导入别的python文件里做为一个工具类调用

懂了上面这两个方式后,我们在理解这两个属性的作用就好理解了,其实__name__是每个模块或类里面的内置属性,__main__代表直接运行这个py文件时的标记,如果不是__main__那就说明,这个py文件,是导入到别的python代码里,昨晚工具类使用的,下面看散仙写如下的例子:
这个是测试的python文件b.py代码

def say():
    print("say")

def b():
    print("B")

def c():
    print("C")


def d():
    print("D")



if __name__=="__main__":
    print("我是直接运行的")
    b();
else:
    print("不是直接运行!")


if __name__=="b":
    print("导入模块调用了")
else:
    print("其他模块")



在cmd下直接运行,打印结果如下:




在别的python代码里调用打印如下:
D:\python\python.exe D:/pythonide/pythonprojectworkspace/python/main方法测试/p.py
不是直接运行!
其他模块

Process finished with exit code 0



下面看下如何在python的里面,测试这个区别:


class  Person:
    def run(self):
        print("我在奔跑!")
    def swimming(self):
        print("我在游泳")
    if __name__=="__main__":
        print("Person里条用")
    else:
        print("oh no person!")


class Model:
    def say(self):
        print("我是一个model")
    def p(self):
        print("Model")
    if __name__=="__main__":
        print("Model里条用")
    else:
        print("oh no model!")





if __name__ =="__main__":
    p=Person();
    p.run();
else:
    x=Model();
    x.say();


打印的效果如下:
D:\python\python.exe D:/pythonide/pythonprojectworkspace/python/main方法测试/p.py
不是直接运行!
其他模块
oh no person!
oh no model!
我是一个model

Process finished with exit code 0



通过上面这个例子,我们能够看出来,在一个py文件里的多个类也是可以定义自己的__name__和__main__如果我们没有明确指定是那个类的方法,那么执行这个文件导入模块时,就会把这个py下所有定义的类__name和__main__都执行一遍。











  • 大小: 18.6 KB
分享到:
评论

相关推荐

    python3.4 64位+pyqt5.4

    if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 这个例子展示了PyQT5的基本用法,但其实它支持更高级的功能,如拖放操作、网络编程、多媒体支持、...

    PyQt5 for Py3.4_WinXP 亲测可用安装包.rar

    if __name__ == '__main__': app = QApplication(sys.argv) main_window = MainWindow() main_window.show() sys.exit(app.exec_()) ``` 这段代码会创建一个基本的主窗口,显示"PyQT5示例"的标题。通过PyQT5...

    backports.ssl_match_hostname-3.4.0.2

    if __name__ == "__main__": main() ``` 在这个例子中,`http_server`的`ssl_options`参数包含了`check_hostname=True`,这将调用`backports.ssl_match_hostname`(或Python 3.4+的`ssl.match_hostname`)来进行...

    PyQt5-5.4.1-gpl-Py3.4-Qt5.4.1-x64

    if __name__ == '__main__': app = QApplication(sys.argv) main_window = MainWindow() main_window.show() sys.exit(app.exec_()) ``` 这个例子创建了一个简单的窗口,标题为"Hello, PyQt5!"。运行这个脚本,...

    Ubuntu18.04 一键升级Python所有第三方包 及安装python包的方法

    将`from pip import main`改为`from pip import __main__`,并相应地更新`sys.exit(main())`为`sys.exit(__main__._main())`。 4. 验证修改是否成功,运行`pip3 -V`,应显示升级后的pip版本。 一键升级所有Python第...

    Python-asyncio一个给Python33使用的asyncio模块从Python34开始asyncio已经被纳入标准库

    if __name__ == '__main__': asyncio.run(server()) ``` 在这个例子中,`handle_client`协程处理每个客户端连接,读取数据,发送回一个响应,然后关闭连接。`server`协程启动服务器并监听新的连接。`asyncio.run()...

    Python库 | grpcio-1.17.1rc1-cp34-cp34m-win32.whl

    if __name__ == '__main__': run() ``` **gRPC特性** - **流式RPC**:gRPC支持单向和双向流,允许服务端和客户端同时发送数据流。 - **安全性**:gRPC使用TLS加密,可以实现身份验证和授权,确保通信安全。 - *...

    Dive into Python

    - 使用`if __name__ == "__main__":`确保只有当脚本被直接运行时才会执行某些代码。 - 示例: ```python def hello(name): print(f"Hello, {name}!") if __name__ == "__main__": hello("World") ``` #### ...

    OpenCV threshold Demo code

    if __name__ == "__main__": app = QApplication([]) main_window = MainWindow("path_to_your_image.jpg") main_window.show() app.exec_() ``` 以上代码将创建一个窗口,其中显示了经过二值阈值处理的图像。...

    python3.6.5参考手册 chm

    What’s New In Python 3.4 Summary – Release Highlights New Features PEP 453: Explicit Bootstrapping of PIP in Python Installations Bootstrapping pip By Default Documentation Changes PEP 446: Newly...

    Python库和Shell实用程序可监视文件系统事件。-Python开发

    示例API用法一个简单的程序,它使用看门狗来监视指定为命令行参数的目录并记录生成的事件:import sys导入时间从watchdog.observers导入日志记录从watchdog.events导入Observer如果__name__ ==“ __main__”则导入...

    python-Web 笔记

    - `if __name__ == '__main__': app.run()`:运行应用服务器。 ##### 2.3 访问 Flask 应用 启动 Flask 服务后,可以通过浏览器访问 `http://localhost:5000/show/info` 来查看页面。 #### 三、HTML 基础 HTML ...

    异步IO:Python中的并发编程革命

    if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() ``` #### 异步IO的应用场景 异步IO非常适合以下几种场景: 1. **网络服务**:在网络通信中,异步IO...

    Python decimal模块使用方法详解

    if __name__ == '__main__': demo() ``` 在这个示例中,`getcontext().prec`用来设置总的位数,而`quantize()`结合不同的取整策略,可以实现不同需求的四舍五入。 总之,Python的decimal模块提供了一种精确的十...

    Python 入门详细教程-1天学会 Python.docx

    if __name__ == "__main__": ip_prefix = "192.168.10." begin = 101 end = 200 for i in range(begin, end): ip = ip_prefix + str(i) if test_ping(ip): print(ip + ": 连通") else: print(ip + ": 不...

    py-eve-chat-mon:该库侧重于监视EVE Online聊天日志中的消息,而不执行其他任何操作。 它旨在集中且轻巧

    发行/母版: 开发: Python Eve聊天监控 该库侧重于监视EVE Online聊天日志中的消息,而不执行其他任何操作。 它意在集中且轻巧。...if __name__ == "__main__" : monitor = Monitor ([ 'Alliance' , 'Corp' ],

    better_profanity:快速清洁,发誓字符串中的单词(和他们的leetspeak)

    好亵渎快速清洁,发誓字符串中的单词(和他们的leetspeak) 当前存在。... 用法 from better_profanity import profanityif __name__ == "__main__": profanity.load_censor_words() text = "You p1ec3

    Stack-Overflow-About-Python-中文1

    【Python中的关键字yield有什么作用?】 `yield` 关键字在 Python 中用于创建生成器(generator)。生成器是一种特殊的迭代器,它不会一次性计算整个序列,而是每次在需要时生成下一个值。`yield` 语句暂停函数的...

Global site tag (gtag.js) - Google Analytics