IndentationError when pasting code in Python 3 interpreter mode Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Community Moderator Election Results Why I closed the “Why is Kali so hard” questionPython in GNOME code baseUse tabs for indentation in Python modeVim :fold of python code not different to C/C++ codecan something besides the shebang set the interpreter?Specifying a generic interpreter for a program like expect?how to write python code to change display colorThe python command starts the the wrong version of the python interpreterRun python script without declare it interpreterWhat's the purpose of having “env [shell]” as an interpreter?Cant change python interpreter in Visual Studio Code on Mac

Do you forfeit tax refunds/credits if you aren't required to and don't file by April 15?

Is the Standard Deduction better than Itemized when both are the same amount?

How to draw this diagram using TikZ package?

Did Xerox really develop the first LAN?

Sorting numerically

Do I really need recursive chmod to restrict access to a folder?

When to stop saving and start investing?

Marking the functions of a sentence: 'She may like it'

Why is "Consequences inflicted." not a sentence?

Does surprise arrest existing movement?

3 doors, three guards, one stone

How can players work together to take actions that are otherwise impossible?

Is there a concise way to say "all of the X, one of each"?

What happens to sewage if there is no river near by?

How widely used is the term Treppenwitz? Is it something that most Germans know?

∞ symbol in external pdf disappears when used as figure

Why is "Captain Marvel" translated as male in Portugal?

How much radiation do nuclear physics experiments expose researchers to nowadays?

Antler Helmet: Can it work?

List numbering with letters

Is 1 ppb equal to 1 μg/kg?

What is the longest distance a 13th-level monk can jump while attacking on the same turn?

Are variable time comparisons always a security risk in cryptography code?

IndentationError when pasting code in Python 3 interpreter mode



IndentationError when pasting code in Python 3 interpreter mode



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
2019 Community Moderator Election Results
Why I closed the “Why is Kali so hard” questionPython in GNOME code baseUse tabs for indentation in Python modeVim :fold of python code not different to C/C++ codecan something besides the shebang set the interpreter?Specifying a generic interpreter for a program like expect?how to write python code to change display colorThe python command starts the the wrong version of the python interpreterRun python script without declare it interpreterWhat's the purpose of having “env [shell]” as an interpreter?Cant change python interpreter in Visual Studio Code on Mac



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








2















When I was running the following code, which has blank lines (no space) inside functions, I got different behavior from Python 3.6.5 when running the code line by line in interpreter mode and python3 split.py:



# File split.py

def find(s, start, predictor):
for i in range(start, len(s)):
if predictor(s[i]):
return i
return -1

def find_all(s, sep=" tn"):
beg_of_nonsep = 0
while beg_of_nonsep < len(s):
beg_of_nonsep = find(s, beg_of_nonsep, lambda ch, sep_chs=sep: ch not in sep_chs)
if beg_of_nonsep == -1:
break

end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
if end_of_nonsep == -1:
end_of_nonsep = len(s)

yield (beg_of_nonsep, end_of_nonsep)

beg_of_nonsep = end_of_nonsep + 1

split = lambda s: [s[beg: end] for (beg, end) in find_all(s)]

print(split(""))
print(split(" tn"))
print(split(" tssssn"))


When running the code line by line in interpreter mode, python3 gave me nasty errors:



Type "help", "copyright", "credits" or "license" for more information.
>>> def find(s, start, predictor):
... for i in range(start, len(s)):
... if predictor(s[i]):
... return i
... return -1
...
>>> def find_all(s, sep=" tn"):
... beg_of_nonsep = 0
... while beg_of_nonsep < len(s):
... beg_of_nonsep = find(s, beg_of_nonsep, lambda ch, sep_chs=sep: ch not in sep_chs)
... if beg_of_nonsep == -1:
... break
...
>>> end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
File "<stdin>", line 1
end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
^
IndentationError: unexpected indent
>>> if end_of_nonsep == -1:
File "<stdin>", line 1
if end_of_nonsep == -1:
^
IndentationError: unexpected indent
>>> end_of_nonsep = len(s)
File "<stdin>", line 1
end_of_nonsep = len(s)
^
IndentationError: unexpected indent
>>>
>>> yield (beg_of_nonsep, end_of_nonsep)
File "<stdin>", line 1
yield (beg_of_nonsep, end_of_nonsep)
^
IndentationError: unexpected indent
>>>
>>> beg_of_nonsep = end_of_nonsep + 1
File "<stdin>", line 1
beg_of_nonsep = end_of_nonsep + 1
^
IndentationError: unexpected indent
>>>
>>> split = lambda s: [s[beg: end] for (beg, end) in find_all(s)]
>>>
>>> print(split(""))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
TypeError: 'NoneType' object is not iterable
>>> print(split(" tn"))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
TypeError: 'NoneType' object is not iterable
>>> print(split(" tssssn"))





