我正在使用python 2.7,以下是脚本的简化版本:
executor.py
import sys
def someCal(num):
num = int(num)
print num*num
someCal(sys.argv[1])
因此python executor.py 13
将打印出169,它按预期工作。
我有另一个脚本,我想在someCal()
中使用executor.py
函数,所以我将其导入
main.py
import executor
to_count = 999
executor.someCal(to_count)
执行python main.py
时出现以下错误消息:
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行,因为我没有使用那部分。
提前致谢!
python大神给出的解决方案
from executor import *
这是一种更好的方法,并且可以按您的要求正常工作。如果name =='main':则无需使用此方法。您也可以使用它们的名称来调用函数。
from executor import *
print (someCal(10))
编辑例如:
executor.py
def someCal(num):
num = int(num)
return num*num
另一个
from executor import *
print (someCal(10))
输出:
>>>
100
>>>
如果使用函数,则应在函数中返回一个值,而不是打印。如果返回一个值,则可以稍后打印它。但是,如果不使用return并仅将其保留为print num * num,则以后不能将其与print函数一起使用。您可以尝试看看,因此返回值在函数中很重要。
对于第二个问题,请检查以下一项:What does if __name__ == "__main__": do?
Python是有关清晰代码的最佳语言,因此您应该保持清晰,sys对您而言不是必需的。而且,如果name =='main',则不需要:此语句,请记住每个.py文件都是一个模块,因此,如果您可以在没有该语句的情况下导入任何模块,例如import random;那么您也可以导入自己的模块。只需注意它们必须位于同一目录中,以便Python可以找到您自己的模块/文件。把事情简单化 🙂
模块的另一种导入方法是:
import executor as ChuckNorris
print (ChuckNorris.someCal(10))
输出当然是相同的,您可以编写任何想要的内容来代替ChuckNorris,但是请确保该名称不会与程序中的另一个函数名称重叠。例如,您有一个名为Number.py的.py文件,您将导入该文件到另一个文件,但是您无法确定另一个文件中是否存在任何称为Number的函数,因此您可以像import Number一样调用它,就像您将要调用的那样。避免这种问题。