2013-03-29 26 views
28

Przechodzę przez Python Learn Zed Shaw The Hard Way i jestem na lekcji 26. W tej lekcji musimy naprawić jakiś kod, a kod wywołuje funkcje z innego skryptu. Mówi, że nie musimy ich importować, aby zdać test, ale jestem ciekawy, jak byśmy to zrobili.Importuj skrypt Pythona do innego?

Link to the lesson | Link to the code to correct

A oto poszczególne linie kodu, które wywołują w poprzednim skrypcie:

words = ex25.break_words(sentence) 
sorted_words = ex25.sort_words(words) 

print_first_word(words) 
print_last_word(words) 
print_first_word(sorted_words) 
print_last_word(sorted_words) 
sorted_words = ex25.sort_sentence(sentence) 
print sorted_words 
print_first_and_last(sentence) 
print_first_a_last_sorted(sentence) 

Odpowiedz

64

To zależy od tego, w jaki sposób kod w pierwszym pliku jest skonstruowany.

Jeśli to tylko kilka funkcji, takich jak:

# first.py 

def foo(): print("foo") 
def bar(): print("bar") 

Następnie można go importować i korzystać z funkcji w następujący sposób:

# second.py 
import first 

first.foo() # prints "foo" 
first.bar() # prints "bar" 

lub

# second.py 
from first import foo, bar 

foo()   # prints "foo" 
bar()   # prints "bar" 

lub, do importowania wszystkich symboli zdefiniowanych w first.py:

# second.py 
from first import * 

foo()   # prints "foo" 
bar()   # prints "bar" 

Uwaga: Zakłada się, że dwa pliki znajdują się w tym samym katalogu.

To staje się nieco bardziej skomplikowane, gdy chcesz zaimportować symbole (funkcje, klasy itp.) W innych katalogach lub wewnątrz modułów.

+0

Ah, więc muszą po prostu być w tym samym katalogu ... niesamowite! Dziękuję Ci! – astroblack

+1

Jak to zmienia się w Pythonie 3? – Brian

+0

Jakie symbole nie są importowane za pomocą pierwszej metody? – Goldname

15

Warto wspomnieć, że (przynajmniej w Pythonie 3), aby to zadziałało, musisz mieć plik o nazwie __init__.py w tym samym katalogu.

+0

czy może być pusta? – LoveMeow

+0

@LoveMeow Tak, nie ma problemu. http://stackoverflow.com/questions/448271/what-is-init-py-for – soungalo

+4

w rzeczywistości tak nie jest. Działa bez niego bez problemu. –

Powiązane problemy