Python - Random Number Guessing Game
I'd say the code itself is not bad but there are a few things to keep in mind.


i is a bad name for a string. Also, you don't need it in the instructions function, you can just print the string.
The same goes for g. It's not a good name and you can return directly the input. 
guess is not a good name because the function is not guessing, it's getting the user input, so you could call it get_user_input. Also, since the number is between 100 and 999, you could add some checks that the user input is in that range, and you could use some constants to define the range.
This works correctly on python 3, but on python 2 you would use raw_input instead of input. Just something to keep in mind.
In the hint function you're printing the output of the victory function, which actually is returning nothing. That's why it works, but the proper way would be to either use the victory function only to return the winning message, or to use the victory function separately to check that the user has won. It looks like this is the main point you want to understand, so have a close look at that.
victory is also not a really good name. If you want to check that the user has won, name it has_won, or maybe is_guess_correct.
If the user enters something invalid (like a letter or an empty line) you're going to get an error. You should use exceptions there, but maybe this is a bit of an advanced topic for now?
You don't need the continue in this case, because nothing is executed after that instruction.


Modified code:

import random

LOWER_LIMIT = 100
UPPER_LIMIT = 999

def instructions():
    """Tells user how to operate program."""
    print("""
    I have selected a random 3 digit number.  Your goal is to guess my
    number in the smallest amount of of moves.  I will tell you if your
    guess is too high or too low, but that's all the help you'll get
    from me.
    """)

def get_user_input():
    current_guess = int(input("Guess the number: "))
    while (current_guess &lt; LOWER_LIMIT) or (current_guess &gt; UPPER_LIMIT):
        current_guess = int(input("Please enter a number between " + str(LOWER_LIMIT) + " and " + str(UPPER_LIMIT) + ": "))

    return current_guess

def hint(x):
    if x &gt; ans:
        print("Lower")
    elif x &lt; ans:
        print("Higher")

def is_guess_correct(x):
    if x == ans:
        print("Congratulations!  You got it!")
        return True
    return False

instructions()

ans = random.randint(LOWER_LIMIT, UPPER_LIMIT)

while True:
    x = get_user_input()
    if is_guess_correct(x):
        replay = input("Would you like to play again? y/n: ").strip().lower()
        if replay == "y":
            ans = random.randint(100,999)
        else:
            print("Okay then.  Bye-bye.")
            break
    else:
        hint(x)