Если я правильно понимаю, вы задаетесь вопросом, как используются внешние скобки.
Давайте сначала напишем (первое, но применимо ко второму) утверждение без внешних скобок:
start = flow.Start(views.StartView).Permission('shipment.can_start_request').Next(this.split_clerk_warehouse)
Это в точности эквивалентно коду в вашем образце.Но вы, вероятно, согласны с тем, что это нечитабельно .Это требует от пользователя прокрутки кода, и, кроме того, это длинная цепочка символов без какой-либо структуры.Программисту будет трудно понять это, особенно если - позже - мы также будем использовать скобки внутри параметров вызовов.
Так что, возможно, имеет смысл написать это следующим образом:
<s>start = flow.Start(views.StartView).
Permission('shipment.can_start_request').
Next(this.split_clerk_warehouse)</s>
Но это не сработает: Python - это язык, который использует интервалы как способ добавления семантики в код.В результате он сломается: Python попытается проанализировать отдельные ссылки как отдельные операторы.Но что тогда делать с хвостовой точкой?В результате синтаксический анализатор выдаст ошибку.
Теперь в Python есть несколько способов написать операторы в режиме многострочный .Например, с обратной косой чертой:
start = flow.Start(views.StartView). <b>\</b>
Permission('shipment.can_start_request'). <b>\</b>
Next(this.split_clerk_warehouse)
с обратной косой чертой мы указываем, что следующая строка действительно принадлежит текущей, и, таким образом, она анализируется, как будто мы записали все это в одну строку.
Недостаток в том, что мы легко можем забыть обратную косую черту здесь, и это снова допустит ошибку синтаксического анализатора.Более того, для этого требуется линейная работа : для каждой строки мы должны добавить один элемент.
Но языки программирования на самом деле обычно имеют функцию, которую программисты постоянно используют для группировки (под) выражений вместе: скобки.Мы используем его для предоставления приоритета (например, 3 * (2 + 5)
), но мы можем использовать его для простой группировки одного выражения по нескольким строкам, например:
start = <b>(</b>
flow.Start(views.StartView)
.Permission('shipment.can_start_request')
.Next(this.split_clerk_warehouse)
<b>)</b>
Все, что находится в скобках, принадлежитто же выражение, поэтому Python будет игнорировать новые строки.
Обратите внимание, что литералы кортежа также используют скобки.Например:
() # empty tuple
(1, ) # singleton tuple (one element)
(1, 'a', 2, 5) # 4-tuple
Но здесь нам нужно написать запятую в конце для одноэлементного кортежа или нескольких элементов, разделенных запятыми ,
(за исключением пустого кортежа).