首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序运行良好,但不能用IndexError导入

程序运行良好,但不能用IndexError导入
EN

Stack Overflow用户
提问于 2014-12-27 05:05:52
回答 2查看 121关注 0票数 2

我使用python 2.7,下面是我的脚本的简化版本:

executor.py

代码语言:javascript
复制
import sys 

def someCal(num):

        num = int(num)
        print num*num

someCal(sys.argv[1])

因此,python executor.py 13将打印出169个,它正在按预期工作。我有另一个脚本,我想在executor.py中使用executor.py函数,所以我导入它

main.py

代码语言:javascript
复制
import executor

to_count = 999
executor.someCal(to_count)

执行python main.py时,我收到下面的错误消息:

代码语言:javascript
复制
  File "main.py", line 3, in <module>
    import executor
  File "/Users/mac/executor.py", line 13, in <module>
    someCal(sys.argv[1])

我不知道为什么它总是在executor.py中提到第13行,因为我没有使用这个部分。

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-27 05:07:32

代码语言:javascript
复制
from executor import *

这是一个更好的方法,如果使用此方法命名'main':wanted.No ==,那么它将按照您的需要很好地工作。此外,您还可以使用它们的names.Like调用函数:

代码语言:javascript
复制
from executor import *
print (someCal(10))

例如,编辑:

executor.py

代码语言:javascript
复制
def someCal(num):
    num = int(num)
    return num*num

another.py

代码语言:javascript
复制
from executor import *

print (someCal(10))

输出:

代码语言:javascript
复制
>>> 
100
>>> 

如果使用函数,则应返回函数中的值,而不是打印值。如果你返回一个值,你可以打印它的later.But,如果你不使用返回,只是保持它像打印num*num,然后你不能使用它以后与打印函数。您可以尝试查看that.So,返回一个值在函数中很重要。

关于您的第二个问题,请查看这个问题:": do?

Python是关于清晰代码的最好语言,所以您应该保持它的清晰性,sys对您来说是不必要的。如果您不需要name ==这个语句,请记住每个.py文件都是一个模块,所以如果您可以导入任何没有该语句的模块,比如导入随机;那么您可以导入您自己的模块-- too.Just关心它们必须保持在同一个目录中,以便Python能够找到您自己的模块/文件。保持简单:-)

模块的另一个重要方法是

代码语言:javascript
复制
import executor as ChuckNorris

print (ChuckNorris.someCal(10))

当然,输出也是一样的,您可以编写任何您想要的东西,而不是ChuckNorris,但是请确保名称不会与程序中的另一个函数名称重叠。例如,您有一个名为.py的Number.py文件,您将把这个文件导入到另一个文件中,但是您不能确定在另一个文件中是否有一个名为Number的函数,所以您可以像调用导入号一样调用它,这样就可以避免这些问题。

票数 3
EN

Stack Overflow用户

发布于 2014-12-27 05:06:44

当您在import executor in main.py,它实际上执行python executor.py时,我建议您将executor.py更改为:

代码语言:javascript
复制
if __name__ == '__main__':
        someCal(sys.argv[1])

而且,在直接使用if len(sys.argv)>1之前,您可能需要添加防御性代码,如sys.argv[1]

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27664543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档