版权声明:本文为博主原创文章,未经博主允许欢迎转载。 https://blog.csdn.net/paulkg12/article/details/86535945
if __name__ == '__main__':
这句估计很多和我一样的初学者都是不求甚解。
这里作一下解释:
1:__name__是一个变量。前后加了爽下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
2:Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
3:import的时候是要执行所import的模块的。
4:__name__
就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__
,通过if判断这样就可以执行“__mian__
:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字【不加后面的.py
】,通过if判断这样就会跳过“__mian__:
”后面的内容。
通过上面方式,python就可以:
利用
__name__
是否为__main__
, 分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等。
EG
# 部分摘录,from P4\tutorials\utils\run_exercise.py
def get_args():
cwd = os.getcwd()
default_logs = os.path.join(cwd, 'logs')
default_pcaps = os.path.join(cwd, 'pcaps')
parser = argparse.ArgumentParser()
parser.add_argument('-q', '--quiet', help='Suppress log messages.',
action='store_true', required=False, default=False)
parser.add_argument('-t', '--topo', help='Path to topology json',
type=str, required=False, default='./topology.json')
parser.add_argument('-l', '--log-dir', type=str, required=False, default=default_logs)
parser.add_argument('-p', '--pcap-dir', type=str, required=False, default=default_pcaps)
parser.add_argument('-j', '--switch_json', type=str, required=False)
parser.add_argument('-b', '--behavioral-exe', help='Path to behavioral executable',
type=str, required=False, default='simple_switch')
return parser.parse_args()
if __name__ == '__main__':
# from mininet.log import setLogLevel
# setLogLevel("info")
args = get_args()
exercise = ExerciseRunner(args.topo, args.log_dir, args.pcap_dir,
args.switch_json, args.behavioral_exe, args.quiet)
exercise.run_exercise()