Crossin的编程教室

标题: 模块的调用测试 [打印本页]

作者: oak    时间: 2017-8-17 08:47
标题: 模块的调用测试
在 L38_module.py 程序中内容如下:

# === 引用其他定义的模块

from L26_football_game_funcation import countsocre

其中  L26_football_game_funcation 为前期测试执行过的程序,内容如下:

from random import choice

direction = ['left','center','right']

def countsocre():
    youscore = 0
    comscore = 0
    for i in range(3):
        print ('Please input your shoot dirction from left,center or right')
        you = input()
        print ('You choice kicked ' + you)
        com = choice(direction)
        print ('Computer saved ' + com)
        if you != com:
            print ('Goal!!!')
            youscore = youscore + 1
        else:
            print ('Oops...')
            comscore = comscore + 1
    if youscore > comscore:
        print('Congratulations,You win!!!')
    else:
        print('Not bad,just lost %d point' % comscore - youscore)
    return (youscore,comscore)

l = countsocre()

print ('The socre you : com is %d : %d' % l)

当执行  L38_module.py 的时候,我理解应该仅作countsocre函数,但实际上却是执行了该函数,开始同用户进行了交互,这个情况同调用choice等函数不同,这个是为啥?




作者: oak    时间: 2017-8-17 08:49
当前使用版本为 3.4.4
作者: crossin先生    时间: 2017-8-17 10:57
oak 发表于 2017-8-17 08:49
当前使用版本为 3.4.4

import的时候,下面这些代码
  1. l = countsocre()

  2. print ('The socre you : com is %d : %d' % l)
复制代码
全都会被执行的。

如果只要定义,不要执行调用,你应该把调用放在 if __name__ == '__main__': 的条件下
作者: oak    时间: 2017-8-17 16:29
crossin先生 发表于 2017-8-17 10:57
import的时候,下面这些代码全都会被执行的。

如果只要定义,不要执行调用,你应该把调用放在 if __name ...

多谢boos回复哟,哈哈好激动的

我刚在新手村转悠到模块这个地方,还没有深入看,so,上面的代码调整还不大看得懂,可以再进一步说明一下么?

谢谢啦!
作者: vocaliu    时间: 2017-8-17 18:55
crossin先生 发表于 2017-8-17 10:57
import的时候,下面这些代码全都会被执行的。

如果只要定义,不要执行调用,你应该把调用放在 if __name ...

难怪我之前一直纳闷执行的时候少了很多print内容。
就是我那个帖子里的第一个抓图的代码,
单进程执行的时候能提示哪个链接下好了哪个链接出错了,
抄来多进程的命令,执行了之后啥提示都没了。
原来是多了if name = main的原因啊。。

作者: crossin先生    时间: 2017-8-17 20:37
oak 发表于 2017-8-17 16:29
多谢boos回复哟,哈哈好激动的

我刚在新手村转悠到模块这个地方,还没有深入看,so,上面的代码调整还不 ...
  1. if __name__ == '__main__':
  2.     l = countsocre()
  3.     print ('The socre you : com is %d : %d' % l)
复制代码
把不要import时候执行的代码放在if里




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5