我经历的Zed Shaw的学习Python的硬道理,而我在课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)
这取决于第一个文件中的代码是如何构成的。
如果它只是一堆的功能,如:
# 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"
注:这是假定这两个文件都在同一个目录。
当你想在其他目录或内部模块导入的符号(函数,类等),问题就变得更复杂一些。
值得一提的是,(至少在Python 3),为了这个工作,你必须有一个文件名为__init__.py
在同一目录下。
以下工作对我来说,它似乎很简单,以及:
让我们假设我们要导入一个脚本./data/get_my_file.py和要访问它get_set1()函数。
import sys
sys.path.insert(0, './data/')
import get_my_file as db
print (db.get_set1())
希望这项工作
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.pop(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(start_point):
jelly_beans = start_point * 500
jars = jelly_beans / 1000
crates = jars / 100
return jelly_beans, jars, crates
start_point = 10000
jelly_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." % (jelly_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_point))
sentence = "All god\tthings come to those who weight."
words = break_words(sentence)
sorted_words = sort_words(words)
print_first_word(words)
print_last_word(words)
print_first_word(sorted_words)
print_last_word(sorted_words)
sorted_words = sort_sentence(sentence)
print (sorted_words)
print_first_and_last(sentence)
print_first_and_last_sorted(sentence)