то, Которое, не только является ужасным и медленным, кажется неуклюжим.
могут потребоваться некоторые привыкающие к, но это - pythonic способ сделать его. Как был уже указан, альтернативы хуже. Но существует еще одно преимущество выполнения вещей этот путь: полиморфизм.
центральная идея позади утиного ввода состоит в том, что, "если он идет и говорит как утка, затем это - утка". Что, если Вы решаете, что необходимо разделить строку на подклассы так, чтобы можно было измениться, как Вы определяете, может ли что-то быть преобразовано в плавание? Или что, если Вы решаете протестировать некоторый другой объект полностью? Можно сделать эти вещи, не имея необходимость изменять вышеупомянутый код.
Другие языки решают эти проблемы при помощи интерфейсов. Я сохраню анализ, которого решение лучше для другого потока. Точка, тем не менее, - то, что Python находится решительно на утке, вводящей сторону уравнения, и Вы, вероятно, оказываетесь перед необходимостью привыкать к синтаксису как это, если Вы планируете выполнение большого программирования в Python (но это не означает, что необходимо понравиться он, конечно).
Еще одна вещь Вы могли бы хотеть учесть: Python довольно быстр в броске и ловле исключений по сравнению с большим количеством других языков (30x быстрее, чем .NET, например). Heck, сам язык даже выдает исключения для передачи неисключительных, нормальных условий программы (каждый раз, когда Вы используете для цикла). Таким образом я не волновался бы слишком много об аспектах производительности этого кода, пока Вы не замечаете значительной проблемы.
Вот некоторые вещи, которые вы можете сделать по крайней мере:
import module
print dir(module) # Find functions of interest.
# For each function of interest:
help(module.interesting_function)
print module.interesting_function.func_defaults
Марк Пилигрим глава 4 , о которой вы упомянули, действительно отлично подходит для Python 2.5 (и любой другой недавней версии 2. *
, спасибо к обратной совместимости). Марк не упоминает help
, но я вижу, что есть другие ответы.
Один ключевой бит, о котором никто (включая Марка ;-), похоже, не упомянул, - это inspect , отличный модуль в стандартной библиотеке Python, которая действительно помогает в продвинутом самоанализе.
Это тоже неплохо:
import module
help(module)
Он напечатает строку документации для модуля, затем выведет список содержимого модуля, а также их строки документации.
Функция dir () показывает все элементы, которые есть в модуле.