76

Zed Shaw の Learn Python The Hard Way を読んでいて、レッスン 26 です。このレッスンでは、いくつかのコードを修正する必要があり、コードは別のスクリプトから関数を呼び出します。彼は、テストに合格するためにそれらをインポートする必要はないと言いますが、どのようにインポートするかについては興味があります.

レッスンへのリンク| 修正するコードへのリンク

前のスクリプトを呼び出す特定のコード行は次のとおりです。

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)

修正するコード:

  • これは、参照されているコースのコードです
    • コードを修正するために質問を編集しないでください
def break_words(stuff):
    """This function will break up words for us."""
    words = stuff.split(' ')
    return words

def sort_words(words):
    """Sorts the words."""
    return sorted(words)

def print_first_word(words)
    """Prints the first word after popping it off."""
    word = words.poop(0)
    print word

def print_last_word(words):
    """Prints the last word after popping it off."""
    word = words.pop(-1
    print word

def sort_sentence(sentence):
    """Takes in a full sentence and returns the sorted words."""
    words = break_words(sentence)
    return sort_words(words)

def print_first_and_last(sentence):
    """Prints the first and last words of the sentence."""
    words = break_words(sentence)
    print_first_word(words)
    print_last_word(words)

def print_first_and_last_sorted(sentence):
    """Sorts the words then prints the first and last one."""
    words = sort_sentence(sentence)
    print_first_word(words)
    print_last_word(words)


print "Let's practice everything."
print 'You\'d need to know \'bout escapes with \\ that do \n newlines and \t tabs.'

poem = """
\tThe lovely world
with logic so firmly planted
cannot discern \n the needs of love
nor comprehend passion from intuition
and requires an explantion
\n\t\twhere there is none.
"""


print "--------------"
print poem
print "--------------"

five = 10 - 2 + 3 - 5
print "This should be five: %s" % five

def secret_formula(started):
    jelly_beans = started * 500
    jars = jelly_beans \ 1000
    crates = jars / 100
    return jelly_beans, jars, crates


start_point = 10000
beans, jars, crates == secret_formula(start-point)

print "With a starting point of: %d" % start_point
print "We'd have %d jeans, %d jars, and %d crates." % (beans, jars, crates)

start_point = start_point / 10

print "We can also do that this way:"
print "We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_pont


sentence = "All god\tthings come to those who weight."

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

print_irst_and_last(sentence)

   print_first_a_last_sorted(senence)

4

5 に答える 5

123

最初のファイルのコードがどのように構成されているかによって異なります。

次のような単なる関数の集まりである場合:

# first.py
def foo(): print("foo")
def bar(): print("bar")

次に、それをインポートして、次のように関数を使用できます。

# second.py
import first

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

また

# second.py
from first import foo, bar

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

または、first.py で定義されているすべての名前をインポートするには:

# second.py
from first import *

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

注: これは、2 つのファイルが同じディレクトリにあることを前提としています。

他のディレクトリまたはパッケージのモジュールから名前 (関数、クラスなど) をインポートする場合は、もう少し複雑になります。

于 2013-03-29T02:37:33.137 に答える
28

(少なくとも python 3 では) これが機能するために__init__.pyは、同じディレクトリに名前の付いたファイルが必要であることに言及する価値があります。

于 2014-09-10T11:24:56.547 に答える