在python中调用外部函数

时间:2009-12-18 15:02:49

标签: python return

我试图从if语句中的另一个文件返回(执行)一个函数。 我已经读过返回语句不起作用,我希望有人知道什么语句可以让我调用外部函数。

该函数创建一个沙箱,但如果存在,我想传递if语句。

这是我用过的一小段代码。

import mks_function  
from mksfunction import mks_create_sandbox  
import sys, os, time  
import os.path  

if not os.path.exists('home/build/test/new_sandbox/project.pj'):
 return mks_create_sandbox()  
else:  
 print pass  

8 个答案:

答案 0 :(得分:5)

假设您的函数bar位于Python路径上名为foo.py的文件中。

如果foo.py包含:

def bar():
  return True

然后你可以这样做:

from foo import bar

if bar():
  print "bar() is True!"

答案 1 :(得分:2)

让我们看看what docs say

  

return可能只在语法上嵌套在函数定义中,而不是嵌套类定义中。

你想做什么,我猜是:

from mksfunction import mks_create_sandbox  
import os.path

if not os.path.exists('home/build/test/new_sandbox/project.pj'):
    mks_create_sandbox()

答案 2 :(得分:2)

最近,我正在研究python中的最终项目。我也会参与你的外部函数文件。

如果你正在调用一个模块(实际上,同一个文件之外的任何函数都可以被视为一个模块,我讨厌指定太精确的东西),你需要确定一些东西。这是一个模块的例子,我们称之为my_module.py

# Example python module

import sys
# Any other imports... imports should always be first

# Some classes, functions, whatever...
# This is your meat and potatos

# Now we'll define a main function
def main():
    # This is the code that runs when you are running this module alone
    print sys.platform

# This checks whether this file is being run as the main script
#  or if its being run from another script
if __name__ == '__main__':
    main()
# Another script running this script (ie, in an import) would use it's own
#  filename as the value of __name__

现在我想在另一个文件中调用整个函数,名为work.py

import my_module

x = my_module
x.main()

答案 3 :(得分:1)

你可能需要import包含该函数的模块,不是吗?

当然,对于你想要达到的目标更加准确一点会有所帮助。

答案 4 :(得分:1)

你的意思是“退货声明不起作用”?

您可以import来自其他文件的函数,并将其称为本地函数。

答案 5 :(得分:0)

这取决于你的意思。如果你想创建一个静态方法,那么你会做类似

的事情
class fubar(object):

    @classmethod
    def foo():
      return bar

fubar.foo() # returns bar

如果您想运行外部流程,那么您将使用subprocess库并执行

import subprocess
subprocess.popen("cmd echo 'test'",shell=true)

真的取决于你想做什么

答案 6 :(得分:0)

你的意思是import?比如说,你的外部函数存在于同一目录下的mymodule.py中,你必须先导入它:

import mymodule
# or
from mymodule import myfunction

然后直接使用该功能:

if mymodule.myfunction() == "abc":
    # do something

或第二次导入:

if myfunction() == "abc":
    # do something

请参阅this tutorial

答案 7 :(得分:-1)

file1.py(注释掉2个版本)

#version 1
from file2 import outsidefunction
print (outsidefunction(3))

#version 2
import file2
print (file2.outsidefunction(3))

#version 3
from file2 import *
print (outsidefunction(3))

file2.py

def outsidefunction(num):
    return num * 2

命令行:python file1.py