2

我已经在 stackoverflow 中完成了类似的问题,但找不到与我的问题相近的答案。在最后一行之前的第 3 行下面的代码中给出错误 -

NameError: name '_name_' is not defined

我从大学实验室指南指令中复制了以下代码。不太确定,代码是如何工作的。我们只是被告知为这个实验室复制和粘贴并查看结果。但是,我们必须在命令行中输入所有代码,我被卡住了。如何在代码中修复此错误?

#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
class SingleSwitchTopo(Topo):
    “Single switch connected to n hosts.”
def_init_(self,n=2,**opts):
#initialize topology and default options
      Topo._init_(self,**opts)
      switch=self.addSwitch(‘s1’)
#Python’s range(N) generates 0..N-1
      for h in range(n):
           host=self.addHost(‘h%s’%(h+1))
           self.addLink(host,switch)
def simpleTest():
     “Create and test a simple network”
      topo=SingleSwitchTopo(n=4)
      net=Mininet(topo)
      net.start
      print “Dumping host connections”
      dumpNodeConnections(net.hosts)
      print “Testing network connectivity”
      net.pingAll()
     net.stop()
if _name_==’_main_’:
     #Tell mininet to print useful information
     setLogLevel(‘info’)
     simpleTest()
4

3 回答 3

17

问题是在线 -

if _name_==’_main_’:

我的猜测是你有那一行,所以代码只在作为脚本运行时运行,而不是在导入时运行,如果是这样,你需要在两边加上双name下划线main。并且看起来引号是错误的,您需要使用'. 例子 -

if __name__=='__main__':
于 2015-08-12T05:23:49.353 回答
6

您需要两个下划线而不是一个:

if __name__ == "__main__"

Python 直接执行。如果它被遗漏,它将执行第 0 级缩进的所有代码。

于 2015-08-12T05:44:43.753 回答
3

在里面

if _name_==’_main_’:

您还没有使用双下划线编写代码,应该如下所示

if __name__==’__main__’:

谢谢您的上述回答,他们为我指出了错误,但尚不清楚。我已经通过回答我自己的问题说清楚了。

于 2015-08-12T05:39:20.233 回答