2009-12-18 85 views
0

我想從if語句中的另一個文件返回(執行)一個函數。 我讀過return語句不起作用,我希望有人知道什麼聲明可以讓我調用外部函數。在Python中調用外部函數

該函數創建一個沙箱,但如果存在,我想通過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 
+3

請澄清 - 是什麼情況你在?向我們展示一些代碼 – 2009-12-18 15:05:14

+1

對於初學者來說,它並不完全清楚你想做什麼 - 你想返回一個在外部文件中定義的函數,返回執行該外部函數返回的值,還是執行外部函數?如何處理一些示例代碼? – 2009-12-18 15:05:24

+0

你用這段代碼得到了什麼錯誤? – 2009-12-18 15:13:49

回答

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() 
+0

請注意,else:pass部分不是必需的。 – Brian 2009-12-18 15:36:36

+1

-1:'else:pass' – 2009-12-18 15:42:15

+0

'pass'是代碼的佔位符。 – SilentGhost 2009-12-18 16:09:46

1

您可能需要import包含該功能的模塊,否?

當然,對於你要達到的目標而言,精確度會有所幫助。

4

說你的函數bar位於Python路徑中的一個名爲foo.py的文件中。

如果foo.py包含此:

def bar(): 
    return True 

然後,你可以這樣做:

from foo import bar 

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

究竟你 「return語句將無法正常工作」 是什麼意思?

您可以從另一個文件import函數並將其稱爲本地函數。

0

這取決於你的意思。如果你想創建一個靜態方法,那麼你會做這樣的事情

class fubar(object): 

    @classmethod 
    def foo(): 
     return bar 

fubar.foo() # returns bar 

如果你想運行一個外部程序,那麼你會用subprocess庫並做

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

真的取決於你想要什麼做

0

你的意思是import?說,你的外部函數住在同一個目錄mymodule.py,你必須先導入它:

import mymodule 
# or 
from mymodule import myfunction 

然後是直截了當地使用功能:

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

或與第二進口:

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

請參閱this tutorial

-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)) 

文件2。PY

def outsidefunction(num): 
    return num * 2 

命令行:python file1.py

1

我對此有很大的觸摸最近,因爲我是工作在我的蟒蛇最後的項目。我也會參與查看你的外部函數文件。

如果你正在調用一個模塊(實際上,同一個文件之外的任何函數都可以當作一個模塊來處理,我討厭把它指定得太精確),所以你需要確定一些東西。這裏是一個模塊的例子,讓我們把它叫做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()