将Python脚本导入另一个?

Import Python Script Into Another?

我正在认真学习泽德肖的《学Python》,我正在上第26课。在本课中,我们必须修复一些代码,代码从另一个脚本调用函数。他说我们不需要进口它们来通过测试,但我很好奇我们会怎么做。

链接到课程链接到要更正的代码

下面是调用前一个脚本的特定代码行:

1
2
3
4
5
6
7
8
9
10
11
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)

这取决于第一个文件中的代码的结构。

如果只是一堆函数,比如:

1
2
3
4
# first.py

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

然后您可以导入它并使用以下函数:

1
2
3
4
5
# second.py
import first

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

1
2
3
4
5
# second.py
from first import foo, bar

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

或者,导入first.py中定义的所有符号:

1
2
3
4
5
# second.py
from first import *

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

注意:这假设两个文件在同一目录中。

当您想要在其他目录或模块内部导入符号(函数、类等)时,它会变得更加复杂。


值得一提的是(至少在python 3中),为了使其正常工作,必须在同一目录中有一个名为__init__.py的文件。


以下内容对我很有用,而且也很简单:

假设我们要导入一个脚本./data/get_my_file.py并要访问其中的get_set1()函数。

1
2
3
4
5
import sys
sys.path.insert(0, './data/')
import get_my_file as db

print (db.get_set1())


希望这项工作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
 newlines and \t tabs.'
)

poem ="""
\tThe lovely world
with logic so firmly planted
cannot discern
 the needs of love
nor comprehend passion from intuition
and requires an explantion

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