开发者

Why does it do this ? if - __name__ == '__main__' [duplicate]

开发者 https://www.devze.com 2022-12-14 20:35 出处:网络
This question already has answers here: Closed 10 years ago. Duplicate of: What does if __name__== \"__main__\" do?
This question already has answers here: Closed 10 years ago.

Duplicate of:

What does if __name__== "__main__" do?

Consider this code:

if __name__ == '__main__':
    import pdb
    pdb.run("interact()\n")

What does the following line mean?

if(__name__==开发者_C百科'__main__')

I fainted.


__name__ is a variable automatically set in an executing python program. If you import your module from another program, __name__ will be set to the name of the module. If you run your program directly, __name__ will be set to __main__.

Therefore, if you want some things to happen only if you're running your program from the command line and not when imported (eg. unit tests for a library), you can use the

if __name__ == "__main__":
  # will run only if module directly run
  print "I am being run directly"
else:
  # will run only if module imported
  print "I am being imported"

trick. It's a common Python idiom.


This will be true if this module is being run as a standalone program. That way, something can act either as a module imported by another program, or a standalone program, but only execute the code in the if statement if executed as a program.


That is a check to see if you are directly running the script or if it is included in a library.

When you run a python script like this:

python myScript.py

It sends a parameter, telling you to run the programs first method, which is widely called "main", so when __name__ is __main__ you know that the program was executed from a command line or double clicked.


He has written a python module, intended to be used via import.

If the module is passed to the interpreter as the main python script, the code you quote will run. This will invoke the interact() method under the python debugger.

0

精彩评论

暂无评论...
验证码 换一张
取 消