What does `exit` keyword do in Python3 with Jupyter Notebook?
up vote
6
down vote
favorite
I am currently using Python3 in Jupyter Notebook and I just ran into a keyword exit
. What does this keyword do ?
with open("some_file.txt") as f:
for lines in f:
print(lines)
exit
python jupyter-notebook exit keyword
add a comment |
up vote
6
down vote
favorite
I am currently using Python3 in Jupyter Notebook and I just ran into a keyword exit
. What does this keyword do ?
with open("some_file.txt") as f:
for lines in f:
print(lines)
exit
python jupyter-notebook exit keyword
2
Undoing my dupe-close because apparently this behaves differently in Jupyter/IPython.
– user2357112
6 hours ago
Is thatexit
something specific to jupyter? Normally in python the code usessys.exit()
. Whatever this does it will do it for every line read from the file.
– Kingsley
6 hours ago
exit
is not a key-word.
– juanpa.arrivillaga
5 hours ago
add a comment |
up vote
6
down vote
favorite
up vote
6
down vote
favorite
I am currently using Python3 in Jupyter Notebook and I just ran into a keyword exit
. What does this keyword do ?
with open("some_file.txt") as f:
for lines in f:
print(lines)
exit
python jupyter-notebook exit keyword
I am currently using Python3 in Jupyter Notebook and I just ran into a keyword exit
. What does this keyword do ?
with open("some_file.txt") as f:
for lines in f:
print(lines)
exit
python jupyter-notebook exit keyword
python jupyter-notebook exit keyword
asked 6 hours ago
Poream3387
501214
501214
2
Undoing my dupe-close because apparently this behaves differently in Jupyter/IPython.
– user2357112
6 hours ago
Is thatexit
something specific to jupyter? Normally in python the code usessys.exit()
. Whatever this does it will do it for every line read from the file.
– Kingsley
6 hours ago
exit
is not a key-word.
– juanpa.arrivillaga
5 hours ago
add a comment |
2
Undoing my dupe-close because apparently this behaves differently in Jupyter/IPython.
– user2357112
6 hours ago
Is thatexit
something specific to jupyter? Normally in python the code usessys.exit()
. Whatever this does it will do it for every line read from the file.
– Kingsley
6 hours ago
exit
is not a key-word.
– juanpa.arrivillaga
5 hours ago
2
2
Undoing my dupe-close because apparently this behaves differently in Jupyter/IPython.
– user2357112
6 hours ago
Undoing my dupe-close because apparently this behaves differently in Jupyter/IPython.
– user2357112
6 hours ago
Is that
exit
something specific to jupyter? Normally in python the code uses sys.exit()
. Whatever this does it will do it for every line read from the file.– Kingsley
6 hours ago
Is that
exit
something specific to jupyter? Normally in python the code uses sys.exit()
. Whatever this does it will do it for every line read from the file.– Kingsley
6 hours ago
exit
is not a key-word.– juanpa.arrivillaga
5 hours ago
exit
is not a key-word.– juanpa.arrivillaga
5 hours ago
add a comment |
3 Answers
3
active
oldest
votes
up vote
7
down vote
The exit
lines in your loop do nothing. Why they do nothing is a bit more complicated than the usual reason exit
would do nothing in Python, though.
Normally, exit
on a line by its own wouldn't exit Python. At most, in interactive mode, it would print a message telling you how to quit Python (message implemented in _sitebuiltins.Quitter.__repr__
):
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
IPython does something different. Among the many extra systems IPython has for interactive convenience is a system to autocall instances of a certain type, IPython.core.autocall.IPyAutocall
. (This is similar to but distinct from the %autocall
magic.)
In IPython, exit
and quit
are set to instances of IPython.core.autocall.ExitAutocall
, a subclass of IPyAutocall
. IPython recognizes objects of this type, so when a line containing just exit
or quit
is executed, IPython actually exits.
In [1]: exit
[IPython dies here]
A Jupyter notebook's IPython kernel has exit
and quit
set to instances of the very closely related IPython.core.autocall.ZMQExitAutocall
, which has some extra functionality to support a keep_kernel
argument, but is otherwise the same.
This functionality only triggers when a line referring to the autocallable object is the entire content of the cell, though. Inside a loop, the autocall functionality doesn't trigger, so we're back to nothing happening.
In fact, even less happens than what would happen in normal interactive mode - in a normal, non-IPython interactive session, this loop would print the "Use exit()..." message on each iteration, due to differences in how IPython and the regular interactive mode handle expression auto-printing.
It also has an optional parameter to keep the kernel running - github.com/jupyter/jupyter_console/issues/…
– Kingsley
5 hours ago
@Kingsley which I assume Spyder is doing in my case, and I suspect Jupyter would invoke by default. I can't see much use for this other than a wipe of the namespace otherwise. If you actually shut the IPython kernel down then you can't do a whole lot
– roganjosh
5 hours ago
Actually, it might be a part of IPython.core.autocall.ZMQExitAutocall The behaviour and the parameter seems to support it.
– Paritosh Singh
5 hours ago
add a comment |
up vote
4
down vote
When exit
(sic, with no parentheses) is used in iPython in a loop or a branch of a conditional statement, it is doing nothing because it is simply a reference to an instance of IPython.core.autocall.ExitAutocall
:
for i in range(10):
exit
print(i)
# 9
if i==9:
exit
print(exit)
# <IPython.core.autocall.ExitAutocall object at 0x7f76ad78a4a8>
It does not restart the kernel:
print(i)
# 9
However, when used on the command line alone, it is treated as a kind of magic (though without a %
) and terminates the kernel.
No, it really isn't sic. It does do something in IPython
– roganjosh
5 hours ago
I can run it in the IPython console and it forces a reset in Spyder
– roganjosh
5 hours ago
No, it looks like this is right - the loop changes things in a way I didn't account for. I need to revise my answer a bit more.
– user2357112
5 hours ago
@roganjosh Like it is doing what?
– DYZ
5 hours ago
1
@roganjosh Pretty much so. Just like any other reference to an object or a function.
– DYZ
5 hours ago
|
show 5 more comments
up vote
3
down vote
On my simple test,
Cell 1a = 3
Cell 2exit
cell 3print(a)
resulted in
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-3f786850e387> in <module>
----> 1 a
NameError: name 'a' is not defined
exit
just kills the kernel that the notebook is relying on for execution.
Interestingly enough however, There seems to be a parameter you can pass to modify that behaviour as well.
Test 2:
Cell 1a = 3
Cell 2exit(keep_kernel=True)
cell 3print(a)
resulted in
3
EDIT: And looks like @user2357112's answer fills in the missing pieces.
EDIT2: Actually, it seems to be an instance of IPython.core.autocall.ZMQExitAutocall
class IPython.core.autocall.ZMQExitAutocall(ip=None)
Bases: IPython.core.autocall.ExitAutocall
Exit IPython. Autocallable, so it needn’t be explicitly called.
Parameters: keep_kernel (bool) – If True, leave the kernel alive. Otherwise, tell the kernel to exit too (default).
Ah nice. I was trying to work out what this might do. So it looks like, from your test, it wipes the namespace?
– roganjosh
5 hours ago
1
In Spyder it is restarting the IPython kernel. You already have my upvote, but I think you could do with adding the documentation for this (my lame way of backing out of a fiddly google search :P)
– roganjosh
5 hours ago
2
mhm, i am actually really intrigued by this behaviour, tracking down the documentation atm, however check the edit. @roganjosh It makes me suspect it is doing something not just with namespaces.
– Paritosh Singh
5 hours ago
add a comment |
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
7
down vote
The exit
lines in your loop do nothing. Why they do nothing is a bit more complicated than the usual reason exit
would do nothing in Python, though.
Normally, exit
on a line by its own wouldn't exit Python. At most, in interactive mode, it would print a message telling you how to quit Python (message implemented in _sitebuiltins.Quitter.__repr__
):
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
IPython does something different. Among the many extra systems IPython has for interactive convenience is a system to autocall instances of a certain type, IPython.core.autocall.IPyAutocall
. (This is similar to but distinct from the %autocall
magic.)
In IPython, exit
and quit
are set to instances of IPython.core.autocall.ExitAutocall
, a subclass of IPyAutocall
. IPython recognizes objects of this type, so when a line containing just exit
or quit
is executed, IPython actually exits.
In [1]: exit
[IPython dies here]
A Jupyter notebook's IPython kernel has exit
and quit
set to instances of the very closely related IPython.core.autocall.ZMQExitAutocall
, which has some extra functionality to support a keep_kernel
argument, but is otherwise the same.
This functionality only triggers when a line referring to the autocallable object is the entire content of the cell, though. Inside a loop, the autocall functionality doesn't trigger, so we're back to nothing happening.
In fact, even less happens than what would happen in normal interactive mode - in a normal, non-IPython interactive session, this loop would print the "Use exit()..." message on each iteration, due to differences in how IPython and the regular interactive mode handle expression auto-printing.
It also has an optional parameter to keep the kernel running - github.com/jupyter/jupyter_console/issues/…
– Kingsley
5 hours ago
@Kingsley which I assume Spyder is doing in my case, and I suspect Jupyter would invoke by default. I can't see much use for this other than a wipe of the namespace otherwise. If you actually shut the IPython kernel down then you can't do a whole lot
– roganjosh
5 hours ago
Actually, it might be a part of IPython.core.autocall.ZMQExitAutocall The behaviour and the parameter seems to support it.
– Paritosh Singh
5 hours ago
add a comment |
up vote
7
down vote
The exit
lines in your loop do nothing. Why they do nothing is a bit more complicated than the usual reason exit
would do nothing in Python, though.
Normally, exit
on a line by its own wouldn't exit Python. At most, in interactive mode, it would print a message telling you how to quit Python (message implemented in _sitebuiltins.Quitter.__repr__
):
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
IPython does something different. Among the many extra systems IPython has for interactive convenience is a system to autocall instances of a certain type, IPython.core.autocall.IPyAutocall
. (This is similar to but distinct from the %autocall
magic.)
In IPython, exit
and quit
are set to instances of IPython.core.autocall.ExitAutocall
, a subclass of IPyAutocall
. IPython recognizes objects of this type, so when a line containing just exit
or quit
is executed, IPython actually exits.
In [1]: exit
[IPython dies here]
A Jupyter notebook's IPython kernel has exit
and quit
set to instances of the very closely related IPython.core.autocall.ZMQExitAutocall
, which has some extra functionality to support a keep_kernel
argument, but is otherwise the same.
This functionality only triggers when a line referring to the autocallable object is the entire content of the cell, though. Inside a loop, the autocall functionality doesn't trigger, so we're back to nothing happening.
In fact, even less happens than what would happen in normal interactive mode - in a normal, non-IPython interactive session, this loop would print the "Use exit()..." message on each iteration, due to differences in how IPython and the regular interactive mode handle expression auto-printing.
It also has an optional parameter to keep the kernel running - github.com/jupyter/jupyter_console/issues/…
– Kingsley
5 hours ago
@Kingsley which I assume Spyder is doing in my case, and I suspect Jupyter would invoke by default. I can't see much use for this other than a wipe of the namespace otherwise. If you actually shut the IPython kernel down then you can't do a whole lot
– roganjosh
5 hours ago
Actually, it might be a part of IPython.core.autocall.ZMQExitAutocall The behaviour and the parameter seems to support it.
– Paritosh Singh
5 hours ago
add a comment |
up vote
7
down vote
up vote
7
down vote
The exit
lines in your loop do nothing. Why they do nothing is a bit more complicated than the usual reason exit
would do nothing in Python, though.
Normally, exit
on a line by its own wouldn't exit Python. At most, in interactive mode, it would print a message telling you how to quit Python (message implemented in _sitebuiltins.Quitter.__repr__
):
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
IPython does something different. Among the many extra systems IPython has for interactive convenience is a system to autocall instances of a certain type, IPython.core.autocall.IPyAutocall
. (This is similar to but distinct from the %autocall
magic.)
In IPython, exit
and quit
are set to instances of IPython.core.autocall.ExitAutocall
, a subclass of IPyAutocall
. IPython recognizes objects of this type, so when a line containing just exit
or quit
is executed, IPython actually exits.
In [1]: exit
[IPython dies here]
A Jupyter notebook's IPython kernel has exit
and quit
set to instances of the very closely related IPython.core.autocall.ZMQExitAutocall
, which has some extra functionality to support a keep_kernel
argument, but is otherwise the same.
This functionality only triggers when a line referring to the autocallable object is the entire content of the cell, though. Inside a loop, the autocall functionality doesn't trigger, so we're back to nothing happening.
In fact, even less happens than what would happen in normal interactive mode - in a normal, non-IPython interactive session, this loop would print the "Use exit()..." message on each iteration, due to differences in how IPython and the regular interactive mode handle expression auto-printing.
The exit
lines in your loop do nothing. Why they do nothing is a bit more complicated than the usual reason exit
would do nothing in Python, though.
Normally, exit
on a line by its own wouldn't exit Python. At most, in interactive mode, it would print a message telling you how to quit Python (message implemented in _sitebuiltins.Quitter.__repr__
):
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
IPython does something different. Among the many extra systems IPython has for interactive convenience is a system to autocall instances of a certain type, IPython.core.autocall.IPyAutocall
. (This is similar to but distinct from the %autocall
magic.)
In IPython, exit
and quit
are set to instances of IPython.core.autocall.ExitAutocall
, a subclass of IPyAutocall
. IPython recognizes objects of this type, so when a line containing just exit
or quit
is executed, IPython actually exits.
In [1]: exit
[IPython dies here]
A Jupyter notebook's IPython kernel has exit
and quit
set to instances of the very closely related IPython.core.autocall.ZMQExitAutocall
, which has some extra functionality to support a keep_kernel
argument, but is otherwise the same.
This functionality only triggers when a line referring to the autocallable object is the entire content of the cell, though. Inside a loop, the autocall functionality doesn't trigger, so we're back to nothing happening.
In fact, even less happens than what would happen in normal interactive mode - in a normal, non-IPython interactive session, this loop would print the "Use exit()..." message on each iteration, due to differences in how IPython and the regular interactive mode handle expression auto-printing.
edited 5 hours ago
answered 5 hours ago
user2357112
148k12154242
148k12154242
It also has an optional parameter to keep the kernel running - github.com/jupyter/jupyter_console/issues/…
– Kingsley
5 hours ago
@Kingsley which I assume Spyder is doing in my case, and I suspect Jupyter would invoke by default. I can't see much use for this other than a wipe of the namespace otherwise. If you actually shut the IPython kernel down then you can't do a whole lot
– roganjosh
5 hours ago
Actually, it might be a part of IPython.core.autocall.ZMQExitAutocall The behaviour and the parameter seems to support it.
– Paritosh Singh
5 hours ago
add a comment |
It also has an optional parameter to keep the kernel running - github.com/jupyter/jupyter_console/issues/…
– Kingsley
5 hours ago
@Kingsley which I assume Spyder is doing in my case, and I suspect Jupyter would invoke by default. I can't see much use for this other than a wipe of the namespace otherwise. If you actually shut the IPython kernel down then you can't do a whole lot
– roganjosh
5 hours ago
Actually, it might be a part of IPython.core.autocall.ZMQExitAutocall The behaviour and the parameter seems to support it.
– Paritosh Singh
5 hours ago
It also has an optional parameter to keep the kernel running - github.com/jupyter/jupyter_console/issues/…
– Kingsley
5 hours ago
It also has an optional parameter to keep the kernel running - github.com/jupyter/jupyter_console/issues/…
– Kingsley
5 hours ago
@Kingsley which I assume Spyder is doing in my case, and I suspect Jupyter would invoke by default. I can't see much use for this other than a wipe of the namespace otherwise. If you actually shut the IPython kernel down then you can't do a whole lot
– roganjosh
5 hours ago
@Kingsley which I assume Spyder is doing in my case, and I suspect Jupyter would invoke by default. I can't see much use for this other than a wipe of the namespace otherwise. If you actually shut the IPython kernel down then you can't do a whole lot
– roganjosh
5 hours ago
Actually, it might be a part of IPython.core.autocall.ZMQExitAutocall The behaviour and the parameter seems to support it.
– Paritosh Singh
5 hours ago
Actually, it might be a part of IPython.core.autocall.ZMQExitAutocall The behaviour and the parameter seems to support it.
– Paritosh Singh
5 hours ago
add a comment |
up vote
4
down vote
When exit
(sic, with no parentheses) is used in iPython in a loop or a branch of a conditional statement, it is doing nothing because it is simply a reference to an instance of IPython.core.autocall.ExitAutocall
:
for i in range(10):
exit
print(i)
# 9
if i==9:
exit
print(exit)
# <IPython.core.autocall.ExitAutocall object at 0x7f76ad78a4a8>
It does not restart the kernel:
print(i)
# 9
However, when used on the command line alone, it is treated as a kind of magic (though without a %
) and terminates the kernel.
No, it really isn't sic. It does do something in IPython
– roganjosh
5 hours ago
I can run it in the IPython console and it forces a reset in Spyder
– roganjosh
5 hours ago
No, it looks like this is right - the loop changes things in a way I didn't account for. I need to revise my answer a bit more.
– user2357112
5 hours ago
@roganjosh Like it is doing what?
– DYZ
5 hours ago
1
@roganjosh Pretty much so. Just like any other reference to an object or a function.
– DYZ
5 hours ago
|
show 5 more comments
up vote
4
down vote
When exit
(sic, with no parentheses) is used in iPython in a loop or a branch of a conditional statement, it is doing nothing because it is simply a reference to an instance of IPython.core.autocall.ExitAutocall
:
for i in range(10):
exit
print(i)
# 9
if i==9:
exit
print(exit)
# <IPython.core.autocall.ExitAutocall object at 0x7f76ad78a4a8>
It does not restart the kernel:
print(i)
# 9
However, when used on the command line alone, it is treated as a kind of magic (though without a %
) and terminates the kernel.
No, it really isn't sic. It does do something in IPython
– roganjosh
5 hours ago
I can run it in the IPython console and it forces a reset in Spyder
– roganjosh
5 hours ago
No, it looks like this is right - the loop changes things in a way I didn't account for. I need to revise my answer a bit more.
– user2357112
5 hours ago
@roganjosh Like it is doing what?
– DYZ
5 hours ago
1
@roganjosh Pretty much so. Just like any other reference to an object or a function.
– DYZ
5 hours ago
|
show 5 more comments
up vote
4
down vote
up vote
4
down vote
When exit
(sic, with no parentheses) is used in iPython in a loop or a branch of a conditional statement, it is doing nothing because it is simply a reference to an instance of IPython.core.autocall.ExitAutocall
:
for i in range(10):
exit
print(i)
# 9
if i==9:
exit
print(exit)
# <IPython.core.autocall.ExitAutocall object at 0x7f76ad78a4a8>
It does not restart the kernel:
print(i)
# 9
However, when used on the command line alone, it is treated as a kind of magic (though without a %
) and terminates the kernel.
When exit
(sic, with no parentheses) is used in iPython in a loop or a branch of a conditional statement, it is doing nothing because it is simply a reference to an instance of IPython.core.autocall.ExitAutocall
:
for i in range(10):
exit
print(i)
# 9
if i==9:
exit
print(exit)
# <IPython.core.autocall.ExitAutocall object at 0x7f76ad78a4a8>
It does not restart the kernel:
print(i)
# 9
However, when used on the command line alone, it is treated as a kind of magic (though without a %
) and terminates the kernel.
edited 5 hours ago
answered 5 hours ago
DYZ
24.7k61948
24.7k61948
No, it really isn't sic. It does do something in IPython
– roganjosh
5 hours ago
I can run it in the IPython console and it forces a reset in Spyder
– roganjosh
5 hours ago
No, it looks like this is right - the loop changes things in a way I didn't account for. I need to revise my answer a bit more.
– user2357112
5 hours ago
@roganjosh Like it is doing what?
– DYZ
5 hours ago
1
@roganjosh Pretty much so. Just like any other reference to an object or a function.
– DYZ
5 hours ago
|
show 5 more comments
No, it really isn't sic. It does do something in IPython
– roganjosh
5 hours ago
I can run it in the IPython console and it forces a reset in Spyder
– roganjosh
5 hours ago
No, it looks like this is right - the loop changes things in a way I didn't account for. I need to revise my answer a bit more.
– user2357112
5 hours ago
@roganjosh Like it is doing what?
– DYZ
5 hours ago
1
@roganjosh Pretty much so. Just like any other reference to an object or a function.
– DYZ
5 hours ago
No, it really isn't sic. It does do something in IPython
– roganjosh
5 hours ago
No, it really isn't sic. It does do something in IPython
– roganjosh
5 hours ago
I can run it in the IPython console and it forces a reset in Spyder
– roganjosh
5 hours ago
I can run it in the IPython console and it forces a reset in Spyder
– roganjosh
5 hours ago
No, it looks like this is right - the loop changes things in a way I didn't account for. I need to revise my answer a bit more.
– user2357112
5 hours ago
No, it looks like this is right - the loop changes things in a way I didn't account for. I need to revise my answer a bit more.
– user2357112
5 hours ago
@roganjosh Like it is doing what?
– DYZ
5 hours ago
@roganjosh Like it is doing what?
– DYZ
5 hours ago
1
1
@roganjosh Pretty much so. Just like any other reference to an object or a function.
– DYZ
5 hours ago
@roganjosh Pretty much so. Just like any other reference to an object or a function.
– DYZ
5 hours ago
|
show 5 more comments
up vote
3
down vote
On my simple test,
Cell 1a = 3
Cell 2exit
cell 3print(a)
resulted in
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-3f786850e387> in <module>
----> 1 a
NameError: name 'a' is not defined
exit
just kills the kernel that the notebook is relying on for execution.
Interestingly enough however, There seems to be a parameter you can pass to modify that behaviour as well.
Test 2:
Cell 1a = 3
Cell 2exit(keep_kernel=True)
cell 3print(a)
resulted in
3
EDIT: And looks like @user2357112's answer fills in the missing pieces.
EDIT2: Actually, it seems to be an instance of IPython.core.autocall.ZMQExitAutocall
class IPython.core.autocall.ZMQExitAutocall(ip=None)
Bases: IPython.core.autocall.ExitAutocall
Exit IPython. Autocallable, so it needn’t be explicitly called.
Parameters: keep_kernel (bool) – If True, leave the kernel alive. Otherwise, tell the kernel to exit too (default).
Ah nice. I was trying to work out what this might do. So it looks like, from your test, it wipes the namespace?
– roganjosh
5 hours ago
1
In Spyder it is restarting the IPython kernel. You already have my upvote, but I think you could do with adding the documentation for this (my lame way of backing out of a fiddly google search :P)
– roganjosh
5 hours ago
2
mhm, i am actually really intrigued by this behaviour, tracking down the documentation atm, however check the edit. @roganjosh It makes me suspect it is doing something not just with namespaces.
– Paritosh Singh
5 hours ago
add a comment |
up vote
3
down vote
On my simple test,
Cell 1a = 3
Cell 2exit
cell 3print(a)
resulted in
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-3f786850e387> in <module>
----> 1 a
NameError: name 'a' is not defined
exit
just kills the kernel that the notebook is relying on for execution.
Interestingly enough however, There seems to be a parameter you can pass to modify that behaviour as well.
Test 2:
Cell 1a = 3
Cell 2exit(keep_kernel=True)
cell 3print(a)
resulted in
3
EDIT: And looks like @user2357112's answer fills in the missing pieces.
EDIT2: Actually, it seems to be an instance of IPython.core.autocall.ZMQExitAutocall
class IPython.core.autocall.ZMQExitAutocall(ip=None)
Bases: IPython.core.autocall.ExitAutocall
Exit IPython. Autocallable, so it needn’t be explicitly called.
Parameters: keep_kernel (bool) – If True, leave the kernel alive. Otherwise, tell the kernel to exit too (default).
Ah nice. I was trying to work out what this might do. So it looks like, from your test, it wipes the namespace?
– roganjosh
5 hours ago
1
In Spyder it is restarting the IPython kernel. You already have my upvote, but I think you could do with adding the documentation for this (my lame way of backing out of a fiddly google search :P)
– roganjosh
5 hours ago
2
mhm, i am actually really intrigued by this behaviour, tracking down the documentation atm, however check the edit. @roganjosh It makes me suspect it is doing something not just with namespaces.
– Paritosh Singh
5 hours ago
add a comment |
up vote
3
down vote
up vote
3
down vote
On my simple test,
Cell 1a = 3
Cell 2exit
cell 3print(a)
resulted in
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-3f786850e387> in <module>
----> 1 a
NameError: name 'a' is not defined
exit
just kills the kernel that the notebook is relying on for execution.
Interestingly enough however, There seems to be a parameter you can pass to modify that behaviour as well.
Test 2:
Cell 1a = 3
Cell 2exit(keep_kernel=True)
cell 3print(a)
resulted in
3
EDIT: And looks like @user2357112's answer fills in the missing pieces.
EDIT2: Actually, it seems to be an instance of IPython.core.autocall.ZMQExitAutocall
class IPython.core.autocall.ZMQExitAutocall(ip=None)
Bases: IPython.core.autocall.ExitAutocall
Exit IPython. Autocallable, so it needn’t be explicitly called.
Parameters: keep_kernel (bool) – If True, leave the kernel alive. Otherwise, tell the kernel to exit too (default).
On my simple test,
Cell 1a = 3
Cell 2exit
cell 3print(a)
resulted in
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-3f786850e387> in <module>
----> 1 a
NameError: name 'a' is not defined
exit
just kills the kernel that the notebook is relying on for execution.
Interestingly enough however, There seems to be a parameter you can pass to modify that behaviour as well.
Test 2:
Cell 1a = 3
Cell 2exit(keep_kernel=True)
cell 3print(a)
resulted in
3
EDIT: And looks like @user2357112's answer fills in the missing pieces.
EDIT2: Actually, it seems to be an instance of IPython.core.autocall.ZMQExitAutocall
class IPython.core.autocall.ZMQExitAutocall(ip=None)
Bases: IPython.core.autocall.ExitAutocall
Exit IPython. Autocallable, so it needn’t be explicitly called.
Parameters: keep_kernel (bool) – If True, leave the kernel alive. Otherwise, tell the kernel to exit too (default).
edited 5 hours ago
answered 6 hours ago
Paritosh Singh
5458
5458
Ah nice. I was trying to work out what this might do. So it looks like, from your test, it wipes the namespace?
– roganjosh
5 hours ago
1
In Spyder it is restarting the IPython kernel. You already have my upvote, but I think you could do with adding the documentation for this (my lame way of backing out of a fiddly google search :P)
– roganjosh
5 hours ago
2
mhm, i am actually really intrigued by this behaviour, tracking down the documentation atm, however check the edit. @roganjosh It makes me suspect it is doing something not just with namespaces.
– Paritosh Singh
5 hours ago
add a comment |
Ah nice. I was trying to work out what this might do. So it looks like, from your test, it wipes the namespace?
– roganjosh
5 hours ago
1
In Spyder it is restarting the IPython kernel. You already have my upvote, but I think you could do with adding the documentation for this (my lame way of backing out of a fiddly google search :P)
– roganjosh
5 hours ago
2
mhm, i am actually really intrigued by this behaviour, tracking down the documentation atm, however check the edit. @roganjosh It makes me suspect it is doing something not just with namespaces.
– Paritosh Singh
5 hours ago
Ah nice. I was trying to work out what this might do. So it looks like, from your test, it wipes the namespace?
– roganjosh
5 hours ago
Ah nice. I was trying to work out what this might do. So it looks like, from your test, it wipes the namespace?
– roganjosh
5 hours ago
1
1
In Spyder it is restarting the IPython kernel. You already have my upvote, but I think you could do with adding the documentation for this (my lame way of backing out of a fiddly google search :P)
– roganjosh
5 hours ago
In Spyder it is restarting the IPython kernel. You already have my upvote, but I think you could do with adding the documentation for this (my lame way of backing out of a fiddly google search :P)
– roganjosh
5 hours ago
2
2
mhm, i am actually really intrigued by this behaviour, tracking down the documentation atm, however check the edit. @roganjosh It makes me suspect it is doing something not just with namespaces.
– Paritosh Singh
5 hours ago
mhm, i am actually really intrigued by this behaviour, tracking down the documentation atm, however check the edit. @roganjosh It makes me suspect it is doing something not just with namespaces.
– Paritosh Singh
5 hours ago
add a comment |
Thanks for contributing an answer to Stack Overflow!
- 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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53676034%2fwhat-does-exit-keyword-do-in-python3-with-jupyter-notebook%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
2
Undoing my dupe-close because apparently this behaves differently in Jupyter/IPython.
– user2357112
6 hours ago
Is that
exit
something specific to jupyter? Normally in python the code usessys.exit()
. Whatever this does it will do it for every line read from the file.– Kingsley
6 hours ago
exit
is not a key-word.– juanpa.arrivillaga
5 hours ago