Boa noite, tenho uma dúvida a respeito do uso de parâmetros na função "marca_chute_correto(chute, letras_acertadas, palavra_secreta)", mas antes irei apresentar um trecho de código para melhor explicar a minha dúvida.
No código a seguir, estou definindo uma variável "nome" depois atribuo um novo valor a variável dentro da função. O valor da variável é impresso antes de chamar a função que muda o valor da variável e depois e o resultado é que a variável original passada como parâmetro não foi alterada.
def main():
    nome = 'eduardo'
    print('antes de chamar muda_nome()',nome)
    muda_nome(nome)
    print('depois de chamar muda_nome()',nome)
def muda_nome(nome):
    nome = 'joaquim'
if __name__ == '__main__':
    main()Entendo que quando passamos uma variável para uma função, esta recebe uma cópia da variável então a variável original é preservada, porém isso não ocorreu no código do jogo.
Agora falando a respeito da dúvida no código do jogo, gostaria de destacar neste código o seguinte trecho:
            print('antes',letras_acertadas)
            marca_chute_correto(chute, letras_acertadas, palavra_secreta)
            print('depois', letras_acertadas)No código final do jogo, apenas adicionei a impressão do valor da variável "letras_acertadas" antes e depois de chamar a função "marca_chute_correto", assim como fiz no exemplo anterior, porém desta vez a função alterou o valor da variavel original, não seguindo o padrão apresentado no exemplo anterior.
O que ocorreu no código de exemplo acima não se repetiu no código do jogo, porque???
import random
def jogar():
    imprime_mensagem_abertura()
    palavra_secreta = carrega_palavra_secreta()
    letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
    print(letras_acertadas)
    enforcou = False
    acertou = False
    erros = 0
    while not acertou and not enforcou:
        chute = pede_chute()
        if chute in palavra_secreta:
            print('antes',letras_acertadas)
            marca_chute_correto(chute, letras_acertadas, palavra_secreta)
            print('depois', letras_acertadas)
        else:
            erros += 1
            desenha_forca(erros)
        enforcou = erros == 7
        acertou = '_' not in letras_acertadas
        print(letras_acertadas)
    if acertou:
        imprime_mensagem_vencedor()
    else:
        imprime_mensagem_perdedor(palavra_secreta)
def imprime_mensagem_abertura():
    print("*********************************")
    print("** Bem vindo ao jogo da Forca! **")
    print("*********************************")
def carrega_palavra_secreta():
    # palavra_secreta = 'banana'.upper()
    arquivo = open('palavras.txt', 'r')
    palavras = []
    for linha in arquivo:
        palavras.append(linha.strip())
    arquivo.close()
    numero = random.randrange(0, len(palavras))
    palavra_secreta = palavras[numero].upper()
    return palavra_secreta
def inicializa_letras_acertadas(palavra):
    return ["_" for letra in palavra]
def pede_chute():
    chute = input('Qual letra? ')
    chute = chute.strip().upper()
    return chute
def marca_chute_correto(chute, letras_acertadas, palavra_secreta):
    index = 0
    for letra in palavra_secreta:
        if chute == letra:
            letras_acertadas[index] = letra
        index += 1
...restante omitido.