Inicializar funções em python através de um único arquivo .py (main.py) - Procedimentos corretos?

1. Inicializar funções em python através de um único arquivo .py (main.py) - Procedimentos corretos?

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 04/08/2019 - 01:01h

Boa noite, senhores/as

Gostaria de saber qual melhor método para inicializar arquivos (módulos/pacotes) .py a partir de um único arquivo, o "main.py".

Tenho 5 arquivos, cada um deles executa uma função, e seguem uma ordem lógica, claramente.

Importando cada módulo...



from a import * # módulo a
from b import *

def main():

a_ = a()
b_ = b()
if __name__ == "__main__":
main()



este jeito seria correto?

Agradeço desde já!




  


2. UP

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 05/08/2019 - 12:16h

UP!!!


3. Re: Inicializar funções em python através de um único arquivo .py (main.py) - Procedimentos corretos?

Matheus
pylm

(usa Gentoo)

Enviado em 05/08/2019 - 13:08h

Eu não gosto de fazer assim pois não fica claro a qual módulo a função usada pertence.
Por exemplo, se o módulo a tem uma função chamada func1 e você utiliza o método citado então o código fica assim:


from a import *
from b import *

func1()


E não dá pra saber que func1 pertence ao módulo a, o meu método preferido seria:


from a import func1

func1()


E aí você vai saber de onde vem func1, ou ainda:


import a

a.func1()


Além de que, o * importa todas as classes e funções de determinado módulo e fica tudo bagunçado além de ter a possibilidade de você sobrescrever funções/classes de nomes iguais. Se for realmente necessário importar tudo simplesmente utilize o método acima.


4. Re: Inicializar funções em python através de um único arquivo .py (main.py) - Procedimentos corretos

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 05/08/2019 - 13:55h

pylm escreveu:

Eu não gosto de fazer assim pois não fica claro a qual módulo a função usada pertence.
Por exemplo, se o módulo a tem uma função chamada func1 e você utiliza o método citado então o código fica assim:


from a import *
from b import *

func1()


E não dá pra saber que func1 pertence ao módulo a, o meu método preferido seria:


from a import func1

func1()


E aí você vai saber de onde vem func1, ou ainda:


import a

a.func1()


Além de que, o * importa todas as classes e funções de determinado módulo e fica tudo bagunçado além de ter a possibilidade de você sobrescrever funções/classes de nomes iguais. Se for realmente necessário importar tudo simplesmente utilize o método acima.


E quando a função tem parâmetros, como os defino no main?

digamos que:

#a.py
def func(path, dest):
....

##

from a import func
"""
...
"""
#main.py

import a
from a import func
i f__name__ == "__main__":
func()



daria erro por não conter nenhum argumento para a fun(path, dest). E se estas forem adcionadas dará erro por elas não estarem definidas.... Qual o ''pulo do gato'' nessa situação?

Abraço!


5. Re: Inicializar funções em python através de um único arquivo .py (main.py) - Procedimentos corretos

Matheus
pylm

(usa Gentoo)

Enviado em 05/08/2019 - 14:50h

Cê pode definir valores padrões pras funções quando escreve elas. Ex:


def func1(valor=10)
return valor ** 2


E nada te impede de trocar eles quando for efetivamente chamar a função.


from a import func1

if __name__ == '__main__':
func1(valor=20)



6. Re: Inicializar funções em python através de um único arquivo .py (main.py) - Procedimentos corretos

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 05/08/2019 - 15:25h

pylm escreveu:

Cê pode definir valores padrões pras funções quando escreve elas. Ex:


def func1(valor=10)
return valor ** 2


E nada te impede de trocar eles quando for efetivamente chamar a função.


from a import func1

if __name__ == '__main__':
func1(valor=20)


e no caso de não serem valores, mas 'apenas palavras'?

como coloquei ali


def func(files, dest):
....


isso usando um
 for files in ...  



def func(files,path):
....





if __name__ == "__main__":
func() .. ..


procurei em todo canto e não achei essa dúvida...







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts