Comments 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 различаются в этих вопросах.
использование capitalize() — не даёт идентичный результат, если, например, в name есть другие заглавные буквы
Да, я думал это то, что мне нужно, но оно же сломает мне остальные заглавные буквы в названиях.
Случай, когда стоило использовать IronRuby и JRuby ;)
Есть принципиальные отличия? Думаю, если бы разработчики лучше знали Ruby, то взяли бы её.
Да, как правильно написали выше, Руби команде дольше пришлось бы осваивать.
Что за библиотека то?
Sign up to leave a comment.
Кросс-вмный (CLR/JVM) код на Python