2009-12-18 5 views
0

Я пытаюсь вернуть (выполнить) функцию из другого файла в инструкции if. Я читал, что оператор возврата не работает, я надеялся, что кто-то узнает, какое утверждение позволит мне вызвать внешнюю функцию.вызов внешней функции в 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

пожалуйста уточнить - какой сценарий ты в? показать нам код –

+1

Во-первых, не совсем ясно, что вы пытаетесь сделать - хотите ли вы вернуть функцию, определенную во внешнем файле, вернуть значение, возвращаемое при выполнении этой внешней функции, или просто выполнить внешнюю функцию? Как насчет кода примера? –

+0

Какая ошибка вы получаете с помощью этого кода? –

ответ

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

+1

-1: 'else: pass' –

+0

' pass' является заполнителем кода. – SilentGhost

1

Вы, вероятно, нужны import модуля, который содержит функцию, нет?

Конечно, немного больше точности относительно того, что вы пытаетесь достичь, поможет.

4

Скажите, что ваша функция bar находится в файле foo.py на вашем пути Python.

Если foo.py содержит следующее:

def bar(): 
    return True 

Тогда вы можете сделать это:

from foo import bar 

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

Что именно вы имеете в виду под "оператор возврата не будет работать"?

Вы можете указать import функцию из другого файла и вызвать ее как локальную функцию.

0

Это зависит от того, что вы имеете в виду. Если вы хотите создать статический метод, то вы могли бы сделать что-то вроде

class fubar(object): 

    @classmethod 
    def foo(): 
     return bar 

fubar.foo() # returns bar 

Если вы хотите запустить внешний процесс, то вы бы использовать subprocess библиотеку и сделать

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

действительно зависит от того, что вы хотите do

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

file2.ру

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() 
Смежные вопросы