Новый и опрятный в Python 3.5:
[*map(chr, [66, 53, 0, 94])]
Благодаря Дополнительные распаковывающие обобщения
В данном примере нет никакой реальной разницы между двумя - и никакие значительные преимущества или недостатки к также.
Однако в больших схемах вещи могут стать очень неопрятными и трудными справиться, когда практика для выбора, вложенного по глобальному, ясно не определяется.
Очевидные причины использования глобальных типов (прежде всего, повторное использование, также вложение) имеют тенденцию диктовать - в целом я предпочитаю один режим или другой. Т.е. если Вы снова используете некоторый complexTypes, но не других, сделайте их всех глобальными. Если Вы ничего не снова используете, сделайте их всех вложенными.
Исключение к этому (и это - что-то, которое я часто сталкивался) - то, если определение типов составляет объем сложности (!) Вашей схемы, и их включение относительно просто. В этом случае, независимо от того, снова используются ли они, я рекомендовал бы делать их глобальными, поскольку намного легче реструктурировать/переупорядочить Ваш документ, когда Вы не должны пробираться через крупные complexType определения. Они являются также теоретически более портативными.
Существуют также случаи, где Вы не можете достигнуть определенных структур документа с вложенными типами - пример этого использует два complexTypes в последовательности, которая может содержать 0 к неограниченным экземплярам каждого типа в любом смешанном порядке. Это не возможно с вложенными типами, но это с глобальными типами, на которые ссылаются.