为什么函数执行两次?

时间:2016-08-06 19:37:11

标签: python

我的python脚本出现了一个奇怪的问题,该文件是红色的两次。​​

脚本:

import platform as serverPlatform


class platform:

  @staticmethod
  def kernel():
    return serverPlatform.release()

  @staticmethod
  def cpu():
    with open('/proc/cpuinfo', 'r') as f:
        print("x")
        for line in f:
            if line.strip():
                if line.rstrip('\n').split(':')[0].startswith('model name'):
                    model_name = line.rstrip('\n').split(':')[1]

print platform.cpu()

上面的代码打印" x"两次:

[root@localhost lib]# python platform.py
x
x

但是,如果我删除该类并直接运行cpu()方法中的代码,则会打印出来" x"只有一次。(没有类的python脚本)

with open('/proc/cpuinfo', 'r') as f:
    print("x")
    for line in f:
        if line.strip():
            if line.rstrip('\n').split(':')[0].startswith('model name'):
                model_name = line.rstrip('\n').split(':')[1]

在我的初始剧本中我做错了什么,为什么要打印我" x"两次?提前致谢

更新

好的,我意识到我的错误是愚蠢的,因为听起来我在包含自定义类名平台的脚本中导入了模块平台。所以我将课程名称从平台更改为平台

import platform as serverPlatform


class platforms:

  @staticmethod
  def kernel():
    return serverPlatform.release()

  @staticmethod
  def cpu():
    with open('/proc/cpuinfo', 'r') as f:
        print("x")
        for line in f:
            if line.strip():
                if line.rstrip('\n').split(':')[0].startswith('model name'):
                    model_name = line.rstrip('\n').split(':')[1]

print platforms.cpu()

1 个答案:

答案 0 :(得分:2)

导入python脚本时,它将执行所有语句,如函数声明,类声明和可执行语句(如print)。因此,当您导入flatform时,它将执行flatform.cpu()一次。以及从您导入的文件中再打一次。