Przepraszamy, jeśli to pytanie zostało już zgłoszone. To, co muszę zrobić, jest bardzo proste w koncepcji, ale niestety nie byłem w stanie znaleźć odpowiedzi na to online.Tworzenie dynamicznych funkcji Pythona o niestandardowych nazwach
Potrzebuję tworzyć dynamiczne funkcje w Pythonie (Python2.7) z niestandardowymi nazwami w czasie wykonywania. Ciało każdej funkcji również musi być skonstruowane w czasie wykonywania, ale jest (prawie) takie samo dla wszystkich funkcji.
Zacznę od listy nazwisk.
func_names = ["func1", "func2", "func3"]
Należy zauważyć, że lista func_name może posiadać listę dowolnych nazwach, więc nazwy po prostu nie być func1, func2, func3, ....
Chcę być wynikiem:
def func1(*args):
...
def func2(*args):
...
def func3(*args):
...
Muszę to zrobić, ponieważ każda nazwa funkcji odpowiada przypadkowi testowemu, który jest następnie wywoływany ze świata zewnętrznego.
aktualizacja: Brak danych wprowadzanych przez użytkownika. Wiążę dwa końce znacznie większego modułu. Jeden koniec określa, jakie są przypadki testowe, i między innymi zapełnia listę nazw przypadków testowych. Drugim końcem są same funkcje, które muszą mieć odwzorowanie 1: 1 z nazwą przypadku testowego. Tak więc mam nazwy przypadków testowych, wiem, co chcę zrobić z każdym przypadkiem testowym, po prostu muszę utworzyć funkcje, które mają nazwę przypadków testowych. Ponieważ nazwy przypadków testowych są określane w środowisku wykonawczym, tworzenie funkcji na podstawie tych przypadków testowych musi również odbywać się w środowisku wykonawczym.
aktualizacja: Mogę również zawijać te niestandardowe funkcje nazwane w klasie, jeśli to ułatwiłoby pracę.
Mogę zakodować zawartość funkcji (ponieważ są prawie takie same) w ciągu znaków lub mogę ją oprzeć na wcześniej zdefiniowanej klasie bazowej. Wystarczy wiedzieć, jak wypełnić funkcje tą zawartością.
Na przykład:
func_content = """
for arg in args:
print arg
"""
Dzięki z góry,
Mahdi
Nie ma wejście użytkownika. Wiążę dwa końce znacznie większego modułu. Jeden koniec określa, jakie są przypadki testowe, i między innymi zapełnia listę nazw przypadków testowych. Drugim końcem są same funkcje, które muszą mieć odwzorowanie 1: 1 z nazwą przypadku testowego. Tak więc mam nazwy przypadków testowych, wiem, co chcę zrobić z każdym przypadkiem testowym, po prostu muszę utworzyć funkcje, które mają nazwę przypadków testowych. Ponieważ nazwy przypadków testowych są określane w środowisku wykonawczym, tworzenie funkcji na podstawie tych przypadków testowych musi również odbywać się w środowisku wykonawczym. – mahdiolfat