- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
#реализация 1
servrun = lambda method, list: list and method(list)
servrun( self.server.mkdir, (map(lambda item: item[1], filter(lambda item: item[0] == storagesyncer.ACTION_DIR_CREATED, changes))) )
servrun( self.server.deldir, (map(lambda item: item[1], filter(lambda item: item[0] == storagesyncer.ACTION_DIR_DELETED, changes))) )
servrun( self.server.upload,
(map(lambda item: [item[1], self.abs(item[1])],
filter(lambda item: item[0] == storagesyncer.ACTION_FILE_CREATED or item[0] == storagesyncer.ACTION_UPDATED,
changes))) )
#реализация 2
mkdirs = [path for (action, path) in changes if action == storagesyncer.ACTION_DIR_CREATED]
if mkdirs:
self.server.mkdir(mkdirs)
deldirs = [path for (action, path) in changes if action == storagesyncer.ACTION_DIR_DELETED]
if deldirs:
self.server.deldir(deldirs)
uploads = [[path, self.abs(path)] for (action, path) in changes
if action == (storagesyncer.ACTION_FILE_CREATED or action == storagesyncer.ACTION_UPDATED)
and os.path.isfile(self.abs(path))]
if uploads:
self.server.upload(uploads)
выдавил из себя 2 куска) вот теперь думаю как реализовать нормально)
roku 29.06.2010 19:49 # −4
около 10 и получается длинющий и некрасивый метод.
TarasB 29.06.2010 21:46 # +3
Анонимус 30.06.2010 01:20 # +9
Вдвойне хорошо, что в качестве первого своего языка Вы выбрали питон, а не (например) php.
Старайтесь, и все у Вас получится. Но наверное не нужно выкладывать сюда каждую свою программу
cfdev 30.06.2010 04:22 # +3
KoirN 30.06.2010 18:31 # +3
gegMOPO4 30.11.2010 21:17 # +1
Ещё замечу, что скобки в (action, path) не нужны, а (action == storagesyncer.ACTION_FILE_CREATED or action == storagesyncer.ACTION_UPDATED) лучше записать в виде action in (storagesyncer.ACTION_FILE_CREATED, storagesyncer.ACTION_UPDATED).
roku 01.12.2010 01:43 # 0
TheHamstertamer 28.10.2011 20:07 # 0
Ая-я-я-я-й!