Python中if __name__=='__main__'用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haeasringnar/article/details/79977809

if name == ‘main‘:
#为了区分你是主动执行这个脚本,还是通过导入执行
#手动执行这个脚本,就会执行这里
# 如果当做导入使用,就不会执行这里,而是执行其他代码
# 外部导入时都会执行,只是这个没有成立而已

例如有以下代码:

def func():
    print('我会在哪里执行')

print('我会在任何地方执行')
if __name__ == '__main__':
    print('不在外部调用,内部手动执行时,我才会执行')
    func()

导入操作的代码。

import danbaotest02

danbaotest02.func()

发现当外部导入时,if name == ‘main‘:下的代码不会执行,只会执行上面的代码
而当手动执行脚本时会全部执行。

阅读更多

关于Python中if __name__ == '__main__':的问题

04-13

您好,请教一个很初级的python问题:rn我在研究BitTorrent的时候自己写了一段代码,存入testMain.py这个文件:rn#!/usr/bin/env pythonrn# -*- coding: cp936 -*-rnrn# Written by Bram Cohenrn# see LICENSE.txt for license informationrnrnimport sysrnsys.path.append('D:\develop\Python\BitTorrent-3.3\BitTorrent')rnsys.path.append('D:\develop\Python\BitTorrent-3.3')rnrnfrom sys import argvrnfrom BitTorrent.parseargs import parseargs, formatDefinitionsrnrndefaults = [rn ('piece_size_pow2', 18,rn "which power of 2 to set the piece size to"),rn ('comment', '',rn "optional human-readable comment to put in .torrent"),rn ('target', '',rn "optional target file for the torrent")rn ]rnrnif __name__ == '__main__':rn if len(argv) < 3:rn print 'usage is -'rn print argv[0] + ' file trackerurl [params]'rn printrn print formatDefinitions(defaults, 80)rn else:rn try:rn config, args = parseargs(argv[3:], defaults, 0, 0)rn print 'config',configrn print 'args',argsrn except ValueError, e:rn print 'error: ' + str(e)rn print 'run with no args for parameter explanations'rnrn我觉得我的问题应该很初级,但是我确实没看到相关资料,只在Python编程宝典时看到了这样一段描述的话:rn从if __name__ == '__main__':往下的代码是通用于许多GUI程序的一项约定。该行检测名称空间是否为rn“__main__”,并在条件成立(即为文件调用了解释器)的前提执行后续语句。如果文件作为一个模块导入,rn该条件就不成立,如果程序单独运行,而非作为模块在另一个程序中使用,后续语句就会执行。rnrn我现在的问题是,如何才能使程序单独运行,或者如何才能使程序在shell下单独运行,并且输入我的程序参数。rnrn我作了以下尝试:rn>>> import testMainrn>>> dir()rn['__builtins__', '__doc__', '__name__', 'argv', 'defaults', 'formatDefinitions', 'parseargs', 'sys', 'testMain']rn>>> testMainrnrn>>> testMain arg01 arg02rnSyntaxError: invalid syntaxrn>>> testMainrnrn>>> testMain [arg01,arg02]rnrnTraceback (most recent call last):rn File "", line 1, in -toplevel-rn testMain [arg01,arg02]rnNameError: name 'arg01' is not definedrn>>> testMain ['','']rnrnTraceback (most recent call last):rn File "", line 1, in -toplevel-rn testMain ['','']rnTypeError: unsubscriptable objectrn>>> testMain [myfile, http://myfile/announce]rnSyntaxError: invalid syntaxrn>>> testMain ['myfile.txt', 'http://myfile/announce']rnrnTraceback (most recent call last):rn File "", line 1, in -toplevel-rn testMain ['myfile.txt', 'http://myfile/announce']rnTypeError: unsubscriptable objectrn>>> rnrn都没能找到在命令行调用该模块的方式rn请指教

没有更多推荐了,返回首页