And the last print here never quit until I used ctrlc to stop it.



Thus, I thought there were many bugs with my code.



However, when I ran the code with python3 split.py, none of this happened:



[]
[]
['ssss']


This is rather confusing to me.



To be clear, I was actually using vimcmdline on Debian 9.8 with vim 8.1.



I am also using pylint through pymode, which split any trailing space, of which it considered superfluous.



This problem happened when I tried to use its builtin keybinding to send split.py to the python3 in the tmux split it opened.



I have already filled an issue, but I can't help wonder why python3 behaves like this.










share|improve this question






























    2















    When I was running the following code, which has blank lines (no space) inside functions, I got different behavior from Python 3.6.5 when running the code line by line in interpreter mode and python3 split.py:



    # File split.py

    def find(s, start, predictor):
    for i in range(start, len(s)):
    if predictor(s[i]):
    return i
    return -1

    def find_all(s, sep=" tn"):
    beg_of_nonsep = 0
    while beg_of_nonsep < len(s):
    beg_of_nonsep = find(s, beg_of_nonsep, lambda ch, sep_chs=sep: ch not in sep_chs)
    if beg_of_nonsep == -1:
    break

    end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
    if end_of_nonsep == -1:
    end_of_nonsep = len(s)

    yield (beg_of_nonsep, end_of_nonsep)

    beg_of_nonsep = end_of_nonsep + 1

    split = lambda s: [s[beg: end] for (beg, end) in find_all(s)]

    print(split(""))
    print(split(" tn"))
    print(split(" tssssn"))


    When running the code line by line in interpreter mode, python3 gave me nasty errors:



    Type "help", "copyright", "credits" or "license" for more information.
    >>> def find(s, start, predictor):
    ... for i in range(start, len(s)):
    ... if predictor(s[i]):
    ... return i
    ... return -1
    ...
    >>> def find_all(s, sep=" tn"):
    ... beg_of_nonsep = 0
    ... while beg_of_nonsep < len(s):
    ... beg_of_nonsep = find(s, beg_of_nonsep, lambda ch, sep_chs=sep: ch not in sep_chs)
    ... if beg_of_nonsep == -1:
    ... break
    ...
    >>> end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
    File "<stdin>", line 1
    end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
    ^
    IndentationError: unexpected indent
    >>> if end_of_nonsep == -1:
    File "<stdin>", line 1
    if end_of_nonsep == -1:
    ^
    IndentationError: unexpected indent
    >>> end_of_nonsep = len(s)
    File "<stdin>", line 1
    end_of_nonsep = len(s)
    ^
    IndentationError: unexpected indent
    >>>
    >>> yield (beg_of_nonsep, end_of_nonsep)
    File "<stdin>", line 1
    yield (beg_of_nonsep, end_of_nonsep)
    ^
    IndentationError: unexpected indent
    >>>
    >>> beg_of_nonsep = end_of_nonsep + 1
    File "<stdin>", line 1
    beg_of_nonsep = end_of_nonsep + 1
    ^
    IndentationError: unexpected indent
    >>>
    >>> split = lambda s: [s[beg: end] for (beg, end) in find_all(s)]
    >>>
    >>> print(split(""))
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "<stdin>", line 1, in <lambda>
    TypeError: 'NoneType' object is not iterable
    >>> print(split(" tn"))
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "<stdin>", line 1, in <lambda>
    TypeError: 'NoneType' object is not iterable
    >>> print(split(" tssssn"))





    And the last print here never quit until I used ctrlc to stop it.



    Thus, I thought there were many bugs with my code.



    However, when I ran the code with python3 split.py, none of this happened:



    []
    []
    ['ssss']


    This is rather confusing to me.



    To be clear, I was actually using vimcmdline on Debian 9.8 with vim 8.1.



    I am also using pylint through pymode, which split any trailing space, of which it considered superfluous.



    This problem happened when I tried to use its builtin keybinding to send split.py to the python3 in the tmux split it opened.



    I have already filled an issue, but I can't help wonder why python3 behaves like this.










    share|improve this question


























      2












      2








      2








      When I was running the following code, which has blank lines (no space) inside functions, I got different behavior from Python 3.6.5 when running the code line by line in interpreter mode and python3 split.py:



      # File split.py

      def find(s, start, predictor):
      for i in range(start, len(s)):
      if predictor(s[i]):
      return i
      return -1

      def find_all(s, sep=" tn"):
      beg_of_nonsep = 0
      while beg_of_nonsep < len(s):
      beg_of_nonsep = find(s, beg_of_nonsep, lambda ch, sep_chs=sep: ch not in sep_chs)
      if beg_of_nonsep == -1:
      break

      end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
      if end_of_nonsep == -1:
      end_of_nonsep = len(s)

      yield (beg_of_nonsep, end_of_nonsep)

      beg_of_nonsep = end_of_nonsep + 1

      split = lambda s: [s[beg: end] for (beg, end) in find_all(s)]

      print(split(""))
      print(split(" tn"))
      print(split(" tssssn"))


      When running the code line by line in interpreter mode, python3 gave me nasty errors:



      Type "help", "copyright", "credits" or "license" for more information.
      >>> def find(s, start, predictor):
      ... for i in range(start, len(s)):
      ... if predictor(s[i]):
      ... return i
      ... return -1
      ...
      >>> def find_all(s, sep=" tn"):
      ... beg_of_nonsep = 0
      ... while beg_of_nonsep < len(s):
      ... beg_of_nonsep = find(s, beg_of_nonsep, lambda ch, sep_chs=sep: ch not in sep_chs)
      ... if beg_of_nonsep == -1:
      ... break
      ...
      >>> end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
      File "<stdin>", line 1
      end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
      ^
      IndentationError: unexpected indent
      >>> if end_of_nonsep == -1:
      File "<stdin>", line 1
      if end_of_nonsep == -1:
      ^
      IndentationError: unexpected indent
      >>> end_of_nonsep = len(s)
      File "<stdin>", line 1
      end_of_nonsep = len(s)
      ^
      IndentationError: unexpected indent
      >>>
      >>> yield (beg_of_nonsep, end_of_nonsep)
      File "<stdin>", line 1
      yield (beg_of_nonsep, end_of_nonsep)
      ^
      IndentationError: unexpected indent
      >>>
      >>> beg_of_nonsep = end_of_nonsep + 1
      File "<stdin>", line 1
      beg_of_nonsep = end_of_nonsep + 1
      ^
      IndentationError: unexpected indent
      >>>
      >>> split = lambda s: [s[beg: end] for (beg, end) in find_all(s)]
      >>>
      >>> print(split(""))
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 1, in <lambda>
      TypeError: 'NoneType' object is not iterable
      >>> print(split(" tn"))
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 1, in <lambda>
      TypeError: 'NoneType' object is not iterable
      >>> print(split(" tssssn"))





      And the last print here never quit until I used ctrlc to stop it.



      Thus, I thought there were many bugs with my code.



      However, when I ran the code with python3 split.py, none of this happened:



      []
      []
      ['ssss']


      This is rather confusing to me.



      To be clear, I was actually using vimcmdline on Debian 9.8 with vim 8.1.



      I am also using pylint through pymode, which split any trailing space, of which it considered superfluous.



      This problem happened when I tried to use its builtin keybinding to send split.py to the python3 in the tmux split it opened.



      I have already filled an issue, but I can't help wonder why python3 behaves like this.










      share|improve this question
















      When I was running the following code, which has blank lines (no space) inside functions, I got different behavior from Python 3.6.5 when running the code line by line in interpreter mode and python3 split.py:



      # File split.py

      def find(s, start, predictor):
      for i in range(start, len(s)):
      if predictor(s[i]):
      return i
      return -1

      def find_all(s, sep=" tn"):
      beg_of_nonsep = 0
      while beg_of_nonsep < len(s):
      beg_of_nonsep = find(s, beg_of_nonsep, lambda ch, sep_chs=sep: ch not in sep_chs)
      if beg_of_nonsep == -1:
      break

      end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
      if end_of_nonsep == -1:
      end_of_nonsep = len(s)

      yield (beg_of_nonsep, end_of_nonsep)

      beg_of_nonsep = end_of_nonsep + 1

      split = lambda s: [s[beg: end] for (beg, end) in find_all(s)]

      print(split(""))
      print(split(" tn"))
      print(split(" tssssn"))


      When running the code line by line in interpreter mode, python3 gave me nasty errors:



      Type "help", "copyright", "credits" or "license" for more information.
      >>> def find(s, start, predictor):
      ... for i in range(start, len(s)):
      ... if predictor(s[i]):
      ... return i
      ... return -1
      ...
      >>> def find_all(s, sep=" tn"):
      ... beg_of_nonsep = 0
      ... while beg_of_nonsep < len(s):
      ... beg_of_nonsep = find(s, beg_of_nonsep, lambda ch, sep_chs=sep: ch not in sep_chs)
      ... if beg_of_nonsep == -1:
      ... break
      ...
      >>> end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
      File "<stdin>", line 1
      end_of_nonsep = find(s, beg_of_nonsep + 1, lambda ch, sep_chs=sep: ch in sep_chs)
      ^
      IndentationError: unexpected indent
      >>> if end_of_nonsep == -1:
      File "<stdin>", line 1
      if end_of_nonsep == -1:
      ^
      IndentationError: unexpected indent
      >>> end_of_nonsep = len(s)
      File "<stdin>", line 1
      end_of_nonsep = len(s)
      ^
      IndentationError: unexpected indent
      >>>
      >>> yield (beg_of_nonsep, end_of_nonsep)
      File "<stdin>", line 1
      yield (beg_of_nonsep, end_of_nonsep)
      ^
      IndentationError: unexpected indent
      >>>
      >>> beg_of_nonsep = end_of_nonsep + 1
      File "<stdin>", line 1
      beg_of_nonsep = end_of_nonsep + 1
      ^
      IndentationError: unexpected indent
      >>>
      >>> split = lambda s: [s[beg: end] for (beg, end) in find_all(s)]
      >>>
      >>> print(split(""))
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 1, in <lambda>
      TypeError: 'NoneType' object is not iterable
      >>> print(split(" tn"))
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 1, in <lambda>
      TypeError: 'NoneType' object is not iterable
      >>> print(split(" tssssn"))





      And the last print here never quit until I used ctrlc to stop it.



      Thus, I thought there were many bugs with my code.



      However, when I ran the code with python3 split.py, none of this happened:



      []
      []
      ['ssss']


      This is rather confusing to me.



      To be clear, I was actually using vimcmdline on Debian 9.8 with vim 8.1.



      I am also using pylint through pymode, which split any trailing space, of which it considered superfluous.



      This problem happened when I tried to use its builtin keybinding to send split.py to the python3 in the tmux split it opened.



      I have already filled an issue, but I can't help wonder why python3 behaves like this.







      python interpreter






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 1 hour ago









      200_success

      3,96711629




      3,96711629










      asked 13 hours ago









      JiaHao XuJiaHao Xu

      1374




      1374




















          1 Answer
          1






          active

          oldest

          votes


















          17














          This behaviour doesn't look surprising to me.



          Python uses indentation to determine the beginning and end of a code block. Logically indentation ends on the first line that isn't indented. When running scripts blank lines are ignored. And when running scripts this means that indentation ends either with an un-indented line or the end of file.



          But this behaviour cannot work in a command line mode because there is no end of file. Consider the following script file:



          from somewhere import bar, do_something

          for foo in bar:
          do_something(foo)


          In a script, the end of the file indicates that it should now run the for loop. It knows there is no more to execute. But in command line mode, the command line is still open, you can still write more. It has no idea whether or not your next line of code is going to be inside or outside the for loop. But the command line cannot just sit and wait for your next line of code... you want it to execute ... now!



          Therefore the command line operates with one specific difference. A blank line will also end a code block. So this is fine:



          from somewhere import bar, do_something, do_something_else

          for foo in bar:
          do_something(foo)
          do_something_else(foo)


          But this is an error:



          from somewhere import bar, do_something, do_something_else

          for foo in bar:
          do_something(foo)

          do_something_else(foo)


          Because you have already ended the for loop with a blank line and cannot add to it.






          share|improve this answer























            Your Answer








            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "106"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f512535%2findentationerror-when-pasting-code-in-python-3-interpreter-mode%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            17














            This behaviour doesn't look surprising to me.



            Python uses indentation to determine the beginning and end of a code block. Logically indentation ends on the first line that isn't indented. When running scripts blank lines are ignored. And when running scripts this means that indentation ends either with an un-indented line or the end of file.



            But this behaviour cannot work in a command line mode because there is no end of file. Consider the following script file:



            from somewhere import bar, do_something

            for foo in bar:
            do_something(foo)


            In a script, the end of the file indicates that it should now run the for loop. It knows there is no more to execute. But in command line mode, the command line is still open, you can still write more. It has no idea whether or not your next line of code is going to be inside or outside the for loop. But the command line cannot just sit and wait for your next line of code... you want it to execute ... now!



            Therefore the command line operates with one specific difference. A blank line will also end a code block. So this is fine:



            from somewhere import bar, do_something, do_something_else

            for foo in bar:
            do_something(foo)
            do_something_else(foo)


            But this is an error:



            from somewhere import bar, do_something, do_something_else

            for foo in bar:
            do_something(foo)

            do_something_else(foo)


            Because you have already ended the for loop with a blank line and cannot add to it.






            share|improve this answer



























              17














              This behaviour doesn't look surprising to me.



              Python uses indentation to determine the beginning and end of a code block. Logically indentation ends on the first line that isn't indented. When running scripts blank lines are ignored. And when running scripts this means that indentation ends either with an un-indented line or the end of file.



              But this behaviour cannot work in a command line mode because there is no end of file. Consider the following script file:



              from somewhere import bar, do_something

              for foo in bar:
              do_something(foo)


              In a script, the end of the file indicates that it should now run the for loop. It knows there is no more to execute. But in command line mode, the command line is still open, you can still write more. It has no idea whether or not your next line of code is going to be inside or outside the for loop. But the command line cannot just sit and wait for your next line of code... you want it to execute ... now!



              Therefore the command line operates with one specific difference. A blank line will also end a code block. So this is fine:



              from somewhere import bar, do_something, do_something_else

              for foo in bar:
              do_something(foo)
              do_something_else(foo)


              But this is an error:



              from somewhere import bar, do_something, do_something_else

              for foo in bar:
              do_something(foo)

              do_something_else(foo)


              Because you have already ended the for loop with a blank line and cannot add to it.






              share|improve this answer

























                17












                17








                17







                This behaviour doesn't look surprising to me.



                Python uses indentation to determine the beginning and end of a code block. Logically indentation ends on the first line that isn't indented. When running scripts blank lines are ignored. And when running scripts this means that indentation ends either with an un-indented line or the end of file.



                But this behaviour cannot work in a command line mode because there is no end of file. Consider the following script file:



                from somewhere import bar, do_something

                for foo in bar:
                do_something(foo)


                In a script, the end of the file indicates that it should now run the for loop. It knows there is no more to execute. But in command line mode, the command line is still open, you can still write more. It has no idea whether or not your next line of code is going to be inside or outside the for loop. But the command line cannot just sit and wait for your next line of code... you want it to execute ... now!



                Therefore the command line operates with one specific difference. A blank line will also end a code block. So this is fine:



                from somewhere import bar, do_something, do_something_else

                for foo in bar:
                do_something(foo)
                do_something_else(foo)


                But this is an error:



                from somewhere import bar, do_something, do_something_else

                for foo in bar:
                do_something(foo)

                do_something_else(foo)


                Because you have already ended the for loop with a blank line and cannot add to it.






                share|improve this answer













                This behaviour doesn't look surprising to me.



                Python uses indentation to determine the beginning and end of a code block. Logically indentation ends on the first line that isn't indented. When running scripts blank lines are ignored. And when running scripts this means that indentation ends either with an un-indented line or the end of file.



                But this behaviour cannot work in a command line mode because there is no end of file. Consider the following script file:



                from somewhere import bar, do_something

                for foo in bar:
                do_something(foo)


                In a script, the end of the file indicates that it should now run the for loop. It knows there is no more to execute. But in command line mode, the command line is still open, you can still write more. It has no idea whether or not your next line of code is going to be inside or outside the for loop. But the command line cannot just sit and wait for your next line of code... you want it to execute ... now!



                Therefore the command line operates with one specific difference. A blank line will also end a code block. So this is fine:



                from somewhere import bar, do_something, do_something_else

                for foo in bar:
                do_something(foo)
                do_something_else(foo)


                But this is an error:



                from somewhere import bar, do_something, do_something_else

                for foo in bar:
                do_something(foo)

                do_something_else(foo)


                Because you have already ended the for loop with a blank line and cannot add to it.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 12 hours ago









                Philip CoulingPhilip Couling

                2,7641224




                2,7641224



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Unix & Linux Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f512535%2findentationerror-when-pasting-code-in-python-3-interpreter-mode%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Best approach to update all entries in a list that is paginated?Best way to add items to a paginated listChoose Your Country: Best Usability approachUpdate list when a user is viewing the list without annoying themWhen would the best day to update your webpage be?What should happen when I add a Row to a paginated, sorted listShould I adopt infinite scrolling or classical pagination?How to show user that page objects automatically updateWhat is the best location to locate the comments section in a list pageBest way to combine filtering and selecting items in a listWhen one of two inputs must be updated to satisfy a consistency criteria, which should you update (if at all)?

                    Тонконіг бульбистий Зміст Опис | Поширення | Екологія | Господарське значення | Примітки | Див. також | Література | Джерела | Посилання | Навігаційне меню1114601320038-241116202404kew-435458Poa bulbosaЭлектронный каталог сосудистых растений Азиатской России [Електронний каталог судинних рослин Азіатської Росії]Малышев Л. Л. Дикие родичи культурных растений. Poa bulbosa L. - Мятлик луковичный. [Малишев Л. Л. Дикі родичи культурних рослин. Poa bulbosa L. - Тонконіг бульбистий.]Мятлик (POA) Сем. Злаки (Мятликовые) [Тонконіг (POA) Род. Злаки (Тонконогові)]Poa bulbosa Linnaeus, Sp. Pl. 1: 70. 1753. 鳞茎早熟禾 lin jing zao shu he (Description from Flora of China) [Poa bulbosa Linnaeus, Sp. Pl. 1: 70. 1753. 鳞茎早熟禾 lin jing zao shu he (Опис від Флора Китаю)]Poa bulbosa L. – lipnice cibulkatá / lipnica cibulkatáPoa bulbosa в базі даних Poa bulbosa на сайті Poa bulbosa в базі даних «Global Biodiversity Information Facility» (GBIF)Poa bulbosa в базі даних «Euro + Med PlantBase» — інформаційному ресурсі для Євро-середземноморського розмаїття рослинPoa bulbosa L. на сайті «Плантариум»

                    Вунгтау (аеропорт) Загальні відомості | Див. також | Посилання | Навігаційне меню10°22′00″ пн. ш. 107°05′00″ сх. д. / 10.36667° пн. ш. 107.08333° сх. д. / 10.36667; 107.0833310°22′00″ пн. ш. 107°05′00″ сх. д. / 10.36667° пн. ш. 107.08333° сх. д. / 10.36667; 107.083337731608Vinh AirportVinh airport facelift improves serviceвиправивши або дописавши їївиправивши або дописавши їїр