2012-01-27 17 views
12

Jestem nowy dla Pythona i chciałbym podzielić moje funkcje na różne pliki, takie jak robię z C++ (plik sterownika i plik dla różnych kategorii funkcji, które kończą się łączenie razem po kompilacji).jak połączyć wiele skryptów Pythona

Załóżmy, że chcę utworzyć prosty plik "sterownika", który uruchamia główny program i plik "funkcji", który zawiera proste funkcje, które są wywoływane przez sterownik i inne funkcje w pliku "funkcja".

jak powinienem to zrobić? skoro python nie jest skompilowany, w jaki sposób mogę połączyć pliki?

Odpowiedz

29

Można import moduły. Po prostu utwórz różne pliki Pythona i zaimportuj je na początku skryptu.

Na przykład mam ten function.py plik:

def func(a, b): 
    return a+b 

i ten plik main.py:

import function 

if __name__ == "__main__": 
    ans = function.func(2, 3) 
    print ans 

I to jest to! Jest to oficjalny numer tutorial dotyczący importowania modułów.

+0

W moim przypadku, gdy wykonam print ans, wypisze None. Nie wiem dlaczego :(Czy ktoś może mi pomóc? – ePascoal

+0

@ePascoal Czy na pewno "powracasz" a + b w func? – mitch

+0

Niesamowite! Zanim to zobaczyłem, zawsze używałem gniazdek! – Luke

1

Należy spojrzeć na oficjalne tutorial i this przydatna strona, która pomoże Ci szybko zacząć :)

1

Na początku driver.py, napisać:

import functions 

To daje dostęp do atrybutów zdefiniowanych w functions.py, określany tak:

functions.foo 
functions.bar(args) 
... 
+0

To może być głupie pytanie, ale czy zmienne są również dostępne? – beckah

1

Można zaimportować dowolny plik Pythona po prostu wpisując:

import filename 

Ale w tym przypadku musisz wpisać nazwę pliku za każdym razem, gdy chcesz go użyć. Na przykład musisz użyć filename.foo, aby użyć określonej funkcji foo w tym pliku. Jednakże, można również wykonać następujące czynności:

from function import * 

W tym przypadku wszystko co musisz zrobić, to bezpośrednio wpisać swoje polecenia bez filename.

Wyraźnym przykładem:

Jeśli pracujesz z żółwia Pythona za pomocą import turtle następnie za każdym razem trzeba wpisywać turtle.foo. Na przykład: turtle.forward(90), turtle.left(90), turtle.up().

Ale jeśli używasz from turtle import *, możesz wykonywać te same polecenia bez turtle. Na przykład: forward(90), left(90), up().

Powiązane problemy