Are line continuations needed?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Russell Wallace

    Are line continuations needed?

    Hi all,

    Python lets you continue a single logical line across more than one
    physical line, either by putting a \ at the end or letting it happen
    automatically with an incomplete infix operator.

    I'm wondering how often is this feature needed? Would there be any
    problems if it weren't part of the language?

    --
    "Sore wa himitsu desu."
    To reply by email, remove
    the small snack from address.

  • Derek Thomson

    #2
    Re: Are line continuations needed?

    Russell Wallace wrote:[color=blue]
    > Hi all,
    >
    > Python lets you continue a single logical line across more than one
    > physical line, either by putting a \ at the end or letting it happen
    > automatically with an incomplete infix operator.
    >
    > I'm wondering how often is this feature needed? Would there be any
    > problems if it weren't part of the language?
    >[/color]

    I just needed to use this a few minutes ago, in a class declaration ...

    class ParticleDistrib utionBehaviorSe rver \
    (Microphysics__ POA.ParticleDis tributionBehavi or):

    I had to split the line to fit within 80 columns, and without the '\'
    character I get the following error:

    =====
    $ python scoping_server. py --POA
    File "scoping_server .py", line 8
    class ParticleDistrib utionBehaviorSe rver
    ^
    SyntaxError: invalid syntax
    =====

    So the fact that you don't need it in the case of incomplete expressions
    eliminates *most* of the need for it, but there are still a few cases
    where it is required.

    Regards,
    Derek.

    Comment

    • John Roth

      #3
      Re: Are line continuations needed?


      "Derek Thomson" <derek@hiredgoo ns.org> wrote in message
      news:40740f99@d uster.adelaide. on.net...[color=blue]
      > Russell Wallace wrote:[color=green]
      > > Hi all,
      > >
      > > Python lets you continue a single logical line across more than one
      > > physical line, either by putting a \ at the end or letting it happen
      > > automatically with an incomplete infix operator.
      > >
      > > I'm wondering how often is this feature needed? Would there be any
      > > problems if it weren't part of the language?
      > >[/color]
      >
      > I just needed to use this a few minutes ago, in a class declaration ...
      >
      > class ParticleDistrib utionBehaviorSe rver \
      > (Microphysics__ POA.ParticleDis tributionBehavi or):
      >
      > I had to split the line to fit within 80 columns, and without the '\'
      > character I get the following error:
      >
      > =====
      > $ python scoping_server. py --POA
      > File "scoping_server .py", line 8
      > class ParticleDistrib utionBehaviorSe rver
      > ^
      > SyntaxError: invalid syntax
      > =====
      >
      > So the fact that you don't need it in the case of incomplete expressions
      > eliminates *most* of the need for it, but there are still a few cases
      > where it is required.[/color]

      Technically, you could have split it at the period, but that
      might be even worse in terms of readability.

      BTW - why did it have to fit in 80 columns?

      John Roth[color=blue]
      >
      > Regards,
      > Derek.[/color]


      Comment

      • Mark Jackson

        #4
        Re: Are line continuations needed?

        Derek Thomson <derek@hiredgoo ns.org> writes:[color=blue]
        > Russell Wallace wrote:[color=green]
        > > Hi all,
        > >
        > > Python lets you continue a single logical line across more than one
        > > physical line, either by putting a \ at the end or letting it happen
        > > automatically with an incomplete infix operator.
        > >
        > > I'm wondering how often is this feature needed? Would there be any
        > > problems if it weren't part of the language?
        > >[/color]
        >
        > I just needed to use this a few minutes ago, in a class declaration ...
        >
        > class ParticleDistrib utionBehaviorSe rver \
        > (Microphysics__ POA.ParticleDis tributionBehavi or):
        >
        > I had to split the line to fit within 80 columns, and without the '\'
        > character I get the following error:
        >
        > =====
        > $ python scoping_server. py --POA
        > File "scoping_server .py", line 8
        > class ParticleDistrib utionBehaviorSe rver
        > ^
        > SyntaxError: invalid syntax
        > =====[/color]

        This ought to work:

        class ParticleDistrib utionBehaviorSe rver(
        Microphysics__P OA.ParticleDist ributionBehavio r):

        --
        Mark Jackson - http://www.alumni.caltech.edu/~mjackson
        Hate to interrupt with a spelling flame, but it's "Cheney,"
        not "Chaney." It may only be one letter, but it's 998 faces.
        - Mike Peterson


        Comment

        • Derek Thomson

          #5
          Re: Are line continuations needed?

          John Roth wrote:
          [color=blue]
          >Derek Thomson wrote:[color=green]
          >>
          >>class ParticleDistrib utionBehaviorSe rver \
          >> (Microphysics__ POA.ParticleDis tributionBehavi or):
          >>
          >> [snip]
          >>
          >>So the fact that you don't need it in the case of incomplete expressions
          >>eliminates *most* of the need for it, but there are still a few cases
          >>where it is required.[/color]
          >
          >
          > Technically, you could have split it at the period, but that
          > might be even worse in terms of readability.[/color]

          I didn't know that, but yes, it would be ugly.
          [color=blue]
          >
          > BTW - why did it have to fit in 80 columns?[/color]

          Because that's our coding standard. But it wouldn't matter if it was 120
          columns, or in fact any number you specify - I can still construct an
          example that won't work.

          Regards,
          Derek.

          Comment

          • Derek Thomson

            #6
            Re: Are line continuations needed?

            Mark Jackson wrote:[color=blue]
            >
            > This ought to work:
            >
            > class ParticleDistrib utionBehaviorSe rver(
            > Microphysics__P OA.ParticleDist ributionBehavio r):
            >[/color]

            In fact it does work - I should have thought of that. I've just checked
            in the change to CVS. Thanks!

            Now I'll have to think of another case ... I'm sure there was another ...

            Regards,
            Derek.

            Comment

            • Peter Maas

              #7
              Re: Are line continuations needed?

              Russell Wallace wrote:[color=blue]
              > Python lets you continue a single logical line across more than one
              > physical line, either by putting a \ at the end or letting it happen
              > automatically with an incomplete infix operator.
              >
              > I'm wondering how often is this feature needed? Would there be any
              > problems if it weren't part of the language?[/color]

              Just had this example:

              d = { 'key1' : 'A very very long string of several hundred '\
              'characters. I could use a multi-line string but '\
              'then either left white space would be part of the '\
              'string or I would have to align it at column 0 '\
              '(ugly). I could embed it into a pair of brackets '\
              'but I see no advantage over \\. Finally I could '\
              'put this string on a single line (also ugly and hard '\
              'to read).'
              ...
              }


              Mit freundlichen Gruessen,

              Peter Maas

              --
              -------------------------------------------------------------------
              Peter Maas, M+R Infosysteme, D-52070 Aachen, Hubert-Wienen-Str. 24
              Tel +49-241-93878-0 Fax +49-241-93878-20 eMail peter.maas@mplu sr.de
              -------------------------------------------------------------------

              Comment

              • Peter Otten

                #8
                Re: Are line continuations needed?

                Peter Maas wrote:
                [color=blue]
                > Russell Wallace wrote:[color=green]
                >> Python lets you continue a single logical line across more than one
                >> physical line, either by putting a \ at the end or letting it happen
                >> automatically with an incomplete infix operator.
                >>
                >> I'm wondering how often is this feature needed? Would there be any
                >> problems if it weren't part of the language?[/color]
                >
                > Just had this example:
                >
                > d = { 'key1' : 'A very very long string of several hundred '\
                > 'characters. I could use a multi-line string but '\
                > 'then either left white space would be part of the '\
                > 'string or I would have to align it at column 0 '\
                > '(ugly). I could embed it into a pair of brackets '\
                > 'but I see no advantage over \\. Finally I could '\
                > 'put this string on a single line (also ugly and hard '\
                > 'to read).'
                > ...
                > }[/color]
                [color=blue][color=green][color=darkred]
                >>> d = {1: "Hi Peter, "[/color][/color][/color]
                .... "what do you "
                .... "think of this?"}

                Peter

                Comment

                • David Bolen

                  #9
                  Re: Are line continuations needed?

                  Peter Maas <peter.maas@mpl usr.de> writes:
                  [color=blue]
                  > Just had this example:
                  >
                  > d = { 'key1' : 'A very very long string of several hundred '\
                  > 'characters. I could use a multi-line string but '\
                  > 'then either left white space would be part of the '\
                  > 'string or I would have to align it at column 0 '\
                  > '(ugly). I could embed it into a pair of brackets '\
                  > 'but I see no advantage over \\. Finally I could '\
                  > 'put this string on a single line (also ugly and hard '\
                  > 'to read).'
                  > ...
                  > }[/color]

                  Actually that's unnecessary since you are already in a braced
                  expression from the dictionary constructor. So the lines are
                  implicitly continuation lines until you close the dictionary, and the
                  compilers combination of adjacent string constants still works. You
                  can drop the continuation characters and it'll give the same
                  dictionary.

                  I tend to construct parenthetical expressions if I can to avoid the
                  explicit line continuation character - mostly since I think it looks
                  nicer, but there are some cases where I prefer the contination.
                  There's normally an alternative to the continuation, but one that I
                  don't consider as readable.

                  For example, one place where I've used line continuations was in
                  explicit from imports, such as:

                  from some.package.ex ceptions import ExceptionName, OtherName, \
                  AnotherName, AndAnotherName

                  where I find this more readable than repeating the "from <package>
                  import" portion of the line multiple times.

                  I also use it to suppress leading newlines in triple quoted strings,
                  while permitting me to write the entire string at the same indent
                  level, e.g.:

                  MSG = """\
                  blah blah blah

                  and some more blah blah blah
                  """

                  I'll also use it sometimes for string formatting operations (either
                  standalone or as part of print) where sometimes I think it looks nicer
                  than putting the entire expression in parenthesis), e.g.:

                  some_variable = 'This is a formatting string args %s %s %s' % \
                  (argument1, argument2, argument3)


                  -- David

                  Comment

                  • Christopher Koppler

                    #10
                    Re: Are line continuations needed?

                    On Wed, 07 Apr 2004 14:05:29 GMT, wallacethinmint r@eircom.net (Russell
                    Wallace) wrote:
                    [color=blue]
                    >Hi all,
                    >
                    >Python lets you continue a single logical line across more than one
                    >physical line, either by putting a \ at the end or letting it happen
                    >automaticall y with an incomplete infix operator.
                    >
                    >I'm wondering how often is this feature needed? Would there be any
                    >problems if it weren't part of the language?[/color]

                    I don't have any ready examples, but I do occasionally need it, if
                    only for readability porpoises, or more often to fit a line to a
                    certain length limit. If a parenthetical expression will work, and
                    doesn't look stranger (really can't think of a case), I'll use that.

                    But problems there'll surely be - with legacy code compatibility.

                    [color=blue]
                    >--
                    >"Sore wa himitsu desu."[/color]
                    Not really it isn't ;-)

                    --
                    Christopher

                    Comment

                    • Russell Wallace

                      #11
                      Re: Are line continuations needed?

                      On Wed, 07 Apr 2004 17:53:00 GMT, Christopher Koppler
                      <klapotec@chell o.at> wrote:
                      [color=blue]
                      >On Wed, 07 Apr 2004 14:05:29 GMT, wallacethinmint r@eircom.net (Russell
                      >Wallace) wrote:
                      >[color=green]
                      >>Python lets you continue a single logical line across more than one
                      >>physical line, either by putting a \ at the end or letting it happen
                      >>automatical ly with an incomplete infix operator.[/color]
                      >
                      >I don't have any ready examples, but I do occasionally need it, if
                      >only for readability porpoises, or more often to fit a line to a
                      >certain length limit. If a parenthetical expression will work, and
                      >doesn't look stranger (really can't think of a case), I'll use that.[/color]

                      Okay, thanks.
                      [color=blue]
                      >But problems there'll surely be - with legacy code compatibility.[/color]

                      *nod* I was more asking whether it was a good idea to include it
                      originally than whether it could be removed now, though I suppose
                      since 3.0 is supposed to be breaking with backward compatibility,
                      there's the question of whether it should be retained there.
                      [color=blue]
                      >Not really it isn't ;-)[/color]

                      ^.^

                      --
                      "Sore wa himitsu desu."
                      To reply by email, remove
                      the small snack from address.

                      Comment

                      • Heather Coppersmith

                        #12
                        Re: Are line continuations needed?

                        On Wed, 07 Apr 2004 14:05:29 GMT,
                        wallacethinmint r@eircom.net (Russell Wallace) wrote:
                        [color=blue]
                        > Python lets you continue a single logical line across more than
                        > one physical line, either by putting a \ at the end or letting
                        > it happen automatically with an incomplete infix operator.[/color]
                        [color=blue]
                        > I'm wondering how often is this feature needed? Would there be
                        > any problems if it weren't part of the language?[/color]

                        Completely contrived:

                        if a == b or b == c or c == d or d == e or e == f or f == g ....

                        No, I can't imagine this sort of thing actually coming up, and
                        yes, it's "fixable" with some extra parenthesese:

                        if (a == b or b == c or c == d) or (d == e or e == f
                        or f == g ....

                        Regards,
                        Heather

                        --
                        Heather Coppersmith
                        That's not right; that's not even wrong. -- Wolfgang Pauli

                        Comment

                        Working...