Найти - Пользователи
Полная версия: Вложенные функции
Начало » Python для новичков » Вложенные функции
1
Suliman
Я вынес функции (def) в модуль.

def foo1():
	print "foo1"
def foo2():
	print "foo2"
def foo3():
	print "foo3"

Из тела основной программы мне нужно вызвать их все. Однако писать в ней руками строки:

a.foo1()
a.foo2()
a.foo3()
Как-то не слишком эффективно. Можно ли вызов всех функций поместить в модуль и вызвать все их сразу? Догадываюсь что можно, только как это покрасивее сделать?


nonamez
ммм, а чем класс не подходит?
dimy44
Ну я формальный ответ дам, объедините вызов этих трех функций в отдельну функцию в модуле, например
# модуль a.py
def all_func():
    for func in (func1, func2, func3):
        func()
# a.all_func()
doza_and
import b
for i in dir(b):
    v=getattr(b,i)
    if callable(v):
        v()
JOHN_16
Suliman
типичный подход:
import fnmatch
import a
for i in fnmatch.filter(a.__dict__, 'func*'): 
    getattr(a, i)()
отсеиваем по маске имени все внутренние объекты и вызываем их
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB