can you have a function in a function python code example

Example 1: python functions

def chess_piece(piece_name, piece_value, piece_rank):
    """Info about a chess piece."""
    print(f"\nThis chess piece is called the {piece_name}.")
    print(f"It has an approximate value of {piece_value} points.")
    print(f"In other words, this piece is the {piece_rank} valuable piece.")
    
    
chess_piece('pawn', '1', 'least')
chess_piece('knight', '3', 'second to last most')
chess_piece('bishop', '3', 'third to last most')
chess_piece('rook', '5', 'third most')
chess_piece('queen', '9', 'second most')
chess_piece('king', 'infinite', 'most')

Example 2: python functions

# Python Functions
def a_function(): #def FUNCTIONNAMEHERE(): Function content
  print("Hello World!")
  return 0
def answerValid(prompt, correct_answers, invalid): # Functions can also have parameters, or variables that can be used only in tha function
  while True:
    user = input(prompt)
    if user in correct_answers:
      break 
      return user # Example Function
   	else:
      print(invalid)

a_function() # To call a function; Prints 'Hello World!'
# But if this is done:
function_called = a_function() # function_called would contain a 0, because the function returns 0
answer = answerValid("What is 8 * 8?", [64], "Invalid Option")
print(answer) # Prints 64, because that is the only possible answer

Example 3: python define a function within a function

def print_msg(msg): # This is the outer enclosing function
    
    def printer():# This is the nested function
        print(msg)

    return printer  # this got changed

# Now let's try calling this function.
# Output: Hello
another = print_msg("Hello")
another()

Example 4: nested functions in python

def print_msg(msg):
    # This is the outer enclosing function

    def printer():
        # This is the nested function
        print(msg)

    return printer  # returns the nested function


# Now let's try calling this function.
# Output: Hello
another = print_msg("Hello")
another()