Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2014 13:05:23

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные функции

Я вынес функции (def) в модуль.

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

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

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


Офлайн

#2 Апрель 10, 2014 15:15:01

nonamez
Зарегистрирован: 2014-03-07
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные функции

ммм, а чем класс не подходит?

Офлайн

#3 Апрель 10, 2014 21:02:52

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Вложенные функции

Ну я формальный ответ дам, объедините вызов этих трех функций в отдельну функцию в модуле, например

# модуль a.py
def all_func():
    for func in (func1, func2, func3):
        func()
# a.all_func()

Офлайн

#4 Апрель 10, 2014 22:00:52

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Вложенные функции

import b
for i in dir(b):
    v=getattr(b,i)
    if callable(v):
        v()



Офлайн

#5 Апрель 10, 2014 22:06:32

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Вложенные функции

Suliman
типичный подход:

import fnmatch
import a
for i in fnmatch.filter(a.__dict__, 'func*'): 
    getattr(a, i)()
отсеиваем по маске имени все внутренние объекты и вызываем их



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version