[{"data":1,"prerenderedAt":2817},["ShallowReactive",2],{"doc-\u002Fstandard-library\u002Fsys.exit-function-explained":3},{"id":4,"title":5,"body":6,"description":2810,"extension":2811,"meta":2812,"navigation":80,"path":2813,"seo":2814,"stem":2815,"__hash__":2816},"content\u002Fstandard-library\u002Fsys.exit-function-explained.md","sys.exit() Function Explained",{"type":7,"value":8,"toc":2761},"minimark",[9,13,21,31,48,53,179,182,189,193,217,220,276,279,287,294,298,304,333,336,339,358,361,416,420,426,435,438,482,487,490,535,541,544,552,586,592,601,630,634,639,647,650,668,681,688,761,764,770,779,785,914,916,922,931,935,940,943,960,964,1056,1060,1168,1172,1257,1264,1268,1274,1277,1303,1306,1393,1396,1399,1450,1456,1460,1463,1488,1490,1661,1663,1669,1679,1683,1688,1693,1707,1709,1783,1786,1792,1798,1879,1881,1887,1891,1894,1897,1907,1915,1927,1930,1934,1939,1943,2035,2039,2141,2145,2189,2195,2266,2274,2415,2419,2424,2458,2464,2479,2485,2488,2513,2517,2573,2583,2585,2636,2646,2650,2654,2663,2667,2676,2680,2683,2687,2690,2694,2700,2704,2734,2737,2757],[10,11,5],"h1",{"id":12},"sysexit-function-explained",[14,15,16,20],"p",{},[17,18,19],"code",{},"sys.exit()"," stops a Python program early.",[14,22,23,24,27,28,30],{},"It is part of the ",[17,25,26],{},"sys"," module, so you must import ",[17,29,26],{}," before using it. This function is common in scripts that need to stop after invalid input, a missing file, or a finished command-line task.",[14,32,33,34,36,37,40,41,44,45,47],{},"A key detail is that ",[17,35,19],{}," does not simply \"shut Python down.\" It raises a special exception called ",[17,38,39],{},"SystemExit",". That matters because ",[17,42,43],{},"finally"," blocks still run, and code can catch ",[17,46,39],{}," if needed.",[49,50,52],"h2",{"id":51},"quick-example","Quick example",[54,55,60],"pre",{"className":56,"code":57,"language":58,"meta":59,"style":59},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","import sys\n\nname = input(\"Enter your name: \")\nif not name:\n    sys.exit(\"No name provided\")\n\nprint(\"Hello\", name)\n","python","",[17,61,62,75,82,113,128,152,157],{"__ignoreMap":59},[63,64,67,71],"span",{"class":65,"line":66},"line",1,[63,68,70],{"class":69},"sVHd0","import",[63,72,74],{"class":73},"su5hD"," sys\n",[63,76,78],{"class":65,"line":77},2,[63,79,81],{"emptyLinePlaceholder":80},true,"\n",[63,83,85,88,92,96,100,104,108,110],{"class":65,"line":84},3,[63,86,87],{"class":73},"name ",[63,89,91],{"class":90},"smGrS","=",[63,93,95],{"class":94},"sptTA"," input",[63,97,99],{"class":98},"sP7_E","(",[63,101,103],{"class":102},"sjJ54","\"",[63,105,107],{"class":106},"s_sjI","Enter your name: ",[63,109,103],{"class":102},[63,111,112],{"class":98},")\n",[63,114,116,119,122,125],{"class":65,"line":115},4,[63,117,118],{"class":69},"if",[63,120,121],{"class":90}," not",[63,123,124],{"class":73}," name",[63,126,127],{"class":98},":\n",[63,129,131,134,137,141,143,145,148,150],{"class":65,"line":130},5,[63,132,133],{"class":73},"    sys",[63,135,136],{"class":98},".",[63,138,140],{"class":139},"slqww","exit",[63,142,99],{"class":98},[63,144,103],{"class":102},[63,146,147],{"class":106},"No name provided",[63,149,103],{"class":102},[63,151,112],{"class":98},[63,153,155],{"class":65,"line":154},6,[63,156,81],{"emptyLinePlaceholder":80},[63,158,160,163,165,167,170,172,175,177],{"class":65,"line":159},7,[63,161,162],{"class":94},"print",[63,164,99],{"class":98},[63,166,103],{"class":102},[63,168,169],{"class":106},"Hello",[63,171,103],{"class":102},[63,173,174],{"class":98},",",[63,176,124],{"class":139},[63,178,112],{"class":98},[14,180,181],{},"If the user presses Enter without typing a name, the program stops.",[14,183,184,185,188],{},"The string ",[17,186,187],{},"\"No name provided\""," is shown as a message, and the program exits.",[49,190,192],{"id":191},"what-sysexit-does","What sys.exit() does",[194,195,196,204,211,214],"ul",{},[197,198,199,201,202],"li",{},[17,200,19],{}," stops the current Python program by raising ",[17,203,39],{},[197,205,23,206,27,208,210],{},[17,207,26],{},[17,209,26],{}," first",[197,212,213],{},"It is commonly used to exit after an error, invalid input, or a finished command-line task",[197,215,216],{},"This page explains the function itself, not general command-line argument handling",[14,218,219],{},"Simple example:",[54,221,223],{"className":56,"code":222,"language":58,"meta":59,"style":59},"import sys\n\nprint(\"Program started\")\nsys.exit()\nprint(\"This line never runs\")\n",[17,224,225,231,235,250,261],{"__ignoreMap":59},[63,226,227,229],{"class":65,"line":66},[63,228,70],{"class":69},[63,230,74],{"class":73},[63,232,233],{"class":65,"line":77},[63,234,81],{"emptyLinePlaceholder":80},[63,236,237,239,241,243,246,248],{"class":65,"line":84},[63,238,162],{"class":94},[63,240,99],{"class":98},[63,242,103],{"class":102},[63,244,245],{"class":106},"Program started",[63,247,103],{"class":102},[63,249,112],{"class":98},[63,251,252,254,256,258],{"class":65,"line":115},[63,253,26],{"class":73},[63,255,136],{"class":98},[63,257,140],{"class":139},[63,259,260],{"class":98},"()\n",[63,262,263,265,267,269,272,274],{"class":65,"line":130},[63,264,162],{"class":94},[63,266,99],{"class":98},[63,268,103],{"class":102},[63,270,271],{"class":106},"This line never runs",[63,273,103],{"class":102},[63,275,112],{"class":98},[14,277,278],{},"Expected result:",[54,280,285],{"className":281,"code":283,"language":284,"meta":59},[282],"language-text","Program started\n","text",[17,286,283],{"__ignoreMap":59},[14,288,289,290,293],{},"The last ",[17,291,292],{},"print()"," does not run because the program exits first.",[49,295,297],{"id":296},"basic-syntax","Basic syntax",[14,299,300,301,303],{},"You can call ",[17,302,19],{}," with or without an argument.",[54,305,307],{"className":56,"code":306,"language":58,"meta":59,"style":59},"sys.exit()\nsys.exit(code)\n",[17,308,309,319],{"__ignoreMap":59},[63,310,311,313,315,317],{"class":65,"line":66},[63,312,26],{"class":73},[63,314,136],{"class":98},[63,316,140],{"class":139},[63,318,260],{"class":98},[63,320,321,323,325,327,329,331],{"class":65,"line":77},[63,322,26],{"class":73},[63,324,136],{"class":98},[63,326,140],{"class":139},[63,328,99],{"class":98},[63,330,17],{"class":139},[63,332,112],{"class":98},[14,334,335],{},"The argument is optional.",[14,337,338],{},"Common patterns:",[194,340,341,346,352],{},[197,342,343,345],{},[17,344,19],{}," for a normal exit",[197,347,348,351],{},[17,349,350],{},"sys.exit(0)"," for a successful exit",[197,353,354,357],{},[17,355,356],{},"sys.exit(1)"," for an error",[14,359,360],{},"Example:",[54,362,364],{"className":56,"code":363,"language":58,"meta":59,"style":59},"import sys\n\nfinished = True\n\nif finished:\n    sys.exit(0)\n",[17,365,366,372,376,387,391,400],{"__ignoreMap":59},[63,367,368,370],{"class":65,"line":66},[63,369,70],{"class":69},[63,371,74],{"class":73},[63,373,374],{"class":65,"line":77},[63,375,81],{"emptyLinePlaceholder":80},[63,377,378,381,383],{"class":65,"line":84},[63,379,380],{"class":73},"finished ",[63,382,91],{"class":90},[63,384,386],{"class":385},"s39Yj"," True\n",[63,388,389],{"class":65,"line":115},[63,390,81],{"emptyLinePlaceholder":80},[63,392,393,395,398],{"class":65,"line":130},[63,394,118],{"class":69},[63,396,397],{"class":73}," finished",[63,399,127],{"class":98},[63,401,402,404,406,408,410,414],{"class":65,"line":154},[63,403,133],{"class":73},[63,405,136],{"class":98},[63,407,140],{"class":139},[63,409,99],{"class":98},[63,411,413],{"class":412},"srdBf","0",[63,415,112],{"class":98},[49,417,419],{"id":418},"what-the-exit-argument-means","What the exit argument means",[14,421,422,423,425],{},"The value you pass to ",[17,424,19],{}," becomes the exit status or exit message.",[427,428,430,432,433],"h3",{"id":429},"sysexit-or-sysexit0",[17,431,19],{}," or ",[17,434,350],{},[14,436,437],{},"These usually mean success.",[54,439,441],{"className":56,"code":440,"language":58,"meta":59,"style":59},"import sys\n\nprint(\"Done\")\nsys.exit(0)\n",[17,442,443,449,453,468],{"__ignoreMap":59},[63,444,445,447],{"class":65,"line":66},[63,446,70],{"class":69},[63,448,74],{"class":73},[63,450,451],{"class":65,"line":77},[63,452,81],{"emptyLinePlaceholder":80},[63,454,455,457,459,461,464,466],{"class":65,"line":84},[63,456,162],{"class":94},[63,458,99],{"class":98},[63,460,103],{"class":102},[63,462,463],{"class":106},"Done",[63,465,103],{"class":102},[63,467,112],{"class":98},[63,469,470,472,474,476,478,480],{"class":65,"line":115},[63,471,26],{"class":73},[63,473,136],{"class":98},[63,475,140],{"class":139},[63,477,99],{"class":98},[63,479,413],{"class":412},[63,481,112],{"class":98},[427,483,485],{"id":484},"sysexit1",[17,486,356],{},[14,488,489],{},"This usually means the program stopped because of a problem.",[54,491,493],{"className":56,"code":492,"language":58,"meta":59,"style":59},"import sys\n\nprint(\"Something went wrong\")\nsys.exit(1)\n",[17,494,495,501,505,520],{"__ignoreMap":59},[63,496,497,499],{"class":65,"line":66},[63,498,70],{"class":69},[63,500,74],{"class":73},[63,502,503],{"class":65,"line":77},[63,504,81],{"emptyLinePlaceholder":80},[63,506,507,509,511,513,516,518],{"class":65,"line":84},[63,508,162],{"class":94},[63,510,99],{"class":98},[63,512,103],{"class":102},[63,514,515],{"class":106},"Something went wrong",[63,517,103],{"class":102},[63,519,112],{"class":98},[63,521,522,524,526,528,530,533],{"class":65,"line":115},[63,523,26],{"class":73},[63,525,136],{"class":98},[63,527,140],{"class":139},[63,529,99],{"class":98},[63,531,532],{"class":412},"1",[63,534,112],{"class":98},[427,536,538],{"id":537},"sysexitmessage",[17,539,540],{},"sys.exit(\"message\")",[14,542,543],{},"A string usually does two things:",[194,545,546,549],{},[197,547,548],{},"prints the message",[197,550,551],{},"exits with a non-zero status",[54,553,555],{"className":56,"code":554,"language":58,"meta":59,"style":59},"import sys\n\nsys.exit(\"Missing required file\")\n",[17,556,557,563,567],{"__ignoreMap":59},[63,558,559,561],{"class":65,"line":66},[63,560,70],{"class":69},[63,562,74],{"class":73},[63,564,565],{"class":65,"line":77},[63,566,81],{"emptyLinePlaceholder":80},[63,568,569,571,573,575,577,579,582,584],{"class":65,"line":84},[63,570,26],{"class":73},[63,572,136],{"class":98},[63,574,140],{"class":139},[63,576,99],{"class":98},[63,578,103],{"class":102},[63,580,581],{"class":106},"Missing required file",[63,583,103],{"class":102},[63,585,112],{"class":98},[427,587,589],{"id":588},"sysexitnone",[17,590,591],{},"sys.exit(None)",[14,593,594,597,598,600],{},[17,595,596],{},"None"," behaves like ",[17,599,413],{},", so it usually means a normal exit.",[54,602,604],{"className":56,"code":603,"language":58,"meta":59,"style":59},"import sys\n\nsys.exit(None)\n",[17,605,606,612,616],{"__ignoreMap":59},[63,607,608,610],{"class":65,"line":66},[63,609,70],{"class":69},[63,611,74],{"class":73},[63,613,614],{"class":65,"line":77},[63,615,81],{"emptyLinePlaceholder":80},[63,617,618,620,622,624,626,628],{"class":65,"line":84},[63,619,26],{"class":73},[63,621,136],{"class":98},[63,623,140],{"class":139},[63,625,99],{"class":98},[63,627,596],{"class":385},[63,629,112],{"class":98},[49,631,633],{"id":632},"important-behavior-it-raises-systemexit","Important behavior: it raises SystemExit",[14,635,636,637,136],{},"This is the most important thing to understand about ",[17,638,19],{},[14,640,641,643,644,646],{},[17,642,19],{}," does not force-stop Python instantly in every situation. It raises the ",[17,645,39],{}," exception.",[14,648,649],{},"That means:",[194,651,652,657,662],{},[197,653,654,656],{},[17,655,43],{}," blocks still run",[197,658,659,660],{},"code can catch ",[17,661,39],{},[197,663,664,665,667],{},"the program may continue if ",[17,666,39],{}," is caught",[14,669,670,671,676,677,136],{},"If you are still learning exceptions, see ",[672,673,675],"a",{"href":674},"\u002Flearn\u002Fpython-errors-and-exceptions-explained","Python errors and exceptions explained"," and ",[672,678,680],{"href":679},"\u002Flearn\u002Fusing-try-except-else-and-finally-in-python","using try, except, else, and finally in Python",[427,682,684,685,687],{"id":683},"example-finally-still-runs","Example: ",[17,686,43],{}," still runs",[54,689,691],{"className":56,"code":690,"language":58,"meta":59,"style":59},"import sys\n\ntry:\n    print(\"Inside try\")\n    sys.exit(1)\nfinally:\n    print(\"Cleaning up in finally\")\n",[17,692,693,699,703,710,726,740,746],{"__ignoreMap":59},[63,694,695,697],{"class":65,"line":66},[63,696,70],{"class":69},[63,698,74],{"class":73},[63,700,701],{"class":65,"line":77},[63,702,81],{"emptyLinePlaceholder":80},[63,704,705,708],{"class":65,"line":84},[63,706,707],{"class":69},"try",[63,709,127],{"class":98},[63,711,712,715,717,719,722,724],{"class":65,"line":115},[63,713,714],{"class":94},"    print",[63,716,99],{"class":98},[63,718,103],{"class":102},[63,720,721],{"class":106},"Inside try",[63,723,103],{"class":102},[63,725,112],{"class":98},[63,727,728,730,732,734,736,738],{"class":65,"line":130},[63,729,133],{"class":73},[63,731,136],{"class":98},[63,733,140],{"class":139},[63,735,99],{"class":98},[63,737,532],{"class":412},[63,739,112],{"class":98},[63,741,742,744],{"class":65,"line":154},[63,743,43],{"class":69},[63,745,127],{"class":98},[63,747,748,750,752,754,757,759],{"class":65,"line":159},[63,749,714],{"class":94},[63,751,99],{"class":98},[63,753,103],{"class":102},[63,755,756],{"class":106},"Cleaning up in finally",[63,758,103],{"class":102},[63,760,112],{"class":98},[14,762,763],{},"Expected output:",[54,765,768],{"className":766,"code":767,"language":284,"meta":59},[282],"Inside try\nCleaning up in finally\n",[17,769,767],{"__ignoreMap":59},[14,771,772,773,775,776,778],{},"Even though ",[17,774,356],{}," is called, the ",[17,777,43],{}," block still runs before Python exits.",[427,780,782,783],{"id":781},"example-catching-systemexit","Example: catching ",[17,784,39],{},[54,786,788],{"className":56,"code":787,"language":58,"meta":59,"style":59},"import sys\n\ntry:\n    sys.exit(1)\nexcept SystemExit as e:\n    print(\"Caught:\", type(e).__name__)\n    print(\"Exit code:\", e.code)\n\nprint(\"Program continued\")\n",[17,789,790,796,800,806,820,837,869,893,898],{"__ignoreMap":59},[63,791,792,794],{"class":65,"line":66},[63,793,70],{"class":69},[63,795,74],{"class":73},[63,797,798],{"class":65,"line":77},[63,799,81],{"emptyLinePlaceholder":80},[63,801,802,804],{"class":65,"line":84},[63,803,707],{"class":69},[63,805,127],{"class":98},[63,807,808,810,812,814,816,818],{"class":65,"line":115},[63,809,133],{"class":73},[63,811,136],{"class":98},[63,813,140],{"class":139},[63,815,99],{"class":98},[63,817,532],{"class":412},[63,819,112],{"class":98},[63,821,822,825,829,832,835],{"class":65,"line":130},[63,823,824],{"class":69},"except",[63,826,828],{"class":827},"sZMiF"," SystemExit",[63,830,831],{"class":69}," as",[63,833,834],{"class":73}," e",[63,836,127],{"class":98},[63,838,839,841,843,845,848,850,852,855,857,860,863,867],{"class":65,"line":154},[63,840,714],{"class":94},[63,842,99],{"class":98},[63,844,103],{"class":102},[63,846,847],{"class":106},"Caught:",[63,849,103],{"class":102},[63,851,174],{"class":98},[63,853,854],{"class":827}," type",[63,856,99],{"class":98},[63,858,859],{"class":139},"e",[63,861,862],{"class":98},").",[63,864,866],{"class":865},"s_hVV","__name__",[63,868,112],{"class":98},[63,870,871,873,875,877,880,882,884,886,888,891],{"class":65,"line":159},[63,872,714],{"class":94},[63,874,99],{"class":98},[63,876,103],{"class":102},[63,878,879],{"class":106},"Exit code:",[63,881,103],{"class":102},[63,883,174],{"class":98},[63,885,834],{"class":139},[63,887,136],{"class":98},[63,889,17],{"class":890},"skxfh",[63,892,112],{"class":98},[63,894,896],{"class":65,"line":895},8,[63,897,81],{"emptyLinePlaceholder":80},[63,899,901,903,905,907,910,912],{"class":65,"line":900},9,[63,902,162],{"class":94},[63,904,99],{"class":98},[63,906,103],{"class":102},[63,908,909],{"class":106},"Program continued",[63,911,103],{"class":102},[63,913,112],{"class":98},[14,915,763],{},[54,917,920],{"className":918,"code":919,"language":284,"meta":59},[282],"Caught: SystemExit\nExit code: 1\nProgram continued\n",[17,921,919],{"__ignoreMap":59},[14,923,924,925,927,928,930],{},"In normal scripts, you usually do not catch ",[17,926,39],{},". But it is useful to know that ",[17,929,19],{}," works through an exception.",[49,932,934],{"id":933},"when-beginners-should-use-sysexit","When beginners should use sys.exit()",[14,936,937,939],{},[17,938,19],{}," is useful when your script should stop completely.",[14,941,942],{},"Good beginner use cases:",[194,944,945,948,951,954,957],{},[197,946,947],{},"stop a script when required input is missing",[197,949,950],{},"end a menu program when the user chooses quit",[197,952,953],{},"exit after printing a usage message",[197,955,956],{},"stop after detecting a file or configuration problem",[197,958,959],{},"use it in scripts more often than inside reusable functions",[427,961,963],{"id":962},"example-exit-when-user-input-is-empty","Example: exit when user input is empty",[54,965,967],{"className":56,"code":966,"language":58,"meta":59,"style":59},"import sys\n\nusername = input(\"Username: \")\n\nif not username:\n    sys.exit(\"Username is required\")\n\nprint(\"Welcome,\", username)\n",[17,968,969,975,979,999,1003,1014,1033,1037],{"__ignoreMap":59},[63,970,971,973],{"class":65,"line":66},[63,972,70],{"class":69},[63,974,74],{"class":73},[63,976,977],{"class":65,"line":77},[63,978,81],{"emptyLinePlaceholder":80},[63,980,981,984,986,988,990,992,995,997],{"class":65,"line":84},[63,982,983],{"class":73},"username ",[63,985,91],{"class":90},[63,987,95],{"class":94},[63,989,99],{"class":98},[63,991,103],{"class":102},[63,993,994],{"class":106},"Username: ",[63,996,103],{"class":102},[63,998,112],{"class":98},[63,1000,1001],{"class":65,"line":115},[63,1002,81],{"emptyLinePlaceholder":80},[63,1004,1005,1007,1009,1012],{"class":65,"line":130},[63,1006,118],{"class":69},[63,1008,121],{"class":90},[63,1010,1011],{"class":73}," username",[63,1013,127],{"class":98},[63,1015,1016,1018,1020,1022,1024,1026,1029,1031],{"class":65,"line":154},[63,1017,133],{"class":73},[63,1019,136],{"class":98},[63,1021,140],{"class":139},[63,1023,99],{"class":98},[63,1025,103],{"class":102},[63,1027,1028],{"class":106},"Username is required",[63,1030,103],{"class":102},[63,1032,112],{"class":98},[63,1034,1035],{"class":65,"line":159},[63,1036,81],{"emptyLinePlaceholder":80},[63,1038,1039,1041,1043,1045,1048,1050,1052,1054],{"class":65,"line":895},[63,1040,162],{"class":94},[63,1042,99],{"class":98},[63,1044,103],{"class":102},[63,1046,1047],{"class":106},"Welcome,",[63,1049,103],{"class":102},[63,1051,174],{"class":98},[63,1053,1011],{"class":139},[63,1055,112],{"class":98},[427,1057,1059],{"id":1058},"example-exit-when-a-file-does-not-exist","Example: exit when a file does not exist",[54,1061,1063],{"className":56,"code":1062,"language":58,"meta":59,"style":59},"import sys\nfrom pathlib import Path\n\nfile_path = Path(\"data.txt\")\n\nif not file_path.exists():\n    sys.exit(\"data.txt was not found\")\n\nprint(\"File exists\")\n",[17,1064,1065,1071,1084,1088,1109,1113,1130,1149,1153],{"__ignoreMap":59},[63,1066,1067,1069],{"class":65,"line":66},[63,1068,70],{"class":69},[63,1070,74],{"class":73},[63,1072,1073,1076,1079,1081],{"class":65,"line":77},[63,1074,1075],{"class":69},"from",[63,1077,1078],{"class":73}," pathlib ",[63,1080,70],{"class":69},[63,1082,1083],{"class":73}," Path\n",[63,1085,1086],{"class":65,"line":84},[63,1087,81],{"emptyLinePlaceholder":80},[63,1089,1090,1093,1095,1098,1100,1102,1105,1107],{"class":65,"line":115},[63,1091,1092],{"class":73},"file_path ",[63,1094,91],{"class":90},[63,1096,1097],{"class":139}," Path",[63,1099,99],{"class":98},[63,1101,103],{"class":102},[63,1103,1104],{"class":106},"data.txt",[63,1106,103],{"class":102},[63,1108,112],{"class":98},[63,1110,1111],{"class":65,"line":130},[63,1112,81],{"emptyLinePlaceholder":80},[63,1114,1115,1117,1119,1122,1124,1127],{"class":65,"line":154},[63,1116,118],{"class":69},[63,1118,121],{"class":90},[63,1120,1121],{"class":73}," file_path",[63,1123,136],{"class":98},[63,1125,1126],{"class":139},"exists",[63,1128,1129],{"class":98},"():\n",[63,1131,1132,1134,1136,1138,1140,1142,1145,1147],{"class":65,"line":159},[63,1133,133],{"class":73},[63,1135,136],{"class":98},[63,1137,140],{"class":139},[63,1139,99],{"class":98},[63,1141,103],{"class":102},[63,1143,1144],{"class":106},"data.txt was not found",[63,1146,103],{"class":102},[63,1148,112],{"class":98},[63,1150,1151],{"class":65,"line":895},[63,1152,81],{"emptyLinePlaceholder":80},[63,1154,1155,1157,1159,1161,1164,1166],{"class":65,"line":900},[63,1156,162],{"class":94},[63,1158,99],{"class":98},[63,1160,103],{"class":102},[63,1162,1163],{"class":106},"File exists",[63,1165,103],{"class":102},[63,1167,112],{"class":98},[427,1169,1171],{"id":1170},"example-exit-after-printing-help-text","Example: exit after printing help text",[54,1173,1175],{"className":56,"code":1174,"language":58,"meta":59,"style":59},"import sys\n\nshow_help = True\n\nif show_help:\n    print(\"Usage: python script.py [filename]\")\n    sys.exit(0)\n\nprint(\"Main program runs here\")\n",[17,1176,1177,1183,1187,1196,1200,1209,1224,1238,1242],{"__ignoreMap":59},[63,1178,1179,1181],{"class":65,"line":66},[63,1180,70],{"class":69},[63,1182,74],{"class":73},[63,1184,1185],{"class":65,"line":77},[63,1186,81],{"emptyLinePlaceholder":80},[63,1188,1189,1192,1194],{"class":65,"line":84},[63,1190,1191],{"class":73},"show_help ",[63,1193,91],{"class":90},[63,1195,386],{"class":385},[63,1197,1198],{"class":65,"line":115},[63,1199,81],{"emptyLinePlaceholder":80},[63,1201,1202,1204,1207],{"class":65,"line":130},[63,1203,118],{"class":69},[63,1205,1206],{"class":73}," show_help",[63,1208,127],{"class":98},[63,1210,1211,1213,1215,1217,1220,1222],{"class":65,"line":154},[63,1212,714],{"class":94},[63,1214,99],{"class":98},[63,1216,103],{"class":102},[63,1218,1219],{"class":106},"Usage: python script.py [filename]",[63,1221,103],{"class":102},[63,1223,112],{"class":98},[63,1225,1226,1228,1230,1232,1234,1236],{"class":65,"line":159},[63,1227,133],{"class":73},[63,1229,136],{"class":98},[63,1231,140],{"class":139},[63,1233,99],{"class":98},[63,1235,413],{"class":412},[63,1237,112],{"class":98},[63,1239,1240],{"class":65,"line":895},[63,1241,81],{"emptyLinePlaceholder":80},[63,1243,1244,1246,1248,1250,1253,1255],{"class":65,"line":900},[63,1245,162],{"class":94},[63,1247,99],{"class":98},[63,1249,103],{"class":102},[63,1251,1252],{"class":106},"Main program runs here",[63,1254,103],{"class":102},[63,1256,112],{"class":98},[14,1258,1259,1260,136],{},"If you want a broader guide, see ",[672,1261,1263],{"href":1262},"\u002Fhow-to\u002Fhow-to-exit-a-program-in-python","how to exit a program in Python",[49,1265,1267],{"id":1266},"when-not-to-use-sysexit","When not to use sys.exit()",[14,1269,1270,1271,1273],{},"Do not use ",[17,1272,19],{}," for every kind of control flow.",[14,1275,1276],{},"Avoid it in these cases:",[194,1278,1279,1286,1289,1296],{},[197,1280,1281,1282,1285],{},"do not use it as the normal way to leave a function; use ",[17,1283,1284],{},"return"," there",[197,1287,1288],{},"avoid using it deep inside library code that other code imports",[197,1290,1291,1292,1295],{},"do not confuse it with ",[17,1293,1294],{},"break",", which only leaves a loop",[197,1297,1298,1299,1302],{},"do not use it to handle every small condition if a simple ",[17,1300,1301],{},"if\u002Felse"," is enough",[14,1304,1305],{},"Bad fit:",[54,1307,1309],{"className":56,"code":1308,"language":58,"meta":59,"style":59},"import sys\n\ndef add(a, b):\n    if a \u003C 0:\n        sys.exit(\"Negative numbers are not allowed\")\n    return a + b\n",[17,1310,1311,1317,1321,1344,1360,1380],{"__ignoreMap":59},[63,1312,1313,1315],{"class":65,"line":66},[63,1314,70],{"class":69},[63,1316,74],{"class":73},[63,1318,1319],{"class":65,"line":77},[63,1320,81],{"emptyLinePlaceholder":80},[63,1322,1323,1327,1331,1333,1336,1338,1341],{"class":65,"line":84},[63,1324,1326],{"class":1325},"sbsja","def",[63,1328,1330],{"class":1329},"sGLFI"," add",[63,1332,99],{"class":98},[63,1334,672],{"class":1335},"sFwrP",[63,1337,174],{"class":98},[63,1339,1340],{"class":1335}," b",[63,1342,1343],{"class":98},"):\n",[63,1345,1346,1349,1352,1355,1358],{"class":65,"line":115},[63,1347,1348],{"class":69},"    if",[63,1350,1351],{"class":73}," a ",[63,1353,1354],{"class":90},"\u003C",[63,1356,1357],{"class":412}," 0",[63,1359,127],{"class":98},[63,1361,1362,1365,1367,1369,1371,1373,1376,1378],{"class":65,"line":130},[63,1363,1364],{"class":73},"        sys",[63,1366,136],{"class":98},[63,1368,140],{"class":139},[63,1370,99],{"class":98},[63,1372,103],{"class":102},[63,1374,1375],{"class":106},"Negative numbers are not allowed",[63,1377,103],{"class":102},[63,1379,112],{"class":98},[63,1381,1382,1385,1387,1390],{"class":65,"line":154},[63,1383,1384],{"class":69},"    return",[63,1386,1351],{"class":73},[63,1388,1389],{"class":90},"+",[63,1391,1392],{"class":73}," b\n",[14,1394,1395],{},"This makes the whole program stop, even though the function looks like a normal reusable function.",[14,1397,1398],{},"Better:",[54,1400,1402],{"className":56,"code":1401,"language":58,"meta":59,"style":59},"def add(a, b):\n    if a \u003C 0:\n        return None\n    return a + b\n",[17,1403,1404,1420,1432,1440],{"__ignoreMap":59},[63,1405,1406,1408,1410,1412,1414,1416,1418],{"class":65,"line":66},[63,1407,1326],{"class":1325},[63,1409,1330],{"class":1329},[63,1411,99],{"class":98},[63,1413,672],{"class":1335},[63,1415,174],{"class":98},[63,1417,1340],{"class":1335},[63,1419,1343],{"class":98},[63,1421,1422,1424,1426,1428,1430],{"class":65,"line":77},[63,1423,1348],{"class":69},[63,1425,1351],{"class":73},[63,1427,1354],{"class":90},[63,1429,1357],{"class":412},[63,1431,127],{"class":98},[63,1433,1434,1437],{"class":65,"line":84},[63,1435,1436],{"class":69},"        return",[63,1438,1439],{"class":385}," None\n",[63,1441,1442,1444,1446,1448],{"class":65,"line":115},[63,1443,1384],{"class":69},[63,1445,1351],{"class":73},[63,1447,1389],{"class":90},[63,1449,1392],{"class":73},[14,1451,1452,1453,1455],{},"Or, in many real programs, raising a regular exception may be more appropriate than calling ",[17,1454,19],{}," inside reusable code.",[49,1457,1459],{"id":1458},"difference-between-sysexit-and-return","Difference between sys.exit() and return",[14,1461,1462],{},"These two are not the same.",[194,1464,1465,1470,1477,1483],{},[197,1466,1467,1469],{},[17,1468,1284],{}," exits the current function only",[197,1471,1472,1474,1475,667],{},[17,1473,19],{}," exits the whole program unless ",[17,1476,39],{},[197,1478,1479,1480,1482],{},"use ",[17,1481,1284],{}," inside functions to send a result back",[197,1484,1479,1485,1487],{},[17,1486,19],{}," when the script should stop completely",[14,1489,360],{},[54,1491,1493],{"className":56,"code":1492,"language":58,"meta":59,"style":59},"import sys\n\ndef use_return():\n    print(\"Before return\")\n    return\n    print(\"This will not run\")\n\ndef use_sys_exit():\n    print(\"Before sys.exit()\")\n    sys.exit()\n    print(\"This will not run\")\n\nuse_return()\nprint(\"Program still running after return\")\n\nuse_sys_exit()\nprint(\"This line will not run\")\n",[17,1494,1495,1501,1505,1514,1529,1534,1549,1553,1562,1577,1588,1603,1608,1616,1632,1637,1645],{"__ignoreMap":59},[63,1496,1497,1499],{"class":65,"line":66},[63,1498,70],{"class":69},[63,1500,74],{"class":73},[63,1502,1503],{"class":65,"line":77},[63,1504,81],{"emptyLinePlaceholder":80},[63,1506,1507,1509,1512],{"class":65,"line":84},[63,1508,1326],{"class":1325},[63,1510,1511],{"class":1329}," use_return",[63,1513,1129],{"class":98},[63,1515,1516,1518,1520,1522,1525,1527],{"class":65,"line":115},[63,1517,714],{"class":94},[63,1519,99],{"class":98},[63,1521,103],{"class":102},[63,1523,1524],{"class":106},"Before return",[63,1526,103],{"class":102},[63,1528,112],{"class":98},[63,1530,1531],{"class":65,"line":130},[63,1532,1533],{"class":69},"    return\n",[63,1535,1536,1538,1540,1542,1545,1547],{"class":65,"line":154},[63,1537,714],{"class":94},[63,1539,99],{"class":98},[63,1541,103],{"class":102},[63,1543,1544],{"class":106},"This will not run",[63,1546,103],{"class":102},[63,1548,112],{"class":98},[63,1550,1551],{"class":65,"line":159},[63,1552,81],{"emptyLinePlaceholder":80},[63,1554,1555,1557,1560],{"class":65,"line":895},[63,1556,1326],{"class":1325},[63,1558,1559],{"class":1329}," use_sys_exit",[63,1561,1129],{"class":98},[63,1563,1564,1566,1568,1570,1573,1575],{"class":65,"line":900},[63,1565,714],{"class":94},[63,1567,99],{"class":98},[63,1569,103],{"class":102},[63,1571,1572],{"class":106},"Before sys.exit()",[63,1574,103],{"class":102},[63,1576,112],{"class":98},[63,1578,1580,1582,1584,1586],{"class":65,"line":1579},10,[63,1581,133],{"class":73},[63,1583,136],{"class":98},[63,1585,140],{"class":139},[63,1587,260],{"class":98},[63,1589,1591,1593,1595,1597,1599,1601],{"class":65,"line":1590},11,[63,1592,714],{"class":94},[63,1594,99],{"class":98},[63,1596,103],{"class":102},[63,1598,1544],{"class":106},[63,1600,103],{"class":102},[63,1602,112],{"class":98},[63,1604,1606],{"class":65,"line":1605},12,[63,1607,81],{"emptyLinePlaceholder":80},[63,1609,1611,1614],{"class":65,"line":1610},13,[63,1612,1613],{"class":139},"use_return",[63,1615,260],{"class":98},[63,1617,1619,1621,1623,1625,1628,1630],{"class":65,"line":1618},14,[63,1620,162],{"class":94},[63,1622,99],{"class":98},[63,1624,103],{"class":102},[63,1626,1627],{"class":106},"Program still running after return",[63,1629,103],{"class":102},[63,1631,112],{"class":98},[63,1633,1635],{"class":65,"line":1634},15,[63,1636,81],{"emptyLinePlaceholder":80},[63,1638,1640,1643],{"class":65,"line":1639},16,[63,1641,1642],{"class":139},"use_sys_exit",[63,1644,260],{"class":98},[63,1646,1648,1650,1652,1654,1657,1659],{"class":65,"line":1647},17,[63,1649,162],{"class":94},[63,1651,99],{"class":98},[63,1653,103],{"class":102},[63,1655,1656],{"class":106},"This line will not run",[63,1658,103],{"class":102},[63,1660,112],{"class":98},[14,1662,763],{},[54,1664,1667],{"className":1665,"code":1666,"language":284,"meta":59},[282],"Before return\nProgram still running after return\nBefore sys.exit()\n",[17,1668,1666],{"__ignoreMap":59},[14,1670,1671,1672,1674,1675,136],{},"If you need the ",[17,1673,26],{}," module more generally, see ",[672,1676,1678],{"href":1677},"\u002Fstandard-library\u002Fpython-sys-module-overview","Python sys module overview",[49,1680,1682],{"id":1681},"difference-between-sysexit-and-break","Difference between sys.exit() and break",[14,1684,1685,1687],{},[17,1686,1294],{}," only stops the nearest loop.",[14,1689,1690,1692],{},[17,1691,19],{}," stops the whole program.",[14,1694,1695,1696,1699,1700,1703,1704,1706],{},"If you only want to stop a ",[17,1697,1698],{},"for"," loop or ",[17,1701,1702],{},"while"," loop, use ",[17,1705,1294],{}," instead.",[14,1708,360],{},[54,1710,1712],{"className":56,"code":1711,"language":58,"meta":59,"style":59},"for number in range(5):\n    if number == 3:\n        break\n    print(number)\n\nprint(\"Loop ended, program continues\")\n",[17,1713,1714,1734,1748,1753,1764,1768],{"__ignoreMap":59},[63,1715,1716,1718,1721,1724,1727,1729,1732],{"class":65,"line":66},[63,1717,1698],{"class":69},[63,1719,1720],{"class":73}," number ",[63,1722,1723],{"class":69},"in",[63,1725,1726],{"class":94}," range",[63,1728,99],{"class":98},[63,1730,1731],{"class":412},"5",[63,1733,1343],{"class":98},[63,1735,1736,1738,1740,1743,1746],{"class":65,"line":77},[63,1737,1348],{"class":69},[63,1739,1720],{"class":73},[63,1741,1742],{"class":90},"==",[63,1744,1745],{"class":412}," 3",[63,1747,127],{"class":98},[63,1749,1750],{"class":65,"line":84},[63,1751,1752],{"class":69},"        break\n",[63,1754,1755,1757,1759,1762],{"class":65,"line":115},[63,1756,714],{"class":94},[63,1758,99],{"class":98},[63,1760,1761],{"class":139},"number",[63,1763,112],{"class":98},[63,1765,1766],{"class":65,"line":130},[63,1767,81],{"emptyLinePlaceholder":80},[63,1769,1770,1772,1774,1776,1779,1781],{"class":65,"line":154},[63,1771,162],{"class":94},[63,1773,99],{"class":98},[63,1775,103],{"class":102},[63,1777,1778],{"class":106},"Loop ended, program continues",[63,1780,103],{"class":102},[63,1782,112],{"class":98},[14,1784,1785],{},"Output:",[54,1787,1790],{"className":1788,"code":1789,"language":284,"meta":59},[282],"0\n1\n2\nLoop ended, program continues\n",[17,1791,1789],{"__ignoreMap":59},[14,1793,1794,1795,1797],{},"Compare that with ",[17,1796,19],{},":",[54,1799,1801],{"className":56,"code":1800,"language":58,"meta":59,"style":59},"import sys\n\nfor number in range(5):\n    if number == 3:\n        sys.exit()\n    print(number)\n\nprint(\"This line will not run\")\n",[17,1802,1803,1809,1813,1829,1841,1851,1861,1865],{"__ignoreMap":59},[63,1804,1805,1807],{"class":65,"line":66},[63,1806,70],{"class":69},[63,1808,74],{"class":73},[63,1810,1811],{"class":65,"line":77},[63,1812,81],{"emptyLinePlaceholder":80},[63,1814,1815,1817,1819,1821,1823,1825,1827],{"class":65,"line":84},[63,1816,1698],{"class":69},[63,1818,1720],{"class":73},[63,1820,1723],{"class":69},[63,1822,1726],{"class":94},[63,1824,99],{"class":98},[63,1826,1731],{"class":412},[63,1828,1343],{"class":98},[63,1830,1831,1833,1835,1837,1839],{"class":65,"line":115},[63,1832,1348],{"class":69},[63,1834,1720],{"class":73},[63,1836,1742],{"class":90},[63,1838,1745],{"class":412},[63,1840,127],{"class":98},[63,1842,1843,1845,1847,1849],{"class":65,"line":130},[63,1844,1364],{"class":73},[63,1846,136],{"class":98},[63,1848,140],{"class":139},[63,1850,260],{"class":98},[63,1852,1853,1855,1857,1859],{"class":65,"line":154},[63,1854,714],{"class":94},[63,1856,99],{"class":98},[63,1858,1761],{"class":139},[63,1860,112],{"class":98},[63,1862,1863],{"class":65,"line":159},[63,1864,81],{"emptyLinePlaceholder":80},[63,1866,1867,1869,1871,1873,1875,1877],{"class":65,"line":895},[63,1868,162],{"class":94},[63,1870,99],{"class":98},[63,1872,103],{"class":102},[63,1874,1656],{"class":106},[63,1876,103],{"class":102},[63,1878,112],{"class":98},[14,1880,1785],{},[54,1882,1885],{"className":1883,"code":1884,"language":284,"meta":59},[282],"0\n1\n2\n",[17,1886,1884],{"__ignoreMap":59},[49,1888,1890],{"id":1889},"exit-codes-in-simple-terms","Exit codes in simple terms",[14,1892,1893],{},"Exit codes help the operating system or shell understand whether your program succeeded.",[14,1895,1896],{},"Simple rule:",[194,1898,1899,1904],{},[197,1900,1901,1903],{},[17,1902,413],{}," usually means success",[197,1905,1906],{},"non-zero usually means an error or special stop reason",[14,1908,1909,1910,676,1912,1914],{},"For beginners, ",[17,1911,413],{},[17,1913,532],{}," are usually enough.",[194,1916,1917,1922],{},[197,1918,1479,1919,1921],{},[17,1920,413],{}," for normal success",[197,1923,1479,1924,1926],{},[17,1925,532],{}," when something went wrong",[14,1928,1929],{},"This matters more in command-line tools, where other programs may check whether your script succeeded.",[49,1931,1933],{"id":1932},"common-use-cases-to-include-in-examples","Common use cases to include in examples",[14,1935,1936,1937,136],{},"Here are the most common beginner-friendly uses of ",[17,1938,19],{},[427,1940,1942],{"id":1941},"exit-when-user-input-is-empty","Exit when user input is empty",[54,1944,1946],{"className":56,"code":1945,"language":58,"meta":59,"style":59},"import sys\n\nemail = input(\"Enter email: \")\n\nif not email:\n    sys.exit(\"Email is required\")\n\nprint(\"Email saved:\", email)\n",[17,1947,1948,1954,1958,1978,1982,1993,2012,2016],{"__ignoreMap":59},[63,1949,1950,1952],{"class":65,"line":66},[63,1951,70],{"class":69},[63,1953,74],{"class":73},[63,1955,1956],{"class":65,"line":77},[63,1957,81],{"emptyLinePlaceholder":80},[63,1959,1960,1963,1965,1967,1969,1971,1974,1976],{"class":65,"line":84},[63,1961,1962],{"class":73},"email ",[63,1964,91],{"class":90},[63,1966,95],{"class":94},[63,1968,99],{"class":98},[63,1970,103],{"class":102},[63,1972,1973],{"class":106},"Enter email: ",[63,1975,103],{"class":102},[63,1977,112],{"class":98},[63,1979,1980],{"class":65,"line":115},[63,1981,81],{"emptyLinePlaceholder":80},[63,1983,1984,1986,1988,1991],{"class":65,"line":130},[63,1985,118],{"class":69},[63,1987,121],{"class":90},[63,1989,1990],{"class":73}," email",[63,1992,127],{"class":98},[63,1994,1995,1997,1999,2001,2003,2005,2008,2010],{"class":65,"line":154},[63,1996,133],{"class":73},[63,1998,136],{"class":98},[63,2000,140],{"class":139},[63,2002,99],{"class":98},[63,2004,103],{"class":102},[63,2006,2007],{"class":106},"Email is required",[63,2009,103],{"class":102},[63,2011,112],{"class":98},[63,2013,2014],{"class":65,"line":159},[63,2015,81],{"emptyLinePlaceholder":80},[63,2017,2018,2020,2022,2024,2027,2029,2031,2033],{"class":65,"line":895},[63,2019,162],{"class":94},[63,2021,99],{"class":98},[63,2023,103],{"class":102},[63,2025,2026],{"class":106},"Email saved:",[63,2028,103],{"class":102},[63,2030,174],{"class":98},[63,2032,1990],{"class":139},[63,2034,112],{"class":98},[427,2036,2038],{"id":2037},"exit-when-a-file-does-not-exist","Exit when a file does not exist",[54,2040,2042],{"className":56,"code":2041,"language":58,"meta":59,"style":59},"import sys\nfrom pathlib import Path\n\npath = Path(\"config.json\")\n\nif not path.exists():\n    sys.exit(\"config.json does not exist\")\n\nprint(\"Config file found\")\n",[17,2043,2044,2050,2060,2064,2084,2088,2103,2122,2126],{"__ignoreMap":59},[63,2045,2046,2048],{"class":65,"line":66},[63,2047,70],{"class":69},[63,2049,74],{"class":73},[63,2051,2052,2054,2056,2058],{"class":65,"line":77},[63,2053,1075],{"class":69},[63,2055,1078],{"class":73},[63,2057,70],{"class":69},[63,2059,1083],{"class":73},[63,2061,2062],{"class":65,"line":84},[63,2063,81],{"emptyLinePlaceholder":80},[63,2065,2066,2069,2071,2073,2075,2077,2080,2082],{"class":65,"line":115},[63,2067,2068],{"class":73},"path ",[63,2070,91],{"class":90},[63,2072,1097],{"class":139},[63,2074,99],{"class":98},[63,2076,103],{"class":102},[63,2078,2079],{"class":106},"config.json",[63,2081,103],{"class":102},[63,2083,112],{"class":98},[63,2085,2086],{"class":65,"line":130},[63,2087,81],{"emptyLinePlaceholder":80},[63,2089,2090,2092,2094,2097,2099,2101],{"class":65,"line":154},[63,2091,118],{"class":69},[63,2093,121],{"class":90},[63,2095,2096],{"class":73}," path",[63,2098,136],{"class":98},[63,2100,1126],{"class":139},[63,2102,1129],{"class":98},[63,2104,2105,2107,2109,2111,2113,2115,2118,2120],{"class":65,"line":159},[63,2106,133],{"class":73},[63,2108,136],{"class":98},[63,2110,140],{"class":139},[63,2112,99],{"class":98},[63,2114,103],{"class":102},[63,2116,2117],{"class":106},"config.json does not exist",[63,2119,103],{"class":102},[63,2121,112],{"class":98},[63,2123,2124],{"class":65,"line":895},[63,2125,81],{"emptyLinePlaceholder":80},[63,2127,2128,2130,2132,2134,2137,2139],{"class":65,"line":900},[63,2129,162],{"class":94},[63,2131,99],{"class":98},[63,2133,103],{"class":102},[63,2135,2136],{"class":106},"Config file found",[63,2138,103],{"class":102},[63,2140,112],{"class":98},[427,2142,2144],{"id":2143},"exit-after-printing-help-text","Exit after printing help text",[54,2146,2148],{"className":56,"code":2147,"language":58,"meta":59,"style":59},"import sys\n\nprint(\"Usage: python app.py \u003Cinput_file>\")\nsys.exit(0)\n",[17,2149,2150,2156,2160,2175],{"__ignoreMap":59},[63,2151,2152,2154],{"class":65,"line":66},[63,2153,70],{"class":69},[63,2155,74],{"class":73},[63,2157,2158],{"class":65,"line":77},[63,2159,81],{"emptyLinePlaceholder":80},[63,2161,2162,2164,2166,2168,2171,2173],{"class":65,"line":84},[63,2163,162],{"class":94},[63,2165,99],{"class":98},[63,2167,103],{"class":102},[63,2169,2170],{"class":106},"Usage: python app.py \u003Cinput_file>",[63,2172,103],{"class":102},[63,2174,112],{"class":98},[63,2176,2177,2179,2181,2183,2185,2187],{"class":65,"line":115},[63,2178,26],{"class":73},[63,2180,136],{"class":98},[63,2182,140],{"class":139},[63,2184,99],{"class":98},[63,2186,413],{"class":412},[63,2188,112],{"class":98},[427,2190,2192,2193,687],{"id":2191},"show-that-finally-still-runs","Show that ",[17,2194,43],{},[54,2196,2198],{"className":56,"code":2197,"language":58,"meta":59,"style":59},"import sys\n\ntry:\n    print(\"Opening resource\")\n    sys.exit(1)\nfinally:\n    print(\"Closing resource\")\n",[17,2199,2200,2206,2210,2216,2231,2245,2251],{"__ignoreMap":59},[63,2201,2202,2204],{"class":65,"line":66},[63,2203,70],{"class":69},[63,2205,74],{"class":73},[63,2207,2208],{"class":65,"line":77},[63,2209,81],{"emptyLinePlaceholder":80},[63,2211,2212,2214],{"class":65,"line":84},[63,2213,707],{"class":69},[63,2215,127],{"class":98},[63,2217,2218,2220,2222,2224,2227,2229],{"class":65,"line":115},[63,2219,714],{"class":94},[63,2221,99],{"class":98},[63,2223,103],{"class":102},[63,2225,2226],{"class":106},"Opening resource",[63,2228,103],{"class":102},[63,2230,112],{"class":98},[63,2232,2233,2235,2237,2239,2241,2243],{"class":65,"line":130},[63,2234,133],{"class":73},[63,2236,136],{"class":98},[63,2238,140],{"class":139},[63,2240,99],{"class":98},[63,2242,532],{"class":412},[63,2244,112],{"class":98},[63,2246,2247,2249],{"class":65,"line":154},[63,2248,43],{"class":69},[63,2250,127],{"class":98},[63,2252,2253,2255,2257,2259,2262,2264],{"class":65,"line":159},[63,2254,714],{"class":94},[63,2256,99],{"class":98},[63,2258,103],{"class":102},[63,2260,2261],{"class":106},"Closing resource",[63,2263,103],{"class":102},[63,2265,112],{"class":98},[427,2267,2269,2270,676,2272],{"id":2268},"show-the-difference-between-return-and-sysexit","Show the difference between ",[17,2271,1284],{},[17,2273,19],{},[54,2275,2277],{"className":56,"code":2276,"language":58,"meta":59,"style":59},"import sys\n\ndef check_number(n):\n    if n \u003C 0:\n        return \"negative\"\n    return \"ok\"\n\nprint(check_number(-1))\nprint(\"Program still running\")\n\nsys.exit(\"Stopping now\")\nprint(\"This line never runs\")\n",[17,2278,2279,2285,2289,2303,2316,2329,2340,2344,2363,2378,2382,2401],{"__ignoreMap":59},[63,2280,2281,2283],{"class":65,"line":66},[63,2282,70],{"class":69},[63,2284,74],{"class":73},[63,2286,2287],{"class":65,"line":77},[63,2288,81],{"emptyLinePlaceholder":80},[63,2290,2291,2293,2296,2298,2301],{"class":65,"line":84},[63,2292,1326],{"class":1325},[63,2294,2295],{"class":1329}," check_number",[63,2297,99],{"class":98},[63,2299,2300],{"class":1335},"n",[63,2302,1343],{"class":98},[63,2304,2305,2307,2310,2312,2314],{"class":65,"line":115},[63,2306,1348],{"class":69},[63,2308,2309],{"class":73}," n ",[63,2311,1354],{"class":90},[63,2313,1357],{"class":412},[63,2315,127],{"class":98},[63,2317,2318,2320,2323,2326],{"class":65,"line":130},[63,2319,1436],{"class":69},[63,2321,2322],{"class":102}," \"",[63,2324,2325],{"class":106},"negative",[63,2327,2328],{"class":102},"\"\n",[63,2330,2331,2333,2335,2338],{"class":65,"line":154},[63,2332,1384],{"class":69},[63,2334,2322],{"class":102},[63,2336,2337],{"class":106},"ok",[63,2339,2328],{"class":102},[63,2341,2342],{"class":65,"line":159},[63,2343,81],{"emptyLinePlaceholder":80},[63,2345,2346,2348,2350,2353,2355,2358,2360],{"class":65,"line":895},[63,2347,162],{"class":94},[63,2349,99],{"class":98},[63,2351,2352],{"class":139},"check_number",[63,2354,99],{"class":98},[63,2356,2357],{"class":90},"-",[63,2359,532],{"class":412},[63,2361,2362],{"class":98},"))\n",[63,2364,2365,2367,2369,2371,2374,2376],{"class":65,"line":900},[63,2366,162],{"class":94},[63,2368,99],{"class":98},[63,2370,103],{"class":102},[63,2372,2373],{"class":106},"Program still running",[63,2375,103],{"class":102},[63,2377,112],{"class":98},[63,2379,2380],{"class":65,"line":1579},[63,2381,81],{"emptyLinePlaceholder":80},[63,2383,2384,2386,2388,2390,2392,2394,2397,2399],{"class":65,"line":1590},[63,2385,26],{"class":73},[63,2387,136],{"class":98},[63,2389,140],{"class":139},[63,2391,99],{"class":98},[63,2393,103],{"class":102},[63,2395,2396],{"class":106},"Stopping now",[63,2398,103],{"class":102},[63,2400,112],{"class":98},[63,2402,2403,2405,2407,2409,2411,2413],{"class":65,"line":1605},[63,2404,162],{"class":94},[63,2406,99],{"class":98},[63,2408,103],{"class":102},[63,2410,271],{"class":106},[63,2412,103],{"class":102},[63,2414,112],{"class":98},[49,2416,2418],{"id":2417},"common-mistakes","Common mistakes",[14,2420,2421,2422,1797],{},"Beginners often run into these problems when using ",[17,2423,19],{},[194,2425,2426,2434,2444,2450,2455],{},[197,2427,2428,2429,2431,2432],{},"forgetting to import ",[17,2430,26],{}," before calling ",[17,2433,19],{},[197,2435,2436,2437,2440,2441,2443],{},"using ",[17,2438,2439],{},"sys.exit"," in a function when ",[17,2442,1284],{}," would be better",[197,2445,2446,2447,2449],{},"expecting ",[17,2448,19],{}," to only leave a loop",[197,2451,2452,2453],{},"catching all exceptions and accidentally catching ",[17,2454,39],{},[197,2456,2457],{},"passing a string and not realizing it signals an error exit",[427,2459,2461,2462],{"id":2460},"mistake-forgetting-to-import-sys","Mistake: forgetting to import ",[17,2463,26],{},[54,2465,2467],{"className":56,"code":2466,"language":58,"meta":59,"style":59},"sys.exit()\n",[17,2468,2469],{"__ignoreMap":59},[63,2470,2471,2473,2475,2477],{"class":65,"line":66},[63,2472,26],{"class":73},[63,2474,136],{"class":98},[63,2476,140],{"class":139},[63,2478,260],{"class":98},[14,2480,2481,2482,2484],{},"This will fail because ",[17,2483,26],{}," is not defined.",[14,2486,2487],{},"Correct version:",[54,2489,2491],{"className":56,"code":2490,"language":58,"meta":59,"style":59},"import sys\n\nsys.exit()\n",[17,2492,2493,2499,2503],{"__ignoreMap":59},[63,2494,2495,2497],{"class":65,"line":66},[63,2496,70],{"class":69},[63,2498,74],{"class":73},[63,2500,2501],{"class":65,"line":77},[63,2502,81],{"emptyLinePlaceholder":80},[63,2504,2505,2507,2509,2511],{"class":65,"line":84},[63,2506,26],{"class":73},[63,2508,136],{"class":98},[63,2510,140],{"class":139},[63,2512,260],{"class":98},[427,2514,2516],{"id":2515},"mistake-catching-too-broadly","Mistake: catching too broadly",[54,2518,2520],{"className":56,"code":2519,"language":58,"meta":59,"style":59},"import sys\n\ntry:\n    sys.exit(1)\nexcept:\n    print(\"Caught something\")\n",[17,2521,2522,2528,2532,2538,2552,2558],{"__ignoreMap":59},[63,2523,2524,2526],{"class":65,"line":66},[63,2525,70],{"class":69},[63,2527,74],{"class":73},[63,2529,2530],{"class":65,"line":77},[63,2531,81],{"emptyLinePlaceholder":80},[63,2533,2534,2536],{"class":65,"line":84},[63,2535,707],{"class":69},[63,2537,127],{"class":98},[63,2539,2540,2542,2544,2546,2548,2550],{"class":65,"line":115},[63,2541,133],{"class":73},[63,2543,136],{"class":98},[63,2545,140],{"class":139},[63,2547,99],{"class":98},[63,2549,532],{"class":412},[63,2551,112],{"class":98},[63,2553,2554,2556],{"class":65,"line":130},[63,2555,824],{"class":69},[63,2557,127],{"class":98},[63,2559,2560,2562,2564,2566,2569,2571],{"class":65,"line":154},[63,2561,714],{"class":94},[63,2563,99],{"class":98},[63,2565,103],{"class":102},[63,2567,2568],{"class":106},"Caught something",[63,2570,103],{"class":102},[63,2572,112],{"class":98},[14,2574,2575,2576,2579,2580,2582],{},"A broad ",[17,2577,2578],{},"except:"," can catch ",[17,2581,39],{}," too, which may prevent the program from exiting as expected.",[14,2584,1398],{},[54,2586,2588],{"className":56,"code":2587,"language":58,"meta":59,"style":59},"try:\n    x = 10 \u002F 0\nexcept ZeroDivisionError:\n    print(\"Cannot divide by zero\")\n",[17,2589,2590,2596,2612,2621],{"__ignoreMap":59},[63,2591,2592,2594],{"class":65,"line":66},[63,2593,707],{"class":69},[63,2595,127],{"class":98},[63,2597,2598,2601,2603,2606,2609],{"class":65,"line":77},[63,2599,2600],{"class":73},"    x ",[63,2602,91],{"class":90},[63,2604,2605],{"class":412}," 10",[63,2607,2608],{"class":90}," \u002F",[63,2610,2611],{"class":412}," 0\n",[63,2613,2614,2616,2619],{"class":65,"line":84},[63,2615,824],{"class":69},[63,2617,2618],{"class":827}," ZeroDivisionError",[63,2620,127],{"class":98},[63,2622,2623,2625,2627,2629,2632,2634],{"class":65,"line":115},[63,2624,714],{"class":94},[63,2626,99],{"class":98},[63,2628,103],{"class":102},[63,2630,2631],{"class":106},"Cannot divide by zero",[63,2633,103],{"class":102},[63,2635,112],{"class":98},[14,2637,2638,2639,2641,2642,136],{},"If you want to understand ",[17,2640,39],{}," itself, see ",[672,2643,2645],{"href":2644},"\u002Ferrors\u002Fkeyboardinterrupt-exception-in-python-explained","SystemExit exception in Python explained",[49,2647,2649],{"id":2648},"faq","FAQ",[427,2651,2653],{"id":2652},"does-sysexit-always-stop-the-program-immediately","Does sys.exit() always stop the program immediately?",[14,2655,2656,2657,2659,2660,2662],{},"Not exactly. It raises ",[17,2658,39],{}," first, so ",[17,2661,43],{}," blocks can still run.",[427,2664,2666],{"id":2665},"what-is-the-difference-between-sysexit-and-exit","What is the difference between sys.exit() and exit()?",[14,2668,2669,2671,2672,2675],{},[17,2670,19],{}," is the standard choice in scripts. ",[17,2673,2674],{},"exit()"," is mainly for interactive use.",[427,2677,2679],{"id":2678},"what-does-sysexit0-mean","What does sys.exit(0) mean?",[14,2681,2682],{},"It usually means the program ended successfully.",[427,2684,2686],{"id":2685},"what-does-sysexit1-mean","What does sys.exit(1) mean?",[14,2688,2689],{},"It usually means the program ended because of an error or problem.",[427,2691,2693],{"id":2692},"can-i-use-sysexit-inside-a-function","Can I use sys.exit() inside a function?",[14,2695,2696,2697,2699],{},"Yes, but if you only want to leave the function, ",[17,2698,1284],{}," is usually better.",[49,2701,2703],{"id":2702},"see-also","See also",[194,2705,2706,2710,2715,2720,2724,2730],{},[197,2707,2708],{},[672,2709,1678],{"href":1677},[197,2711,2712],{},[672,2713,2714],{"href":1262},"How to exit a program in Python",[197,2716,2717],{},[672,2718,2719],{"href":679},"Using try, except, else, and finally in Python",[197,2721,2722],{},[672,2723,2645],{"href":2644},[197,2725,2726],{},[672,2727,2729],{"href":2728},"\u002Fstandard-library\u002Fsys.argv-explained","sys.argv explained",[197,2731,2732],{},[672,2733,675],{"href":674},[14,2735,2736],{},"If you are deciding between control-flow tools, the simple rule is:",[194,2738,2739,2744,2749,2752],{},[197,2740,1479,2741,2743],{},[17,2742,1284],{}," to leave a function",[197,2745,1479,2746,2748],{},[17,2747,1294],{}," to leave a loop",[197,2750,2751],{},"use exceptions for error handling",[197,2753,1479,2754,2756],{},[17,2755,19],{}," when the whole script should stop",[2758,2759,2760],"style",{},"html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sFwrP, html code.shiki .sFwrP{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#E1E4E8;--shiki-dark-font-style:inherit}",{"title":59,"searchDepth":77,"depth":77,"links":2762},[2763,2764,2765,2766,2773,2779,2784,2785,2786,2787,2788,2797,2802,2809],{"id":51,"depth":77,"text":52},{"id":191,"depth":77,"text":192},{"id":296,"depth":77,"text":297},{"id":418,"depth":77,"text":419,"children":2767},[2768,2770,2771,2772],{"id":429,"depth":84,"text":2769},"sys.exit() or sys.exit(0)",{"id":484,"depth":84,"text":356},{"id":537,"depth":84,"text":540},{"id":588,"depth":84,"text":591},{"id":632,"depth":77,"text":633,"children":2774},[2775,2777],{"id":683,"depth":84,"text":2776},"Example: finally still runs",{"id":781,"depth":84,"text":2778},"Example: catching SystemExit",{"id":933,"depth":77,"text":934,"children":2780},[2781,2782,2783],{"id":962,"depth":84,"text":963},{"id":1058,"depth":84,"text":1059},{"id":1170,"depth":84,"text":1171},{"id":1266,"depth":77,"text":1267},{"id":1458,"depth":77,"text":1459},{"id":1681,"depth":77,"text":1682},{"id":1889,"depth":77,"text":1890},{"id":1932,"depth":77,"text":1933,"children":2789},[2790,2791,2792,2793,2795],{"id":1941,"depth":84,"text":1942},{"id":2037,"depth":84,"text":2038},{"id":2143,"depth":84,"text":2144},{"id":2191,"depth":84,"text":2794},"Show that finally still runs",{"id":2268,"depth":84,"text":2796},"Show the difference between return and sys.exit()",{"id":2417,"depth":77,"text":2418,"children":2798},[2799,2801],{"id":2460,"depth":84,"text":2800},"Mistake: forgetting to import sys",{"id":2515,"depth":84,"text":2516},{"id":2648,"depth":77,"text":2649,"children":2803},[2804,2805,2806,2807,2808],{"id":2652,"depth":84,"text":2653},{"id":2665,"depth":84,"text":2666},{"id":2678,"depth":84,"text":2679},{"id":2685,"depth":84,"text":2686},{"id":2692,"depth":84,"text":2693},{"id":2702,"depth":77,"text":2703},"Master sys.exit function explained in our comprehensive Python beginner guide.","md",{},"\u002Fstandard-library\u002Fsys.exit-function-explained",{"title":5,"description":2810},"standard-library\u002Fsys.exit-function-explained","-5D8JAhjWk2U9dmZPaB-FmP30AnsjMiMkePRhBBBz6g",1777585471196]