设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 15859|回复: 5
打印 上一主题 下一主题

模块的调用测试

[复制链接]

2

主题

0

好友

42

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-8-17 08:47:29 |只看该作者 |倒序浏览
在 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等函数不同,这个是为啥?



回复

使用道具 举报

2

主题

0

好友

42

积分

新手上路

Rank: 1

沙发
发表于 2017-8-17 08:49:19 |只看该作者
当前使用版本为 3.4.4
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2017-8-17 10:57:13 |只看该作者
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__': 的条件下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

42

积分

新手上路

Rank: 1

地板
发表于 2017-8-17 16:29:23 |只看该作者
crossin先生 发表于 2017-8-17 10:57
import的时候,下面这些代码全都会被执行的。

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

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

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

谢谢啦!
回复

使用道具 举报

1

主题

0

好友

45

积分

新手上路

Rank: 1

5#
发表于 2017-8-17 18:55:13 |只看该作者
crossin先生 发表于 2017-8-17 10:57
import的时候,下面这些代码全都会被执行的。

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

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

6#
发表于 2017-8-17 20:37:27 |只看该作者
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的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-23 08:13 , Processed in 0.023116 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部