Комментарии 10
Несколько замечаний:
Правда, всё это я пишу для CPython, но не думаю, что IronPython/Jython различаются в этих вопросах.
- Параметр по-умолчанию, равный globals() — адское попадалово на сложно отслеживаемые ошибки, поскольку оператор def в python исполняется один раз, создавая переменную-функцию, у которой сразу будут прописаны эти значения. Именно с globals(), скорее всего, ничего криминального не произойдёт, оно и так возвращает ~указатель на словарь, но на будущее — это лучше учесть, что иметь mutable-значения по-умолчанию для функций — напрашиваться на очень сложные в отладке проблемы. В Вашем случае лучше вообще опустить это значение, всё равно Вы передаёте его явно.
- К той же функции… не хотите передавать globals() явно — не передавайте, есть же sys._getframe() и у фрейма есть .f_back и .f_globals… Ну то есть код может выглядеть как-то так:
import sys def myImport(module, cls, globs = None): if not globs: try: fr = sys._getframe() globs = fr.f_back.f_globals finally: del fr # to remove possible ref-loops """do main import stuff"""
- Вместо вот этого странного куска
if name[0:1] in string.uppercase: continue newname = name[0:1].upper() + name[1:]
можно просто написать
newname = name.capitalize()
Правда, всё это я пишу для CPython, но не думаю, что IronPython/Jython различаются в этих вопросах.
+8
использование capitalize() — не даёт идентичный результат, если, например, в name есть другие заглавные буквы
+3
Да, я думал это то, что мне нужно, но оно же сломает мне остальные заглавные буквы в названиях.
0
Случай, когда стоило использовать IronRuby и JRuby ;)
0
Есть принципиальные отличия? Думаю, если бы разработчики лучше знали Ruby, то взяли бы её.
0
Да, как правильно написали выше, Руби команде дольше пришлось бы осваивать.
0
Что за библиотека то?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Кросс-вмный (CLR/JVM) код на Python