Pedro,
Vou tentar explicar para vc, quando vc quer usar uma função em outro programa em python
tem que importar mesmo.
No seu exemplo, vou assumir que o Arquivo Dois, SE chame ArquivoDois.py e o ArquivoPrincipal.py
----- ArquivoPrincipal.py ---
import ArquivoDois
b = 2
print (ArquivoDois.Alterar(b))
----- ArquivoDois.py ---------
def Alterar(b):
b += 1
return b
Quando vc importa um arquivo python, ele tem namespace próprio e são objetos Singleton(é carregada somente uma instância
, que fica disponível de forma global para o programa, a importação é absoluta, vc pode usar tb a importação relativa(from ArquivoDois import Alterar). Agora vc tem que passar os argumentos de forma absoluta na função e na chamada do arquivo principal, senão o interpretador não vai saber o que vc quer e aparecerá o erro: UnboundLocalError
E RESPONDENDO a pergunta extra: sim, mesmo no mesmo pacote vc tem referenciar absolutamente ou relativamente o que vc
for usar.
Como sugestão, sugiro os livros fantásticos do:
obs: o melhor livro que já li sobre Python
obs: o segundo melhor livro que já li sobre python, tem uma versão gratuita para python2 no site do autor, que foi o primeiro livro
que li sobre Python
