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