Import Python Script Into Another?

后端 未结 5 1603
花落未央
花落未央 2020-11-28 23:59

I\'m going through Zed Shaw\'s Learn Python The Hard Way and I\'m on lesson 26. In this lesson we have to fix some code, and the code calls functions from another script. He

相关标签:
5条回答
  • 2020-11-29 00:51

    It depends on how the code in the first file is structured.

    If it's just a bunch of functions, like:

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

    Then you could import it and use the functions as follows:

    # second.py
    import first
    
    first.foo()    # prints "foo"
    first.bar()    # prints "bar"
    

    or

    # second.py
    from first import foo, bar
    
    foo()          # prints "foo"
    bar()          # prints "bar"
    

    or, to import all the names defined in first.py:

    # second.py
    from first import *
    
    foo()          # prints "foo"
    bar()          # prints "bar"
    

    Note: This assumes the two files are in the same directory.

    It gets a bit more complicated when you want to import names (functions, classes, etc) from modules in other directories or packages.

    0 讨论(0)
  • 2020-11-29 00:54

    Hope this work

    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)
    
    0 讨论(0)
  • 2020-11-29 00:55

    I highly recommend the reading of a lecture in SciPy-lectures organization:

    https://scipy-lectures.org/intro/language/reusing_code.html

    It explains all the commented doubts.

    But, new paths can be easily added and avoiding duplication with the following code:

    import sys
    new_path = 'insert here the new path'
    
    if new_path not in sys.path:
        sys.path.append(new_path)
    import funcoes_python #Useful python functions saved in a different script
    
    0 讨论(0)
  • 2020-11-29 00:58

    It's worth mentioning that (at least in python 3), in order for this to work, you must have a file named __init__.py in the same directory.

    0 讨论(0)
  • 2020-11-29 00:59

    Following worked for me and it seems very simple as well:

    Let's assume that we want to import a script ./data/get_my_file.py and want to access get_set1() function in it.

    import sys
    sys.path.insert(0, './data/')
    import get_my_file as db
    
    print (db.get_set1())
    
    0 讨论(0)
提交回复
热议问题