[{"data":1,"prerenderedAt":187540},["ShallowReactive",2],{"wiki-\u002Fwiki\u002F2025-09-02-js-xue-xi\u002Fch4-js-jin-jie":3,"wiki-doc-nav":16689},{"id":4,"title":5,"body":6,"description":16682,"extension":16683,"meta":16684,"navigation":521,"path":16685,"seo":16686,"stem":16687,"__hash__":16688},"wiki\u002Fwiki\u002F2025-09-02-JS学习\u002Fch4-js进阶.md","4.js进阶",{"type":7,"value":8,"toc":16618},"minimark",[9,13,17,22,27,34,39,52,56,61,64,68,71,76,80,84,87,92,95,99,102,111,114,119,124,129,132,136,141,146,149,153,158,161,166,169,174,177,182,187,190,193,197,202,207,210,214,218,221,224,228,232,236,241,246,249,253,258,263,266,269,272,275,278,281,284,287,290,295,299,304,309,312,315,318,321,324,327,330,333,337,341,344,347,350,355,358,361,364,367,370,373,376,379,382,385,388,391,394,397,402,407,412,415,419,422,427,431,434,445,450,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,630,633,636,639,642,645,648,650,653,655,657,660,664,668,671,674,677,680,683,686,689,692,695,700,828,831,834,839,842,845,848,851,856,859,862,865,868,873,876,994,1059,1133,1137,1140,1143,1147,1150,1164,1193,1196,1199,1202,1205,1208,1211,1214,1216,1219,1222,1225,1228,1232,1237,1241,1246,1321,1324,1517,1520,1523,1526,1529,1532,1534,1537,1540,1543,1546,1549,1552,1554,1558,1561,1566,1569,1572,1575,1578,1581,1586,1589,1592,1595,1598,1600,1605,1608,1611,1613,1615,1618,1622,1625,1628,1633,1636,1639,1642,1693,1698,1702,1707,1710,1781,1784,1793,1797,1802,1805,1808,1816,1819,1836,3921,3925,3929,3934,3937,3941,3948,3954,4112,4117,4122,4125,4128,4131,4134,4137,4140,4143,4146,4149,4152,4155,4158,4163,4167,4170,4181,4185,4190,4193,4196,4199,4202,4205,4207,4210,4213,4216,4219,4221,4238,4241,4245,4248,4253,4258,4261,4264,4268,4271,4274,4283,4286,4291,4294,4299,4304,4371,4375,4378,4381,4386,4391,4477,4482,4486,4489,4492,4507,4510,4515,4519,4524,4633,4636,4647,4797,4801,4806,4915,4919,4924,4929,4934,4937,4945,4965,5001,5166,5171,5174,5179,5186,5189,5192,5195,5259,5315,5371,5375,5380,5708,5711,5715,5718,5723,5832,5837,5841,5846,5850,5921,5925,5928,5931,5934,5972,6252,6256,6275,6342,6376,6380,6383,6388,6419,6426,6435,6440,6455,6460,6470,6473,6611,6615,6677,6681,6686,6934,6938,6943,6946,6949,6952,6955,6959,6964,8572,8576,8580,8586,8589,8594,8598,8601,8606,8609,8620,8624,8629,8633,8638,8643,8646,8651,8655,8659,8662,8667,8672,8675,8678,8681,8804,8809,8911,8914,8917,8921,8926,9098,9103,9107,9110,9115,9181,9186,9189,9320,9323,9328,9331,9334,9429,9434,9437,9440,9443,9446,9451,9456,9459,9464,9469,9474,9478,9481,9484,9489,9494,9499,9504,9558,9561,9564,9569,9572,9575,9580,9585,9590,9594,9599,9613,9618,9621,9626,9630,9635,9640,9645,9650,9655,9660,9665,9670,9673,9677,9682,9685,9688,9691,9696,9701,9704,9707,9711,9714,9717,9722,9727,9732,9737,9740,9745,9750,9811,9816,9819,9824,11087,11092,11096,11100,11105,11108,11113,11118,11121,11126,11128,11133,11137,11140,11143,11154,11158,11163,11168,11223,11228,11233,11238,11454,11459,11463,11468,11471,11474,11477,11480,11937,11942,11949,11955,11958,11961,12226,12231,12235,12503,12508,12512,12517,12522,12527,12532,12868,12871,12876,12881,12884,12888,12892,12897,12902,12907,12912,12917,12922,12926,12929,12934,12939,12942,13016,13021,13026,13031,13033,13036,13415,13420,13425,13430,13433,13436,13539,13544,13549,13653,13658,13663,13667,13671,13676,13681,13684,13689,13692,13695,14096,14101,14104,14107,14110,14113,14635,14639,14644,14649,14654,14657,14662,14665,14668,15050,15055,15058,15060,15063,15066,15579,15583,15645,15648,15651,15654,15658,15661,15666,15671,16615],[10,11,5],"h1",{"id":12},"_4js进阶",[14,15,16],"p",{},"这部分是对es6的新特性和es7,es8等的描述，统称为es6+",[18,19,21],"h2",{"id":20},"_41-作用域","4.1 作用域",[23,24,26],"h3",{"id":25},"_411-局部作用域","4.1.1 局部作用域",[14,28,29],{},[30,31],"img",{"alt":32,"src":33},"","\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-212.png",[14,35,36],{},[30,37],{"alt":32,"src":38},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-213.png",[40,41,42,46,49],"ul",{},[43,44,45],"li",{},"函数作用域在函数内部",[43,47,48],{},"块级作用域在{}",[43,50,51],{},"对象的那个{}不是作用域，不是块作用域",[23,53,55],{"id":54},"_412-全局作用域","4.1.2 全局作用域",[14,57,58],{},[30,59],{"alt":32,"src":60},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-214.png",[14,62,63],{},"window.a=10不要这样写",[23,65,67],{"id":66},"_413-作用域链","4.1.3 作用域链",[14,69,70],{},"变量查找机制",[14,72,73],{},[30,74],{"alt":32,"src":75},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-215.png",[18,77,79],{"id":78},"_42-垃圾回收机制","4.2 垃圾回收机制",[23,81,83],{"id":82},"_421-大体介绍","4.2.1 大体介绍",[14,85,86],{},"垃圾回收机制(Garbage Collection) 简称 GC",[14,88,89],{},[30,90],{"alt":32,"src":91},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-216.png",[14,93,94],{},"内存泄漏：程序中分配的内存由于某种原因程序未释放或无法释放叫作泄露",[23,96,98],{"id":97},"_422-js垃圾回收机制算法说明","4.2.2 JS垃圾回收机制算法说明",[14,100,101],{},"堆栈空间分配区别：",[103,104,105,108],"ol",{},[43,106,107],{},"栈（操作系统）: 由操作系统自动分配释放函数的参数值、局部变量等，基本数据类型放到栈里面。",[43,109,110],{},"堆（操作系统）: 一般由程序员分配释放，若程序员不释放，由垃圾回收机制回收。复杂数据类型放到堆里面。",[14,112,113],{},"目前常见的浏览器垃圾回收算法: 引用计数法 和 标记清除法",[115,116,118],"h4",{"id":117},"_4221-引用计数","4.2.2.1 引用计数",[14,120,121],{},[30,122],{"alt":32,"src":123},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-217.png",[14,125,126],{},[30,127],{"alt":32,"src":128},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-218.png",[14,130,131],{},"如果不写o1.a=o2和o2.a=o1，则函数执行完之后，o1和o2都是局部变量，会自动被系统回收掉，加上这个之后堆内的这两个对象相互指引，引用次数不为0，导致了变量的无法回收，就产生了内存泄漏",[115,133,135],{"id":134},"_4222-标记清除法","4.2.2.2 标记清除法",[14,137,138],{},[30,139],{"alt":32,"src":140},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-219.png",[14,142,143],{},[30,144],{"alt":32,"src":145},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-220.png",[14,147,148],{},"这个算法就是全局开始的，找到就是有用，找不到就是没用，就清除",[18,150,152],{"id":151},"_43-闭包","4.3 闭包",[14,154,155],{},[30,156],{"alt":32,"src":157},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-221.png",[14,159,160],{},"闭包：内层函数+外层函数的变量",[14,162,163],{},[30,164],{"alt":32,"src":165},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-222.png",[14,167,168],{},"closure就是闭包",[14,170,171],{},[30,172],{"alt":32,"src":173},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-223.png",[14,175,176],{},"内层函数必须包含外层函数的变量才是闭包",[14,178,179],{},[30,180],{"alt":32,"src":181},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-224.png",[14,183,184],{},[30,185],{"alt":32,"src":186},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-225.png",[14,188,189],{},"闭包可能会引起内存泄漏",[14,191,192],{},"闭包作用：封闭数据，实现数据私有，外部也可以访问函数内部的变量",[18,194,196],{"id":195},"_44-变量提升","4.4 变量提升",[14,198,199],{},[30,200],{"alt":32,"src":201},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-226.png",[14,203,204],{},[30,205],{"alt":32,"src":206},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-227.png",[14,208,209],{},"在代码执行之前，先去检测当前作用域下所有var声明的变量，把所有var声明的变量提到当前作用域的前边，只提升声明，但不提升赋值",[18,211,213],{"id":212},"_45-函数进阶","4.5 函数进阶",[23,215,217],{"id":216},"_451-函数提升","4.5.1 函数提升",[14,219,220],{},"在程序执行之前会把所有函数声明提升到当前作用域的最前面",[14,222,223],{},"只提升函数声明，不提升函数调用",[225,226,227],"script",{},"\n\nfn()\n\nfunction fn() {\n\nconsole.log('函数提升')\n\n}\n\n上方程序在执行前将函数的声明进行了提前，但是不提前调用，然后我们去调用，是没有问题的\n\nfun()\n\nvar fun = function () {\n\nconsole.log('我将报错')\n\n}\n\n这个一个用var声明的变量，赋值等于一个匿名函数，var声明的变量会提前，但赋值不提前，所有在前边调用，此时会报错\n\n",[23,229,231],{"id":230},"_452-函数参数","4.5.2 函数参数",[115,233,235],{"id":234},"_4521-动态参数","4.5.2.1 动态参数",[14,237,238],{},[30,239],{"alt":32,"src":240},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-228.png",[14,242,243],{},[30,244],{"alt":32,"src":245},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-229.png",[14,247,248],{},"箭头函数里边没有arguments",[115,250,252],{"id":251},"_4522-剩余参数","4.5.2.2 剩余参数",[14,254,255],{},[30,256],{"alt":32,"src":257},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-230.png",[14,259,260],{},[30,261],{"alt":32,"src":262},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-231.png",[14,264,265],{},"剩余参数使用的时候不需要写...",[14,267,268],{},"剩余参数更加的灵活，我可以在函数括号中写上参数，然后再写...arr，如果是：",[14,270,271],{},"  function getSum(a,b,...arr) {",[14,273,274],{},"  console.log(11)",[14,276,277],{},"  }",[14,279,280],{},"  getSum(1,2,3,4)",[14,282,283],{},"  将1传给a，2传给b，剩下的传给剩余参数",[14,285,286],{},"  getSum(1,2)",[14,288,289],{},"  将1传给a，2传给b，剩余参数为一个空数组",[14,291,292],{},[30,293],{"alt":32,"src":294},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-232.png",[115,296,298],{"id":297},"_4523-展开运算符与剩余参数的区别","4.5.2.3 展开运算符与剩余参数的区别",[14,300,301],{},[30,302],{"alt":32,"src":303},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-233.png",[14,305,306],{},[30,307],{"alt":32,"src":308},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-234.png",[14,310,311],{},"...arr其实是等价于1,2,3的，这样才可以丢给Math对象来求最值",[14,313,314],{},"展开运算符可以用于数组之间的合并：",[14,316,317],{},"const arr1 = [1, 2, 3]",[14,319,320],{},"const arr2 = [3, 4, 5]",[14,322,323],{},"const arr = [...arr1, ...arr2]",[14,325,326],{},"console.log(arr) \u002F\u002F输出[1,2,3,3,4,5]",[14,328,329],{},"剩余参数：函数参数使用，得到真数组",[14,331,332],{},"展开运算符：数组中使用，数组展开",[23,334,336],{"id":335},"_453-箭头函数","4.5.3 箭头函数",[115,338,340],{"id":339},"_4531-语法基本介绍","4.5.3.1 语法基本介绍",[14,342,343],{},"箭头函数不是为了替代以前的函数，不是意味着以前的函数不再写了，箭头函数是为了替代原来需要匿名函数的地方",[14,345,346],{},"它不是万能的！！！",[14,348,349],{},"箭头函数在vue中用的非常多，必须保证百分百会！！！",[14,351,352],{},[30,353],{"alt":32,"src":354},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-235.png",[14,356,357],{},"注意点：",[14,359,360],{},"① 只有一个形参的时候，可以省略小括号：",[14,362,363],{},"const fn=x=>{console.log(x)}",[14,365,366],{},"② 只有一行代码时可以省略大括号：",[14,368,369],{},"const fn=x=>console.log(11)",[14,371,372],{},"③ 如果函数有返回值的话，如果只有一行代码的话return可以省略，大括号也可以省略，写在一行中：",[14,374,375],{},"const fn=x=>x+x",[14,377,378],{},"④ 没有参数或者两个参数及以上的都不可以省去括号",[14,380,381],{},"⑤ 阻止表单默认提交：",[14,383,384],{},"const form = document.querySelector('form')",[14,386,387],{},"form.addEventListener('click', ev => ev.preventDefault())",[14,389,390],{},"⑤ 箭头函数可以直接返回一个对象，理解为自带return的：",[14,392,393],{},"const fn=uname=>({uname:uname})",[14,395,396],{},"对象是需要大括号的，函数也有大括号，函数的大括号和对象大括号冲突了，所以将对象用小括号进行包住，这个等价会有一个返回值",[14,398,399],{},[30,400],{"alt":32,"src":401},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-236.png",[14,403,404],{},[30,405],{"alt":32,"src":406},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-237.png",[14,408,409],{},[30,410],{"alt":32,"src":411},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-238.png",[14,413,414],{},"一定不要忘记用()，有()就理解为自带return",[115,416,418],{"id":417},"_4532-箭头函数参数","4.5.3.2 箭头函数参数",[14,420,421],{},"箭头函数是没有动态参数的arguments",[14,423,424],{},[30,425],{"alt":32,"src":426},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-239.png",[115,428,430],{"id":429},"_4533-箭头函数this","4.5.3.3 箭头函数this",[14,432,433],{},"总结：",[103,435,436,439,442],{},[43,437,438],{},"可以理解为箭头函数中this值就看它父亲的this的指向",[43,440,441],{},"事件回调函数使用箭头函数时，this 为全局的 window",[43,443,444],{},"DOM事件回调函数最好不要使用箭头函数，尤其是需要用到this的时候",[14,446,447],{},[30,448],{"alt":32,"src":449},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-240.png",[451,452,456],"pre",{"className":453,"code":454,"language":455,"meta":32,"style":32},"language-xml shiki shiki-themes github-light github-dark","  \u003Cscript>\n    \u002F\u002F 1.以前this的指向：谁调用的这个函数，this就指向谁\n    console.log(this) \u002F\u002F指向window\n    \u002F\u002F window.console.log(111)   实际写法，window进行了省略\n    function fn() {\n      console.log(this)  \u002F\u002F指向window\n    }\n    window.fn()\u002F\u002F实际写法，调用时可以省略window\n\n    const obj = {\n      name: 'andy',\n      sayHai: function () {\n        console.log(this)\n      }\n    }\n    obj.sayHai() \u002F\u002Fthis指向obj\n    \u002F\u002F 2.箭头函数的this\n    const fn = () => console.log(this)\n  \u003C\u002Fscript>\n","xml",[457,458,459,474,480,486,492,498,504,510,516,523,529,535,541,547,553,558,564,570,576],"code",{"__ignoreMap":32},[460,461,464,468,471],"span",{"class":462,"line":463},"line",1,[460,465,467],{"class":466},"sVt8B","  \u003C",[460,469,225],{"class":470},"s9eBZ",[460,472,473],{"class":466},">\n",[460,475,477],{"class":462,"line":476},2,[460,478,479],{"class":466},"    \u002F\u002F 1.以前this的指向：谁调用的这个函数，this就指向谁\n",[460,481,483],{"class":462,"line":482},3,[460,484,485],{"class":466},"    console.log(this) \u002F\u002F指向window\n",[460,487,489],{"class":462,"line":488},4,[460,490,491],{"class":466},"    \u002F\u002F window.console.log(111)   实际写法，window进行了省略\n",[460,493,495],{"class":462,"line":494},5,[460,496,497],{"class":466},"    function fn() {\n",[460,499,501],{"class":462,"line":500},6,[460,502,503],{"class":466},"      console.log(this)  \u002F\u002F指向window\n",[460,505,507],{"class":462,"line":506},7,[460,508,509],{"class":466},"    }\n",[460,511,513],{"class":462,"line":512},8,[460,514,515],{"class":466},"    window.fn()\u002F\u002F实际写法，调用时可以省略window\n",[460,517,519],{"class":462,"line":518},9,[460,520,522],{"emptyLinePlaceholder":521},true,"\n",[460,524,526],{"class":462,"line":525},10,[460,527,528],{"class":466},"    const obj = {\n",[460,530,532],{"class":462,"line":531},11,[460,533,534],{"class":466},"      name: 'andy',\n",[460,536,538],{"class":462,"line":537},12,[460,539,540],{"class":466},"      sayHai: function () {\n",[460,542,544],{"class":462,"line":543},13,[460,545,546],{"class":466},"        console.log(this)\n",[460,548,550],{"class":462,"line":549},14,[460,551,552],{"class":466},"      }\n",[460,554,556],{"class":462,"line":555},15,[460,557,509],{"class":466},[460,559,561],{"class":462,"line":560},16,[460,562,563],{"class":466},"    obj.sayHai() \u002F\u002Fthis指向obj\n",[460,565,567],{"class":462,"line":566},17,[460,568,569],{"class":466},"    \u002F\u002F 2.箭头函数的this\n",[460,571,573],{"class":462,"line":572},18,[460,574,575],{"class":466},"    const fn = () => console.log(this)\n",[460,577,579,582,584],{"class":462,"line":578},19,[460,580,581],{"class":466},"  \u003C\u002F",[460,583,225],{"class":470},[460,585,473],{"class":466},[14,587,588],{},"2.箭头函数的this 是上一层作用域的this指向，箭头函数是不会创建自己的this的",[14,590,591],{},"const fn = () => console.log(this)",[14,593,594],{},"fn() \u002F\u002F指向window",[14,596,597],{},"\u002F\u002F 3.对象方法箭头函数 this",[14,599,600],{},"①",[14,602,603],{},"const obj = {",[14,605,606],{},"uname: 'pink老师',",[14,608,609],{},"sayHai: () => console.log(this) \u002F\u002Fthis指向的是window",[14,611,612],{},"}",[14,614,615],{},"调用对象里边的函数",[14,617,618],{},"箭头函数里不会创建自己的this，所以在箭头函数没有this，所以会往这个箭头函数上方去寻找，对象是没有作用域的，上一层的作用域是指向window的，因为obj在这个作用域，也就是说可以看obj的this的指向，指向window，所以这个this指向window，obj实际为window.obj",[14,620,621],{},"obj.sayHai()",[14,623,624],{},"②",[14,626,627],{},"const obj1 = {",[14,629,606],{},[14,631,632],{},"sayHai: function () {",[14,634,635],{},"let i = 10",[14,637,638],{},"const count = () => {",[14,640,641],{},"console.log(this)",[14,643,644],{},"这个this指向的是obj1,箭头函数不会创建this，所以不指向这个作用域的的父亲",[14,646,647],{},"也就是count，这个作用域的上层作用域在这个匿名函数中，这个匿名函数的this指向的obj1",[14,649,612],{},[14,651,652],{},"count()",[14,654,612],{},[14,656,612],{},[14,658,659],{},"obj1.sayHai()",[18,661,663],{"id":662},"_46-解构赋值","4.6 解构赋值",[23,665,667],{"id":666},"_461-数组解构","4.6.1 数组解构",[14,669,670],{},"以前要是使用数组中的值的话：",[14,672,673],{},"假设一个数组我存放了3个值，分别为最大值，最小值和平均值，我要使用里边的值的话，我需要再去声明这个常量",[14,675,676],{},"const arr=[100,60,80]",[14,678,679],{},"const max=arr[0]",[14,681,682],{},"const min=arr[1]",[14,684,685],{},"const avg=arr[2]",[14,687,688],{},"要写很多行代码，较为麻烦，所以我们需要用到数组解构",[14,690,691],{},"用数组解构的话：const [max,min,avr]=[100,60,80]",[14,693,694],{},"这个写法就类似于上边的那种用很多const的方法",[14,696,697],{},[30,698],{"alt":32,"src":699},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-241.png",[451,701,705],{"className":702,"code":703,"language":704,"meta":32,"style":32},"language-html shiki shiki-themes github-light github-dark","①变量之间交换值:\nlet a=1\nlet b=2;\n必须加这行代码，不然就会报错\n[b,a]=[a,b]\n\n\n可以写成下面的方式：\nlet a=1\nlet b=2\n;[b,a]=[a,b]\n\n②排序\nconst arr1 = [2, 6, 4, 3, 5, 1]\nfor (let i = 0; i \u003C arr1.length; i++) {\n   for (let j = 0; j \u003C arr1.length - 1; j++) {\n      if (arr1[j] > arr1[j + 1]) {\n         [arr1[j + 1], arr1[j]] = [arr1[j], arr1[j + 1]]\n       }\n   }\n}\nconsole.log(arr1)\n","html",[457,706,707,712,717,722,727,732,736,740,745,749,754,759,763,768,773,785,795,800,805,810,816,822],{"__ignoreMap":32},[460,708,709],{"class":462,"line":463},[460,710,711],{"class":466},"①变量之间交换值:\n",[460,713,714],{"class":462,"line":476},[460,715,716],{"class":466},"let a=1\n",[460,718,719],{"class":462,"line":482},[460,720,721],{"class":466},"let b=2;\n",[460,723,724],{"class":462,"line":488},[460,725,726],{"class":466},"必须加这行代码，不然就会报错\n",[460,728,729],{"class":462,"line":494},[460,730,731],{"class":466},"[b,a]=[a,b]\n",[460,733,734],{"class":462,"line":500},[460,735,522],{"emptyLinePlaceholder":521},[460,737,738],{"class":462,"line":506},[460,739,522],{"emptyLinePlaceholder":521},[460,741,742],{"class":462,"line":512},[460,743,744],{"class":466},"可以写成下面的方式：\n",[460,746,747],{"class":462,"line":518},[460,748,716],{"class":466},[460,750,751],{"class":462,"line":525},[460,752,753],{"class":466},"let b=2\n",[460,755,756],{"class":462,"line":531},[460,757,758],{"class":466},";[b,a]=[a,b]\n",[460,760,761],{"class":462,"line":537},[460,762,522],{"emptyLinePlaceholder":521},[460,764,765],{"class":462,"line":543},[460,766,767],{"class":466},"②排序\n",[460,769,770],{"class":462,"line":549},[460,771,772],{"class":466},"const arr1 = [2, 6, 4, 3, 5, 1]\n",[460,774,775,778,782],{"class":462,"line":555},[460,776,777],{"class":466},"for (let i = 0; i ",[460,779,781],{"class":780},"s7hpK","\u003C",[460,783,784],{"class":466}," arr1.length; i++) {\n",[460,786,787,790,792],{"class":462,"line":560},[460,788,789],{"class":466},"   for (let j = 0; j ",[460,791,781],{"class":780},[460,793,794],{"class":466}," arr1.length - 1; j++) {\n",[460,796,797],{"class":462,"line":566},[460,798,799],{"class":466},"      if (arr1[j] > arr1[j + 1]) {\n",[460,801,802],{"class":462,"line":572},[460,803,804],{"class":466},"         [arr1[j + 1], arr1[j]] = [arr1[j], arr1[j + 1]]\n",[460,806,807],{"class":462,"line":578},[460,808,809],{"class":466},"       }\n",[460,811,813],{"class":462,"line":812},20,[460,814,815],{"class":466},"   }\n",[460,817,819],{"class":462,"line":818},21,[460,820,821],{"class":466},"}\n",[460,823,825],{"class":462,"line":824},22,[460,826,827],{"class":466},"console.log(arr1)\n",[14,829,830],{},"数组解构的细节：",[14,832,833],{},"①变量多，单元值少",[14,835,836],{},[30,837],{"alt":32,"src":838},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-242.png",[14,840,841],{},"防止出现undefined的方法：",[14,843,844],{},"const [a=0,b=0] =[1]",[14,846,847],{},"a为1，b为0；优先执行传过来的参数，没有参数传过来就是用自己的参数",[14,849,850],{},"②变量少，单元值多",[14,852,853],{},[30,854],{"alt":32,"src":855},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-243.png",[14,857,858],{},"此时可以使用剩余参数来接收多余的值",[14,860,861],{},"const [a,b,...c]=[1,2,3,4]",[14,863,864],{},"console.log(c) 输出[3,4]",[14,866,867],{},"③可以按需导入，忽略某些返回值",[14,869,870],{},[30,871],{"alt":32,"src":872},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-244.png",[14,874,875],{},"④支持多维数组的结构",[451,877,881],{"className":878,"code":879,"language":880,"meta":32,"style":32},"language-cpp shiki shiki-themes github-light github-dark","const arr = [1, 2, [3, 4]]\nconsole.log(arr[0])  \u002F\u002F1\nconsole.log(arr[1])  \u002F\u002F2\nconsole.log(arr[2])  \u002F\u002F[3,4]\nconsole.log(arr[2][0])  \u002F\u002F3\n","cpp",[457,882,883,922,944,959,974],{"__ignoreMap":32},[460,884,885,889,892,895,898,902,905,908,911,914,916,919],{"class":462,"line":463},[460,886,888],{"class":887},"szBVR","const",[460,890,891],{"class":466}," arr ",[460,893,894],{"class":887},"=",[460,896,897],{"class":466}," [",[460,899,901],{"class":900},"sj4cs","1",[460,903,904],{"class":466},", ",[460,906,907],{"class":900},"2",[460,909,910],{"class":466},", [",[460,912,913],{"class":900},"3",[460,915,904],{"class":466},[460,917,918],{"class":900},"4",[460,920,921],{"class":466},"]]\n",[460,923,924,927,931,934,937,940],{"class":462,"line":476},[460,925,926],{"class":466},"console.",[460,928,930],{"class":929},"sScJk","log",[460,932,933],{"class":466},"(arr[",[460,935,936],{"class":900},"0",[460,938,939],{"class":466},"])",[460,941,943],{"class":942},"sJ8bj","  \u002F\u002F1\n",[460,945,946,948,950,952,954,956],{"class":462,"line":482},[460,947,926],{"class":466},[460,949,930],{"class":929},[460,951,933],{"class":466},[460,953,901],{"class":900},[460,955,939],{"class":466},[460,957,958],{"class":942},"  \u002F\u002F2\n",[460,960,961,963,965,967,969,971],{"class":462,"line":488},[460,962,926],{"class":466},[460,964,930],{"class":929},[460,966,933],{"class":466},[460,968,907],{"class":900},[460,970,939],{"class":466},[460,972,973],{"class":942},"  \u002F\u002F[3,4]\n",[460,975,976,978,980,982,984,987,989,991],{"class":462,"line":494},[460,977,926],{"class":466},[460,979,930],{"class":929},[460,981,933],{"class":466},[460,983,907],{"class":900},[460,985,986],{"class":466},"][",[460,988,936],{"class":900},[460,990,939],{"class":466},[460,992,993],{"class":942},"  \u002F\u002F3\n",[451,995,997],{"className":878,"code":996,"language":880,"meta":32,"style":32},"const [a, b, c] = [1, 2, [3, 4]]\nconsole.log(a)  \u002F\u002F1\nconsole.log(b)  \u002F\u002F2\nconsole.log(c)  \u002F\u002F[3,4]\n",[457,998,999,1026,1037,1048],{"__ignoreMap":32},[460,1000,1001,1003,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024],{"class":462,"line":463},[460,1002,888],{"class":887},[460,1004,1005],{"class":466}," [a, b, c] ",[460,1007,894],{"class":887},[460,1009,897],{"class":466},[460,1011,901],{"class":900},[460,1013,904],{"class":466},[460,1015,907],{"class":900},[460,1017,910],{"class":466},[460,1019,913],{"class":900},[460,1021,904],{"class":466},[460,1023,918],{"class":900},[460,1025,921],{"class":466},[460,1027,1028,1030,1032,1035],{"class":462,"line":476},[460,1029,926],{"class":466},[460,1031,930],{"class":929},[460,1033,1034],{"class":466},"(a)",[460,1036,943],{"class":942},[460,1038,1039,1041,1043,1046],{"class":462,"line":482},[460,1040,926],{"class":466},[460,1042,930],{"class":929},[460,1044,1045],{"class":466},"(b)",[460,1047,958],{"class":942},[460,1049,1050,1052,1054,1057],{"class":462,"line":488},[460,1051,926],{"class":466},[460,1053,930],{"class":929},[460,1055,1056],{"class":466},"(c)",[460,1058,973],{"class":942},[451,1060,1062],{"className":878,"code":1061,"language":880,"meta":32,"style":32},"const [a, b, [c, d]] = [1, 2, [3, 4]]\nconsole.log(a)  \u002F\u002F1\nconsole.log(b)  \u002F\u002F2\nconsole.log(c)  \u002F\u002F3\nconsole.log(d)  \u002F\u002F4\n",[457,1063,1064,1091,1101,1111,1121],{"__ignoreMap":32},[460,1065,1066,1068,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089],{"class":462,"line":463},[460,1067,888],{"class":887},[460,1069,1070],{"class":466}," [a, b, [c, d]] ",[460,1072,894],{"class":887},[460,1074,897],{"class":466},[460,1076,901],{"class":900},[460,1078,904],{"class":466},[460,1080,907],{"class":900},[460,1082,910],{"class":466},[460,1084,913],{"class":900},[460,1086,904],{"class":466},[460,1088,918],{"class":900},[460,1090,921],{"class":466},[460,1092,1093,1095,1097,1099],{"class":462,"line":476},[460,1094,926],{"class":466},[460,1096,930],{"class":929},[460,1098,1034],{"class":466},[460,1100,943],{"class":942},[460,1102,1103,1105,1107,1109],{"class":462,"line":482},[460,1104,926],{"class":466},[460,1106,930],{"class":929},[460,1108,1045],{"class":466},[460,1110,958],{"class":942},[460,1112,1113,1115,1117,1119],{"class":462,"line":488},[460,1114,926],{"class":466},[460,1116,930],{"class":929},[460,1118,1056],{"class":466},[460,1120,993],{"class":942},[460,1122,1123,1125,1127,1130],{"class":462,"line":494},[460,1124,926],{"class":466},[460,1126,930],{"class":929},[460,1128,1129],{"class":466},"(d)",[460,1131,1132],{"class":942},"  \u002F\u002F4\n",[23,1134,1136],{"id":1135},"_462-对象解构","4.6.2 对象解构",[14,1138,1139],{},"对象解构是将对象属性和方法快速批量赋值给一系列变量的简洁语法",[14,1141,1142],{},"用的非常非常多！！！！！！",[115,1144,1146],{"id":1145},"_4621-对象解构的基本用法","4.6.2.1 对象解构的基本用法",[14,1148,1149],{},"基本语法：",[103,1151,1152,1155,1158,1161],{},[43,1153,1154],{},"赋值运算符 = 左侧的 {} 用于批量声明变量，右侧对象的属性值将被赋值给左侧的变量",[43,1156,1157],{},"对象属性的值将被赋值给与属性名相同的变量",[43,1159,1160],{},"注意解构的变量名不要和外面的变量名冲突否则报错",[43,1162,1163],{},"对象中找不到与变量名一致的属性时变量值为 undefined",[451,1165,1167],{"className":702,"code":1166,"language":704,"meta":32,"style":32},"const obj = {\n   uname: 'pink老师',\n   age: 18,\n}\nconst { uname, age } = obj\n",[457,1168,1169,1174,1179,1184,1188],{"__ignoreMap":32},[460,1170,1171],{"class":462,"line":463},[460,1172,1173],{"class":466},"const obj = {\n",[460,1175,1176],{"class":462,"line":476},[460,1177,1178],{"class":466},"   uname: 'pink老师',\n",[460,1180,1181],{"class":462,"line":482},[460,1182,1183],{"class":466},"   age: 18,\n",[460,1185,1186],{"class":462,"line":488},[460,1187,821],{"class":466},[460,1189,1190],{"class":462,"line":494},[460,1191,1192],{"class":466},"const { uname, age } = obj\n",[14,1194,1195],{},"上方代码这样写等价于：",[14,1197,1198],{},"const uname等价于obj.uname",[14,1200,1201],{},"变量名可以重新改名：",[14,1203,1204],{},"const uname='red老师'",[14,1206,1207],{},"const user={",[14,1209,1210],{},"  uname:'pink老师',",[14,1212,1213],{},"  age:18",[14,1215,612],{},[14,1217,1218],{},"const {uname,age}=user",[14,1220,1221],{},"解构的变量名与全局变量名冲突，此时会报错，解决方案是改解构变量名，因为全局变量名可能有很多代码正在使用，不能改，一改就会影响其他部分，所以要改解构变量名",[14,1223,1224],{},"const {旧变量名：新变量名}=对象",[14,1226,1227],{},"const {uname:username,age}=user",[115,1229,1231],{"id":1230},"_4622-数组对象的解构","4.6.2.2 数组对象的解构",[14,1233,1234],{},[30,1235],{"alt":32,"src":1236},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-245.png",[115,1238,1240],{"id":1239},"_4623-多级对象解构","4.6.2.3 多级对象解构",[14,1242,1243],{},[30,1244],{"alt":32,"src":1245},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-246.png",[451,1247,1249],{"className":453,"code":1248,"language":455,"meta":32,"style":32},"  \u003Cscript>\n    const pig = {\n      name: '佩奇',\n      family: {\n        mother: '猪妈妈',\n        father: '猪爸爸',\n        sister: '乔治'\n      },\n      age: 6\n    }\n    \u002F\u002F 多级对象解构\n    const { name, family: { mother, father, sister }, age } = pig\n  \u003C\u002Fscript>\n",[457,1250,1251,1259,1264,1269,1274,1279,1284,1289,1294,1299,1303,1308,1313],{"__ignoreMap":32},[460,1252,1253,1255,1257],{"class":462,"line":463},[460,1254,467],{"class":466},[460,1256,225],{"class":470},[460,1258,473],{"class":466},[460,1260,1261],{"class":462,"line":476},[460,1262,1263],{"class":466},"    const pig = {\n",[460,1265,1266],{"class":462,"line":482},[460,1267,1268],{"class":466},"      name: '佩奇',\n",[460,1270,1271],{"class":462,"line":488},[460,1272,1273],{"class":466},"      family: {\n",[460,1275,1276],{"class":462,"line":494},[460,1277,1278],{"class":466},"        mother: '猪妈妈',\n",[460,1280,1281],{"class":462,"line":500},[460,1282,1283],{"class":466},"        father: '猪爸爸',\n",[460,1285,1286],{"class":462,"line":506},[460,1287,1288],{"class":466},"        sister: '乔治'\n",[460,1290,1291],{"class":462,"line":512},[460,1292,1293],{"class":466},"      },\n",[460,1295,1296],{"class":462,"line":518},[460,1297,1298],{"class":466},"      age: 6\n",[460,1300,1301],{"class":462,"line":525},[460,1302,509],{"class":466},[460,1304,1305],{"class":462,"line":531},[460,1306,1307],{"class":466},"    \u002F\u002F 多级对象解构\n",[460,1309,1310],{"class":462,"line":537},[460,1311,1312],{"class":466},"    const { name, family: { mother, father, sister }, age } = pig\n",[460,1314,1315,1317,1319],{"class":462,"line":543},[460,1316,581],{"class":466},[460,1318,225],{"class":470},[460,1320,473],{"class":466},[14,1322,1323],{},"多级对象跟多维数组不同的是，需要指定是哪个对象",[451,1325,1329],{"className":1326,"code":1327,"language":1328,"meta":32,"style":32},"language-java shiki shiki-themes github-light github-dark","    \u002F\u002F 这是后台传递过来的数据\n    const msg = {\n      \"code\": 200,\n      \"msg\": \"获取新闻列表成功\",\n      \"data\": [\n        {\n          \"id\": 1,\n          \"title\": \"5G商用自己，三大运用商收入下降\",\n          \"count\": 58\n        },\n        {\n          \"id\": 2,\n          \"title\": \"国际媒体头条速览\",\n          \"count\": 56\n        },\n        {\n          \"id\": 3,\n          \"title\": \"乌克兰和俄罗斯持续冲突\",\n          \"count\": 1669\n        },\n      ]\n    }\n","java",[457,1330,1331,1336,1349,1364,1376,1386,1391,1403,1415,1425,1430,1434,1445,1456,1465,1469,1473,1484,1495,1504,1508,1513],{"__ignoreMap":32},[460,1332,1333],{"class":462,"line":463},[460,1334,1335],{"class":942},"    \u002F\u002F 这是后台传递过来的数据\n",[460,1337,1338,1341,1344,1346],{"class":462,"line":476},[460,1339,1340],{"class":887},"    const",[460,1342,1343],{"class":466}," msg ",[460,1345,894],{"class":887},[460,1347,1348],{"class":466}," {\n",[460,1350,1351,1355,1358,1361],{"class":462,"line":482},[460,1352,1354],{"class":1353},"sZZnC","      \"code\"",[460,1356,1357],{"class":887},":",[460,1359,1360],{"class":900}," 200",[460,1362,1363],{"class":466},",\n",[460,1365,1366,1369,1371,1374],{"class":462,"line":488},[460,1367,1368],{"class":1353},"      \"msg\"",[460,1370,1357],{"class":887},[460,1372,1373],{"class":1353}," \"获取新闻列表成功\"",[460,1375,1363],{"class":466},[460,1377,1378,1381,1383],{"class":462,"line":494},[460,1379,1380],{"class":1353},"      \"data\"",[460,1382,1357],{"class":887},[460,1384,1385],{"class":466}," [\n",[460,1387,1388],{"class":462,"line":500},[460,1389,1390],{"class":466},"        {\n",[460,1392,1393,1396,1398,1401],{"class":462,"line":506},[460,1394,1395],{"class":1353},"          \"id\"",[460,1397,1357],{"class":887},[460,1399,1400],{"class":900}," 1",[460,1402,1363],{"class":466},[460,1404,1405,1408,1410,1413],{"class":462,"line":512},[460,1406,1407],{"class":1353},"          \"title\"",[460,1409,1357],{"class":887},[460,1411,1412],{"class":1353}," \"5G商用自己，三大运用商收入下降\"",[460,1414,1363],{"class":466},[460,1416,1417,1420,1422],{"class":462,"line":518},[460,1418,1419],{"class":1353},"          \"count\"",[460,1421,1357],{"class":887},[460,1423,1424],{"class":900}," 58\n",[460,1426,1427],{"class":462,"line":525},[460,1428,1429],{"class":466},"        },\n",[460,1431,1432],{"class":462,"line":531},[460,1433,1390],{"class":466},[460,1435,1436,1438,1440,1443],{"class":462,"line":537},[460,1437,1395],{"class":1353},[460,1439,1357],{"class":887},[460,1441,1442],{"class":900}," 2",[460,1444,1363],{"class":466},[460,1446,1447,1449,1451,1454],{"class":462,"line":543},[460,1448,1407],{"class":1353},[460,1450,1357],{"class":887},[460,1452,1453],{"class":1353}," \"国际媒体头条速览\"",[460,1455,1363],{"class":466},[460,1457,1458,1460,1462],{"class":462,"line":549},[460,1459,1419],{"class":1353},[460,1461,1357],{"class":887},[460,1463,1464],{"class":900}," 56\n",[460,1466,1467],{"class":462,"line":555},[460,1468,1429],{"class":466},[460,1470,1471],{"class":462,"line":560},[460,1472,1390],{"class":466},[460,1474,1475,1477,1479,1482],{"class":462,"line":566},[460,1476,1395],{"class":1353},[460,1478,1357],{"class":887},[460,1480,1481],{"class":900}," 3",[460,1483,1363],{"class":466},[460,1485,1486,1488,1490,1493],{"class":462,"line":572},[460,1487,1407],{"class":1353},[460,1489,1357],{"class":887},[460,1491,1492],{"class":1353}," \"乌克兰和俄罗斯持续冲突\"",[460,1494,1363],{"class":466},[460,1496,1497,1499,1501],{"class":462,"line":578},[460,1498,1419],{"class":1353},[460,1500,1357],{"class":887},[460,1502,1503],{"class":900}," 1669\n",[460,1505,1506],{"class":462,"line":812},[460,1507,1429],{"class":466},[460,1509,1510],{"class":462,"line":818},[460,1511,1512],{"class":466},"      ]\n",[460,1514,1515],{"class":462,"line":824},[460,1516,509],{"class":466},[14,1518,1519],{},"1.针对后台的数据，如果我只要data的话，只需要： const {data}=msg",[14,1521,1522],{},"对象里边的属性和方法是无序的，我们只要里边的其中一个值的话，只需要：const{要的那个属性}=对象",[14,1524,1525],{},"\u002F\u002F上面msg是后台传递过来的数据，我们需要把data选出当做参数传递给函数 function render(arr) { const { data } = arr \u002F\u002F 我们只要 data 数据 \u002F\u002F 内部处理 console.log(data) } render(msg) msg是个对象，为实参，arr为形参，上述代码可以实现msg内部的data对象的输出，我们也可以按照下方的形式来写：",[14,1527,1528],{},"function({data}) {",[14,1530,1531],{},"console.log(data)",[14,1533,612],{},[14,1535,1536],{},"render(msg)",[14,1538,1539],{},"实参传递给形参的时候解构了",[14,1541,1542],{},"这样可以节省空间，放在函数里解构，只有函数调用的时候才会用到，放在外面的话内存就要存好几遍这些数据",[14,1544,1545],{},"2.为了防止msg里面的data名字混淆，要求渲染函数里面的数据名改为 myData",[14,1547,1548],{},"function render({data:mydata}) {",[14,1550,1551],{},"  console.log(data)",[14,1553,612],{},[23,1555,1557],{"id":1556},"_463-总结代码加分号的情况","4.6.3 总结代码加分号的情况",[14,1559,1560],{},"有两种情况：一个是数组结构，一个是立即执行函数",[103,1562,1563],{},[43,1564,1565],{},"如果对一个数组进行遍历，有两种方式：",[14,1567,1568],{},"①法1",[14,1570,1571],{},"const arr=[1,2,3]",[14,1573,1574],{},"arr.map(function(item,index) {",[14,1576,1577],{},"  console.log(item)",[14,1579,1580],{},"})",[14,1582,1583],{},[30,1584],{"alt":32,"src":1585},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-247.png",[14,1587,1588],{},"②法2",[14,1590,1591],{},"const str='pink'",[14,1593,1594],{},"[1,2,3].map(function(item,index) {",[14,1596,1597],{},"console.log(item)",[14,1599,1580],{},[14,1601,1602],{},[30,1603],{"alt":32,"src":1604},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-248.png",[14,1606,1607],{},"此时会报错",[14,1609,1610],{},"他会认为是const str='pink' [1,2,3].map(function(item,index) {",[14,1612,1597],{},[14,1614,1580],{},[14,1616,1617],{},"内部会当成这样处理，所以我们用分号进行隔开",[18,1619,1621],{"id":1620},"_47-遍历数组foreach方法","4.7 遍历数组forEach方法",[14,1623,1624],{},"forEach多和字符串来进行联合使用，使用forEach遍历后加到小盒子中，字符串str+=小盒子，然后将字符串加到大盒子中，大盒子使用innerHTML",[14,1626,1627],{},"可以理解为加强版的for循环",[14,1629,1630],{},[30,1631],{"alt":32,"src":1632},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-249.png",[14,1634,1635],{},"里边不写return，不返回数组，只遍历不返回",[14,1637,1638],{},"map是返回数组",[14,1640,1641],{},"forEach主要用于遍历数组对象",[451,1643,1645],{"className":453,"code":1644,"language":455,"meta":32,"style":32},"  \u003Cscript>\n    const arr = ['red', 'green', 'pink']\n    const result = arr.forEach(function (item, index) {\n      console.log(item)\n      console.log(index)\n    })\n    console.log(result)\n  \u003C\u002Fscript>\n",[457,1646,1647,1655,1660,1665,1670,1675,1680,1685],{"__ignoreMap":32},[460,1648,1649,1651,1653],{"class":462,"line":463},[460,1650,467],{"class":466},[460,1652,225],{"class":470},[460,1654,473],{"class":466},[460,1656,1657],{"class":462,"line":476},[460,1658,1659],{"class":466},"    const arr = ['red', 'green', 'pink']\n",[460,1661,1662],{"class":462,"line":482},[460,1663,1664],{"class":466},"    const result = arr.forEach(function (item, index) {\n",[460,1666,1667],{"class":462,"line":488},[460,1668,1669],{"class":466},"      console.log(item)\n",[460,1671,1672],{"class":462,"line":494},[460,1673,1674],{"class":466},"      console.log(index)\n",[460,1676,1677],{"class":462,"line":500},[460,1678,1679],{"class":466},"    })\n",[460,1681,1682],{"class":462,"line":506},[460,1683,1684],{"class":466},"    console.log(result)\n",[460,1686,1687,1689,1691],{"class":462,"line":512},[460,1688,581],{"class":466},[460,1690,225],{"class":470},[460,1692,473],{"class":466},[14,1694,1695],{},[30,1696],{"alt":32,"src":1697},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-250.png",[18,1699,1701],{"id":1700},"_48-筛选数组-filter方法","4.8 筛选数组 filter方法",[14,1703,1704],{},[30,1705],{"alt":32,"src":1706},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-251.png",[14,1708,1709],{},"只能写比较符，写加号不写任何作用，map中写比较符也不起任何作用，每种方法都有其各自的作用，但是有一点他们两个方法返回的都是新数组",[451,1711,1713],{"className":453,"code":1712,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const arr = [10, 20, 30]\n    const newArr = arr.filter(function (item, index) {\n      console.log(item)\n      console.log(index)\n      return item >= 20\n    })\n    console.log(newArr)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,1714,1715,1724,1732,1737,1742,1746,1750,1755,1759,1764,1772],{"__ignoreMap":32},[460,1716,1717,1719,1722],{"class":462,"line":463},[460,1718,781],{"class":466},[460,1720,1721],{"class":470},"body",[460,1723,473],{"class":466},[460,1725,1726,1728,1730],{"class":462,"line":476},[460,1727,467],{"class":466},[460,1729,225],{"class":470},[460,1731,473],{"class":466},[460,1733,1734],{"class":462,"line":482},[460,1735,1736],{"class":466},"    const arr = [10, 20, 30]\n",[460,1738,1739],{"class":462,"line":488},[460,1740,1741],{"class":466},"    const newArr = arr.filter(function (item, index) {\n",[460,1743,1744],{"class":462,"line":494},[460,1745,1669],{"class":466},[460,1747,1748],{"class":462,"line":500},[460,1749,1674],{"class":466},[460,1751,1752],{"class":462,"line":506},[460,1753,1754],{"class":466},"      return item >= 20\n",[460,1756,1757],{"class":462,"line":512},[460,1758,1679],{"class":466},[460,1760,1761],{"class":462,"line":518},[460,1762,1763],{"class":466},"    console.log(newArr)\n",[460,1765,1766,1768,1770],{"class":462,"line":525},[460,1767,581],{"class":466},[460,1769,225],{"class":470},[460,1771,473],{"class":466},[460,1773,1774,1777,1779],{"class":462,"line":531},[460,1775,1776],{"class":466},"\u003C\u002F",[460,1778,1721],{"class":470},[460,1780,473],{"class":466},[14,1782,1783],{},"这个也可以写成箭头函数：",[451,1785,1787],{"className":702,"code":1786,"language":704,"meta":32,"style":32},"const newArr = arr.filter(item => item >= 20)\n",[457,1788,1789],{"__ignoreMap":32},[460,1790,1791],{"class":462,"line":463},[460,1792,1786],{"class":466},[18,1794,1796],{"id":1795},"_49-商品列表价格筛选","4.9 商品列表价格筛选",[14,1798,1799],{},[30,1800],{"alt":32,"src":1801},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-252.png",[14,1803,1804],{},"步骤：",[14,1806,1807],{},"①：渲染页面模块",[40,1809,1810,1813],{},[43,1811,1812],{},"初始化需要渲染页面，同时，点击不同的需求，还会重新渲染页面，所以渲染做成一个函数",[43,1814,1815],{},"用forEach+字符串的形式",[14,1817,1818],{},"②：点击不同需求，显示不同页面内容",[40,1820,1821,1824,1827,1830,1833],{},[43,1822,1823],{},"点击采取事件委托方式 .filter",[43,1825,1826],{},"利用过滤函数 filter 筛选出符合条件的数据，因为生成的是一个数组，传递给渲染函数即可",[43,1828,1829],{},"筛选条件是根据点击的 data-index 来判断",[43,1831,1832],{},"可以使用对象解构，把事件对象解构",[43,1834,1835],{},"因为全部区间不需要筛选，直接把goodList渲染即可",[451,1837,1839],{"className":702,"code":1838,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      padding: 0;\n      margin: 0;\n      box-sizing: border-box;\n    }\n\n    .list {\n      width: 990px;\n      margin: 0 auto;\n      display: flex;\n      flex-wrap: wrap;\n    }\n\n    .item {\n      width: 240px;\n      margin-left: 10px;\n      padding: 20px 30px;\n      transition: all ease .5s;\n      margin-bottom: 20px;\n    }\n\n    .item:nth-child(4n) {\n      margin-left: 0;\n    }\n\n    .item:hover {\n      box-shadow: 0px 0px 5px rgba(0, 0, 0, .2);\n      transform: translate3d(0, -4px, 0);\n      cursor: pointer;\n    }\n\n    .item img {\n      width: 100%;\n    }\n\n    .item .name {\n      font-size: 18px;\n      margin-bottom: 10px;\n      color: #666;\n    }\n\n    .item .price {\n      font-size: 22px;\n      color: firebrick;\n    }\n\n    .item .price::before {\n      content: '￥';\n      font-size: 14px;\n    }\n\n    .filter {\n      display: flex;\n      width: 990px;\n      margin: 0 auto;\n      padding: 50px 30px\n    }\n\n    .filter a {\n      padding: 10px 20px;\n      background: #f5f5f5;\n      color: #666;\n      text-decoration: none;\n      margin-right: 20px;\n    }\n\n    .filter a:focus {\n      background-color: #05943c;\n      color: #fff;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"filter\">\n    \u003Ca href=\"#\" data-index=\"1\">0-100元\u003C\u002Fa>\n    \u003Ca href=\"#\" data-index=\"2\">100-300元\u003C\u002Fa>\n    \u003Ca href=\"#\" data-index=\"3\">300元以上\u003C\u002Fa>\n    \u003Ca href=\"#\">全部区间\u003C\u002Fa>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"list\">\n    \u003C!-- \u003Cdiv class=\"item\">\n      \u003Cimg src=\"\" alt=\"\">\n      \u003Cp class=\"name\">\u003C\u002Fp>\n      \u003Cp class=\"price\">\u003C\u002Fp>\n    \u003C\u002Fdiv> -->\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    \u002F\u002F 2. 初始化数据\n    const goodsList = [\n      {\n        id: '4001172',\n        name: '称心如意手摇咖啡磨豆机咖啡豆研磨机',\n        price: '289.00',\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F84a59ff9c58a77032564e61f716846d6.jpg',\n      },\n      {\n        id: '4001594',\n        name: '日式黑陶功夫茶组双侧把茶具礼盒装',\n        price: '288.00',\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F3346b7b92f9563c7a7e24c7ead883f18.jpg',\n      },\n      {\n        id: '4001009',\n        name: '竹制干泡茶盘正方形沥水茶台品茶盘',\n        price: '109.00',\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F2d942d6bc94f1e230763e1a5a3b379e1.png',\n      },\n      {\n        id: '4001874',\n        name: '古法温酒汝瓷酒具套装白酒杯莲花温酒器',\n        price: '488.00',\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F44e51622800e4fceb6bee8e616da85fd.png',\n      },\n      {\n        id: '4001649',\n        name: '大师监制龙泉青瓷茶叶罐',\n        price: '139.00',\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F4356c9fc150753775fe56b465314f1eb.png',\n      },\n      {\n        id: '3997185',\n        name: '与众不同的口感汝瓷白酒杯套组1壶4杯',\n        price: '108.00',\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F8e21c794dfd3a4e8573273ddae50bce2.jpg',\n      },\n      {\n        id: '3997403',\n        name: '手工吹制更厚实白酒杯壶套装6壶6杯',\n        price: '100.00',\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002Faf2371a65f60bce152a61fc22745ff3f.jpg',\n      },\n      {\n        id: '3998274',\n        name: '德国百年工艺高端水晶玻璃红酒杯2支装',\n        price: '139.00',\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F8896b897b3ec6639bbd1134d66b9715c.jpg',\n      },\n    ]\n\n    \u002F\u002F 1.渲染函数\n    function render(arr) {\n      \u002F\u002F 声明空字符串\n      let str = ''\n      \u002F\u002F 遍历数组\n      arr.forEach(item => {\n        const { name, price, picture } = item\n        str += `\n          \u003Cdiv class=\"item\">\n            \u003Cimg src=\"${picture}\" alt=\"\">\n            \u003Cp class=\"name\">${name}\u003C\u002Fp>\n            \u003Cp class=\"price\">${price}\u003C\u002Fp>\n          \u003C\u002Fdiv>\n        `\n      })\n      \u002F\u002F 追加给List\n      document.querySelector('.list').innerHTML = str\n    }\n    \u002F\u002F 页面一打开就需要渲染\n    render(goodsList)\n    \u002F\u002F 2.过滤筛选\n    document.querySelector('.filter').addEventListener('click', e => {\n      \u002F\u002F 我们需要根据自定属性值来判断点击的哪个小盒子a,即需要获取e.target.dataset.index\n      const { tagName, dataset } = e.target\n      \u002F\u002F 判断\n      if (e.target.tagName === 'A') {\n        \u002F\u002F console.log(11)\n        \u002F\u002F 创建用于接收新对象的数组，这个新数组直接覆盖掉它就行，或者这边let arr=[]也可以\n        \u002F\u002F 这里就给goodslist就行，因为如果下边的if不执行的话，我点击全部区间就会生效，因为渲染了个空数组\n        let arr = goodsList\n        if (dataset.index === '1') {\n          arr = goodsList.filter(item => item.price >= 0 && item.price \u003C= 100)\n        } else if (dataset.index === '2') {\n          arr = goodsList.filter(item => item.price >= 100 && item.price \u003C= 300)\n        } else if (dataset.index === '3') {\n          arr = goodsList.filter(item => item.price >= 300)\n        }\n        \u002F\u002F 渲染函数\n        render(arr)\n      }\n\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,1840,1841,1854,1870,1874,1883,1900,1924,1938,1947,1954,1967,1978,1990,1994,1998,2005,2020,2033,2045,2057,2061,2065,2072,2086,2101,2120,2142,2156,2161,2166,2181,2192,2197,2202,2210,2255,2283,2296,2301,2306,2316,2331,2336,2341,2351,2366,2379,2392,2397,2402,2412,2426,2438,2443,2448,2458,2471,2485,2490,2495,2503,2514,2527,2540,2557,2562,2567,2577,2595,2608,2619,2632,2646,2651,2656,2668,2681,2693,2698,2707,2716,2721,2730,2748,2780,2807,2834,2854,2863,2879,2885,2891,2897,2903,2909,2918,2927,2933,2946,2952,2963,2974,2985,2996,3001,3006,3016,3026,3036,3046,3051,3056,3066,3076,3086,3096,3101,3106,3116,3126,3136,3146,3151,3156,3166,3176,3186,3196,3201,3206,3216,3226,3236,3246,3251,3256,3266,3276,3286,3296,3301,3306,3316,3326,3335,3345,3350,3356,3361,3367,3384,3390,3404,3410,3429,3459,3471,3477,3488,3499,3509,3515,3521,3527,3533,3555,3560,3566,3575,3581,3614,3620,3643,3649,3666,3672,3678,3684,3697,3713,3755,3776,3810,3828,3853,3859,3865,3874,3879,3884,3889,3898,3907,3912],{"__ignoreMap":32},[460,1842,1843,1846,1849,1852],{"class":462,"line":463},[460,1844,1845],{"class":466},"\u003C!",[460,1847,1848],{"class":470},"DOCTYPE",[460,1850,1851],{"class":929}," html",[460,1853,473],{"class":466},[460,1855,1856,1858,1860,1863,1865,1868],{"class":462,"line":476},[460,1857,781],{"class":466},[460,1859,704],{"class":470},[460,1861,1862],{"class":929}," lang",[460,1864,894],{"class":466},[460,1866,1867],{"class":1353},"\"en\"",[460,1869,473],{"class":466},[460,1871,1872],{"class":462,"line":482},[460,1873,522],{"emptyLinePlaceholder":521},[460,1875,1876,1878,1881],{"class":462,"line":488},[460,1877,781],{"class":466},[460,1879,1880],{"class":470},"head",[460,1882,473],{"class":466},[460,1884,1885,1887,1890,1893,1895,1898],{"class":462,"line":494},[460,1886,467],{"class":466},[460,1888,1889],{"class":470},"meta",[460,1891,1892],{"class":929}," charset",[460,1894,894],{"class":466},[460,1896,1897],{"class":1353},"\"UTF-8\"",[460,1899,473],{"class":466},[460,1901,1902,1904,1906,1909,1911,1914,1917,1919,1922],{"class":462,"line":500},[460,1903,467],{"class":466},[460,1905,1889],{"class":470},[460,1907,1908],{"class":929}," name",[460,1910,894],{"class":466},[460,1912,1913],{"class":1353},"\"viewport\"",[460,1915,1916],{"class":929}," content",[460,1918,894],{"class":466},[460,1920,1921],{"class":1353},"\"width=device-width, initial-scale=1.0\"",[460,1923,473],{"class":466},[460,1925,1926,1928,1931,1934,1936],{"class":462,"line":506},[460,1927,467],{"class":466},[460,1929,1930],{"class":470},"title",[460,1932,1933],{"class":466},">Document\u003C\u002F",[460,1935,1930],{"class":470},[460,1937,473],{"class":466},[460,1939,1940,1942,1945],{"class":462,"line":512},[460,1941,467],{"class":466},[460,1943,1944],{"class":470},"style",[460,1946,473],{"class":466},[460,1948,1949,1952],{"class":462,"line":518},[460,1950,1951],{"class":470},"    *",[460,1953,1348],{"class":466},[460,1955,1956,1959,1962,1964],{"class":462,"line":525},[460,1957,1958],{"class":900},"      padding",[460,1960,1961],{"class":466},": ",[460,1963,936],{"class":900},[460,1965,1966],{"class":466},";\n",[460,1968,1969,1972,1974,1976],{"class":462,"line":531},[460,1970,1971],{"class":900},"      margin",[460,1973,1961],{"class":466},[460,1975,936],{"class":900},[460,1977,1966],{"class":466},[460,1979,1980,1983,1985,1988],{"class":462,"line":537},[460,1981,1982],{"class":900},"      box-sizing",[460,1984,1961],{"class":466},[460,1986,1987],{"class":900},"border-box",[460,1989,1966],{"class":466},[460,1991,1992],{"class":462,"line":543},[460,1993,509],{"class":466},[460,1995,1996],{"class":462,"line":549},[460,1997,522],{"emptyLinePlaceholder":521},[460,1999,2000,2003],{"class":462,"line":555},[460,2001,2002],{"class":929},"    .list",[460,2004,1348],{"class":466},[460,2006,2007,2010,2012,2015,2018],{"class":462,"line":560},[460,2008,2009],{"class":900},"      width",[460,2011,1961],{"class":466},[460,2013,2014],{"class":900},"990",[460,2016,2017],{"class":887},"px",[460,2019,1966],{"class":466},[460,2021,2022,2024,2026,2028,2031],{"class":462,"line":566},[460,2023,1971],{"class":900},[460,2025,1961],{"class":466},[460,2027,936],{"class":900},[460,2029,2030],{"class":900}," auto",[460,2032,1966],{"class":466},[460,2034,2035,2038,2040,2043],{"class":462,"line":572},[460,2036,2037],{"class":900},"      display",[460,2039,1961],{"class":466},[460,2041,2042],{"class":900},"flex",[460,2044,1966],{"class":466},[460,2046,2047,2050,2052,2055],{"class":462,"line":578},[460,2048,2049],{"class":900},"      flex-wrap",[460,2051,1961],{"class":466},[460,2053,2054],{"class":900},"wrap",[460,2056,1966],{"class":466},[460,2058,2059],{"class":462,"line":812},[460,2060,509],{"class":466},[460,2062,2063],{"class":462,"line":818},[460,2064,522],{"emptyLinePlaceholder":521},[460,2066,2067,2070],{"class":462,"line":824},[460,2068,2069],{"class":929},"    .item",[460,2071,1348],{"class":466},[460,2073,2075,2077,2079,2082,2084],{"class":462,"line":2074},23,[460,2076,2009],{"class":900},[460,2078,1961],{"class":466},[460,2080,2081],{"class":900},"240",[460,2083,2017],{"class":887},[460,2085,1966],{"class":466},[460,2087,2089,2092,2094,2097,2099],{"class":462,"line":2088},24,[460,2090,2091],{"class":900},"      margin-left",[460,2093,1961],{"class":466},[460,2095,2096],{"class":900},"10",[460,2098,2017],{"class":887},[460,2100,1966],{"class":466},[460,2102,2104,2106,2108,2111,2113,2116,2118],{"class":462,"line":2103},25,[460,2105,1958],{"class":900},[460,2107,1961],{"class":466},[460,2109,2110],{"class":900},"20",[460,2112,2017],{"class":887},[460,2114,2115],{"class":900}," 30",[460,2117,2017],{"class":887},[460,2119,1966],{"class":466},[460,2121,2123,2126,2128,2131,2134,2137,2140],{"class":462,"line":2122},26,[460,2124,2125],{"class":900},"      transition",[460,2127,1961],{"class":466},[460,2129,2130],{"class":900},"all",[460,2132,2133],{"class":900}," ease",[460,2135,2136],{"class":900}," .5",[460,2138,2139],{"class":887},"s",[460,2141,1966],{"class":466},[460,2143,2145,2148,2150,2152,2154],{"class":462,"line":2144},27,[460,2146,2147],{"class":900},"      margin-bottom",[460,2149,1961],{"class":466},[460,2151,2110],{"class":900},[460,2153,2017],{"class":887},[460,2155,1966],{"class":466},[460,2157,2159],{"class":462,"line":2158},28,[460,2160,509],{"class":466},[460,2162,2164],{"class":462,"line":2163},29,[460,2165,522],{"emptyLinePlaceholder":521},[460,2167,2169,2172,2175,2178],{"class":462,"line":2168},30,[460,2170,2171],{"class":929},"    .item:nth-child",[460,2173,2174],{"class":466},"(",[460,2176,2177],{"class":900},"4n",[460,2179,2180],{"class":466},") {\n",[460,2182,2184,2186,2188,2190],{"class":462,"line":2183},31,[460,2185,2091],{"class":900},[460,2187,1961],{"class":466},[460,2189,936],{"class":900},[460,2191,1966],{"class":466},[460,2193,2195],{"class":462,"line":2194},32,[460,2196,509],{"class":466},[460,2198,2200],{"class":462,"line":2199},33,[460,2201,522],{"emptyLinePlaceholder":521},[460,2203,2205,2208],{"class":462,"line":2204},34,[460,2206,2207],{"class":929},"    .item:hover",[460,2209,1348],{"class":466},[460,2211,2213,2216,2218,2220,2222,2225,2227,2230,2232,2235,2237,2239,2241,2243,2245,2247,2249,2252],{"class":462,"line":2212},35,[460,2214,2215],{"class":900},"      box-shadow",[460,2217,1961],{"class":466},[460,2219,936],{"class":900},[460,2221,2017],{"class":887},[460,2223,2224],{"class":900}," 0",[460,2226,2017],{"class":887},[460,2228,2229],{"class":900}," 5",[460,2231,2017],{"class":887},[460,2233,2234],{"class":900}," rgba",[460,2236,2174],{"class":466},[460,2238,936],{"class":900},[460,2240,904],{"class":466},[460,2242,936],{"class":900},[460,2244,904],{"class":466},[460,2246,936],{"class":900},[460,2248,904],{"class":466},[460,2250,2251],{"class":900},".2",[460,2253,2254],{"class":466},");\n",[460,2256,2258,2261,2263,2266,2268,2270,2272,2275,2277,2279,2281],{"class":462,"line":2257},36,[460,2259,2260],{"class":900},"      transform",[460,2262,1961],{"class":466},[460,2264,2265],{"class":900},"translate3d",[460,2267,2174],{"class":466},[460,2269,936],{"class":900},[460,2271,904],{"class":466},[460,2273,2274],{"class":900},"-4",[460,2276,2017],{"class":887},[460,2278,904],{"class":466},[460,2280,936],{"class":900},[460,2282,2254],{"class":466},[460,2284,2286,2289,2291,2294],{"class":462,"line":2285},37,[460,2287,2288],{"class":900},"      cursor",[460,2290,1961],{"class":466},[460,2292,2293],{"class":900},"pointer",[460,2295,1966],{"class":466},[460,2297,2299],{"class":462,"line":2298},38,[460,2300,509],{"class":466},[460,2302,2304],{"class":462,"line":2303},39,[460,2305,522],{"emptyLinePlaceholder":521},[460,2307,2309,2311,2314],{"class":462,"line":2308},40,[460,2310,2069],{"class":929},[460,2312,2313],{"class":470}," img",[460,2315,1348],{"class":466},[460,2317,2319,2321,2323,2326,2329],{"class":462,"line":2318},41,[460,2320,2009],{"class":900},[460,2322,1961],{"class":466},[460,2324,2325],{"class":900},"100",[460,2327,2328],{"class":887},"%",[460,2330,1966],{"class":466},[460,2332,2334],{"class":462,"line":2333},42,[460,2335,509],{"class":466},[460,2337,2339],{"class":462,"line":2338},43,[460,2340,522],{"emptyLinePlaceholder":521},[460,2342,2344,2346,2349],{"class":462,"line":2343},44,[460,2345,2069],{"class":929},[460,2347,2348],{"class":929}," .name",[460,2350,1348],{"class":466},[460,2352,2354,2357,2359,2362,2364],{"class":462,"line":2353},45,[460,2355,2356],{"class":900},"      font-size",[460,2358,1961],{"class":466},[460,2360,2361],{"class":900},"18",[460,2363,2017],{"class":887},[460,2365,1966],{"class":466},[460,2367,2369,2371,2373,2375,2377],{"class":462,"line":2368},46,[460,2370,2147],{"class":900},[460,2372,1961],{"class":466},[460,2374,2096],{"class":900},[460,2376,2017],{"class":887},[460,2378,1966],{"class":466},[460,2380,2382,2385,2387,2390],{"class":462,"line":2381},47,[460,2383,2384],{"class":900},"      color",[460,2386,1961],{"class":466},[460,2388,2389],{"class":900},"#666",[460,2391,1966],{"class":466},[460,2393,2395],{"class":462,"line":2394},48,[460,2396,509],{"class":466},[460,2398,2400],{"class":462,"line":2399},49,[460,2401,522],{"emptyLinePlaceholder":521},[460,2403,2405,2407,2410],{"class":462,"line":2404},50,[460,2406,2069],{"class":929},[460,2408,2409],{"class":929}," .price",[460,2411,1348],{"class":466},[460,2413,2415,2417,2419,2422,2424],{"class":462,"line":2414},51,[460,2416,2356],{"class":900},[460,2418,1961],{"class":466},[460,2420,2421],{"class":900},"22",[460,2423,2017],{"class":887},[460,2425,1966],{"class":466},[460,2427,2429,2431,2433,2436],{"class":462,"line":2428},52,[460,2430,2384],{"class":900},[460,2432,1961],{"class":466},[460,2434,2435],{"class":900},"firebrick",[460,2437,1966],{"class":466},[460,2439,2441],{"class":462,"line":2440},53,[460,2442,509],{"class":466},[460,2444,2446],{"class":462,"line":2445},54,[460,2447,522],{"emptyLinePlaceholder":521},[460,2449,2451,2453,2456],{"class":462,"line":2450},55,[460,2452,2069],{"class":929},[460,2454,2455],{"class":929}," .price::before",[460,2457,1348],{"class":466},[460,2459,2461,2464,2466,2469],{"class":462,"line":2460},56,[460,2462,2463],{"class":900},"      content",[460,2465,1961],{"class":466},[460,2467,2468],{"class":1353},"'￥'",[460,2470,1966],{"class":466},[460,2472,2474,2476,2478,2481,2483],{"class":462,"line":2473},57,[460,2475,2356],{"class":900},[460,2477,1961],{"class":466},[460,2479,2480],{"class":900},"14",[460,2482,2017],{"class":887},[460,2484,1966],{"class":466},[460,2486,2488],{"class":462,"line":2487},58,[460,2489,509],{"class":466},[460,2491,2493],{"class":462,"line":2492},59,[460,2494,522],{"emptyLinePlaceholder":521},[460,2496,2498,2501],{"class":462,"line":2497},60,[460,2499,2500],{"class":929},"    .filter",[460,2502,1348],{"class":466},[460,2504,2506,2508,2510,2512],{"class":462,"line":2505},61,[460,2507,2037],{"class":900},[460,2509,1961],{"class":466},[460,2511,2042],{"class":900},[460,2513,1966],{"class":466},[460,2515,2517,2519,2521,2523,2525],{"class":462,"line":2516},62,[460,2518,2009],{"class":900},[460,2520,1961],{"class":466},[460,2522,2014],{"class":900},[460,2524,2017],{"class":887},[460,2526,1966],{"class":466},[460,2528,2530,2532,2534,2536,2538],{"class":462,"line":2529},63,[460,2531,1971],{"class":900},[460,2533,1961],{"class":466},[460,2535,936],{"class":900},[460,2537,2030],{"class":900},[460,2539,1966],{"class":466},[460,2541,2543,2545,2547,2550,2552,2554],{"class":462,"line":2542},64,[460,2544,1958],{"class":900},[460,2546,1961],{"class":466},[460,2548,2549],{"class":900},"50",[460,2551,2017],{"class":887},[460,2553,2115],{"class":900},[460,2555,2556],{"class":887},"px\n",[460,2558,2560],{"class":462,"line":2559},65,[460,2561,509],{"class":466},[460,2563,2565],{"class":462,"line":2564},66,[460,2566,522],{"emptyLinePlaceholder":521},[460,2568,2570,2572,2575],{"class":462,"line":2569},67,[460,2571,2500],{"class":929},[460,2573,2574],{"class":470}," a",[460,2576,1348],{"class":466},[460,2578,2580,2582,2584,2586,2588,2591,2593],{"class":462,"line":2579},68,[460,2581,1958],{"class":900},[460,2583,1961],{"class":466},[460,2585,2096],{"class":900},[460,2587,2017],{"class":887},[460,2589,2590],{"class":900}," 20",[460,2592,2017],{"class":887},[460,2594,1966],{"class":466},[460,2596,2598,2601,2603,2606],{"class":462,"line":2597},69,[460,2599,2600],{"class":900},"      background",[460,2602,1961],{"class":466},[460,2604,2605],{"class":900},"#f5f5f5",[460,2607,1966],{"class":466},[460,2609,2611,2613,2615,2617],{"class":462,"line":2610},70,[460,2612,2384],{"class":900},[460,2614,1961],{"class":466},[460,2616,2389],{"class":900},[460,2618,1966],{"class":466},[460,2620,2622,2625,2627,2630],{"class":462,"line":2621},71,[460,2623,2624],{"class":900},"      text-decoration",[460,2626,1961],{"class":466},[460,2628,2629],{"class":900},"none",[460,2631,1966],{"class":466},[460,2633,2635,2638,2640,2642,2644],{"class":462,"line":2634},72,[460,2636,2637],{"class":900},"      margin-right",[460,2639,1961],{"class":466},[460,2641,2110],{"class":900},[460,2643,2017],{"class":887},[460,2645,1966],{"class":466},[460,2647,2649],{"class":462,"line":2648},73,[460,2650,509],{"class":466},[460,2652,2654],{"class":462,"line":2653},74,[460,2655,522],{"emptyLinePlaceholder":521},[460,2657,2659,2661,2663,2666],{"class":462,"line":2658},75,[460,2660,2500],{"class":929},[460,2662,2574],{"class":470},[460,2664,2665],{"class":929},":focus",[460,2667,1348],{"class":466},[460,2669,2671,2674,2676,2679],{"class":462,"line":2670},76,[460,2672,2673],{"class":900},"      background-color",[460,2675,1961],{"class":466},[460,2677,2678],{"class":900},"#05943c",[460,2680,1966],{"class":466},[460,2682,2684,2686,2688,2691],{"class":462,"line":2683},77,[460,2685,2384],{"class":900},[460,2687,1961],{"class":466},[460,2689,2690],{"class":900},"#fff",[460,2692,1966],{"class":466},[460,2694,2696],{"class":462,"line":2695},78,[460,2697,509],{"class":466},[460,2699,2701,2703,2705],{"class":462,"line":2700},79,[460,2702,581],{"class":466},[460,2704,1944],{"class":470},[460,2706,473],{"class":466},[460,2708,2710,2712,2714],{"class":462,"line":2709},80,[460,2711,1776],{"class":466},[460,2713,1880],{"class":470},[460,2715,473],{"class":466},[460,2717,2719],{"class":462,"line":2718},81,[460,2720,522],{"emptyLinePlaceholder":521},[460,2722,2724,2726,2728],{"class":462,"line":2723},82,[460,2725,781],{"class":466},[460,2727,1721],{"class":470},[460,2729,473],{"class":466},[460,2731,2733,2735,2738,2741,2743,2746],{"class":462,"line":2732},83,[460,2734,467],{"class":466},[460,2736,2737],{"class":470},"div",[460,2739,2740],{"class":929}," class",[460,2742,894],{"class":466},[460,2744,2745],{"class":1353},"\"filter\"",[460,2747,473],{"class":466},[460,2749,2751,2754,2757,2760,2762,2765,2768,2770,2773,2776,2778],{"class":462,"line":2750},84,[460,2752,2753],{"class":466},"    \u003C",[460,2755,2756],{"class":470},"a",[460,2758,2759],{"class":929}," href",[460,2761,894],{"class":466},[460,2763,2764],{"class":1353},"\"#\"",[460,2766,2767],{"class":929}," data-index",[460,2769,894],{"class":466},[460,2771,2772],{"class":1353},"\"1\"",[460,2774,2775],{"class":466},">0-100元\u003C\u002F",[460,2777,2756],{"class":470},[460,2779,473],{"class":466},[460,2781,2783,2785,2787,2789,2791,2793,2795,2797,2800,2803,2805],{"class":462,"line":2782},85,[460,2784,2753],{"class":466},[460,2786,2756],{"class":470},[460,2788,2759],{"class":929},[460,2790,894],{"class":466},[460,2792,2764],{"class":1353},[460,2794,2767],{"class":929},[460,2796,894],{"class":466},[460,2798,2799],{"class":1353},"\"2\"",[460,2801,2802],{"class":466},">100-300元\u003C\u002F",[460,2804,2756],{"class":470},[460,2806,473],{"class":466},[460,2808,2810,2812,2814,2816,2818,2820,2822,2824,2827,2830,2832],{"class":462,"line":2809},86,[460,2811,2753],{"class":466},[460,2813,2756],{"class":470},[460,2815,2759],{"class":929},[460,2817,894],{"class":466},[460,2819,2764],{"class":1353},[460,2821,2767],{"class":929},[460,2823,894],{"class":466},[460,2825,2826],{"class":1353},"\"3\"",[460,2828,2829],{"class":466},">300元以上\u003C\u002F",[460,2831,2756],{"class":470},[460,2833,473],{"class":466},[460,2835,2837,2839,2841,2843,2845,2847,2850,2852],{"class":462,"line":2836},87,[460,2838,2753],{"class":466},[460,2840,2756],{"class":470},[460,2842,2759],{"class":929},[460,2844,894],{"class":466},[460,2846,2764],{"class":1353},[460,2848,2849],{"class":466},">全部区间\u003C\u002F",[460,2851,2756],{"class":470},[460,2853,473],{"class":466},[460,2855,2857,2859,2861],{"class":462,"line":2856},88,[460,2858,581],{"class":466},[460,2860,2737],{"class":470},[460,2862,473],{"class":466},[460,2864,2866,2868,2870,2872,2874,2877],{"class":462,"line":2865},89,[460,2867,467],{"class":466},[460,2869,2737],{"class":470},[460,2871,2740],{"class":929},[460,2873,894],{"class":466},[460,2875,2876],{"class":1353},"\"list\"",[460,2878,473],{"class":466},[460,2880,2882],{"class":462,"line":2881},90,[460,2883,2884],{"class":942},"    \u003C!-- \u003Cdiv class=\"item\">\n",[460,2886,2888],{"class":462,"line":2887},91,[460,2889,2890],{"class":942},"      \u003Cimg src=\"\" alt=\"\">\n",[460,2892,2894],{"class":462,"line":2893},92,[460,2895,2896],{"class":942},"      \u003Cp class=\"name\">\u003C\u002Fp>\n",[460,2898,2900],{"class":462,"line":2899},93,[460,2901,2902],{"class":942},"      \u003Cp class=\"price\">\u003C\u002Fp>\n",[460,2904,2906],{"class":462,"line":2905},94,[460,2907,2908],{"class":942},"    \u003C\u002Fdiv> -->\n",[460,2910,2912,2914,2916],{"class":462,"line":2911},95,[460,2913,581],{"class":466},[460,2915,2737],{"class":470},[460,2917,473],{"class":466},[460,2919,2921,2923,2925],{"class":462,"line":2920},96,[460,2922,467],{"class":466},[460,2924,225],{"class":470},[460,2926,473],{"class":466},[460,2928,2930],{"class":462,"line":2929},97,[460,2931,2932],{"class":942},"    \u002F\u002F 2. 初始化数据\n",[460,2934,2936,2938,2941,2944],{"class":462,"line":2935},98,[460,2937,1340],{"class":887},[460,2939,2940],{"class":900}," goodsList",[460,2942,2943],{"class":887}," =",[460,2945,1385],{"class":466},[460,2947,2949],{"class":462,"line":2948},99,[460,2950,2951],{"class":466},"      {\n",[460,2953,2955,2958,2961],{"class":462,"line":2954},100,[460,2956,2957],{"class":466},"        id: ",[460,2959,2960],{"class":1353},"'4001172'",[460,2962,1363],{"class":466},[460,2964,2966,2969,2972],{"class":462,"line":2965},101,[460,2967,2968],{"class":466},"        name: ",[460,2970,2971],{"class":1353},"'称心如意手摇咖啡磨豆机咖啡豆研磨机'",[460,2973,1363],{"class":466},[460,2975,2977,2980,2983],{"class":462,"line":2976},102,[460,2978,2979],{"class":466},"        price: ",[460,2981,2982],{"class":1353},"'289.00'",[460,2984,1363],{"class":466},[460,2986,2988,2991,2994],{"class":462,"line":2987},103,[460,2989,2990],{"class":466},"        picture: ",[460,2992,2993],{"class":1353},"'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F84a59ff9c58a77032564e61f716846d6.jpg'",[460,2995,1363],{"class":466},[460,2997,2999],{"class":462,"line":2998},104,[460,3000,1293],{"class":466},[460,3002,3004],{"class":462,"line":3003},105,[460,3005,2951],{"class":466},[460,3007,3009,3011,3014],{"class":462,"line":3008},106,[460,3010,2957],{"class":466},[460,3012,3013],{"class":1353},"'4001594'",[460,3015,1363],{"class":466},[460,3017,3019,3021,3024],{"class":462,"line":3018},107,[460,3020,2968],{"class":466},[460,3022,3023],{"class":1353},"'日式黑陶功夫茶组双侧把茶具礼盒装'",[460,3025,1363],{"class":466},[460,3027,3029,3031,3034],{"class":462,"line":3028},108,[460,3030,2979],{"class":466},[460,3032,3033],{"class":1353},"'288.00'",[460,3035,1363],{"class":466},[460,3037,3039,3041,3044],{"class":462,"line":3038},109,[460,3040,2990],{"class":466},[460,3042,3043],{"class":1353},"'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F3346b7b92f9563c7a7e24c7ead883f18.jpg'",[460,3045,1363],{"class":466},[460,3047,3049],{"class":462,"line":3048},110,[460,3050,1293],{"class":466},[460,3052,3054],{"class":462,"line":3053},111,[460,3055,2951],{"class":466},[460,3057,3059,3061,3064],{"class":462,"line":3058},112,[460,3060,2957],{"class":466},[460,3062,3063],{"class":1353},"'4001009'",[460,3065,1363],{"class":466},[460,3067,3069,3071,3074],{"class":462,"line":3068},113,[460,3070,2968],{"class":466},[460,3072,3073],{"class":1353},"'竹制干泡茶盘正方形沥水茶台品茶盘'",[460,3075,1363],{"class":466},[460,3077,3079,3081,3084],{"class":462,"line":3078},114,[460,3080,2979],{"class":466},[460,3082,3083],{"class":1353},"'109.00'",[460,3085,1363],{"class":466},[460,3087,3089,3091,3094],{"class":462,"line":3088},115,[460,3090,2990],{"class":466},[460,3092,3093],{"class":1353},"'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F2d942d6bc94f1e230763e1a5a3b379e1.png'",[460,3095,1363],{"class":466},[460,3097,3099],{"class":462,"line":3098},116,[460,3100,1293],{"class":466},[460,3102,3104],{"class":462,"line":3103},117,[460,3105,2951],{"class":466},[460,3107,3109,3111,3114],{"class":462,"line":3108},118,[460,3110,2957],{"class":466},[460,3112,3113],{"class":1353},"'4001874'",[460,3115,1363],{"class":466},[460,3117,3119,3121,3124],{"class":462,"line":3118},119,[460,3120,2968],{"class":466},[460,3122,3123],{"class":1353},"'古法温酒汝瓷酒具套装白酒杯莲花温酒器'",[460,3125,1363],{"class":466},[460,3127,3129,3131,3134],{"class":462,"line":3128},120,[460,3130,2979],{"class":466},[460,3132,3133],{"class":1353},"'488.00'",[460,3135,1363],{"class":466},[460,3137,3139,3141,3144],{"class":462,"line":3138},121,[460,3140,2990],{"class":466},[460,3142,3143],{"class":1353},"'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F44e51622800e4fceb6bee8e616da85fd.png'",[460,3145,1363],{"class":466},[460,3147,3149],{"class":462,"line":3148},122,[460,3150,1293],{"class":466},[460,3152,3154],{"class":462,"line":3153},123,[460,3155,2951],{"class":466},[460,3157,3159,3161,3164],{"class":462,"line":3158},124,[460,3160,2957],{"class":466},[460,3162,3163],{"class":1353},"'4001649'",[460,3165,1363],{"class":466},[460,3167,3169,3171,3174],{"class":462,"line":3168},125,[460,3170,2968],{"class":466},[460,3172,3173],{"class":1353},"'大师监制龙泉青瓷茶叶罐'",[460,3175,1363],{"class":466},[460,3177,3179,3181,3184],{"class":462,"line":3178},126,[460,3180,2979],{"class":466},[460,3182,3183],{"class":1353},"'139.00'",[460,3185,1363],{"class":466},[460,3187,3189,3191,3194],{"class":462,"line":3188},127,[460,3190,2990],{"class":466},[460,3192,3193],{"class":1353},"'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F4356c9fc150753775fe56b465314f1eb.png'",[460,3195,1363],{"class":466},[460,3197,3199],{"class":462,"line":3198},128,[460,3200,1293],{"class":466},[460,3202,3204],{"class":462,"line":3203},129,[460,3205,2951],{"class":466},[460,3207,3209,3211,3214],{"class":462,"line":3208},130,[460,3210,2957],{"class":466},[460,3212,3213],{"class":1353},"'3997185'",[460,3215,1363],{"class":466},[460,3217,3219,3221,3224],{"class":462,"line":3218},131,[460,3220,2968],{"class":466},[460,3222,3223],{"class":1353},"'与众不同的口感汝瓷白酒杯套组1壶4杯'",[460,3225,1363],{"class":466},[460,3227,3229,3231,3234],{"class":462,"line":3228},132,[460,3230,2979],{"class":466},[460,3232,3233],{"class":1353},"'108.00'",[460,3235,1363],{"class":466},[460,3237,3239,3241,3244],{"class":462,"line":3238},133,[460,3240,2990],{"class":466},[460,3242,3243],{"class":1353},"'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F8e21c794dfd3a4e8573273ddae50bce2.jpg'",[460,3245,1363],{"class":466},[460,3247,3249],{"class":462,"line":3248},134,[460,3250,1293],{"class":466},[460,3252,3254],{"class":462,"line":3253},135,[460,3255,2951],{"class":466},[460,3257,3259,3261,3264],{"class":462,"line":3258},136,[460,3260,2957],{"class":466},[460,3262,3263],{"class":1353},"'3997403'",[460,3265,1363],{"class":466},[460,3267,3269,3271,3274],{"class":462,"line":3268},137,[460,3270,2968],{"class":466},[460,3272,3273],{"class":1353},"'手工吹制更厚实白酒杯壶套装6壶6杯'",[460,3275,1363],{"class":466},[460,3277,3279,3281,3284],{"class":462,"line":3278},138,[460,3280,2979],{"class":466},[460,3282,3283],{"class":1353},"'100.00'",[460,3285,1363],{"class":466},[460,3287,3289,3291,3294],{"class":462,"line":3288},139,[460,3290,2990],{"class":466},[460,3292,3293],{"class":1353},"'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002Faf2371a65f60bce152a61fc22745ff3f.jpg'",[460,3295,1363],{"class":466},[460,3297,3299],{"class":462,"line":3298},140,[460,3300,1293],{"class":466},[460,3302,3304],{"class":462,"line":3303},141,[460,3305,2951],{"class":466},[460,3307,3309,3311,3314],{"class":462,"line":3308},142,[460,3310,2957],{"class":466},[460,3312,3313],{"class":1353},"'3998274'",[460,3315,1363],{"class":466},[460,3317,3319,3321,3324],{"class":462,"line":3318},143,[460,3320,2968],{"class":466},[460,3322,3323],{"class":1353},"'德国百年工艺高端水晶玻璃红酒杯2支装'",[460,3325,1363],{"class":466},[460,3327,3329,3331,3333],{"class":462,"line":3328},144,[460,3330,2979],{"class":466},[460,3332,3183],{"class":1353},[460,3334,1363],{"class":466},[460,3336,3338,3340,3343],{"class":462,"line":3337},145,[460,3339,2990],{"class":466},[460,3341,3342],{"class":1353},"'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F8896b897b3ec6639bbd1134d66b9715c.jpg'",[460,3344,1363],{"class":466},[460,3346,3348],{"class":462,"line":3347},146,[460,3349,1293],{"class":466},[460,3351,3353],{"class":462,"line":3352},147,[460,3354,3355],{"class":466},"    ]\n",[460,3357,3359],{"class":462,"line":3358},148,[460,3360,522],{"emptyLinePlaceholder":521},[460,3362,3364],{"class":462,"line":3363},149,[460,3365,3366],{"class":942},"    \u002F\u002F 1.渲染函数\n",[460,3368,3370,3373,3376,3378,3382],{"class":462,"line":3369},150,[460,3371,3372],{"class":887},"    function",[460,3374,3375],{"class":929}," render",[460,3377,2174],{"class":466},[460,3379,3381],{"class":3380},"s4XuR","arr",[460,3383,2180],{"class":466},[460,3385,3387],{"class":462,"line":3386},151,[460,3388,3389],{"class":942},"      \u002F\u002F 声明空字符串\n",[460,3391,3393,3396,3399,3401],{"class":462,"line":3392},152,[460,3394,3395],{"class":887},"      let",[460,3397,3398],{"class":466}," str ",[460,3400,894],{"class":887},[460,3402,3403],{"class":1353}," ''\n",[460,3405,3407],{"class":462,"line":3406},153,[460,3408,3409],{"class":942},"      \u002F\u002F 遍历数组\n",[460,3411,3413,3416,3419,3421,3424,3427],{"class":462,"line":3412},154,[460,3414,3415],{"class":466},"      arr.",[460,3417,3418],{"class":929},"forEach",[460,3420,2174],{"class":466},[460,3422,3423],{"class":3380},"item",[460,3425,3426],{"class":887}," =>",[460,3428,1348],{"class":466},[460,3430,3432,3435,3438,3441,3443,3446,3448,3451,3454,3456],{"class":462,"line":3431},155,[460,3433,3434],{"class":887},"        const",[460,3436,3437],{"class":466}," { ",[460,3439,3440],{"class":900},"name",[460,3442,904],{"class":466},[460,3444,3445],{"class":900},"price",[460,3447,904],{"class":466},[460,3449,3450],{"class":900},"picture",[460,3452,3453],{"class":466}," } ",[460,3455,894],{"class":887},[460,3457,3458],{"class":466}," item\n",[460,3460,3462,3465,3468],{"class":462,"line":3461},156,[460,3463,3464],{"class":466},"        str ",[460,3466,3467],{"class":887},"+=",[460,3469,3470],{"class":1353}," `\n",[460,3472,3474],{"class":462,"line":3473},157,[460,3475,3476],{"class":1353},"          \u003Cdiv class=\"item\">\n",[460,3478,3480,3483,3485],{"class":462,"line":3479},158,[460,3481,3482],{"class":1353},"            \u003Cimg src=\"${",[460,3484,3450],{"class":466},[460,3486,3487],{"class":1353},"}\" alt=\"\">\n",[460,3489,3491,3494,3496],{"class":462,"line":3490},159,[460,3492,3493],{"class":1353},"            \u003Cp class=\"name\">${",[460,3495,3440],{"class":466},[460,3497,3498],{"class":1353},"}\u003C\u002Fp>\n",[460,3500,3502,3505,3507],{"class":462,"line":3501},160,[460,3503,3504],{"class":1353},"            \u003Cp class=\"price\">${",[460,3506,3445],{"class":466},[460,3508,3498],{"class":1353},[460,3510,3512],{"class":462,"line":3511},161,[460,3513,3514],{"class":1353},"          \u003C\u002Fdiv>\n",[460,3516,3518],{"class":462,"line":3517},162,[460,3519,3520],{"class":1353},"        `\n",[460,3522,3524],{"class":462,"line":3523},163,[460,3525,3526],{"class":466},"      })\n",[460,3528,3530],{"class":462,"line":3529},164,[460,3531,3532],{"class":942},"      \u002F\u002F 追加给List\n",[460,3534,3536,3539,3542,3544,3547,3550,3552],{"class":462,"line":3535},165,[460,3537,3538],{"class":466},"      document.",[460,3540,3541],{"class":929},"querySelector",[460,3543,2174],{"class":466},[460,3545,3546],{"class":1353},"'.list'",[460,3548,3549],{"class":466},").innerHTML ",[460,3551,894],{"class":887},[460,3553,3554],{"class":466}," str\n",[460,3556,3558],{"class":462,"line":3557},166,[460,3559,509],{"class":466},[460,3561,3563],{"class":462,"line":3562},167,[460,3564,3565],{"class":942},"    \u002F\u002F 页面一打开就需要渲染\n",[460,3567,3569,3572],{"class":462,"line":3568},168,[460,3570,3571],{"class":929},"    render",[460,3573,3574],{"class":466},"(goodsList)\n",[460,3576,3578],{"class":462,"line":3577},169,[460,3579,3580],{"class":942},"    \u002F\u002F 2.过滤筛选\n",[460,3582,3584,3587,3589,3591,3594,3597,3600,3602,3605,3607,3610,3612],{"class":462,"line":3583},170,[460,3585,3586],{"class":466},"    document.",[460,3588,3541],{"class":929},[460,3590,2174],{"class":466},[460,3592,3593],{"class":1353},"'.filter'",[460,3595,3596],{"class":466},").",[460,3598,3599],{"class":929},"addEventListener",[460,3601,2174],{"class":466},[460,3603,3604],{"class":1353},"'click'",[460,3606,904],{"class":466},[460,3608,3609],{"class":3380},"e",[460,3611,3426],{"class":887},[460,3613,1348],{"class":466},[460,3615,3617],{"class":462,"line":3616},171,[460,3618,3619],{"class":942},"      \u002F\u002F 我们需要根据自定属性值来判断点击的哪个小盒子a,即需要获取e.target.dataset.index\n",[460,3621,3623,3626,3628,3631,3633,3636,3638,3640],{"class":462,"line":3622},172,[460,3624,3625],{"class":887},"      const",[460,3627,3437],{"class":466},[460,3629,3630],{"class":900},"tagName",[460,3632,904],{"class":466},[460,3634,3635],{"class":900},"dataset",[460,3637,3453],{"class":466},[460,3639,894],{"class":887},[460,3641,3642],{"class":466}," e.target\n",[460,3644,3646],{"class":462,"line":3645},173,[460,3647,3648],{"class":942},"      \u002F\u002F 判断\n",[460,3650,3652,3655,3658,3661,3664],{"class":462,"line":3651},174,[460,3653,3654],{"class":887},"      if",[460,3656,3657],{"class":466}," (e.target.tagName ",[460,3659,3660],{"class":887},"===",[460,3662,3663],{"class":1353}," 'A'",[460,3665,2180],{"class":466},[460,3667,3669],{"class":462,"line":3668},175,[460,3670,3671],{"class":942},"        \u002F\u002F console.log(11)\n",[460,3673,3675],{"class":462,"line":3674},176,[460,3676,3677],{"class":942},"        \u002F\u002F 创建用于接收新对象的数组，这个新数组直接覆盖掉它就行，或者这边let arr=[]也可以\n",[460,3679,3681],{"class":462,"line":3680},177,[460,3682,3683],{"class":942},"        \u002F\u002F 这里就给goodslist就行，因为如果下边的if不执行的话，我点击全部区间就会生效，因为渲染了个空数组\n",[460,3685,3687,3690,3692,3694],{"class":462,"line":3686},178,[460,3688,3689],{"class":887},"        let",[460,3691,891],{"class":466},[460,3693,894],{"class":887},[460,3695,3696],{"class":466}," goodsList\n",[460,3698,3700,3703,3706,3708,3711],{"class":462,"line":3699},179,[460,3701,3702],{"class":887},"        if",[460,3704,3705],{"class":466}," (dataset.index ",[460,3707,3660],{"class":887},[460,3709,3710],{"class":1353}," '1'",[460,3712,2180],{"class":466},[460,3714,3716,3719,3721,3724,3727,3729,3731,3733,3736,3739,3741,3744,3746,3749,3752],{"class":462,"line":3715},180,[460,3717,3718],{"class":466},"          arr ",[460,3720,894],{"class":887},[460,3722,3723],{"class":466}," goodsList.",[460,3725,3726],{"class":929},"filter",[460,3728,2174],{"class":466},[460,3730,3423],{"class":3380},[460,3732,3426],{"class":887},[460,3734,3735],{"class":466}," item.price ",[460,3737,3738],{"class":887},">=",[460,3740,2224],{"class":900},[460,3742,3743],{"class":887}," &&",[460,3745,3735],{"class":466},[460,3747,3748],{"class":887},"\u003C=",[460,3750,3751],{"class":900}," 100",[460,3753,3754],{"class":466},")\n",[460,3756,3758,3761,3764,3767,3769,3771,3774],{"class":462,"line":3757},181,[460,3759,3760],{"class":466},"        } ",[460,3762,3763],{"class":887},"else",[460,3765,3766],{"class":887}," if",[460,3768,3705],{"class":466},[460,3770,3660],{"class":887},[460,3772,3773],{"class":1353}," '2'",[460,3775,2180],{"class":466},[460,3777,3779,3781,3783,3785,3787,3789,3791,3793,3795,3797,3799,3801,3803,3805,3808],{"class":462,"line":3778},182,[460,3780,3718],{"class":466},[460,3782,894],{"class":887},[460,3784,3723],{"class":466},[460,3786,3726],{"class":929},[460,3788,2174],{"class":466},[460,3790,3423],{"class":3380},[460,3792,3426],{"class":887},[460,3794,3735],{"class":466},[460,3796,3738],{"class":887},[460,3798,3751],{"class":900},[460,3800,3743],{"class":887},[460,3802,3735],{"class":466},[460,3804,3748],{"class":887},[460,3806,3807],{"class":900}," 300",[460,3809,3754],{"class":466},[460,3811,3813,3815,3817,3819,3821,3823,3826],{"class":462,"line":3812},183,[460,3814,3760],{"class":466},[460,3816,3763],{"class":887},[460,3818,3766],{"class":887},[460,3820,3705],{"class":466},[460,3822,3660],{"class":887},[460,3824,3825],{"class":1353}," '3'",[460,3827,2180],{"class":466},[460,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851],{"class":462,"line":3830},184,[460,3832,3718],{"class":466},[460,3834,894],{"class":887},[460,3836,3723],{"class":466},[460,3838,3726],{"class":929},[460,3840,2174],{"class":466},[460,3842,3423],{"class":3380},[460,3844,3426],{"class":887},[460,3846,3735],{"class":466},[460,3848,3738],{"class":887},[460,3850,3807],{"class":900},[460,3852,3754],{"class":466},[460,3854,3856],{"class":462,"line":3855},185,[460,3857,3858],{"class":466},"        }\n",[460,3860,3862],{"class":462,"line":3861},186,[460,3863,3864],{"class":942},"        \u002F\u002F 渲染函数\n",[460,3866,3868,3871],{"class":462,"line":3867},187,[460,3869,3870],{"class":929},"        render",[460,3872,3873],{"class":466},"(arr)\n",[460,3875,3877],{"class":462,"line":3876},188,[460,3878,552],{"class":466},[460,3880,3882],{"class":462,"line":3881},189,[460,3883,522],{"emptyLinePlaceholder":521},[460,3885,3887],{"class":462,"line":3886},190,[460,3888,1679],{"class":466},[460,3890,3892,3894,3896],{"class":462,"line":3891},191,[460,3893,581],{"class":466},[460,3895,225],{"class":470},[460,3897,473],{"class":466},[460,3899,3901,3903,3905],{"class":462,"line":3900},192,[460,3902,1776],{"class":466},[460,3904,1721],{"class":470},[460,3906,473],{"class":466},[460,3908,3910],{"class":462,"line":3909},193,[460,3911,522],{"emptyLinePlaceholder":521},[460,3913,3915,3917,3919],{"class":462,"line":3914},194,[460,3916,1776],{"class":466},[460,3918,704],{"class":470},[460,3920,473],{"class":466},[18,3922,3924],{"id":3923},"_410-深入了解对象","4.10 深入了解对象",[23,3926,3928],{"id":3927},"_4101-创建对象","4.10.1 创建对象",[14,3930,3931],{},[30,3932],{"alt":32,"src":3933},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-253.png",[14,3935,3936],{},"这个new Object方法创建对象也是一种函数的形式进行创建的，但是这个写法是写死的，只能这样写，它是系统给我们的创造函数",[23,3938,3940],{"id":3939},"_4102-构造函数","4.10.2 构造函数",[14,3942,3943,3947],{},[3944,3945,3946],"strong",{},"构造函数 ："," 是一种特殊的函数，主要用来初始化对象",[14,3949,3950,3953],{},[3944,3951,3952],{},"使用场景："," 常规的 {...} 语法允许创建一个对象。比如我们创建了佩奇的对象，继续创建乔治的对象还需要重新写一 遍，此时可以通过构造函数来快速创建多个类似的对象",[451,3955,3957],{"className":702,"code":3956,"language":704,"meta":32,"style":32},"\u003Cscript>\n\u002F\u002F例：\nfunction Pig(name,age,gender) {\n    this.name=name\n    this.age=age\n    this.gender=gender    \n}\n\u002F\u002F创建佩奇对象\nconst Peppa=new Pig('佩奇',6,'女')\n\u002F\u002F创建乔治对象\nconst George=new Pig('乔治',3,'男')\n\u003C\u002Fscript>\n",[457,3958,3959,3967,3972,3997,4010,4022,4034,4038,4043,4072,4077,4104],{"__ignoreMap":32},[460,3960,3961,3963,3965],{"class":462,"line":463},[460,3962,781],{"class":466},[460,3964,225],{"class":470},[460,3966,473],{"class":466},[460,3968,3969],{"class":462,"line":476},[460,3970,3971],{"class":942},"\u002F\u002F例：\n",[460,3973,3974,3977,3980,3982,3984,3987,3990,3992,3995],{"class":462,"line":482},[460,3975,3976],{"class":887},"function",[460,3978,3979],{"class":929}," Pig",[460,3981,2174],{"class":466},[460,3983,3440],{"class":3380},[460,3985,3986],{"class":466},",",[460,3988,3989],{"class":3380},"age",[460,3991,3986],{"class":466},[460,3993,3994],{"class":3380},"gender",[460,3996,2180],{"class":466},[460,3998,3999,4002,4005,4007],{"class":462,"line":488},[460,4000,4001],{"class":900},"    this",[460,4003,4004],{"class":466},".name",[460,4006,894],{"class":887},[460,4008,4009],{"class":466},"name\n",[460,4011,4012,4014,4017,4019],{"class":462,"line":494},[460,4013,4001],{"class":900},[460,4015,4016],{"class":466},".age",[460,4018,894],{"class":887},[460,4020,4021],{"class":466},"age\n",[460,4023,4024,4026,4029,4031],{"class":462,"line":500},[460,4025,4001],{"class":900},[460,4027,4028],{"class":466},".gender",[460,4030,894],{"class":887},[460,4032,4033],{"class":466},"gender    \n",[460,4035,4036],{"class":462,"line":506},[460,4037,821],{"class":466},[460,4039,4040],{"class":462,"line":512},[460,4041,4042],{"class":942},"\u002F\u002F创建佩奇对象\n",[460,4044,4045,4047,4050,4053,4055,4057,4060,4062,4065,4067,4070],{"class":462,"line":518},[460,4046,888],{"class":887},[460,4048,4049],{"class":900}," Peppa",[460,4051,4052],{"class":887},"=new",[460,4054,3979],{"class":929},[460,4056,2174],{"class":466},[460,4058,4059],{"class":1353},"'佩奇'",[460,4061,3986],{"class":466},[460,4063,4064],{"class":900},"6",[460,4066,3986],{"class":466},[460,4068,4069],{"class":1353},"'女'",[460,4071,3754],{"class":466},[460,4073,4074],{"class":462,"line":525},[460,4075,4076],{"class":942},"\u002F\u002F创建乔治对象\n",[460,4078,4079,4081,4084,4086,4088,4090,4093,4095,4097,4099,4102],{"class":462,"line":531},[460,4080,888],{"class":887},[460,4082,4083],{"class":900}," George",[460,4085,4052],{"class":887},[460,4087,3979],{"class":929},[460,4089,2174],{"class":466},[460,4091,4092],{"class":1353},"'乔治'",[460,4094,3986],{"class":466},[460,4096,913],{"class":900},[460,4098,3986],{"class":466},[460,4100,4101],{"class":1353},"'男'",[460,4103,3754],{"class":466},[460,4105,4106,4108,4110],{"class":462,"line":537},[460,4107,1776],{"class":466},[460,4109,225],{"class":470},[460,4111,473],{"class":466},[14,4113,4114],{},[30,4115],{"alt":32,"src":4116},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-254.png",[14,4118,4119],{},[30,4120],{"alt":32,"src":4121},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-255.png",[14,4123,4124],{},"这里非常重要的点：这里是构造函数来初始化对象， 过一会回来调用Pig，一会要new它，所以this指向的是对象，不是window，this指向的就是对象",[14,4126,4127],{},"无new就是纯函数了，有new说明这个函数是专门用于创建对象的",[14,4129,4130],{},"this.uname=uname 这里的第一uname是属性，第二个uname是形参",[14,4132,4133],{},"在利用对象字面量创建对象和new Object创建对象中都是用的是：不是=",[14,4135,4136],{},"这里用等号是因为：对象.属性=值",[14,4138,4139],{},"①利用对象字面量创建对象",[14,4141,4142],{},"const o={",[14,4144,4145],{},"name:'pink'",[14,4147,4148],{},"} ②利用new Object创建对象",[14,4150,4151],{},"const o=new Object({name:'pink'})",[14,4153,4154],{},"构造函数内部不需要写return，构造函数自动返回创建的新的对象",[14,4156,4157],{},"构造函数创建对象的执行过程：",[14,4159,4160],{},[30,4161],{"alt":32,"src":4162},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-256.png",[23,4164,4166],{"id":4165},"_4103-实例成员","4.10.3 实例成员",[14,4168,4169],{},"通过构造函数创建的对象称为实例对象，实例对象中的属性和方法称为实例成员",[103,4171,4172,4175,4178],{},[43,4173,4174],{},"实例对象的属性和方法即为实例成员",[43,4176,4177],{},"为构造函数传入参数，动态创建结构相同但值不同的对象",[43,4179,4180],{},"构造函数创建的实例对象彼此独立互不影响",[23,4182,4184],{"id":4183},"_4104-静态成员","4.10.4 静态成员",[14,4186,4187],{},[30,4188],{"alt":32,"src":4189},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-257.png",[14,4191,4192],{},"静态成员有Date.now() Math.PI Math.random()",[14,4194,4195],{},"构造函数理解为一个特殊的对象，给这个对象添加的属性和方法就是静态成员",[14,4197,4198],{},"对象的属性和方法只能该对象使用，该对象方法中的this指向的就是该对象（构造函数）",[14,4200,4201],{},"function Pig(name) n {",[14,4203,4204],{},"this.name=name",[14,4206,612],{},[14,4208,4209],{},"Pig.eyes=2",[14,4211,4212],{},"Pig.sayHai=function () { console.log(this) }",[14,4214,4215],{},"Pig.sayHai() \u002F\u002F指向就是构造函数",[14,4217,4218],{},"console.log(Pig.eyes) \u002F\u002F2",[14,4220,433],{},[103,4222,4223,4226,4229,4232,4235],{},[43,4224,4225],{},"实例对象的属性和方法即为实例成员；实例对象相互独立，实例成员当前实例对象使用",[43,4227,4228],{},"静态成员是写在构造函数身上的，构造函数的属性和方法被称为静态成员；静态成员只能函数访问",[43,4230,4231],{},"构造函数内部的属性不是静态成员，内部是通过this.属性名=值，它是给实例对象创建的",[43,4233,4234],{},"构造函数外部创建的，构造函数名.属性名=值 是静态成员",[43,4236,4237],{},"实例对象无法访问静态成员，静态成员只依附在这个构造函数上",[14,4239,4240],{},"自己的理解：构造函数可以认为是一个升级版的函数，它就是一个对象",[23,4242,4244],{"id":4243},"_4105-内置构造函数","4.10.5 内置构造函数",[14,4246,4247],{},"内置构造函数包含：",[14,4249,4250],{},[30,4251],{"alt":32,"src":4252},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-258.png",[14,4254,4255],{},[30,4256],{"alt":32,"src":4257},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-259.png",[14,4259,4260],{},"这些基本数据类型，js对他们进行了包装",[225,4262,4263],{},"\n\n\u002F\u002F const str = 'pink'\n\nconsole.log(str.length)\n\nconst num = 12\n\n\u002F\u002F toFixed()是保留几位小数\n\nconsole.log(num.toFixed(2))\n\n\u002F\u002F 虽然写了const str='pink'\n\n\u002F\u002F 但是内部是按照下面的形式进行执行的：\n\n\u002F\u002Fjs底层完成的，把简单数据类型包装为了复杂数据类型，就是把他转化为了对象，就可以直接使用它的属性和方法了，下面这行代码是不需要自己写的\n\nconst str = String('pink')\n\n",[115,4265,4267],{"id":4266},"_41051-object","4.10.5.1 Object",[14,4269,4270],{},"Object 是内置的构造函数，用于创建普通对象",[14,4272,4273],{},"平时最好还是使用字面量的形式声明对象，而不是使用Object这个这个内置函数",[451,4275,4277],{"className":702,"code":4276,"language":704,"meta":32,"style":32},"const user=new Object({name:'小明',age:15})\n",[457,4278,4279],{"__ignoreMap":32},[460,4280,4281],{"class":462,"line":463},[460,4282,4276],{"class":466},[14,4284,4285],{},"三个常用的静态方法：",[4287,4288,4290],"h5",{"id":4289},"_410511-objectkeys和objectvalues","4.10.5.1.1 Object.keys和Object.values",[14,4292,4293],{},"它是创建对象那个构造函数里边的静态方法，是一个静态成员，使用的时候是函数名.方法（）",[14,4295,4296],{},[30,4297],{"alt":32,"src":4298},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-260.png",[14,4300,4301],{},[30,4302],{"alt":32,"src":4303},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-261.png",[451,4305,4307],{"className":453,"code":4306,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const o = { name: 'pink', age: 6 }\n    \u002F\u002F 获得所有属性名\n    const arr = Object.keys(o)\n    console.log(arr)\n    \u002F\u002F 获得所有属性值\n    console.log(Object.values(o))\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,4308,4309,4317,4325,4330,4335,4340,4345,4350,4355,4363],{"__ignoreMap":32},[460,4310,4311,4313,4315],{"class":462,"line":463},[460,4312,781],{"class":466},[460,4314,1721],{"class":470},[460,4316,473],{"class":466},[460,4318,4319,4321,4323],{"class":462,"line":476},[460,4320,467],{"class":466},[460,4322,225],{"class":470},[460,4324,473],{"class":466},[460,4326,4327],{"class":462,"line":482},[460,4328,4329],{"class":466},"    const o = { name: 'pink', age: 6 }\n",[460,4331,4332],{"class":462,"line":488},[460,4333,4334],{"class":466},"    \u002F\u002F 获得所有属性名\n",[460,4336,4337],{"class":462,"line":494},[460,4338,4339],{"class":466},"    const arr = Object.keys(o)\n",[460,4341,4342],{"class":462,"line":500},[460,4343,4344],{"class":466},"    console.log(arr)\n",[460,4346,4347],{"class":462,"line":506},[460,4348,4349],{"class":466},"    \u002F\u002F 获得所有属性值\n",[460,4351,4352],{"class":462,"line":512},[460,4353,4354],{"class":466},"    console.log(Object.values(o))\n",[460,4356,4357,4359,4361],{"class":462,"line":518},[460,4358,581],{"class":466},[460,4360,225],{"class":470},[460,4362,473],{"class":466},[460,4364,4365,4367,4369],{"class":462,"line":525},[460,4366,1776],{"class":466},[460,4368,1721],{"class":470},[460,4370,473],{"class":466},[4287,4372,4374],{"id":4373},"_410512-object-assign","4.10.5.1.2 Object. assign",[14,4376,4377],{},"Object.assign(oo,o)",[14,4379,4380],{},"后的东西添加给前 是追加",[14,4382,4383],{},[30,4384],{"alt":32,"src":4385},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-262.png",[14,4387,4388],{},[30,4389],{"alt":32,"src":4390},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-263.png",[451,4392,4394],{"className":453,"code":4393,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const o = { name: 'pink', age: 6 }\n    \u002F\u002F 获得所有属性名\n    const arr = Object.keys(o)\n    console.log(arr)\n    \u002F\u002F 获得所有属性值\n    console.log(Object.values(o))\n    const oo = {}\n    Object.assign(oo, o)\n    console.log(oo)\n    Object.assign(o, { gender: '女' })\n    console.log(o)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,4395,4396,4404,4412,4416,4420,4424,4428,4432,4436,4441,4446,4451,4456,4461,4469],{"__ignoreMap":32},[460,4397,4398,4400,4402],{"class":462,"line":463},[460,4399,781],{"class":466},[460,4401,1721],{"class":470},[460,4403,473],{"class":466},[460,4405,4406,4408,4410],{"class":462,"line":476},[460,4407,467],{"class":466},[460,4409,225],{"class":470},[460,4411,473],{"class":466},[460,4413,4414],{"class":462,"line":482},[460,4415,4329],{"class":466},[460,4417,4418],{"class":462,"line":488},[460,4419,4334],{"class":466},[460,4421,4422],{"class":462,"line":494},[460,4423,4339],{"class":466},[460,4425,4426],{"class":462,"line":500},[460,4427,4344],{"class":466},[460,4429,4430],{"class":462,"line":506},[460,4431,4349],{"class":466},[460,4433,4434],{"class":462,"line":512},[460,4435,4354],{"class":466},[460,4437,4438],{"class":462,"line":518},[460,4439,4440],{"class":466},"    const oo = {}\n",[460,4442,4443],{"class":462,"line":525},[460,4444,4445],{"class":466},"    Object.assign(oo, o)\n",[460,4447,4448],{"class":462,"line":531},[460,4449,4450],{"class":466},"    console.log(oo)\n",[460,4452,4453],{"class":462,"line":537},[460,4454,4455],{"class":466},"    Object.assign(o, { gender: '女' })\n",[460,4457,4458],{"class":462,"line":543},[460,4459,4460],{"class":466},"    console.log(o)\n",[460,4462,4463,4465,4467],{"class":462,"line":549},[460,4464,581],{"class":466},[460,4466,225],{"class":470},[460,4468,473],{"class":466},[460,4470,4471,4473,4475],{"class":462,"line":555},[460,4472,1776],{"class":466},[460,4474,1721],{"class":470},[460,4476,473],{"class":466},[14,4478,4479],{},[30,4480],{"alt":32,"src":4481},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-264.png",[115,4483,4485],{"id":4484},"_41052-array","4.10.5.2 Array",[14,4487,4488],{},"Array 是内置的构造函数，用于创建数组",[14,4490,4491],{},"这个也是平时最好使用字面量的方式创建数组，而不是使用Array构造函数创建",[451,4493,4495],{"className":702,"code":4494,"language":704,"meta":32,"style":32},"const arr=new Array(3,5)\nconsole.log(arr)  \u002F\u002F[3,5]\n",[457,4496,4497,4502],{"__ignoreMap":32},[460,4498,4499],{"class":462,"line":463},[460,4500,4501],{"class":466},"const arr=new Array(3,5)\n",[460,4503,4504],{"class":462,"line":476},[460,4505,4506],{"class":466},"console.log(arr)  \u002F\u002F[3,5]\n",[14,4508,4509],{},"Array的实例方法，这个方法是实例成员",[14,4511,4512],{},[30,4513],{"alt":32,"src":4514},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-265.png",[4287,4516,4518],{"id":4517},"_410521-reduce","4.10.5.2.1 reduce",[14,4520,4521],{},[30,4522],{"alt":32,"src":4523},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-266.png",[451,4525,4527],{"className":453,"code":4526,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const arr = [1, 5, 8]\n    \u002F\u002F 1.没有初始值\n    const total = arr.reduce(function (prev, current) {\n      return prev + current\n    })\n    console.log(total)   \u002F\u002F14\n    \u002F\u002F 2.有初始值\n    const total1 = arr.reduce(function (prev, current) {\n      return prev + current\n    }, 10)\n    console.log(total1)  \u002F\u002F14+10=24 最后结果为24\n\n    \u002F\u002F 3.箭头函数写法\n    const total2 = arr.reduce((prev, current) => prev + current, 10)\n    console.log(total2)   \u002F\u002F24\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,4528,4529,4537,4545,4550,4555,4560,4565,4569,4574,4579,4584,4588,4593,4598,4602,4607,4612,4617,4625],{"__ignoreMap":32},[460,4530,4531,4533,4535],{"class":462,"line":463},[460,4532,781],{"class":466},[460,4534,1721],{"class":470},[460,4536,473],{"class":466},[460,4538,4539,4541,4543],{"class":462,"line":476},[460,4540,467],{"class":466},[460,4542,225],{"class":470},[460,4544,473],{"class":466},[460,4546,4547],{"class":462,"line":482},[460,4548,4549],{"class":466},"    const arr = [1, 5, 8]\n",[460,4551,4552],{"class":462,"line":488},[460,4553,4554],{"class":466},"    \u002F\u002F 1.没有初始值\n",[460,4556,4557],{"class":462,"line":494},[460,4558,4559],{"class":466},"    const total = arr.reduce(function (prev, current) {\n",[460,4561,4562],{"class":462,"line":500},[460,4563,4564],{"class":466},"      return prev + current\n",[460,4566,4567],{"class":462,"line":506},[460,4568,1679],{"class":466},[460,4570,4571],{"class":462,"line":512},[460,4572,4573],{"class":466},"    console.log(total)   \u002F\u002F14\n",[460,4575,4576],{"class":462,"line":518},[460,4577,4578],{"class":466},"    \u002F\u002F 2.有初始值\n",[460,4580,4581],{"class":462,"line":525},[460,4582,4583],{"class":466},"    const total1 = arr.reduce(function (prev, current) {\n",[460,4585,4586],{"class":462,"line":531},[460,4587,4564],{"class":466},[460,4589,4590],{"class":462,"line":537},[460,4591,4592],{"class":466},"    }, 10)\n",[460,4594,4595],{"class":462,"line":543},[460,4596,4597],{"class":466},"    console.log(total1)  \u002F\u002F14+10=24 最后结果为24\n",[460,4599,4600],{"class":462,"line":549},[460,4601,522],{"emptyLinePlaceholder":521},[460,4603,4604],{"class":462,"line":555},[460,4605,4606],{"class":466},"    \u002F\u002F 3.箭头函数写法\n",[460,4608,4609],{"class":462,"line":560},[460,4610,4611],{"class":466},"    const total2 = arr.reduce((prev, current) => prev + current, 10)\n",[460,4613,4614],{"class":462,"line":566},[460,4615,4616],{"class":466},"    console.log(total2)   \u002F\u002F24\n",[460,4618,4619,4621,4623],{"class":462,"line":572},[460,4620,581],{"class":466},[460,4622,225],{"class":470},[460,4624,473],{"class":466},[460,4626,4627,4629,4631],{"class":462,"line":578},[460,4628,1776],{"class":466},[460,4630,1721],{"class":470},[460,4632,473],{"class":466},[14,4634,4635],{},"执行过程：",[103,4637,4638,4641,4644],{},[43,4639,4640],{},"如果没有起始值，则上一次值以数组的第一个数组元素的值",[43,4642,4643],{},"每一次循环，把返回值给作为下一次循环的上一次值",[43,4645,4646],{},"如果有起始值，则起始值作为上一次值",[451,4648,4650],{"className":453,"code":4649,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const arr = [1, 5, 8]\n    \u002F\u002F 1.没有初始值\n    const total = arr.reduce(function (prev, current) {\n      return prev + current\n    })\n    console.log(total)   \u002F\u002F14\n    \u002F\u002F 上一次值         当前值           返回值（第一次循环）\n    \u002F\u002F     1              5                    6\n    \u002F\u002F 上一次值         当前值           返回值（第二次循环）\n    \u002F\u002F     6              8                    14\n    \u002F\u002F 无初始值时，循环次数是比数组长度小一的\n    \u002F\u002F 2.有初始值\n    const total1 = arr.reduce(function (prev, current) {\n      return prev + current\n    }, 10)\n    console.log(total1)  \u002F\u002F14+10=24 最后结果为24\n    \u002F\u002F 上一次值         当前值           返回值（第一次循环）\n    \u002F\u002F     10             1                     11\n    \u002F\u002F 上一次值         当前值           返回值（第二次循环）\n    \u002F\u002F     11             5                    16\n    \u002F\u002F 上一次值         当前值           返回值（第二次循环）\n    \u002F\u002F     16             8                    24\n    \u002F\u002F 有初始值时循环次数就是数组的长度\n    \u002F\u002F 3.箭头函数写法\n    const total2 = arr.reduce((prev, current) => prev + current, 10)\n    console.log(total2)   \u002F\u002F24\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,4651,4652,4660,4668,4672,4676,4680,4684,4688,4692,4697,4702,4707,4712,4717,4721,4725,4729,4733,4737,4741,4746,4750,4755,4759,4764,4769,4773,4777,4781,4789],{"__ignoreMap":32},[460,4653,4654,4656,4658],{"class":462,"line":463},[460,4655,781],{"class":466},[460,4657,1721],{"class":470},[460,4659,473],{"class":466},[460,4661,4662,4664,4666],{"class":462,"line":476},[460,4663,467],{"class":466},[460,4665,225],{"class":470},[460,4667,473],{"class":466},[460,4669,4670],{"class":462,"line":482},[460,4671,4549],{"class":466},[460,4673,4674],{"class":462,"line":488},[460,4675,4554],{"class":466},[460,4677,4678],{"class":462,"line":494},[460,4679,4559],{"class":466},[460,4681,4682],{"class":462,"line":500},[460,4683,4564],{"class":466},[460,4685,4686],{"class":462,"line":506},[460,4687,1679],{"class":466},[460,4689,4690],{"class":462,"line":512},[460,4691,4573],{"class":466},[460,4693,4694],{"class":462,"line":518},[460,4695,4696],{"class":466},"    \u002F\u002F 上一次值         当前值           返回值（第一次循环）\n",[460,4698,4699],{"class":462,"line":525},[460,4700,4701],{"class":466},"    \u002F\u002F     1              5                    6\n",[460,4703,4704],{"class":462,"line":531},[460,4705,4706],{"class":466},"    \u002F\u002F 上一次值         当前值           返回值（第二次循环）\n",[460,4708,4709],{"class":462,"line":537},[460,4710,4711],{"class":466},"    \u002F\u002F     6              8                    14\n",[460,4713,4714],{"class":462,"line":543},[460,4715,4716],{"class":466},"    \u002F\u002F 无初始值时，循环次数是比数组长度小一的\n",[460,4718,4719],{"class":462,"line":549},[460,4720,4578],{"class":466},[460,4722,4723],{"class":462,"line":555},[460,4724,4583],{"class":466},[460,4726,4727],{"class":462,"line":560},[460,4728,4564],{"class":466},[460,4730,4731],{"class":462,"line":566},[460,4732,4592],{"class":466},[460,4734,4735],{"class":462,"line":572},[460,4736,4597],{"class":466},[460,4738,4739],{"class":462,"line":578},[460,4740,4696],{"class":466},[460,4742,4743],{"class":462,"line":812},[460,4744,4745],{"class":466},"    \u002F\u002F     10             1                     11\n",[460,4747,4748],{"class":462,"line":818},[460,4749,4706],{"class":466},[460,4751,4752],{"class":462,"line":824},[460,4753,4754],{"class":466},"    \u002F\u002F     11             5                    16\n",[460,4756,4757],{"class":462,"line":2074},[460,4758,4706],{"class":466},[460,4760,4761],{"class":462,"line":2088},[460,4762,4763],{"class":466},"    \u002F\u002F     16             8                    24\n",[460,4765,4766],{"class":462,"line":2103},[460,4767,4768],{"class":466},"    \u002F\u002F 有初始值时循环次数就是数组的长度\n",[460,4770,4771],{"class":462,"line":2122},[460,4772,4606],{"class":466},[460,4774,4775],{"class":462,"line":2144},[460,4776,4611],{"class":466},[460,4778,4779],{"class":462,"line":2158},[460,4780,4616],{"class":466},[460,4782,4783,4785,4787],{"class":462,"line":2163},[460,4784,581],{"class":466},[460,4786,225],{"class":470},[460,4788,473],{"class":466},[460,4790,4791,4793,4795],{"class":462,"line":2168},[460,4792,1776],{"class":466},[460,4794,1721],{"class":470},[460,4796,473],{"class":466},[4287,4798,4800],{"id":4799},"_410522-员工涨薪案例","4.10.5.2.2 员工涨薪案例",[14,4802,4803],{},[30,4804],{"alt":32,"src":4805},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-267.png",[451,4807,4809],{"className":453,"code":4808,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const arr = [\n      { name: '张三', salary: 10000 },\n      { name: '李四', salary: 10000 },\n      { name: '王五', salary: 10000 }\n    ]\n    \u002F\u002F 如果是个数组对象的话从0开始，起始值设为0，不然从数组第一个开始的话，就是加一个对象了\n    \u002F\u002F prev是累计值\n    const total = arr.reduce((prev, current) => prev + current.salary * 1.3, 0)\n    console.log(total)\n    \u002F\u002F 上一次值        当前值       返回值（第一次遍历）\n    \u002F\u002F    0       10000*1.3=13000       13000\n    \u002F\u002F 上一次值        当前值       返回值（第一次遍历）\n    \u002F\u002F  13000     10000*1.3=13000       26000\n    \u002F\u002F 上一次值        当前值       返回值（第一次遍历）\n    \u002F\u002F  26000     10000*1.3=13000       39000\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,4810,4811,4819,4827,4832,4837,4842,4847,4851,4856,4861,4866,4871,4876,4881,4885,4890,4894,4899,4907],{"__ignoreMap":32},[460,4812,4813,4815,4817],{"class":462,"line":463},[460,4814,781],{"class":466},[460,4816,1721],{"class":470},[460,4818,473],{"class":466},[460,4820,4821,4823,4825],{"class":462,"line":476},[460,4822,467],{"class":466},[460,4824,225],{"class":470},[460,4826,473],{"class":466},[460,4828,4829],{"class":462,"line":482},[460,4830,4831],{"class":466},"    const arr = [\n",[460,4833,4834],{"class":462,"line":488},[460,4835,4836],{"class":466},"      { name: '张三', salary: 10000 },\n",[460,4838,4839],{"class":462,"line":494},[460,4840,4841],{"class":466},"      { name: '李四', salary: 10000 },\n",[460,4843,4844],{"class":462,"line":500},[460,4845,4846],{"class":466},"      { name: '王五', salary: 10000 }\n",[460,4848,4849],{"class":462,"line":506},[460,4850,3355],{"class":466},[460,4852,4853],{"class":462,"line":512},[460,4854,4855],{"class":466},"    \u002F\u002F 如果是个数组对象的话从0开始，起始值设为0，不然从数组第一个开始的话，就是加一个对象了\n",[460,4857,4858],{"class":462,"line":518},[460,4859,4860],{"class":466},"    \u002F\u002F prev是累计值\n",[460,4862,4863],{"class":462,"line":525},[460,4864,4865],{"class":466},"    const total = arr.reduce((prev, current) => prev + current.salary * 1.3, 0)\n",[460,4867,4868],{"class":462,"line":531},[460,4869,4870],{"class":466},"    console.log(total)\n",[460,4872,4873],{"class":462,"line":537},[460,4874,4875],{"class":466},"    \u002F\u002F 上一次值        当前值       返回值（第一次遍历）\n",[460,4877,4878],{"class":462,"line":543},[460,4879,4880],{"class":466},"    \u002F\u002F    0       10000*1.3=13000       13000\n",[460,4882,4883],{"class":462,"line":549},[460,4884,4875],{"class":466},[460,4886,4887],{"class":462,"line":555},[460,4888,4889],{"class":466},"    \u002F\u002F  13000     10000*1.3=13000       26000\n",[460,4891,4892],{"class":462,"line":560},[460,4893,4875],{"class":466},[460,4895,4896],{"class":462,"line":566},[460,4897,4898],{"class":466},"    \u002F\u002F  26000     10000*1.3=13000       39000\n",[460,4900,4901,4903,4905],{"class":462,"line":572},[460,4902,581],{"class":466},[460,4904,225],{"class":470},[460,4906,473],{"class":466},[460,4908,4909,4911,4913],{"class":462,"line":578},[460,4910,1776],{"class":466},[460,4912,1721],{"class":470},[460,4914,473],{"class":466},[4287,4916,4918],{"id":4917},"_410523-array的其他方法","4.10.5.2.3 Array的其他方法",[14,4920,4921],{},[30,4922],{"alt":32,"src":4923},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-268.png",[14,4925,4926],{},[30,4927],{"alt":32,"src":4928},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-269.png",[103,4930,4931],{},[43,4932,4933],{},"find()",[14,4935,4936],{},"循环查找，找到第一个就ok",[14,4938,4939],{},[2756,4940,4944],{"href":4941,"rel":4942},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal%5C_Objects\u002FArray\u002Ffind",[4943],"nofollow","https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal\\_Objects\u002FArray\u002Ffind",[451,4946,4948],{"className":702,"code":4947,"language":704,"meta":32,"style":32},"const array1 = [5, 12, 8, 130, 44]\nconst found = array1.find((element) => element > 10)\nconsole.log(found)  \u002F\u002F12\n",[457,4949,4950,4955,4960],{"__ignoreMap":32},[460,4951,4952],{"class":462,"line":463},[460,4953,4954],{"class":466},"const array1 = [5, 12, 8, 130, 44]\n",[460,4956,4957],{"class":462,"line":476},[460,4958,4959],{"class":466},"const found = array1.find((element) => element > 10)\n",[460,4961,4962],{"class":462,"line":482},[460,4963,4964],{"class":466},"console.log(found)  \u002F\u002F12\n",[14,4966,4967,4969,4970,4975,4976,4979,4980,4982,4983,4988,4989,4991,4992,4994,4995,4997,4998],{},[457,4968,4933],{}," 方法是一个",[2756,4971,4974],{"href":4972,"rel":4973},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FArray#%E8%BF%AD%E4%BB%A3%E6%96%B9%E6%B3%95",[4943],"迭代方法","。它按索引升序顺序为数组中的每个元素调用提供的 ",[457,4977,4978],{},"callbackFn"," 函数，直到 ",[457,4981,4978],{}," 返回一个",[2756,4984,4987],{"href":4985,"rel":4986},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FGlossary\u002FTruthy",[4943],"真值","。然后 ",[457,4990,4933],{}," 返回该元素并停止迭代数组。如果 ",[457,4993,4978],{}," 从未返回真值，则 ",[457,4996,4933],{}," 返回 ",[457,4999,5000],{},"[undefined](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002Fundefined)",[451,5002,5004],{"className":453,"code":5003,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const arr = ['red', 'blue', 'green']\n    const found = arr.find(item => item === 'pink')\n    console.log(found)   \u002F\u002F没有，输出undefined\n\n    \u002F\u002F 使用场景，用于查找数据\n    const arr1 = [\n      {\n        name: '小米',\n        price: 1999\n      },\n      {\n        name: '华为',\n        price: 3999\n      }\n    ]\n    \u002F\u002F 这小米这个对象，并且返回这个对象\n    \u002F\u002F const found1 = arr1.find(item => {\n    \u002F\u002F   if (item.name === '小米') {\n    \u002F\u002F     return item\n    \u002F\u002F   }\n    \u002F\u002F })\n    \u002F\u002F 另一种写法\n    const found1 = arr1.find(item => {\n      \u002F\u002F 这个return是为了在找到小米之后退出函数，但是这个函数返回的是包含小米的这个对象\n      return item.name = '小米'\n    })\n    console.log(found1)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n",[457,5005,5006,5014,5022,5027,5032,5037,5041,5046,5051,5055,5060,5065,5069,5073,5078,5083,5087,5091,5096,5101,5106,5111,5116,5121,5126,5131,5136,5141,5145,5150,5158],{"__ignoreMap":32},[460,5007,5008,5010,5012],{"class":462,"line":463},[460,5009,781],{"class":466},[460,5011,1721],{"class":470},[460,5013,473],{"class":466},[460,5015,5016,5018,5020],{"class":462,"line":476},[460,5017,467],{"class":466},[460,5019,225],{"class":470},[460,5021,473],{"class":466},[460,5023,5024],{"class":462,"line":482},[460,5025,5026],{"class":466},"    const arr = ['red', 'blue', 'green']\n",[460,5028,5029],{"class":462,"line":488},[460,5030,5031],{"class":466},"    const found = arr.find(item => item === 'pink')\n",[460,5033,5034],{"class":462,"line":494},[460,5035,5036],{"class":466},"    console.log(found)   \u002F\u002F没有，输出undefined\n",[460,5038,5039],{"class":462,"line":500},[460,5040,522],{"emptyLinePlaceholder":521},[460,5042,5043],{"class":462,"line":506},[460,5044,5045],{"class":466},"    \u002F\u002F 使用场景，用于查找数据\n",[460,5047,5048],{"class":462,"line":512},[460,5049,5050],{"class":466},"    const arr1 = [\n",[460,5052,5053],{"class":462,"line":518},[460,5054,2951],{"class":466},[460,5056,5057],{"class":462,"line":525},[460,5058,5059],{"class":466},"        name: '小米',\n",[460,5061,5062],{"class":462,"line":531},[460,5063,5064],{"class":466},"        price: 1999\n",[460,5066,5067],{"class":462,"line":537},[460,5068,1293],{"class":466},[460,5070,5071],{"class":462,"line":543},[460,5072,2951],{"class":466},[460,5074,5075],{"class":462,"line":549},[460,5076,5077],{"class":466},"        name: '华为',\n",[460,5079,5080],{"class":462,"line":555},[460,5081,5082],{"class":466},"        price: 3999\n",[460,5084,5085],{"class":462,"line":560},[460,5086,552],{"class":466},[460,5088,5089],{"class":462,"line":566},[460,5090,3355],{"class":466},[460,5092,5093],{"class":462,"line":572},[460,5094,5095],{"class":466},"    \u002F\u002F 这小米这个对象，并且返回这个对象\n",[460,5097,5098],{"class":462,"line":578},[460,5099,5100],{"class":466},"    \u002F\u002F const found1 = arr1.find(item => {\n",[460,5102,5103],{"class":462,"line":812},[460,5104,5105],{"class":466},"    \u002F\u002F   if (item.name === '小米') {\n",[460,5107,5108],{"class":462,"line":818},[460,5109,5110],{"class":466},"    \u002F\u002F     return item\n",[460,5112,5113],{"class":462,"line":824},[460,5114,5115],{"class":466},"    \u002F\u002F   }\n",[460,5117,5118],{"class":462,"line":2074},[460,5119,5120],{"class":466},"    \u002F\u002F })\n",[460,5122,5123],{"class":462,"line":2088},[460,5124,5125],{"class":466},"    \u002F\u002F 另一种写法\n",[460,5127,5128],{"class":462,"line":2103},[460,5129,5130],{"class":466},"    const found1 = arr1.find(item => {\n",[460,5132,5133],{"class":462,"line":2122},[460,5134,5135],{"class":466},"      \u002F\u002F 这个return是为了在找到小米之后退出函数，但是这个函数返回的是包含小米的这个对象\n",[460,5137,5138],{"class":462,"line":2144},[460,5139,5140],{"class":466},"      return item.name = '小米'\n",[460,5142,5143],{"class":462,"line":2158},[460,5144,1679],{"class":466},[460,5146,5147],{"class":462,"line":2163},[460,5148,5149],{"class":466},"    console.log(found1)\n",[460,5151,5152,5154,5156],{"class":462,"line":2168},[460,5153,581],{"class":466},[460,5155,225],{"class":470},[460,5157,473],{"class":466},[460,5159,5160,5162,5164],{"class":462,"line":2183},[460,5161,1776],{"class":466},[460,5163,1721],{"class":470},[460,5165,473],{"class":466},[14,5167,5168],{},[30,5169],{"alt":32,"src":5170},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-270.png",[14,5172,5173],{},"上面还可以进一步的省略，写为：const found1 = arr1.find(item => item.name === '小米')",[103,5175,5176],{"start":476},[43,5177,5178],{},"every()返回的是布尔值",[14,5180,5181],{},[2756,5182,5185],{"href":5183,"rel":5184},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal%5C_Objects\u002FArray\u002Fevery",[4943],"https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal\\_Objects\u002FArray\u002Fevery",[14,5187,5188],{},"filter是筛选之后返回的是数组，every()返回的是筛选后的布尔值",[14,5190,5191],{},"some是只有有一个就没问题",[14,5193,5194],{},"every是必须全是才行",[451,5196,5200],{"className":5197,"code":5198,"language":5199,"meta":32,"style":32},"language-sql shiki shiki-themes github-light github-dark","function isBigEnough(element, index, array) {\n  return element >= 10;\n}\n[12, 5, 8, 130, 44].every(isBigEnough); \u002F\u002F false\n[12, 54, 18, 130, 44].every(isBigEnough); \u002F\u002F true\n","sql",[457,5201,5202,5219,5234,5238,5249],{"__ignoreMap":32},[460,5203,5204,5206,5209,5212,5214,5217],{"class":462,"line":463},[460,5205,3976],{"class":887},[460,5207,5208],{"class":466}," isBigEnough(element, ",[460,5210,5211],{"class":887},"index",[460,5213,904],{"class":466},[460,5215,5216],{"class":887},"array",[460,5218,2180],{"class":466},[460,5220,5221,5224,5227,5229,5232],{"class":462,"line":476},[460,5222,5223],{"class":887},"  return",[460,5225,5226],{"class":466}," element ",[460,5228,3738],{"class":887},[460,5230,5231],{"class":900}," 10",[460,5233,1966],{"class":466},[460,5235,5236],{"class":462,"line":482},[460,5237,821],{"class":466},[460,5239,5240,5243,5246],{"class":462,"line":488},[460,5241,5242],{"class":466},"[12, 5, 8, 130, 44].every(isBigEnough); ",[460,5244,5245],{"class":887},"\u002F\u002F",[460,5247,5248],{"class":466}," false\n",[460,5250,5251,5254,5256],{"class":462,"line":494},[460,5252,5253],{"class":466},"[12, 54, 18, 130, 44].every(isBigEnough); ",[460,5255,5245],{"class":887},[460,5257,5258],{"class":466}," true\n",[451,5260,5262],{"className":453,"code":5261,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    \u002F\u002F every 每个是否都符合条件，如果都符合返回true，否则返回false\n    const arr = [10, 20, 30]\n    const flag = arr.every(item => item >= 10)\n    console.log(flag)    \u002F\u002Ftrue\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,5263,5264,5272,5280,5285,5289,5294,5299,5307],{"__ignoreMap":32},[460,5265,5266,5268,5270],{"class":462,"line":463},[460,5267,781],{"class":466},[460,5269,1721],{"class":470},[460,5271,473],{"class":466},[460,5273,5274,5276,5278],{"class":462,"line":476},[460,5275,467],{"class":466},[460,5277,225],{"class":470},[460,5279,473],{"class":466},[460,5281,5282],{"class":462,"line":482},[460,5283,5284],{"class":466},"    \u002F\u002F every 每个是否都符合条件，如果都符合返回true，否则返回false\n",[460,5286,5287],{"class":462,"line":488},[460,5288,1736],{"class":466},[460,5290,5291],{"class":462,"line":494},[460,5292,5293],{"class":466},"    const flag = arr.every(item => item >= 10)\n",[460,5295,5296],{"class":462,"line":500},[460,5297,5298],{"class":466},"    console.log(flag)    \u002F\u002Ftrue\n",[460,5300,5301,5303,5305],{"class":462,"line":506},[460,5302,581],{"class":466},[460,5304,225],{"class":470},[460,5306,473],{"class":466},[460,5308,5309,5311,5313],{"class":462,"line":512},[460,5310,1776],{"class":466},[460,5312,1721],{"class":470},[460,5314,473],{"class":466},[451,5316,5318],{"className":453,"code":5317,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    \u002F\u002F every 每个是否都符合条件，如果都符合返回true，否则返回false\n    const arr = [10, 0, 5]\n    const flag = arr.some(item => item >= 10)\n    console.log(flag)   \u002F\u002Ftrue\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,5319,5320,5328,5336,5340,5345,5350,5355,5363],{"__ignoreMap":32},[460,5321,5322,5324,5326],{"class":462,"line":463},[460,5323,781],{"class":466},[460,5325,1721],{"class":470},[460,5327,473],{"class":466},[460,5329,5330,5332,5334],{"class":462,"line":476},[460,5331,467],{"class":466},[460,5333,225],{"class":470},[460,5335,473],{"class":466},[460,5337,5338],{"class":462,"line":482},[460,5339,5284],{"class":466},[460,5341,5342],{"class":462,"line":488},[460,5343,5344],{"class":466},"    const arr = [10, 0, 5]\n",[460,5346,5347],{"class":462,"line":494},[460,5348,5349],{"class":466},"    const flag = arr.some(item => item >= 10)\n",[460,5351,5352],{"class":462,"line":500},[460,5353,5354],{"class":466},"    console.log(flag)   \u002F\u002Ftrue\n",[460,5356,5357,5359,5361],{"class":462,"line":506},[460,5358,581],{"class":466},[460,5360,225],{"class":470},[460,5362,473],{"class":466},[460,5364,5365,5367,5369],{"class":462,"line":512},[460,5366,1776],{"class":466},[460,5368,1721],{"class":470},[460,5370,473],{"class":466},[4287,5372,5374],{"id":5373},"_410524-处理数据案例","4.10.5.2.4 处理数据案例",[14,5376,5377],{},[30,5378],{"alt":32,"src":5379},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-271.png",[451,5381,5383],{"className":702,"code":5382,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    div {\n      width: 200px;\n      height: 40px;\n      line-height: 40px;\n      font: 12px;\n      text-align: center;\n      background-color: pink;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv>\u003C\u002Fdiv>\n  \u003Cscript>\n    const spec = { size: '40cm*40cm', color: '黑色' }\n    \u002F\u002F const arr = Object.values(spec)\n    \u002F\u002F document.querySelector('div').innerHTML = arr.join('\u002F')\n    document.querySelector('div').innerHTML = Object.values(spec).join('\u002F')\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,5384,5385,5395,5409,5413,5421,5435,5455,5467,5475,5482,5495,5509,5522,5536,5548,5559,5563,5571,5579,5583,5591,5604,5612,5636,5641,5646,5680,5688,5696,5700],{"__ignoreMap":32},[460,5386,5387,5389,5391,5393],{"class":462,"line":463},[460,5388,1845],{"class":466},[460,5390,1848],{"class":470},[460,5392,1851],{"class":929},[460,5394,473],{"class":466},[460,5396,5397,5399,5401,5403,5405,5407],{"class":462,"line":476},[460,5398,781],{"class":466},[460,5400,704],{"class":470},[460,5402,1862],{"class":929},[460,5404,894],{"class":466},[460,5406,1867],{"class":1353},[460,5408,473],{"class":466},[460,5410,5411],{"class":462,"line":482},[460,5412,522],{"emptyLinePlaceholder":521},[460,5414,5415,5417,5419],{"class":462,"line":488},[460,5416,781],{"class":466},[460,5418,1880],{"class":470},[460,5420,473],{"class":466},[460,5422,5423,5425,5427,5429,5431,5433],{"class":462,"line":494},[460,5424,467],{"class":466},[460,5426,1889],{"class":470},[460,5428,1892],{"class":929},[460,5430,894],{"class":466},[460,5432,1897],{"class":1353},[460,5434,473],{"class":466},[460,5436,5437,5439,5441,5443,5445,5447,5449,5451,5453],{"class":462,"line":500},[460,5438,467],{"class":466},[460,5440,1889],{"class":470},[460,5442,1908],{"class":929},[460,5444,894],{"class":466},[460,5446,1913],{"class":1353},[460,5448,1916],{"class":929},[460,5450,894],{"class":466},[460,5452,1921],{"class":1353},[460,5454,473],{"class":466},[460,5456,5457,5459,5461,5463,5465],{"class":462,"line":506},[460,5458,467],{"class":466},[460,5460,1930],{"class":470},[460,5462,1933],{"class":466},[460,5464,1930],{"class":470},[460,5466,473],{"class":466},[460,5468,5469,5471,5473],{"class":462,"line":512},[460,5470,467],{"class":466},[460,5472,1944],{"class":470},[460,5474,473],{"class":466},[460,5476,5477,5480],{"class":462,"line":518},[460,5478,5479],{"class":470},"    div",[460,5481,1348],{"class":466},[460,5483,5484,5486,5488,5491,5493],{"class":462,"line":525},[460,5485,2009],{"class":900},[460,5487,1961],{"class":466},[460,5489,5490],{"class":900},"200",[460,5492,2017],{"class":887},[460,5494,1966],{"class":466},[460,5496,5497,5500,5502,5505,5507],{"class":462,"line":531},[460,5498,5499],{"class":900},"      height",[460,5501,1961],{"class":466},[460,5503,5504],{"class":900},"40",[460,5506,2017],{"class":887},[460,5508,1966],{"class":466},[460,5510,5511,5514,5516,5518,5520],{"class":462,"line":537},[460,5512,5513],{"class":900},"      line-height",[460,5515,1961],{"class":466},[460,5517,5504],{"class":900},[460,5519,2017],{"class":887},[460,5521,1966],{"class":466},[460,5523,5524,5527,5529,5532,5534],{"class":462,"line":543},[460,5525,5526],{"class":900},"      font",[460,5528,1961],{"class":466},[460,5530,5531],{"class":900},"12",[460,5533,2017],{"class":887},[460,5535,1966],{"class":466},[460,5537,5538,5541,5543,5546],{"class":462,"line":549},[460,5539,5540],{"class":900},"      text-align",[460,5542,1961],{"class":466},[460,5544,5545],{"class":900},"center",[460,5547,1966],{"class":466},[460,5549,5550,5552,5554,5557],{"class":462,"line":555},[460,5551,2673],{"class":900},[460,5553,1961],{"class":466},[460,5555,5556],{"class":900},"pink",[460,5558,1966],{"class":466},[460,5560,5561],{"class":462,"line":560},[460,5562,509],{"class":466},[460,5564,5565,5567,5569],{"class":462,"line":566},[460,5566,581],{"class":466},[460,5568,1944],{"class":470},[460,5570,473],{"class":466},[460,5572,5573,5575,5577],{"class":462,"line":572},[460,5574,1776],{"class":466},[460,5576,1880],{"class":470},[460,5578,473],{"class":466},[460,5580,5581],{"class":462,"line":578},[460,5582,522],{"emptyLinePlaceholder":521},[460,5584,5585,5587,5589],{"class":462,"line":812},[460,5586,781],{"class":466},[460,5588,1721],{"class":470},[460,5590,473],{"class":466},[460,5592,5593,5595,5597,5600,5602],{"class":462,"line":818},[460,5594,467],{"class":466},[460,5596,2737],{"class":470},[460,5598,5599],{"class":466},">\u003C\u002F",[460,5601,2737],{"class":470},[460,5603,473],{"class":466},[460,5605,5606,5608,5610],{"class":462,"line":824},[460,5607,467],{"class":466},[460,5609,225],{"class":470},[460,5611,473],{"class":466},[460,5613,5614,5616,5619,5621,5624,5627,5630,5633],{"class":462,"line":2074},[460,5615,1340],{"class":887},[460,5617,5618],{"class":900}," spec",[460,5620,2943],{"class":887},[460,5622,5623],{"class":466}," { size: ",[460,5625,5626],{"class":1353},"'40cm*40cm'",[460,5628,5629],{"class":466},", color: ",[460,5631,5632],{"class":1353},"'黑色'",[460,5634,5635],{"class":466}," }\n",[460,5637,5638],{"class":462,"line":2088},[460,5639,5640],{"class":942},"    \u002F\u002F const arr = Object.values(spec)\n",[460,5642,5643],{"class":462,"line":2103},[460,5644,5645],{"class":942},"    \u002F\u002F document.querySelector('div').innerHTML = arr.join('\u002F')\n",[460,5647,5648,5650,5652,5654,5657,5659,5661,5664,5667,5670,5673,5675,5678],{"class":462,"line":2122},[460,5649,3586],{"class":466},[460,5651,3541],{"class":929},[460,5653,2174],{"class":466},[460,5655,5656],{"class":1353},"'div'",[460,5658,3549],{"class":466},[460,5660,894],{"class":887},[460,5662,5663],{"class":466}," Object.",[460,5665,5666],{"class":929},"values",[460,5668,5669],{"class":466},"(spec).",[460,5671,5672],{"class":929},"join",[460,5674,2174],{"class":466},[460,5676,5677],{"class":1353},"'\u002F'",[460,5679,3754],{"class":466},[460,5681,5682,5684,5686],{"class":462,"line":2144},[460,5683,581],{"class":466},[460,5685,225],{"class":470},[460,5687,473],{"class":466},[460,5689,5690,5692,5694],{"class":462,"line":2158},[460,5691,1776],{"class":466},[460,5693,1721],{"class":470},[460,5695,473],{"class":466},[460,5697,5698],{"class":462,"line":2163},[460,5699,522],{"emptyLinePlaceholder":521},[460,5701,5702,5704,5706],{"class":462,"line":2168},[460,5703,1776],{"class":466},[460,5705,704],{"class":470},[460,5707,473],{"class":466},[14,5709,5710],{},"一定要记住Object是内置构造函数，他的那三个方法都是静态方法",[4287,5712,5714],{"id":5713},"_410525-arrayfrom方法","4.10.5.2.5 Array.from()方法",[14,5716,5717],{},"静态方法，将伪数组转换为真数组",[14,5719,5720],{},[30,5721],{"alt":32,"src":5722},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-272.png",[451,5724,5726],{"className":453,"code":5725,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cul>\n    \u003Cli>\u003C\u002Fli>\n    \u003Cli>\u003C\u002Fli>\n    \u003Cli>\u003C\u002Fli>\n  \u003C\u002Ful>\n  \u003Cscript>\n    const lis = document.querySelectorAll('li')\n    const liss = Array.from(lis)\n    liss.pop()\n    console.log(liss)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,5727,5728,5736,5744,5756,5768,5780,5788,5796,5801,5806,5811,5816,5824],{"__ignoreMap":32},[460,5729,5730,5732,5734],{"class":462,"line":463},[460,5731,781],{"class":466},[460,5733,1721],{"class":470},[460,5735,473],{"class":466},[460,5737,5738,5740,5742],{"class":462,"line":476},[460,5739,467],{"class":466},[460,5741,40],{"class":470},[460,5743,473],{"class":466},[460,5745,5746,5748,5750,5752,5754],{"class":462,"line":482},[460,5747,2753],{"class":466},[460,5749,43],{"class":470},[460,5751,5599],{"class":466},[460,5753,43],{"class":470},[460,5755,473],{"class":466},[460,5757,5758,5760,5762,5764,5766],{"class":462,"line":488},[460,5759,2753],{"class":466},[460,5761,43],{"class":470},[460,5763,5599],{"class":466},[460,5765,43],{"class":470},[460,5767,473],{"class":466},[460,5769,5770,5772,5774,5776,5778],{"class":462,"line":494},[460,5771,2753],{"class":466},[460,5773,43],{"class":470},[460,5775,5599],{"class":466},[460,5777,43],{"class":470},[460,5779,473],{"class":466},[460,5781,5782,5784,5786],{"class":462,"line":500},[460,5783,581],{"class":466},[460,5785,40],{"class":470},[460,5787,473],{"class":466},[460,5789,5790,5792,5794],{"class":462,"line":506},[460,5791,467],{"class":466},[460,5793,225],{"class":470},[460,5795,473],{"class":466},[460,5797,5798],{"class":462,"line":512},[460,5799,5800],{"class":466},"    const lis = document.querySelectorAll('li')\n",[460,5802,5803],{"class":462,"line":518},[460,5804,5805],{"class":466},"    const liss = Array.from(lis)\n",[460,5807,5808],{"class":462,"line":525},[460,5809,5810],{"class":466},"    liss.pop()\n",[460,5812,5813],{"class":462,"line":531},[460,5814,5815],{"class":466},"    console.log(liss)\n",[460,5817,5818,5820,5822],{"class":462,"line":537},[460,5819,581],{"class":466},[460,5821,225],{"class":470},[460,5823,473],{"class":466},[460,5825,5826,5828,5830],{"class":462,"line":543},[460,5827,1776],{"class":466},[460,5829,1721],{"class":470},[460,5831,473],{"class":466},[14,5833,5834],{},[30,5835],{"alt":32,"src":5836},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-273.png",[115,5838,5840],{"id":5839},"_41053-string","4.10.5.3 String",[14,5842,5843],{},[30,5844],{"alt":32,"src":5845},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-274.png",[4287,5847,5849],{"id":5848},"_410531-split字符串变数组","4.10.5.3.1 split()字符串变数组",[451,5851,5853],{"className":453,"code":5852,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    \u002F\u002F 把字符串转化为数组\n    const str = 'pink,red'\n    const arr = str.split(',')\n    console.log(arr)\n    const str1 = '2025-8-25'\n    const arr1 = str1.split('-')\n    console.log(arr1)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,5854,5855,5863,5871,5876,5881,5886,5890,5895,5900,5905,5913],{"__ignoreMap":32},[460,5856,5857,5859,5861],{"class":462,"line":463},[460,5858,781],{"class":466},[460,5860,1721],{"class":470},[460,5862,473],{"class":466},[460,5864,5865,5867,5869],{"class":462,"line":476},[460,5866,467],{"class":466},[460,5868,225],{"class":470},[460,5870,473],{"class":466},[460,5872,5873],{"class":462,"line":482},[460,5874,5875],{"class":466},"    \u002F\u002F 把字符串转化为数组\n",[460,5877,5878],{"class":462,"line":488},[460,5879,5880],{"class":466},"    const str = 'pink,red'\n",[460,5882,5883],{"class":462,"line":494},[460,5884,5885],{"class":466},"    const arr = str.split(',')\n",[460,5887,5888],{"class":462,"line":500},[460,5889,4344],{"class":466},[460,5891,5892],{"class":462,"line":506},[460,5893,5894],{"class":466},"    const str1 = '2025-8-25'\n",[460,5896,5897],{"class":462,"line":512},[460,5898,5899],{"class":466},"    const arr1 = str1.split('-')\n",[460,5901,5902],{"class":462,"line":518},[460,5903,5904],{"class":466},"    console.log(arr1)\n",[460,5906,5907,5909,5911],{"class":462,"line":525},[460,5908,581],{"class":466},[460,5910,225],{"class":470},[460,5912,473],{"class":466},[460,5914,5915,5917,5919],{"class":462,"line":531},[460,5916,1776],{"class":466},[460,5918,1721],{"class":470},[460,5920,473],{"class":466},[4287,5922,5924],{"id":5923},"_410532-字符串的截取","4.10.5.3.2 字符串的截取",[14,5926,5927],{},"语法：",[14,5929,5930],{},"substring(indexStart)",[14,5932,5933],{},"substring(indexStart, indexEnd)",[40,5935,5936,5947,5959,5969],{},[43,5937,5938,5939,5942,5943,5946],{},"如果省略了 ",[457,5940,5941],{},"indexEnd","，则 ",[457,5944,5945],{},"substring()"," 提取字符直到字符串的末尾",[43,5948,5949,5950,5953,5954,5942,5956,5958],{},"如果 ",[457,5951,5952],{},"indexStart"," 等于 ",[457,5955,5941],{},[457,5957,5945],{}," 返回一个空字符串",[43,5960,5949,5961,5963,5964,5942,5966,5968],{},[457,5962,5952],{}," 大于 ",[457,5965,5941],{},[457,5967,5945],{}," 的效果就像交换了这两个参数一样",[43,5970,5971],{},"结束的索引号不包含想要截取的部分",[451,5973,5975],{"className":5197,"code":5974,"language":5199,"meta":32,"style":32},"const anyString = \"Mozilla\";\n\nconsole.log(anyString.substring(0, 1))  \u002F\u002F 'M'\nconsole.log(anyString.substring(1, 0))  \u002F\u002F 'M'\n\nconsole.log(anyString.substring(0, 6))  \u002F\u002F 'Mozill'\n\nconsole.log(anyString.substring(4))  \u002F\u002F 'lla'\nconsole.log(anyString.substring(4, 7))   \u002F\u002F 'lla'\nconsole.log(anyString.substring(7, 4))  \u002F\u002F 'lla'\n\nconsole.log(anyString.substring(0, 7))  \u002F\u002F 'Mozilla'\nconsole.log(anyString.substring(0, 10))  \u002F\u002F 'Mozilla'\n",[457,5976,5977,5989,5993,6029,6059,6063,6094,6098,6125,6157,6187,6191,6222],{"__ignoreMap":32},[460,5978,5979,5982,5984,5987],{"class":462,"line":463},[460,5980,5981],{"class":466},"const anyString ",[460,5983,894],{"class":887},[460,5985,5986],{"class":1353}," \"Mozilla\"",[460,5988,1966],{"class":466},[460,5990,5991],{"class":462,"line":476},[460,5992,522],{"emptyLinePlaceholder":521},[460,5994,5995,5998,6001,6003,6005,6008,6010,6013,6015,6017,6019,6021,6024,6026],{"class":462,"line":482},[460,5996,5997],{"class":900},"console",[460,5999,6000],{"class":466},".",[460,6002,930],{"class":900},[460,6004,2174],{"class":466},[460,6006,6007],{"class":900},"anyString",[460,6009,6000],{"class":466},[460,6011,6012],{"class":900},"substring",[460,6014,2174],{"class":466},[460,6016,936],{"class":900},[460,6018,904],{"class":466},[460,6020,901],{"class":900},[460,6022,6023],{"class":466},"))  ",[460,6025,5245],{"class":887},[460,6027,6028],{"class":1353}," 'M'\n",[460,6030,6031,6033,6035,6037,6039,6041,6043,6045,6047,6049,6051,6053,6055,6057],{"class":462,"line":488},[460,6032,5997],{"class":900},[460,6034,6000],{"class":466},[460,6036,930],{"class":900},[460,6038,2174],{"class":466},[460,6040,6007],{"class":900},[460,6042,6000],{"class":466},[460,6044,6012],{"class":900},[460,6046,2174],{"class":466},[460,6048,901],{"class":900},[460,6050,904],{"class":466},[460,6052,936],{"class":900},[460,6054,6023],{"class":466},[460,6056,5245],{"class":887},[460,6058,6028],{"class":1353},[460,6060,6061],{"class":462,"line":494},[460,6062,522],{"emptyLinePlaceholder":521},[460,6064,6065,6067,6069,6071,6073,6075,6077,6079,6081,6083,6085,6087,6089,6091],{"class":462,"line":500},[460,6066,5997],{"class":900},[460,6068,6000],{"class":466},[460,6070,930],{"class":900},[460,6072,2174],{"class":466},[460,6074,6007],{"class":900},[460,6076,6000],{"class":466},[460,6078,6012],{"class":900},[460,6080,2174],{"class":466},[460,6082,936],{"class":900},[460,6084,904],{"class":466},[460,6086,4064],{"class":900},[460,6088,6023],{"class":466},[460,6090,5245],{"class":887},[460,6092,6093],{"class":1353}," 'Mozill'\n",[460,6095,6096],{"class":462,"line":506},[460,6097,522],{"emptyLinePlaceholder":521},[460,6099,6100,6102,6104,6106,6108,6110,6112,6114,6116,6118,6120,6122],{"class":462,"line":512},[460,6101,5997],{"class":900},[460,6103,6000],{"class":466},[460,6105,930],{"class":900},[460,6107,2174],{"class":466},[460,6109,6007],{"class":900},[460,6111,6000],{"class":466},[460,6113,6012],{"class":900},[460,6115,2174],{"class":466},[460,6117,918],{"class":900},[460,6119,6023],{"class":466},[460,6121,5245],{"class":887},[460,6123,6124],{"class":1353}," 'lla'\n",[460,6126,6127,6129,6131,6133,6135,6137,6139,6141,6143,6145,6147,6150,6153,6155],{"class":462,"line":518},[460,6128,5997],{"class":900},[460,6130,6000],{"class":466},[460,6132,930],{"class":900},[460,6134,2174],{"class":466},[460,6136,6007],{"class":900},[460,6138,6000],{"class":466},[460,6140,6012],{"class":900},[460,6142,2174],{"class":466},[460,6144,918],{"class":900},[460,6146,904],{"class":466},[460,6148,6149],{"class":900},"7",[460,6151,6152],{"class":466},"))   ",[460,6154,5245],{"class":887},[460,6156,6124],{"class":1353},[460,6158,6159,6161,6163,6165,6167,6169,6171,6173,6175,6177,6179,6181,6183,6185],{"class":462,"line":525},[460,6160,5997],{"class":900},[460,6162,6000],{"class":466},[460,6164,930],{"class":900},[460,6166,2174],{"class":466},[460,6168,6007],{"class":900},[460,6170,6000],{"class":466},[460,6172,6012],{"class":900},[460,6174,2174],{"class":466},[460,6176,6149],{"class":900},[460,6178,904],{"class":466},[460,6180,918],{"class":900},[460,6182,6023],{"class":466},[460,6184,5245],{"class":887},[460,6186,6124],{"class":1353},[460,6188,6189],{"class":462,"line":531},[460,6190,522],{"emptyLinePlaceholder":521},[460,6192,6193,6195,6197,6199,6201,6203,6205,6207,6209,6211,6213,6215,6217,6219],{"class":462,"line":537},[460,6194,5997],{"class":900},[460,6196,6000],{"class":466},[460,6198,930],{"class":900},[460,6200,2174],{"class":466},[460,6202,6007],{"class":900},[460,6204,6000],{"class":466},[460,6206,6012],{"class":900},[460,6208,2174],{"class":466},[460,6210,936],{"class":900},[460,6212,904],{"class":466},[460,6214,6149],{"class":900},[460,6216,6023],{"class":466},[460,6218,5245],{"class":887},[460,6220,6221],{"class":1353}," 'Mozilla'\n",[460,6223,6224,6226,6228,6230,6232,6234,6236,6238,6240,6242,6244,6246,6248,6250],{"class":462,"line":543},[460,6225,5997],{"class":900},[460,6227,6000],{"class":466},[460,6229,930],{"class":900},[460,6231,2174],{"class":466},[460,6233,6007],{"class":900},[460,6235,6000],{"class":466},[460,6237,6012],{"class":900},[460,6239,2174],{"class":466},[460,6241,936],{"class":900},[460,6243,904],{"class":466},[460,6245,2096],{"class":900},[460,6247,6023],{"class":466},[460,6249,5245],{"class":887},[460,6251,6221],{"class":1353},[4287,6253,6255],{"id":6254},"_410533-startswith","4.10.5.3.3 startsWith",[14,6257,6258,6261,6262,6267,6268,6271,6272],{},[457,6259,6260],{},"[String](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FString)"," 的 ",[3944,6263,6264],{},[457,6265,6266],{},"startsWith()"," 方法用来判断当前字符串是否以另外一个给定的子字符串开头，并根据判断结果返回 ",[457,6269,6270],{},"true"," 或 ",[457,6273,6274],{},"false",[451,6276,6278],{"className":878,"code":6277,"language":880,"meta":32,"style":32},"const str1 = \"Saturday night plans\"\nconsole.log(str1.startsWith(\"Sat\"))\n\u002F\u002F Expected output: true\nconsole.log(str1.startsWith(\"Sat\", 3))\n\u002F\u002F Expected output: false\n",[457,6279,6280,6292,6312,6317,6337],{"__ignoreMap":32},[460,6281,6282,6284,6287,6289],{"class":462,"line":463},[460,6283,888],{"class":887},[460,6285,6286],{"class":466}," str1 ",[460,6288,894],{"class":887},[460,6290,6291],{"class":1353}," \"Saturday night plans\"\n",[460,6293,6294,6296,6298,6301,6304,6306,6309],{"class":462,"line":476},[460,6295,926],{"class":466},[460,6297,930],{"class":929},[460,6299,6300],{"class":466},"(str1.",[460,6302,6303],{"class":929},"startsWith",[460,6305,2174],{"class":466},[460,6307,6308],{"class":1353},"\"Sat\"",[460,6310,6311],{"class":466},"))\n",[460,6313,6314],{"class":462,"line":482},[460,6315,6316],{"class":942},"\u002F\u002F Expected output: true\n",[460,6318,6319,6321,6323,6325,6327,6329,6331,6333,6335],{"class":462,"line":488},[460,6320,926],{"class":466},[460,6322,930],{"class":929},[460,6324,6300],{"class":466},[460,6326,6303],{"class":929},[460,6328,2174],{"class":466},[460,6330,6308],{"class":1353},[460,6332,904],{"class":466},[460,6334,913],{"class":900},[460,6336,6311],{"class":466},[460,6338,6339],{"class":462,"line":494},[460,6340,6341],{"class":942},"\u002F\u002F Expected output: false\n",[451,6343,6345],{"className":702,"code":6344,"language":704,"meta":32,"style":32},"startsWith(searchString)\nstartsWith(searchString, position)       position指的是第一个字符的索引，默认为0\n\nconst str3 = 'pink老师上课中'\nconsole.log(str3.startsWith('pink'))   \u002F\u002Ftrue\nconsole.log(str3.startsWith('p'))   \u002F\u002Ftrue\n",[457,6346,6347,6352,6357,6361,6366,6371],{"__ignoreMap":32},[460,6348,6349],{"class":462,"line":463},[460,6350,6351],{"class":466},"startsWith(searchString)\n",[460,6353,6354],{"class":462,"line":476},[460,6355,6356],{"class":466},"startsWith(searchString, position)       position指的是第一个字符的索引，默认为0\n",[460,6358,6359],{"class":462,"line":482},[460,6360,522],{"emptyLinePlaceholder":521},[460,6362,6363],{"class":462,"line":488},[460,6364,6365],{"class":466},"const str3 = 'pink老师上课中'\n",[460,6367,6368],{"class":462,"line":494},[460,6369,6370],{"class":466},"console.log(str3.startsWith('pink'))   \u002F\u002Ftrue\n",[460,6372,6373],{"class":462,"line":500},[460,6374,6375],{"class":466},"console.log(str3.startsWith('p'))   \u002F\u002Ftrue\n",[4287,6377,6379],{"id":6378},"_410534-includes","4.10.5.3.4 includes",[14,6381,6382],{},"includes(searchString) includes(searchString, position)",[103,6384,6385],{},[43,6386,6387],{},"searchString:",[14,6389,6390,6391,6394,6395,6400,6401,6406,6407,6410,6411,6414,6415,6418],{},"一个要在 ",[457,6392,6393],{},"str"," 中查找的字符串。",[2756,6396,6399],{"href":6397,"rel":6398},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FRegExp#%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E7%89%B9%E6%AE%8A%E5%A4%84%E7%90%86",[4943],"不能是正则表达式","。所有非正则表达式的值都会被",[2756,6402,6405],{"href":6403,"rel":6404},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FString#%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%BC%BA%E5%88%B6%E8%BD%AC%E6%8D%A2",[4943],"强制转换为字符串","，因此如果该参数被省略或传入 ",[457,6408,6409],{},"undefined","，",[457,6412,6413],{},"includes()"," 方法会在字符串中搜索 ",[457,6416,6417],{},"\"undefined\"","，这通常不是你想要的",[103,6420,6421],{"start":476},[43,6422,6423,1357],{},[457,6424,6425],{},"[position 可选](https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-CN\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FString\u002Fincludes#position)",[14,6427,6428,6429,6432,6433],{},"在字符串中开始搜索 ",[457,6430,6431],{},"searchString"," 的位置。默认值为 ",[457,6434,936],{},[103,6436,6437],{"start":482},[43,6438,6439],{},"返回值：",[14,6441,6442,6443,6445,6446,6450,6451],{},"如果在给定的字符串中找到了要搜索的字符串（包括 ",[457,6444,6431],{}," 为空字符串的情况），则返回 ",[3944,6447,6448],{},[457,6449,6270],{}," ，否则返回 ",[3944,6452,6453],{},[457,6454,6274],{},[103,6456,6457],{"start":488},[43,6458,6459],{},"异常：",[14,6461,5949,6462,6464,6465,6469],{},[457,6463,6431],{}," ",[2756,6466,6468],{"href":6397,"rel":6467},[4943],"是一个正则表达式","，则会抛出",[14,6471,6472],{},"只要是有就是true，不需要非得以谁开头结尾",[451,6474,6476],{"className":878,"code":6475,"language":880,"meta":32,"style":32},"const str = \"To be, or not to be, that is the question.\"\nconsole.log(str.includes(\"To be\"))  \u002F\u002F true\nconsole.log(str.includes(\"question\"))  \u002F\u002F true\nconsole.log(str.includes(\"nonexistent\"))  \u002F\u002F false\nconsole.log(str.includes(\"To be\", 1))  \u002F\u002F false\nconsole.log(str.includes(\"TO BE\"))  \u002F\u002F false\nconsole.log(str.includes(\"\"))  \u002F\u002F true\n",[457,6477,6478,6489,6512,6531,6551,6573,6592],{"__ignoreMap":32},[460,6479,6480,6482,6484,6486],{"class":462,"line":463},[460,6481,888],{"class":887},[460,6483,3398],{"class":466},[460,6485,894],{"class":887},[460,6487,6488],{"class":1353}," \"To be, or not to be, that is the question.\"\n",[460,6490,6491,6493,6495,6498,6501,6503,6506,6509],{"class":462,"line":476},[460,6492,926],{"class":466},[460,6494,930],{"class":929},[460,6496,6497],{"class":466},"(str.",[460,6499,6500],{"class":929},"includes",[460,6502,2174],{"class":466},[460,6504,6505],{"class":1353},"\"To be\"",[460,6507,6508],{"class":466},"))",[460,6510,6511],{"class":942},"  \u002F\u002F true\n",[460,6513,6514,6516,6518,6520,6522,6524,6527,6529],{"class":462,"line":482},[460,6515,926],{"class":466},[460,6517,930],{"class":929},[460,6519,6497],{"class":466},[460,6521,6500],{"class":929},[460,6523,2174],{"class":466},[460,6525,6526],{"class":1353},"\"question\"",[460,6528,6508],{"class":466},[460,6530,6511],{"class":942},[460,6532,6533,6535,6537,6539,6541,6543,6546,6548],{"class":462,"line":488},[460,6534,926],{"class":466},[460,6536,930],{"class":929},[460,6538,6497],{"class":466},[460,6540,6500],{"class":929},[460,6542,2174],{"class":466},[460,6544,6545],{"class":1353},"\"nonexistent\"",[460,6547,6508],{"class":466},[460,6549,6550],{"class":942},"  \u002F\u002F false\n",[460,6552,6553,6555,6557,6559,6561,6563,6565,6567,6569,6571],{"class":462,"line":494},[460,6554,926],{"class":466},[460,6556,930],{"class":929},[460,6558,6497],{"class":466},[460,6560,6500],{"class":929},[460,6562,2174],{"class":466},[460,6564,6505],{"class":1353},[460,6566,904],{"class":466},[460,6568,901],{"class":900},[460,6570,6508],{"class":466},[460,6572,6550],{"class":942},[460,6574,6575,6577,6579,6581,6583,6585,6588,6590],{"class":462,"line":500},[460,6576,926],{"class":466},[460,6578,930],{"class":929},[460,6580,6497],{"class":466},[460,6582,6500],{"class":929},[460,6584,2174],{"class":466},[460,6586,6587],{"class":1353},"\"TO BE\"",[460,6589,6508],{"class":466},[460,6591,6550],{"class":942},[460,6593,6594,6596,6598,6600,6602,6604,6607,6609],{"class":462,"line":506},[460,6595,926],{"class":466},[460,6597,930],{"class":929},[460,6599,6497],{"class":466},[460,6601,6500],{"class":929},[460,6603,2174],{"class":466},[460,6605,6606],{"class":1353},"\"\"",[460,6608,6508],{"class":466},[460,6610,6511],{"class":942},[4287,6612,6614],{"id":6613},"_410535-转换为字符串","4.10.5.3.5 转换为字符串",[451,6616,6618],{"className":453,"code":6617,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const num = 10\n    \u002F\u002F 强制转换\n    console.log(String(num))\n    \u002F\u002F toString()方法转换\n    console.log(num.toString())\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,6619,6620,6628,6636,6641,6646,6651,6656,6661,6669],{"__ignoreMap":32},[460,6621,6622,6624,6626],{"class":462,"line":463},[460,6623,781],{"class":466},[460,6625,1721],{"class":470},[460,6627,473],{"class":466},[460,6629,6630,6632,6634],{"class":462,"line":476},[460,6631,467],{"class":466},[460,6633,225],{"class":470},[460,6635,473],{"class":466},[460,6637,6638],{"class":462,"line":482},[460,6639,6640],{"class":466},"    const num = 10\n",[460,6642,6643],{"class":462,"line":488},[460,6644,6645],{"class":466},"    \u002F\u002F 强制转换\n",[460,6647,6648],{"class":462,"line":494},[460,6649,6650],{"class":466},"    console.log(String(num))\n",[460,6652,6653],{"class":462,"line":500},[460,6654,6655],{"class":466},"    \u002F\u002F toString()方法转换\n",[460,6657,6658],{"class":462,"line":506},[460,6659,6660],{"class":466},"    console.log(num.toString())\n",[460,6662,6663,6665,6667],{"class":462,"line":512},[460,6664,581],{"class":466},[460,6666,225],{"class":470},[460,6668,473],{"class":466},[460,6670,6671,6673,6675],{"class":462,"line":518},[460,6672,1776],{"class":466},[460,6674,1721],{"class":470},[460,6676,473],{"class":466},[4287,6678,6680],{"id":6679},"_410536-显示赠品练习","4.10.5.3.6 显示赠品练习",[14,6682,6683],{},[30,6684],{"alt":32,"src":6685},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-275.png",[451,6687,6689],{"className":702,"code":6688,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv>\u003C\u002Fdiv>\n  \u003Cscript>\n    const gift = '50g的茶叶，清洗球'\n    \u002F\u002F 1.把字符串拆分为数组\n    \u002F\u002F console.log(gift.split(','))\n    \u002F\u002F 2.根据数组元素的个数生成对应的标签\n    const str = gift.split('，').map(item => `\u003Cspan>【赠品】${item}\u003C\u002Fspan>\u003Cbr>`).join('')\n    document.querySelector('div').innerHTML = str\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,6690,6691,6701,6715,6719,6727,6741,6761,6773,6781,6785,6793,6805,6813,6825,6830,6835,6840,6890,6906,6914,6922,6926],{"__ignoreMap":32},[460,6692,6693,6695,6697,6699],{"class":462,"line":463},[460,6694,1845],{"class":466},[460,6696,1848],{"class":470},[460,6698,1851],{"class":929},[460,6700,473],{"class":466},[460,6702,6703,6705,6707,6709,6711,6713],{"class":462,"line":476},[460,6704,781],{"class":466},[460,6706,704],{"class":470},[460,6708,1862],{"class":929},[460,6710,894],{"class":466},[460,6712,1867],{"class":1353},[460,6714,473],{"class":466},[460,6716,6717],{"class":462,"line":482},[460,6718,522],{"emptyLinePlaceholder":521},[460,6720,6721,6723,6725],{"class":462,"line":488},[460,6722,781],{"class":466},[460,6724,1880],{"class":470},[460,6726,473],{"class":466},[460,6728,6729,6731,6733,6735,6737,6739],{"class":462,"line":494},[460,6730,467],{"class":466},[460,6732,1889],{"class":470},[460,6734,1892],{"class":929},[460,6736,894],{"class":466},[460,6738,1897],{"class":1353},[460,6740,473],{"class":466},[460,6742,6743,6745,6747,6749,6751,6753,6755,6757,6759],{"class":462,"line":500},[460,6744,467],{"class":466},[460,6746,1889],{"class":470},[460,6748,1908],{"class":929},[460,6750,894],{"class":466},[460,6752,1913],{"class":1353},[460,6754,1916],{"class":929},[460,6756,894],{"class":466},[460,6758,1921],{"class":1353},[460,6760,473],{"class":466},[460,6762,6763,6765,6767,6769,6771],{"class":462,"line":506},[460,6764,467],{"class":466},[460,6766,1930],{"class":470},[460,6768,1933],{"class":466},[460,6770,1930],{"class":470},[460,6772,473],{"class":466},[460,6774,6775,6777,6779],{"class":462,"line":512},[460,6776,1776],{"class":466},[460,6778,1880],{"class":470},[460,6780,473],{"class":466},[460,6782,6783],{"class":462,"line":518},[460,6784,522],{"emptyLinePlaceholder":521},[460,6786,6787,6789,6791],{"class":462,"line":525},[460,6788,781],{"class":466},[460,6790,1721],{"class":470},[460,6792,473],{"class":466},[460,6794,6795,6797,6799,6801,6803],{"class":462,"line":531},[460,6796,467],{"class":466},[460,6798,2737],{"class":470},[460,6800,5599],{"class":466},[460,6802,2737],{"class":470},[460,6804,473],{"class":466},[460,6806,6807,6809,6811],{"class":462,"line":537},[460,6808,467],{"class":466},[460,6810,225],{"class":470},[460,6812,473],{"class":466},[460,6814,6815,6817,6820,6822],{"class":462,"line":543},[460,6816,1340],{"class":887},[460,6818,6819],{"class":900}," gift",[460,6821,2943],{"class":887},[460,6823,6824],{"class":1353}," '50g的茶叶，清洗球'\n",[460,6826,6827],{"class":462,"line":549},[460,6828,6829],{"class":942},"    \u002F\u002F 1.把字符串拆分为数组\n",[460,6831,6832],{"class":462,"line":555},[460,6833,6834],{"class":942},"    \u002F\u002F console.log(gift.split(','))\n",[460,6836,6837],{"class":462,"line":560},[460,6838,6839],{"class":942},"    \u002F\u002F 2.根据数组元素的个数生成对应的标签\n",[460,6841,6842,6844,6847,6849,6852,6855,6857,6860,6862,6865,6867,6869,6871,6874,6876,6879,6881,6883,6885,6888],{"class":462,"line":566},[460,6843,1340],{"class":887},[460,6845,6846],{"class":900}," str",[460,6848,2943],{"class":887},[460,6850,6851],{"class":466}," gift.",[460,6853,6854],{"class":929},"split",[460,6856,2174],{"class":466},[460,6858,6859],{"class":1353},"'，'",[460,6861,3596],{"class":466},[460,6863,6864],{"class":929},"map",[460,6866,2174],{"class":466},[460,6868,3423],{"class":3380},[460,6870,3426],{"class":887},[460,6872,6873],{"class":1353}," `\u003Cspan>【赠品】${",[460,6875,3423],{"class":466},[460,6877,6878],{"class":1353},"}\u003C\u002Fspan>\u003Cbr>`",[460,6880,3596],{"class":466},[460,6882,5672],{"class":929},[460,6884,2174],{"class":466},[460,6886,6887],{"class":1353},"''",[460,6889,3754],{"class":466},[460,6891,6892,6894,6896,6898,6900,6902,6904],{"class":462,"line":572},[460,6893,3586],{"class":466},[460,6895,3541],{"class":929},[460,6897,2174],{"class":466},[460,6899,5656],{"class":1353},[460,6901,3549],{"class":466},[460,6903,894],{"class":887},[460,6905,3554],{"class":466},[460,6907,6908,6910,6912],{"class":462,"line":578},[460,6909,581],{"class":466},[460,6911,225],{"class":470},[460,6913,473],{"class":466},[460,6915,6916,6918,6920],{"class":462,"line":812},[460,6917,1776],{"class":466},[460,6919,1721],{"class":470},[460,6921,473],{"class":466},[460,6923,6924],{"class":462,"line":818},[460,6925,522],{"emptyLinePlaceholder":521},[460,6927,6928,6930,6932],{"class":462,"line":824},[460,6929,1776],{"class":466},[460,6931,704],{"class":470},[460,6933,473],{"class":466},[115,6935,6937],{"id":6936},"_41054-number","4.10.5.4 Number",[14,6939,6940],{},[30,6941],{"alt":32,"src":6942},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-276.png",[14,6944,6945],{},"整数也可以进行toFixed来保留小数",[14,6947,6948],{},"比如：",[14,6950,6951],{},"const price=10",[14,6953,6954],{},"console.log(price.tofixed(2)) \u002F\u002F输出：10.00",[115,6956,6958],{"id":6957},"_41055-购物车展示","4.10.5.5 购物车展示",[14,6960,6961],{},[30,6962],{"alt":32,"src":6963},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-277.png",[451,6965,6967],{"className":702,"code":6966,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      padding: 0;\n      margin: 0;\n      box-sizing: border-box;\n    }\n\n    .list {\n      width: 990px;\n      margin: 100px auto;\n    }\n\n    .item {\n      padding: 15px;\n      transition: all ease .5s;\n      display: flex;\n      border: 1px solid #e4e4e4;\n    }\n\n    .item:hover {\n      cursor: pointer;\n      background-color: #f5f5f5;\n    }\n\n    .item img {\n      width: 80px;\n      height: 80px;\n      margin-right: 5px;\n    }\n\n    .item .name {\n      width: 200px;\n    }\n\n    .item .name .tag {\n      display: block;\n      padding: 2px;\n      font-size: 12px;\n      color: #999;\n    }\n\n    .item .price,\n    .item .sub-total {\n      font-size: 18px;\n      color: firebrick;\n      flex: 1;\n    }\n\n    .item .price::before,\n    .item .sub-total::before,\n    .amount::before {\n      content: '￥';\n      font-size: 12px;\n    }\n\n    .item .spec {\n      flex: 2;\n      color: #888;\n      font-size: 14px;\n      margin-left: 20px;\n    }\n\n    .item .count {\n      flex: 1;\n      color: #aaa;\n    }\n\n    .total {\n      width: 990px;\n      margin: 0 auto;\n      display: flex;\n      justify-content: flex-end;\n      border-top: 1px solid #4e4e4e;\n      padding: 20px;\n    }\n\n    .total .amount {\n      font-size: 18px;\n      color: firebrick;\n      font-weight: 700;\n      margin-right: 50px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"list\">\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"total\">\n    \u003Cdiv>合计：\u003Cspan class=\"amount\">\u003C\u002Fspan>\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    const goodsList = [\n      {\n        id: '4001172',\n        name: '称心如意手摇咖啡磨豆机咖啡豆研磨机',\n        price: 289.9,\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F84a59ff9c58a77032564e61f716846d6.jpg',\n        count: 2,\n        spec: { color: '白色' }\n      },\n      {\n        id: '4001009',\n        name: '竹制干泡茶盘正方形沥水茶台品茶盘',\n        price: 109.8,\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F2d942d6bc94f1e230763e1a5a3b379e1.png',\n        count: 3,\n        spec: { size: '40cm*40cm', color: '黑色' }\n      },\n      {\n        id: '4001874',\n        name: '古法温酒汝瓷酒具套装白酒杯莲花温酒器',\n        price: 488,\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F44e51622800e4fceb6bee8e616da85fd.png',\n        count: 1,\n        spec: { color: '青色', sum: '一大四小' }\n      },\n      {\n        id: '4001649',\n        name: '大师监制龙泉青瓷茶叶罐',\n        price: 139,\n        picture: 'https:\u002F\u002Fyanxuan-item.nosdn.127.net\u002F4356c9fc150753775fe56b465314f1eb.png',\n        count: 1,\n        spec: { size: '小号', color: '紫色' },\n        gift: '50g茶叶,清洗球'\n      }\n    ]\n    \u002F\u002F  1.根据数据渲染页面\n    document.querySelector('.list').innerHTML = goodsList.map(item => {\n      \u002F\u002F 对象解构\n      const { picture, name, count, price, spec, gift } = item\n      \u002F\u002F 规格文字模块处理\n      const text = Object.values(spec).join('\u002F')\n      \u002F\u002F 处理赠品模块\n      const str = gift ? gift.split(',').map(item => `\u003Cspan class=\"tag\">【赠品】${item}\u003C\u002Fspan>`).join('') : ''\n      \u002F\u002F 计算小计模块，保留两位小数,在计算有关小数的问题时，我们要将其转化为整数，然后再除回去，就可以避免小数计算时精度的问题\n      const subtotal = ((price * 100 * count) \u002F 100).toFixed(2)\n\n      return `\n        \u003Cdiv class=\"item\">\n          \u003Cimg src=\"${picture}\" alt=\"\">\n          \u003Cp class=\"name\">${name}${str}\u003C\u002Fp>\n          \u003Cp class=\"spec\">${text}\u003C\u002Fp>\n          \u003Cp class=\"price\">${price.toFixed(2)}\u003C\u002Fp>\n          \u003Cp class=\"count\">x${count}\u003C\u002Fp>\n          \u003Cp class=\"sub-total\">${subtotal}\u003C\u002Fp>\n        \u003C\u002Fdiv> \n             `\n    }).join('')\n    \u002F\u002F 合计模块   prev为累计值   item为当前元素   为了保证精度也先把它转化为整数计算完再变回去\n    const total = goodsList.reduce((prev, item) => prev + (item.price * 100 * item.count) \u002F 100, 0)\n    document.querySelector('.amount').innerHTML = total.toFixed(2)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,6968,6969,6979,6993,6997,7005,7019,7039,7051,7059,7065,7075,7085,7095,7099,7103,7109,7121,7135,7139,7143,7149,7162,7178,7188,7207,7211,7215,7221,7231,7241,7245,7249,7257,7270,7282,7295,7299,7303,7311,7323,7327,7331,7342,7353,7365,7377,7388,7392,7396,7404,7413,7425,7435,7446,7450,7454,7462,7471,7478,7488,7500,7504,7508,7517,7527,7538,7550,7562,7566,7570,7579,7589,7600,7604,7608,7615,7627,7639,7649,7661,7679,7691,7695,7699,7708,7720,7730,7742,7754,7758,7766,7774,7778,7786,7800,7808,7823,7851,7859,7867,7877,7881,7889,7897,7906,7914,7923,7933,7937,7941,7949,7957,7966,7974,7982,7995,7999,8003,8011,8019,8028,8036,8044,8059,8063,8067,8075,8083,8092,8100,8108,8123,8131,8135,8139,8144,8170,8175,8212,8217,8240,8245,8301,8306,8345,8349,8356,8361,8370,8384,8394,8414,8423,8433,8438,8443,8456,8461,8518,8544,8552,8560,8564],{"__ignoreMap":32},[460,6970,6971,6973,6975,6977],{"class":462,"line":463},[460,6972,1845],{"class":466},[460,6974,1848],{"class":470},[460,6976,1851],{"class":929},[460,6978,473],{"class":466},[460,6980,6981,6983,6985,6987,6989,6991],{"class":462,"line":476},[460,6982,781],{"class":466},[460,6984,704],{"class":470},[460,6986,1862],{"class":929},[460,6988,894],{"class":466},[460,6990,1867],{"class":1353},[460,6992,473],{"class":466},[460,6994,6995],{"class":462,"line":482},[460,6996,522],{"emptyLinePlaceholder":521},[460,6998,6999,7001,7003],{"class":462,"line":488},[460,7000,781],{"class":466},[460,7002,1880],{"class":470},[460,7004,473],{"class":466},[460,7006,7007,7009,7011,7013,7015,7017],{"class":462,"line":494},[460,7008,467],{"class":466},[460,7010,1889],{"class":470},[460,7012,1892],{"class":929},[460,7014,894],{"class":466},[460,7016,1897],{"class":1353},[460,7018,473],{"class":466},[460,7020,7021,7023,7025,7027,7029,7031,7033,7035,7037],{"class":462,"line":500},[460,7022,467],{"class":466},[460,7024,1889],{"class":470},[460,7026,1908],{"class":929},[460,7028,894],{"class":466},[460,7030,1913],{"class":1353},[460,7032,1916],{"class":929},[460,7034,894],{"class":466},[460,7036,1921],{"class":1353},[460,7038,473],{"class":466},[460,7040,7041,7043,7045,7047,7049],{"class":462,"line":506},[460,7042,467],{"class":466},[460,7044,1930],{"class":470},[460,7046,1933],{"class":466},[460,7048,1930],{"class":470},[460,7050,473],{"class":466},[460,7052,7053,7055,7057],{"class":462,"line":512},[460,7054,467],{"class":466},[460,7056,1944],{"class":470},[460,7058,473],{"class":466},[460,7060,7061,7063],{"class":462,"line":518},[460,7062,1951],{"class":470},[460,7064,1348],{"class":466},[460,7066,7067,7069,7071,7073],{"class":462,"line":525},[460,7068,1958],{"class":900},[460,7070,1961],{"class":466},[460,7072,936],{"class":900},[460,7074,1966],{"class":466},[460,7076,7077,7079,7081,7083],{"class":462,"line":531},[460,7078,1971],{"class":900},[460,7080,1961],{"class":466},[460,7082,936],{"class":900},[460,7084,1966],{"class":466},[460,7086,7087,7089,7091,7093],{"class":462,"line":537},[460,7088,1982],{"class":900},[460,7090,1961],{"class":466},[460,7092,1987],{"class":900},[460,7094,1966],{"class":466},[460,7096,7097],{"class":462,"line":543},[460,7098,509],{"class":466},[460,7100,7101],{"class":462,"line":549},[460,7102,522],{"emptyLinePlaceholder":521},[460,7104,7105,7107],{"class":462,"line":555},[460,7106,2002],{"class":929},[460,7108,1348],{"class":466},[460,7110,7111,7113,7115,7117,7119],{"class":462,"line":560},[460,7112,2009],{"class":900},[460,7114,1961],{"class":466},[460,7116,2014],{"class":900},[460,7118,2017],{"class":887},[460,7120,1966],{"class":466},[460,7122,7123,7125,7127,7129,7131,7133],{"class":462,"line":566},[460,7124,1971],{"class":900},[460,7126,1961],{"class":466},[460,7128,2325],{"class":900},[460,7130,2017],{"class":887},[460,7132,2030],{"class":900},[460,7134,1966],{"class":466},[460,7136,7137],{"class":462,"line":572},[460,7138,509],{"class":466},[460,7140,7141],{"class":462,"line":578},[460,7142,522],{"emptyLinePlaceholder":521},[460,7144,7145,7147],{"class":462,"line":812},[460,7146,2069],{"class":929},[460,7148,1348],{"class":466},[460,7150,7151,7153,7155,7158,7160],{"class":462,"line":818},[460,7152,1958],{"class":900},[460,7154,1961],{"class":466},[460,7156,7157],{"class":900},"15",[460,7159,2017],{"class":887},[460,7161,1966],{"class":466},[460,7163,7164,7166,7168,7170,7172,7174,7176],{"class":462,"line":824},[460,7165,2125],{"class":900},[460,7167,1961],{"class":466},[460,7169,2130],{"class":900},[460,7171,2133],{"class":900},[460,7173,2136],{"class":900},[460,7175,2139],{"class":887},[460,7177,1966],{"class":466},[460,7179,7180,7182,7184,7186],{"class":462,"line":2074},[460,7181,2037],{"class":900},[460,7183,1961],{"class":466},[460,7185,2042],{"class":900},[460,7187,1966],{"class":466},[460,7189,7190,7193,7195,7197,7199,7202,7205],{"class":462,"line":2088},[460,7191,7192],{"class":900},"      border",[460,7194,1961],{"class":466},[460,7196,901],{"class":900},[460,7198,2017],{"class":887},[460,7200,7201],{"class":900}," solid",[460,7203,7204],{"class":900}," #e4e4e4",[460,7206,1966],{"class":466},[460,7208,7209],{"class":462,"line":2103},[460,7210,509],{"class":466},[460,7212,7213],{"class":462,"line":2122},[460,7214,522],{"emptyLinePlaceholder":521},[460,7216,7217,7219],{"class":462,"line":2144},[460,7218,2207],{"class":929},[460,7220,1348],{"class":466},[460,7222,7223,7225,7227,7229],{"class":462,"line":2158},[460,7224,2288],{"class":900},[460,7226,1961],{"class":466},[460,7228,2293],{"class":900},[460,7230,1966],{"class":466},[460,7232,7233,7235,7237,7239],{"class":462,"line":2163},[460,7234,2673],{"class":900},[460,7236,1961],{"class":466},[460,7238,2605],{"class":900},[460,7240,1966],{"class":466},[460,7242,7243],{"class":462,"line":2168},[460,7244,509],{"class":466},[460,7246,7247],{"class":462,"line":2183},[460,7248,522],{"emptyLinePlaceholder":521},[460,7250,7251,7253,7255],{"class":462,"line":2194},[460,7252,2069],{"class":929},[460,7254,2313],{"class":470},[460,7256,1348],{"class":466},[460,7258,7259,7261,7263,7266,7268],{"class":462,"line":2199},[460,7260,2009],{"class":900},[460,7262,1961],{"class":466},[460,7264,7265],{"class":900},"80",[460,7267,2017],{"class":887},[460,7269,1966],{"class":466},[460,7271,7272,7274,7276,7278,7280],{"class":462,"line":2204},[460,7273,5499],{"class":900},[460,7275,1961],{"class":466},[460,7277,7265],{"class":900},[460,7279,2017],{"class":887},[460,7281,1966],{"class":466},[460,7283,7284,7286,7288,7291,7293],{"class":462,"line":2212},[460,7285,2637],{"class":900},[460,7287,1961],{"class":466},[460,7289,7290],{"class":900},"5",[460,7292,2017],{"class":887},[460,7294,1966],{"class":466},[460,7296,7297],{"class":462,"line":2257},[460,7298,509],{"class":466},[460,7300,7301],{"class":462,"line":2285},[460,7302,522],{"emptyLinePlaceholder":521},[460,7304,7305,7307,7309],{"class":462,"line":2298},[460,7306,2069],{"class":929},[460,7308,2348],{"class":929},[460,7310,1348],{"class":466},[460,7312,7313,7315,7317,7319,7321],{"class":462,"line":2303},[460,7314,2009],{"class":900},[460,7316,1961],{"class":466},[460,7318,5490],{"class":900},[460,7320,2017],{"class":887},[460,7322,1966],{"class":466},[460,7324,7325],{"class":462,"line":2308},[460,7326,509],{"class":466},[460,7328,7329],{"class":462,"line":2318},[460,7330,522],{"emptyLinePlaceholder":521},[460,7332,7333,7335,7337,7340],{"class":462,"line":2333},[460,7334,2069],{"class":929},[460,7336,2348],{"class":929},[460,7338,7339],{"class":929}," .tag",[460,7341,1348],{"class":466},[460,7343,7344,7346,7348,7351],{"class":462,"line":2338},[460,7345,2037],{"class":900},[460,7347,1961],{"class":466},[460,7349,7350],{"class":900},"block",[460,7352,1966],{"class":466},[460,7354,7355,7357,7359,7361,7363],{"class":462,"line":2343},[460,7356,1958],{"class":900},[460,7358,1961],{"class":466},[460,7360,907],{"class":900},[460,7362,2017],{"class":887},[460,7364,1966],{"class":466},[460,7366,7367,7369,7371,7373,7375],{"class":462,"line":2353},[460,7368,2356],{"class":900},[460,7370,1961],{"class":466},[460,7372,5531],{"class":900},[460,7374,2017],{"class":887},[460,7376,1966],{"class":466},[460,7378,7379,7381,7383,7386],{"class":462,"line":2368},[460,7380,2384],{"class":900},[460,7382,1961],{"class":466},[460,7384,7385],{"class":900},"#999",[460,7387,1966],{"class":466},[460,7389,7390],{"class":462,"line":2381},[460,7391,509],{"class":466},[460,7393,7394],{"class":462,"line":2394},[460,7395,522],{"emptyLinePlaceholder":521},[460,7397,7398,7400,7402],{"class":462,"line":2399},[460,7399,2069],{"class":929},[460,7401,2409],{"class":929},[460,7403,1363],{"class":466},[460,7405,7406,7408,7411],{"class":462,"line":2404},[460,7407,2069],{"class":929},[460,7409,7410],{"class":929}," .sub-total",[460,7412,1348],{"class":466},[460,7414,7415,7417,7419,7421,7423],{"class":462,"line":2414},[460,7416,2356],{"class":900},[460,7418,1961],{"class":466},[460,7420,2361],{"class":900},[460,7422,2017],{"class":887},[460,7424,1966],{"class":466},[460,7426,7427,7429,7431,7433],{"class":462,"line":2428},[460,7428,2384],{"class":900},[460,7430,1961],{"class":466},[460,7432,2435],{"class":900},[460,7434,1966],{"class":466},[460,7436,7437,7440,7442,7444],{"class":462,"line":2440},[460,7438,7439],{"class":900},"      flex",[460,7441,1961],{"class":466},[460,7443,901],{"class":900},[460,7445,1966],{"class":466},[460,7447,7448],{"class":462,"line":2445},[460,7449,509],{"class":466},[460,7451,7452],{"class":462,"line":2450},[460,7453,522],{"emptyLinePlaceholder":521},[460,7455,7456,7458,7460],{"class":462,"line":2460},[460,7457,2069],{"class":929},[460,7459,2455],{"class":929},[460,7461,1363],{"class":466},[460,7463,7464,7466,7469],{"class":462,"line":2473},[460,7465,2069],{"class":929},[460,7467,7468],{"class":929}," .sub-total::before",[460,7470,1363],{"class":466},[460,7472,7473,7476],{"class":462,"line":2487},[460,7474,7475],{"class":929},"    .amount::before",[460,7477,1348],{"class":466},[460,7479,7480,7482,7484,7486],{"class":462,"line":2492},[460,7481,2463],{"class":900},[460,7483,1961],{"class":466},[460,7485,2468],{"class":1353},[460,7487,1966],{"class":466},[460,7489,7490,7492,7494,7496,7498],{"class":462,"line":2497},[460,7491,2356],{"class":900},[460,7493,1961],{"class":466},[460,7495,5531],{"class":900},[460,7497,2017],{"class":887},[460,7499,1966],{"class":466},[460,7501,7502],{"class":462,"line":2505},[460,7503,509],{"class":466},[460,7505,7506],{"class":462,"line":2516},[460,7507,522],{"emptyLinePlaceholder":521},[460,7509,7510,7512,7515],{"class":462,"line":2529},[460,7511,2069],{"class":929},[460,7513,7514],{"class":929}," .spec",[460,7516,1348],{"class":466},[460,7518,7519,7521,7523,7525],{"class":462,"line":2542},[460,7520,7439],{"class":900},[460,7522,1961],{"class":466},[460,7524,907],{"class":900},[460,7526,1966],{"class":466},[460,7528,7529,7531,7533,7536],{"class":462,"line":2559},[460,7530,2384],{"class":900},[460,7532,1961],{"class":466},[460,7534,7535],{"class":900},"#888",[460,7537,1966],{"class":466},[460,7539,7540,7542,7544,7546,7548],{"class":462,"line":2564},[460,7541,2356],{"class":900},[460,7543,1961],{"class":466},[460,7545,2480],{"class":900},[460,7547,2017],{"class":887},[460,7549,1966],{"class":466},[460,7551,7552,7554,7556,7558,7560],{"class":462,"line":2569},[460,7553,2091],{"class":900},[460,7555,1961],{"class":466},[460,7557,2110],{"class":900},[460,7559,2017],{"class":887},[460,7561,1966],{"class":466},[460,7563,7564],{"class":462,"line":2579},[460,7565,509],{"class":466},[460,7567,7568],{"class":462,"line":2597},[460,7569,522],{"emptyLinePlaceholder":521},[460,7571,7572,7574,7577],{"class":462,"line":2610},[460,7573,2069],{"class":929},[460,7575,7576],{"class":929}," .count",[460,7578,1348],{"class":466},[460,7580,7581,7583,7585,7587],{"class":462,"line":2621},[460,7582,7439],{"class":900},[460,7584,1961],{"class":466},[460,7586,901],{"class":900},[460,7588,1966],{"class":466},[460,7590,7591,7593,7595,7598],{"class":462,"line":2634},[460,7592,2384],{"class":900},[460,7594,1961],{"class":466},[460,7596,7597],{"class":900},"#aaa",[460,7599,1966],{"class":466},[460,7601,7602],{"class":462,"line":2648},[460,7603,509],{"class":466},[460,7605,7606],{"class":462,"line":2653},[460,7607,522],{"emptyLinePlaceholder":521},[460,7609,7610,7613],{"class":462,"line":2658},[460,7611,7612],{"class":929},"    .total",[460,7614,1348],{"class":466},[460,7616,7617,7619,7621,7623,7625],{"class":462,"line":2670},[460,7618,2009],{"class":900},[460,7620,1961],{"class":466},[460,7622,2014],{"class":900},[460,7624,2017],{"class":887},[460,7626,1966],{"class":466},[460,7628,7629,7631,7633,7635,7637],{"class":462,"line":2683},[460,7630,1971],{"class":900},[460,7632,1961],{"class":466},[460,7634,936],{"class":900},[460,7636,2030],{"class":900},[460,7638,1966],{"class":466},[460,7640,7641,7643,7645,7647],{"class":462,"line":2695},[460,7642,2037],{"class":900},[460,7644,1961],{"class":466},[460,7646,2042],{"class":900},[460,7648,1966],{"class":466},[460,7650,7651,7654,7656,7659],{"class":462,"line":2700},[460,7652,7653],{"class":900},"      justify-content",[460,7655,1961],{"class":466},[460,7657,7658],{"class":900},"flex-end",[460,7660,1966],{"class":466},[460,7662,7663,7666,7668,7670,7672,7674,7677],{"class":462,"line":2709},[460,7664,7665],{"class":900},"      border-top",[460,7667,1961],{"class":466},[460,7669,901],{"class":900},[460,7671,2017],{"class":887},[460,7673,7201],{"class":900},[460,7675,7676],{"class":900}," #4e4e4e",[460,7678,1966],{"class":466},[460,7680,7681,7683,7685,7687,7689],{"class":462,"line":2718},[460,7682,1958],{"class":900},[460,7684,1961],{"class":466},[460,7686,2110],{"class":900},[460,7688,2017],{"class":887},[460,7690,1966],{"class":466},[460,7692,7693],{"class":462,"line":2723},[460,7694,509],{"class":466},[460,7696,7697],{"class":462,"line":2732},[460,7698,522],{"emptyLinePlaceholder":521},[460,7700,7701,7703,7706],{"class":462,"line":2750},[460,7702,7612],{"class":929},[460,7704,7705],{"class":929}," .amount",[460,7707,1348],{"class":466},[460,7709,7710,7712,7714,7716,7718],{"class":462,"line":2782},[460,7711,2356],{"class":900},[460,7713,1961],{"class":466},[460,7715,2361],{"class":900},[460,7717,2017],{"class":887},[460,7719,1966],{"class":466},[460,7721,7722,7724,7726,7728],{"class":462,"line":2809},[460,7723,2384],{"class":900},[460,7725,1961],{"class":466},[460,7727,2435],{"class":900},[460,7729,1966],{"class":466},[460,7731,7732,7735,7737,7740],{"class":462,"line":2836},[460,7733,7734],{"class":900},"      font-weight",[460,7736,1961],{"class":466},[460,7738,7739],{"class":900},"700",[460,7741,1966],{"class":466},[460,7743,7744,7746,7748,7750,7752],{"class":462,"line":2856},[460,7745,2637],{"class":900},[460,7747,1961],{"class":466},[460,7749,2549],{"class":900},[460,7751,2017],{"class":887},[460,7753,1966],{"class":466},[460,7755,7756],{"class":462,"line":2865},[460,7757,509],{"class":466},[460,7759,7760,7762,7764],{"class":462,"line":2881},[460,7761,581],{"class":466},[460,7763,1944],{"class":470},[460,7765,473],{"class":466},[460,7767,7768,7770,7772],{"class":462,"line":2887},[460,7769,1776],{"class":466},[460,7771,1880],{"class":470},[460,7773,473],{"class":466},[460,7775,7776],{"class":462,"line":2893},[460,7777,522],{"emptyLinePlaceholder":521},[460,7779,7780,7782,7784],{"class":462,"line":2899},[460,7781,781],{"class":466},[460,7783,1721],{"class":470},[460,7785,473],{"class":466},[460,7787,7788,7790,7792,7794,7796,7798],{"class":462,"line":2905},[460,7789,467],{"class":466},[460,7791,2737],{"class":470},[460,7793,2740],{"class":929},[460,7795,894],{"class":466},[460,7797,2876],{"class":1353},[460,7799,473],{"class":466},[460,7801,7802,7804,7806],{"class":462,"line":2911},[460,7803,581],{"class":466},[460,7805,2737],{"class":470},[460,7807,473],{"class":466},[460,7809,7810,7812,7814,7816,7818,7821],{"class":462,"line":2920},[460,7811,467],{"class":466},[460,7813,2737],{"class":470},[460,7815,2740],{"class":929},[460,7817,894],{"class":466},[460,7819,7820],{"class":1353},"\"total\"",[460,7822,473],{"class":466},[460,7824,7825,7827,7829,7832,7834,7836,7838,7841,7843,7845,7847,7849],{"class":462,"line":2929},[460,7826,2753],{"class":466},[460,7828,2737],{"class":470},[460,7830,7831],{"class":466},">合计：\u003C",[460,7833,460],{"class":470},[460,7835,2740],{"class":929},[460,7837,894],{"class":466},[460,7839,7840],{"class":1353},"\"amount\"",[460,7842,5599],{"class":466},[460,7844,460],{"class":470},[460,7846,5599],{"class":466},[460,7848,2737],{"class":470},[460,7850,473],{"class":466},[460,7852,7853,7855,7857],{"class":462,"line":2935},[460,7854,581],{"class":466},[460,7856,2737],{"class":470},[460,7858,473],{"class":466},[460,7860,7861,7863,7865],{"class":462,"line":2948},[460,7862,467],{"class":466},[460,7864,225],{"class":470},[460,7866,473],{"class":466},[460,7868,7869,7871,7873,7875],{"class":462,"line":2954},[460,7870,1340],{"class":887},[460,7872,2940],{"class":900},[460,7874,2943],{"class":887},[460,7876,1385],{"class":466},[460,7878,7879],{"class":462,"line":2965},[460,7880,2951],{"class":466},[460,7882,7883,7885,7887],{"class":462,"line":2976},[460,7884,2957],{"class":466},[460,7886,2960],{"class":1353},[460,7888,1363],{"class":466},[460,7890,7891,7893,7895],{"class":462,"line":2987},[460,7892,2968],{"class":466},[460,7894,2971],{"class":1353},[460,7896,1363],{"class":466},[460,7898,7899,7901,7904],{"class":462,"line":2998},[460,7900,2979],{"class":466},[460,7902,7903],{"class":900},"289.9",[460,7905,1363],{"class":466},[460,7907,7908,7910,7912],{"class":462,"line":3003},[460,7909,2990],{"class":466},[460,7911,2993],{"class":1353},[460,7913,1363],{"class":466},[460,7915,7916,7919,7921],{"class":462,"line":3008},[460,7917,7918],{"class":466},"        count: ",[460,7920,907],{"class":900},[460,7922,1363],{"class":466},[460,7924,7925,7928,7931],{"class":462,"line":3018},[460,7926,7927],{"class":466},"        spec: { color: ",[460,7929,7930],{"class":1353},"'白色'",[460,7932,5635],{"class":466},[460,7934,7935],{"class":462,"line":3028},[460,7936,1293],{"class":466},[460,7938,7939],{"class":462,"line":3038},[460,7940,2951],{"class":466},[460,7942,7943,7945,7947],{"class":462,"line":3048},[460,7944,2957],{"class":466},[460,7946,3063],{"class":1353},[460,7948,1363],{"class":466},[460,7950,7951,7953,7955],{"class":462,"line":3053},[460,7952,2968],{"class":466},[460,7954,3073],{"class":1353},[460,7956,1363],{"class":466},[460,7958,7959,7961,7964],{"class":462,"line":3058},[460,7960,2979],{"class":466},[460,7962,7963],{"class":900},"109.8",[460,7965,1363],{"class":466},[460,7967,7968,7970,7972],{"class":462,"line":3068},[460,7969,2990],{"class":466},[460,7971,3093],{"class":1353},[460,7973,1363],{"class":466},[460,7975,7976,7978,7980],{"class":462,"line":3078},[460,7977,7918],{"class":466},[460,7979,913],{"class":900},[460,7981,1363],{"class":466},[460,7983,7984,7987,7989,7991,7993],{"class":462,"line":3088},[460,7985,7986],{"class":466},"        spec: { size: ",[460,7988,5626],{"class":1353},[460,7990,5629],{"class":466},[460,7992,5632],{"class":1353},[460,7994,5635],{"class":466},[460,7996,7997],{"class":462,"line":3098},[460,7998,1293],{"class":466},[460,8000,8001],{"class":462,"line":3103},[460,8002,2951],{"class":466},[460,8004,8005,8007,8009],{"class":462,"line":3108},[460,8006,2957],{"class":466},[460,8008,3113],{"class":1353},[460,8010,1363],{"class":466},[460,8012,8013,8015,8017],{"class":462,"line":3118},[460,8014,2968],{"class":466},[460,8016,3123],{"class":1353},[460,8018,1363],{"class":466},[460,8020,8021,8023,8026],{"class":462,"line":3128},[460,8022,2979],{"class":466},[460,8024,8025],{"class":900},"488",[460,8027,1363],{"class":466},[460,8029,8030,8032,8034],{"class":462,"line":3138},[460,8031,2990],{"class":466},[460,8033,3143],{"class":1353},[460,8035,1363],{"class":466},[460,8037,8038,8040,8042],{"class":462,"line":3148},[460,8039,7918],{"class":466},[460,8041,901],{"class":900},[460,8043,1363],{"class":466},[460,8045,8046,8048,8051,8054,8057],{"class":462,"line":3153},[460,8047,7927],{"class":466},[460,8049,8050],{"class":1353},"'青色'",[460,8052,8053],{"class":466},", sum: ",[460,8055,8056],{"class":1353},"'一大四小'",[460,8058,5635],{"class":466},[460,8060,8061],{"class":462,"line":3158},[460,8062,1293],{"class":466},[460,8064,8065],{"class":462,"line":3168},[460,8066,2951],{"class":466},[460,8068,8069,8071,8073],{"class":462,"line":3178},[460,8070,2957],{"class":466},[460,8072,3163],{"class":1353},[460,8074,1363],{"class":466},[460,8076,8077,8079,8081],{"class":462,"line":3188},[460,8078,2968],{"class":466},[460,8080,3173],{"class":1353},[460,8082,1363],{"class":466},[460,8084,8085,8087,8090],{"class":462,"line":3198},[460,8086,2979],{"class":466},[460,8088,8089],{"class":900},"139",[460,8091,1363],{"class":466},[460,8093,8094,8096,8098],{"class":462,"line":3203},[460,8095,2990],{"class":466},[460,8097,3193],{"class":1353},[460,8099,1363],{"class":466},[460,8101,8102,8104,8106],{"class":462,"line":3208},[460,8103,7918],{"class":466},[460,8105,901],{"class":900},[460,8107,1363],{"class":466},[460,8109,8110,8112,8115,8117,8120],{"class":462,"line":3218},[460,8111,7986],{"class":466},[460,8113,8114],{"class":1353},"'小号'",[460,8116,5629],{"class":466},[460,8118,8119],{"class":1353},"'紫色'",[460,8121,8122],{"class":466}," },\n",[460,8124,8125,8128],{"class":462,"line":3228},[460,8126,8127],{"class":466},"        gift: ",[460,8129,8130],{"class":1353},"'50g茶叶,清洗球'\n",[460,8132,8133],{"class":462,"line":3238},[460,8134,552],{"class":466},[460,8136,8137],{"class":462,"line":3248},[460,8138,3355],{"class":466},[460,8140,8141],{"class":462,"line":3253},[460,8142,8143],{"class":942},"    \u002F\u002F  1.根据数据渲染页面\n",[460,8145,8146,8148,8150,8152,8154,8156,8158,8160,8162,8164,8166,8168],{"class":462,"line":3258},[460,8147,3586],{"class":466},[460,8149,3541],{"class":929},[460,8151,2174],{"class":466},[460,8153,3546],{"class":1353},[460,8155,3549],{"class":466},[460,8157,894],{"class":887},[460,8159,3723],{"class":466},[460,8161,6864],{"class":929},[460,8163,2174],{"class":466},[460,8165,3423],{"class":3380},[460,8167,3426],{"class":887},[460,8169,1348],{"class":466},[460,8171,8172],{"class":462,"line":3268},[460,8173,8174],{"class":942},"      \u002F\u002F 对象解构\n",[460,8176,8177,8179,8181,8183,8185,8187,8189,8192,8194,8196,8198,8201,8203,8206,8208,8210],{"class":462,"line":3278},[460,8178,3625],{"class":887},[460,8180,3437],{"class":466},[460,8182,3450],{"class":900},[460,8184,904],{"class":466},[460,8186,3440],{"class":900},[460,8188,904],{"class":466},[460,8190,8191],{"class":900},"count",[460,8193,904],{"class":466},[460,8195,3445],{"class":900},[460,8197,904],{"class":466},[460,8199,8200],{"class":900},"spec",[460,8202,904],{"class":466},[460,8204,8205],{"class":900},"gift",[460,8207,3453],{"class":466},[460,8209,894],{"class":887},[460,8211,3458],{"class":466},[460,8213,8214],{"class":462,"line":3288},[460,8215,8216],{"class":942},"      \u002F\u002F 规格文字模块处理\n",[460,8218,8219,8221,8224,8226,8228,8230,8232,8234,8236,8238],{"class":462,"line":3298},[460,8220,3625],{"class":887},[460,8222,8223],{"class":900}," text",[460,8225,2943],{"class":887},[460,8227,5663],{"class":466},[460,8229,5666],{"class":929},[460,8231,5669],{"class":466},[460,8233,5672],{"class":929},[460,8235,2174],{"class":466},[460,8237,5677],{"class":1353},[460,8239,3754],{"class":466},[460,8241,8242],{"class":462,"line":3303},[460,8243,8244],{"class":942},"      \u002F\u002F 处理赠品模块\n",[460,8246,8247,8249,8251,8253,8256,8259,8261,8263,8265,8268,8270,8272,8274,8276,8278,8281,8283,8286,8288,8290,8292,8294,8297,8299],{"class":462,"line":3308},[460,8248,3625],{"class":887},[460,8250,6846],{"class":900},[460,8252,2943],{"class":887},[460,8254,8255],{"class":466}," gift ",[460,8257,8258],{"class":887},"?",[460,8260,6851],{"class":466},[460,8262,6854],{"class":929},[460,8264,2174],{"class":466},[460,8266,8267],{"class":1353},"','",[460,8269,3596],{"class":466},[460,8271,6864],{"class":929},[460,8273,2174],{"class":466},[460,8275,3423],{"class":3380},[460,8277,3426],{"class":887},[460,8279,8280],{"class":1353}," `\u003Cspan class=\"tag\">【赠品】${",[460,8282,3423],{"class":466},[460,8284,8285],{"class":1353},"}\u003C\u002Fspan>`",[460,8287,3596],{"class":466},[460,8289,5672],{"class":929},[460,8291,2174],{"class":466},[460,8293,6887],{"class":1353},[460,8295,8296],{"class":466},") ",[460,8298,1357],{"class":887},[460,8300,3403],{"class":1353},[460,8302,8303],{"class":462,"line":3318},[460,8304,8305],{"class":942},"      \u002F\u002F 计算小计模块，保留两位小数,在计算有关小数的问题时，我们要将其转化为整数，然后再除回去，就可以避免小数计算时精度的问题\n",[460,8307,8308,8310,8313,8315,8318,8321,8323,8326,8329,8332,8334,8336,8339,8341,8343],{"class":462,"line":3328},[460,8309,3625],{"class":887},[460,8311,8312],{"class":900}," subtotal",[460,8314,2943],{"class":887},[460,8316,8317],{"class":466}," ((price ",[460,8319,8320],{"class":887},"*",[460,8322,3751],{"class":900},[460,8324,8325],{"class":887}," *",[460,8327,8328],{"class":466}," count) ",[460,8330,8331],{"class":887},"\u002F",[460,8333,3751],{"class":900},[460,8335,3596],{"class":466},[460,8337,8338],{"class":929},"toFixed",[460,8340,2174],{"class":466},[460,8342,907],{"class":900},[460,8344,3754],{"class":466},[460,8346,8347],{"class":462,"line":3337},[460,8348,522],{"emptyLinePlaceholder":521},[460,8350,8351,8354],{"class":462,"line":3347},[460,8352,8353],{"class":887},"      return",[460,8355,3470],{"class":1353},[460,8357,8358],{"class":462,"line":3352},[460,8359,8360],{"class":1353},"        \u003Cdiv class=\"item\">\n",[460,8362,8363,8366,8368],{"class":462,"line":3358},[460,8364,8365],{"class":1353},"          \u003Cimg src=\"${",[460,8367,3450],{"class":466},[460,8369,3487],{"class":1353},[460,8371,8372,8375,8377,8380,8382],{"class":462,"line":3363},[460,8373,8374],{"class":1353},"          \u003Cp class=\"name\">${",[460,8376,3440],{"class":466},[460,8378,8379],{"class":1353},"}${",[460,8381,6393],{"class":466},[460,8383,3498],{"class":1353},[460,8385,8386,8389,8392],{"class":462,"line":3369},[460,8387,8388],{"class":1353},"          \u003Cp class=\"spec\">${",[460,8390,8391],{"class":466},"text",[460,8393,3498],{"class":1353},[460,8395,8396,8399,8401,8403,8405,8407,8409,8412],{"class":462,"line":3386},[460,8397,8398],{"class":1353},"          \u003Cp class=\"price\">${",[460,8400,3445],{"class":466},[460,8402,6000],{"class":1353},[460,8404,8338],{"class":929},[460,8406,2174],{"class":1353},[460,8408,907],{"class":900},[460,8410,8411],{"class":1353},")",[460,8413,3498],{"class":1353},[460,8415,8416,8419,8421],{"class":462,"line":3392},[460,8417,8418],{"class":1353},"          \u003Cp class=\"count\">x${",[460,8420,8191],{"class":466},[460,8422,3498],{"class":1353},[460,8424,8425,8428,8431],{"class":462,"line":3406},[460,8426,8427],{"class":1353},"          \u003Cp class=\"sub-total\">${",[460,8429,8430],{"class":466},"subtotal",[460,8432,3498],{"class":1353},[460,8434,8435],{"class":462,"line":3412},[460,8436,8437],{"class":1353},"        \u003C\u002Fdiv> \n",[460,8439,8440],{"class":462,"line":3431},[460,8441,8442],{"class":1353},"             `\n",[460,8444,8445,8448,8450,8452,8454],{"class":462,"line":3461},[460,8446,8447],{"class":466},"    }).",[460,8449,5672],{"class":929},[460,8451,2174],{"class":466},[460,8453,6887],{"class":1353},[460,8455,3754],{"class":466},[460,8457,8458],{"class":462,"line":3473},[460,8459,8460],{"class":942},"    \u002F\u002F 合计模块   prev为累计值   item为当前元素   为了保证精度也先把它转化为整数计算完再变回去\n",[460,8462,8463,8465,8468,8470,8472,8475,8478,8481,8483,8485,8487,8490,8493,8496,8499,8501,8503,8505,8508,8510,8512,8514,8516],{"class":462,"line":3479},[460,8464,1340],{"class":887},[460,8466,8467],{"class":900}," total",[460,8469,2943],{"class":887},[460,8471,3723],{"class":466},[460,8473,8474],{"class":929},"reduce",[460,8476,8477],{"class":466},"((",[460,8479,8480],{"class":3380},"prev",[460,8482,904],{"class":466},[460,8484,3423],{"class":3380},[460,8486,8296],{"class":466},[460,8488,8489],{"class":887},"=>",[460,8491,8492],{"class":466}," prev ",[460,8494,8495],{"class":887},"+",[460,8497,8498],{"class":466}," (item.price ",[460,8500,8320],{"class":887},[460,8502,3751],{"class":900},[460,8504,8325],{"class":887},[460,8506,8507],{"class":466}," item.count) ",[460,8509,8331],{"class":887},[460,8511,3751],{"class":900},[460,8513,904],{"class":466},[460,8515,936],{"class":900},[460,8517,3754],{"class":466},[460,8519,8520,8522,8524,8526,8529,8531,8533,8536,8538,8540,8542],{"class":462,"line":3490},[460,8521,3586],{"class":466},[460,8523,3541],{"class":929},[460,8525,2174],{"class":466},[460,8527,8528],{"class":1353},"'.amount'",[460,8530,3549],{"class":466},[460,8532,894],{"class":887},[460,8534,8535],{"class":466}," total.",[460,8537,8338],{"class":929},[460,8539,2174],{"class":466},[460,8541,907],{"class":900},[460,8543,3754],{"class":466},[460,8545,8546,8548,8550],{"class":462,"line":3501},[460,8547,581],{"class":466},[460,8549,225],{"class":470},[460,8551,473],{"class":466},[460,8553,8554,8556,8558],{"class":462,"line":3511},[460,8555,1776],{"class":466},[460,8557,1721],{"class":470},[460,8559,473],{"class":466},[460,8561,8562],{"class":462,"line":3517},[460,8563,522],{"emptyLinePlaceholder":521},[460,8565,8566,8568,8570],{"class":462,"line":3523},[460,8567,1776],{"class":466},[460,8569,704],{"class":470},[460,8571,473],{"class":466},[18,8573,8575],{"id":8574},"_411-编程思想","4.11 编程思想",[23,8577,8579],{"id":8578},"_4111-面向过程介绍","4.11.1 面向过程介绍",[14,8581,8582,8585],{},[3944,8583,8584],{},"面向过程"," 就是分析出解决问题所需要的步骤，然后用函数把这些步骤一步一步实现，使用的时候再一个一个的依次",[14,8587,8588],{},"调用就可以了",[14,8590,8591],{},[30,8592],{"alt":32,"src":8593},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-278.png",[23,8595,8597],{"id":8596},"_4112-面向对象","4.11.2 面向对象",[14,8599,8600],{},"面向对象编程具有灵活、代码可复用、容易维护和开发的优点，更适合多人合作的大型软件项目",[14,8602,8603],{},[30,8604],{"alt":32,"src":8605},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-279.png",[14,8607,8608],{},"面向对象的特性：",[40,8610,8611,8614,8617],{},[43,8612,8613],{},"封装性",[43,8615,8616],{},"继承性",[43,8618,8619],{},"多态性",[23,8621,8623],{"id":8622},"_4113-两者比较","4.11.3 两者比较",[14,8625,8626],{},[30,8627],{"alt":32,"src":8628},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-280.png",[18,8630,8632],{"id":8631},"_412-构造函数回顾","4.12 构造函数回顾",[14,8634,8635],{},[30,8636],{"alt":32,"src":8637},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-281.png",[14,8639,8640],{},[30,8641],{"alt":32,"src":8642},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-282.png",[14,8644,8645],{},"构造函数在进行实例化创建对象的时候，会先创建一个空的对象，这个空的对象，属性和方法存在堆里，栈里存放存放堆里内容的地址，然后构造函数的this指向新对象；执行构造函数代码，修改this，添加新的属性；返回新对象，这样导致了一个问题，相同的方法在各自的堆里都存了一下，导致了内存的浪费问题",[14,8647,8648],{},[30,8649],{"alt":32,"src":8650},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-283.png",[18,8652,8654],{"id":8653},"_413-原型","4.13 原型",[23,8656,8658],{"id":8657},"_4131-原型对象的认识","4.13.1 原型对象的认识",[14,8660,8661],{},"可以解决构造函数有时导致内存浪费问题，实现方法共享",[14,8663,8664],{},[30,8665],{"alt":32,"src":8666},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-284.png",[14,8668,8669],{},[30,8670],{"alt":32,"src":8671},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-285.png",[14,8673,8674],{},"原型是构造函数的属性，它也是一个对象",[14,8676,8677],{},"公共的属性写在构造函数里边，因为这个属性一会在实例化的时候会赋值",[14,8679,8680],{},"公共的方法写在原型对象身上，这样就可以一起使用了",[451,8682,8684],{"className":453,"code":8683,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003C!-- 构造函数  公共的属性和方法  封装到构造函数里面了 -->\n  \u003Cscript>\n    function Star(uname, age) {\n      this.uname = uname,\n        this.age = age\n      \u002F\u002F this.sing = function () {\n      \u002F\u002F   console.log('唱歌')\n\n      \u002F\u002F }\n    }\n    Star.prototype.sing = function () {\n      console.log('唱歌')\n    }\n    \u002F\u002F console.dir(Star.prototype)\n    const pink = new Star('pink', 18)\n    const red = new Star('red', 20)\n    pink.sing()\n    console.log(pink.sing = red.sing)   \u002F\u002F如果不使用圆型对象就是false，使用之后就是true,现在是true\n\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,8685,8686,8694,8699,8707,8712,8717,8722,8727,8732,8736,8741,8745,8750,8755,8759,8764,8769,8774,8779,8784,8788,8796],{"__ignoreMap":32},[460,8687,8688,8690,8692],{"class":462,"line":463},[460,8689,781],{"class":466},[460,8691,1721],{"class":470},[460,8693,473],{"class":466},[460,8695,8696],{"class":462,"line":476},[460,8697,8698],{"class":942},"  \u003C!-- 构造函数  公共的属性和方法  封装到构造函数里面了 -->\n",[460,8700,8701,8703,8705],{"class":462,"line":482},[460,8702,467],{"class":466},[460,8704,225],{"class":470},[460,8706,473],{"class":466},[460,8708,8709],{"class":462,"line":488},[460,8710,8711],{"class":466},"    function Star(uname, age) {\n",[460,8713,8714],{"class":462,"line":494},[460,8715,8716],{"class":466},"      this.uname = uname,\n",[460,8718,8719],{"class":462,"line":500},[460,8720,8721],{"class":466},"        this.age = age\n",[460,8723,8724],{"class":462,"line":506},[460,8725,8726],{"class":466},"      \u002F\u002F this.sing = function () {\n",[460,8728,8729],{"class":462,"line":512},[460,8730,8731],{"class":466},"      \u002F\u002F   console.log('唱歌')\n",[460,8733,8734],{"class":462,"line":518},[460,8735,522],{"emptyLinePlaceholder":521},[460,8737,8738],{"class":462,"line":525},[460,8739,8740],{"class":466},"      \u002F\u002F }\n",[460,8742,8743],{"class":462,"line":531},[460,8744,509],{"class":466},[460,8746,8747],{"class":462,"line":537},[460,8748,8749],{"class":466},"    Star.prototype.sing = function () {\n",[460,8751,8752],{"class":462,"line":543},[460,8753,8754],{"class":466},"      console.log('唱歌')\n",[460,8756,8757],{"class":462,"line":549},[460,8758,509],{"class":466},[460,8760,8761],{"class":462,"line":555},[460,8762,8763],{"class":466},"    \u002F\u002F console.dir(Star.prototype)\n",[460,8765,8766],{"class":462,"line":560},[460,8767,8768],{"class":466},"    const pink = new Star('pink', 18)\n",[460,8770,8771],{"class":462,"line":566},[460,8772,8773],{"class":466},"    const red = new Star('red', 20)\n",[460,8775,8776],{"class":462,"line":572},[460,8777,8778],{"class":466},"    pink.sing()\n",[460,8780,8781],{"class":462,"line":578},[460,8782,8783],{"class":466},"    console.log(pink.sing = red.sing)   \u002F\u002F如果不使用圆型对象就是false，使用之后就是true,现在是true\n",[460,8785,8786],{"class":462,"line":812},[460,8787,522],{"emptyLinePlaceholder":521},[460,8789,8790,8792,8794],{"class":462,"line":818},[460,8791,581],{"class":466},[460,8793,225],{"class":470},[460,8795,473],{"class":466},[460,8797,8798,8800,8802],{"class":462,"line":824},[460,8799,1776],{"class":466},[460,8801,1721],{"class":470},[460,8803,473],{"class":466},[14,8805,8806],{},[30,8807],{"alt":32,"src":8808},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-286.png",[451,8810,8812],{"className":453,"code":8811,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    let that\n    function Star(uname) {\n      this.uname = uname\n      that = this\n    }\n    \u002F\u002F 实例对象是 ldh\n    const ldh = new Star('刘德华')\n    console.log(that === ldh)    \u002F\u002Ftrue   说明构造函数里的this就是实例对象\n\n    Star.sing = function () {\n      console.log('唱歌')\n    }\n    ldh.sing()    \u002F\u002F原型对象里的函数this指向的也是实例对象\n\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,8813,8814,8822,8830,8835,8840,8845,8850,8854,8859,8864,8869,8873,8878,8882,8886,8891,8895,8903],{"__ignoreMap":32},[460,8815,8816,8818,8820],{"class":462,"line":463},[460,8817,781],{"class":466},[460,8819,1721],{"class":470},[460,8821,473],{"class":466},[460,8823,8824,8826,8828],{"class":462,"line":476},[460,8825,467],{"class":466},[460,8827,225],{"class":470},[460,8829,473],{"class":466},[460,8831,8832],{"class":462,"line":482},[460,8833,8834],{"class":466},"    let that\n",[460,8836,8837],{"class":462,"line":488},[460,8838,8839],{"class":466},"    function Star(uname) {\n",[460,8841,8842],{"class":462,"line":494},[460,8843,8844],{"class":466},"      this.uname = uname\n",[460,8846,8847],{"class":462,"line":500},[460,8848,8849],{"class":466},"      that = this\n",[460,8851,8852],{"class":462,"line":506},[460,8853,509],{"class":466},[460,8855,8856],{"class":462,"line":512},[460,8857,8858],{"class":466},"    \u002F\u002F 实例对象是 ldh\n",[460,8860,8861],{"class":462,"line":518},[460,8862,8863],{"class":466},"    const ldh = new Star('刘德华')\n",[460,8865,8866],{"class":462,"line":525},[460,8867,8868],{"class":466},"    console.log(that === ldh)    \u002F\u002Ftrue   说明构造函数里的this就是实例对象\n",[460,8870,8871],{"class":462,"line":531},[460,8872,522],{"emptyLinePlaceholder":521},[460,8874,8875],{"class":462,"line":537},[460,8876,8877],{"class":466},"    Star.sing = function () {\n",[460,8879,8880],{"class":462,"line":543},[460,8881,8754],{"class":466},[460,8883,8884],{"class":462,"line":549},[460,8885,509],{"class":466},[460,8887,8888],{"class":462,"line":555},[460,8889,8890],{"class":466},"    ldh.sing()    \u002F\u002F原型对象里的函数this指向的也是实例对象\n",[460,8892,8893],{"class":462,"line":560},[460,8894,522],{"emptyLinePlaceholder":521},[460,8896,8897,8899,8901],{"class":462,"line":566},[460,8898,581],{"class":466},[460,8900,225],{"class":470},[460,8902,473],{"class":466},[460,8904,8905,8907,8909],{"class":462,"line":572},[460,8906,1776],{"class":466},[460,8908,1721],{"class":470},[460,8910,473],{"class":466},[14,8912,8913],{},"构造函数的this指向的是实例对象；",[14,8915,8916],{},"原型对象的this指向的也是实例对象（因为是实例对象去调用这个方法）",[23,8918,8920],{"id":8919},"_4132-数组扩展方法","4.13.2 数组扩展方法",[14,8922,8923],{},[30,8924],{"alt":32,"src":8925},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-287.png",[451,8927,8929],{"className":453,"code":8928,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    \u002F\u002F 注意数组不可以直接用min和max求最值\n    const arr = [1, 2, 3]\n    \u002F\u002F 自己定义数组的扩展方法\n    \u002F\u002F 1.我们定义的这个方法，任何一个数组实例对象都可以使用\n    \u002F\u002F 2.自定义的方法写到prototype身上\n    \u002F\u002F ①.最大值\n    Array.prototype.max = function () {\n      \u002F\u002F 使用展开运算符,这里不是剩余运算符   ...为展开运算符\n      return Math.max(...this)\n      \u002F\u002F 原型对象中函数的this指向的是实例对象   这里指向的是arr\n    }\n    console.log(arr.max())\n    \u002F\u002F ②最小值\n    Array.prototype.min = function () {\n      return Math.min(...this)\n    }\n    console.log(arr.min())\n    \u002F\u002F③求和\n    Array.prototype.sum = function () {\n      return this.reduce((prev, current) => prev + current, 0)\n    }\n    console.log(arr.sum())\n    \u002F\u002F ③排序\n    Array.prototype.rever = function () {\n      return this.reverse()\n    }\n    console.log(arr.rever())\n\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,8930,8931,8939,8947,8952,8957,8962,8967,8972,8977,8982,8987,8992,8997,9001,9006,9011,9016,9021,9025,9030,9035,9040,9045,9049,9054,9059,9064,9069,9073,9078,9082,9090],{"__ignoreMap":32},[460,8932,8933,8935,8937],{"class":462,"line":463},[460,8934,781],{"class":466},[460,8936,1721],{"class":470},[460,8938,473],{"class":466},[460,8940,8941,8943,8945],{"class":462,"line":476},[460,8942,467],{"class":466},[460,8944,225],{"class":470},[460,8946,473],{"class":466},[460,8948,8949],{"class":462,"line":482},[460,8950,8951],{"class":466},"    \u002F\u002F 注意数组不可以直接用min和max求最值\n",[460,8953,8954],{"class":462,"line":488},[460,8955,8956],{"class":466},"    const arr = [1, 2, 3]\n",[460,8958,8959],{"class":462,"line":494},[460,8960,8961],{"class":466},"    \u002F\u002F 自己定义数组的扩展方法\n",[460,8963,8964],{"class":462,"line":500},[460,8965,8966],{"class":466},"    \u002F\u002F 1.我们定义的这个方法，任何一个数组实例对象都可以使用\n",[460,8968,8969],{"class":462,"line":506},[460,8970,8971],{"class":466},"    \u002F\u002F 2.自定义的方法写到prototype身上\n",[460,8973,8974],{"class":462,"line":512},[460,8975,8976],{"class":466},"    \u002F\u002F ①.最大值\n",[460,8978,8979],{"class":462,"line":518},[460,8980,8981],{"class":466},"    Array.prototype.max = function () {\n",[460,8983,8984],{"class":462,"line":525},[460,8985,8986],{"class":466},"      \u002F\u002F 使用展开运算符,这里不是剩余运算符   ...为展开运算符\n",[460,8988,8989],{"class":462,"line":531},[460,8990,8991],{"class":466},"      return Math.max(...this)\n",[460,8993,8994],{"class":462,"line":537},[460,8995,8996],{"class":466},"      \u002F\u002F 原型对象中函数的this指向的是实例对象   这里指向的是arr\n",[460,8998,8999],{"class":462,"line":543},[460,9000,509],{"class":466},[460,9002,9003],{"class":462,"line":549},[460,9004,9005],{"class":466},"    console.log(arr.max())\n",[460,9007,9008],{"class":462,"line":555},[460,9009,9010],{"class":466},"    \u002F\u002F ②最小值\n",[460,9012,9013],{"class":462,"line":560},[460,9014,9015],{"class":466},"    Array.prototype.min = function () {\n",[460,9017,9018],{"class":462,"line":566},[460,9019,9020],{"class":466},"      return Math.min(...this)\n",[460,9022,9023],{"class":462,"line":572},[460,9024,509],{"class":466},[460,9026,9027],{"class":462,"line":578},[460,9028,9029],{"class":466},"    console.log(arr.min())\n",[460,9031,9032],{"class":462,"line":812},[460,9033,9034],{"class":466},"    \u002F\u002F③求和\n",[460,9036,9037],{"class":462,"line":818},[460,9038,9039],{"class":466},"    Array.prototype.sum = function () {\n",[460,9041,9042],{"class":462,"line":824},[460,9043,9044],{"class":466},"      return this.reduce((prev, current) => prev + current, 0)\n",[460,9046,9047],{"class":462,"line":2074},[460,9048,509],{"class":466},[460,9050,9051],{"class":462,"line":2088},[460,9052,9053],{"class":466},"    console.log(arr.sum())\n",[460,9055,9056],{"class":462,"line":2103},[460,9057,9058],{"class":466},"    \u002F\u002F ③排序\n",[460,9060,9061],{"class":462,"line":2122},[460,9062,9063],{"class":466},"    Array.prototype.rever = function () {\n",[460,9065,9066],{"class":462,"line":2144},[460,9067,9068],{"class":466},"      return this.reverse()\n",[460,9070,9071],{"class":462,"line":2158},[460,9072,509],{"class":466},[460,9074,9075],{"class":462,"line":2163},[460,9076,9077],{"class":466},"    console.log(arr.rever())\n",[460,9079,9080],{"class":462,"line":2168},[460,9081,522],{"emptyLinePlaceholder":521},[460,9083,9084,9086,9088],{"class":462,"line":2183},[460,9085,581],{"class":466},[460,9087,225],{"class":470},[460,9089,473],{"class":466},[460,9091,9092,9094,9096],{"class":462,"line":2194},[460,9093,1776],{"class":466},[460,9095,1721],{"class":470},[460,9097,473],{"class":466},[14,9099,9100],{},[30,9101],{"alt":32,"src":9102},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-288.png",[23,9104,9106],{"id":9105},"_4133-constructor-属性","4.13.3 constructor 属性",[14,9108,9109],{},"每个原型对象里面都有个constructor 属性（constructor 构造函数）",[14,9111,9112],{},[30,9113],{"alt":32,"src":9114},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-289.png",[451,9116,9118],{"className":453,"code":9117,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    \u002F\u002Fconstructor   单词是构造函数的意思\n    function Star() {\n    }\n    const ldh = new Star()\n    console.log(Star.prototype)\n    console.log(Star.prototype.constructor === Star)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,9119,9120,9128,9136,9141,9146,9150,9155,9160,9165,9173],{"__ignoreMap":32},[460,9121,9122,9124,9126],{"class":462,"line":463},[460,9123,781],{"class":466},[460,9125,1721],{"class":470},[460,9127,473],{"class":466},[460,9129,9130,9132,9134],{"class":462,"line":476},[460,9131,467],{"class":466},[460,9133,225],{"class":470},[460,9135,473],{"class":466},[460,9137,9138],{"class":462,"line":482},[460,9139,9140],{"class":466},"    \u002F\u002Fconstructor   单词是构造函数的意思\n",[460,9142,9143],{"class":462,"line":488},[460,9144,9145],{"class":466},"    function Star() {\n",[460,9147,9148],{"class":462,"line":494},[460,9149,509],{"class":466},[460,9151,9152],{"class":462,"line":500},[460,9153,9154],{"class":466},"    const ldh = new Star()\n",[460,9156,9157],{"class":462,"line":506},[460,9158,9159],{"class":466},"    console.log(Star.prototype)\n",[460,9161,9162],{"class":462,"line":512},[460,9163,9164],{"class":466},"    console.log(Star.prototype.constructor === Star)\n",[460,9166,9167,9169,9171],{"class":462,"line":518},[460,9168,581],{"class":466},[460,9170,225],{"class":470},[460,9172,473],{"class":466},[460,9174,9175,9177,9179],{"class":462,"line":525},[460,9176,1776],{"class":466},[460,9178,1721],{"class":470},[460,9180,473],{"class":466},[14,9182,9183],{},[30,9184],{"alt":32,"src":9185},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-290.png",[14,9187,9188],{},"问题：如果很多的公共方法的话,那么要写太多了,较为繁琐,所以我们考虑将这些方法塞一个对象中，例：",[451,9190,9192],{"className":453,"code":9191,"language":455,"meta":32,"style":32},"  \u003Cscript>\n    \u002F\u002Fconstructor   单词是构造函数的意思\n    function Star() {\n    }\n    \u002F\u002F const ldh = new Star()\n    \u002F\u002F console.log(Star.prototype)\n    \u002F\u002F console.log(Star.prototype.constructor === Star)\n\n    \u002F\u002F 如果很多的公共方法的话,那么要写太多了,较为繁琐\n    \u002F\u002F Star.prototype.sing = function () {\n    \u002F\u002F   console.log('唱歌')\n    \u002F\u002F }\n    \u002F\u002F Star.prototype.dance = function () {\n    \u002F\u002F   console.log('跳舞')\n    \u002F\u002F }\n    console.log(Star.prototype)\n    Star.prototype = {\n      sing: function () {\n        console.log('唱歌')\n      },\n      dance: function () {\n        console.log('跳舞')\n      }\n    }\n    console.log(Star.prototype)\n  \u003C\u002Fscript>\n",[457,9193,9194,9202,9206,9210,9214,9219,9224,9229,9233,9238,9243,9248,9253,9258,9263,9267,9271,9276,9281,9286,9290,9295,9300,9304,9308,9312],{"__ignoreMap":32},[460,9195,9196,9198,9200],{"class":462,"line":463},[460,9197,467],{"class":466},[460,9199,225],{"class":470},[460,9201,473],{"class":466},[460,9203,9204],{"class":462,"line":476},[460,9205,9140],{"class":466},[460,9207,9208],{"class":462,"line":482},[460,9209,9145],{"class":466},[460,9211,9212],{"class":462,"line":488},[460,9213,509],{"class":466},[460,9215,9216],{"class":462,"line":494},[460,9217,9218],{"class":466},"    \u002F\u002F const ldh = new Star()\n",[460,9220,9221],{"class":462,"line":500},[460,9222,9223],{"class":466},"    \u002F\u002F console.log(Star.prototype)\n",[460,9225,9226],{"class":462,"line":506},[460,9227,9228],{"class":466},"    \u002F\u002F console.log(Star.prototype.constructor === Star)\n",[460,9230,9231],{"class":462,"line":512},[460,9232,522],{"emptyLinePlaceholder":521},[460,9234,9235],{"class":462,"line":518},[460,9236,9237],{"class":466},"    \u002F\u002F 如果很多的公共方法的话,那么要写太多了,较为繁琐\n",[460,9239,9240],{"class":462,"line":525},[460,9241,9242],{"class":466},"    \u002F\u002F Star.prototype.sing = function () {\n",[460,9244,9245],{"class":462,"line":531},[460,9246,9247],{"class":466},"    \u002F\u002F   console.log('唱歌')\n",[460,9249,9250],{"class":462,"line":537},[460,9251,9252],{"class":466},"    \u002F\u002F }\n",[460,9254,9255],{"class":462,"line":543},[460,9256,9257],{"class":466},"    \u002F\u002F Star.prototype.dance = function () {\n",[460,9259,9260],{"class":462,"line":549},[460,9261,9262],{"class":466},"    \u002F\u002F   console.log('跳舞')\n",[460,9264,9265],{"class":462,"line":555},[460,9266,9252],{"class":466},[460,9268,9269],{"class":462,"line":560},[460,9270,9159],{"class":466},[460,9272,9273],{"class":462,"line":566},[460,9274,9275],{"class":466},"    Star.prototype = {\n",[460,9277,9278],{"class":462,"line":572},[460,9279,9280],{"class":466},"      sing: function () {\n",[460,9282,9283],{"class":462,"line":578},[460,9284,9285],{"class":466},"        console.log('唱歌')\n",[460,9287,9288],{"class":462,"line":812},[460,9289,1293],{"class":466},[460,9291,9292],{"class":462,"line":818},[460,9293,9294],{"class":466},"      dance: function () {\n",[460,9296,9297],{"class":462,"line":824},[460,9298,9299],{"class":466},"        console.log('跳舞')\n",[460,9301,9302],{"class":462,"line":2074},[460,9303,552],{"class":466},[460,9305,9306],{"class":462,"line":2088},[460,9307,509],{"class":466},[460,9309,9310],{"class":462,"line":2103},[460,9311,9159],{"class":466},[460,9313,9314,9316,9318],{"class":462,"line":2122},[460,9315,581],{"class":466},[460,9317,225],{"class":470},[460,9319,473],{"class":466},[14,9321,9322],{},"进行输出结果后会发现：",[14,9324,9325],{},[30,9326],{"alt":32,"src":9327},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-291.png",[14,9329,9330],{},"将方法塞进这个原型对象中，打印后没有constructor，也就是说这个原型对象是谁的不知道了，因为这里进行了赋值操作，把以前的内容直接给覆盖了，赋值把以前的原型对象给覆盖了，指向了现在自己创建的这个对象了",[14,9332,9333],{},"所以，要重新指回创造这个原型对象的构造函数",[451,9335,9339],{"className":9336,"code":9337,"language":9338,"meta":32,"style":32},"language-javascript shiki shiki-themes github-light github-dark","Star.prototype = {\n\u002F\u002F 要重新指回创造这个原型对象的构造函数\n  constructor: Star,\n  sing: function () {\n    console.log('唱歌')\n   },\n   dance: function () {\n     console.log('跳舞')\n   }\n}\n","javascript",[457,9340,9341,9355,9360,9365,9377,9391,9396,9407,9421,9425],{"__ignoreMap":32},[460,9342,9343,9346,9348,9351,9353],{"class":462,"line":463},[460,9344,9345],{"class":900},"Star",[460,9347,6000],{"class":466},[460,9349,9350],{"class":900},"prototype",[460,9352,2943],{"class":887},[460,9354,1348],{"class":466},[460,9356,9357],{"class":462,"line":476},[460,9358,9359],{"class":942},"\u002F\u002F 要重新指回创造这个原型对象的构造函数\n",[460,9361,9362],{"class":462,"line":482},[460,9363,9364],{"class":466},"  constructor: Star,\n",[460,9366,9367,9370,9372,9374],{"class":462,"line":488},[460,9368,9369],{"class":929},"  sing",[460,9371,1961],{"class":466},[460,9373,3976],{"class":887},[460,9375,9376],{"class":466}," () {\n",[460,9378,9379,9382,9384,9386,9389],{"class":462,"line":494},[460,9380,9381],{"class":466},"    console.",[460,9383,930],{"class":929},[460,9385,2174],{"class":466},[460,9387,9388],{"class":1353},"'唱歌'",[460,9390,3754],{"class":466},[460,9392,9393],{"class":462,"line":500},[460,9394,9395],{"class":466},"   },\n",[460,9397,9398,9401,9403,9405],{"class":462,"line":506},[460,9399,9400],{"class":929},"   dance",[460,9402,1961],{"class":466},[460,9404,3976],{"class":887},[460,9406,9376],{"class":466},[460,9408,9409,9412,9414,9416,9419],{"class":462,"line":512},[460,9410,9411],{"class":466},"     console.",[460,9413,930],{"class":929},[460,9415,2174],{"class":466},[460,9417,9418],{"class":1353},"'跳舞'",[460,9420,3754],{"class":466},[460,9422,9423],{"class":462,"line":518},[460,9424,815],{"class":466},[460,9426,9427],{"class":462,"line":525},[460,9428,821],{"class":466},[14,9430,9431],{},[30,9432],{"alt":32,"src":9433},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-292.png",[14,9435,9436],{},"总结1：",[14,9438,9439],{},"如果有多个对象的方法，我们可以给原型对象采取对象形式赋值，但是这样就会覆盖构造函数原型对象原来的内容，这样修改后的原型对象 constructor 就不再指向当前构造函数了",[14,9441,9442],{},"此时，我们可以在修改后的原型对象中，添加一个 constructor 指向原来的构造函数",[14,9444,9445],{},"constructor指的是他的来源",[14,9447,9448],{},[30,9449],{"alt":32,"src":9450},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-293.png",[14,9452,9453],{},[30,9454],{"alt":32,"src":9455},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-294.png",[14,9457,9458],{},"总结2：",[14,9460,9461],{},[30,9462],{"alt":32,"src":9463},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-295.png",[14,9465,9466],{},[30,9467],{"alt":32,"src":9468},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-296.png",[14,9470,9471],{},[30,9472],{"alt":32,"src":9473},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-297.png",[23,9475,9477],{"id":9476},"_4134-对象原型","4.13.4 对象原型",[14,9479,9480],{},"解释实例对象可以访问原型对象里边的方法的问题（解释实例对象如何拿到方法的问题）",[14,9482,9483],{},"对象原型就是__proto__这个属性",[14,9485,9486],{},[30,9487],{"alt":32,"src":9488},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-298.png",[14,9490,9491],{},[30,9492],{"alt":32,"src":9493},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-299.png",[14,9495,9496],{},[30,9497],{"alt":32,"src":9498},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-300.png",[14,9500,9501],{},[30,9502],{"alt":32,"src":9503},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-301.png",[451,9505,9507],{"className":453,"code":9506,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    function Star() {\n    }\n    const ldh = new Star()\n    console.log(ldh)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,9508,9509,9517,9525,9529,9533,9537,9542,9550],{"__ignoreMap":32},[460,9510,9511,9513,9515],{"class":462,"line":463},[460,9512,781],{"class":466},[460,9514,1721],{"class":470},[460,9516,473],{"class":466},[460,9518,9519,9521,9523],{"class":462,"line":476},[460,9520,467],{"class":466},[460,9522,225],{"class":470},[460,9524,473],{"class":466},[460,9526,9527],{"class":462,"line":482},[460,9528,9145],{"class":466},[460,9530,9531],{"class":462,"line":488},[460,9532,509],{"class":466},[460,9534,9535],{"class":462,"line":494},[460,9536,9154],{"class":466},[460,9538,9539],{"class":462,"line":500},[460,9540,9541],{"class":466},"    console.log(ldh)\n",[460,9543,9544,9546,9548],{"class":462,"line":506},[460,9545,581],{"class":466},[460,9547,225],{"class":470},[460,9549,473],{"class":466},[460,9551,9552,9554,9556],{"class":462,"line":512},[460,9553,1776],{"class":466},[460,9555,1721],{"class":470},[460,9557,473],{"class":466},[14,9559,9560],{},"__proto__是非标准属性，在浏览器中的写法可能不同，下面是谷歌浏览器的表示方法，最新的浏览器基本上都是使用的下面这种方式，就理解为两个是相同的就可以，这个是只读的，不可以进行修改",[14,9562,9563],{},"原型对象中[[Prototype]]只是现在大部分浏览器对对象原型的展示，以前浏览器使用的是__proto__，但是要访问这个原型对象的话，还是得使用__proto__",[14,9565,9566],{},[30,9567],{"alt":32,"src":9568},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-302.png",[14,9570,9571],{},"理解总结: 对象原型__proto__指向该构造函数的原型对象",[14,9573,9574],{},"对象原型指向原型对象",[14,9576,9577],{},[30,9578],{"alt":32,"src":9579},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-303.png",[14,9581,9582],{},[30,9583],{"alt":32,"src":9584},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-304.png",[14,9586,9587],{},[30,9588],{"alt":32,"src":9589},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-305.png",[23,9591,9593],{"id":9592},"_4135-构造函数对象原型和原型对象总结","4.13.5 构造函数，对象原型和原型对象总结",[14,9595,9596],{},[30,9597],{"alt":32,"src":9598},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-306.png",[103,9600,9601,9604,9607,9610],{},[43,9602,9603],{},"构造函数通过new的形式实例化得到实例对象",[43,9605,9606],{},"每一个实例对象中都有一个__proto__属性，这个属性中有constructor属性，指向构造函数",[43,9608,9609],{},"构造函数公共的属性和方法放在原型对象中，这个原型对象（prototype）是构造函数本身的一个属性，它指向的是一个对象。只要创建一个构造函数就会自动产生一个原型对象。原型对象属于构造函数，构造函数通过prototype引用它，原型对象有一个constructor属性，指回构造函数",[43,9611,9612],{},"每个实例对象的__proto__属性都会指向原型对象（prototype）",[14,9614,9615],{},[30,9616],{"alt":32,"src":9617},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-307.png",[14,9619,9620],{},"题目梳理：",[14,9622,9623],{},[30,9624],{"alt":32,"src":9625},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-308.png",[23,9627,9629],{"id":9628},"_4136-原型继承","4.13.6 原型继承",[14,9631,9632],{},[30,9633],{"alt":32,"src":9634},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-309.png",[14,9636,9637],{},[30,9638],{"alt":32,"src":9639},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-310.png",[14,9641,9642],{},[30,9643],{"alt":32,"src":9644},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-311.png",[14,9646,9647],{},[30,9648],{"alt":32,"src":9649},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-312.png",[14,9651,9652],{},[30,9653],{"alt":32,"src":9654},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-313.png",[14,9656,9657],{},[30,9658],{"alt":32,"src":9659},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-314.png",[14,9661,9662],{},[30,9663],{"alt":32,"src":9664},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-315.png",[14,9666,9667],{},[30,9668],{"alt":32,"src":9669},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-316.png",[14,9671,9672],{},"回顾：构造函数每次new得到对象都是不同的",[23,9674,9676],{"id":9675},"_4137-原型链","4.13.7 原型链",[14,9678,9679],{},[30,9680],{"alt":32,"src":9681},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-317.png",[14,9683,9684],{},"只要是对象就有对象原型，它可以通过__proto__属性来访问原型对象，获取公共的属性和方法，然后每个原型对象都会有一个[[prototype]]，它是个指针，用来查看它自己的原型对象的信息，然后会提供一个__proto__的属性以供对象原型来访问，__proto__这个属性就理解为是对象原型，这个对象原型就在对象实例中。其实__proto__就是浏览器给开发者的接口，用来访问[[prototype]]",[14,9686,9687],{},"对象原型指向原型对象，这个原型对象本身就含有对象原型，因为所有对象都有一个对象原型__proto__，所以这个原型对象可以通过它内部的对象原型__proto__指向他自己的原型对象",[14,9689,9690],{},"大哥是Object",[14,9692,9693],{},[30,9694],{"alt":32,"src":9695},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-318.png",[14,9697,9698],{},[30,9699],{"alt":32,"src":9700},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-319.png",[14,9702,9703],{},"ldh属于构造函数的，由这个构造函数构成的，只要是在这个链上就是true",[14,9705,9706],{},"万物皆对象",[23,9708,9710],{"id":9709},"_4138-消息提示对象封装","4.13.8 消息提示对象封装",[14,9712,9713],{},"模态框",[14,9715,9716],{},"以后遇见这个效果直接使用这个就行",[14,9718,9719],{},[30,9720],{"alt":32,"src":9721},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-320.png",[14,9723,9724],{},[30,9725],{"alt":32,"src":9726},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-321.png",[14,9728,9729],{},[30,9730],{"alt":32,"src":9731},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-322.png",[14,9733,9734],{},[30,9735],{"alt":32,"src":9736},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-323.png",[14,9738,9739],{},"补充知识点：",[103,9741,9742],{},[43,9743,9744],{},"append()",[14,9746,9747],{},[30,9748],{"alt":32,"src":9749},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-324.png",[451,9751,9753],{"className":702,"code":9752,"language":704,"meta":32,"style":32},"append(param1)\nappend(param1, param2)\nappend(param1, param2, \u002F* …, *\u002F paramN)\n\n\n\nlet div = document.createElement(\"div\");\nlet p = document.createElement(\"p\");\ndiv.append(p);\n\nconsole.log(div.childNodes); \u002F\u002F NodeList [ \u003Cp> ]\n",[457,9754,9755,9760,9765,9770,9774,9778,9782,9787,9792,9797,9801],{"__ignoreMap":32},[460,9756,9757],{"class":462,"line":463},[460,9758,9759],{"class":466},"append(param1)\n",[460,9761,9762],{"class":462,"line":476},[460,9763,9764],{"class":466},"append(param1, param2)\n",[460,9766,9767],{"class":462,"line":482},[460,9768,9769],{"class":466},"append(param1, param2, \u002F* …, *\u002F paramN)\n",[460,9771,9772],{"class":462,"line":488},[460,9773,522],{"emptyLinePlaceholder":521},[460,9775,9776],{"class":462,"line":494},[460,9777,522],{"emptyLinePlaceholder":521},[460,9779,9780],{"class":462,"line":500},[460,9781,522],{"emptyLinePlaceholder":521},[460,9783,9784],{"class":462,"line":506},[460,9785,9786],{"class":466},"let div = document.createElement(\"div\");\n",[460,9788,9789],{"class":462,"line":512},[460,9790,9791],{"class":466},"let p = document.createElement(\"p\");\n",[460,9793,9794],{"class":462,"line":518},[460,9795,9796],{"class":466},"div.append(p);\n",[460,9798,9799],{"class":462,"line":525},[460,9800,522],{"emptyLinePlaceholder":521},[460,9802,9803,9806,9808],{"class":462,"line":531},[460,9804,9805],{"class":466},"console.log(div.childNodes); \u002F\u002F NodeList [ \u003C",[460,9807,14],{"class":470},[460,9809,9810],{"class":466},"> ]\n",[103,9812,9813],{"start":476},[43,9814,9815],{},"remove()",[14,9817,9818],{},"自己删自己",[14,9820,9821],{},[30,9822],{"alt":32,"src":9823},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-325.png",[451,9825,9827],{"className":702,"code":9826,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    .modal {\n      width: 300px;\n      min-height: 100px;\n      box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n      border-radius: 4px;\n      position: fixed;\n      z-index: 999;\n      left: 50%;\n      top: 50%;\n      transform: translate3d(-50%, -50%, 0);\n      background-color: #fff;\n    }\n\n    .modal .header {\n      line-height: 40px;\n      padding: 0 10px;\n      position: relative;\n      font-size: 20px;\n    }\n\n    .modal .header i {\n      font-style: normal;\n      color: #999;\n      position: absolute;\n      right: 15px;\n      top: -2px;\n      cursor: pointer;\n    }\n\n    .modal .body {\n      text-align: center;\n      padding: 10px;\n    }\n\n    .modal .footer {\n      display: flex;\n      justify-content: flex-end;\n      padding: 10px;\n    }\n\n    .modal .footer a {\n      padding: 3px 8px;\n      background: #ccc;\n      text-decoration: none;\n      color: #fff;\n      border-radius: 2px;\n      margin-right: 10px;\n      font-size: 14px;\n    }\n\n    .modal .footer a.submit {\n      background-color: #369;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cbutton id=\"delete\">删除\u003C\u002Fbutton>\n  \u003Cbutton id=\"login\">登录\u003C\u002Fbutton>\n  \u003Cscript>\n    \u002F\u002F 1.Model 构造函数的封装  模态框\n    function Modal(title = '', message = '') {\n      \u002F\u002F 创建Model 模态框盒子\n      \u002F\u002F 1.1 创建div标签\n      this.modalBox = document.createElement('div')\n      \u002F\u002F 1.2 给div 添加类名为model\n      this.modalBox.className = 'modal'\n      \u002F\u002F 1.3 model盒子内部填充2个div标签并且修改文字内容 \n      this.modalBox.innerHTML = `\n        \u003Cdiv class=\"header\">${title}\u003Ci>x\u003C\u002Fi>\u003C\u002Fdiv>\n        \u003Cdiv class=\"body\">${message}\u003C\u002Fdiv>\n      `\n      \u002F\u002F console.log(this.modalBox)\n    }\n    \u002F\u002F new Model('温馨提示', '您没有删除权限操作')\n    \u002F\u002F new Model('友情提示', '您还没有登录呢')\n    \u002F\u002F 2.给构造函数原型对象挂载open方法\n    Modal.prototype.open = function () {\n      \u002F\u002F 准备open显示的时候，先判断页面中有没有modal盒子，有就移除，没有加添加\n      const box = document.querySelector('.modal')\n      \u002F\u002F 使用逻辑中断来判断   若前边为假则中断，box.remove()就不执行了，就接着执行后边的代码；如果box为真，则执行box.remove()，再接着执行后边的代码\n      box && box.remove()\n      \u002F\u002F 主要这个方法不要用箭头函数\n      \u002F\u002F 把刚才创建的modelBox 显示到页面body中\n      \u002F\u002F append可以增加对象\n      document.body.append(this.modalBox)\n\n      \u002F\u002F要等到盒子显示出来，就可以绑定点击事件了\n      this.modalBox.querySelector('i').addEventListener('click', () => {\n        \u002F\u002F 这个地方需要用到箭头函数\n        \u002F\u002F 这个this是指向的是上上级 是实例对象\n        \u002F\u002F 如果不用箭头函数的话，就指向的是i这个DOM对象了\n        this.close()\n      })\n    }\n\n    \u002F\u002F 测试一下 点击 删除按钮\n    document.querySelector('#delete').addEventListener('click', () => {\n      \u002F\u002F 先调用Model构造函数\n      const del = new Modal('温馨的提示', '您没有删除权限操作')\n      \u002F\u002F 实例对象调用open方法\n      del.open()\n    })\n    \u002F\u002F 测试一下 点击 登录按钮\n    document.querySelector('#login').addEventListener('click', () => {\n      \u002F\u002F 先调用Model构造函数\n      const log = new Modal('友情提示', '您还没有登录呢')\n      \u002F\u002F 实例对象调用open方法\n      log.open()\n    })\n    \u002F\u002F 3.给构造函数原型对象挂载close方法\n    Modal.prototype.close = function () {\n      this.modalBox.remove()\n    }\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,9828,9829,9839,9853,9857,9865,9879,9899,9911,9919,9926,9939,9952,9987,10000,10012,10024,10037,10050,10077,10087,10091,10095,10104,10116,10130,10141,10153,10157,10161,10172,10184,10194,10205,10218,10231,10241,10245,10249,10258,10268,10280,10284,10288,10297,10307,10317,10329,10333,10337,10347,10364,10375,10385,10395,10407,10419,10431,10435,10439,10452,10463,10467,10475,10483,10487,10495,10517,10537,10545,10550,10577,10582,10587,10609,10614,10626,10631,10642,10652,10662,10667,10672,10676,10681,10686,10691,10712,10717,10737,10742,10759,10764,10769,10774,10790,10794,10799,10828,10833,10838,10843,10855,10859,10863,10867,10872,10897,10902,10928,10933,10942,10946,10951,10976,10980,11005,11009,11018,11022,11027,11045,11055,11059,11067,11075,11079],{"__ignoreMap":32},[460,9830,9831,9833,9835,9837],{"class":462,"line":463},[460,9832,1845],{"class":466},[460,9834,1848],{"class":470},[460,9836,1851],{"class":929},[460,9838,473],{"class":466},[460,9840,9841,9843,9845,9847,9849,9851],{"class":462,"line":476},[460,9842,781],{"class":466},[460,9844,704],{"class":470},[460,9846,1862],{"class":929},[460,9848,894],{"class":466},[460,9850,1867],{"class":1353},[460,9852,473],{"class":466},[460,9854,9855],{"class":462,"line":482},[460,9856,522],{"emptyLinePlaceholder":521},[460,9858,9859,9861,9863],{"class":462,"line":488},[460,9860,781],{"class":466},[460,9862,1880],{"class":470},[460,9864,473],{"class":466},[460,9866,9867,9869,9871,9873,9875,9877],{"class":462,"line":494},[460,9868,467],{"class":466},[460,9870,1889],{"class":470},[460,9872,1892],{"class":929},[460,9874,894],{"class":466},[460,9876,1897],{"class":1353},[460,9878,473],{"class":466},[460,9880,9881,9883,9885,9887,9889,9891,9893,9895,9897],{"class":462,"line":500},[460,9882,467],{"class":466},[460,9884,1889],{"class":470},[460,9886,1908],{"class":929},[460,9888,894],{"class":466},[460,9890,1913],{"class":1353},[460,9892,1916],{"class":929},[460,9894,894],{"class":466},[460,9896,1921],{"class":1353},[460,9898,473],{"class":466},[460,9900,9901,9903,9905,9907,9909],{"class":462,"line":506},[460,9902,467],{"class":466},[460,9904,1930],{"class":470},[460,9906,1933],{"class":466},[460,9908,1930],{"class":470},[460,9910,473],{"class":466},[460,9912,9913,9915,9917],{"class":462,"line":512},[460,9914,467],{"class":466},[460,9916,1944],{"class":470},[460,9918,473],{"class":466},[460,9920,9921,9924],{"class":462,"line":518},[460,9922,9923],{"class":929},"    .modal",[460,9925,1348],{"class":466},[460,9927,9928,9930,9932,9935,9937],{"class":462,"line":525},[460,9929,2009],{"class":900},[460,9931,1961],{"class":466},[460,9933,9934],{"class":900},"300",[460,9936,2017],{"class":887},[460,9938,1966],{"class":466},[460,9940,9941,9944,9946,9948,9950],{"class":462,"line":531},[460,9942,9943],{"class":900},"      min-height",[460,9945,1961],{"class":466},[460,9947,2325],{"class":900},[460,9949,2017],{"class":887},[460,9951,1966],{"class":466},[460,9953,9954,9956,9958,9960,9962,9964,9966,9968,9970,9972,9974,9976,9978,9980,9982,9985],{"class":462,"line":537},[460,9955,2215],{"class":900},[460,9957,1961],{"class":466},[460,9959,936],{"class":900},[460,9961,2224],{"class":900},[460,9963,5231],{"class":900},[460,9965,2017],{"class":887},[460,9967,2234],{"class":900},[460,9969,2174],{"class":466},[460,9971,936],{"class":900},[460,9973,904],{"class":466},[460,9975,936],{"class":900},[460,9977,904],{"class":466},[460,9979,936],{"class":900},[460,9981,904],{"class":466},[460,9983,9984],{"class":900},"0.1",[460,9986,2254],{"class":466},[460,9988,9989,9992,9994,9996,9998],{"class":462,"line":543},[460,9990,9991],{"class":900},"      border-radius",[460,9993,1961],{"class":466},[460,9995,918],{"class":900},[460,9997,2017],{"class":887},[460,9999,1966],{"class":466},[460,10001,10002,10005,10007,10010],{"class":462,"line":549},[460,10003,10004],{"class":900},"      position",[460,10006,1961],{"class":466},[460,10008,10009],{"class":900},"fixed",[460,10011,1966],{"class":466},[460,10013,10014,10017,10019,10022],{"class":462,"line":555},[460,10015,10016],{"class":900},"      z-index",[460,10018,1961],{"class":466},[460,10020,10021],{"class":900},"999",[460,10023,1966],{"class":466},[460,10025,10026,10029,10031,10033,10035],{"class":462,"line":560},[460,10027,10028],{"class":900},"      left",[460,10030,1961],{"class":466},[460,10032,2549],{"class":900},[460,10034,2328],{"class":887},[460,10036,1966],{"class":466},[460,10038,10039,10042,10044,10046,10048],{"class":462,"line":566},[460,10040,10041],{"class":900},"      top",[460,10043,1961],{"class":466},[460,10045,2549],{"class":900},[460,10047,2328],{"class":887},[460,10049,1966],{"class":466},[460,10051,10052,10054,10056,10058,10060,10063,10065,10067,10069,10071,10073,10075],{"class":462,"line":572},[460,10053,2260],{"class":900},[460,10055,1961],{"class":466},[460,10057,2265],{"class":900},[460,10059,2174],{"class":466},[460,10061,10062],{"class":900},"-50",[460,10064,2328],{"class":887},[460,10066,904],{"class":466},[460,10068,10062],{"class":900},[460,10070,2328],{"class":887},[460,10072,904],{"class":466},[460,10074,936],{"class":900},[460,10076,2254],{"class":466},[460,10078,10079,10081,10083,10085],{"class":462,"line":578},[460,10080,2673],{"class":900},[460,10082,1961],{"class":466},[460,10084,2690],{"class":900},[460,10086,1966],{"class":466},[460,10088,10089],{"class":462,"line":812},[460,10090,509],{"class":466},[460,10092,10093],{"class":462,"line":818},[460,10094,522],{"emptyLinePlaceholder":521},[460,10096,10097,10099,10102],{"class":462,"line":824},[460,10098,9923],{"class":929},[460,10100,10101],{"class":929}," .header",[460,10103,1348],{"class":466},[460,10105,10106,10108,10110,10112,10114],{"class":462,"line":2074},[460,10107,5513],{"class":900},[460,10109,1961],{"class":466},[460,10111,5504],{"class":900},[460,10113,2017],{"class":887},[460,10115,1966],{"class":466},[460,10117,10118,10120,10122,10124,10126,10128],{"class":462,"line":2088},[460,10119,1958],{"class":900},[460,10121,1961],{"class":466},[460,10123,936],{"class":900},[460,10125,5231],{"class":900},[460,10127,2017],{"class":887},[460,10129,1966],{"class":466},[460,10131,10132,10134,10136,10139],{"class":462,"line":2103},[460,10133,10004],{"class":900},[460,10135,1961],{"class":466},[460,10137,10138],{"class":900},"relative",[460,10140,1966],{"class":466},[460,10142,10143,10145,10147,10149,10151],{"class":462,"line":2122},[460,10144,2356],{"class":900},[460,10146,1961],{"class":466},[460,10148,2110],{"class":900},[460,10150,2017],{"class":887},[460,10152,1966],{"class":466},[460,10154,10155],{"class":462,"line":2144},[460,10156,509],{"class":466},[460,10158,10159],{"class":462,"line":2158},[460,10160,522],{"emptyLinePlaceholder":521},[460,10162,10163,10165,10167,10170],{"class":462,"line":2163},[460,10164,9923],{"class":929},[460,10166,10101],{"class":929},[460,10168,10169],{"class":470}," i",[460,10171,1348],{"class":466},[460,10173,10174,10177,10179,10182],{"class":462,"line":2168},[460,10175,10176],{"class":900},"      font-style",[460,10178,1961],{"class":466},[460,10180,10181],{"class":900},"normal",[460,10183,1966],{"class":466},[460,10185,10186,10188,10190,10192],{"class":462,"line":2183},[460,10187,2384],{"class":900},[460,10189,1961],{"class":466},[460,10191,7385],{"class":900},[460,10193,1966],{"class":466},[460,10195,10196,10198,10200,10203],{"class":462,"line":2194},[460,10197,10004],{"class":900},[460,10199,1961],{"class":466},[460,10201,10202],{"class":900},"absolute",[460,10204,1966],{"class":466},[460,10206,10207,10210,10212,10214,10216],{"class":462,"line":2199},[460,10208,10209],{"class":900},"      right",[460,10211,1961],{"class":466},[460,10213,7157],{"class":900},[460,10215,2017],{"class":887},[460,10217,1966],{"class":466},[460,10219,10220,10222,10224,10227,10229],{"class":462,"line":2204},[460,10221,10041],{"class":900},[460,10223,1961],{"class":466},[460,10225,10226],{"class":900},"-2",[460,10228,2017],{"class":887},[460,10230,1966],{"class":466},[460,10232,10233,10235,10237,10239],{"class":462,"line":2212},[460,10234,2288],{"class":900},[460,10236,1961],{"class":466},[460,10238,2293],{"class":900},[460,10240,1966],{"class":466},[460,10242,10243],{"class":462,"line":2257},[460,10244,509],{"class":466},[460,10246,10247],{"class":462,"line":2285},[460,10248,522],{"emptyLinePlaceholder":521},[460,10250,10251,10253,10256],{"class":462,"line":2298},[460,10252,9923],{"class":929},[460,10254,10255],{"class":929}," .body",[460,10257,1348],{"class":466},[460,10259,10260,10262,10264,10266],{"class":462,"line":2303},[460,10261,5540],{"class":900},[460,10263,1961],{"class":466},[460,10265,5545],{"class":900},[460,10267,1966],{"class":466},[460,10269,10270,10272,10274,10276,10278],{"class":462,"line":2308},[460,10271,1958],{"class":900},[460,10273,1961],{"class":466},[460,10275,2096],{"class":900},[460,10277,2017],{"class":887},[460,10279,1966],{"class":466},[460,10281,10282],{"class":462,"line":2318},[460,10283,509],{"class":466},[460,10285,10286],{"class":462,"line":2333},[460,10287,522],{"emptyLinePlaceholder":521},[460,10289,10290,10292,10295],{"class":462,"line":2338},[460,10291,9923],{"class":929},[460,10293,10294],{"class":929}," .footer",[460,10296,1348],{"class":466},[460,10298,10299,10301,10303,10305],{"class":462,"line":2343},[460,10300,2037],{"class":900},[460,10302,1961],{"class":466},[460,10304,2042],{"class":900},[460,10306,1966],{"class":466},[460,10308,10309,10311,10313,10315],{"class":462,"line":2353},[460,10310,7653],{"class":900},[460,10312,1961],{"class":466},[460,10314,7658],{"class":900},[460,10316,1966],{"class":466},[460,10318,10319,10321,10323,10325,10327],{"class":462,"line":2368},[460,10320,1958],{"class":900},[460,10322,1961],{"class":466},[460,10324,2096],{"class":900},[460,10326,2017],{"class":887},[460,10328,1966],{"class":466},[460,10330,10331],{"class":462,"line":2381},[460,10332,509],{"class":466},[460,10334,10335],{"class":462,"line":2394},[460,10336,522],{"emptyLinePlaceholder":521},[460,10338,10339,10341,10343,10345],{"class":462,"line":2399},[460,10340,9923],{"class":929},[460,10342,10294],{"class":929},[460,10344,2574],{"class":470},[460,10346,1348],{"class":466},[460,10348,10349,10351,10353,10355,10357,10360,10362],{"class":462,"line":2404},[460,10350,1958],{"class":900},[460,10352,1961],{"class":466},[460,10354,913],{"class":900},[460,10356,2017],{"class":887},[460,10358,10359],{"class":900}," 8",[460,10361,2017],{"class":887},[460,10363,1966],{"class":466},[460,10365,10366,10368,10370,10373],{"class":462,"line":2414},[460,10367,2600],{"class":900},[460,10369,1961],{"class":466},[460,10371,10372],{"class":900},"#ccc",[460,10374,1966],{"class":466},[460,10376,10377,10379,10381,10383],{"class":462,"line":2428},[460,10378,2624],{"class":900},[460,10380,1961],{"class":466},[460,10382,2629],{"class":900},[460,10384,1966],{"class":466},[460,10386,10387,10389,10391,10393],{"class":462,"line":2440},[460,10388,2384],{"class":900},[460,10390,1961],{"class":466},[460,10392,2690],{"class":900},[460,10394,1966],{"class":466},[460,10396,10397,10399,10401,10403,10405],{"class":462,"line":2445},[460,10398,9991],{"class":900},[460,10400,1961],{"class":466},[460,10402,907],{"class":900},[460,10404,2017],{"class":887},[460,10406,1966],{"class":466},[460,10408,10409,10411,10413,10415,10417],{"class":462,"line":2450},[460,10410,2637],{"class":900},[460,10412,1961],{"class":466},[460,10414,2096],{"class":900},[460,10416,2017],{"class":887},[460,10418,1966],{"class":466},[460,10420,10421,10423,10425,10427,10429],{"class":462,"line":2460},[460,10422,2356],{"class":900},[460,10424,1961],{"class":466},[460,10426,2480],{"class":900},[460,10428,2017],{"class":887},[460,10430,1966],{"class":466},[460,10432,10433],{"class":462,"line":2473},[460,10434,509],{"class":466},[460,10436,10437],{"class":462,"line":2487},[460,10438,522],{"emptyLinePlaceholder":521},[460,10440,10441,10443,10445,10447,10450],{"class":462,"line":2492},[460,10442,9923],{"class":929},[460,10444,10294],{"class":929},[460,10446,2574],{"class":470},[460,10448,10449],{"class":929},".submit",[460,10451,1348],{"class":466},[460,10453,10454,10456,10458,10461],{"class":462,"line":2497},[460,10455,2673],{"class":900},[460,10457,1961],{"class":466},[460,10459,10460],{"class":900},"#369",[460,10462,1966],{"class":466},[460,10464,10465],{"class":462,"line":2505},[460,10466,509],{"class":466},[460,10468,10469,10471,10473],{"class":462,"line":2516},[460,10470,581],{"class":466},[460,10472,1944],{"class":470},[460,10474,473],{"class":466},[460,10476,10477,10479,10481],{"class":462,"line":2529},[460,10478,1776],{"class":466},[460,10480,1880],{"class":470},[460,10482,473],{"class":466},[460,10484,10485],{"class":462,"line":2542},[460,10486,522],{"emptyLinePlaceholder":521},[460,10488,10489,10491,10493],{"class":462,"line":2559},[460,10490,781],{"class":466},[460,10492,1721],{"class":470},[460,10494,473],{"class":466},[460,10496,10497,10499,10502,10505,10507,10510,10513,10515],{"class":462,"line":2564},[460,10498,467],{"class":466},[460,10500,10501],{"class":470},"button",[460,10503,10504],{"class":929}," id",[460,10506,894],{"class":466},[460,10508,10509],{"class":1353},"\"delete\"",[460,10511,10512],{"class":466},">删除\u003C\u002F",[460,10514,10501],{"class":470},[460,10516,473],{"class":466},[460,10518,10519,10521,10523,10525,10527,10530,10533,10535],{"class":462,"line":2569},[460,10520,467],{"class":466},[460,10522,10501],{"class":470},[460,10524,10504],{"class":929},[460,10526,894],{"class":466},[460,10528,10529],{"class":1353},"\"login\"",[460,10531,10532],{"class":466},">登录\u003C\u002F",[460,10534,10501],{"class":470},[460,10536,473],{"class":466},[460,10538,10539,10541,10543],{"class":462,"line":2579},[460,10540,467],{"class":466},[460,10542,225],{"class":470},[460,10544,473],{"class":466},[460,10546,10547],{"class":462,"line":2597},[460,10548,10549],{"class":942},"    \u002F\u002F 1.Model 构造函数的封装  模态框\n",[460,10551,10552,10554,10557,10559,10561,10563,10566,10568,10571,10573,10575],{"class":462,"line":2610},[460,10553,3372],{"class":887},[460,10555,10556],{"class":929}," Modal",[460,10558,2174],{"class":466},[460,10560,1930],{"class":3380},[460,10562,2943],{"class":887},[460,10564,10565],{"class":1353}," ''",[460,10567,904],{"class":466},[460,10569,10570],{"class":3380},"message",[460,10572,2943],{"class":887},[460,10574,10565],{"class":1353},[460,10576,2180],{"class":466},[460,10578,10579],{"class":462,"line":2621},[460,10580,10581],{"class":942},"      \u002F\u002F 创建Model 模态框盒子\n",[460,10583,10584],{"class":462,"line":2634},[460,10585,10586],{"class":942},"      \u002F\u002F 1.1 创建div标签\n",[460,10588,10589,10592,10595,10597,10600,10603,10605,10607],{"class":462,"line":2648},[460,10590,10591],{"class":900},"      this",[460,10593,10594],{"class":466},".modalBox ",[460,10596,894],{"class":887},[460,10598,10599],{"class":466}," document.",[460,10601,10602],{"class":929},"createElement",[460,10604,2174],{"class":466},[460,10606,5656],{"class":1353},[460,10608,3754],{"class":466},[460,10610,10611],{"class":462,"line":2653},[460,10612,10613],{"class":942},"      \u002F\u002F 1.2 给div 添加类名为model\n",[460,10615,10616,10618,10621,10623],{"class":462,"line":2658},[460,10617,10591],{"class":900},[460,10619,10620],{"class":466},".modalBox.className ",[460,10622,894],{"class":887},[460,10624,10625],{"class":1353}," 'modal'\n",[460,10627,10628],{"class":462,"line":2670},[460,10629,10630],{"class":942},"      \u002F\u002F 1.3 model盒子内部填充2个div标签并且修改文字内容 \n",[460,10632,10633,10635,10638,10640],{"class":462,"line":2683},[460,10634,10591],{"class":900},[460,10636,10637],{"class":466},".modalBox.innerHTML ",[460,10639,894],{"class":887},[460,10641,3470],{"class":1353},[460,10643,10644,10647,10649],{"class":462,"line":2695},[460,10645,10646],{"class":1353},"        \u003Cdiv class=\"header\">${",[460,10648,1930],{"class":466},[460,10650,10651],{"class":1353},"}\u003Ci>x\u003C\u002Fi>\u003C\u002Fdiv>\n",[460,10653,10654,10657,10659],{"class":462,"line":2700},[460,10655,10656],{"class":1353},"        \u003Cdiv class=\"body\">${",[460,10658,10570],{"class":466},[460,10660,10661],{"class":1353},"}\u003C\u002Fdiv>\n",[460,10663,10664],{"class":462,"line":2709},[460,10665,10666],{"class":1353},"      `\n",[460,10668,10669],{"class":462,"line":2718},[460,10670,10671],{"class":942},"      \u002F\u002F console.log(this.modalBox)\n",[460,10673,10674],{"class":462,"line":2723},[460,10675,509],{"class":466},[460,10677,10678],{"class":462,"line":2732},[460,10679,10680],{"class":942},"    \u002F\u002F new Model('温馨提示', '您没有删除权限操作')\n",[460,10682,10683],{"class":462,"line":2750},[460,10684,10685],{"class":942},"    \u002F\u002F new Model('友情提示', '您还没有登录呢')\n",[460,10687,10688],{"class":462,"line":2782},[460,10689,10690],{"class":942},"    \u002F\u002F 2.给构造函数原型对象挂载open方法\n",[460,10692,10693,10696,10698,10700,10702,10705,10707,10710],{"class":462,"line":2809},[460,10694,10695],{"class":900},"    Modal",[460,10697,6000],{"class":466},[460,10699,9350],{"class":900},[460,10701,6000],{"class":466},[460,10703,10704],{"class":929},"open",[460,10706,2943],{"class":887},[460,10708,10709],{"class":887}," function",[460,10711,9376],{"class":466},[460,10713,10714],{"class":462,"line":2836},[460,10715,10716],{"class":942},"      \u002F\u002F 准备open显示的时候，先判断页面中有没有modal盒子，有就移除，没有加添加\n",[460,10718,10719,10721,10724,10726,10728,10730,10732,10735],{"class":462,"line":2856},[460,10720,3625],{"class":887},[460,10722,10723],{"class":900}," box",[460,10725,2943],{"class":887},[460,10727,10599],{"class":466},[460,10729,3541],{"class":929},[460,10731,2174],{"class":466},[460,10733,10734],{"class":1353},"'.modal'",[460,10736,3754],{"class":466},[460,10738,10739],{"class":462,"line":2865},[460,10740,10741],{"class":942},"      \u002F\u002F 使用逻辑中断来判断   若前边为假则中断，box.remove()就不执行了，就接着执行后边的代码；如果box为真，则执行box.remove()，再接着执行后边的代码\n",[460,10743,10744,10747,10750,10753,10756],{"class":462,"line":2881},[460,10745,10746],{"class":466},"      box ",[460,10748,10749],{"class":887},"&&",[460,10751,10752],{"class":466}," box.",[460,10754,10755],{"class":929},"remove",[460,10757,10758],{"class":466},"()\n",[460,10760,10761],{"class":462,"line":2887},[460,10762,10763],{"class":942},"      \u002F\u002F 主要这个方法不要用箭头函数\n",[460,10765,10766],{"class":462,"line":2893},[460,10767,10768],{"class":942},"      \u002F\u002F 把刚才创建的modelBox 显示到页面body中\n",[460,10770,10771],{"class":462,"line":2899},[460,10772,10773],{"class":942},"      \u002F\u002F append可以增加对象\n",[460,10775,10776,10779,10782,10784,10787],{"class":462,"line":2905},[460,10777,10778],{"class":466},"      document.body.",[460,10780,10781],{"class":929},"append",[460,10783,2174],{"class":466},[460,10785,10786],{"class":900},"this",[460,10788,10789],{"class":466},".modalBox)\n",[460,10791,10792],{"class":462,"line":2911},[460,10793,522],{"emptyLinePlaceholder":521},[460,10795,10796],{"class":462,"line":2920},[460,10797,10798],{"class":942},"      \u002F\u002F要等到盒子显示出来，就可以绑定点击事件了\n",[460,10800,10801,10803,10806,10808,10810,10813,10815,10817,10819,10821,10824,10826],{"class":462,"line":2929},[460,10802,10591],{"class":900},[460,10804,10805],{"class":466},".modalBox.",[460,10807,3541],{"class":929},[460,10809,2174],{"class":466},[460,10811,10812],{"class":1353},"'i'",[460,10814,3596],{"class":466},[460,10816,3599],{"class":929},[460,10818,2174],{"class":466},[460,10820,3604],{"class":1353},[460,10822,10823],{"class":466},", () ",[460,10825,8489],{"class":887},[460,10827,1348],{"class":466},[460,10829,10830],{"class":462,"line":2935},[460,10831,10832],{"class":942},"        \u002F\u002F 这个地方需要用到箭头函数\n",[460,10834,10835],{"class":462,"line":2948},[460,10836,10837],{"class":942},"        \u002F\u002F 这个this是指向的是上上级 是实例对象\n",[460,10839,10840],{"class":462,"line":2954},[460,10841,10842],{"class":942},"        \u002F\u002F 如果不用箭头函数的话，就指向的是i这个DOM对象了\n",[460,10844,10845,10848,10850,10853],{"class":462,"line":2965},[460,10846,10847],{"class":900},"        this",[460,10849,6000],{"class":466},[460,10851,10852],{"class":929},"close",[460,10854,10758],{"class":466},[460,10856,10857],{"class":462,"line":2976},[460,10858,3526],{"class":466},[460,10860,10861],{"class":462,"line":2987},[460,10862,509],{"class":466},[460,10864,10865],{"class":462,"line":2998},[460,10866,522],{"emptyLinePlaceholder":521},[460,10868,10869],{"class":462,"line":3003},[460,10870,10871],{"class":942},"    \u002F\u002F 测试一下 点击 删除按钮\n",[460,10873,10874,10876,10878,10880,10883,10885,10887,10889,10891,10893,10895],{"class":462,"line":3008},[460,10875,3586],{"class":466},[460,10877,3541],{"class":929},[460,10879,2174],{"class":466},[460,10881,10882],{"class":1353},"'#delete'",[460,10884,3596],{"class":466},[460,10886,3599],{"class":929},[460,10888,2174],{"class":466},[460,10890,3604],{"class":1353},[460,10892,10823],{"class":466},[460,10894,8489],{"class":887},[460,10896,1348],{"class":466},[460,10898,10899],{"class":462,"line":3018},[460,10900,10901],{"class":942},"      \u002F\u002F 先调用Model构造函数\n",[460,10903,10904,10906,10909,10911,10914,10916,10918,10921,10923,10926],{"class":462,"line":3028},[460,10905,3625],{"class":887},[460,10907,10908],{"class":900}," del",[460,10910,2943],{"class":887},[460,10912,10913],{"class":887}," new",[460,10915,10556],{"class":929},[460,10917,2174],{"class":466},[460,10919,10920],{"class":1353},"'温馨的提示'",[460,10922,904],{"class":466},[460,10924,10925],{"class":1353},"'您没有删除权限操作'",[460,10927,3754],{"class":466},[460,10929,10930],{"class":462,"line":3038},[460,10931,10932],{"class":942},"      \u002F\u002F 实例对象调用open方法\n",[460,10934,10935,10938,10940],{"class":462,"line":3048},[460,10936,10937],{"class":466},"      del.",[460,10939,10704],{"class":929},[460,10941,10758],{"class":466},[460,10943,10944],{"class":462,"line":3053},[460,10945,1679],{"class":466},[460,10947,10948],{"class":462,"line":3058},[460,10949,10950],{"class":942},"    \u002F\u002F 测试一下 点击 登录按钮\n",[460,10952,10953,10955,10957,10959,10962,10964,10966,10968,10970,10972,10974],{"class":462,"line":3068},[460,10954,3586],{"class":466},[460,10956,3541],{"class":929},[460,10958,2174],{"class":466},[460,10960,10961],{"class":1353},"'#login'",[460,10963,3596],{"class":466},[460,10965,3599],{"class":929},[460,10967,2174],{"class":466},[460,10969,3604],{"class":1353},[460,10971,10823],{"class":466},[460,10973,8489],{"class":887},[460,10975,1348],{"class":466},[460,10977,10978],{"class":462,"line":3078},[460,10979,10901],{"class":942},[460,10981,10982,10984,10987,10989,10991,10993,10995,10998,11000,11003],{"class":462,"line":3088},[460,10983,3625],{"class":887},[460,10985,10986],{"class":900}," log",[460,10988,2943],{"class":887},[460,10990,10913],{"class":887},[460,10992,10556],{"class":929},[460,10994,2174],{"class":466},[460,10996,10997],{"class":1353},"'友情提示'",[460,10999,904],{"class":466},[460,11001,11002],{"class":1353},"'您还没有登录呢'",[460,11004,3754],{"class":466},[460,11006,11007],{"class":462,"line":3098},[460,11008,10932],{"class":942},[460,11010,11011,11014,11016],{"class":462,"line":3103},[460,11012,11013],{"class":466},"      log.",[460,11015,10704],{"class":929},[460,11017,10758],{"class":466},[460,11019,11020],{"class":462,"line":3108},[460,11021,1679],{"class":466},[460,11023,11024],{"class":462,"line":3118},[460,11025,11026],{"class":942},"    \u002F\u002F 3.给构造函数原型对象挂载close方法\n",[460,11028,11029,11031,11033,11035,11037,11039,11041,11043],{"class":462,"line":3128},[460,11030,10695],{"class":900},[460,11032,6000],{"class":466},[460,11034,9350],{"class":900},[460,11036,6000],{"class":466},[460,11038,10852],{"class":929},[460,11040,2943],{"class":887},[460,11042,10709],{"class":887},[460,11044,9376],{"class":466},[460,11046,11047,11049,11051,11053],{"class":462,"line":3138},[460,11048,10591],{"class":900},[460,11050,10805],{"class":466},[460,11052,10755],{"class":929},[460,11054,10758],{"class":466},[460,11056,11057],{"class":462,"line":3148},[460,11058,509],{"class":466},[460,11060,11061,11063,11065],{"class":462,"line":3153},[460,11062,581],{"class":466},[460,11064,225],{"class":470},[460,11066,473],{"class":466},[460,11068,11069,11071,11073],{"class":462,"line":3158},[460,11070,1776],{"class":466},[460,11072,1721],{"class":470},[460,11074,473],{"class":466},[460,11076,11077],{"class":462,"line":3168},[460,11078,522],{"emptyLinePlaceholder":521},[460,11080,11081,11083,11085],{"class":462,"line":3178},[460,11082,1776],{"class":466},[460,11084,704],{"class":470},[460,11086,473],{"class":466},[14,11088,11089],{},[30,11090],{"alt":32,"src":11091},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-326.png",[18,11093,11095],{"id":11094},"_414-深浅拷贝","4.14 深浅拷贝",[23,11097,11099],{"id":11098},"_4141-浅拷贝","4.14.1 浅拷贝",[14,11101,11102],{},[30,11103],{"alt":32,"src":11104},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-327.png",[14,11106,11107],{},"展开运算符也可以对对象使用，将对象的键值取出放到新对象中",[14,11109,11110],{},[30,11111],{"alt":32,"src":11112},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-328.png",[14,11114,11115],{},[30,11116],{"alt":32,"src":11117},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-329.png",[14,11119,11120],{},"下边这个情况的时候，浅拷贝只拷贝外面这一层，外面这一层是把值给了这个新对象，里层的这个对象在拷贝的时候还是拷贝的地址，所以一改里层对象的值，原来的对象和拷贝的对象的值就都变了，这样拷贝就会有问题",[14,11122,11123],{},[30,11124],{"alt":32,"src":11125},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-330.png",[14,11127,433],{},[14,11129,11130],{},[30,11131],{"alt":32,"src":11132},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-331.png",[23,11134,11136],{"id":11135},"_4142-深拷贝","4.14.2 深拷贝",[14,11138,11139],{},"深拷贝：拷贝的是对象，不是地址",[14,11141,11142],{},"常用的三种方法：",[103,11144,11145,11148,11151],{},[43,11146,11147],{},"通过递归实现深拷贝",[43,11149,11150],{},"lodash\u002FcloneDeep",[43,11152,11153],{},"通过JSON.stringify()实现",[115,11155,11157],{"id":11156},"_41421-递归函数","4.14.2.1 递归函数",[14,11159,11160],{},[30,11161],{"alt":32,"src":11162},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-332.png",[103,11164,11165],{},[43,11166,11167],{},"死递归占溢出：",[451,11169,11171],{"className":453,"code":11170,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    function fn() {\n      fn()\n    }\n    fn()\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,11172,11173,11181,11189,11193,11198,11202,11207,11215],{"__ignoreMap":32},[460,11174,11175,11177,11179],{"class":462,"line":463},[460,11176,781],{"class":466},[460,11178,1721],{"class":470},[460,11180,473],{"class":466},[460,11182,11183,11185,11187],{"class":462,"line":476},[460,11184,467],{"class":466},[460,11186,225],{"class":470},[460,11188,473],{"class":466},[460,11190,11191],{"class":462,"line":482},[460,11192,497],{"class":466},[460,11194,11195],{"class":462,"line":488},[460,11196,11197],{"class":466},"      fn()\n",[460,11199,11200],{"class":462,"line":494},[460,11201,509],{"class":466},[460,11203,11204],{"class":462,"line":500},[460,11205,11206],{"class":466},"    fn()\n",[460,11208,11209,11211,11213],{"class":462,"line":506},[460,11210,581],{"class":466},[460,11212,225],{"class":470},[460,11214,473],{"class":466},[460,11216,11217,11219,11221],{"class":462,"line":512},[460,11218,1776],{"class":466},[460,11220,1721],{"class":470},[460,11222,473],{"class":466},[103,11224,11225],{"start":476},[43,11226,11227],{},"递归函数要加判断条件：",[14,11229,11230],{},[30,11231],{"alt":32,"src":11232},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-333.png",[103,11234,11235],{"start":482},[43,11236,11237],{},"应用：利用递归函数实现setTimeout模拟setInterval效果",[451,11239,11241],{"className":702,"code":11240,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv>\u003C\u002Fdiv>\n  \u003Cscript>\n    function getTime() {\n      document.querySelector('div').innerHTML = new Date().toLocaleString()\n      setTimeout(getTime, 1000)\n    }\n    getTime()\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,11242,11243,11253,11267,11271,11279,11293,11313,11325,11333,11337,11345,11357,11365,11375,11402,11415,11419,11426,11434,11442,11446],{"__ignoreMap":32},[460,11244,11245,11247,11249,11251],{"class":462,"line":463},[460,11246,1845],{"class":466},[460,11248,1848],{"class":470},[460,11250,1851],{"class":929},[460,11252,473],{"class":466},[460,11254,11255,11257,11259,11261,11263,11265],{"class":462,"line":476},[460,11256,781],{"class":466},[460,11258,704],{"class":470},[460,11260,1862],{"class":929},[460,11262,894],{"class":466},[460,11264,1867],{"class":1353},[460,11266,473],{"class":466},[460,11268,11269],{"class":462,"line":482},[460,11270,522],{"emptyLinePlaceholder":521},[460,11272,11273,11275,11277],{"class":462,"line":488},[460,11274,781],{"class":466},[460,11276,1880],{"class":470},[460,11278,473],{"class":466},[460,11280,11281,11283,11285,11287,11289,11291],{"class":462,"line":494},[460,11282,467],{"class":466},[460,11284,1889],{"class":470},[460,11286,1892],{"class":929},[460,11288,894],{"class":466},[460,11290,1897],{"class":1353},[460,11292,473],{"class":466},[460,11294,11295,11297,11299,11301,11303,11305,11307,11309,11311],{"class":462,"line":500},[460,11296,467],{"class":466},[460,11298,1889],{"class":470},[460,11300,1908],{"class":929},[460,11302,894],{"class":466},[460,11304,1913],{"class":1353},[460,11306,1916],{"class":929},[460,11308,894],{"class":466},[460,11310,1921],{"class":1353},[460,11312,473],{"class":466},[460,11314,11315,11317,11319,11321,11323],{"class":462,"line":506},[460,11316,467],{"class":466},[460,11318,1930],{"class":470},[460,11320,1933],{"class":466},[460,11322,1930],{"class":470},[460,11324,473],{"class":466},[460,11326,11327,11329,11331],{"class":462,"line":512},[460,11328,1776],{"class":466},[460,11330,1880],{"class":470},[460,11332,473],{"class":466},[460,11334,11335],{"class":462,"line":518},[460,11336,522],{"emptyLinePlaceholder":521},[460,11338,11339,11341,11343],{"class":462,"line":525},[460,11340,781],{"class":466},[460,11342,1721],{"class":470},[460,11344,473],{"class":466},[460,11346,11347,11349,11351,11353,11355],{"class":462,"line":531},[460,11348,467],{"class":466},[460,11350,2737],{"class":470},[460,11352,5599],{"class":466},[460,11354,2737],{"class":470},[460,11356,473],{"class":466},[460,11358,11359,11361,11363],{"class":462,"line":537},[460,11360,467],{"class":466},[460,11362,225],{"class":470},[460,11364,473],{"class":466},[460,11366,11367,11369,11372],{"class":462,"line":543},[460,11368,3372],{"class":887},[460,11370,11371],{"class":929}," getTime",[460,11373,11374],{"class":466},"() {\n",[460,11376,11377,11379,11381,11383,11385,11387,11389,11391,11394,11397,11400],{"class":462,"line":549},[460,11378,3538],{"class":466},[460,11380,3541],{"class":929},[460,11382,2174],{"class":466},[460,11384,5656],{"class":1353},[460,11386,3549],{"class":466},[460,11388,894],{"class":887},[460,11390,10913],{"class":887},[460,11392,11393],{"class":929}," Date",[460,11395,11396],{"class":466},"().",[460,11398,11399],{"class":929},"toLocaleString",[460,11401,10758],{"class":466},[460,11403,11404,11407,11410,11413],{"class":462,"line":555},[460,11405,11406],{"class":929},"      setTimeout",[460,11408,11409],{"class":466},"(getTime, ",[460,11411,11412],{"class":900},"1000",[460,11414,3754],{"class":466},[460,11416,11417],{"class":462,"line":560},[460,11418,509],{"class":466},[460,11420,11421,11424],{"class":462,"line":566},[460,11422,11423],{"class":929},"    getTime",[460,11425,10758],{"class":466},[460,11427,11428,11430,11432],{"class":462,"line":572},[460,11429,581],{"class":466},[460,11431,225],{"class":470},[460,11433,473],{"class":466},[460,11435,11436,11438,11440],{"class":462,"line":578},[460,11437,1776],{"class":466},[460,11439,1721],{"class":470},[460,11441,473],{"class":466},[460,11443,11444],{"class":462,"line":812},[460,11445,522],{"emptyLinePlaceholder":521},[460,11447,11448,11450,11452],{"class":462,"line":818},[460,11449,1776],{"class":466},[460,11451,704],{"class":470},[460,11453,473],{"class":466},[14,11455,11456],{},[30,11457],{"alt":32,"src":11458},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-334.png",[103,11460,11461],{"start":488},[43,11462,11147],{},[14,11464,11465],{},[30,11466],{"alt":32,"src":11467},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-335.png",[14,11469,11470],{},"现在的这个递归函数还是一个浅拷贝的函数，通过将旧值给新值的方式进行，简单数据直接就是把值给他了，但是复杂数据是把他的地址给他",[14,11472,11473],{},"解决方式:",[14,11475,11476],{},"这个是简易版的递归函数深拷贝",[14,11478,11479],{},"一定要注意先数组再对象，因为万物皆可对象",[451,11481,11483],{"className":702,"code":11482,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cscript>\n    const obj = {\n      uname: 'pink',\n      age: 18,\n      hobby: ['乒乓球', '足球'],\n      family: {\n        baby: '小pink'\n      }\n    }\n    const o = {}\n    \u002F\u002F 拷贝函数\n    function deepCopy(newObj, oldObj) {\n      for (let k in oldObj) {\n        \u002F\u002F 处理数组的问题\n        \u002F\u002F 判断是否属于数组\n        \u002F\u002F 一定先写数组，因为万物皆对象，数组也属于对象，把对象写前边的话，数组就执行对象的操作了，就无法正常运行了\n        if (oldObj[k] instanceof Array) {\n          \u002F\u002F newObj[k]  接收的内容放到[]\n          \u002F\u002F oldObj[k]  就是['乒乓球','足球']\n          newObj[k] = []\n          deepCopy(newObj[k], oldObj[k])\n        } else if (oldObj[k] instanceof Object) {\n          newObj[k] = {}\n          deepCopy(newObj[k], oldObj[k])\n        } else {\n          \u002F\u002F  k 是属性名  属性值为oldObj[k]\n          \u002F\u002F newObj[k]与newObj写法是等价的\n          newObj[k] = oldObj[k]\n        }\n      }\n    }\n    deepCopy(o, obj) \u002F\u002F函数调用 两个参数 o是新对象，obj是旧对象\n    console.log(o)\n    o.age = 20\n    o.hobby[0] = '篮球'\n    o.family = '老pink'\n    console.log(obj)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,11484,11485,11495,11509,11513,11521,11535,11555,11567,11575,11579,11587,11595,11606,11616,11625,11641,11645,11653,11657,11661,11673,11678,11697,11717,11722,11727,11732,11747,11752,11757,11767,11775,11792,11800,11806,11814,11819,11824,11833,11837,11841,11845,11856,11865,11875,11890,11900,11909,11917,11925,11929],{"__ignoreMap":32},[460,11486,11487,11489,11491,11493],{"class":462,"line":463},[460,11488,1845],{"class":466},[460,11490,1848],{"class":470},[460,11492,1851],{"class":929},[460,11494,473],{"class":466},[460,11496,11497,11499,11501,11503,11505,11507],{"class":462,"line":476},[460,11498,781],{"class":466},[460,11500,704],{"class":470},[460,11502,1862],{"class":929},[460,11504,894],{"class":466},[460,11506,1867],{"class":1353},[460,11508,473],{"class":466},[460,11510,11511],{"class":462,"line":482},[460,11512,522],{"emptyLinePlaceholder":521},[460,11514,11515,11517,11519],{"class":462,"line":488},[460,11516,781],{"class":466},[460,11518,1880],{"class":470},[460,11520,473],{"class":466},[460,11522,11523,11525,11527,11529,11531,11533],{"class":462,"line":494},[460,11524,467],{"class":466},[460,11526,1889],{"class":470},[460,11528,1892],{"class":929},[460,11530,894],{"class":466},[460,11532,1897],{"class":1353},[460,11534,473],{"class":466},[460,11536,11537,11539,11541,11543,11545,11547,11549,11551,11553],{"class":462,"line":500},[460,11538,467],{"class":466},[460,11540,1889],{"class":470},[460,11542,1908],{"class":929},[460,11544,894],{"class":466},[460,11546,1913],{"class":1353},[460,11548,1916],{"class":929},[460,11550,894],{"class":466},[460,11552,1921],{"class":1353},[460,11554,473],{"class":466},[460,11556,11557,11559,11561,11563,11565],{"class":462,"line":506},[460,11558,467],{"class":466},[460,11560,1930],{"class":470},[460,11562,1933],{"class":466},[460,11564,1930],{"class":470},[460,11566,473],{"class":466},[460,11568,11569,11571,11573],{"class":462,"line":512},[460,11570,1776],{"class":466},[460,11572,1880],{"class":470},[460,11574,473],{"class":466},[460,11576,11577],{"class":462,"line":518},[460,11578,522],{"emptyLinePlaceholder":521},[460,11580,11581,11583,11585],{"class":462,"line":525},[460,11582,781],{"class":466},[460,11584,1721],{"class":470},[460,11586,473],{"class":466},[460,11588,11589,11591,11593],{"class":462,"line":531},[460,11590,467],{"class":466},[460,11592,225],{"class":470},[460,11594,473],{"class":466},[460,11596,11597,11599,11602,11604],{"class":462,"line":537},[460,11598,1340],{"class":887},[460,11600,11601],{"class":900}," obj",[460,11603,2943],{"class":887},[460,11605,1348],{"class":466},[460,11607,11608,11611,11614],{"class":462,"line":543},[460,11609,11610],{"class":466},"      uname: ",[460,11612,11613],{"class":1353},"'pink'",[460,11615,1363],{"class":466},[460,11617,11618,11621,11623],{"class":462,"line":549},[460,11619,11620],{"class":466},"      age: ",[460,11622,2361],{"class":900},[460,11624,1363],{"class":466},[460,11626,11627,11630,11633,11635,11638],{"class":462,"line":555},[460,11628,11629],{"class":466},"      hobby: [",[460,11631,11632],{"class":1353},"'乒乓球'",[460,11634,904],{"class":466},[460,11636,11637],{"class":1353},"'足球'",[460,11639,11640],{"class":466},"],\n",[460,11642,11643],{"class":462,"line":560},[460,11644,1273],{"class":466},[460,11646,11647,11650],{"class":462,"line":566},[460,11648,11649],{"class":466},"        baby: ",[460,11651,11652],{"class":1353},"'小pink'\n",[460,11654,11655],{"class":462,"line":572},[460,11656,552],{"class":466},[460,11658,11659],{"class":462,"line":578},[460,11660,509],{"class":466},[460,11662,11663,11665,11668,11670],{"class":462,"line":812},[460,11664,1340],{"class":887},[460,11666,11667],{"class":900}," o",[460,11669,2943],{"class":887},[460,11671,11672],{"class":466}," {}\n",[460,11674,11675],{"class":462,"line":818},[460,11676,11677],{"class":942},"    \u002F\u002F 拷贝函数\n",[460,11679,11680,11682,11685,11687,11690,11692,11695],{"class":462,"line":824},[460,11681,3372],{"class":887},[460,11683,11684],{"class":929}," deepCopy",[460,11686,2174],{"class":466},[460,11688,11689],{"class":3380},"newObj",[460,11691,904],{"class":466},[460,11693,11694],{"class":3380},"oldObj",[460,11696,2180],{"class":466},[460,11698,11699,11702,11705,11708,11711,11714],{"class":462,"line":2074},[460,11700,11701],{"class":887},"      for",[460,11703,11704],{"class":466}," (",[460,11706,11707],{"class":887},"let",[460,11709,11710],{"class":466}," k ",[460,11712,11713],{"class":887},"in",[460,11715,11716],{"class":466}," oldObj) {\n",[460,11718,11719],{"class":462,"line":2088},[460,11720,11721],{"class":942},"        \u002F\u002F 处理数组的问题\n",[460,11723,11724],{"class":462,"line":2103},[460,11725,11726],{"class":942},"        \u002F\u002F 判断是否属于数组\n",[460,11728,11729],{"class":462,"line":2122},[460,11730,11731],{"class":942},"        \u002F\u002F 一定先写数组，因为万物皆对象，数组也属于对象，把对象写前边的话，数组就执行对象的操作了，就无法正常运行了\n",[460,11733,11734,11736,11739,11742,11745],{"class":462,"line":2144},[460,11735,3702],{"class":887},[460,11737,11738],{"class":466}," (oldObj[k] ",[460,11740,11741],{"class":887},"instanceof",[460,11743,11744],{"class":929}," Array",[460,11746,2180],{"class":466},[460,11748,11749],{"class":462,"line":2158},[460,11750,11751],{"class":942},"          \u002F\u002F newObj[k]  接收的内容放到[]\n",[460,11753,11754],{"class":462,"line":2163},[460,11755,11756],{"class":942},"          \u002F\u002F oldObj[k]  就是['乒乓球','足球']\n",[460,11758,11759,11762,11764],{"class":462,"line":2168},[460,11760,11761],{"class":466},"          newObj[k] ",[460,11763,894],{"class":887},[460,11765,11766],{"class":466}," []\n",[460,11768,11769,11772],{"class":462,"line":2183},[460,11770,11771],{"class":929},"          deepCopy",[460,11773,11774],{"class":466},"(newObj[k], oldObj[k])\n",[460,11776,11777,11779,11781,11783,11785,11787,11790],{"class":462,"line":2194},[460,11778,3760],{"class":466},[460,11780,3763],{"class":887},[460,11782,3766],{"class":887},[460,11784,11738],{"class":466},[460,11786,11741],{"class":887},[460,11788,11789],{"class":929}," Object",[460,11791,2180],{"class":466},[460,11793,11794,11796,11798],{"class":462,"line":2199},[460,11795,11761],{"class":466},[460,11797,894],{"class":887},[460,11799,11672],{"class":466},[460,11801,11802,11804],{"class":462,"line":2204},[460,11803,11771],{"class":929},[460,11805,11774],{"class":466},[460,11807,11808,11810,11812],{"class":462,"line":2212},[460,11809,3760],{"class":466},[460,11811,3763],{"class":887},[460,11813,1348],{"class":466},[460,11815,11816],{"class":462,"line":2257},[460,11817,11818],{"class":942},"          \u002F\u002F  k 是属性名  属性值为oldObj[k]\n",[460,11820,11821],{"class":462,"line":2285},[460,11822,11823],{"class":942},"          \u002F\u002F newObj[k]与newObj写法是等价的\n",[460,11825,11826,11828,11830],{"class":462,"line":2298},[460,11827,11761],{"class":466},[460,11829,894],{"class":887},[460,11831,11832],{"class":466}," oldObj[k]\n",[460,11834,11835],{"class":462,"line":2303},[460,11836,3858],{"class":466},[460,11838,11839],{"class":462,"line":2308},[460,11840,552],{"class":466},[460,11842,11843],{"class":462,"line":2318},[460,11844,509],{"class":466},[460,11846,11847,11850,11853],{"class":462,"line":2333},[460,11848,11849],{"class":929},"    deepCopy",[460,11851,11852],{"class":466},"(o, obj) ",[460,11854,11855],{"class":942},"\u002F\u002F函数调用 两个参数 o是新对象，obj是旧对象\n",[460,11857,11858,11860,11862],{"class":462,"line":2338},[460,11859,9381],{"class":466},[460,11861,930],{"class":929},[460,11863,11864],{"class":466},"(o)\n",[460,11866,11867,11870,11872],{"class":462,"line":2343},[460,11868,11869],{"class":466},"    o.age ",[460,11871,894],{"class":887},[460,11873,11874],{"class":900}," 20\n",[460,11876,11877,11880,11882,11885,11887],{"class":462,"line":2353},[460,11878,11879],{"class":466},"    o.hobby[",[460,11881,936],{"class":900},[460,11883,11884],{"class":466},"] ",[460,11886,894],{"class":887},[460,11888,11889],{"class":1353}," '篮球'\n",[460,11891,11892,11895,11897],{"class":462,"line":2368},[460,11893,11894],{"class":466},"    o.family ",[460,11896,894],{"class":887},[460,11898,11899],{"class":1353}," '老pink'\n",[460,11901,11902,11904,11906],{"class":462,"line":2381},[460,11903,9381],{"class":466},[460,11905,930],{"class":929},[460,11907,11908],{"class":466},"(obj)\n",[460,11910,11911,11913,11915],{"class":462,"line":2394},[460,11912,581],{"class":466},[460,11914,225],{"class":470},[460,11916,473],{"class":466},[460,11918,11919,11921,11923],{"class":462,"line":2399},[460,11920,1776],{"class":466},[460,11922,1721],{"class":470},[460,11924,473],{"class":466},[460,11926,11927],{"class":462,"line":2404},[460,11928,522],{"emptyLinePlaceholder":521},[460,11930,11931,11933,11935],{"class":462,"line":2414},[460,11932,1776],{"class":466},[460,11934,704],{"class":470},[460,11936,473],{"class":466},[14,11938,11939],{},[30,11940],{"alt":32,"src":11941},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-336.png",[115,11943,11945,11946],{"id":11944},"_41422-js库lodash里面clonedeep内部实现了深拷贝","4.14.2.2 ",[3944,11947,11948],{},"js库lodash里面cloneDeep内部实现了深拷贝",[14,11950,11951],{},[2756,11952,11953],{"href":11953,"rel":11954},"https:\u002F\u002Fwww.lodashjs.com\u002F",[4943],[14,11956,11957],{},"lodash里边的方法都要加上一个下划线_",[14,11959,11960],{},"_.cloneDeep()",[451,11962,11964],{"className":702,"code":11963,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003C!-- 先引用这个库 -->\n  \u003Cscript src=\"lodash.min.js\">\u003C\u002Fscript>\n  \u003Cscript>\n    const obj = {\n      uname: 'pink',\n      age: 18,\n      hobby: ['乒乓球', '足球'],\n      family: {\n        baby: '小pink'\n      }\n    }\n    const o = _.cloneDeep(obj)\n    console.log(o)\n    o.family.baby = '老pink'\n    console.log(obj)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,11965,11966,11976,11990,11994,12002,12016,12036,12048,12056,12060,12068,12073,12093,12101,12111,12119,12127,12139,12143,12149,12153,12157,12173,12181,12190,12198,12206,12214,12218],{"__ignoreMap":32},[460,11967,11968,11970,11972,11974],{"class":462,"line":463},[460,11969,1845],{"class":466},[460,11971,1848],{"class":470},[460,11973,1851],{"class":929},[460,11975,473],{"class":466},[460,11977,11978,11980,11982,11984,11986,11988],{"class":462,"line":476},[460,11979,781],{"class":466},[460,11981,704],{"class":470},[460,11983,1862],{"class":929},[460,11985,894],{"class":466},[460,11987,1867],{"class":1353},[460,11989,473],{"class":466},[460,11991,11992],{"class":462,"line":482},[460,11993,522],{"emptyLinePlaceholder":521},[460,11995,11996,11998,12000],{"class":462,"line":488},[460,11997,781],{"class":466},[460,11999,1880],{"class":470},[460,12001,473],{"class":466},[460,12003,12004,12006,12008,12010,12012,12014],{"class":462,"line":494},[460,12005,467],{"class":466},[460,12007,1889],{"class":470},[460,12009,1892],{"class":929},[460,12011,894],{"class":466},[460,12013,1897],{"class":1353},[460,12015,473],{"class":466},[460,12017,12018,12020,12022,12024,12026,12028,12030,12032,12034],{"class":462,"line":500},[460,12019,467],{"class":466},[460,12021,1889],{"class":470},[460,12023,1908],{"class":929},[460,12025,894],{"class":466},[460,12027,1913],{"class":1353},[460,12029,1916],{"class":929},[460,12031,894],{"class":466},[460,12033,1921],{"class":1353},[460,12035,473],{"class":466},[460,12037,12038,12040,12042,12044,12046],{"class":462,"line":506},[460,12039,467],{"class":466},[460,12041,1930],{"class":470},[460,12043,1933],{"class":466},[460,12045,1930],{"class":470},[460,12047,473],{"class":466},[460,12049,12050,12052,12054],{"class":462,"line":512},[460,12051,1776],{"class":466},[460,12053,1880],{"class":470},[460,12055,473],{"class":466},[460,12057,12058],{"class":462,"line":518},[460,12059,522],{"emptyLinePlaceholder":521},[460,12061,12062,12064,12066],{"class":462,"line":525},[460,12063,781],{"class":466},[460,12065,1721],{"class":470},[460,12067,473],{"class":466},[460,12069,12070],{"class":462,"line":531},[460,12071,12072],{"class":942},"  \u003C!-- 先引用这个库 -->\n",[460,12074,12075,12077,12079,12082,12084,12087,12089,12091],{"class":462,"line":537},[460,12076,467],{"class":466},[460,12078,225],{"class":470},[460,12080,12081],{"class":929}," src",[460,12083,894],{"class":466},[460,12085,12086],{"class":1353},"\"lodash.min.js\"",[460,12088,5599],{"class":466},[460,12090,225],{"class":470},[460,12092,473],{"class":466},[460,12094,12095,12097,12099],{"class":462,"line":543},[460,12096,467],{"class":466},[460,12098,225],{"class":470},[460,12100,473],{"class":466},[460,12102,12103,12105,12107,12109],{"class":462,"line":549},[460,12104,1340],{"class":887},[460,12106,11601],{"class":900},[460,12108,2943],{"class":887},[460,12110,1348],{"class":466},[460,12112,12113,12115,12117],{"class":462,"line":555},[460,12114,11610],{"class":466},[460,12116,11613],{"class":1353},[460,12118,1363],{"class":466},[460,12120,12121,12123,12125],{"class":462,"line":560},[460,12122,11620],{"class":466},[460,12124,2361],{"class":900},[460,12126,1363],{"class":466},[460,12128,12129,12131,12133,12135,12137],{"class":462,"line":566},[460,12130,11629],{"class":466},[460,12132,11632],{"class":1353},[460,12134,904],{"class":466},[460,12136,11637],{"class":1353},[460,12138,11640],{"class":466},[460,12140,12141],{"class":462,"line":572},[460,12142,1273],{"class":466},[460,12144,12145,12147],{"class":462,"line":578},[460,12146,11649],{"class":466},[460,12148,11652],{"class":1353},[460,12150,12151],{"class":462,"line":812},[460,12152,552],{"class":466},[460,12154,12155],{"class":462,"line":818},[460,12156,509],{"class":466},[460,12158,12159,12161,12163,12165,12168,12171],{"class":462,"line":824},[460,12160,1340],{"class":887},[460,12162,11667],{"class":900},[460,12164,2943],{"class":887},[460,12166,12167],{"class":466}," _.",[460,12169,12170],{"class":929},"cloneDeep",[460,12172,11908],{"class":466},[460,12174,12175,12177,12179],{"class":462,"line":2074},[460,12176,9381],{"class":466},[460,12178,930],{"class":929},[460,12180,11864],{"class":466},[460,12182,12183,12186,12188],{"class":462,"line":2088},[460,12184,12185],{"class":466},"    o.family.baby ",[460,12187,894],{"class":887},[460,12189,11899],{"class":1353},[460,12191,12192,12194,12196],{"class":462,"line":2103},[460,12193,9381],{"class":466},[460,12195,930],{"class":929},[460,12197,11908],{"class":466},[460,12199,12200,12202,12204],{"class":462,"line":2122},[460,12201,581],{"class":466},[460,12203,225],{"class":470},[460,12205,473],{"class":466},[460,12207,12208,12210,12212],{"class":462,"line":2144},[460,12209,1776],{"class":466},[460,12211,1721],{"class":470},[460,12213,473],{"class":466},[460,12215,12216],{"class":462,"line":2158},[460,12217,522],{"emptyLinePlaceholder":521},[460,12219,12220,12222,12224],{"class":462,"line":2163},[460,12221,1776],{"class":466},[460,12223,704],{"class":470},[460,12225,473],{"class":466},[14,12227,12228],{},[30,12229],{"alt":32,"src":12230},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-337.png",[115,12232,12234],{"id":12233},"_41423-利用json实现深拷贝","4.14.2.3 利用JSON实现深拷贝",[451,12236,12238],{"className":702,"code":12237,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cscript>\n    const obj = {\n      uname: 'pink',\n      age: 18,\n      hobby: ['乒乓球', '足球'],\n      family: {\n        baby: '小pink'\n      }\n    }\n    \u002F\u002F stringify 把对象转换为 JOSN 字符串; parse 把字符串转换为对象\n    \u002F\u002F 字符串就是简单数据类型了，就直接存值了，然后再转化为对象，然后就在堆里存值了，栈里存地址\n    \u002F\u002F 但是与原来对象没有联系了，独立了，修改值不会改变原对象了，中间经过了转化为字符串\n    const o = JSON.parse(JSON.stringify(obj))\n    console.log(o)\n    o.family.baby = '123'\n    console.log(obj)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,12239,12240,12250,12264,12268,12276,12290,12310,12322,12330,12334,12342,12350,12360,12368,12376,12388,12392,12398,12402,12406,12411,12416,12421,12450,12458,12467,12475,12483,12491,12495],{"__ignoreMap":32},[460,12241,12242,12244,12246,12248],{"class":462,"line":463},[460,12243,1845],{"class":466},[460,12245,1848],{"class":470},[460,12247,1851],{"class":929},[460,12249,473],{"class":466},[460,12251,12252,12254,12256,12258,12260,12262],{"class":462,"line":476},[460,12253,781],{"class":466},[460,12255,704],{"class":470},[460,12257,1862],{"class":929},[460,12259,894],{"class":466},[460,12261,1867],{"class":1353},[460,12263,473],{"class":466},[460,12265,12266],{"class":462,"line":482},[460,12267,522],{"emptyLinePlaceholder":521},[460,12269,12270,12272,12274],{"class":462,"line":488},[460,12271,781],{"class":466},[460,12273,1880],{"class":470},[460,12275,473],{"class":466},[460,12277,12278,12280,12282,12284,12286,12288],{"class":462,"line":494},[460,12279,467],{"class":466},[460,12281,1889],{"class":470},[460,12283,1892],{"class":929},[460,12285,894],{"class":466},[460,12287,1897],{"class":1353},[460,12289,473],{"class":466},[460,12291,12292,12294,12296,12298,12300,12302,12304,12306,12308],{"class":462,"line":500},[460,12293,467],{"class":466},[460,12295,1889],{"class":470},[460,12297,1908],{"class":929},[460,12299,894],{"class":466},[460,12301,1913],{"class":1353},[460,12303,1916],{"class":929},[460,12305,894],{"class":466},[460,12307,1921],{"class":1353},[460,12309,473],{"class":466},[460,12311,12312,12314,12316,12318,12320],{"class":462,"line":506},[460,12313,467],{"class":466},[460,12315,1930],{"class":470},[460,12317,1933],{"class":466},[460,12319,1930],{"class":470},[460,12321,473],{"class":466},[460,12323,12324,12326,12328],{"class":462,"line":512},[460,12325,1776],{"class":466},[460,12327,1880],{"class":470},[460,12329,473],{"class":466},[460,12331,12332],{"class":462,"line":518},[460,12333,522],{"emptyLinePlaceholder":521},[460,12335,12336,12338,12340],{"class":462,"line":525},[460,12337,781],{"class":466},[460,12339,1721],{"class":470},[460,12341,473],{"class":466},[460,12343,12344,12346,12348],{"class":462,"line":531},[460,12345,467],{"class":466},[460,12347,225],{"class":470},[460,12349,473],{"class":466},[460,12351,12352,12354,12356,12358],{"class":462,"line":537},[460,12353,1340],{"class":887},[460,12355,11601],{"class":900},[460,12357,2943],{"class":887},[460,12359,1348],{"class":466},[460,12361,12362,12364,12366],{"class":462,"line":543},[460,12363,11610],{"class":466},[460,12365,11613],{"class":1353},[460,12367,1363],{"class":466},[460,12369,12370,12372,12374],{"class":462,"line":549},[460,12371,11620],{"class":466},[460,12373,2361],{"class":900},[460,12375,1363],{"class":466},[460,12377,12378,12380,12382,12384,12386],{"class":462,"line":555},[460,12379,11629],{"class":466},[460,12381,11632],{"class":1353},[460,12383,904],{"class":466},[460,12385,11637],{"class":1353},[460,12387,11640],{"class":466},[460,12389,12390],{"class":462,"line":560},[460,12391,1273],{"class":466},[460,12393,12394,12396],{"class":462,"line":566},[460,12395,11649],{"class":466},[460,12397,11652],{"class":1353},[460,12399,12400],{"class":462,"line":572},[460,12401,552],{"class":466},[460,12403,12404],{"class":462,"line":578},[460,12405,509],{"class":466},[460,12407,12408],{"class":462,"line":812},[460,12409,12410],{"class":942},"    \u002F\u002F stringify 把对象转换为 JOSN 字符串; parse 把字符串转换为对象\n",[460,12412,12413],{"class":462,"line":818},[460,12414,12415],{"class":942},"    \u002F\u002F 字符串就是简单数据类型了，就直接存值了，然后再转化为对象，然后就在堆里存值了，栈里存地址\n",[460,12417,12418],{"class":462,"line":824},[460,12419,12420],{"class":942},"    \u002F\u002F 但是与原来对象没有联系了，独立了，修改值不会改变原对象了，中间经过了转化为字符串\n",[460,12422,12423,12425,12427,12429,12432,12434,12437,12439,12442,12444,12447],{"class":462,"line":2074},[460,12424,1340],{"class":887},[460,12426,11667],{"class":900},[460,12428,2943],{"class":887},[460,12430,12431],{"class":900}," JSON",[460,12433,6000],{"class":466},[460,12435,12436],{"class":929},"parse",[460,12438,2174],{"class":466},[460,12440,12441],{"class":900},"JSON",[460,12443,6000],{"class":466},[460,12445,12446],{"class":929},"stringify",[460,12448,12449],{"class":466},"(obj))\n",[460,12451,12452,12454,12456],{"class":462,"line":2088},[460,12453,9381],{"class":466},[460,12455,930],{"class":929},[460,12457,11864],{"class":466},[460,12459,12460,12462,12464],{"class":462,"line":2103},[460,12461,12185],{"class":466},[460,12463,894],{"class":887},[460,12465,12466],{"class":1353}," '123'\n",[460,12468,12469,12471,12473],{"class":462,"line":2122},[460,12470,9381],{"class":466},[460,12472,930],{"class":929},[460,12474,11908],{"class":466},[460,12476,12477,12479,12481],{"class":462,"line":2144},[460,12478,581],{"class":466},[460,12480,225],{"class":470},[460,12482,473],{"class":466},[460,12484,12485,12487,12489],{"class":462,"line":2158},[460,12486,1776],{"class":466},[460,12488,1721],{"class":470},[460,12490,473],{"class":466},[460,12492,12493],{"class":462,"line":2163},[460,12494,522],{"emptyLinePlaceholder":521},[460,12496,12497,12499,12501],{"class":462,"line":2168},[460,12498,1776],{"class":466},[460,12500,704],{"class":470},[460,12502,473],{"class":466},[14,12504,12505],{},[30,12506],{"alt":32,"src":12507},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-338.png",[18,12509,12511],{"id":12510},"_415-异常处理","4.15 异常处理",[103,12513,12514],{},[43,12515,12516],{},"throw抛异常",[14,12518,12519],{},[30,12520],{"alt":32,"src":12521},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-339.png",[103,12523,12524],{"start":476},[43,12525,12526],{},"try\u002Fcatch 捕获错误信息",[14,12528,12529],{},[30,12530],{"alt":32,"src":12531},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-340.png",[451,12533,12535],{"className":702,"code":12534,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cp>123\u003C\u002Fp>\n  \u003Cscript>\n    function fn() {\n      try {\n        \u002F\u002F 可能发生错误的代码  要写到try中\n        const p = document.querySelector('.p')\n        p.style.color = 'red'\n      } catch (err) {\n        \u002F\u002F 拦截错误，提示浏览器提供的错误信息，但是不中断程序的执行\n        console.log(err.message)\n        \u002F\u002F 想要中断程序，需要加return\n        \u002F\u002F return\n        \u002F\u002F 或者不用return，搭配throw来使用，因为throw可以中断程序\n        throw new Error('你看看，选择器错误了吧')\n      }\n      \u002F\u002F finally时不管程序对不对，都要去执行的代码\n      finally {\n        alert('弹出对话框')\n      }\n      console.log(11)\n\n    }\n    \u002F\u002F catch后边括号的是形参，写啥内容都行，保存了浏览器提供的错误信息\n    \u002F\u002F message是一个属性，没有错误信息时，catch就不会执行\n    fn()\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,12536,12537,12547,12561,12565,12573,12587,12607,12619,12627,12631,12639,12652,12660,12669,12676,12681,12701,12711,12722,12727,12737,12742,12747,12752,12769,12773,12778,12785,12797,12801,12815,12819,12823,12828,12833,12840,12848,12856,12860],{"__ignoreMap":32},[460,12538,12539,12541,12543,12545],{"class":462,"line":463},[460,12540,1845],{"class":466},[460,12542,1848],{"class":470},[460,12544,1851],{"class":929},[460,12546,473],{"class":466},[460,12548,12549,12551,12553,12555,12557,12559],{"class":462,"line":476},[460,12550,781],{"class":466},[460,12552,704],{"class":470},[460,12554,1862],{"class":929},[460,12556,894],{"class":466},[460,12558,1867],{"class":1353},[460,12560,473],{"class":466},[460,12562,12563],{"class":462,"line":482},[460,12564,522],{"emptyLinePlaceholder":521},[460,12566,12567,12569,12571],{"class":462,"line":488},[460,12568,781],{"class":466},[460,12570,1880],{"class":470},[460,12572,473],{"class":466},[460,12574,12575,12577,12579,12581,12583,12585],{"class":462,"line":494},[460,12576,467],{"class":466},[460,12578,1889],{"class":470},[460,12580,1892],{"class":929},[460,12582,894],{"class":466},[460,12584,1897],{"class":1353},[460,12586,473],{"class":466},[460,12588,12589,12591,12593,12595,12597,12599,12601,12603,12605],{"class":462,"line":500},[460,12590,467],{"class":466},[460,12592,1889],{"class":470},[460,12594,1908],{"class":929},[460,12596,894],{"class":466},[460,12598,1913],{"class":1353},[460,12600,1916],{"class":929},[460,12602,894],{"class":466},[460,12604,1921],{"class":1353},[460,12606,473],{"class":466},[460,12608,12609,12611,12613,12615,12617],{"class":462,"line":506},[460,12610,467],{"class":466},[460,12612,1930],{"class":470},[460,12614,1933],{"class":466},[460,12616,1930],{"class":470},[460,12618,473],{"class":466},[460,12620,12621,12623,12625],{"class":462,"line":512},[460,12622,1776],{"class":466},[460,12624,1880],{"class":470},[460,12626,473],{"class":466},[460,12628,12629],{"class":462,"line":518},[460,12630,522],{"emptyLinePlaceholder":521},[460,12632,12633,12635,12637],{"class":462,"line":525},[460,12634,781],{"class":466},[460,12636,1721],{"class":470},[460,12638,473],{"class":466},[460,12640,12641,12643,12645,12648,12650],{"class":462,"line":531},[460,12642,467],{"class":466},[460,12644,14],{"class":470},[460,12646,12647],{"class":466},">123\u003C\u002F",[460,12649,14],{"class":470},[460,12651,473],{"class":466},[460,12653,12654,12656,12658],{"class":462,"line":537},[460,12655,467],{"class":466},[460,12657,225],{"class":470},[460,12659,473],{"class":466},[460,12661,12662,12664,12667],{"class":462,"line":543},[460,12663,3372],{"class":887},[460,12665,12666],{"class":929}," fn",[460,12668,11374],{"class":466},[460,12670,12671,12674],{"class":462,"line":549},[460,12672,12673],{"class":887},"      try",[460,12675,1348],{"class":466},[460,12677,12678],{"class":462,"line":555},[460,12679,12680],{"class":942},"        \u002F\u002F 可能发生错误的代码  要写到try中\n",[460,12682,12683,12685,12688,12690,12692,12694,12696,12699],{"class":462,"line":560},[460,12684,3434],{"class":887},[460,12686,12687],{"class":900}," p",[460,12689,2943],{"class":887},[460,12691,10599],{"class":466},[460,12693,3541],{"class":929},[460,12695,2174],{"class":466},[460,12697,12698],{"class":1353},"'.p'",[460,12700,3754],{"class":466},[460,12702,12703,12706,12708],{"class":462,"line":566},[460,12704,12705],{"class":466},"        p.style.color ",[460,12707,894],{"class":887},[460,12709,12710],{"class":1353}," 'red'\n",[460,12712,12713,12716,12719],{"class":462,"line":572},[460,12714,12715],{"class":466},"      } ",[460,12717,12718],{"class":887},"catch",[460,12720,12721],{"class":466}," (err) {\n",[460,12723,12724],{"class":462,"line":578},[460,12725,12726],{"class":942},"        \u002F\u002F 拦截错误，提示浏览器提供的错误信息，但是不中断程序的执行\n",[460,12728,12729,12732,12734],{"class":462,"line":812},[460,12730,12731],{"class":466},"        console.",[460,12733,930],{"class":929},[460,12735,12736],{"class":466},"(err.message)\n",[460,12738,12739],{"class":462,"line":818},[460,12740,12741],{"class":942},"        \u002F\u002F 想要中断程序，需要加return\n",[460,12743,12744],{"class":462,"line":824},[460,12745,12746],{"class":942},"        \u002F\u002F return\n",[460,12748,12749],{"class":462,"line":2074},[460,12750,12751],{"class":942},"        \u002F\u002F 或者不用return，搭配throw来使用，因为throw可以中断程序\n",[460,12753,12754,12757,12759,12762,12764,12767],{"class":462,"line":2088},[460,12755,12756],{"class":887},"        throw",[460,12758,10913],{"class":887},[460,12760,12761],{"class":929}," Error",[460,12763,2174],{"class":466},[460,12765,12766],{"class":1353},"'你看看，选择器错误了吧'",[460,12768,3754],{"class":466},[460,12770,12771],{"class":462,"line":2103},[460,12772,552],{"class":466},[460,12774,12775],{"class":462,"line":2122},[460,12776,12777],{"class":942},"      \u002F\u002F finally时不管程序对不对，都要去执行的代码\n",[460,12779,12780,12783],{"class":462,"line":2144},[460,12781,12782],{"class":887},"      finally",[460,12784,1348],{"class":466},[460,12786,12787,12790,12792,12795],{"class":462,"line":2158},[460,12788,12789],{"class":929},"        alert",[460,12791,2174],{"class":466},[460,12793,12794],{"class":1353},"'弹出对话框'",[460,12796,3754],{"class":466},[460,12798,12799],{"class":462,"line":2163},[460,12800,552],{"class":466},[460,12802,12803,12806,12808,12810,12813],{"class":462,"line":2168},[460,12804,12805],{"class":466},"      console.",[460,12807,930],{"class":929},[460,12809,2174],{"class":466},[460,12811,12812],{"class":900},"11",[460,12814,3754],{"class":466},[460,12816,12817],{"class":462,"line":2183},[460,12818,522],{"emptyLinePlaceholder":521},[460,12820,12821],{"class":462,"line":2194},[460,12822,509],{"class":466},[460,12824,12825],{"class":462,"line":2199},[460,12826,12827],{"class":942},"    \u002F\u002F catch后边括号的是形参，写啥内容都行，保存了浏览器提供的错误信息\n",[460,12829,12830],{"class":462,"line":2204},[460,12831,12832],{"class":942},"    \u002F\u002F message是一个属性，没有错误信息时，catch就不会执行\n",[460,12834,12835,12838],{"class":462,"line":2212},[460,12836,12837],{"class":929},"    fn",[460,12839,10758],{"class":466},[460,12841,12842,12844,12846],{"class":462,"line":2257},[460,12843,581],{"class":466},[460,12845,225],{"class":470},[460,12847,473],{"class":466},[460,12849,12850,12852,12854],{"class":462,"line":2285},[460,12851,1776],{"class":466},[460,12853,1721],{"class":470},[460,12855,473],{"class":466},[460,12857,12858],{"class":462,"line":2298},[460,12859,522],{"emptyLinePlaceholder":521},[460,12861,12862,12864,12866],{"class":462,"line":2303},[460,12863,1776],{"class":466},[460,12865,704],{"class":470},[460,12867,473],{"class":466},[14,12869,12870],{},"try和catch去处理可能有错误的代码，finally去处理不管有没有错误一定会执行的代码",[103,12872,12873],{"start":482},[43,12874,12875],{},"debugger",[14,12877,12878],{},[30,12879],{"alt":32,"src":12880},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-341.png",[14,12882,12883],{},"在代码比较长的情况用比较方便，在检查代码的时候输上debugger，浏览器f12，直接就跳转断点位置，剩下的调式与之前在浏览器手动打断点方式相同",[18,12885,12887],{"id":12886},"_416-处理this","4.16 处理this",[23,12889,12891],{"id":12890},"_4161-this的指向","4.16.1 this的指向",[103,12893,12894],{},[43,12895,12896],{},"普通函数的this",[14,12898,12899],{},[30,12900],{"alt":32,"src":12901},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-342.png",[103,12903,12904],{"start":476},[43,12905,12906],{},"箭头函数的this",[14,12908,12909],{},[30,12910],{"alt":32,"src":12911},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-343.png",[14,12913,12914],{},[30,12915],{"alt":32,"src":12916},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-344.png",[14,12918,12919],{},[30,12920],{"alt":32,"src":12921},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-345.png",[23,12923,12925],{"id":12924},"_4162-this的改变","4.16.2 this的改变",[14,12927,12928],{},"call() apply() bind()",[103,12930,12931],{},[43,12932,12933],{},"call()",[14,12935,12936],{},[30,12937],{"alt":32,"src":12938},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-346.png",[14,12940,12941],{},"两个作用：①调用函数；②改变this指向",[451,12943,12945],{"className":453,"code":12944,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const obj = {\n      uname: 'pink'\n    }\n    function fn(x, y) {\n      console.log(this)  \u002F\u002Fwindow\n      console.log(x + y)\n    }\n    fn.call(obj, 1, 2)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,12946,12947,12955,12963,12967,12972,12976,12981,12986,12991,12995,13000,13008],{"__ignoreMap":32},[460,12948,12949,12951,12953],{"class":462,"line":463},[460,12950,781],{"class":466},[460,12952,1721],{"class":470},[460,12954,473],{"class":466},[460,12956,12957,12959,12961],{"class":462,"line":476},[460,12958,467],{"class":466},[460,12960,225],{"class":470},[460,12962,473],{"class":466},[460,12964,12965],{"class":462,"line":482},[460,12966,528],{"class":466},[460,12968,12969],{"class":462,"line":488},[460,12970,12971],{"class":466},"      uname: 'pink'\n",[460,12973,12974],{"class":462,"line":494},[460,12975,509],{"class":466},[460,12977,12978],{"class":462,"line":500},[460,12979,12980],{"class":466},"    function fn(x, y) {\n",[460,12982,12983],{"class":462,"line":506},[460,12984,12985],{"class":466},"      console.log(this)  \u002F\u002Fwindow\n",[460,12987,12988],{"class":462,"line":512},[460,12989,12990],{"class":466},"      console.log(x + y)\n",[460,12992,12993],{"class":462,"line":518},[460,12994,509],{"class":466},[460,12996,12997],{"class":462,"line":525},[460,12998,12999],{"class":466},"    fn.call(obj, 1, 2)\n",[460,13001,13002,13004,13006],{"class":462,"line":531},[460,13003,581],{"class":466},[460,13005,225],{"class":470},[460,13007,473],{"class":466},[460,13009,13010,13012,13014],{"class":462,"line":537},[460,13011,1776],{"class":466},[460,13013,1721],{"class":470},[460,13015,473],{"class":466},[14,13017,13018],{},[30,13019],{"alt":32,"src":13020},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-347.png",[103,13022,13023],{"start":476},[43,13024,13025],{},"apply()",[14,13027,13028],{},[30,13029],{"alt":32,"src":13030},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-348.png",[14,13032,12941],{},[14,13034,13035],{},"call传递的是普通参数，而apply必须传递的是数组",[451,13037,13039],{"className":702,"code":13038,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cscript>\n    const obj = {\n      age: 18\n    }\n    \u002F\u002F 形参接收的不是数组，是数组里的值，但实参必须是数组\n    function fn(x, y) {\n      console.log(this)\n      console.log(x + y)\n    }\n    \u002F\u002F fn.apply(this指向谁, 数组参数)\n    fn.apply(obj, [1, 2])\n    \u002F\u002F 和call一样，返回值就是函数的返回值，因为他就是在调用函数\n\n    \u002F\u002F 使用场景：求数组最大值\n    \u002F\u002F const max = Math.max(1, 2, 3)\n    \u002F\u002F console.log(max)   \u002F\u002F3\n    \u002F\u002F 指向空或者Math都是可以的\n    const arr = [100, 44, 77]\n    \u002F\u002F apply这个方法实参必须是数组，形参是接收的是数组中的每一个值\n    const max = Math.max.apply(Math, arr)\n    const min = Math.min.apply(Math, arr)\n    console.log(max, min)     \u002F\u002F100,4\n\n    \u002F\u002F 求最大值的另一种方式:展开运算符\n    console.log(Max.max(...arr))\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,13040,13041,13051,13065,13069,13077,13091,13111,13123,13131,13135,13143,13151,13161,13168,13172,13177,13195,13207,13221,13225,13230,13250,13255,13259,13264,13269,13277,13282,13308,13313,13330,13346,13358,13362,13367,13387,13395,13403,13407],{"__ignoreMap":32},[460,13042,13043,13045,13047,13049],{"class":462,"line":463},[460,13044,1845],{"class":466},[460,13046,1848],{"class":470},[460,13048,1851],{"class":929},[460,13050,473],{"class":466},[460,13052,13053,13055,13057,13059,13061,13063],{"class":462,"line":476},[460,13054,781],{"class":466},[460,13056,704],{"class":470},[460,13058,1862],{"class":929},[460,13060,894],{"class":466},[460,13062,1867],{"class":1353},[460,13064,473],{"class":466},[460,13066,13067],{"class":462,"line":482},[460,13068,522],{"emptyLinePlaceholder":521},[460,13070,13071,13073,13075],{"class":462,"line":488},[460,13072,781],{"class":466},[460,13074,1880],{"class":470},[460,13076,473],{"class":466},[460,13078,13079,13081,13083,13085,13087,13089],{"class":462,"line":494},[460,13080,467],{"class":466},[460,13082,1889],{"class":470},[460,13084,1892],{"class":929},[460,13086,894],{"class":466},[460,13088,1897],{"class":1353},[460,13090,473],{"class":466},[460,13092,13093,13095,13097,13099,13101,13103,13105,13107,13109],{"class":462,"line":500},[460,13094,467],{"class":466},[460,13096,1889],{"class":470},[460,13098,1908],{"class":929},[460,13100,894],{"class":466},[460,13102,1913],{"class":1353},[460,13104,1916],{"class":929},[460,13106,894],{"class":466},[460,13108,1921],{"class":1353},[460,13110,473],{"class":466},[460,13112,13113,13115,13117,13119,13121],{"class":462,"line":506},[460,13114,467],{"class":466},[460,13116,1930],{"class":470},[460,13118,1933],{"class":466},[460,13120,1930],{"class":470},[460,13122,473],{"class":466},[460,13124,13125,13127,13129],{"class":462,"line":512},[460,13126,1776],{"class":466},[460,13128,1880],{"class":470},[460,13130,473],{"class":466},[460,13132,13133],{"class":462,"line":518},[460,13134,522],{"emptyLinePlaceholder":521},[460,13136,13137,13139,13141],{"class":462,"line":525},[460,13138,781],{"class":466},[460,13140,1721],{"class":470},[460,13142,473],{"class":466},[460,13144,13145,13147,13149],{"class":462,"line":531},[460,13146,467],{"class":466},[460,13148,225],{"class":470},[460,13150,473],{"class":466},[460,13152,13153,13155,13157,13159],{"class":462,"line":537},[460,13154,1340],{"class":887},[460,13156,11601],{"class":900},[460,13158,2943],{"class":887},[460,13160,1348],{"class":466},[460,13162,13163,13165],{"class":462,"line":543},[460,13164,11620],{"class":466},[460,13166,13167],{"class":900},"18\n",[460,13169,13170],{"class":462,"line":549},[460,13171,509],{"class":466},[460,13173,13174],{"class":462,"line":555},[460,13175,13176],{"class":942},"    \u002F\u002F 形参接收的不是数组，是数组里的值，但实参必须是数组\n",[460,13178,13179,13181,13183,13185,13188,13190,13193],{"class":462,"line":560},[460,13180,3372],{"class":887},[460,13182,12666],{"class":929},[460,13184,2174],{"class":466},[460,13186,13187],{"class":3380},"x",[460,13189,904],{"class":466},[460,13191,13192],{"class":3380},"y",[460,13194,2180],{"class":466},[460,13196,13197,13199,13201,13203,13205],{"class":462,"line":566},[460,13198,12805],{"class":466},[460,13200,930],{"class":929},[460,13202,2174],{"class":466},[460,13204,10786],{"class":900},[460,13206,3754],{"class":466},[460,13208,13209,13211,13213,13216,13218],{"class":462,"line":572},[460,13210,12805],{"class":466},[460,13212,930],{"class":929},[460,13214,13215],{"class":466},"(x ",[460,13217,8495],{"class":887},[460,13219,13220],{"class":466}," y)\n",[460,13222,13223],{"class":462,"line":578},[460,13224,509],{"class":466},[460,13226,13227],{"class":462,"line":812},[460,13228,13229],{"class":942},"    \u002F\u002F fn.apply(this指向谁, 数组参数)\n",[460,13231,13232,13235,13238,13241,13243,13245,13247],{"class":462,"line":818},[460,13233,13234],{"class":466},"    fn.",[460,13236,13237],{"class":929},"apply",[460,13239,13240],{"class":466},"(obj, [",[460,13242,901],{"class":900},[460,13244,904],{"class":466},[460,13246,907],{"class":900},[460,13248,13249],{"class":466},"])\n",[460,13251,13252],{"class":462,"line":824},[460,13253,13254],{"class":942},"    \u002F\u002F 和call一样，返回值就是函数的返回值，因为他就是在调用函数\n",[460,13256,13257],{"class":462,"line":2074},[460,13258,522],{"emptyLinePlaceholder":521},[460,13260,13261],{"class":462,"line":2088},[460,13262,13263],{"class":942},"    \u002F\u002F 使用场景：求数组最大值\n",[460,13265,13266],{"class":462,"line":2103},[460,13267,13268],{"class":942},"    \u002F\u002F const max = Math.max(1, 2, 3)\n",[460,13270,13271,13274],{"class":462,"line":2122},[460,13272,13273],{"class":942},"    \u002F\u002F console.log(max)",[460,13275,13276],{"class":942},"   \u002F\u002F3\n",[460,13278,13279],{"class":462,"line":2144},[460,13280,13281],{"class":942},"    \u002F\u002F 指向空或者Math都是可以的\n",[460,13283,13284,13286,13289,13291,13293,13295,13297,13300,13302,13305],{"class":462,"line":2158},[460,13285,1340],{"class":887},[460,13287,13288],{"class":900}," arr",[460,13290,2943],{"class":887},[460,13292,897],{"class":466},[460,13294,2325],{"class":900},[460,13296,904],{"class":466},[460,13298,13299],{"class":900},"44",[460,13301,904],{"class":466},[460,13303,13304],{"class":900},"77",[460,13306,13307],{"class":466},"]\n",[460,13309,13310],{"class":462,"line":2163},[460,13311,13312],{"class":942},"    \u002F\u002F apply这个方法实参必须是数组，形参是接收的是数组中的每一个值\n",[460,13314,13315,13317,13320,13322,13325,13327],{"class":462,"line":2168},[460,13316,1340],{"class":887},[460,13318,13319],{"class":900}," max",[460,13321,2943],{"class":887},[460,13323,13324],{"class":466}," Math.max.",[460,13326,13237],{"class":929},[460,13328,13329],{"class":466},"(Math, arr)\n",[460,13331,13332,13334,13337,13339,13342,13344],{"class":462,"line":2183},[460,13333,1340],{"class":887},[460,13335,13336],{"class":900}," min",[460,13338,2943],{"class":887},[460,13340,13341],{"class":466}," Math.min.",[460,13343,13237],{"class":929},[460,13345,13329],{"class":466},[460,13347,13348,13350,13352,13355],{"class":462,"line":2194},[460,13349,9381],{"class":466},[460,13351,930],{"class":929},[460,13353,13354],{"class":466},"(max, min)     ",[460,13356,13357],{"class":942},"\u002F\u002F100,4\n",[460,13359,13360],{"class":462,"line":2199},[460,13361,522],{"emptyLinePlaceholder":521},[460,13363,13364],{"class":462,"line":2204},[460,13365,13366],{"class":942},"    \u002F\u002F 求最大值的另一种方式:展开运算符\n",[460,13368,13369,13371,13373,13376,13379,13381,13384],{"class":462,"line":2212},[460,13370,9381],{"class":466},[460,13372,930],{"class":929},[460,13374,13375],{"class":466},"(Max.",[460,13377,13378],{"class":929},"max",[460,13380,2174],{"class":466},[460,13382,13383],{"class":887},"...",[460,13385,13386],{"class":466},"arr))\n",[460,13388,13389,13391,13393],{"class":462,"line":2257},[460,13390,581],{"class":466},[460,13392,225],{"class":470},[460,13394,473],{"class":466},[460,13396,13397,13399,13401],{"class":462,"line":2285},[460,13398,1776],{"class":466},[460,13400,1721],{"class":470},[460,13402,473],{"class":466},[460,13404,13405],{"class":462,"line":2298},[460,13406,522],{"emptyLinePlaceholder":521},[460,13408,13409,13411,13413],{"class":462,"line":2303},[460,13410,1776],{"class":466},[460,13412,704],{"class":470},[460,13414,473],{"class":466},[14,13416,13417],{},[30,13418],{"alt":32,"src":13419},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-349.png",[103,13421,13422],{"start":482},[43,13423,13424],{},"bind()",[14,13426,13427],{},[30,13428],{"alt":32,"src":13429},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-350.png",[14,13431,13432],{},"bind()相比于call和apply来说不会调用函数，call和apply只要一写就直接调用函数",[14,13434,13435],{},"bind的语法跟call很相似",[451,13437,13439],{"className":453,"code":13438,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    const obj = {\n      age: 18\n    }\n    function fn() {\n      console.log(this)\n    }\n    \u002F\u002F 1.bind 不会调用函数\n    \u002F\u002F 2.bind能改变this的指向\n    fn.bind()\n    \u002F\u002F 3.返回值是一个函数,他相当于进行的是对原函数拷贝,然后新函数的这个this指向我们设定的那个指定值\n    const fun = fn.bind(obj)\n    \u002F\u002F console.log(fun)\n    \u002F\u002F 调用,查看this的指向\n    fun()\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,13440,13441,13449,13457,13461,13466,13470,13474,13479,13483,13488,13493,13498,13503,13508,13513,13518,13523,13531],{"__ignoreMap":32},[460,13442,13443,13445,13447],{"class":462,"line":463},[460,13444,781],{"class":466},[460,13446,1721],{"class":470},[460,13448,473],{"class":466},[460,13450,13451,13453,13455],{"class":462,"line":476},[460,13452,467],{"class":466},[460,13454,225],{"class":470},[460,13456,473],{"class":466},[460,13458,13459],{"class":462,"line":482},[460,13460,528],{"class":466},[460,13462,13463],{"class":462,"line":488},[460,13464,13465],{"class":466},"      age: 18\n",[460,13467,13468],{"class":462,"line":494},[460,13469,509],{"class":466},[460,13471,13472],{"class":462,"line":500},[460,13473,497],{"class":466},[460,13475,13476],{"class":462,"line":506},[460,13477,13478],{"class":466},"      console.log(this)\n",[460,13480,13481],{"class":462,"line":512},[460,13482,509],{"class":466},[460,13484,13485],{"class":462,"line":518},[460,13486,13487],{"class":466},"    \u002F\u002F 1.bind 不会调用函数\n",[460,13489,13490],{"class":462,"line":525},[460,13491,13492],{"class":466},"    \u002F\u002F 2.bind能改变this的指向\n",[460,13494,13495],{"class":462,"line":531},[460,13496,13497],{"class":466},"    fn.bind()\n",[460,13499,13500],{"class":462,"line":537},[460,13501,13502],{"class":466},"    \u002F\u002F 3.返回值是一个函数,他相当于进行的是对原函数拷贝,然后新函数的这个this指向我们设定的那个指定值\n",[460,13504,13505],{"class":462,"line":543},[460,13506,13507],{"class":466},"    const fun = fn.bind(obj)\n",[460,13509,13510],{"class":462,"line":549},[460,13511,13512],{"class":466},"    \u002F\u002F console.log(fun)\n",[460,13514,13515],{"class":462,"line":555},[460,13516,13517],{"class":466},"    \u002F\u002F 调用,查看this的指向\n",[460,13519,13520],{"class":462,"line":560},[460,13521,13522],{"class":466},"    fun()\n",[460,13524,13525,13527,13529],{"class":462,"line":566},[460,13526,581],{"class":466},[460,13528,225],{"class":470},[460,13530,473],{"class":466},[460,13532,13533,13535,13537],{"class":462,"line":572},[460,13534,1776],{"class":466},[460,13536,1721],{"class":470},[460,13538,473],{"class":466},[14,13540,13541],{},[30,13542],{"alt":32,"src":13543},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-351.png",[103,13545,13546],{"start":488},[43,13547,13548],{},"按钮案例：按钮点击之后被禁用，两秒之后自动变为不禁用状态，要求尽可能多的用this",[451,13550,13552],{"className":453,"code":13551,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cbutton>禁用\u003C\u002Fbutton>\n  \u003Cscript>\n    const btn = document.querySelector('button')\n    btn.addEventListener('click', function () {\n      this.disabled = true\n      \u002F\u002F 定时器是window进行调用的\n      setTimeout(function () {\n        \u002F\u002F 在这个普通函数里面，我们要this由原来的window 改为 btn\n        this.disabled = false\n      }.bind(this), 2000)\n      \u002F\u002F 上边的这个this是在延时函数外面的，所以这个this跟上边的那个this是相同的，就是指的是btn\n      \u002F\u002F .bind(this)之后就已经拷贝完之前对象了，就可以等两秒之后延时函数来调用它就可以了\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,13553,13554,13562,13575,13583,13588,13593,13598,13603,13608,13613,13618,13623,13628,13633,13637,13645],{"__ignoreMap":32},[460,13555,13556,13558,13560],{"class":462,"line":463},[460,13557,781],{"class":466},[460,13559,1721],{"class":470},[460,13561,473],{"class":466},[460,13563,13564,13566,13568,13571,13573],{"class":462,"line":476},[460,13565,467],{"class":466},[460,13567,10501],{"class":470},[460,13569,13570],{"class":466},">禁用\u003C\u002F",[460,13572,10501],{"class":470},[460,13574,473],{"class":466},[460,13576,13577,13579,13581],{"class":462,"line":482},[460,13578,467],{"class":466},[460,13580,225],{"class":470},[460,13582,473],{"class":466},[460,13584,13585],{"class":462,"line":488},[460,13586,13587],{"class":466},"    const btn = document.querySelector('button')\n",[460,13589,13590],{"class":462,"line":494},[460,13591,13592],{"class":466},"    btn.addEventListener('click', function () {\n",[460,13594,13595],{"class":462,"line":500},[460,13596,13597],{"class":466},"      this.disabled = true\n",[460,13599,13600],{"class":462,"line":506},[460,13601,13602],{"class":466},"      \u002F\u002F 定时器是window进行调用的\n",[460,13604,13605],{"class":462,"line":512},[460,13606,13607],{"class":466},"      setTimeout(function () {\n",[460,13609,13610],{"class":462,"line":518},[460,13611,13612],{"class":466},"        \u002F\u002F 在这个普通函数里面，我们要this由原来的window 改为 btn\n",[460,13614,13615],{"class":462,"line":525},[460,13616,13617],{"class":466},"        this.disabled = false\n",[460,13619,13620],{"class":462,"line":531},[460,13621,13622],{"class":466},"      }.bind(this), 2000)\n",[460,13624,13625],{"class":462,"line":537},[460,13626,13627],{"class":466},"      \u002F\u002F 上边的这个this是在延时函数外面的，所以这个this跟上边的那个this是相同的，就是指的是btn\n",[460,13629,13630],{"class":462,"line":543},[460,13631,13632],{"class":466},"      \u002F\u002F .bind(this)之后就已经拷贝完之前对象了，就可以等两秒之后延时函数来调用它就可以了\n",[460,13634,13635],{"class":462,"line":549},[460,13636,1679],{"class":466},[460,13638,13639,13641,13643],{"class":462,"line":555},[460,13640,581],{"class":466},[460,13642,225],{"class":470},[460,13644,473],{"class":466},[460,13646,13647,13649,13651],{"class":462,"line":560},[460,13648,1776],{"class":466},[460,13650,1721],{"class":470},[460,13652,473],{"class":466},[103,13654,13655],{"start":494},[43,13656,13657],{},"总结",[14,13659,13660],{},[30,13661],{"alt":32,"src":13662},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-352.png",[18,13664,13666],{"id":13665},"_417-性能优化","4.17 性能优化",[23,13668,13670],{"id":13669},"_4171-防抖","4.17.1 防抖",[14,13672,13673],{},[30,13674],{"alt":32,"src":13675},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-353.png",[14,13677,13678],{},[3944,13679,13680],{},"案例：利用防抖来处理-鼠标经过盒子显示文字（要求:鼠标在盒子上移动，里面的数字就会变化+1）",[14,13682,13683],{},"防抖实现方式：",[40,13685,13686],{},[43,13687,13688],{},"lodash 提供了防抖处理",[14,13690,13691],{},"_.debounce(func,[wait=0],[options={}])",[14,13693,13694],{},"创建一个debounced（防抖函数），该函数会从上一次被调用后，延迟wait毫秒后调用func方法。",[451,13696,13698],{"className":702,"code":13697,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    .box {\n      box-sizing: border-box;\n      width: 200px;\n      height: 200px;\n      background-color: gray;\n      font-size: 25px;\n      color: #fff;\n      text-align: center;\n      padding-top: 5px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"box\">\u003C\u002Fdiv>\n  \u003Cscript src=\"lodash.min.js\">\u003C\u002Fscript>\n  \u003Cscript>\n    const box = document.querySelector('.box')\n    let i = 0\n    function mouseMove() {\n      box.innerHTML = i++\n      \u002F\u002F 如果里面存在大量消耗性能的代码，比如dom操作，比如数据处理，可能会造成卡顿\n    }\n    \u002F\u002F box.addEventListener('mousemove', mouseMove)\n    \u002F\u002F 利用lodash库实现防抖 -500毫秒之后才去+1\n    \u002F\u002F 以前在事件监听中的执行函数是不可以加括号的，加括号就成调用了，但是现在是需要传递参数的，所以必须加\n    box.addEventListener('mousemove', _.debounce(mouseMove, 500))\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,13699,13700,13710,13724,13728,13736,13750,13770,13782,13790,13797,13807,13819,13831,13842,13855,13865,13875,13888,13892,13900,13908,13912,13920,13939,13957,13965,13984,13997,14006,14018,14023,14027,14032,14037,14042,14068,14076,14084,14088],{"__ignoreMap":32},[460,13701,13702,13704,13706,13708],{"class":462,"line":463},[460,13703,1845],{"class":466},[460,13705,1848],{"class":470},[460,13707,1851],{"class":929},[460,13709,473],{"class":466},[460,13711,13712,13714,13716,13718,13720,13722],{"class":462,"line":476},[460,13713,781],{"class":466},[460,13715,704],{"class":470},[460,13717,1862],{"class":929},[460,13719,894],{"class":466},[460,13721,1867],{"class":1353},[460,13723,473],{"class":466},[460,13725,13726],{"class":462,"line":482},[460,13727,522],{"emptyLinePlaceholder":521},[460,13729,13730,13732,13734],{"class":462,"line":488},[460,13731,781],{"class":466},[460,13733,1880],{"class":470},[460,13735,473],{"class":466},[460,13737,13738,13740,13742,13744,13746,13748],{"class":462,"line":494},[460,13739,467],{"class":466},[460,13741,1889],{"class":470},[460,13743,1892],{"class":929},[460,13745,894],{"class":466},[460,13747,1897],{"class":1353},[460,13749,473],{"class":466},[460,13751,13752,13754,13756,13758,13760,13762,13764,13766,13768],{"class":462,"line":500},[460,13753,467],{"class":466},[460,13755,1889],{"class":470},[460,13757,1908],{"class":929},[460,13759,894],{"class":466},[460,13761,1913],{"class":1353},[460,13763,1916],{"class":929},[460,13765,894],{"class":466},[460,13767,1921],{"class":1353},[460,13769,473],{"class":466},[460,13771,13772,13774,13776,13778,13780],{"class":462,"line":506},[460,13773,467],{"class":466},[460,13775,1930],{"class":470},[460,13777,1933],{"class":466},[460,13779,1930],{"class":470},[460,13781,473],{"class":466},[460,13783,13784,13786,13788],{"class":462,"line":512},[460,13785,467],{"class":466},[460,13787,1944],{"class":470},[460,13789,473],{"class":466},[460,13791,13792,13795],{"class":462,"line":518},[460,13793,13794],{"class":929},"    .box",[460,13796,1348],{"class":466},[460,13798,13799,13801,13803,13805],{"class":462,"line":525},[460,13800,1982],{"class":900},[460,13802,1961],{"class":466},[460,13804,1987],{"class":900},[460,13806,1966],{"class":466},[460,13808,13809,13811,13813,13815,13817],{"class":462,"line":531},[460,13810,2009],{"class":900},[460,13812,1961],{"class":466},[460,13814,5490],{"class":900},[460,13816,2017],{"class":887},[460,13818,1966],{"class":466},[460,13820,13821,13823,13825,13827,13829],{"class":462,"line":537},[460,13822,5499],{"class":900},[460,13824,1961],{"class":466},[460,13826,5490],{"class":900},[460,13828,2017],{"class":887},[460,13830,1966],{"class":466},[460,13832,13833,13835,13837,13840],{"class":462,"line":543},[460,13834,2673],{"class":900},[460,13836,1961],{"class":466},[460,13838,13839],{"class":900},"gray",[460,13841,1966],{"class":466},[460,13843,13844,13846,13848,13851,13853],{"class":462,"line":549},[460,13845,2356],{"class":900},[460,13847,1961],{"class":466},[460,13849,13850],{"class":900},"25",[460,13852,2017],{"class":887},[460,13854,1966],{"class":466},[460,13856,13857,13859,13861,13863],{"class":462,"line":555},[460,13858,2384],{"class":900},[460,13860,1961],{"class":466},[460,13862,2690],{"class":900},[460,13864,1966],{"class":466},[460,13866,13867,13869,13871,13873],{"class":462,"line":560},[460,13868,5540],{"class":900},[460,13870,1961],{"class":466},[460,13872,5545],{"class":900},[460,13874,1966],{"class":466},[460,13876,13877,13880,13882,13884,13886],{"class":462,"line":566},[460,13878,13879],{"class":900},"      padding-top",[460,13881,1961],{"class":466},[460,13883,7290],{"class":900},[460,13885,2017],{"class":887},[460,13887,1966],{"class":466},[460,13889,13890],{"class":462,"line":572},[460,13891,509],{"class":466},[460,13893,13894,13896,13898],{"class":462,"line":578},[460,13895,581],{"class":466},[460,13897,1944],{"class":470},[460,13899,473],{"class":466},[460,13901,13902,13904,13906],{"class":462,"line":812},[460,13903,1776],{"class":466},[460,13905,1880],{"class":470},[460,13907,473],{"class":466},[460,13909,13910],{"class":462,"line":818},[460,13911,522],{"emptyLinePlaceholder":521},[460,13913,13914,13916,13918],{"class":462,"line":824},[460,13915,781],{"class":466},[460,13917,1721],{"class":470},[460,13919,473],{"class":466},[460,13921,13922,13924,13926,13928,13930,13933,13935,13937],{"class":462,"line":2074},[460,13923,467],{"class":466},[460,13925,2737],{"class":470},[460,13927,2740],{"class":929},[460,13929,894],{"class":466},[460,13931,13932],{"class":1353},"\"box\"",[460,13934,5599],{"class":466},[460,13936,2737],{"class":470},[460,13938,473],{"class":466},[460,13940,13941,13943,13945,13947,13949,13951,13953,13955],{"class":462,"line":2088},[460,13942,467],{"class":466},[460,13944,225],{"class":470},[460,13946,12081],{"class":929},[460,13948,894],{"class":466},[460,13950,12086],{"class":1353},[460,13952,5599],{"class":466},[460,13954,225],{"class":470},[460,13956,473],{"class":466},[460,13958,13959,13961,13963],{"class":462,"line":2103},[460,13960,467],{"class":466},[460,13962,225],{"class":470},[460,13964,473],{"class":466},[460,13966,13967,13969,13971,13973,13975,13977,13979,13982],{"class":462,"line":2122},[460,13968,1340],{"class":887},[460,13970,10723],{"class":900},[460,13972,2943],{"class":887},[460,13974,10599],{"class":466},[460,13976,3541],{"class":929},[460,13978,2174],{"class":466},[460,13980,13981],{"class":1353},"'.box'",[460,13983,3754],{"class":466},[460,13985,13986,13989,13992,13994],{"class":462,"line":2144},[460,13987,13988],{"class":887},"    let",[460,13990,13991],{"class":466}," i ",[460,13993,894],{"class":887},[460,13995,13996],{"class":900}," 0\n",[460,13998,13999,14001,14004],{"class":462,"line":2158},[460,14000,3372],{"class":887},[460,14002,14003],{"class":929}," mouseMove",[460,14005,11374],{"class":466},[460,14007,14008,14011,14013,14015],{"class":462,"line":2163},[460,14009,14010],{"class":466},"      box.innerHTML ",[460,14012,894],{"class":887},[460,14014,10169],{"class":466},[460,14016,14017],{"class":887},"++\n",[460,14019,14020],{"class":462,"line":2168},[460,14021,14022],{"class":942},"      \u002F\u002F 如果里面存在大量消耗性能的代码，比如dom操作，比如数据处理，可能会造成卡顿\n",[460,14024,14025],{"class":462,"line":2183},[460,14026,509],{"class":466},[460,14028,14029],{"class":462,"line":2194},[460,14030,14031],{"class":942},"    \u002F\u002F box.addEventListener('mousemove', mouseMove)\n",[460,14033,14034],{"class":462,"line":2199},[460,14035,14036],{"class":942},"    \u002F\u002F 利用lodash库实现防抖 -500毫秒之后才去+1\n",[460,14038,14039],{"class":462,"line":2204},[460,14040,14041],{"class":942},"    \u002F\u002F 以前在事件监听中的执行函数是不可以加括号的，加括号就成调用了，但是现在是需要传递参数的，所以必须加\n",[460,14043,14044,14047,14049,14051,14054,14057,14060,14063,14066],{"class":462,"line":2212},[460,14045,14046],{"class":466},"    box.",[460,14048,3599],{"class":929},[460,14050,2174],{"class":466},[460,14052,14053],{"class":1353},"'mousemove'",[460,14055,14056],{"class":466},", _.",[460,14058,14059],{"class":929},"debounce",[460,14061,14062],{"class":466},"(mouseMove, ",[460,14064,14065],{"class":900},"500",[460,14067,6311],{"class":466},[460,14069,14070,14072,14074],{"class":462,"line":2257},[460,14071,581],{"class":466},[460,14073,225],{"class":470},[460,14075,473],{"class":466},[460,14077,14078,14080,14082],{"class":462,"line":2285},[460,14079,1776],{"class":466},[460,14081,1721],{"class":470},[460,14083,473],{"class":466},[460,14085,14086],{"class":462,"line":2298},[460,14087,522],{"emptyLinePlaceholder":521},[460,14089,14090,14092,14094],{"class":462,"line":2303},[460,14091,1776],{"class":466},[460,14093,704],{"class":470},[460,14095,473],{"class":466},[40,14097,14098],{},[43,14099,14100],{},"手写一个防抖函数来处理",[14,14102,14103],{},"防抖的核心就是利用定时器来实现的：",[14,14105,14106],{},"①声明一个定时器变量",[14,14108,14109],{},"②当鼠标每次滑动都先判断是否有定时器了，如果有定时器先清除以前的定时器",[14,14111,14112],{},"③如果没有定时器则开启定时器，记得存到变量里面",[451,14114,14116],{"className":702,"code":14115,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    .box {\n      box-sizing: border-box;\n      width: 200px;\n      height: 200px;\n      background-color: gray;\n      font-size: 25px;\n      color: #fff;\n      text-align: center;\n      padding-top: 5px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"box\">\u003C\u002Fdiv>\n  \u003Cscript src=\"lodash.min.js\">\u003C\u002Fscript>\n  \u003Cscript>\n    const box = document.querySelector('.box')\n    let i = 0\n    function mouseMove() {\n      box.innerHTML = i++\n      \u002F\u002F 如果里面存在大量消耗性能的代码，比如dom操作，比如数据处理，可能会造成卡顿\n    }\n    \u002F\u002F box.addEventListener('mousemove', mouseMove)\n    \u002F\u002F 手写防抖函数\n    \u002F\u002F 核心是利用延时器setTimeout来实现的\n    \u002F\u002F 1.声明定时器变量\n    \u002F\u002F 2.每次鼠标移动(事件触发)的时候都要先判断是否有定时器,如果有先清除以前的定时器\n    \u002F\u002F 3.如果没有定时器,则开启定时器,存入到定时器变量里面\n    \u002F\u002F 4.定时器里面写函数调用\n    function debounce(fn, t) {\n      let timer\n      \u002F\u002F return 返回一个匿名函数\n      return function () {\n        \u002F\u002F 这里边写第二三四步\n        if (timer) clearTimeout(timer)\n        timer = setTimeout(function () {\n          fn() \u002F\u002F加小括号调用fn }, t)\n        }, t)\n      }\n    }\n    box.addEventListener('mousemove', debounce(mouseMove, 500))\n\n    \u002F\u002F debounce(mouseMove, 500)是在调用函数,一调用就会拿到return后边的内容\n    \u002F\u002F 相当于debounce(mouseMove, 500) = function () {\u002F\u002F 这里边写第二三四步}\n    \u002F\u002F 我们移动鼠标时想要实现的是这个匿名函数\n    \u002F\u002F 要的其实是这个函数名,事件中的执行函数不能写括号,写括号就是函数调用\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,14117,14118,14128,14142,14146,14154,14168,14188,14200,14208,14214,14224,14236,14248,14258,14270,14280,14290,14302,14306,14314,14322,14326,14334,14352,14370,14378,14396,14406,14414,14424,14428,14432,14436,14441,14446,14451,14456,14461,14466,14485,14492,14497,14505,14510,14523,14539,14550,14555,14559,14563,14583,14587,14592,14597,14602,14607,14615,14623,14627],{"__ignoreMap":32},[460,14119,14120,14122,14124,14126],{"class":462,"line":463},[460,14121,1845],{"class":466},[460,14123,1848],{"class":470},[460,14125,1851],{"class":929},[460,14127,473],{"class":466},[460,14129,14130,14132,14134,14136,14138,14140],{"class":462,"line":476},[460,14131,781],{"class":466},[460,14133,704],{"class":470},[460,14135,1862],{"class":929},[460,14137,894],{"class":466},[460,14139,1867],{"class":1353},[460,14141,473],{"class":466},[460,14143,14144],{"class":462,"line":482},[460,14145,522],{"emptyLinePlaceholder":521},[460,14147,14148,14150,14152],{"class":462,"line":488},[460,14149,781],{"class":466},[460,14151,1880],{"class":470},[460,14153,473],{"class":466},[460,14155,14156,14158,14160,14162,14164,14166],{"class":462,"line":494},[460,14157,467],{"class":466},[460,14159,1889],{"class":470},[460,14161,1892],{"class":929},[460,14163,894],{"class":466},[460,14165,1897],{"class":1353},[460,14167,473],{"class":466},[460,14169,14170,14172,14174,14176,14178,14180,14182,14184,14186],{"class":462,"line":500},[460,14171,467],{"class":466},[460,14173,1889],{"class":470},[460,14175,1908],{"class":929},[460,14177,894],{"class":466},[460,14179,1913],{"class":1353},[460,14181,1916],{"class":929},[460,14183,894],{"class":466},[460,14185,1921],{"class":1353},[460,14187,473],{"class":466},[460,14189,14190,14192,14194,14196,14198],{"class":462,"line":506},[460,14191,467],{"class":466},[460,14193,1930],{"class":470},[460,14195,1933],{"class":466},[460,14197,1930],{"class":470},[460,14199,473],{"class":466},[460,14201,14202,14204,14206],{"class":462,"line":512},[460,14203,467],{"class":466},[460,14205,1944],{"class":470},[460,14207,473],{"class":466},[460,14209,14210,14212],{"class":462,"line":518},[460,14211,13794],{"class":929},[460,14213,1348],{"class":466},[460,14215,14216,14218,14220,14222],{"class":462,"line":525},[460,14217,1982],{"class":900},[460,14219,1961],{"class":466},[460,14221,1987],{"class":900},[460,14223,1966],{"class":466},[460,14225,14226,14228,14230,14232,14234],{"class":462,"line":531},[460,14227,2009],{"class":900},[460,14229,1961],{"class":466},[460,14231,5490],{"class":900},[460,14233,2017],{"class":887},[460,14235,1966],{"class":466},[460,14237,14238,14240,14242,14244,14246],{"class":462,"line":537},[460,14239,5499],{"class":900},[460,14241,1961],{"class":466},[460,14243,5490],{"class":900},[460,14245,2017],{"class":887},[460,14247,1966],{"class":466},[460,14249,14250,14252,14254,14256],{"class":462,"line":543},[460,14251,2673],{"class":900},[460,14253,1961],{"class":466},[460,14255,13839],{"class":900},[460,14257,1966],{"class":466},[460,14259,14260,14262,14264,14266,14268],{"class":462,"line":549},[460,14261,2356],{"class":900},[460,14263,1961],{"class":466},[460,14265,13850],{"class":900},[460,14267,2017],{"class":887},[460,14269,1966],{"class":466},[460,14271,14272,14274,14276,14278],{"class":462,"line":555},[460,14273,2384],{"class":900},[460,14275,1961],{"class":466},[460,14277,2690],{"class":900},[460,14279,1966],{"class":466},[460,14281,14282,14284,14286,14288],{"class":462,"line":560},[460,14283,5540],{"class":900},[460,14285,1961],{"class":466},[460,14287,5545],{"class":900},[460,14289,1966],{"class":466},[460,14291,14292,14294,14296,14298,14300],{"class":462,"line":566},[460,14293,13879],{"class":900},[460,14295,1961],{"class":466},[460,14297,7290],{"class":900},[460,14299,2017],{"class":887},[460,14301,1966],{"class":466},[460,14303,14304],{"class":462,"line":572},[460,14305,509],{"class":466},[460,14307,14308,14310,14312],{"class":462,"line":578},[460,14309,581],{"class":466},[460,14311,1944],{"class":470},[460,14313,473],{"class":466},[460,14315,14316,14318,14320],{"class":462,"line":812},[460,14317,1776],{"class":466},[460,14319,1880],{"class":470},[460,14321,473],{"class":466},[460,14323,14324],{"class":462,"line":818},[460,14325,522],{"emptyLinePlaceholder":521},[460,14327,14328,14330,14332],{"class":462,"line":824},[460,14329,781],{"class":466},[460,14331,1721],{"class":470},[460,14333,473],{"class":466},[460,14335,14336,14338,14340,14342,14344,14346,14348,14350],{"class":462,"line":2074},[460,14337,467],{"class":466},[460,14339,2737],{"class":470},[460,14341,2740],{"class":929},[460,14343,894],{"class":466},[460,14345,13932],{"class":1353},[460,14347,5599],{"class":466},[460,14349,2737],{"class":470},[460,14351,473],{"class":466},[460,14353,14354,14356,14358,14360,14362,14364,14366,14368],{"class":462,"line":2088},[460,14355,467],{"class":466},[460,14357,225],{"class":470},[460,14359,12081],{"class":929},[460,14361,894],{"class":466},[460,14363,12086],{"class":1353},[460,14365,5599],{"class":466},[460,14367,225],{"class":470},[460,14369,473],{"class":466},[460,14371,14372,14374,14376],{"class":462,"line":2103},[460,14373,467],{"class":466},[460,14375,225],{"class":470},[460,14377,473],{"class":466},[460,14379,14380,14382,14384,14386,14388,14390,14392,14394],{"class":462,"line":2122},[460,14381,1340],{"class":887},[460,14383,10723],{"class":900},[460,14385,2943],{"class":887},[460,14387,10599],{"class":466},[460,14389,3541],{"class":929},[460,14391,2174],{"class":466},[460,14393,13981],{"class":1353},[460,14395,3754],{"class":466},[460,14397,14398,14400,14402,14404],{"class":462,"line":2144},[460,14399,13988],{"class":887},[460,14401,13991],{"class":466},[460,14403,894],{"class":887},[460,14405,13996],{"class":900},[460,14407,14408,14410,14412],{"class":462,"line":2158},[460,14409,3372],{"class":887},[460,14411,14003],{"class":929},[460,14413,11374],{"class":466},[460,14415,14416,14418,14420,14422],{"class":462,"line":2163},[460,14417,14010],{"class":466},[460,14419,894],{"class":887},[460,14421,10169],{"class":466},[460,14423,14017],{"class":887},[460,14425,14426],{"class":462,"line":2168},[460,14427,14022],{"class":942},[460,14429,14430],{"class":462,"line":2183},[460,14431,509],{"class":466},[460,14433,14434],{"class":462,"line":2194},[460,14435,14031],{"class":942},[460,14437,14438],{"class":462,"line":2199},[460,14439,14440],{"class":942},"    \u002F\u002F 手写防抖函数\n",[460,14442,14443],{"class":462,"line":2204},[460,14444,14445],{"class":942},"    \u002F\u002F 核心是利用延时器setTimeout来实现的\n",[460,14447,14448],{"class":462,"line":2212},[460,14449,14450],{"class":942},"    \u002F\u002F 1.声明定时器变量\n",[460,14452,14453],{"class":462,"line":2257},[460,14454,14455],{"class":942},"    \u002F\u002F 2.每次鼠标移动(事件触发)的时候都要先判断是否有定时器,如果有先清除以前的定时器\n",[460,14457,14458],{"class":462,"line":2285},[460,14459,14460],{"class":942},"    \u002F\u002F 3.如果没有定时器,则开启定时器,存入到定时器变量里面\n",[460,14462,14463],{"class":462,"line":2298},[460,14464,14465],{"class":942},"    \u002F\u002F 4.定时器里面写函数调用\n",[460,14467,14468,14470,14473,14475,14478,14480,14483],{"class":462,"line":2303},[460,14469,3372],{"class":887},[460,14471,14472],{"class":929}," debounce",[460,14474,2174],{"class":466},[460,14476,14477],{"class":3380},"fn",[460,14479,904],{"class":466},[460,14481,14482],{"class":3380},"t",[460,14484,2180],{"class":466},[460,14486,14487,14489],{"class":462,"line":2308},[460,14488,3395],{"class":887},[460,14490,14491],{"class":466}," timer\n",[460,14493,14494],{"class":462,"line":2318},[460,14495,14496],{"class":942},"      \u002F\u002F return 返回一个匿名函数\n",[460,14498,14499,14501,14503],{"class":462,"line":2333},[460,14500,8353],{"class":887},[460,14502,10709],{"class":887},[460,14504,9376],{"class":466},[460,14506,14507],{"class":462,"line":2338},[460,14508,14509],{"class":942},"        \u002F\u002F 这里边写第二三四步\n",[460,14511,14512,14514,14517,14520],{"class":462,"line":2343},[460,14513,3702],{"class":887},[460,14515,14516],{"class":466}," (timer) ",[460,14518,14519],{"class":929},"clearTimeout",[460,14521,14522],{"class":466},"(timer)\n",[460,14524,14525,14528,14530,14533,14535,14537],{"class":462,"line":2353},[460,14526,14527],{"class":466},"        timer ",[460,14529,894],{"class":887},[460,14531,14532],{"class":929}," setTimeout",[460,14534,2174],{"class":466},[460,14536,3976],{"class":887},[460,14538,9376],{"class":466},[460,14540,14541,14544,14547],{"class":462,"line":2368},[460,14542,14543],{"class":929},"          fn",[460,14545,14546],{"class":466},"() ",[460,14548,14549],{"class":942},"\u002F\u002F加小括号调用fn }, t)\n",[460,14551,14552],{"class":462,"line":2381},[460,14553,14554],{"class":466},"        }, t)\n",[460,14556,14557],{"class":462,"line":2394},[460,14558,552],{"class":466},[460,14560,14561],{"class":462,"line":2399},[460,14562,509],{"class":466},[460,14564,14565,14567,14569,14571,14573,14575,14577,14579,14581],{"class":462,"line":2404},[460,14566,14046],{"class":466},[460,14568,3599],{"class":929},[460,14570,2174],{"class":466},[460,14572,14053],{"class":1353},[460,14574,904],{"class":466},[460,14576,14059],{"class":929},[460,14578,14062],{"class":466},[460,14580,14065],{"class":900},[460,14582,6311],{"class":466},[460,14584,14585],{"class":462,"line":2414},[460,14586,522],{"emptyLinePlaceholder":521},[460,14588,14589],{"class":462,"line":2428},[460,14590,14591],{"class":942},"    \u002F\u002F debounce(mouseMove, 500)是在调用函数,一调用就会拿到return后边的内容\n",[460,14593,14594],{"class":462,"line":2440},[460,14595,14596],{"class":942},"    \u002F\u002F 相当于debounce(mouseMove, 500) = function () {\u002F\u002F 这里边写第二三四步}\n",[460,14598,14599],{"class":462,"line":2445},[460,14600,14601],{"class":942},"    \u002F\u002F 我们移动鼠标时想要实现的是这个匿名函数\n",[460,14603,14604],{"class":462,"line":2450},[460,14605,14606],{"class":942},"    \u002F\u002F 要的其实是这个函数名,事件中的执行函数不能写括号,写括号就是函数调用\n",[460,14608,14609,14611,14613],{"class":462,"line":2460},[460,14610,581],{"class":466},[460,14612,225],{"class":470},[460,14614,473],{"class":466},[460,14616,14617,14619,14621],{"class":462,"line":2473},[460,14618,1776],{"class":466},[460,14620,1721],{"class":470},[460,14622,473],{"class":466},[460,14624,14625],{"class":462,"line":2487},[460,14626,522],{"emptyLinePlaceholder":521},[460,14628,14629,14631,14633],{"class":462,"line":2492},[460,14630,1776],{"class":466},[460,14632,704],{"class":470},[460,14634,473],{"class":466},[23,14636,14638],{"id":14637},"_4172-节流","4.17.2 节流",[14,14640,14641],{},[30,14642],{"alt":32,"src":14643},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-354.png",[14,14645,14646],{},[30,14647],{"alt":32,"src":14648},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-355.png",[14,14650,14651],{},[3944,14652,14653],{},"案例：利用节流来处理-鼠标滑过盒子显示文字（要求：鼠标在盒子上移动，不管移动多少次，每隔500ms才+1）",[14,14655,14656],{},"实现方式：",[40,14658,14659],{},[43,14660,14661],{},"lodash 提供的节流函数来处理",[14,14663,14664],{},"_.throttle(func,[wait=0],[options=])",[14,14666,14667],{},"创建一个节流函数，在wait秒内最多执行func一次的函数",[451,14669,14671],{"className":702,"code":14670,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    .box {\n      box-sizing: border-box;\n      width: 200px;\n      height: 200px;\n      background-color: gray;\n      font-size: 25px;\n      color: #fff;\n      text-align: center;\n      padding-top: 5px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"box\">\u003C\u002Fdiv>\n  \u003Cscript src=\"lodash.min.js\">\u003C\u002Fscript>\n  \u003Cscript>\n    const box = document.querySelector('.box')\n    let i = 0\n    function mouseMove() {\n      box.innerHTML = i++\n      \u002F\u002F 如果里面存在大量消耗性能的代码，比如dom操作，比如数据处理，可能会造成卡顿\n    }\n    \u002F\u002F box.addEventListener('mousemove', mouseMove)\n    \u002F\u002F 利用lodash库实现节流 -500毫秒之后才去加1\n    \u002F\u002F 语法:_.throttle(fun,时间)\n    box.addEventListener('mousemove', _.throttle(mouseMove, 500))\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,14672,14673,14683,14697,14701,14709,14723,14743,14755,14763,14769,14779,14791,14803,14813,14825,14835,14845,14857,14861,14869,14877,14881,14889,14907,14925,14933,14951,14961,14969,14979,14983,14987,14991,14996,15001,15022,15030,15038,15042],{"__ignoreMap":32},[460,14674,14675,14677,14679,14681],{"class":462,"line":463},[460,14676,1845],{"class":466},[460,14678,1848],{"class":470},[460,14680,1851],{"class":929},[460,14682,473],{"class":466},[460,14684,14685,14687,14689,14691,14693,14695],{"class":462,"line":476},[460,14686,781],{"class":466},[460,14688,704],{"class":470},[460,14690,1862],{"class":929},[460,14692,894],{"class":466},[460,14694,1867],{"class":1353},[460,14696,473],{"class":466},[460,14698,14699],{"class":462,"line":482},[460,14700,522],{"emptyLinePlaceholder":521},[460,14702,14703,14705,14707],{"class":462,"line":488},[460,14704,781],{"class":466},[460,14706,1880],{"class":470},[460,14708,473],{"class":466},[460,14710,14711,14713,14715,14717,14719,14721],{"class":462,"line":494},[460,14712,467],{"class":466},[460,14714,1889],{"class":470},[460,14716,1892],{"class":929},[460,14718,894],{"class":466},[460,14720,1897],{"class":1353},[460,14722,473],{"class":466},[460,14724,14725,14727,14729,14731,14733,14735,14737,14739,14741],{"class":462,"line":500},[460,14726,467],{"class":466},[460,14728,1889],{"class":470},[460,14730,1908],{"class":929},[460,14732,894],{"class":466},[460,14734,1913],{"class":1353},[460,14736,1916],{"class":929},[460,14738,894],{"class":466},[460,14740,1921],{"class":1353},[460,14742,473],{"class":466},[460,14744,14745,14747,14749,14751,14753],{"class":462,"line":506},[460,14746,467],{"class":466},[460,14748,1930],{"class":470},[460,14750,1933],{"class":466},[460,14752,1930],{"class":470},[460,14754,473],{"class":466},[460,14756,14757,14759,14761],{"class":462,"line":512},[460,14758,467],{"class":466},[460,14760,1944],{"class":470},[460,14762,473],{"class":466},[460,14764,14765,14767],{"class":462,"line":518},[460,14766,13794],{"class":929},[460,14768,1348],{"class":466},[460,14770,14771,14773,14775,14777],{"class":462,"line":525},[460,14772,1982],{"class":900},[460,14774,1961],{"class":466},[460,14776,1987],{"class":900},[460,14778,1966],{"class":466},[460,14780,14781,14783,14785,14787,14789],{"class":462,"line":531},[460,14782,2009],{"class":900},[460,14784,1961],{"class":466},[460,14786,5490],{"class":900},[460,14788,2017],{"class":887},[460,14790,1966],{"class":466},[460,14792,14793,14795,14797,14799,14801],{"class":462,"line":537},[460,14794,5499],{"class":900},[460,14796,1961],{"class":466},[460,14798,5490],{"class":900},[460,14800,2017],{"class":887},[460,14802,1966],{"class":466},[460,14804,14805,14807,14809,14811],{"class":462,"line":543},[460,14806,2673],{"class":900},[460,14808,1961],{"class":466},[460,14810,13839],{"class":900},[460,14812,1966],{"class":466},[460,14814,14815,14817,14819,14821,14823],{"class":462,"line":549},[460,14816,2356],{"class":900},[460,14818,1961],{"class":466},[460,14820,13850],{"class":900},[460,14822,2017],{"class":887},[460,14824,1966],{"class":466},[460,14826,14827,14829,14831,14833],{"class":462,"line":555},[460,14828,2384],{"class":900},[460,14830,1961],{"class":466},[460,14832,2690],{"class":900},[460,14834,1966],{"class":466},[460,14836,14837,14839,14841,14843],{"class":462,"line":560},[460,14838,5540],{"class":900},[460,14840,1961],{"class":466},[460,14842,5545],{"class":900},[460,14844,1966],{"class":466},[460,14846,14847,14849,14851,14853,14855],{"class":462,"line":566},[460,14848,13879],{"class":900},[460,14850,1961],{"class":466},[460,14852,7290],{"class":900},[460,14854,2017],{"class":887},[460,14856,1966],{"class":466},[460,14858,14859],{"class":462,"line":572},[460,14860,509],{"class":466},[460,14862,14863,14865,14867],{"class":462,"line":578},[460,14864,581],{"class":466},[460,14866,1944],{"class":470},[460,14868,473],{"class":466},[460,14870,14871,14873,14875],{"class":462,"line":812},[460,14872,1776],{"class":466},[460,14874,1880],{"class":470},[460,14876,473],{"class":466},[460,14878,14879],{"class":462,"line":818},[460,14880,522],{"emptyLinePlaceholder":521},[460,14882,14883,14885,14887],{"class":462,"line":824},[460,14884,781],{"class":466},[460,14886,1721],{"class":470},[460,14888,473],{"class":466},[460,14890,14891,14893,14895,14897,14899,14901,14903,14905],{"class":462,"line":2074},[460,14892,467],{"class":466},[460,14894,2737],{"class":470},[460,14896,2740],{"class":929},[460,14898,894],{"class":466},[460,14900,13932],{"class":1353},[460,14902,5599],{"class":466},[460,14904,2737],{"class":470},[460,14906,473],{"class":466},[460,14908,14909,14911,14913,14915,14917,14919,14921,14923],{"class":462,"line":2088},[460,14910,467],{"class":466},[460,14912,225],{"class":470},[460,14914,12081],{"class":929},[460,14916,894],{"class":466},[460,14918,12086],{"class":1353},[460,14920,5599],{"class":466},[460,14922,225],{"class":470},[460,14924,473],{"class":466},[460,14926,14927,14929,14931],{"class":462,"line":2103},[460,14928,467],{"class":466},[460,14930,225],{"class":470},[460,14932,473],{"class":466},[460,14934,14935,14937,14939,14941,14943,14945,14947,14949],{"class":462,"line":2122},[460,14936,1340],{"class":887},[460,14938,10723],{"class":900},[460,14940,2943],{"class":887},[460,14942,10599],{"class":466},[460,14944,3541],{"class":929},[460,14946,2174],{"class":466},[460,14948,13981],{"class":1353},[460,14950,3754],{"class":466},[460,14952,14953,14955,14957,14959],{"class":462,"line":2144},[460,14954,13988],{"class":887},[460,14956,13991],{"class":466},[460,14958,894],{"class":887},[460,14960,13996],{"class":900},[460,14962,14963,14965,14967],{"class":462,"line":2158},[460,14964,3372],{"class":887},[460,14966,14003],{"class":929},[460,14968,11374],{"class":466},[460,14970,14971,14973,14975,14977],{"class":462,"line":2163},[460,14972,14010],{"class":466},[460,14974,894],{"class":887},[460,14976,10169],{"class":466},[460,14978,14017],{"class":887},[460,14980,14981],{"class":462,"line":2168},[460,14982,14022],{"class":942},[460,14984,14985],{"class":462,"line":2183},[460,14986,509],{"class":466},[460,14988,14989],{"class":462,"line":2194},[460,14990,14031],{"class":942},[460,14992,14993],{"class":462,"line":2199},[460,14994,14995],{"class":942},"    \u002F\u002F 利用lodash库实现节流 -500毫秒之后才去加1\n",[460,14997,14998],{"class":462,"line":2204},[460,14999,15000],{"class":942},"    \u002F\u002F 语法:_.throttle(fun,时间)\n",[460,15002,15003,15005,15007,15009,15011,15013,15016,15018,15020],{"class":462,"line":2212},[460,15004,14046],{"class":466},[460,15006,3599],{"class":929},[460,15008,2174],{"class":466},[460,15010,14053],{"class":1353},[460,15012,14056],{"class":466},[460,15014,15015],{"class":929},"throttle",[460,15017,14062],{"class":466},[460,15019,14065],{"class":900},[460,15021,6311],{"class":466},[460,15023,15024,15026,15028],{"class":462,"line":2257},[460,15025,581],{"class":466},[460,15027,225],{"class":470},[460,15029,473],{"class":466},[460,15031,15032,15034,15036],{"class":462,"line":2285},[460,15033,1776],{"class":466},[460,15035,1721],{"class":470},[460,15037,473],{"class":466},[460,15039,15040],{"class":462,"line":2298},[460,15041,522],{"emptyLinePlaceholder":521},[460,15043,15044,15046,15048],{"class":462,"line":2303},[460,15045,1776],{"class":466},[460,15047,704],{"class":470},[460,15049,473],{"class":466},[40,15051,15052],{},[43,15053,15054],{},"手写一个节流函数来处理",[14,15056,15057],{},"思路：",[14,15059,14106],{},[14,15061,15062],{},"②当鼠标每次滑动都先判断是否有定时器了，如果有定时器则不开启新定时器",[14,15064,15065],{},"③如果没有定时器则开启定时器，记得存放到变量里面:定时器里面调用执行的函数；定时器里面要把定时器清空",[451,15067,15069],{"className":702,"code":15068,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    .box {\n      box-sizing: border-box;\n      width: 200px;\n      height: 200px;\n      background-color: gray;\n      font-size: 25px;\n      color: #fff;\n      text-align: center;\n      padding-top: 5px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"box\">\u003C\u002Fdiv>\n  \u003Cscript src=\"lodash.min.js\">\u003C\u002Fscript>\n  \u003Cscript>\n    const box = document.querySelector('.box')\n    let i = 0\n    function mouseMove() {\n      box.innerHTML = i++\n      \u002F\u002F 如果里面存在大量消耗性能的代码，比如dom操作，比如数据处理，可能会造成卡顿\n    }\n    \u002F\u002F box.addEventListener('mousemove', mouseMove)\n    \u002F\u002F 手写节流函数  每隔500ms+1\n    \u002F\u002F 1.声明一个定时器变量\n    \u002F\u002F 2.当鼠标每次滑动都先判断是否有定时器,如果有定时器则不开启新定时器\n    \u002F\u002F 3.如果没有定时器则开启定时器,记得存到变量里面\n    \u002F\u002F 3.1定时器里面调用执行函数\n    \u002F\u002F 3.2定时器里面要把定时器清空\n    function throttle(fn, t) {\n      let timer\n      return function () {\n        if (!timer) {\n          timer = setTimeout(function () {\n            fn()\n            \u002F\u002F 清空定时器,当时间到了,定时器就停止了,但原来那个timer还有,\n            \u002F\u002F 所以需要清除定时器,这样timer就是空的了,然后就又重复执行了\n            timer = null\n            \u002F\u002F 不能用clearTimeout(timer)\n            \u002F\u002F 在开启的定时器里边是无法清除定时器的\n          }, t)\n        }\n      }\n    }\n    box.addEventListener('mousemove', throttle(mouseMove, 500))\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,15070,15071,15081,15095,15099,15107,15121,15141,15153,15161,15167,15177,15189,15201,15211,15223,15233,15243,15255,15259,15267,15275,15279,15287,15305,15323,15331,15349,15359,15367,15377,15381,15385,15389,15394,15399,15404,15409,15414,15419,15436,15442,15450,15462,15477,15484,15489,15494,15504,15509,15514,15519,15523,15527,15531,15551,15559,15567,15571],{"__ignoreMap":32},[460,15072,15073,15075,15077,15079],{"class":462,"line":463},[460,15074,1845],{"class":466},[460,15076,1848],{"class":470},[460,15078,1851],{"class":929},[460,15080,473],{"class":466},[460,15082,15083,15085,15087,15089,15091,15093],{"class":462,"line":476},[460,15084,781],{"class":466},[460,15086,704],{"class":470},[460,15088,1862],{"class":929},[460,15090,894],{"class":466},[460,15092,1867],{"class":1353},[460,15094,473],{"class":466},[460,15096,15097],{"class":462,"line":482},[460,15098,522],{"emptyLinePlaceholder":521},[460,15100,15101,15103,15105],{"class":462,"line":488},[460,15102,781],{"class":466},[460,15104,1880],{"class":470},[460,15106,473],{"class":466},[460,15108,15109,15111,15113,15115,15117,15119],{"class":462,"line":494},[460,15110,467],{"class":466},[460,15112,1889],{"class":470},[460,15114,1892],{"class":929},[460,15116,894],{"class":466},[460,15118,1897],{"class":1353},[460,15120,473],{"class":466},[460,15122,15123,15125,15127,15129,15131,15133,15135,15137,15139],{"class":462,"line":500},[460,15124,467],{"class":466},[460,15126,1889],{"class":470},[460,15128,1908],{"class":929},[460,15130,894],{"class":466},[460,15132,1913],{"class":1353},[460,15134,1916],{"class":929},[460,15136,894],{"class":466},[460,15138,1921],{"class":1353},[460,15140,473],{"class":466},[460,15142,15143,15145,15147,15149,15151],{"class":462,"line":506},[460,15144,467],{"class":466},[460,15146,1930],{"class":470},[460,15148,1933],{"class":466},[460,15150,1930],{"class":470},[460,15152,473],{"class":466},[460,15154,15155,15157,15159],{"class":462,"line":512},[460,15156,467],{"class":466},[460,15158,1944],{"class":470},[460,15160,473],{"class":466},[460,15162,15163,15165],{"class":462,"line":518},[460,15164,13794],{"class":929},[460,15166,1348],{"class":466},[460,15168,15169,15171,15173,15175],{"class":462,"line":525},[460,15170,1982],{"class":900},[460,15172,1961],{"class":466},[460,15174,1987],{"class":900},[460,15176,1966],{"class":466},[460,15178,15179,15181,15183,15185,15187],{"class":462,"line":531},[460,15180,2009],{"class":900},[460,15182,1961],{"class":466},[460,15184,5490],{"class":900},[460,15186,2017],{"class":887},[460,15188,1966],{"class":466},[460,15190,15191,15193,15195,15197,15199],{"class":462,"line":537},[460,15192,5499],{"class":900},[460,15194,1961],{"class":466},[460,15196,5490],{"class":900},[460,15198,2017],{"class":887},[460,15200,1966],{"class":466},[460,15202,15203,15205,15207,15209],{"class":462,"line":543},[460,15204,2673],{"class":900},[460,15206,1961],{"class":466},[460,15208,13839],{"class":900},[460,15210,1966],{"class":466},[460,15212,15213,15215,15217,15219,15221],{"class":462,"line":549},[460,15214,2356],{"class":900},[460,15216,1961],{"class":466},[460,15218,13850],{"class":900},[460,15220,2017],{"class":887},[460,15222,1966],{"class":466},[460,15224,15225,15227,15229,15231],{"class":462,"line":555},[460,15226,2384],{"class":900},[460,15228,1961],{"class":466},[460,15230,2690],{"class":900},[460,15232,1966],{"class":466},[460,15234,15235,15237,15239,15241],{"class":462,"line":560},[460,15236,5540],{"class":900},[460,15238,1961],{"class":466},[460,15240,5545],{"class":900},[460,15242,1966],{"class":466},[460,15244,15245,15247,15249,15251,15253],{"class":462,"line":566},[460,15246,13879],{"class":900},[460,15248,1961],{"class":466},[460,15250,7290],{"class":900},[460,15252,2017],{"class":887},[460,15254,1966],{"class":466},[460,15256,15257],{"class":462,"line":572},[460,15258,509],{"class":466},[460,15260,15261,15263,15265],{"class":462,"line":578},[460,15262,581],{"class":466},[460,15264,1944],{"class":470},[460,15266,473],{"class":466},[460,15268,15269,15271,15273],{"class":462,"line":812},[460,15270,1776],{"class":466},[460,15272,1880],{"class":470},[460,15274,473],{"class":466},[460,15276,15277],{"class":462,"line":818},[460,15278,522],{"emptyLinePlaceholder":521},[460,15280,15281,15283,15285],{"class":462,"line":824},[460,15282,781],{"class":466},[460,15284,1721],{"class":470},[460,15286,473],{"class":466},[460,15288,15289,15291,15293,15295,15297,15299,15301,15303],{"class":462,"line":2074},[460,15290,467],{"class":466},[460,15292,2737],{"class":470},[460,15294,2740],{"class":929},[460,15296,894],{"class":466},[460,15298,13932],{"class":1353},[460,15300,5599],{"class":466},[460,15302,2737],{"class":470},[460,15304,473],{"class":466},[460,15306,15307,15309,15311,15313,15315,15317,15319,15321],{"class":462,"line":2088},[460,15308,467],{"class":466},[460,15310,225],{"class":470},[460,15312,12081],{"class":929},[460,15314,894],{"class":466},[460,15316,12086],{"class":1353},[460,15318,5599],{"class":466},[460,15320,225],{"class":470},[460,15322,473],{"class":466},[460,15324,15325,15327,15329],{"class":462,"line":2103},[460,15326,467],{"class":466},[460,15328,225],{"class":470},[460,15330,473],{"class":466},[460,15332,15333,15335,15337,15339,15341,15343,15345,15347],{"class":462,"line":2122},[460,15334,1340],{"class":887},[460,15336,10723],{"class":900},[460,15338,2943],{"class":887},[460,15340,10599],{"class":466},[460,15342,3541],{"class":929},[460,15344,2174],{"class":466},[460,15346,13981],{"class":1353},[460,15348,3754],{"class":466},[460,15350,15351,15353,15355,15357],{"class":462,"line":2144},[460,15352,13988],{"class":887},[460,15354,13991],{"class":466},[460,15356,894],{"class":887},[460,15358,13996],{"class":900},[460,15360,15361,15363,15365],{"class":462,"line":2158},[460,15362,3372],{"class":887},[460,15364,14003],{"class":929},[460,15366,11374],{"class":466},[460,15368,15369,15371,15373,15375],{"class":462,"line":2163},[460,15370,14010],{"class":466},[460,15372,894],{"class":887},[460,15374,10169],{"class":466},[460,15376,14017],{"class":887},[460,15378,15379],{"class":462,"line":2168},[460,15380,14022],{"class":942},[460,15382,15383],{"class":462,"line":2183},[460,15384,509],{"class":466},[460,15386,15387],{"class":462,"line":2194},[460,15388,14031],{"class":942},[460,15390,15391],{"class":462,"line":2199},[460,15392,15393],{"class":942},"    \u002F\u002F 手写节流函数  每隔500ms+1\n",[460,15395,15396],{"class":462,"line":2204},[460,15397,15398],{"class":942},"    \u002F\u002F 1.声明一个定时器变量\n",[460,15400,15401],{"class":462,"line":2212},[460,15402,15403],{"class":942},"    \u002F\u002F 2.当鼠标每次滑动都先判断是否有定时器,如果有定时器则不开启新定时器\n",[460,15405,15406],{"class":462,"line":2257},[460,15407,15408],{"class":942},"    \u002F\u002F 3.如果没有定时器则开启定时器,记得存到变量里面\n",[460,15410,15411],{"class":462,"line":2285},[460,15412,15413],{"class":942},"    \u002F\u002F 3.1定时器里面调用执行函数\n",[460,15415,15416],{"class":462,"line":2298},[460,15417,15418],{"class":942},"    \u002F\u002F 3.2定时器里面要把定时器清空\n",[460,15420,15421,15423,15426,15428,15430,15432,15434],{"class":462,"line":2303},[460,15422,3372],{"class":887},[460,15424,15425],{"class":929}," throttle",[460,15427,2174],{"class":466},[460,15429,14477],{"class":3380},[460,15431,904],{"class":466},[460,15433,14482],{"class":3380},[460,15435,2180],{"class":466},[460,15437,15438,15440],{"class":462,"line":2308},[460,15439,3395],{"class":887},[460,15441,14491],{"class":466},[460,15443,15444,15446,15448],{"class":462,"line":2318},[460,15445,8353],{"class":887},[460,15447,10709],{"class":887},[460,15449,9376],{"class":466},[460,15451,15452,15454,15456,15459],{"class":462,"line":2333},[460,15453,3702],{"class":887},[460,15455,11704],{"class":466},[460,15457,15458],{"class":887},"!",[460,15460,15461],{"class":466},"timer) {\n",[460,15463,15464,15467,15469,15471,15473,15475],{"class":462,"line":2338},[460,15465,15466],{"class":466},"          timer ",[460,15468,894],{"class":887},[460,15470,14532],{"class":929},[460,15472,2174],{"class":466},[460,15474,3976],{"class":887},[460,15476,9376],{"class":466},[460,15478,15479,15482],{"class":462,"line":2343},[460,15480,15481],{"class":929},"            fn",[460,15483,10758],{"class":466},[460,15485,15486],{"class":462,"line":2353},[460,15487,15488],{"class":942},"            \u002F\u002F 清空定时器,当时间到了,定时器就停止了,但原来那个timer还有,\n",[460,15490,15491],{"class":462,"line":2368},[460,15492,15493],{"class":942},"            \u002F\u002F 所以需要清除定时器,这样timer就是空的了,然后就又重复执行了\n",[460,15495,15496,15499,15501],{"class":462,"line":2381},[460,15497,15498],{"class":466},"            timer ",[460,15500,894],{"class":887},[460,15502,15503],{"class":900}," null\n",[460,15505,15506],{"class":462,"line":2394},[460,15507,15508],{"class":942},"            \u002F\u002F 不能用clearTimeout(timer)\n",[460,15510,15511],{"class":462,"line":2399},[460,15512,15513],{"class":942},"            \u002F\u002F 在开启的定时器里边是无法清除定时器的\n",[460,15515,15516],{"class":462,"line":2404},[460,15517,15518],{"class":466},"          }, t)\n",[460,15520,15521],{"class":462,"line":2414},[460,15522,3858],{"class":466},[460,15524,15525],{"class":462,"line":2428},[460,15526,552],{"class":466},[460,15528,15529],{"class":462,"line":2440},[460,15530,509],{"class":466},[460,15532,15533,15535,15537,15539,15541,15543,15545,15547,15549],{"class":462,"line":2445},[460,15534,14046],{"class":466},[460,15536,3599],{"class":929},[460,15538,2174],{"class":466},[460,15540,14053],{"class":1353},[460,15542,904],{"class":466},[460,15544,15015],{"class":929},[460,15546,14062],{"class":466},[460,15548,14065],{"class":900},[460,15550,6311],{"class":466},[460,15552,15553,15555,15557],{"class":462,"line":2450},[460,15554,581],{"class":466},[460,15556,225],{"class":470},[460,15558,473],{"class":466},[460,15560,15561,15563,15565],{"class":462,"line":2460},[460,15562,1776],{"class":466},[460,15564,1721],{"class":470},[460,15566,473],{"class":466},[460,15568,15569],{"class":462,"line":2473},[460,15570,522],{"emptyLinePlaceholder":521},[460,15572,15573,15575,15577],{"class":462,"line":2487},[460,15574,1776],{"class":466},[460,15576,704],{"class":470},[460,15578,473],{"class":466},[23,15580,15582],{"id":15581},"_4173-清除定时器遇到的问题","4.17.3 清除定时器遇到的问题",[451,15584,15586],{"className":453,"code":15585,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cscript>\n    let timer = null\n    timer = setTimeout(() => {\n      clearTimeout(timer)\n      console.log(timer)\n    }, 1000)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,15587,15588,15596,15604,15609,15614,15619,15624,15629,15637],{"__ignoreMap":32},[460,15589,15590,15592,15594],{"class":462,"line":463},[460,15591,781],{"class":466},[460,15593,1721],{"class":470},[460,15595,473],{"class":466},[460,15597,15598,15600,15602],{"class":462,"line":476},[460,15599,467],{"class":466},[460,15601,225],{"class":470},[460,15603,473],{"class":466},[460,15605,15606],{"class":462,"line":482},[460,15607,15608],{"class":466},"    let timer = null\n",[460,15610,15611],{"class":462,"line":488},[460,15612,15613],{"class":466},"    timer = setTimeout(() => {\n",[460,15615,15616],{"class":462,"line":494},[460,15617,15618],{"class":466},"      clearTimeout(timer)\n",[460,15620,15621],{"class":462,"line":500},[460,15622,15623],{"class":466},"      console.log(timer)\n",[460,15625,15626],{"class":462,"line":506},[460,15627,15628],{"class":466},"    }, 1000)\n",[460,15630,15631,15633,15635],{"class":462,"line":512},[460,15632,581],{"class":466},[460,15634,225],{"class":470},[460,15636,473],{"class":466},[460,15638,15639,15641,15643],{"class":462,"line":518},[460,15640,1776],{"class":466},[460,15642,1721],{"class":470},[460,15644,473],{"class":466},[14,15646,15647],{},"输出为1",[14,15649,15650],{},"在开启的定时器里边写清除定时器",[14,15652,15653],{},"总结：在setTimeout中是无法删除定时器的，因为定时器还在运作，所以使用timer=null 而不是clearTimeout(timer)",[23,15655,15657],{"id":15656},"_4174-节流综合案例","4.17.4 节流综合案例",[14,15659,15660],{},"页面打开，可以记录上一次的视频播放位置",[14,15662,15663],{},[30,15664],{"alt":32,"src":15665},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-356.png",[14,15667,15668],{},[30,15669],{"alt":32,"src":15670},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-357.png",[451,15672,15674],{"className":702,"code":15673,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\" \u002F>\n  \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \u002F>\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\n  \u003Cmeta name=\"referrer\" content=\"never\" \u002F>\n  \u003Ctitle>综合案例\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      padding: 0;\n      margin: 0;\n      box-sizing: border-box;\n    }\n\n    .container {\n      width: 1200px;\n      margin: 0 auto;\n    }\n\n    .video video {\n      width: 100%;\n      padding: 20px 0;\n    }\n\n    .elevator {\n      position: fixed;\n      top: 280px;\n      right: 20px;\n      z-index: 999;\n      background: #fff;\n      border: 1px solid #e4e4e4;\n      width: 60px;\n    }\n\n    .elevator a {\n      display: block;\n      padding: 10px;\n      text-decoration: none;\n      text-align: center;\n      color: #999;\n    }\n\n    .elevator a.active {\n      color: #1286ff;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"container\">\n    \u003Cdiv class=\"header\">\n      \u003Ca href=\"http:\u002F\u002Fpip.itcast.cn\">\n        \u003Cimg src=\"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS学习-367.png\" alt=\"\" \u002F>\n      \u003C\u002Fa>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"video\">\n      \u003Cvideo src=\"https:\u002F\u002Fv.itheima.net\u002FLapADhV6.mp4\" controls>\u003C\u002Fvideo>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"elevator\">\n      \u003Ca href=\"javascript:;\" data-ref=\"video\">视频介绍\u003C\u002Fa>\n      \u003Ca href=\"javascript:;\" data-ref=\"intro\">课程简介\u003C\u002Fa>\n      \u003Ca href=\"javascript:;\" data-ref=\"outline\">评论列表\u003C\u002Fa>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Flodash@4.17.21\u002Flodash.min.js\">\u003C\u002Fscript>\n  \u003Cscript>\n    \u002F\u002F 1.获取元素 要对视频进行操作\n    const video = document.querySelector('video')\n    \u002F\u002F 这个事件类似于点击事件的另外一个写法.onclick\n    video.ontimeupdate = _.throttle(() => {\n      \u002F\u002F 要进行本地存储,存当前播放的时间\n      \u002F\u002F 控制台输出当前的时间\n      \u002F\u002F console.log(video.currentTime)  \u002F\u002F获得当前的视频时间\n      \u002F\u002F 简单数据类型本地存储直接存储就可以,把当前的时间存储到本地存储\n      localStorage.setItem('currentTime', video.currentTime)\n    }, 1000)\n    \u002F\u002F 打开页面触发事件,就从本地存储里面取出事件,赋值给 video.currentTime\n    video.onloadeddata = () => {\n      \u002F\u002F console.log(11)\n      \u002F\u002F 第一次打开的话,若本地存储无数据的话,就从0开始,从视频的开头开始,使用逻辑中断\n      video.currentTime = localStorage.getItem('currentTime') || 0\n    }\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,15675,15676,15686,15700,15704,15712,15727,15750,15770,15792,15805,15813,15819,15829,15839,15849,15853,15857,15864,15877,15889,15893,15897,15907,15919,15933,15937,15941,15948,15958,15971,15983,15993,16003,16019,16032,16036,16040,16048,16058,16070,16080,16090,16100,16104,16108,16119,16130,16134,16142,16150,16154,16162,16177,16192,16208,16231,16240,16249,16264,16287,16295,16310,16337,16363,16389,16397,16405,16424,16432,16437,16456,16461,16479,16484,16489,16497,16502,16518,16527,16532,16549,16554,16559,16583,16587,16595,16603,16607],{"__ignoreMap":32},[460,15677,15678,15680,15682,15684],{"class":462,"line":463},[460,15679,1845],{"class":466},[460,15681,1848],{"class":470},[460,15683,1851],{"class":929},[460,15685,473],{"class":466},[460,15687,15688,15690,15692,15694,15696,15698],{"class":462,"line":476},[460,15689,781],{"class":466},[460,15691,704],{"class":470},[460,15693,1862],{"class":929},[460,15695,894],{"class":466},[460,15697,1867],{"class":1353},[460,15699,473],{"class":466},[460,15701,15702],{"class":462,"line":482},[460,15703,522],{"emptyLinePlaceholder":521},[460,15705,15706,15708,15710],{"class":462,"line":488},[460,15707,781],{"class":466},[460,15709,1880],{"class":470},[460,15711,473],{"class":466},[460,15713,15714,15716,15718,15720,15722,15724],{"class":462,"line":494},[460,15715,467],{"class":466},[460,15717,1889],{"class":470},[460,15719,1892],{"class":929},[460,15721,894],{"class":466},[460,15723,1897],{"class":1353},[460,15725,15726],{"class":466}," \u002F>\n",[460,15728,15729,15731,15733,15736,15738,15741,15743,15745,15748],{"class":462,"line":500},[460,15730,467],{"class":466},[460,15732,1889],{"class":470},[460,15734,15735],{"class":929}," http-equiv",[460,15737,894],{"class":466},[460,15739,15740],{"class":1353},"\"X-UA-Compatible\"",[460,15742,1916],{"class":929},[460,15744,894],{"class":466},[460,15746,15747],{"class":1353},"\"IE=edge\"",[460,15749,15726],{"class":466},[460,15751,15752,15754,15756,15758,15760,15762,15764,15766,15768],{"class":462,"line":506},[460,15753,467],{"class":466},[460,15755,1889],{"class":470},[460,15757,1908],{"class":929},[460,15759,894],{"class":466},[460,15761,1913],{"class":1353},[460,15763,1916],{"class":929},[460,15765,894],{"class":466},[460,15767,1921],{"class":1353},[460,15769,15726],{"class":466},[460,15771,15772,15774,15776,15778,15780,15783,15785,15787,15790],{"class":462,"line":512},[460,15773,467],{"class":466},[460,15775,1889],{"class":470},[460,15777,1908],{"class":929},[460,15779,894],{"class":466},[460,15781,15782],{"class":1353},"\"referrer\"",[460,15784,1916],{"class":929},[460,15786,894],{"class":466},[460,15788,15789],{"class":1353},"\"never\"",[460,15791,15726],{"class":466},[460,15793,15794,15796,15798,15801,15803],{"class":462,"line":518},[460,15795,467],{"class":466},[460,15797,1930],{"class":470},[460,15799,15800],{"class":466},">综合案例\u003C\u002F",[460,15802,1930],{"class":470},[460,15804,473],{"class":466},[460,15806,15807,15809,15811],{"class":462,"line":525},[460,15808,467],{"class":466},[460,15810,1944],{"class":470},[460,15812,473],{"class":466},[460,15814,15815,15817],{"class":462,"line":531},[460,15816,1951],{"class":470},[460,15818,1348],{"class":466},[460,15820,15821,15823,15825,15827],{"class":462,"line":537},[460,15822,1958],{"class":900},[460,15824,1961],{"class":466},[460,15826,936],{"class":900},[460,15828,1966],{"class":466},[460,15830,15831,15833,15835,15837],{"class":462,"line":543},[460,15832,1971],{"class":900},[460,15834,1961],{"class":466},[460,15836,936],{"class":900},[460,15838,1966],{"class":466},[460,15840,15841,15843,15845,15847],{"class":462,"line":549},[460,15842,1982],{"class":900},[460,15844,1961],{"class":466},[460,15846,1987],{"class":900},[460,15848,1966],{"class":466},[460,15850,15851],{"class":462,"line":555},[460,15852,509],{"class":466},[460,15854,15855],{"class":462,"line":560},[460,15856,522],{"emptyLinePlaceholder":521},[460,15858,15859,15862],{"class":462,"line":566},[460,15860,15861],{"class":929},"    .container",[460,15863,1348],{"class":466},[460,15865,15866,15868,15870,15873,15875],{"class":462,"line":572},[460,15867,2009],{"class":900},[460,15869,1961],{"class":466},[460,15871,15872],{"class":900},"1200",[460,15874,2017],{"class":887},[460,15876,1966],{"class":466},[460,15878,15879,15881,15883,15885,15887],{"class":462,"line":578},[460,15880,1971],{"class":900},[460,15882,1961],{"class":466},[460,15884,936],{"class":900},[460,15886,2030],{"class":900},[460,15888,1966],{"class":466},[460,15890,15891],{"class":462,"line":812},[460,15892,509],{"class":466},[460,15894,15895],{"class":462,"line":818},[460,15896,522],{"emptyLinePlaceholder":521},[460,15898,15899,15902,15905],{"class":462,"line":824},[460,15900,15901],{"class":929},"    .video",[460,15903,15904],{"class":470}," video",[460,15906,1348],{"class":466},[460,15908,15909,15911,15913,15915,15917],{"class":462,"line":2074},[460,15910,2009],{"class":900},[460,15912,1961],{"class":466},[460,15914,2325],{"class":900},[460,15916,2328],{"class":887},[460,15918,1966],{"class":466},[460,15920,15921,15923,15925,15927,15929,15931],{"class":462,"line":2088},[460,15922,1958],{"class":900},[460,15924,1961],{"class":466},[460,15926,2110],{"class":900},[460,15928,2017],{"class":887},[460,15930,2224],{"class":900},[460,15932,1966],{"class":466},[460,15934,15935],{"class":462,"line":2103},[460,15936,509],{"class":466},[460,15938,15939],{"class":462,"line":2122},[460,15940,522],{"emptyLinePlaceholder":521},[460,15942,15943,15946],{"class":462,"line":2144},[460,15944,15945],{"class":929},"    .elevator",[460,15947,1348],{"class":466},[460,15949,15950,15952,15954,15956],{"class":462,"line":2158},[460,15951,10004],{"class":900},[460,15953,1961],{"class":466},[460,15955,10009],{"class":900},[460,15957,1966],{"class":466},[460,15959,15960,15962,15964,15967,15969],{"class":462,"line":2163},[460,15961,10041],{"class":900},[460,15963,1961],{"class":466},[460,15965,15966],{"class":900},"280",[460,15968,2017],{"class":887},[460,15970,1966],{"class":466},[460,15972,15973,15975,15977,15979,15981],{"class":462,"line":2168},[460,15974,10209],{"class":900},[460,15976,1961],{"class":466},[460,15978,2110],{"class":900},[460,15980,2017],{"class":887},[460,15982,1966],{"class":466},[460,15984,15985,15987,15989,15991],{"class":462,"line":2183},[460,15986,10016],{"class":900},[460,15988,1961],{"class":466},[460,15990,10021],{"class":900},[460,15992,1966],{"class":466},[460,15994,15995,15997,15999,16001],{"class":462,"line":2194},[460,15996,2600],{"class":900},[460,15998,1961],{"class":466},[460,16000,2690],{"class":900},[460,16002,1966],{"class":466},[460,16004,16005,16007,16009,16011,16013,16015,16017],{"class":462,"line":2199},[460,16006,7192],{"class":900},[460,16008,1961],{"class":466},[460,16010,901],{"class":900},[460,16012,2017],{"class":887},[460,16014,7201],{"class":900},[460,16016,7204],{"class":900},[460,16018,1966],{"class":466},[460,16020,16021,16023,16025,16028,16030],{"class":462,"line":2204},[460,16022,2009],{"class":900},[460,16024,1961],{"class":466},[460,16026,16027],{"class":900},"60",[460,16029,2017],{"class":887},[460,16031,1966],{"class":466},[460,16033,16034],{"class":462,"line":2212},[460,16035,509],{"class":466},[460,16037,16038],{"class":462,"line":2257},[460,16039,522],{"emptyLinePlaceholder":521},[460,16041,16042,16044,16046],{"class":462,"line":2285},[460,16043,15945],{"class":929},[460,16045,2574],{"class":470},[460,16047,1348],{"class":466},[460,16049,16050,16052,16054,16056],{"class":462,"line":2298},[460,16051,2037],{"class":900},[460,16053,1961],{"class":466},[460,16055,7350],{"class":900},[460,16057,1966],{"class":466},[460,16059,16060,16062,16064,16066,16068],{"class":462,"line":2303},[460,16061,1958],{"class":900},[460,16063,1961],{"class":466},[460,16065,2096],{"class":900},[460,16067,2017],{"class":887},[460,16069,1966],{"class":466},[460,16071,16072,16074,16076,16078],{"class":462,"line":2308},[460,16073,2624],{"class":900},[460,16075,1961],{"class":466},[460,16077,2629],{"class":900},[460,16079,1966],{"class":466},[460,16081,16082,16084,16086,16088],{"class":462,"line":2318},[460,16083,5540],{"class":900},[460,16085,1961],{"class":466},[460,16087,5545],{"class":900},[460,16089,1966],{"class":466},[460,16091,16092,16094,16096,16098],{"class":462,"line":2333},[460,16093,2384],{"class":900},[460,16095,1961],{"class":466},[460,16097,7385],{"class":900},[460,16099,1966],{"class":466},[460,16101,16102],{"class":462,"line":2338},[460,16103,509],{"class":466},[460,16105,16106],{"class":462,"line":2343},[460,16107,522],{"emptyLinePlaceholder":521},[460,16109,16110,16112,16114,16117],{"class":462,"line":2353},[460,16111,15945],{"class":929},[460,16113,2574],{"class":470},[460,16115,16116],{"class":929},".active",[460,16118,1348],{"class":466},[460,16120,16121,16123,16125,16128],{"class":462,"line":2368},[460,16122,2384],{"class":900},[460,16124,1961],{"class":466},[460,16126,16127],{"class":900},"#1286ff",[460,16129,1966],{"class":466},[460,16131,16132],{"class":462,"line":2381},[460,16133,509],{"class":466},[460,16135,16136,16138,16140],{"class":462,"line":2394},[460,16137,581],{"class":466},[460,16139,1944],{"class":470},[460,16141,473],{"class":466},[460,16143,16144,16146,16148],{"class":462,"line":2399},[460,16145,1776],{"class":466},[460,16147,1880],{"class":470},[460,16149,473],{"class":466},[460,16151,16152],{"class":462,"line":2404},[460,16153,522],{"emptyLinePlaceholder":521},[460,16155,16156,16158,16160],{"class":462,"line":2414},[460,16157,781],{"class":466},[460,16159,1721],{"class":470},[460,16161,473],{"class":466},[460,16163,16164,16166,16168,16170,16172,16175],{"class":462,"line":2428},[460,16165,467],{"class":466},[460,16167,2737],{"class":470},[460,16169,2740],{"class":929},[460,16171,894],{"class":466},[460,16173,16174],{"class":1353},"\"container\"",[460,16176,473],{"class":466},[460,16178,16179,16181,16183,16185,16187,16190],{"class":462,"line":2440},[460,16180,2753],{"class":466},[460,16182,2737],{"class":470},[460,16184,2740],{"class":929},[460,16186,894],{"class":466},[460,16188,16189],{"class":1353},"\"header\"",[460,16191,473],{"class":466},[460,16193,16194,16197,16199,16201,16203,16206],{"class":462,"line":2445},[460,16195,16196],{"class":466},"      \u003C",[460,16198,2756],{"class":470},[460,16200,2759],{"class":929},[460,16202,894],{"class":466},[460,16204,16205],{"class":1353},"\"http:\u002F\u002Fpip.itcast.cn\"",[460,16207,473],{"class":466},[460,16209,16210,16213,16215,16217,16219,16222,16225,16227,16229],{"class":462,"line":2450},[460,16211,16212],{"class":466},"        \u003C",[460,16214,30],{"class":470},[460,16216,12081],{"class":929},[460,16218,894],{"class":466},[460,16220,16221],{"class":1353},"\"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS学习-367.png\"",[460,16223,16224],{"class":929}," alt",[460,16226,894],{"class":466},[460,16228,6606],{"class":1353},[460,16230,15726],{"class":466},[460,16232,16233,16236,16238],{"class":462,"line":2460},[460,16234,16235],{"class":466},"      \u003C\u002F",[460,16237,2756],{"class":470},[460,16239,473],{"class":466},[460,16241,16242,16245,16247],{"class":462,"line":2473},[460,16243,16244],{"class":466},"    \u003C\u002F",[460,16246,2737],{"class":470},[460,16248,473],{"class":466},[460,16250,16251,16253,16255,16257,16259,16262],{"class":462,"line":2487},[460,16252,2753],{"class":466},[460,16254,2737],{"class":470},[460,16256,2740],{"class":929},[460,16258,894],{"class":466},[460,16260,16261],{"class":1353},"\"video\"",[460,16263,473],{"class":466},[460,16265,16266,16268,16271,16273,16275,16278,16281,16283,16285],{"class":462,"line":2492},[460,16267,16196],{"class":466},[460,16269,16270],{"class":470},"video",[460,16272,12081],{"class":929},[460,16274,894],{"class":466},[460,16276,16277],{"class":1353},"\"https:\u002F\u002Fv.itheima.net\u002FLapADhV6.mp4\"",[460,16279,16280],{"class":929}," controls",[460,16282,5599],{"class":466},[460,16284,16270],{"class":470},[460,16286,473],{"class":466},[460,16288,16289,16291,16293],{"class":462,"line":2497},[460,16290,16244],{"class":466},[460,16292,2737],{"class":470},[460,16294,473],{"class":466},[460,16296,16297,16299,16301,16303,16305,16308],{"class":462,"line":2505},[460,16298,2753],{"class":466},[460,16300,2737],{"class":470},[460,16302,2740],{"class":929},[460,16304,894],{"class":466},[460,16306,16307],{"class":1353},"\"elevator\"",[460,16309,473],{"class":466},[460,16311,16312,16314,16316,16318,16320,16323,16326,16328,16330,16333,16335],{"class":462,"line":2516},[460,16313,16196],{"class":466},[460,16315,2756],{"class":470},[460,16317,2759],{"class":929},[460,16319,894],{"class":466},[460,16321,16322],{"class":1353},"\"javascript:;\"",[460,16324,16325],{"class":929}," data-ref",[460,16327,894],{"class":466},[460,16329,16261],{"class":1353},[460,16331,16332],{"class":466},">视频介绍\u003C\u002F",[460,16334,2756],{"class":470},[460,16336,473],{"class":466},[460,16338,16339,16341,16343,16345,16347,16349,16351,16353,16356,16359,16361],{"class":462,"line":2529},[460,16340,16196],{"class":466},[460,16342,2756],{"class":470},[460,16344,2759],{"class":929},[460,16346,894],{"class":466},[460,16348,16322],{"class":1353},[460,16350,16325],{"class":929},[460,16352,894],{"class":466},[460,16354,16355],{"class":1353},"\"intro\"",[460,16357,16358],{"class":466},">课程简介\u003C\u002F",[460,16360,2756],{"class":470},[460,16362,473],{"class":466},[460,16364,16365,16367,16369,16371,16373,16375,16377,16379,16382,16385,16387],{"class":462,"line":2542},[460,16366,16196],{"class":466},[460,16368,2756],{"class":470},[460,16370,2759],{"class":929},[460,16372,894],{"class":466},[460,16374,16322],{"class":1353},[460,16376,16325],{"class":929},[460,16378,894],{"class":466},[460,16380,16381],{"class":1353},"\"outline\"",[460,16383,16384],{"class":466},">评论列表\u003C\u002F",[460,16386,2756],{"class":470},[460,16388,473],{"class":466},[460,16390,16391,16393,16395],{"class":462,"line":2559},[460,16392,16244],{"class":466},[460,16394,2737],{"class":470},[460,16396,473],{"class":466},[460,16398,16399,16401,16403],{"class":462,"line":2564},[460,16400,581],{"class":466},[460,16402,2737],{"class":470},[460,16404,473],{"class":466},[460,16406,16407,16409,16411,16413,16415,16418,16420,16422],{"class":462,"line":2569},[460,16408,467],{"class":466},[460,16410,225],{"class":470},[460,16412,12081],{"class":929},[460,16414,894],{"class":466},[460,16416,16417],{"class":1353},"\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Flodash@4.17.21\u002Flodash.min.js\"",[460,16419,5599],{"class":466},[460,16421,225],{"class":470},[460,16423,473],{"class":466},[460,16425,16426,16428,16430],{"class":462,"line":2579},[460,16427,467],{"class":466},[460,16429,225],{"class":470},[460,16431,473],{"class":466},[460,16433,16434],{"class":462,"line":2597},[460,16435,16436],{"class":942},"    \u002F\u002F 1.获取元素 要对视频进行操作\n",[460,16438,16439,16441,16443,16445,16447,16449,16451,16454],{"class":462,"line":2610},[460,16440,1340],{"class":887},[460,16442,15904],{"class":900},[460,16444,2943],{"class":887},[460,16446,10599],{"class":466},[460,16448,3541],{"class":929},[460,16450,2174],{"class":466},[460,16452,16453],{"class":1353},"'video'",[460,16455,3754],{"class":466},[460,16457,16458],{"class":462,"line":2621},[460,16459,16460],{"class":942},"    \u002F\u002F 这个事件类似于点击事件的另外一个写法.onclick\n",[460,16462,16463,16466,16468,16470,16472,16475,16477],{"class":462,"line":2634},[460,16464,16465],{"class":466},"    video.ontimeupdate ",[460,16467,894],{"class":887},[460,16469,12167],{"class":466},[460,16471,15015],{"class":929},[460,16473,16474],{"class":466},"(() ",[460,16476,8489],{"class":887},[460,16478,1348],{"class":466},[460,16480,16481],{"class":462,"line":2648},[460,16482,16483],{"class":942},"      \u002F\u002F 要进行本地存储,存当前播放的时间\n",[460,16485,16486],{"class":462,"line":2653},[460,16487,16488],{"class":942},"      \u002F\u002F 控制台输出当前的时间\n",[460,16490,16491,16494],{"class":462,"line":2658},[460,16492,16493],{"class":942},"      \u002F\u002F console.log(video.currentTime)",[460,16495,16496],{"class":942},"  \u002F\u002F获得当前的视频时间\n",[460,16498,16499],{"class":462,"line":2670},[460,16500,16501],{"class":942},"      \u002F\u002F 简单数据类型本地存储直接存储就可以,把当前的时间存储到本地存储\n",[460,16503,16504,16507,16510,16512,16515],{"class":462,"line":2683},[460,16505,16506],{"class":466},"      localStorage.",[460,16508,16509],{"class":929},"setItem",[460,16511,2174],{"class":466},[460,16513,16514],{"class":1353},"'currentTime'",[460,16516,16517],{"class":466},", video.currentTime)\n",[460,16519,16520,16523,16525],{"class":462,"line":2695},[460,16521,16522],{"class":466},"    }, ",[460,16524,11412],{"class":900},[460,16526,3754],{"class":466},[460,16528,16529],{"class":462,"line":2700},[460,16530,16531],{"class":942},"    \u002F\u002F 打开页面触发事件,就从本地存储里面取出事件,赋值给 video.currentTime\n",[460,16533,16534,16537,16540,16542,16545,16547],{"class":462,"line":2709},[460,16535,16536],{"class":466},"    video.",[460,16538,16539],{"class":929},"onloadeddata",[460,16541,2943],{"class":887},[460,16543,16544],{"class":466}," () ",[460,16546,8489],{"class":887},[460,16548,1348],{"class":466},[460,16550,16551],{"class":462,"line":2718},[460,16552,16553],{"class":942},"      \u002F\u002F console.log(11)\n",[460,16555,16556],{"class":462,"line":2723},[460,16557,16558],{"class":942},"      \u002F\u002F 第一次打开的话,若本地存储无数据的话,就从0开始,从视频的开头开始,使用逻辑中断\n",[460,16560,16561,16564,16566,16569,16572,16574,16576,16578,16581],{"class":462,"line":2732},[460,16562,16563],{"class":466},"      video.currentTime ",[460,16565,894],{"class":887},[460,16567,16568],{"class":466}," localStorage.",[460,16570,16571],{"class":929},"getItem",[460,16573,2174],{"class":466},[460,16575,16514],{"class":1353},[460,16577,8296],{"class":466},[460,16579,16580],{"class":887},"||",[460,16582,13996],{"class":900},[460,16584,16585],{"class":462,"line":2750},[460,16586,509],{"class":466},[460,16588,16589,16591,16593],{"class":462,"line":2782},[460,16590,581],{"class":466},[460,16592,225],{"class":470},[460,16594,473],{"class":466},[460,16596,16597,16599,16601],{"class":462,"line":2809},[460,16598,1776],{"class":466},[460,16600,1721],{"class":470},[460,16602,473],{"class":466},[460,16604,16605],{"class":462,"line":2836},[460,16606,522],{"emptyLinePlaceholder":521},[460,16608,16609,16611,16613],{"class":462,"line":2856},[460,16610,1776],{"class":466},[460,16612,704],{"class":470},[460,16614,473],{"class":466},[1944,16616,16617],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}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 .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":16619},[16620,16625,16629,16630,16631,16636,16641,16642,16643,16644,16651,16656,16657,16667,16671,16672,16676],{"id":20,"depth":476,"text":21,"children":16621},[16622,16623,16624],{"id":25,"depth":482,"text":26},{"id":54,"depth":482,"text":55},{"id":66,"depth":482,"text":67},{"id":78,"depth":476,"text":79,"children":16626},[16627,16628],{"id":82,"depth":482,"text":83},{"id":97,"depth":482,"text":98},{"id":151,"depth":476,"text":152},{"id":195,"depth":476,"text":196},{"id":212,"depth":476,"text":213,"children":16632},[16633,16634,16635],{"id":216,"depth":482,"text":217},{"id":230,"depth":482,"text":231},{"id":335,"depth":482,"text":336},{"id":662,"depth":476,"text":663,"children":16637},[16638,16639,16640],{"id":666,"depth":482,"text":667},{"id":1135,"depth":482,"text":1136},{"id":1556,"depth":482,"text":1557},{"id":1620,"depth":476,"text":1621},{"id":1700,"depth":476,"text":1701},{"id":1795,"depth":476,"text":1796},{"id":3923,"depth":476,"text":3924,"children":16645},[16646,16647,16648,16649,16650],{"id":3927,"depth":482,"text":3928},{"id":3939,"depth":482,"text":3940},{"id":4165,"depth":482,"text":4166},{"id":4183,"depth":482,"text":4184},{"id":4243,"depth":482,"text":4244},{"id":8574,"depth":476,"text":8575,"children":16652},[16653,16654,16655],{"id":8578,"depth":482,"text":8579},{"id":8596,"depth":482,"text":8597},{"id":8622,"depth":482,"text":8623},{"id":8631,"depth":476,"text":8632},{"id":8653,"depth":476,"text":8654,"children":16658},[16659,16660,16661,16662,16663,16664,16665,16666],{"id":8657,"depth":482,"text":8658},{"id":8919,"depth":482,"text":8920},{"id":9105,"depth":482,"text":9106},{"id":9476,"depth":482,"text":9477},{"id":9592,"depth":482,"text":9593},{"id":9628,"depth":482,"text":9629},{"id":9675,"depth":482,"text":9676},{"id":9709,"depth":482,"text":9710},{"id":11094,"depth":476,"text":11095,"children":16668},[16669,16670],{"id":11098,"depth":482,"text":11099},{"id":11135,"depth":482,"text":11136},{"id":12510,"depth":476,"text":12511},{"id":12886,"depth":476,"text":12887,"children":16673},[16674,16675],{"id":12890,"depth":482,"text":12891},{"id":12924,"depth":482,"text":12925},{"id":13665,"depth":476,"text":13666,"children":16677},[16678,16679,16680,16681],{"id":13669,"depth":482,"text":13670},{"id":14637,"depth":482,"text":14638},{"id":15581,"depth":482,"text":15582},{"id":15656,"depth":482,"text":15657},null,"md",{},"\u002Fwiki\u002F2025-09-02-js\u002Fch4-js",{"title":5,"description":16682},"wiki\u002F2025-09-02-JS学习\u002Fch4-js进阶","1dCbxNw1t9V3NJEB9OsdCj0OlTGnowDQ4ULzKgRbbCM",[16690,21671,22773,24187,27144,28490,29976,31062,39784,39796,40394,40420,40544,40785,40850,40868,40881,40928,41052,41221,41420,41599,41804,41940,42035,42072,42085,42395,43135,43843,43864,44882,46513,46664,46677,46689,46989,66696,66711,66728,66761,69580,92791,107316,107337,107450,107571,108341,109004,109365,109403,109509,109609,109652,109678,109739,111393,111494,111519,112010,112510,113590,113873,114615,115117,115129,117145,118809,120312,122010,123927,125846,127868,131338,131770,132233,132982,135926,136274,136296,136652,139959,139971,140374,140397,140544,140711,140916,141217,141774,142431,144362,145960,146609,148103,149534,150769,152463,154215,156625,156741,157676,157887,158772,160007,160235,160248,161403,163815,166183,169504,171981,173625,175402,177415,180467,182647,185174,187368],{"id":16691,"title":16692,"body":16693,"description":32,"extension":16683,"meta":21666,"navigation":521,"path":21667,"seo":21668,"stem":21669,"__hash__":21670},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Fch1-基本认识.md","1.基础入门",{"type":7,"value":16694,"toc":21638},[16695,16698,16702,16705,16709,16720,16724,16728,16731,16734,16737,16740,16743,16769,16773,16776,16779,16782,16784,16831,16835,16853,16855,16869,16872,16880,16883,17706,17713,17729,17733,17819,17823,17829,17913,17917,17954,17958,18021,18025,18029,18035,18046,18050,18055,18059,18064,18068,18073,18077,18081,18086,18329,18334,18472,18477,18728,18731,18739,18743,18748,18851,18854,19148,19157,19256,19259,19262,19265,19268,19528,19533,19672,19675,19854,19857,19985,19988,20140,20144,20149,20152,20163,20171,20174,20278,20282,20286,20291,20341,20346,20351,20374,20379,20431,20434,20439,20614,20619,20902,20907,21302,21306,21311,21368,21373,21381,21384,21523,21526,21635],[10,16696,16692],{"id":16697},"_1基础入门",[18,16699,16701],{"id":16700},"_11注释","1.1注释",[14,16703,16704],{},"\u002F\u002F或者\u002F* *\u002F",[18,16706,16708],{"id":16707},"_12命名","1.2命名",[103,16710,16711,16714,16717],{},[43,16712,16713],{},"字母数字下划线",[43,16715,16716],{},"开头必须是字母或_",[43,16718,16719],{},"不能使用关键词",[18,16721,16723],{"id":16722},"_13数据类型","1.3数据类型",[23,16725,16727],{"id":16726},"_131整形","1.3.1整形",[14,16729,16730],{},"short 短整形 2",[14,16732,16733],{},"int 整形 4",[14,16735,16736],{},"long 长整形 win4 linux32位4 linux64位8",[14,16738,16739],{},"long long 长长整形 8",[14,16741,16742],{},"利用sizeof可以求数据类型占用的内存空间大小",[451,16744,16748],{"className":16745,"code":16746,"language":16747,"meta":32,"style":32},"language-c++ shiki shiki-themes github-light github-dark","sizeof(int)\nsizeof(num)\n","c++",[457,16749,16750,16762],{"__ignoreMap":32},[460,16751,16752,16755,16757,16760],{"class":462,"line":463},[460,16753,16754],{"class":887},"sizeof",[460,16756,2174],{"class":466},[460,16758,16759],{"class":887},"int",[460,16761,3754],{"class":466},[460,16763,16764,16766],{"class":462,"line":476},[460,16765,16754],{"class":887},[460,16767,16768],{"class":466},"(num)\n",[23,16770,16772],{"id":16771},"_132浮点型","1.3.2浮点型",[14,16774,16775],{},"float 单精度 4节 7位有效数字",[14,16777,16778],{},"double 双精度 8节 15-16有效数字",[14,16780,16781],{},"默认情况下，输出一个小数，会显示6位有效数字",[14,16783,357],{},[451,16785,16787],{"className":16745,"code":16786,"language":16747,"meta":32,"style":32},"float f1=3.14f; \u002F\u002F要写上f,编辑器默认是双精度，鼠标放上去也是双精度，用float的变量去接受这个数字时会多做一步从双精度到单精度的转换，写上f就直接是单精度\nfloat f2=3e2; \u002F\u002F科学记数法\n",[457,16788,16789,16811],{"__ignoreMap":32},[460,16790,16791,16794,16797,16799,16802,16805,16808],{"class":462,"line":463},[460,16792,16793],{"class":887},"float",[460,16795,16796],{"class":466}," f1",[460,16798,894],{"class":887},[460,16800,16801],{"class":900},"3.14",[460,16803,16804],{"class":887},"f",[460,16806,16807],{"class":466},";",[460,16809,16810],{"class":942}," \u002F\u002F要写上f,编辑器默认是双精度，鼠标放上去也是双精度，用float的变量去接受这个数字时会多做一步从双精度到单精度的转换，写上f就直接是单精度\n",[460,16812,16813,16815,16818,16820,16822,16824,16826,16828],{"class":462,"line":476},[460,16814,16793],{"class":887},[460,16816,16817],{"class":466}," f2",[460,16819,894],{"class":887},[460,16821,913],{"class":900},[460,16823,3609],{"class":887},[460,16825,907],{"class":900},[460,16827,16807],{"class":466},[460,16829,16830],{"class":942}," \u002F\u002F科学记数法\n",[23,16832,16834],{"id":16833},"_133字符型","1.3.3字符型",[451,16836,16838],{"className":16745,"code":16837,"language":16747,"meta":32,"style":32},"char ch='a'\n",[457,16839,16840],{"__ignoreMap":32},[460,16841,16842,16845,16848,16850],{"class":462,"line":463},[460,16843,16844],{"class":887},"char",[460,16846,16847],{"class":466}," ch",[460,16849,894],{"class":887},[460,16851,16852],{"class":1353},"'a'\n",[14,16854,357],{},[103,16856,16857,16860,16863,16866],{},[43,16858,16859],{},"在显示字符型变量时，只能单引号，双引号x",[43,16861,16862],{},"单引号内只能一个字符，不能字符串",[43,16864,16865],{},"c和c++字符型变量只占用一个字符",[43,16867,16868],{},"字符型变量并不是把字符本身放到内存中存储，而是将对应的ASCII编码放入到存储单元",[14,16870,16871],{},"ASCII码大致由以下两部分组成：",[103,16873,16874,16877],{},[43,16875,16876],{},"ASCII非打印控制字符：ASCII表上的数字0-31分配给了控制字符，用于控制像打印机等一些外围设备",[43,16878,16879],{},"ASCII打印字符：数字32-126分配给了能在键盘上找到的字符，当查看或打印文档时就会出现（65A；97a）",[14,16881,16882],{},"ASCII码表格：",[16884,16885,16886,16929],"table",{},[16887,16888,16889],"thead",{},[16890,16891,16892,16899,16904,16908,16913,16917,16921,16925],"tr",{},[16893,16894,16895,16898],"th",{},[3944,16896,16897],{},"ASCII","值",[16893,16900,16901],{},[3944,16902,16903],{},"控制字符",[16893,16905,16906,16898],{},[3944,16907,16897],{},[16893,16909,16910],{},[3944,16911,16912],{},"字符",[16893,16914,16915,16898],{},[3944,16916,16897],{},[16893,16918,16919],{},[3944,16920,16912],{},[16893,16922,16923,16898],{},[3944,16924,16897],{},[16893,16926,16927],{},[3944,16928,16912],{},[16930,16931,16932,16958,16981,17006,17031,17055,17078,17102,17126,17150,17175,17199,17223,17246,17271,17295,17319,17342,17367,17390,17414,17437,17462,17486,17511,17535,17558,17583,17608,17631,17655,17681],"tbody",{},[16890,16933,16934,16937,16940,16943,16946,16949,16952,16955],{},[16935,16936,936],"td",{},[16935,16938,16939],{},"NUT",[16935,16941,16942],{},"32",[16935,16944,16945],{},"(space)",[16935,16947,16948],{},"64",[16935,16950,16951],{},"@",[16935,16953,16954],{},"96",[16935,16956,16957],{},"、",[16890,16959,16960,16962,16965,16968,16970,16973,16976,16979],{},[16935,16961,901],{},[16935,16963,16964],{},"SOH",[16935,16966,16967],{},"33",[16935,16969,15458],{},[16935,16971,16972],{},"65",[16935,16974,16975],{},"A",[16935,16977,16978],{},"97",[16935,16980,2756],{},[16890,16982,16983,16985,16988,16991,16994,16997,17000,17003],{},[16935,16984,907],{},[16935,16986,16987],{},"STX",[16935,16989,16990],{},"34",[16935,16992,16993],{},"\"",[16935,16995,16996],{},"66",[16935,16998,16999],{},"B",[16935,17001,17002],{},"98",[16935,17004,17005],{},"b",[16890,17007,17008,17010,17013,17016,17019,17022,17025,17028],{},[16935,17009,913],{},[16935,17011,17012],{},"ETX",[16935,17014,17015],{},"35",[16935,17017,17018],{},"#",[16935,17020,17021],{},"67",[16935,17023,17024],{},"C",[16935,17026,17027],{},"99",[16935,17029,17030],{},"c",[16890,17032,17033,17035,17038,17041,17044,17047,17050,17052],{},[16935,17034,918],{},[16935,17036,17037],{},"EOT",[16935,17039,17040],{},"36",[16935,17042,17043],{},"$",[16935,17045,17046],{},"68",[16935,17048,17049],{},"D",[16935,17051,2325],{},[16935,17053,17054],{},"d",[16890,17056,17057,17059,17062,17065,17067,17070,17073,17076],{},[16935,17058,7290],{},[16935,17060,17061],{},"ENQ",[16935,17063,17064],{},"37",[16935,17066,2328],{},[16935,17068,17069],{},"69",[16935,17071,17072],{},"E",[16935,17074,17075],{},"101",[16935,17077,3609],{},[16890,17079,17080,17082,17085,17088,17091,17094,17097,17100],{},[16935,17081,4064],{},[16935,17083,17084],{},"ACK",[16935,17086,17087],{},"38",[16935,17089,17090],{},"&",[16935,17092,17093],{},"70",[16935,17095,17096],{},"F",[16935,17098,17099],{},"102",[16935,17101,16804],{},[16890,17103,17104,17106,17109,17112,17114,17117,17120,17123],{},[16935,17105,6149],{},[16935,17107,17108],{},"BEL",[16935,17110,17111],{},"39",[16935,17113,3986],{},[16935,17115,17116],{},"71",[16935,17118,17119],{},"G",[16935,17121,17122],{},"103",[16935,17124,17125],{},"g",[16890,17127,17128,17131,17134,17136,17138,17141,17144,17147],{},[16935,17129,17130],{},"8",[16935,17132,17133],{},"BS",[16935,17135,5504],{},[16935,17137,2174],{},[16935,17139,17140],{},"72",[16935,17142,17143],{},"H",[16935,17145,17146],{},"104",[16935,17148,17149],{},"h",[16890,17151,17152,17155,17158,17161,17163,17166,17169,17172],{},[16935,17153,17154],{},"9",[16935,17156,17157],{},"HT",[16935,17159,17160],{},"41",[16935,17162,8411],{},[16935,17164,17165],{},"73",[16935,17167,17168],{},"I",[16935,17170,17171],{},"105",[16935,17173,17174],{},"i",[16890,17176,17177,17179,17182,17185,17187,17190,17193,17196],{},[16935,17178,2096],{},[16935,17180,17181],{},"LF",[16935,17183,17184],{},"42",[16935,17186,8320],{},[16935,17188,17189],{},"74",[16935,17191,17192],{},"J",[16935,17194,17195],{},"106",[16935,17197,17198],{},"j",[16890,17200,17201,17203,17206,17209,17211,17214,17217,17220],{},[16935,17202,12812],{},[16935,17204,17205],{},"VT",[16935,17207,17208],{},"43",[16935,17210,8495],{},[16935,17212,17213],{},"75",[16935,17215,17216],{},"K",[16935,17218,17219],{},"107",[16935,17221,17222],{},"k",[16890,17224,17225,17227,17230,17232,17234,17237,17240,17243],{},[16935,17226,5531],{},[16935,17228,17229],{},"FF",[16935,17231,13299],{},[16935,17233,3986],{},[16935,17235,17236],{},"76",[16935,17238,17239],{},"L",[16935,17241,17242],{},"108",[16935,17244,17245],{},"l",[16890,17247,17248,17251,17254,17257,17260,17262,17265,17268],{},[16935,17249,17250],{},"13",[16935,17252,17253],{},"CR",[16935,17255,17256],{},"45",[16935,17258,17259],{},"-",[16935,17261,13304],{},[16935,17263,17264],{},"M",[16935,17266,17267],{},"109",[16935,17269,17270],{},"m",[16890,17272,17273,17275,17278,17281,17283,17286,17289,17292],{},[16935,17274,2480],{},[16935,17276,17277],{},"SO",[16935,17279,17280],{},"46",[16935,17282,6000],{},[16935,17284,17285],{},"78",[16935,17287,17288],{},"N",[16935,17290,17291],{},"110",[16935,17293,17294],{},"n",[16890,17296,17297,17299,17302,17305,17307,17310,17313,17316],{},[16935,17298,7157],{},[16935,17300,17301],{},"SI",[16935,17303,17304],{},"47",[16935,17306,8331],{},[16935,17308,17309],{},"79",[16935,17311,17312],{},"O",[16935,17314,17315],{},"111",[16935,17317,17318],{},"o",[16890,17320,17321,17324,17327,17330,17332,17334,17337,17340],{},[16935,17322,17323],{},"16",[16935,17325,17326],{},"DLE",[16935,17328,17329],{},"48",[16935,17331,936],{},[16935,17333,7265],{},[16935,17335,17336],{},"P",[16935,17338,17339],{},"112",[16935,17341,14],{},[16890,17343,17344,17347,17350,17353,17355,17358,17361,17364],{},[16935,17345,17346],{},"17",[16935,17348,17349],{},"DCI",[16935,17351,17352],{},"49",[16935,17354,901],{},[16935,17356,17357],{},"81",[16935,17359,17360],{},"Q",[16935,17362,17363],{},"113",[16935,17365,17366],{},"q",[16890,17368,17369,17371,17374,17376,17378,17381,17384,17387],{},[16935,17370,2361],{},[16935,17372,17373],{},"DC2",[16935,17375,2549],{},[16935,17377,907],{},[16935,17379,17380],{},"82",[16935,17382,17383],{},"R",[16935,17385,17386],{},"114",[16935,17388,17389],{},"r",[16890,17391,17392,17395,17398,17401,17403,17406,17409,17412],{},[16935,17393,17394],{},"19",[16935,17396,17397],{},"DC3",[16935,17399,17400],{},"51",[16935,17402,913],{},[16935,17404,17405],{},"83",[16935,17407,17408],{},"S",[16935,17410,17411],{},"115",[16935,17413,2139],{},[16890,17415,17416,17418,17421,17424,17426,17429,17432,17435],{},[16935,17417,2110],{},[16935,17419,17420],{},"DC4",[16935,17422,17423],{},"52",[16935,17425,918],{},[16935,17427,17428],{},"84",[16935,17430,17431],{},"T",[16935,17433,17434],{},"116",[16935,17436,14482],{},[16890,17438,17439,17442,17445,17448,17450,17453,17456,17459],{},[16935,17440,17441],{},"21",[16935,17443,17444],{},"NAK",[16935,17446,17447],{},"53",[16935,17449,7290],{},[16935,17451,17452],{},"85",[16935,17454,17455],{},"U",[16935,17457,17458],{},"117",[16935,17460,17461],{},"u",[16890,17463,17464,17466,17469,17472,17474,17477,17480,17483],{},[16935,17465,2421],{},[16935,17467,17468],{},"SYN",[16935,17470,17471],{},"54",[16935,17473,4064],{},[16935,17475,17476],{},"86",[16935,17478,17479],{},"V",[16935,17481,17482],{},"118",[16935,17484,17485],{},"v",[16890,17487,17488,17491,17494,17497,17499,17502,17505,17508],{},[16935,17489,17490],{},"23",[16935,17492,17493],{},"TB",[16935,17495,17496],{},"55",[16935,17498,6149],{},[16935,17500,17501],{},"87",[16935,17503,17504],{},"W",[16935,17506,17507],{},"119",[16935,17509,17510],{},"w",[16890,17512,17513,17516,17519,17522,17524,17527,17530,17533],{},[16935,17514,17515],{},"24",[16935,17517,17518],{},"CAN",[16935,17520,17521],{},"56",[16935,17523,17130],{},[16935,17525,17526],{},"88",[16935,17528,17529],{},"X",[16935,17531,17532],{},"120",[16935,17534,13187],{},[16890,17536,17537,17539,17542,17545,17547,17550,17553,17556],{},[16935,17538,13850],{},[16935,17540,17541],{},"EM",[16935,17543,17544],{},"57",[16935,17546,17154],{},[16935,17548,17549],{},"89",[16935,17551,17552],{},"Y",[16935,17554,17555],{},"121",[16935,17557,13192],{},[16890,17559,17560,17563,17566,17569,17571,17574,17577,17580],{},[16935,17561,17562],{},"26",[16935,17564,17565],{},"SUB",[16935,17567,17568],{},"58",[16935,17570,1357],{},[16935,17572,17573],{},"90",[16935,17575,17576],{},"Z",[16935,17578,17579],{},"122",[16935,17581,17582],{},"z",[16890,17584,17585,17588,17591,17594,17596,17599,17602,17605],{},[16935,17586,17587],{},"27",[16935,17589,17590],{},"ESC",[16935,17592,17593],{},"59",[16935,17595,16807],{},[16935,17597,17598],{},"91",[16935,17600,17601],{},"[",[16935,17603,17604],{},"123",[16935,17606,17607],{},"{",[16890,17609,17610,17613,17616,17618,17620,17623,17625,17628],{},[16935,17611,17612],{},"28",[16935,17614,17615],{},"FS",[16935,17617,16027],{},[16935,17619,781],{},[16935,17621,17622],{},"92",[16935,17624,8331],{},[16935,17626,17627],{},"124",[16935,17629,17630],{},"|",[16890,17632,17633,17636,17639,17642,17644,17647,17650,17653],{},[16935,17634,17635],{},"29",[16935,17637,17638],{},"GS",[16935,17640,17641],{},"61",[16935,17643,894],{},[16935,17645,17646],{},"93",[16935,17648,17649],{},"]",[16935,17651,17652],{},"125",[16935,17654,612],{},[16890,17656,17657,17660,17663,17666,17669,17672,17675,17678],{},[16935,17658,17659],{},"30",[16935,17661,17662],{},"RS",[16935,17664,17665],{},"62",[16935,17667,17668],{},">",[16935,17670,17671],{},"94",[16935,17673,17674],{},"^",[16935,17676,17677],{},"126",[16935,17679,17680],{},"`",[16890,17682,17683,17686,17689,17692,17694,17697,17700,17703],{},[16935,17684,17685],{},"31",[16935,17687,17688],{},"US",[16935,17690,17691],{},"63",[16935,17693,8258],{},[16935,17695,17696],{},"95",[16935,17698,17699],{},"_",[16935,17701,17702],{},"127",[16935,17704,17705],{},"DEL",[14,17707,17708,17709,17712],{},"ASCII 码大致由以下",[3944,17710,17711],{},"两部分组","成：",[40,17714,17715,17722],{},[43,17716,17717,17718,17721],{},"ASCII 非打印控制字符： ASCII 表上的数字 ",[3944,17719,17720],{},"0-31"," 分配给了控制字符，用于控制像打印机等一些外围设备。",[43,17723,17724,17725,17728],{},"ASCII 打印字符：数字 ",[3944,17726,17727],{},"32-126"," 分配给了能在键盘上找到的字符，当查看或打印文档时就会出现。",[23,17730,17732],{"id":17731},"_134转义字符","1.3.4转义字符",[451,17734,17736],{"className":16745,"code":17735,"language":16747,"meta":32,"style":32},"\u002F\u002F换行符\ncout \u003C\u003C\"hello world\u002Fn\"; \u002F\u002F就等同于如下：\ncout \u003C\u003C\"hello world\"\u003C\u003Cendl;\n\u002F\u002F反斜杠\ncout \u003C\u003C\"\u002F\u002F\"\u003C\u003Cendl;\n\u002F\u002F水平制表符\ncout \u003C\u003C\"aaaa\\thelloworld\"\u003C\u003Cendl; \u002F\u002F输出窗口时有对齐效果\n",[457,17737,17738,17743,17759,17773,17778,17791,17796],{"__ignoreMap":32},[460,17739,17740],{"class":462,"line":463},[460,17741,17742],{"class":942},"\u002F\u002F换行符\n",[460,17744,17745,17748,17751,17754,17756],{"class":462,"line":476},[460,17746,17747],{"class":466},"cout ",[460,17749,17750],{"class":887},"\u003C\u003C",[460,17752,17753],{"class":1353},"\"hello world\u002Fn\"",[460,17755,16807],{"class":466},[460,17757,17758],{"class":942}," \u002F\u002F就等同于如下：\n",[460,17760,17761,17763,17765,17768,17770],{"class":462,"line":482},[460,17762,17747],{"class":466},[460,17764,17750],{"class":887},[460,17766,17767],{"class":1353},"\"hello world\"",[460,17769,17750],{"class":887},[460,17771,17772],{"class":466},"endl;\n",[460,17774,17775],{"class":462,"line":488},[460,17776,17777],{"class":942},"\u002F\u002F反斜杠\n",[460,17779,17780,17782,17784,17787,17789],{"class":462,"line":494},[460,17781,17747],{"class":466},[460,17783,17750],{"class":887},[460,17785,17786],{"class":1353},"\"\u002F\u002F\"",[460,17788,17750],{"class":887},[460,17790,17772],{"class":466},[460,17792,17793],{"class":462,"line":500},[460,17794,17795],{"class":942},"\u002F\u002F水平制表符\n",[460,17797,17798,17800,17802,17805,17808,17811,17813,17816],{"class":462,"line":506},[460,17799,17747],{"class":466},[460,17801,17750],{"class":887},[460,17803,17804],{"class":1353},"\"aaaa",[460,17806,17807],{"class":900},"\\t",[460,17809,17810],{"class":1353},"helloworld\"",[460,17812,17750],{"class":887},[460,17814,17815],{"class":466},"endl;",[460,17817,17818],{"class":942}," \u002F\u002F输出窗口时有对齐效果\n",[23,17820,17822],{"id":17821},"_135字符串型","1.3.5字符串型",[14,17824,17825,17826,17828],{},"char 变量名",[460,17827],{},"=\"字符串值\"",[451,17830,17832],{"className":16745,"code":17831,"language":16747,"meta":32,"style":32},"\u002F\u002Fc风格字符串\n\u002F\u002F注意事项：\n\u002F\u002F1.char字符串名[]\n\u002F\u002F2.等号后面要用双引号，包含起来字符串\nchar str[]=\"hello world\";\ncout \u003C\u003Cstr\u003C\u003Cendl;\n\u002F\u002Fc++风格字符串\n\u002F\u002F需要先引用一个头文件 #include\u003Cstring>\nstring str2=\"hello world\";\ncout \u003C\u003Cstr2\u003C\u003Cendl;\n",[457,17833,17834,17839,17844,17849,17854,17867,17879,17884,17889,17900],{"__ignoreMap":32},[460,17835,17836],{"class":462,"line":463},[460,17837,17838],{"class":942},"\u002F\u002Fc风格字符串\n",[460,17840,17841],{"class":462,"line":476},[460,17842,17843],{"class":942},"\u002F\u002F注意事项：\n",[460,17845,17846],{"class":462,"line":482},[460,17847,17848],{"class":942},"\u002F\u002F1.char字符串名[]\n",[460,17850,17851],{"class":462,"line":488},[460,17852,17853],{"class":942},"\u002F\u002F2.等号后面要用双引号，包含起来字符串\n",[460,17855,17856,17858,17861,17863,17865],{"class":462,"line":494},[460,17857,16844],{"class":887},[460,17859,17860],{"class":466}," str[]",[460,17862,894],{"class":887},[460,17864,17767],{"class":1353},[460,17866,1966],{"class":466},[460,17868,17869,17871,17873,17875,17877],{"class":462,"line":500},[460,17870,17747],{"class":466},[460,17872,17750],{"class":887},[460,17874,6393],{"class":466},[460,17876,17750],{"class":887},[460,17878,17772],{"class":466},[460,17880,17881],{"class":462,"line":506},[460,17882,17883],{"class":942},"\u002F\u002Fc++风格字符串\n",[460,17885,17886],{"class":462,"line":512},[460,17887,17888],{"class":942},"\u002F\u002F需要先引用一个头文件 #include\u003Cstring>\n",[460,17890,17891,17894,17896,17898],{"class":462,"line":518},[460,17892,17893],{"class":466},"string str2",[460,17895,894],{"class":887},[460,17897,17767],{"class":1353},[460,17899,1966],{"class":466},[460,17901,17902,17904,17906,17909,17911],{"class":462,"line":525},[460,17903,17747],{"class":466},[460,17905,17750],{"class":887},[460,17907,17908],{"class":466},"str2",[460,17910,17750],{"class":887},[460,17912,17772],{"class":466},[23,17914,17916],{"id":17915},"_136布尔类型bool","1.3.6布尔类型bool",[451,17918,17920],{"className":16745,"code":17919,"language":16747,"meta":32,"style":32},"bool flag=true;\ncout\u003C\u003Csizeof(flag)\u003C\u003Cendl; \u002F\u002F查看布尔占内存空间\n",[457,17921,17922,17936],{"__ignoreMap":32},[460,17923,17924,17927,17930,17932,17934],{"class":462,"line":463},[460,17925,17926],{"class":887},"bool",[460,17928,17929],{"class":466}," flag",[460,17931,894],{"class":887},[460,17933,6270],{"class":900},[460,17935,1966],{"class":466},[460,17937,17938,17941,17944,17947,17949,17951],{"class":462,"line":476},[460,17939,17940],{"class":466},"cout",[460,17942,17943],{"class":887},"\u003C\u003Csizeof",[460,17945,17946],{"class":466},"(flag)",[460,17948,17750],{"class":887},[460,17950,17815],{"class":466},[460,17952,17953],{"class":942}," \u002F\u002F查看布尔占内存空间\n",[18,17955,17957],{"id":17956},"_14键盘输入cin","1.4键盘输入cin",[451,17959,17961],{"className":16745,"code":17960,"language":16747,"meta":32,"style":32},"int a=0;\ncout\u003C\u003C\"请给整型变量a赋值\"\u003C\u003Ca\u003C\u003Cendl;\ncin >> a;\ncout \u003C\u003C \"整型变量a=\" \u003C\u003Ca\u003C\u003Cendl; \n",[457,17962,17963,17975,17992,18003],{"__ignoreMap":32},[460,17964,17965,17967,17969,17971,17973],{"class":462,"line":463},[460,17966,16759],{"class":887},[460,17968,2574],{"class":466},[460,17970,894],{"class":887},[460,17972,936],{"class":900},[460,17974,1966],{"class":466},[460,17976,17977,17979,17981,17984,17986,17988,17990],{"class":462,"line":476},[460,17978,17940],{"class":466},[460,17980,17750],{"class":887},[460,17982,17983],{"class":1353},"\"请给整型变量a赋值\"",[460,17985,17750],{"class":887},[460,17987,2756],{"class":466},[460,17989,17750],{"class":887},[460,17991,17772],{"class":466},[460,17993,17994,17997,18000],{"class":462,"line":482},[460,17995,17996],{"class":466},"cin ",[460,17998,17999],{"class":887},">>",[460,18001,18002],{"class":466}," a;\n",[460,18004,18005,18007,18009,18012,18015,18017,18019],{"class":462,"line":488},[460,18006,17747],{"class":466},[460,18008,17750],{"class":887},[460,18010,18011],{"class":1353}," \"整型变量a=\"",[460,18013,18014],{"class":887}," \u003C\u003C",[460,18016,2756],{"class":466},[460,18018,17750],{"class":887},[460,18020,17772],{"class":466},[18,18022,18024],{"id":18023},"_15运算符","1.5运算符",[23,18026,18028],{"id":18027},"_151算术运算符","1.5.1算术运算符",[14,18030,18031,18034],{},[30,18032],{"alt":32,"src":18033},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2026-05-24-c++%E5%AD%A6%E4%B9%A0-001.png","\n注意：",[103,18036,18037,18040,18043],{},[43,18038,18039],{},"两个整数相除，结果依然是整数，小数部分被去除掉了",[43,18041,18042],{},"两个小数不可以做取模运算",[43,18044,18045],{},"前置递增++a;后置递增a++，两者区别：前置递增先让变量+1,再进行表达式计算；后置递增是先让表达式运算，再让变量+1",[23,18047,18049],{"id":18048},"_152赋值运算符","1.5.2赋值运算符",[14,18051,18052],{},[30,18053],{"alt":32,"src":18054},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2026-05-24-c++%E5%AD%A6%E4%B9%A0-002.png",[23,18056,18058],{"id":18057},"_153比较运算符","1.5.3比较运算符",[14,18060,18061],{},[30,18062],{"alt":32,"src":18063},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2026-05-24-c++%E5%AD%A6%E4%B9%A0-003.png",[23,18065,18067],{"id":18066},"_154逻辑运算符","1.5.4逻辑运算符",[14,18069,18070],{},[30,18071],{"alt":32,"src":18072},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2026-05-24-c++%E5%AD%A6%E4%B9%A0-004.png",[18,18074,18076],{"id":18075},"_16程序流程结构","1.6程序流程结构",[23,18078,18080],{"id":18079},"_161选择结构","1.6.1选择结构",[103,18082,18083],{},[43,18084,18085],{},"if语句\n单行、多行、多条件if语句",[451,18087,18089],{"className":16745,"code":18088,"language":16747,"meta":32,"style":32},"\u002F\u002F单行格式if语句：if (条件){条件满足执行的语句}\nif(score>600)\n{\n    cout\u003C\u003C'这是单行if语句'\u003C\u003Cendl;\n}\n\u002F\u002F多行格式if语句：if (条件){条件满足执行的语句}else{条件不满足执行的语句}\ncin >> score\nif(score\u003C=600)\n{\n    cout>>\"小于等于600\"\u003C\u003Cendl;\n}\nelse\n{\n    cout>>\"大于600\">>endl;\n}\n\u002F\u002F多条件格式if语句：if (条件){条件1满足执行的语句}else if{条件2满足执行的语句}····else{条件不满足执行的语句}\nif (0\u003Cnum\u003C100)\n{\n    cout\u003C\u003C\"小于100\"\u003C\u003Cendl;\n}\nelse if (nmu>=100&&num\u003C200)\n{\n    cout\u003C\u003C\"不小于100且小于200\"\u003C\u003Cendl; \u002F\u002F可以无限else if,python中是elif：\n}\nelse\n{\n    cout\u003C\u003C\"不小于200\"\u003C\u003Cendl;\n}\n\u002F\u002F 嵌套if语句(if套if,注意条件即可)\n",[457,18090,18091,18096,18111,18116,18130,18134,18139,18148,18160,18164,18177,18181,18186,18190,18203,18207,18212,18231,18235,18248,18252,18275,18279,18295,18299,18303,18307,18320,18324],{"__ignoreMap":32},[460,18092,18093],{"class":462,"line":463},[460,18094,18095],{"class":942},"\u002F\u002F单行格式if语句：if (条件){条件满足执行的语句}\n",[460,18097,18098,18101,18104,18106,18109],{"class":462,"line":476},[460,18099,18100],{"class":887},"if",[460,18102,18103],{"class":466},"(score",[460,18105,17668],{"class":887},[460,18107,18108],{"class":900},"600",[460,18110,3754],{"class":466},[460,18112,18113],{"class":462,"line":482},[460,18114,18115],{"class":466},"{\n",[460,18117,18118,18121,18123,18126,18128],{"class":462,"line":488},[460,18119,18120],{"class":466},"    cout",[460,18122,17750],{"class":887},[460,18124,18125],{"class":1353},"'这是单行if语句'",[460,18127,17750],{"class":887},[460,18129,17772],{"class":466},[460,18131,18132],{"class":462,"line":494},[460,18133,821],{"class":466},[460,18135,18136],{"class":462,"line":500},[460,18137,18138],{"class":942},"\u002F\u002F多行格式if语句：if (条件){条件满足执行的语句}else{条件不满足执行的语句}\n",[460,18140,18141,18143,18145],{"class":462,"line":506},[460,18142,17996],{"class":466},[460,18144,17999],{"class":887},[460,18146,18147],{"class":466}," score\n",[460,18149,18150,18152,18154,18156,18158],{"class":462,"line":512},[460,18151,18100],{"class":887},[460,18153,18103],{"class":466},[460,18155,3748],{"class":887},[460,18157,18108],{"class":900},[460,18159,3754],{"class":466},[460,18161,18162],{"class":462,"line":518},[460,18163,18115],{"class":466},[460,18165,18166,18168,18170,18173,18175],{"class":462,"line":525},[460,18167,18120],{"class":466},[460,18169,17999],{"class":887},[460,18171,18172],{"class":1353},"\"小于等于600\"",[460,18174,17750],{"class":887},[460,18176,17772],{"class":466},[460,18178,18179],{"class":462,"line":531},[460,18180,821],{"class":466},[460,18182,18183],{"class":462,"line":537},[460,18184,18185],{"class":887},"else\n",[460,18187,18188],{"class":462,"line":543},[460,18189,18115],{"class":466},[460,18191,18192,18194,18196,18199,18201],{"class":462,"line":549},[460,18193,18120],{"class":466},[460,18195,17999],{"class":887},[460,18197,18198],{"class":1353},"\"大于600\"",[460,18200,17999],{"class":887},[460,18202,17772],{"class":466},[460,18204,18205],{"class":462,"line":555},[460,18206,821],{"class":466},[460,18208,18209],{"class":462,"line":560},[460,18210,18211],{"class":942},"\u002F\u002F多条件格式if语句：if (条件){条件1满足执行的语句}else if{条件2满足执行的语句}····else{条件不满足执行的语句}\n",[460,18213,18214,18216,18218,18220,18222,18225,18227,18229],{"class":462,"line":566},[460,18215,18100],{"class":887},[460,18217,11704],{"class":466},[460,18219,936],{"class":900},[460,18221,781],{"class":887},[460,18223,18224],{"class":466},"num",[460,18226,781],{"class":887},[460,18228,2325],{"class":900},[460,18230,3754],{"class":466},[460,18232,18233],{"class":462,"line":572},[460,18234,18115],{"class":466},[460,18236,18237,18239,18241,18244,18246],{"class":462,"line":578},[460,18238,18120],{"class":466},[460,18240,17750],{"class":887},[460,18242,18243],{"class":1353},"\"小于100\"",[460,18245,17750],{"class":887},[460,18247,17772],{"class":466},[460,18249,18250],{"class":462,"line":812},[460,18251,821],{"class":466},[460,18253,18254,18256,18258,18261,18263,18265,18267,18269,18271,18273],{"class":462,"line":818},[460,18255,3763],{"class":887},[460,18257,3766],{"class":887},[460,18259,18260],{"class":466}," (nmu",[460,18262,3738],{"class":887},[460,18264,2325],{"class":900},[460,18266,10749],{"class":887},[460,18268,18224],{"class":466},[460,18270,781],{"class":887},[460,18272,5490],{"class":900},[460,18274,3754],{"class":466},[460,18276,18277],{"class":462,"line":824},[460,18278,18115],{"class":466},[460,18280,18281,18283,18285,18288,18290,18292],{"class":462,"line":2074},[460,18282,18120],{"class":466},[460,18284,17750],{"class":887},[460,18286,18287],{"class":1353},"\"不小于100且小于200\"",[460,18289,17750],{"class":887},[460,18291,17815],{"class":466},[460,18293,18294],{"class":942}," \u002F\u002F可以无限else if,python中是elif：\n",[460,18296,18297],{"class":462,"line":2088},[460,18298,821],{"class":466},[460,18300,18301],{"class":462,"line":2103},[460,18302,18185],{"class":887},[460,18304,18305],{"class":462,"line":2122},[460,18306,18115],{"class":466},[460,18308,18309,18311,18313,18316,18318],{"class":462,"line":2144},[460,18310,18120],{"class":466},[460,18312,17750],{"class":887},[460,18314,18315],{"class":1353},"\"不小于200\"",[460,18317,17750],{"class":887},[460,18319,17772],{"class":466},[460,18321,18322],{"class":462,"line":2158},[460,18323,821],{"class":466},[460,18325,18326],{"class":462,"line":2163},[460,18327,18328],{"class":942},"\u002F\u002F 嵌套if语句(if套if,注意条件即可)\n",[103,18330,18331],{"start":476},[43,18332,18333],{},"三目运算符",[451,18335,18337],{"className":16745,"code":18336,"language":16747,"meta":32,"style":32},"\u002F\u002F创建三个变量a,b,c\n\u002F\u002F将a和b做比较，将变量大的值赋值给变量c\nint a=20,b=10,c=0;\nc=(a>b?a:b)\ncout\u003C\u003C\"c=\"\u003C\u003Cc\u003C\u003Cendl;\n\u002F\u002F在c++中三目运算符返回的是变量，可以继续赋值\n(a>b?a:b)=100;\ncout\u003C\u003Ca\u003C\u003Cendl; \u002F\u002F100  a是大于b的，将100赋值给了a\ncout\u003C\u003Cb\u003C\u003Cendl; \u002F\u002F10   a>b,b还是原值\n",[457,18338,18339,18344,18349,18375,18397,18414,18419,18442,18457],{"__ignoreMap":32},[460,18340,18341],{"class":462,"line":463},[460,18342,18343],{"class":942},"\u002F\u002F创建三个变量a,b,c\n",[460,18345,18346],{"class":462,"line":476},[460,18347,18348],{"class":942},"\u002F\u002F将a和b做比较，将变量大的值赋值给变量c\n",[460,18350,18351,18353,18355,18357,18359,18362,18364,18366,18369,18371,18373],{"class":462,"line":482},[460,18352,16759],{"class":887},[460,18354,2574],{"class":466},[460,18356,894],{"class":887},[460,18358,2110],{"class":900},[460,18360,18361],{"class":466},",b",[460,18363,894],{"class":887},[460,18365,2096],{"class":900},[460,18367,18368],{"class":466},",c",[460,18370,894],{"class":887},[460,18372,936],{"class":900},[460,18374,1966],{"class":466},[460,18376,18377,18379,18381,18384,18386,18388,18390,18392,18394],{"class":462,"line":488},[460,18378,17030],{"class":466},[460,18380,894],{"class":887},[460,18382,18383],{"class":466},"(a",[460,18385,17668],{"class":887},[460,18387,17005],{"class":466},[460,18389,8258],{"class":887},[460,18391,2756],{"class":466},[460,18393,1357],{"class":887},[460,18395,18396],{"class":466},"b)\n",[460,18398,18399,18401,18403,18406,18408,18410,18412],{"class":462,"line":494},[460,18400,17940],{"class":466},[460,18402,17750],{"class":887},[460,18404,18405],{"class":1353},"\"c=\"",[460,18407,17750],{"class":887},[460,18409,17030],{"class":466},[460,18411,17750],{"class":887},[460,18413,17772],{"class":466},[460,18415,18416],{"class":462,"line":500},[460,18417,18418],{"class":942},"\u002F\u002F在c++中三目运算符返回的是变量，可以继续赋值\n",[460,18420,18421,18423,18425,18427,18429,18431,18433,18436,18438,18440],{"class":462,"line":506},[460,18422,18383],{"class":466},[460,18424,17668],{"class":887},[460,18426,17005],{"class":466},[460,18428,8258],{"class":887},[460,18430,2756],{"class":466},[460,18432,1357],{"class":887},[460,18434,18435],{"class":466},"b)",[460,18437,894],{"class":887},[460,18439,2325],{"class":900},[460,18441,1966],{"class":466},[460,18443,18444,18446,18448,18450,18452,18454],{"class":462,"line":512},[460,18445,17940],{"class":466},[460,18447,17750],{"class":887},[460,18449,2756],{"class":466},[460,18451,17750],{"class":887},[460,18453,17815],{"class":466},[460,18455,18456],{"class":942}," \u002F\u002F100  a是大于b的，将100赋值给了a\n",[460,18458,18459,18461,18463,18465,18467,18469],{"class":462,"line":518},[460,18460,17940],{"class":466},[460,18462,17750],{"class":887},[460,18464,17005],{"class":466},[460,18466,17750],{"class":887},[460,18468,17815],{"class":466},[460,18470,18471],{"class":942}," \u002F\u002F10   a>b,b还是原值\n",[103,18473,18474],{"start":482},[43,18475,18476],{},"switch语句\n执行多条件分支语句\n注意：python没有switch语句\nswitch(表达式)\n{\ncase 结果1:执行语句;break;\ncase 结果2:执行语句;break;\ncase 结果3:执行语句;break;\n···\ndefault:执行语句;break;\n}\n不写break就会一直往下执行",[451,18478,18480],{"className":16745,"code":18479,"language":16747,"meta":32,"style":32},"\u002F\u002F案例-电影打分\n#include\u003Ciostream>\nusing namespace std;\nint main()\n{\n    int score=0;\n    cout\u003C\u003C\"电影打分：\"\u003C\u003Cendl;\n    cin>>score;\n    switch(score)\n    {\n        case 10:cout\u003C\u003C\"经典\"\u003C\u003Cendl;break;\n        case 9:cout\u003C\u003C\"经典\"\u003C\u003Cendl;break;\n        case 8:cout\u003C\u003C\"非常好\"\u003C\u003Cendl;break;\n        case 7:cout\u003C\u003C\"非常好\"\u003C\u003Cendl;break;\n        case 6:cout\u003C\u003C\"一般\"\u003C\u003Cendl;break;\n        case 5:cout\u003C\u003C\"一般\"\u003C\u003Cendl;break;\n        default:cout\u003C\u003C\"烂片\"\u003C\u003Cendl;break;\n    }\n}\n",[457,18481,18482,18487,18495,18508,18517,18521,18535,18548,18558,18566,18571,18595,18616,18637,18658,18680,18700,18720,18724],{"__ignoreMap":32},[460,18483,18484],{"class":462,"line":463},[460,18485,18486],{"class":942},"\u002F\u002F案例-电影打分\n",[460,18488,18489,18492],{"class":462,"line":476},[460,18490,18491],{"class":887},"#include",[460,18493,18494],{"class":1353},"\u003Ciostream>\n",[460,18496,18497,18500,18503,18506],{"class":462,"line":482},[460,18498,18499],{"class":887},"using",[460,18501,18502],{"class":887}," namespace",[460,18504,18505],{"class":929}," std",[460,18507,1966],{"class":466},[460,18509,18510,18512,18515],{"class":462,"line":488},[460,18511,16759],{"class":887},[460,18513,18514],{"class":929}," main",[460,18516,10758],{"class":466},[460,18518,18519],{"class":462,"line":494},[460,18520,18115],{"class":466},[460,18522,18523,18526,18529,18531,18533],{"class":462,"line":500},[460,18524,18525],{"class":887},"    int",[460,18527,18528],{"class":466}," score",[460,18530,894],{"class":887},[460,18532,936],{"class":900},[460,18534,1966],{"class":466},[460,18536,18537,18539,18541,18544,18546],{"class":462,"line":506},[460,18538,18120],{"class":466},[460,18540,17750],{"class":887},[460,18542,18543],{"class":1353},"\"电影打分：\"",[460,18545,17750],{"class":887},[460,18547,17772],{"class":466},[460,18549,18550,18553,18555],{"class":462,"line":512},[460,18551,18552],{"class":466},"    cin",[460,18554,17999],{"class":887},[460,18556,18557],{"class":466},"score;\n",[460,18559,18560,18563],{"class":462,"line":518},[460,18561,18562],{"class":887},"    switch",[460,18564,18565],{"class":466},"(score)\n",[460,18567,18568],{"class":462,"line":525},[460,18569,18570],{"class":466},"    {\n",[460,18572,18573,18576,18578,18581,18583,18586,18588,18590,18593],{"class":462,"line":531},[460,18574,18575],{"class":887},"        case",[460,18577,5231],{"class":900},[460,18579,18580],{"class":466},":cout",[460,18582,17750],{"class":887},[460,18584,18585],{"class":1353},"\"经典\"",[460,18587,17750],{"class":887},[460,18589,17815],{"class":466},[460,18591,18592],{"class":887},"break",[460,18594,1966],{"class":466},[460,18596,18597,18599,18602,18604,18606,18608,18610,18612,18614],{"class":462,"line":537},[460,18598,18575],{"class":887},[460,18600,18601],{"class":900}," 9",[460,18603,18580],{"class":466},[460,18605,17750],{"class":887},[460,18607,18585],{"class":1353},[460,18609,17750],{"class":887},[460,18611,17815],{"class":466},[460,18613,18592],{"class":887},[460,18615,1966],{"class":466},[460,18617,18618,18620,18622,18624,18626,18629,18631,18633,18635],{"class":462,"line":543},[460,18619,18575],{"class":887},[460,18621,10359],{"class":900},[460,18623,18580],{"class":466},[460,18625,17750],{"class":887},[460,18627,18628],{"class":1353},"\"非常好\"",[460,18630,17750],{"class":887},[460,18632,17815],{"class":466},[460,18634,18592],{"class":887},[460,18636,1966],{"class":466},[460,18638,18639,18641,18644,18646,18648,18650,18652,18654,18656],{"class":462,"line":549},[460,18640,18575],{"class":887},[460,18642,18643],{"class":900}," 7",[460,18645,18580],{"class":466},[460,18647,17750],{"class":887},[460,18649,18628],{"class":1353},[460,18651,17750],{"class":887},[460,18653,17815],{"class":466},[460,18655,18592],{"class":887},[460,18657,1966],{"class":466},[460,18659,18660,18662,18665,18667,18669,18672,18674,18676,18678],{"class":462,"line":555},[460,18661,18575],{"class":887},[460,18663,18664],{"class":900}," 6",[460,18666,18580],{"class":466},[460,18668,17750],{"class":887},[460,18670,18671],{"class":1353},"\"一般\"",[460,18673,17750],{"class":887},[460,18675,17815],{"class":466},[460,18677,18592],{"class":887},[460,18679,1966],{"class":466},[460,18681,18682,18684,18686,18688,18690,18692,18694,18696,18698],{"class":462,"line":560},[460,18683,18575],{"class":887},[460,18685,2229],{"class":900},[460,18687,18580],{"class":466},[460,18689,17750],{"class":887},[460,18691,18671],{"class":1353},[460,18693,17750],{"class":887},[460,18695,17815],{"class":466},[460,18697,18592],{"class":887},[460,18699,1966],{"class":466},[460,18701,18702,18705,18707,18709,18712,18714,18716,18718],{"class":462,"line":566},[460,18703,18704],{"class":887},"        default",[460,18706,18580],{"class":466},[460,18708,17750],{"class":887},[460,18710,18711],{"class":1353},"\"烂片\"",[460,18713,17750],{"class":887},[460,18715,17815],{"class":466},[460,18717,18592],{"class":887},[460,18719,1966],{"class":466},[460,18721,18722],{"class":462,"line":572},[460,18723,509],{"class":466},[460,18725,18726],{"class":462,"line":578},[460,18727,821],{"class":466},[14,18729,18730],{},"if和switch区别：",[40,18732,18733,18736],{},[43,18734,18735],{},"switch缺点：判断时候只能是整行或者字符型，不可以是一个区间",[43,18737,18738],{},"switch优点：结构清晰，执行效率高",[23,18740,18742],{"id":18741},"_162循环结构","1.6.2循环结构",[103,18744,18745],{},[43,18746,18747],{},"while循环结构\n满足循环条件，执行循环语句\n语法：while(循环条件){循环语句}",[451,18749,18751],{"className":16745,"code":18750,"language":16747,"meta":32,"style":32},"\u002F\u002F打印0-9数字\nint main()\n{\n    int num=0;\n    while(num\u003C10)\n    {\n       std::cout\u003C\u003Cnum\u003C\u003Cstd::endl;\n        num++;\n    }\n    system(\"pause\")\n}\n",[457,18752,18753,18758,18766,18770,18783,18797,18801,18821,18831,18835,18847],{"__ignoreMap":32},[460,18754,18755],{"class":462,"line":463},[460,18756,18757],{"class":942},"\u002F\u002F打印0-9数字\n",[460,18759,18760,18762,18764],{"class":462,"line":476},[460,18761,16759],{"class":887},[460,18763,18514],{"class":929},[460,18765,10758],{"class":466},[460,18767,18768],{"class":462,"line":482},[460,18769,18115],{"class":466},[460,18771,18772,18774,18777,18779,18781],{"class":462,"line":488},[460,18773,18525],{"class":887},[460,18775,18776],{"class":466}," num",[460,18778,894],{"class":887},[460,18780,936],{"class":900},[460,18782,1966],{"class":466},[460,18784,18785,18788,18791,18793,18795],{"class":462,"line":494},[460,18786,18787],{"class":887},"    while",[460,18789,18790],{"class":466},"(num",[460,18792,781],{"class":887},[460,18794,2096],{"class":900},[460,18796,3754],{"class":466},[460,18798,18799],{"class":462,"line":500},[460,18800,18570],{"class":466},[460,18802,18803,18806,18809,18811,18813,18815,18818],{"class":462,"line":506},[460,18804,18805],{"class":929},"       std",[460,18807,18808],{"class":466},"::cout",[460,18810,17750],{"class":887},[460,18812,18224],{"class":466},[460,18814,17750],{"class":887},[460,18816,18817],{"class":929},"std",[460,18819,18820],{"class":466},"::endl;\n",[460,18822,18823,18826,18829],{"class":462,"line":512},[460,18824,18825],{"class":466},"        num",[460,18827,18828],{"class":887},"++",[460,18830,1966],{"class":466},[460,18832,18833],{"class":462,"line":518},[460,18834,509],{"class":466},[460,18836,18837,18840,18842,18845],{"class":462,"line":525},[460,18838,18839],{"class":929},"    system",[460,18841,2174],{"class":466},[460,18843,18844],{"class":1353},"\"pause\"",[460,18846,3754],{"class":466},[460,18848,18849],{"class":462,"line":531},[460,18850,821],{"class":466},[14,18852,18853],{},"注意：写好循环条件，避免死循环情况",[451,18855,18857],{"className":16745,"code":18856,"language":16747,"meta":32,"style":32},"\u002F\u002F循环结构-猜数字\n#include \u003Ciostream>\n#include \u003Cctime>\nusing namespace std;\nint main()\n{\n    \u002F\u002F添加随机数种子，利用当前系统时间生成随机数，防止每次随机数相同\n    srand((unsigned int)time(NULL));\n\n    \u002F\u002F1.系统生成随机数\n    \u002F\u002Frand()%100 \u002F\u002F生成0-99的随机数\n    int num=rand()%100+1; \u002F\u002F这是个伪随机数，每次都不同，要想每次不同就添加随机数种子\n    \u002F\u002Fcout\u003C\u003C\"系统生成了一个1-100之间的随机数，请你来猜：\"\u003C\u003Cendl;\n    \u002F\u002F2.玩家猜测\n    int val=0;\n    while (1)\n    {\n        cin>>val;\n        \u002F\u002F3.判断玩家猜测\n        if(val\u003Cnum) \n        {\n            cout\u003C\u003C\"猜小了！\"\u003C\u003Cendl;\n        }\n        else if (val>num)\n        {\n            cout\u003C\u003C\"猜大了！\"\u003C\u003Cendl;\n        }\n        else\n        {\n            cout\u003C\u003C\"猜对了！\"\u003C\u003Cendl;\n            break;\n        }\n        \u002F\u002F猜对 退出游戏\n        \u002F\u002F猜错 提示猜的结果 过大或者过小 重新返回第二步\n    }\n}\n",[457,18858,18859,18864,18871,18878,18888,18896,18900,18905,18931,18935,18940,18948,18975,18980,18985,18998,19008,19012,19022,19027,19039,19043,19057,19061,19076,19080,19093,19097,19102,19106,19119,19126,19130,19135,19140,19144],{"__ignoreMap":32},[460,18860,18861],{"class":462,"line":463},[460,18862,18863],{"class":942},"\u002F\u002F循环结构-猜数字\n",[460,18865,18866,18868],{"class":462,"line":476},[460,18867,18491],{"class":887},[460,18869,18870],{"class":1353}," \u003Ciostream>\n",[460,18872,18873,18875],{"class":462,"line":482},[460,18874,18491],{"class":887},[460,18876,18877],{"class":1353}," \u003Cctime>\n",[460,18879,18880,18882,18884,18886],{"class":462,"line":488},[460,18881,18499],{"class":887},[460,18883,18502],{"class":887},[460,18885,18505],{"class":929},[460,18887,1966],{"class":466},[460,18889,18890,18892,18894],{"class":462,"line":494},[460,18891,16759],{"class":887},[460,18893,18514],{"class":929},[460,18895,10758],{"class":466},[460,18897,18898],{"class":462,"line":500},[460,18899,18115],{"class":466},[460,18901,18902],{"class":462,"line":506},[460,18903,18904],{"class":942},"    \u002F\u002F添加随机数种子，利用当前系统时间生成随机数，防止每次随机数相同\n",[460,18906,18907,18910,18912,18915,18918,18920,18923,18925,18928],{"class":462,"line":512},[460,18908,18909],{"class":929},"    srand",[460,18911,8477],{"class":466},[460,18913,18914],{"class":887},"unsigned",[460,18916,18917],{"class":887}," int",[460,18919,8411],{"class":466},[460,18921,18922],{"class":929},"time",[460,18924,2174],{"class":466},[460,18926,18927],{"class":900},"NULL",[460,18929,18930],{"class":466},"));\n",[460,18932,18933],{"class":462,"line":518},[460,18934,522],{"emptyLinePlaceholder":521},[460,18936,18937],{"class":462,"line":525},[460,18938,18939],{"class":942},"    \u002F\u002F1.系统生成随机数\n",[460,18941,18942,18945],{"class":462,"line":531},[460,18943,18944],{"class":942},"    \u002F\u002Frand()%100",[460,18946,18947],{"class":942}," \u002F\u002F生成0-99的随机数\n",[460,18949,18950,18952,18954,18956,18959,18962,18964,18966,18968,18970,18972],{"class":462,"line":537},[460,18951,18525],{"class":887},[460,18953,18776],{"class":466},[460,18955,894],{"class":887},[460,18957,18958],{"class":929},"rand",[460,18960,18961],{"class":466},"()",[460,18963,2328],{"class":887},[460,18965,2325],{"class":900},[460,18967,8495],{"class":887},[460,18969,901],{"class":900},[460,18971,16807],{"class":466},[460,18973,18974],{"class":942}," \u002F\u002F这是个伪随机数，每次都不同，要想每次不同就添加随机数种子\n",[460,18976,18977],{"class":462,"line":543},[460,18978,18979],{"class":942},"    \u002F\u002Fcout\u003C\u003C\"系统生成了一个1-100之间的随机数，请你来猜：\"\u003C\u003Cendl;\n",[460,18981,18982],{"class":462,"line":549},[460,18983,18984],{"class":942},"    \u002F\u002F2.玩家猜测\n",[460,18986,18987,18989,18992,18994,18996],{"class":462,"line":555},[460,18988,18525],{"class":887},[460,18990,18991],{"class":466}," val",[460,18993,894],{"class":887},[460,18995,936],{"class":900},[460,18997,1966],{"class":466},[460,18999,19000,19002,19004,19006],{"class":462,"line":560},[460,19001,18787],{"class":887},[460,19003,11704],{"class":466},[460,19005,901],{"class":900},[460,19007,3754],{"class":466},[460,19009,19010],{"class":462,"line":566},[460,19011,18570],{"class":466},[460,19013,19014,19017,19019],{"class":462,"line":572},[460,19015,19016],{"class":466},"        cin",[460,19018,17999],{"class":887},[460,19020,19021],{"class":466},"val;\n",[460,19023,19024],{"class":462,"line":578},[460,19025,19026],{"class":942},"        \u002F\u002F3.判断玩家猜测\n",[460,19028,19029,19031,19034,19036],{"class":462,"line":812},[460,19030,3702],{"class":887},[460,19032,19033],{"class":466},"(val",[460,19035,781],{"class":887},[460,19037,19038],{"class":466},"num) \n",[460,19040,19041],{"class":462,"line":818},[460,19042,1390],{"class":466},[460,19044,19045,19048,19050,19053,19055],{"class":462,"line":824},[460,19046,19047],{"class":466},"            cout",[460,19049,17750],{"class":887},[460,19051,19052],{"class":1353},"\"猜小了！\"",[460,19054,17750],{"class":887},[460,19056,17772],{"class":466},[460,19058,19059],{"class":462,"line":2074},[460,19060,3858],{"class":466},[460,19062,19063,19066,19068,19071,19073],{"class":462,"line":2088},[460,19064,19065],{"class":887},"        else",[460,19067,3766],{"class":887},[460,19069,19070],{"class":466}," (val",[460,19072,17668],{"class":887},[460,19074,19075],{"class":466},"num)\n",[460,19077,19078],{"class":462,"line":2103},[460,19079,1390],{"class":466},[460,19081,19082,19084,19086,19089,19091],{"class":462,"line":2122},[460,19083,19047],{"class":466},[460,19085,17750],{"class":887},[460,19087,19088],{"class":1353},"\"猜大了！\"",[460,19090,17750],{"class":887},[460,19092,17772],{"class":466},[460,19094,19095],{"class":462,"line":2144},[460,19096,3858],{"class":466},[460,19098,19099],{"class":462,"line":2158},[460,19100,19101],{"class":887},"        else\n",[460,19103,19104],{"class":462,"line":2163},[460,19105,1390],{"class":466},[460,19107,19108,19110,19112,19115,19117],{"class":462,"line":2168},[460,19109,19047],{"class":466},[460,19111,17750],{"class":887},[460,19113,19114],{"class":1353},"\"猜对了！\"",[460,19116,17750],{"class":887},[460,19118,17772],{"class":466},[460,19120,19121,19124],{"class":462,"line":2183},[460,19122,19123],{"class":887},"            break",[460,19125,1966],{"class":466},[460,19127,19128],{"class":462,"line":2194},[460,19129,3858],{"class":466},[460,19131,19132],{"class":462,"line":2199},[460,19133,19134],{"class":942},"        \u002F\u002F猜对 退出游戏\n",[460,19136,19137],{"class":462,"line":2204},[460,19138,19139],{"class":942},"        \u002F\u002F猜错 提示猜的结果 过大或者过小 重新返回第二步\n",[460,19141,19142],{"class":462,"line":2212},[460,19143,509],{"class":466},[460,19145,19146],{"class":462,"line":2257},[460,19147,821],{"class":466},[103,19149,19150],{"start":476},[43,19151,19152,19153,19156],{},"do...while循环结构\n语法： do{循环语句}while(循环条件)；\n与while的区别在于",[3944,19154,19155],{},"do...while会先执行一次循环语句","，在判断循环语句",[451,19158,19160],{"className":16745,"code":19159,"language":16747,"meta":32,"style":32},"\u002F\u002F在屏幕中输出0-9这10个数字\nint main()\n{\n    int num=0;\n    do \n    {\n        std::cout\u003C\u003Cnum\u003C\u003Cstd::endl;\n        num++\n    }\n    while(num\u003C10);\n    system(\"pause\");\n}\n",[457,19161,19162,19167,19175,19179,19191,19199,19203,19220,19226,19230,19242,19252],{"__ignoreMap":32},[460,19163,19164],{"class":462,"line":463},[460,19165,19166],{"class":942},"\u002F\u002F在屏幕中输出0-9这10个数字\n",[460,19168,19169,19171,19173],{"class":462,"line":476},[460,19170,16759],{"class":887},[460,19172,18514],{"class":929},[460,19174,10758],{"class":466},[460,19176,19177],{"class":462,"line":482},[460,19178,18115],{"class":466},[460,19180,19181,19183,19185,19187,19189],{"class":462,"line":488},[460,19182,18525],{"class":887},[460,19184,18776],{"class":466},[460,19186,894],{"class":887},[460,19188,936],{"class":900},[460,19190,1966],{"class":466},[460,19192,19193,19196],{"class":462,"line":494},[460,19194,19195],{"class":887},"    do",[460,19197,19198],{"class":466}," \n",[460,19200,19201],{"class":462,"line":500},[460,19202,18570],{"class":466},[460,19204,19205,19208,19210,19212,19214,19216,19218],{"class":462,"line":506},[460,19206,19207],{"class":929},"        std",[460,19209,18808],{"class":466},[460,19211,17750],{"class":887},[460,19213,18224],{"class":466},[460,19215,17750],{"class":887},[460,19217,18817],{"class":929},[460,19219,18820],{"class":466},[460,19221,19222,19224],{"class":462,"line":512},[460,19223,18825],{"class":466},[460,19225,14017],{"class":887},[460,19227,19228],{"class":462,"line":518},[460,19229,509],{"class":466},[460,19231,19232,19234,19236,19238,19240],{"class":462,"line":525},[460,19233,18787],{"class":887},[460,19235,18790],{"class":466},[460,19237,781],{"class":887},[460,19239,2096],{"class":900},[460,19241,2254],{"class":466},[460,19243,19244,19246,19248,19250],{"class":462,"line":531},[460,19245,18839],{"class":929},[460,19247,2174],{"class":466},[460,19249,18844],{"class":1353},[460,19251,2254],{"class":466},[460,19253,19254],{"class":462,"line":537},[460,19255,821],{"class":466},[14,19257,19258],{},"案例-水仙花数",[14,19260,19261],{},"描述：水仙花数是指一个3位数，它的每个位上的数字的3次幂之和等于它本身",[14,19263,19264],{},"例如：1^3+5^3+3^3=153",[14,19266,19267],{},"请用do...while语句，求出所有3位数的水仙花数",[451,19269,19271],{"className":16745,"code":19270,"language":16747,"meta":32,"style":32},"#include \u003Ciostream>\nusing namespace std;\nint main()\n{\n    \u002F\u002F1.先打印所有三位数字\n    int num=100;\n    do \n    {\n        \u002F\u002F2.从所有三位数字中找到水仙花数\n        int a=0; \u002F\u002F个位\n        int b=0; \u002F\u002F十位\n        int c=0; \u002F\u002F百位\n        a=num%10;\n        b=num\u002F10%10;\n        c=num\u002F100;\n        if(a*a*a+b*b*b+c*c*c == num) \u002F\u002F如果是水仙花数，才打印\n        {\n            cout\u003C\u003Cnum\u003C\u003Cendl;\n        }\n        num++;\n    }\n    while (num \u003C 1000);\n}\n",[457,19272,19273,19279,19289,19297,19301,19306,19318,19324,19328,19333,19349,19365,19381,19396,19415,19430,19478,19482,19494,19498,19506,19510,19524],{"__ignoreMap":32},[460,19274,19275,19277],{"class":462,"line":463},[460,19276,18491],{"class":887},[460,19278,18870],{"class":1353},[460,19280,19281,19283,19285,19287],{"class":462,"line":476},[460,19282,18499],{"class":887},[460,19284,18502],{"class":887},[460,19286,18505],{"class":929},[460,19288,1966],{"class":466},[460,19290,19291,19293,19295],{"class":462,"line":482},[460,19292,16759],{"class":887},[460,19294,18514],{"class":929},[460,19296,10758],{"class":466},[460,19298,19299],{"class":462,"line":488},[460,19300,18115],{"class":466},[460,19302,19303],{"class":462,"line":494},[460,19304,19305],{"class":942},"    \u002F\u002F1.先打印所有三位数字\n",[460,19307,19308,19310,19312,19314,19316],{"class":462,"line":500},[460,19309,18525],{"class":887},[460,19311,18776],{"class":466},[460,19313,894],{"class":887},[460,19315,2325],{"class":900},[460,19317,1966],{"class":466},[460,19319,19320,19322],{"class":462,"line":506},[460,19321,19195],{"class":887},[460,19323,19198],{"class":466},[460,19325,19326],{"class":462,"line":512},[460,19327,18570],{"class":466},[460,19329,19330],{"class":462,"line":518},[460,19331,19332],{"class":942},"        \u002F\u002F2.从所有三位数字中找到水仙花数\n",[460,19334,19335,19338,19340,19342,19344,19346],{"class":462,"line":525},[460,19336,19337],{"class":887},"        int",[460,19339,2574],{"class":466},[460,19341,894],{"class":887},[460,19343,936],{"class":900},[460,19345,16807],{"class":466},[460,19347,19348],{"class":942}," \u002F\u002F个位\n",[460,19350,19351,19353,19356,19358,19360,19362],{"class":462,"line":531},[460,19352,19337],{"class":887},[460,19354,19355],{"class":466}," b",[460,19357,894],{"class":887},[460,19359,936],{"class":900},[460,19361,16807],{"class":466},[460,19363,19364],{"class":942}," \u002F\u002F十位\n",[460,19366,19367,19369,19372,19374,19376,19378],{"class":462,"line":537},[460,19368,19337],{"class":887},[460,19370,19371],{"class":466}," c",[460,19373,894],{"class":887},[460,19375,936],{"class":900},[460,19377,16807],{"class":466},[460,19379,19380],{"class":942}," \u002F\u002F百位\n",[460,19382,19383,19386,19388,19390,19392,19394],{"class":462,"line":543},[460,19384,19385],{"class":466},"        a",[460,19387,894],{"class":887},[460,19389,18224],{"class":466},[460,19391,2328],{"class":887},[460,19393,2096],{"class":900},[460,19395,1966],{"class":466},[460,19397,19398,19401,19403,19405,19407,19409,19411,19413],{"class":462,"line":549},[460,19399,19400],{"class":466},"        b",[460,19402,894],{"class":887},[460,19404,18224],{"class":466},[460,19406,8331],{"class":887},[460,19408,2096],{"class":900},[460,19410,2328],{"class":887},[460,19412,2096],{"class":900},[460,19414,1966],{"class":466},[460,19416,19417,19420,19422,19424,19426,19428],{"class":462,"line":555},[460,19418,19419],{"class":466},"        c",[460,19421,894],{"class":887},[460,19423,18224],{"class":466},[460,19425,8331],{"class":887},[460,19427,2325],{"class":900},[460,19429,1966],{"class":466},[460,19431,19432,19434,19436,19438,19440,19442,19444,19446,19448,19450,19452,19454,19456,19458,19460,19462,19464,19466,19469,19472,19475],{"class":462,"line":560},[460,19433,3702],{"class":887},[460,19435,18383],{"class":466},[460,19437,8320],{"class":887},[460,19439,2756],{"class":466},[460,19441,8320],{"class":887},[460,19443,2756],{"class":466},[460,19445,8495],{"class":887},[460,19447,17005],{"class":466},[460,19449,8320],{"class":887},[460,19451,17005],{"class":466},[460,19453,8320],{"class":887},[460,19455,17005],{"class":466},[460,19457,8495],{"class":887},[460,19459,17030],{"class":466},[460,19461,8320],{"class":887},[460,19463,17030],{"class":466},[460,19465,8320],{"class":887},[460,19467,19468],{"class":466},"c ",[460,19470,19471],{"class":887},"==",[460,19473,19474],{"class":466}," num)",[460,19476,19477],{"class":942}," \u002F\u002F如果是水仙花数，才打印\n",[460,19479,19480],{"class":462,"line":566},[460,19481,1390],{"class":466},[460,19483,19484,19486,19488,19490,19492],{"class":462,"line":572},[460,19485,19047],{"class":466},[460,19487,17750],{"class":887},[460,19489,18224],{"class":466},[460,19491,17750],{"class":887},[460,19493,17772],{"class":466},[460,19495,19496],{"class":462,"line":578},[460,19497,3858],{"class":466},[460,19499,19500,19502,19504],{"class":462,"line":812},[460,19501,18825],{"class":466},[460,19503,18828],{"class":887},[460,19505,1966],{"class":466},[460,19507,19508],{"class":462,"line":818},[460,19509,509],{"class":466},[460,19511,19512,19514,19517,19519,19522],{"class":462,"line":824},[460,19513,18787],{"class":887},[460,19515,19516],{"class":466}," (num ",[460,19518,781],{"class":887},[460,19520,19521],{"class":900}," 1000",[460,19523,2254],{"class":466},[460,19525,19526],{"class":462,"line":2074},[460,19527,821],{"class":466},[103,19529,19530],{"start":482},[43,19531,19532],{},"for循环语句\n语法：for(起始表达式；条件表达式；末尾循环体){循环语句;}",[451,19534,19536],{"className":16745,"code":19535,"language":16747,"meta":32,"style":32},"\u002F\u002F从数字0-9打印\nfor(int i=0;i\u003C10;i++)\n{\n    cout\u003C\u003Ci\u003C\u003Cendl;\n}\n\u002F\u002F上式可以进行拆分\nint i=0\nfor(;;;)\n{\n    if(i>=10)\n    {\n        break;\n    }\n    cout\u003C\u003Ci\u003C\u003Cendl;\n    i++;\n}\n",[457,19537,19538,19543,19571,19575,19587,19591,19596,19607,19614,19618,19632,19636,19643,19647,19659,19668],{"__ignoreMap":32},[460,19539,19540],{"class":462,"line":463},[460,19541,19542],{"class":942},"\u002F\u002F从数字0-9打印\n",[460,19544,19545,19548,19550,19552,19554,19556,19558,19561,19563,19565,19567,19569],{"class":462,"line":476},[460,19546,19547],{"class":887},"for",[460,19549,2174],{"class":466},[460,19551,16759],{"class":887},[460,19553,10169],{"class":466},[460,19555,894],{"class":887},[460,19557,936],{"class":900},[460,19559,19560],{"class":466},";i",[460,19562,781],{"class":887},[460,19564,2096],{"class":900},[460,19566,19560],{"class":466},[460,19568,18828],{"class":887},[460,19570,3754],{"class":466},[460,19572,19573],{"class":462,"line":482},[460,19574,18115],{"class":466},[460,19576,19577,19579,19581,19583,19585],{"class":462,"line":488},[460,19578,18120],{"class":466},[460,19580,17750],{"class":887},[460,19582,17174],{"class":466},[460,19584,17750],{"class":887},[460,19586,17772],{"class":466},[460,19588,19589],{"class":462,"line":494},[460,19590,821],{"class":466},[460,19592,19593],{"class":462,"line":500},[460,19594,19595],{"class":942},"\u002F\u002F上式可以进行拆分\n",[460,19597,19598,19600,19602,19604],{"class":462,"line":506},[460,19599,16759],{"class":887},[460,19601,10169],{"class":466},[460,19603,894],{"class":887},[460,19605,19606],{"class":900},"0\n",[460,19608,19609,19611],{"class":462,"line":512},[460,19610,19547],{"class":887},[460,19612,19613],{"class":466},"(;;;)\n",[460,19615,19616],{"class":462,"line":518},[460,19617,18115],{"class":466},[460,19619,19620,19623,19626,19628,19630],{"class":462,"line":525},[460,19621,19622],{"class":887},"    if",[460,19624,19625],{"class":466},"(i",[460,19627,3738],{"class":887},[460,19629,2096],{"class":900},[460,19631,3754],{"class":466},[460,19633,19634],{"class":462,"line":531},[460,19635,18570],{"class":466},[460,19637,19638,19641],{"class":462,"line":537},[460,19639,19640],{"class":887},"        break",[460,19642,1966],{"class":466},[460,19644,19645],{"class":462,"line":543},[460,19646,509],{"class":466},[460,19648,19649,19651,19653,19655,19657],{"class":462,"line":549},[460,19650,18120],{"class":466},[460,19652,17750],{"class":887},[460,19654,17174],{"class":466},[460,19656,17750],{"class":887},[460,19658,17772],{"class":466},[460,19660,19661,19664,19666],{"class":462,"line":555},[460,19662,19663],{"class":466},"    i",[460,19665,18828],{"class":887},[460,19667,1966],{"class":466},[460,19669,19670],{"class":462,"line":560},[460,19671,821],{"class":466},[14,19673,19674],{},"小练习",[451,19676,19678],{"className":16745,"code":19677,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nint main()\n{\n    \u002F\u002F敲桌子案例\n    \u002F\u002F1.先输出1-100的数字\n    for(int i=1; i\u003C=100; i++)\n    {\n        \u002F\u002F2.从100个数字中找到特殊数字，打印敲桌子\n        \u002F\u002F如果是7的倍数、个为有7、或者十位有7,打印敲桌子\n        if(i%7==0 || i%10==7 || i\u002F10==7)\n        {\n            cout\u003C\u003C\"敲桌子\"\u003C\u003Cendl;\n        }\n        else\n        {\n            cout\u003C\u003Ci\u003C\u003Cendl;\n        }\n    }\n}\n",[457,19679,19680,19686,19696,19704,19708,19713,19718,19746,19750,19755,19760,19801,19805,19818,19822,19826,19830,19842,19846,19850],{"__ignoreMap":32},[460,19681,19682,19684],{"class":462,"line":463},[460,19683,18491],{"class":887},[460,19685,18494],{"class":1353},[460,19687,19688,19690,19692,19694],{"class":462,"line":476},[460,19689,18499],{"class":887},[460,19691,18502],{"class":887},[460,19693,18505],{"class":929},[460,19695,1966],{"class":466},[460,19697,19698,19700,19702],{"class":462,"line":482},[460,19699,16759],{"class":887},[460,19701,18514],{"class":929},[460,19703,10758],{"class":466},[460,19705,19706],{"class":462,"line":488},[460,19707,18115],{"class":466},[460,19709,19710],{"class":462,"line":494},[460,19711,19712],{"class":942},"    \u002F\u002F敲桌子案例\n",[460,19714,19715],{"class":462,"line":500},[460,19716,19717],{"class":942},"    \u002F\u002F1.先输出1-100的数字\n",[460,19719,19720,19723,19725,19727,19729,19731,19733,19736,19738,19740,19742,19744],{"class":462,"line":506},[460,19721,19722],{"class":887},"    for",[460,19724,2174],{"class":466},[460,19726,16759],{"class":887},[460,19728,10169],{"class":466},[460,19730,894],{"class":887},[460,19732,901],{"class":900},[460,19734,19735],{"class":466},"; i",[460,19737,3748],{"class":887},[460,19739,2325],{"class":900},[460,19741,19735],{"class":466},[460,19743,18828],{"class":887},[460,19745,3754],{"class":466},[460,19747,19748],{"class":462,"line":512},[460,19749,18570],{"class":466},[460,19751,19752],{"class":462,"line":518},[460,19753,19754],{"class":942},"        \u002F\u002F2.从100个数字中找到特殊数字，打印敲桌子\n",[460,19756,19757],{"class":462,"line":525},[460,19758,19759],{"class":942},"        \u002F\u002F如果是7的倍数、个为有7、或者十位有7,打印敲桌子\n",[460,19761,19762,19764,19766,19768,19770,19772,19774,19777,19779,19781,19783,19785,19787,19789,19791,19793,19795,19797,19799],{"class":462,"line":531},[460,19763,3702],{"class":887},[460,19765,19625],{"class":466},[460,19767,2328],{"class":887},[460,19769,6149],{"class":900},[460,19771,19471],{"class":887},[460,19773,936],{"class":900},[460,19775,19776],{"class":887}," ||",[460,19778,10169],{"class":466},[460,19780,2328],{"class":887},[460,19782,2096],{"class":900},[460,19784,19471],{"class":887},[460,19786,6149],{"class":900},[460,19788,19776],{"class":887},[460,19790,10169],{"class":466},[460,19792,8331],{"class":887},[460,19794,2096],{"class":900},[460,19796,19471],{"class":887},[460,19798,6149],{"class":900},[460,19800,3754],{"class":466},[460,19802,19803],{"class":462,"line":537},[460,19804,1390],{"class":466},[460,19806,19807,19809,19811,19814,19816],{"class":462,"line":543},[460,19808,19047],{"class":466},[460,19810,17750],{"class":887},[460,19812,19813],{"class":1353},"\"敲桌子\"",[460,19815,17750],{"class":887},[460,19817,17772],{"class":466},[460,19819,19820],{"class":462,"line":549},[460,19821,3858],{"class":466},[460,19823,19824],{"class":462,"line":555},[460,19825,19101],{"class":887},[460,19827,19828],{"class":462,"line":560},[460,19829,1390],{"class":466},[460,19831,19832,19834,19836,19838,19840],{"class":462,"line":566},[460,19833,19047],{"class":466},[460,19835,17750],{"class":887},[460,19837,17174],{"class":466},[460,19839,17750],{"class":887},[460,19841,17772],{"class":466},[460,19843,19844],{"class":462,"line":572},[460,19845,3858],{"class":466},[460,19847,19848],{"class":462,"line":578},[460,19849,509],{"class":466},[460,19851,19852],{"class":462,"line":812},[460,19853,821],{"class":466},[14,19855,19856],{},"嵌套实现星图",[451,19858,19860],{"className":16745,"code":19859,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nint main()\n{\n    for (int i=0;i\u003C10;i++)\n    {\n        for (int j=0;j\u003C10;j++)\n        {\n            cout\u003C\u003C\"*\";\n        }\n        cout\u003C\u003Cendl;\n    }\n}\n",[457,19861,19862,19868,19878,19886,19890,19916,19920,19949,19953,19964,19968,19977,19981],{"__ignoreMap":32},[460,19863,19864,19866],{"class":462,"line":463},[460,19865,18491],{"class":887},[460,19867,18494],{"class":1353},[460,19869,19870,19872,19874,19876],{"class":462,"line":476},[460,19871,18499],{"class":887},[460,19873,18502],{"class":887},[460,19875,18505],{"class":929},[460,19877,1966],{"class":466},[460,19879,19880,19882,19884],{"class":462,"line":482},[460,19881,16759],{"class":887},[460,19883,18514],{"class":929},[460,19885,10758],{"class":466},[460,19887,19888],{"class":462,"line":488},[460,19889,18115],{"class":466},[460,19891,19892,19894,19896,19898,19900,19902,19904,19906,19908,19910,19912,19914],{"class":462,"line":494},[460,19893,19722],{"class":887},[460,19895,11704],{"class":466},[460,19897,16759],{"class":887},[460,19899,10169],{"class":466},[460,19901,894],{"class":887},[460,19903,936],{"class":900},[460,19905,19560],{"class":466},[460,19907,781],{"class":887},[460,19909,2096],{"class":900},[460,19911,19560],{"class":466},[460,19913,18828],{"class":887},[460,19915,3754],{"class":466},[460,19917,19918],{"class":462,"line":500},[460,19919,18570],{"class":466},[460,19921,19922,19925,19927,19929,19932,19934,19936,19939,19941,19943,19945,19947],{"class":462,"line":506},[460,19923,19924],{"class":887},"        for",[460,19926,11704],{"class":466},[460,19928,16759],{"class":887},[460,19930,19931],{"class":466}," j",[460,19933,894],{"class":887},[460,19935,936],{"class":900},[460,19937,19938],{"class":466},";j",[460,19940,781],{"class":887},[460,19942,2096],{"class":900},[460,19944,19938],{"class":466},[460,19946,18828],{"class":887},[460,19948,3754],{"class":466},[460,19950,19951],{"class":462,"line":512},[460,19952,1390],{"class":466},[460,19954,19955,19957,19959,19962],{"class":462,"line":518},[460,19956,19047],{"class":466},[460,19958,17750],{"class":887},[460,19960,19961],{"class":1353},"\"*\"",[460,19963,1966],{"class":466},[460,19965,19966],{"class":462,"line":525},[460,19967,3858],{"class":466},[460,19969,19970,19973,19975],{"class":462,"line":531},[460,19971,19972],{"class":466},"        cout",[460,19974,17750],{"class":887},[460,19976,17772],{"class":466},[460,19978,19979],{"class":462,"line":537},[460,19980,509],{"class":466},[460,19982,19983],{"class":462,"line":543},[460,19984,821],{"class":466},[14,19986,19987],{},"乘法口诀表",[451,19989,19991],{"className":16745,"code":19990,"language":16747,"meta":32,"style":32},"#include \u003Ciostream>\nusing namespace std;\nint main()\n{\n    for(int i=1;i\u003C10;i++)\n    {\n        for(int j=1;j\u003C=i;j++)\n        {\n            cout\u003C\u003Cj\u003C\u003C\"*\"\u003C\u003Ci\u003C\u003C\"=\"\u003C\u003Ci*j\u003C\u003C'\\t';\n        }\n        cout\u003C\u003Cendl;\n    }\n} \n",[457,19992,19993,19999,20009,20017,20021,20047,20051,20076,20080,20120,20124,20132,20136],{"__ignoreMap":32},[460,19994,19995,19997],{"class":462,"line":463},[460,19996,18491],{"class":887},[460,19998,18870],{"class":1353},[460,20000,20001,20003,20005,20007],{"class":462,"line":476},[460,20002,18499],{"class":887},[460,20004,18502],{"class":887},[460,20006,18505],{"class":929},[460,20008,1966],{"class":466},[460,20010,20011,20013,20015],{"class":462,"line":482},[460,20012,16759],{"class":887},[460,20014,18514],{"class":929},[460,20016,10758],{"class":466},[460,20018,20019],{"class":462,"line":488},[460,20020,18115],{"class":466},[460,20022,20023,20025,20027,20029,20031,20033,20035,20037,20039,20041,20043,20045],{"class":462,"line":494},[460,20024,19722],{"class":887},[460,20026,2174],{"class":466},[460,20028,16759],{"class":887},[460,20030,10169],{"class":466},[460,20032,894],{"class":887},[460,20034,901],{"class":900},[460,20036,19560],{"class":466},[460,20038,781],{"class":887},[460,20040,2096],{"class":900},[460,20042,19560],{"class":466},[460,20044,18828],{"class":887},[460,20046,3754],{"class":466},[460,20048,20049],{"class":462,"line":500},[460,20050,18570],{"class":466},[460,20052,20053,20055,20057,20059,20061,20063,20065,20067,20069,20072,20074],{"class":462,"line":506},[460,20054,19924],{"class":887},[460,20056,2174],{"class":466},[460,20058,16759],{"class":887},[460,20060,19931],{"class":466},[460,20062,894],{"class":887},[460,20064,901],{"class":900},[460,20066,19938],{"class":466},[460,20068,3748],{"class":887},[460,20070,20071],{"class":466},"i;j",[460,20073,18828],{"class":887},[460,20075,3754],{"class":466},[460,20077,20078],{"class":462,"line":512},[460,20079,1390],{"class":466},[460,20081,20082,20084,20086,20088,20090,20092,20094,20096,20098,20101,20103,20105,20107,20109,20111,20114,20116,20118],{"class":462,"line":518},[460,20083,19047],{"class":466},[460,20085,17750],{"class":887},[460,20087,17198],{"class":466},[460,20089,17750],{"class":887},[460,20091,19961],{"class":1353},[460,20093,17750],{"class":887},[460,20095,17174],{"class":466},[460,20097,17750],{"class":887},[460,20099,20100],{"class":1353},"\"=\"",[460,20102,17750],{"class":887},[460,20104,17174],{"class":466},[460,20106,8320],{"class":887},[460,20108,17198],{"class":466},[460,20110,17750],{"class":887},[460,20112,20113],{"class":1353},"'",[460,20115,17807],{"class":900},[460,20117,20113],{"class":1353},[460,20119,1966],{"class":466},[460,20121,20122],{"class":462,"line":525},[460,20123,3858],{"class":466},[460,20125,20126,20128,20130],{"class":462,"line":531},[460,20127,19972],{"class":466},[460,20129,17750],{"class":887},[460,20131,17772],{"class":466},[460,20133,20134],{"class":462,"line":537},[460,20135,509],{"class":466},[460,20137,20138],{"class":462,"line":543},[460,20139,821],{"class":466},[23,20141,20143],{"id":20142},"_163跳出语句","1.6.3跳出语句",[103,20145,20146],{},[43,20147,20148],{},"break语句\n作用：用于跳出选择结构或者循环结构",[14,20150,20151],{},"break使用时机：",[40,20153,20154,20157,20160],{},[43,20155,20156],{},"出现在switch条件语句中，作用是终止case并跳出switch",[43,20158,20159],{},"出现在循环结构中，作用是跳出当前的循环结构",[43,20161,20162],{},"出现在嵌套循环中，跳出最近的内层循环语句",[103,20164,20165,20168],{"start":476},[43,20166,20167],{},"continue语句\n作用：在循环语句中，跳过本次循环中余下尚未执行的语句，继续执行下一次循环",[43,20169,20170],{},"goto语句\n语法：goto 标记;",[14,20172,20173],{},"解释：如果标记的名称存在，执行到goto语句时，会跳转到标记的位置（类似于html中的a标签）",[451,20175,20177],{"className":16745,"code":20176,"language":16747,"meta":32,"style":32},"int main()\n{\n    cout\u003C\u003C\"1\"\u003C\u003Cendl;\n    goto FLAG;\n    cout\u003C\u003C\"2\"\u003C\u003Cendl;\n    cout\u003C\u003C\"3\"\u003C\u003Cendl;\n    cout\u003C\u003C\"4\"\u003C\u003Cendl;\n    FLAG:\n    cout\u003C\u003C\"5\"\u003C\u003Cendl;\u002F\u002F跳过了2,3,4,直接到5\n}\n",[457,20178,20179,20187,20191,20203,20213,20225,20237,20250,20258,20274],{"__ignoreMap":32},[460,20180,20181,20183,20185],{"class":462,"line":463},[460,20182,16759],{"class":887},[460,20184,18514],{"class":929},[460,20186,10758],{"class":466},[460,20188,20189],{"class":462,"line":476},[460,20190,18115],{"class":466},[460,20192,20193,20195,20197,20199,20201],{"class":462,"line":482},[460,20194,18120],{"class":466},[460,20196,17750],{"class":887},[460,20198,2772],{"class":1353},[460,20200,17750],{"class":887},[460,20202,17772],{"class":466},[460,20204,20205,20208,20211],{"class":462,"line":488},[460,20206,20207],{"class":887},"    goto",[460,20209,20210],{"class":929}," FLAG",[460,20212,1966],{"class":466},[460,20214,20215,20217,20219,20221,20223],{"class":462,"line":494},[460,20216,18120],{"class":466},[460,20218,17750],{"class":887},[460,20220,2799],{"class":1353},[460,20222,17750],{"class":887},[460,20224,17772],{"class":466},[460,20226,20227,20229,20231,20233,20235],{"class":462,"line":500},[460,20228,18120],{"class":466},[460,20230,17750],{"class":887},[460,20232,2826],{"class":1353},[460,20234,17750],{"class":887},[460,20236,17772],{"class":466},[460,20238,20239,20241,20243,20246,20248],{"class":462,"line":506},[460,20240,18120],{"class":466},[460,20242,17750],{"class":887},[460,20244,20245],{"class":1353},"\"4\"",[460,20247,17750],{"class":887},[460,20249,17772],{"class":466},[460,20251,20252,20255],{"class":462,"line":512},[460,20253,20254],{"class":929},"    FLAG",[460,20256,20257],{"class":466},":\n",[460,20259,20260,20262,20264,20267,20269,20271],{"class":462,"line":518},[460,20261,18120],{"class":466},[460,20263,17750],{"class":887},[460,20265,20266],{"class":1353},"\"5\"",[460,20268,17750],{"class":887},[460,20270,17815],{"class":466},[460,20272,20273],{"class":942},"\u002F\u002F跳过了2,3,4,直接到5\n",[460,20275,20276],{"class":462,"line":525},[460,20277,821],{"class":466},[18,20279,20281],{"id":20280},"_17数组","1.7数组",[23,20283,20285],{"id":20284},"_171一维数组","1.7.1一维数组",[103,20287,20288],{},[43,20289,20290],{},"一维数组定义方式",[16884,20292,20293,20303],{},[16887,20294,20295],{},[16890,20296,20297,20300],{},[16893,20298,20299],{},"方式",[16893,20301,20302],{},"注意事项",[16930,20304,20305,20319,20329],{},[16890,20306,20307,20313],{},[16935,20308,20309,20310,16807],{},"数据类型 数组名",[460,20311,20312],{},"数组长度",[16935,20314,20315,20316,20318],{},"这种方式是先定义再arr",[460,20317,17174],{},"赋值",[16890,20320,20321,20326],{},[16935,20322,20309,20323,20325],{},[460,20324,20312],{},"={值1,值2....};",[16935,20327,20328],{},"如果在初始化数据时，没有全部填写完，会用0来填补剩余数据",[16890,20330,20331,20335],{},[16935,20332,20309,20333,20325],{},[460,20334],{},[16935,20336,20337,20338,20340],{},"int arr",[460,20339],{},";这是不正确的，按照这样的方式定义必须有初始长度",[103,20342,20343],{"start":476},[43,20344,20345],{},"一维数组数组名\n用途：",[40,20347,20348],{},[43,20349,20350],{},"1.可以统计整个数组在内存中的长度：",[451,20352,20354],{"className":16745,"code":20353,"language":16747,"meta":32,"style":32},"sizeof(arr);\nsizeof(arr[0]);\n",[457,20355,20356,20363],{"__ignoreMap":32},[460,20357,20358,20360],{"class":462,"line":463},[460,20359,16754],{"class":887},[460,20361,20362],{"class":466},"(arr);\n",[460,20364,20365,20367,20369,20371],{"class":462,"line":476},[460,20366,16754],{"class":887},[460,20368,933],{"class":466},[460,20370,936],{"class":900},[460,20372,20373],{"class":466},"]);\n",[40,20375,20376],{},[43,20377,20378],{},"2.可以获取数组在内存中的首地址:",[451,20380,20382],{"className":16745,"code":20381,"language":16747,"meta":32,"style":32},"\u002F\u002F查看16进制的首地址\ncout\u003C\u003Carr\u003C\u003Cendl;\n\u002F\u002F看10进制数\ncout\u003C\u003C(int)&arr[0]\u003C\u003Cendl;\n",[457,20383,20384,20389,20401,20406],{"__ignoreMap":32},[460,20385,20386],{"class":462,"line":463},[460,20387,20388],{"class":942},"\u002F\u002F查看16进制的首地址\n",[460,20390,20391,20393,20395,20397,20399],{"class":462,"line":476},[460,20392,17940],{"class":466},[460,20394,17750],{"class":887},[460,20396,3381],{"class":466},[460,20398,17750],{"class":887},[460,20400,17772],{"class":466},[460,20402,20403],{"class":462,"line":482},[460,20404,20405],{"class":942},"\u002F\u002F看10进制数\n",[460,20407,20408,20410,20412,20414,20416,20418,20420,20423,20425,20427,20429],{"class":462,"line":488},[460,20409,17940],{"class":466},[460,20411,17750],{"class":887},[460,20413,2174],{"class":466},[460,20415,16759],{"class":887},[460,20417,8411],{"class":466},[460,20419,17090],{"class":887},[460,20421,20422],{"class":466},"arr[",[460,20424,936],{"class":900},[460,20426,17649],{"class":466},[460,20428,17750],{"class":887},[460,20430,17772],{"class":466},[14,20432,20433],{},"数组名是常量，不可以进行赋值操作\n3. 小案例",[40,20435,20436],{},[43,20437,20438],{},"1️⃣五只小猪称体重",[451,20440,20442],{"className":16745,"code":20441,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nint main()\n{\n    int arr[5]={300,350,200,400,250};\n    int tmp=0;\n    for (int i=0;i\u003C5;i++)\n    {\n        if(tmp\u003Carr[i])\n        {\n            tmp=arr[i];\n        }\n    }\n    cout\u003C\u003Ctmp\u003C\u003Cendl;\n    return 0;\n}\n",[457,20443,20444,20450,20460,20468,20472,20511,20524,20550,20554,20566,20570,20580,20584,20588,20601,20610],{"__ignoreMap":32},[460,20445,20446,20448],{"class":462,"line":463},[460,20447,18491],{"class":887},[460,20449,18494],{"class":1353},[460,20451,20452,20454,20456,20458],{"class":462,"line":476},[460,20453,18499],{"class":887},[460,20455,18502],{"class":887},[460,20457,18505],{"class":929},[460,20459,1966],{"class":466},[460,20461,20462,20464,20466],{"class":462,"line":482},[460,20463,16759],{"class":887},[460,20465,18514],{"class":929},[460,20467,10758],{"class":466},[460,20469,20470],{"class":462,"line":488},[460,20471,18115],{"class":466},[460,20473,20474,20476,20479,20481,20483,20485,20487,20489,20491,20494,20496,20498,20500,20503,20505,20508],{"class":462,"line":494},[460,20475,18525],{"class":887},[460,20477,20478],{"class":466}," arr[",[460,20480,7290],{"class":900},[460,20482,17649],{"class":466},[460,20484,894],{"class":887},[460,20486,17607],{"class":466},[460,20488,9934],{"class":900},[460,20490,3986],{"class":466},[460,20492,20493],{"class":900},"350",[460,20495,3986],{"class":466},[460,20497,5490],{"class":900},[460,20499,3986],{"class":466},[460,20501,20502],{"class":900},"400",[460,20504,3986],{"class":466},[460,20506,20507],{"class":900},"250",[460,20509,20510],{"class":466},"};\n",[460,20512,20513,20515,20518,20520,20522],{"class":462,"line":500},[460,20514,18525],{"class":887},[460,20516,20517],{"class":466}," tmp",[460,20519,894],{"class":887},[460,20521,936],{"class":900},[460,20523,1966],{"class":466},[460,20525,20526,20528,20530,20532,20534,20536,20538,20540,20542,20544,20546,20548],{"class":462,"line":506},[460,20527,19722],{"class":887},[460,20529,11704],{"class":466},[460,20531,16759],{"class":887},[460,20533,10169],{"class":466},[460,20535,894],{"class":887},[460,20537,936],{"class":900},[460,20539,19560],{"class":466},[460,20541,781],{"class":887},[460,20543,7290],{"class":900},[460,20545,19560],{"class":466},[460,20547,18828],{"class":887},[460,20549,3754],{"class":466},[460,20551,20552],{"class":462,"line":512},[460,20553,18570],{"class":466},[460,20555,20556,20558,20561,20563],{"class":462,"line":518},[460,20557,3702],{"class":887},[460,20559,20560],{"class":466},"(tmp",[460,20562,781],{"class":887},[460,20564,20565],{"class":466},"arr[i])\n",[460,20567,20568],{"class":462,"line":525},[460,20569,1390],{"class":466},[460,20571,20572,20575,20577],{"class":462,"line":531},[460,20573,20574],{"class":466},"            tmp",[460,20576,894],{"class":887},[460,20578,20579],{"class":466},"arr[i];\n",[460,20581,20582],{"class":462,"line":537},[460,20583,3858],{"class":466},[460,20585,20586],{"class":462,"line":543},[460,20587,509],{"class":466},[460,20589,20590,20592,20594,20597,20599],{"class":462,"line":549},[460,20591,18120],{"class":466},[460,20593,17750],{"class":887},[460,20595,20596],{"class":466},"tmp",[460,20598,17750],{"class":887},[460,20600,17772],{"class":466},[460,20602,20603,20606,20608],{"class":462,"line":555},[460,20604,20605],{"class":887},"    return",[460,20607,2224],{"class":900},[460,20609,1966],{"class":466},[460,20611,20612],{"class":462,"line":560},[460,20613,821],{"class":466},[40,20615,20616],{},[43,20617,20618],{},"2️⃣数组元素逆置",[451,20620,20622],{"className":16745,"code":20621,"language":16747,"meta":32,"style":32},"\u002F\u002F元素逆置\n#include\u003Ciostream>\nusing namespace std;\nint main()\n{\n   int arr[5]={1,2,3,4,5};\n   int start=0;\u002F\u002F起始下标\n   int end=sizeof(arr)\u002Fsizeof(arr[0])-1;\u002F\u002F结束下标\n   while (start\u003Cend)\n   {\n    \u002F\u002F实现元素互换代码\n    int temp=arr[start];\n    arr[start]=arr[end];\n    arr[end]=temp;\n    \u002F\u002F下标更新\n    start++;\n    end--;\n   }\n   \u002F\u002F输出逆置后的数组\n   for (int i=0;i\u003C5;i++)\n   {\n    cout\u003C\u003Carr[i]\u003C\u003C\" \";\n   }\n   system(\"pause\");\n   return 0;\n}\n",[457,20623,20624,20629,20635,20645,20653,20657,20692,20708,20739,20752,20757,20762,20774,20784,20794,20799,20808,20818,20822,20827,20854,20858,20874,20878,20889,20898],{"__ignoreMap":32},[460,20625,20626],{"class":462,"line":463},[460,20627,20628],{"class":942},"\u002F\u002F元素逆置\n",[460,20630,20631,20633],{"class":462,"line":476},[460,20632,18491],{"class":887},[460,20634,18494],{"class":1353},[460,20636,20637,20639,20641,20643],{"class":462,"line":482},[460,20638,18499],{"class":887},[460,20640,18502],{"class":887},[460,20642,18505],{"class":929},[460,20644,1966],{"class":466},[460,20646,20647,20649,20651],{"class":462,"line":488},[460,20648,16759],{"class":887},[460,20650,18514],{"class":929},[460,20652,10758],{"class":466},[460,20654,20655],{"class":462,"line":494},[460,20656,18115],{"class":466},[460,20658,20659,20662,20664,20666,20668,20670,20672,20674,20676,20678,20680,20682,20684,20686,20688,20690],{"class":462,"line":500},[460,20660,20661],{"class":887},"   int",[460,20663,20478],{"class":466},[460,20665,7290],{"class":900},[460,20667,17649],{"class":466},[460,20669,894],{"class":887},[460,20671,17607],{"class":466},[460,20673,901],{"class":900},[460,20675,3986],{"class":466},[460,20677,907],{"class":900},[460,20679,3986],{"class":466},[460,20681,913],{"class":900},[460,20683,3986],{"class":466},[460,20685,918],{"class":900},[460,20687,3986],{"class":466},[460,20689,7290],{"class":900},[460,20691,20510],{"class":466},[460,20693,20694,20696,20699,20701,20703,20705],{"class":462,"line":506},[460,20695,20661],{"class":887},[460,20697,20698],{"class":466}," start",[460,20700,894],{"class":887},[460,20702,936],{"class":900},[460,20704,16807],{"class":466},[460,20706,20707],{"class":942},"\u002F\u002F起始下标\n",[460,20709,20710,20712,20715,20718,20721,20724,20726,20728,20730,20732,20734,20736],{"class":462,"line":512},[460,20711,20661],{"class":887},[460,20713,20714],{"class":466}," end",[460,20716,20717],{"class":887},"=sizeof",[460,20719,20720],{"class":466},"(arr)",[460,20722,20723],{"class":887},"\u002Fsizeof",[460,20725,933],{"class":466},[460,20727,936],{"class":900},[460,20729,939],{"class":466},[460,20731,17259],{"class":887},[460,20733,901],{"class":900},[460,20735,16807],{"class":466},[460,20737,20738],{"class":942},"\u002F\u002F结束下标\n",[460,20740,20741,20744,20747,20749],{"class":462,"line":518},[460,20742,20743],{"class":887},"   while",[460,20745,20746],{"class":466}," (start",[460,20748,781],{"class":887},[460,20750,20751],{"class":466},"end)\n",[460,20753,20754],{"class":462,"line":525},[460,20755,20756],{"class":466},"   {\n",[460,20758,20759],{"class":462,"line":531},[460,20760,20761],{"class":942},"    \u002F\u002F实现元素互换代码\n",[460,20763,20764,20766,20769,20771],{"class":462,"line":537},[460,20765,18525],{"class":887},[460,20767,20768],{"class":466}," temp",[460,20770,894],{"class":887},[460,20772,20773],{"class":466},"arr[start];\n",[460,20775,20776,20779,20781],{"class":462,"line":543},[460,20777,20778],{"class":466},"    arr[start]",[460,20780,894],{"class":887},[460,20782,20783],{"class":466},"arr[end];\n",[460,20785,20786,20789,20791],{"class":462,"line":549},[460,20787,20788],{"class":466},"    arr[end]",[460,20790,894],{"class":887},[460,20792,20793],{"class":466},"temp;\n",[460,20795,20796],{"class":462,"line":555},[460,20797,20798],{"class":942},"    \u002F\u002F下标更新\n",[460,20800,20801,20804,20806],{"class":462,"line":560},[460,20802,20803],{"class":466},"    start",[460,20805,18828],{"class":887},[460,20807,1966],{"class":466},[460,20809,20810,20813,20816],{"class":462,"line":566},[460,20811,20812],{"class":466},"    end",[460,20814,20815],{"class":887},"--",[460,20817,1966],{"class":466},[460,20819,20820],{"class":462,"line":572},[460,20821,815],{"class":466},[460,20823,20824],{"class":462,"line":578},[460,20825,20826],{"class":942},"   \u002F\u002F输出逆置后的数组\n",[460,20828,20829,20832,20834,20836,20838,20840,20842,20844,20846,20848,20850,20852],{"class":462,"line":812},[460,20830,20831],{"class":887},"   for",[460,20833,11704],{"class":466},[460,20835,16759],{"class":887},[460,20837,10169],{"class":466},[460,20839,894],{"class":887},[460,20841,936],{"class":900},[460,20843,19560],{"class":466},[460,20845,781],{"class":887},[460,20847,7290],{"class":900},[460,20849,19560],{"class":466},[460,20851,18828],{"class":887},[460,20853,3754],{"class":466},[460,20855,20856],{"class":462,"line":818},[460,20857,20756],{"class":466},[460,20859,20860,20862,20864,20867,20869,20872],{"class":462,"line":824},[460,20861,18120],{"class":466},[460,20863,17750],{"class":887},[460,20865,20866],{"class":466},"arr[i]",[460,20868,17750],{"class":887},[460,20870,20871],{"class":1353},"\" \"",[460,20873,1966],{"class":466},[460,20875,20876],{"class":462,"line":2074},[460,20877,815],{"class":466},[460,20879,20880,20883,20885,20887],{"class":462,"line":2088},[460,20881,20882],{"class":929},"   system",[460,20884,2174],{"class":466},[460,20886,18844],{"class":1353},[460,20888,2254],{"class":466},[460,20890,20891,20894,20896],{"class":462,"line":2103},[460,20892,20893],{"class":887},"   return",[460,20895,2224],{"class":900},[460,20897,1966],{"class":466},[460,20899,20900],{"class":462,"line":2122},[460,20901,821],{"class":466},[40,20903,20904],{},[43,20905,20906],{},"3️⃣冒泡排序\n对数组元素进行排序，做法：\n比较相邻的元素，如果第一个比第二个大，就交换他们；对每一对相邻元素做同样的工作，执行完毕后，找到第一个最大值；重复以上的步骤，每次比较次数-1,直到不需要比较",[451,20908,20910],{"className":16745,"code":20909,"language":16747,"meta":32,"style":32},"\u002F\u002F冒泡排序,升序\n#include\u003Ciostream>\nusing namespace std;\nint main()\n{\n    int arr[9] = {4,2,8,0,5,7,1,3,9};\n    cout\u003C\u003C\"排序前：\"\u003C\u003Cendl;\n    for (int i=0;i\u003C9;i++)\n    {\n        cout\u003C\u003Carr[i]\u003C\u003C\" \";\n    }\n    \u002F\u002F开始冒泡排序\n    \u002F\u002F总共排序轮数为 元素个数-1\n    for (int i=0;i\u003C9-1;i++)\n    {\n        \u002F\u002F内层循环对比 次数=元素个数-1-当前轮数\n        for (int j=0;j\u003C9-i-1;j++)\n        {\n            \u002F\u002F如果前一个元素大于后一个元素，则交换它们\n            if(arr[j]>arr[j+1])\n            {\n                int temp=arr[j];\n                arr[j]=arr[j+1];\n                arr[j+1]=temp;\n            }\n        }\n    }\n    cout\u003C\u003C\"排序后：\"\u003C\u003Cendl;\n    for (int i=0;i\u003C9;i++)\n    {\n        cout\u003C\u003Carr[i]\u003C\u003C\" \";\n    }\n    return 0;\n}\n",[457,20911,20912,20917,20923,20933,20941,20945,20996,21009,21035,21039,21053,21057,21062,21067,21097,21101,21106,21140,21144,21149,21168,21173,21185,21201,21216,21221,21225,21229,21242,21268,21272,21286,21290,21298],{"__ignoreMap":32},[460,20913,20914],{"class":462,"line":463},[460,20915,20916],{"class":942},"\u002F\u002F冒泡排序,升序\n",[460,20918,20919,20921],{"class":462,"line":476},[460,20920,18491],{"class":887},[460,20922,18494],{"class":1353},[460,20924,20925,20927,20929,20931],{"class":462,"line":482},[460,20926,18499],{"class":887},[460,20928,18502],{"class":887},[460,20930,18505],{"class":929},[460,20932,1966],{"class":466},[460,20934,20935,20937,20939],{"class":462,"line":488},[460,20936,16759],{"class":887},[460,20938,18514],{"class":929},[460,20940,10758],{"class":466},[460,20942,20943],{"class":462,"line":494},[460,20944,18115],{"class":466},[460,20946,20947,20949,20951,20953,20955,20957,20960,20962,20964,20966,20968,20970,20972,20974,20976,20978,20980,20982,20984,20986,20988,20990,20992,20994],{"class":462,"line":500},[460,20948,18525],{"class":887},[460,20950,20478],{"class":466},[460,20952,17154],{"class":900},[460,20954,11884],{"class":466},[460,20956,894],{"class":887},[460,20958,20959],{"class":466}," {",[460,20961,918],{"class":900},[460,20963,3986],{"class":466},[460,20965,907],{"class":900},[460,20967,3986],{"class":466},[460,20969,17130],{"class":900},[460,20971,3986],{"class":466},[460,20973,936],{"class":900},[460,20975,3986],{"class":466},[460,20977,7290],{"class":900},[460,20979,3986],{"class":466},[460,20981,6149],{"class":900},[460,20983,3986],{"class":466},[460,20985,901],{"class":900},[460,20987,3986],{"class":466},[460,20989,913],{"class":900},[460,20991,3986],{"class":466},[460,20993,17154],{"class":900},[460,20995,20510],{"class":466},[460,20997,20998,21000,21002,21005,21007],{"class":462,"line":506},[460,20999,18120],{"class":466},[460,21001,17750],{"class":887},[460,21003,21004],{"class":1353},"\"排序前：\"",[460,21006,17750],{"class":887},[460,21008,17772],{"class":466},[460,21010,21011,21013,21015,21017,21019,21021,21023,21025,21027,21029,21031,21033],{"class":462,"line":512},[460,21012,19722],{"class":887},[460,21014,11704],{"class":466},[460,21016,16759],{"class":887},[460,21018,10169],{"class":466},[460,21020,894],{"class":887},[460,21022,936],{"class":900},[460,21024,19560],{"class":466},[460,21026,781],{"class":887},[460,21028,17154],{"class":900},[460,21030,19560],{"class":466},[460,21032,18828],{"class":887},[460,21034,3754],{"class":466},[460,21036,21037],{"class":462,"line":518},[460,21038,18570],{"class":466},[460,21040,21041,21043,21045,21047,21049,21051],{"class":462,"line":525},[460,21042,19972],{"class":466},[460,21044,17750],{"class":887},[460,21046,20866],{"class":466},[460,21048,17750],{"class":887},[460,21050,20871],{"class":1353},[460,21052,1966],{"class":466},[460,21054,21055],{"class":462,"line":531},[460,21056,509],{"class":466},[460,21058,21059],{"class":462,"line":537},[460,21060,21061],{"class":942},"    \u002F\u002F开始冒泡排序\n",[460,21063,21064],{"class":462,"line":543},[460,21065,21066],{"class":942},"    \u002F\u002F总共排序轮数为 元素个数-1\n",[460,21068,21069,21071,21073,21075,21077,21079,21081,21083,21085,21087,21089,21091,21093,21095],{"class":462,"line":549},[460,21070,19722],{"class":887},[460,21072,11704],{"class":466},[460,21074,16759],{"class":887},[460,21076,10169],{"class":466},[460,21078,894],{"class":887},[460,21080,936],{"class":900},[460,21082,19560],{"class":466},[460,21084,781],{"class":887},[460,21086,17154],{"class":900},[460,21088,17259],{"class":887},[460,21090,901],{"class":900},[460,21092,19560],{"class":466},[460,21094,18828],{"class":887},[460,21096,3754],{"class":466},[460,21098,21099],{"class":462,"line":555},[460,21100,18570],{"class":466},[460,21102,21103],{"class":462,"line":560},[460,21104,21105],{"class":942},"        \u002F\u002F内层循环对比 次数=元素个数-1-当前轮数\n",[460,21107,21108,21110,21112,21114,21116,21118,21120,21122,21124,21126,21128,21130,21132,21134,21136,21138],{"class":462,"line":566},[460,21109,19924],{"class":887},[460,21111,11704],{"class":466},[460,21113,16759],{"class":887},[460,21115,19931],{"class":466},[460,21117,894],{"class":887},[460,21119,936],{"class":900},[460,21121,19938],{"class":466},[460,21123,781],{"class":887},[460,21125,17154],{"class":900},[460,21127,17259],{"class":887},[460,21129,17174],{"class":466},[460,21131,17259],{"class":887},[460,21133,901],{"class":900},[460,21135,19938],{"class":466},[460,21137,18828],{"class":887},[460,21139,3754],{"class":466},[460,21141,21142],{"class":462,"line":572},[460,21143,1390],{"class":466},[460,21145,21146],{"class":462,"line":578},[460,21147,21148],{"class":942},"            \u002F\u002F如果前一个元素大于后一个元素，则交换它们\n",[460,21150,21151,21154,21157,21159,21162,21164,21166],{"class":462,"line":812},[460,21152,21153],{"class":887},"            if",[460,21155,21156],{"class":466},"(arr[j]",[460,21158,17668],{"class":887},[460,21160,21161],{"class":466},"arr[j",[460,21163,8495],{"class":887},[460,21165,901],{"class":900},[460,21167,13249],{"class":466},[460,21169,21170],{"class":462,"line":818},[460,21171,21172],{"class":466},"            {\n",[460,21174,21175,21178,21180,21182],{"class":462,"line":824},[460,21176,21177],{"class":887},"                int",[460,21179,20768],{"class":466},[460,21181,894],{"class":887},[460,21183,21184],{"class":466},"arr[j];\n",[460,21186,21187,21190,21192,21194,21196,21198],{"class":462,"line":2074},[460,21188,21189],{"class":466},"                arr[j]",[460,21191,894],{"class":887},[460,21193,21161],{"class":466},[460,21195,8495],{"class":887},[460,21197,901],{"class":900},[460,21199,21200],{"class":466},"];\n",[460,21202,21203,21206,21208,21210,21212,21214],{"class":462,"line":2088},[460,21204,21205],{"class":466},"                arr[j",[460,21207,8495],{"class":887},[460,21209,901],{"class":900},[460,21211,17649],{"class":466},[460,21213,894],{"class":887},[460,21215,20793],{"class":466},[460,21217,21218],{"class":462,"line":2103},[460,21219,21220],{"class":466},"            }\n",[460,21222,21223],{"class":462,"line":2122},[460,21224,3858],{"class":466},[460,21226,21227],{"class":462,"line":2144},[460,21228,509],{"class":466},[460,21230,21231,21233,21235,21238,21240],{"class":462,"line":2158},[460,21232,18120],{"class":466},[460,21234,17750],{"class":887},[460,21236,21237],{"class":1353},"\"排序后：\"",[460,21239,17750],{"class":887},[460,21241,17772],{"class":466},[460,21243,21244,21246,21248,21250,21252,21254,21256,21258,21260,21262,21264,21266],{"class":462,"line":2163},[460,21245,19722],{"class":887},[460,21247,11704],{"class":466},[460,21249,16759],{"class":887},[460,21251,10169],{"class":466},[460,21253,894],{"class":887},[460,21255,936],{"class":900},[460,21257,19560],{"class":466},[460,21259,781],{"class":887},[460,21261,17154],{"class":900},[460,21263,19560],{"class":466},[460,21265,18828],{"class":887},[460,21267,3754],{"class":466},[460,21269,21270],{"class":462,"line":2168},[460,21271,18570],{"class":466},[460,21273,21274,21276,21278,21280,21282,21284],{"class":462,"line":2183},[460,21275,19972],{"class":466},[460,21277,17750],{"class":887},[460,21279,20866],{"class":466},[460,21281,17750],{"class":887},[460,21283,20871],{"class":1353},[460,21285,1966],{"class":466},[460,21287,21288],{"class":462,"line":2194},[460,21289,509],{"class":466},[460,21291,21292,21294,21296],{"class":462,"line":2199},[460,21293,20605],{"class":887},[460,21295,2224],{"class":900},[460,21297,1966],{"class":466},[460,21299,21300],{"class":462,"line":2204},[460,21301,821],{"class":466},[23,21303,21305],{"id":21304},"_172二维数组","1.7.2二维数组",[103,21307,21308],{},[43,21309,21310],{},"二维数组的四种定义方式",[16884,21312,21313,21322],{},[16887,21314,21315],{},[16890,21316,21317,21320],{},[16893,21318,21319],{},"序号",[16893,21321,20299],{},[16930,21323,21324,21334,21343,21352,21361],{},[16890,21325,21326,21328],{},[16935,21327,901],{},[16935,21329,21330,21331,16807],{},"数据类型 数组名[行数]",[460,21332,21333],{},"列数",[16890,21335,21336,21338],{},[16935,21337,907],{},[16935,21339,21330,21340,21342],{},[460,21341,21333],{},"={ {数据1,数据2}，{数据3，数据4}... }",[16890,21344,21345,21347],{},[16935,21346,913],{},[16935,21348,21330,21349,21351],{},[460,21350,21333],{},"={数据1,数据2,数据3...}",[16890,21353,21354,21356],{},[16935,21355,918],{},[16935,21357,21358,21359,21351],{},"数据类型 数组名[]",[460,21360,21333],{},[16890,21362,21363,21366],{},[16935,21364,21365],{},"注意：不能只省略列数",[16935,21367],{},[103,21369,21370],{"start":476},[43,21371,21372],{},"二维数组数组名",[40,21374,21375,21378],{},[43,21376,21377],{},"1.查看二维数组所占内存空间",[43,21379,21380],{},"2.获取二维数组首地址",[14,21382,21383],{},"已知二维数组，求二维数组的行数与列数",[451,21385,21387],{"className":16745,"code":21386,"language":16747,"meta":32,"style":32},"int main()\n{\n    int arr[2][3]=\n    {\n        {1,2,3},\n        {4,5,6}\n    };\n    cout\u003C\u003C\"二维数组的行数\"\u003C\u003Csizeof(arr)\u002Fsizeof(arr[0])\u003C\u003Cendl;\n    cout\u003C\u003C\"二维数组的列数\"\u003C\u003Csizeof(arr[0])\u002Fsizeof(arr[0][0])\u003C\u003Cendl;\n}\n",[457,21388,21389,21397,21401,21418,21422,21440,21456,21461,21486,21519],{"__ignoreMap":32},[460,21390,21391,21393,21395],{"class":462,"line":463},[460,21392,16759],{"class":887},[460,21394,18514],{"class":929},[460,21396,10758],{"class":466},[460,21398,21399],{"class":462,"line":476},[460,21400,18115],{"class":466},[460,21402,21403,21405,21407,21409,21411,21413,21415],{"class":462,"line":482},[460,21404,18525],{"class":887},[460,21406,20478],{"class":466},[460,21408,907],{"class":900},[460,21410,986],{"class":466},[460,21412,913],{"class":900},[460,21414,17649],{"class":466},[460,21416,21417],{"class":887},"=\n",[460,21419,21420],{"class":462,"line":488},[460,21421,18570],{"class":466},[460,21423,21424,21427,21429,21431,21433,21435,21437],{"class":462,"line":494},[460,21425,21426],{"class":466},"        {",[460,21428,901],{"class":900},[460,21430,3986],{"class":466},[460,21432,907],{"class":900},[460,21434,3986],{"class":466},[460,21436,913],{"class":900},[460,21438,21439],{"class":466},"},\n",[460,21441,21442,21444,21446,21448,21450,21452,21454],{"class":462,"line":500},[460,21443,21426],{"class":466},[460,21445,918],{"class":900},[460,21447,3986],{"class":466},[460,21449,7290],{"class":900},[460,21451,3986],{"class":466},[460,21453,4064],{"class":900},[460,21455,821],{"class":466},[460,21457,21458],{"class":462,"line":506},[460,21459,21460],{"class":466},"    };\n",[460,21462,21463,21465,21467,21470,21472,21474,21476,21478,21480,21482,21484],{"class":462,"line":512},[460,21464,18120],{"class":466},[460,21466,17750],{"class":887},[460,21468,21469],{"class":1353},"\"二维数组的行数\"",[460,21471,17943],{"class":887},[460,21473,20720],{"class":466},[460,21475,20723],{"class":887},[460,21477,933],{"class":466},[460,21479,936],{"class":900},[460,21481,939],{"class":466},[460,21483,17750],{"class":887},[460,21485,17772],{"class":466},[460,21487,21488,21490,21492,21495,21497,21499,21501,21503,21505,21507,21509,21511,21513,21515,21517],{"class":462,"line":518},[460,21489,18120],{"class":466},[460,21491,17750],{"class":887},[460,21493,21494],{"class":1353},"\"二维数组的列数\"",[460,21496,17943],{"class":887},[460,21498,933],{"class":466},[460,21500,936],{"class":900},[460,21502,939],{"class":466},[460,21504,20723],{"class":887},[460,21506,933],{"class":466},[460,21508,936],{"class":900},[460,21510,986],{"class":466},[460,21512,936],{"class":900},[460,21514,939],{"class":466},[460,21516,17750],{"class":887},[460,21518,17772],{"class":466},[460,21520,21521],{"class":462,"line":525},[460,21522,821],{"class":466},[14,21524,21525],{},"查看二维数组首地址",[451,21527,21529],{"className":16745,"code":21528,"language":16747,"meta":32,"style":32},"cout\u003C\u003C\"二维数组首地址：\"\u003C\u003Carr\u003C\u003Cendl;\ncout\u003C\u003C\"二维数组第一行的首地址：\"\u003C\u003C(int)arr[0]\u003C\u003Cendl;\ncout\u003C\u003C\"二维数组第二行的首地址：\"\u003C\u003C(int)arr[1]\u003C\u003Cendl;\ncout\u003C\u003C\"二维数组第一个元素的首地址:\"\u003C\u003C(int)&arr[0][0]\u003C\u003Cendl;\u002F\u002F对于数，要加取址符\n",[457,21530,21531,21548,21574,21599],{"__ignoreMap":32},[460,21532,21533,21535,21537,21540,21542,21544,21546],{"class":462,"line":463},[460,21534,17940],{"class":466},[460,21536,17750],{"class":887},[460,21538,21539],{"class":1353},"\"二维数组首地址：\"",[460,21541,17750],{"class":887},[460,21543,3381],{"class":466},[460,21545,17750],{"class":887},[460,21547,17772],{"class":466},[460,21549,21550,21552,21554,21557,21559,21561,21563,21566,21568,21570,21572],{"class":462,"line":476},[460,21551,17940],{"class":466},[460,21553,17750],{"class":887},[460,21555,21556],{"class":1353},"\"二维数组第一行的首地址：\"",[460,21558,17750],{"class":887},[460,21560,2174],{"class":466},[460,21562,16759],{"class":887},[460,21564,21565],{"class":466},")arr[",[460,21567,936],{"class":900},[460,21569,17649],{"class":466},[460,21571,17750],{"class":887},[460,21573,17772],{"class":466},[460,21575,21576,21578,21580,21583,21585,21587,21589,21591,21593,21595,21597],{"class":462,"line":482},[460,21577,17940],{"class":466},[460,21579,17750],{"class":887},[460,21581,21582],{"class":1353},"\"二维数组第二行的首地址：\"",[460,21584,17750],{"class":887},[460,21586,2174],{"class":466},[460,21588,16759],{"class":887},[460,21590,21565],{"class":466},[460,21592,901],{"class":900},[460,21594,17649],{"class":466},[460,21596,17750],{"class":887},[460,21598,17772],{"class":466},[460,21600,21601,21603,21605,21608,21610,21612,21614,21616,21618,21620,21622,21624,21626,21628,21630,21632],{"class":462,"line":488},[460,21602,17940],{"class":466},[460,21604,17750],{"class":887},[460,21606,21607],{"class":1353},"\"二维数组第一个元素的首地址:\"",[460,21609,17750],{"class":887},[460,21611,2174],{"class":466},[460,21613,16759],{"class":887},[460,21615,8411],{"class":466},[460,21617,17090],{"class":887},[460,21619,20422],{"class":466},[460,21621,936],{"class":900},[460,21623,986],{"class":466},[460,21625,936],{"class":900},[460,21627,17649],{"class":466},[460,21629,17750],{"class":887},[460,21631,17815],{"class":466},[460,21633,21634],{"class":942},"\u002F\u002F对于数，要加取址符\n",[1944,21636,21637],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":32,"searchDepth":476,"depth":476,"links":21639},[21640,21641,21642,21650,21651,21657,21662],{"id":16700,"depth":476,"text":16701},{"id":16707,"depth":476,"text":16708},{"id":16722,"depth":476,"text":16723,"children":21643},[21644,21645,21646,21647,21648,21649],{"id":16726,"depth":482,"text":16727},{"id":16771,"depth":482,"text":16772},{"id":16833,"depth":482,"text":16834},{"id":17731,"depth":482,"text":17732},{"id":17821,"depth":482,"text":17822},{"id":17915,"depth":482,"text":17916},{"id":17956,"depth":476,"text":17957},{"id":18023,"depth":476,"text":18024,"children":21652},[21653,21654,21655,21656],{"id":18027,"depth":482,"text":18028},{"id":18048,"depth":482,"text":18049},{"id":18057,"depth":482,"text":18058},{"id":18066,"depth":482,"text":18067},{"id":18075,"depth":476,"text":18076,"children":21658},[21659,21660,21661],{"id":18079,"depth":482,"text":18080},{"id":18741,"depth":482,"text":18742},{"id":20142,"depth":482,"text":20143},{"id":20280,"depth":476,"text":20281,"children":21663},[21664,21665],{"id":20284,"depth":482,"text":20285},{"id":21304,"depth":482,"text":21305},{},"\u002Fwiki\u002F2026-05-24-c++\u002Fch1",{"title":16692,"description":32},"wiki\u002F2026-05-24-c++学习\u002Fch1-基本认识","1r5xXbZS-drkqvsSKedLALMb9rI8Aqwv0jRzCBXrWss",{"id":21672,"title":21673,"body":21674,"description":32,"extension":16683,"meta":22768,"navigation":521,"path":22769,"seo":22770,"stem":22771,"__hash__":22772},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Fch2-函数.md","2.函数",{"type":7,"value":21675,"toc":22760},[21676,21679,21683,21690,21697,21700,21765,21769,21772,21848,21852,21855,21858,21861,22074,22078,22083,22147,22152,22219,22224,22314,22317,22422,22426,22429,22435,22577,22581,22584,22598,22601,22646,22649,22757],[10,21677,21673],{"id":21678},"_2函数",[18,21680,21682],{"id":21681},"_21函数概述","2.1函数概述",[103,21684,21685,21688],{},[43,21686,21687],{},"函数的定义一般主要有5个步骤：返回值类型、函数名、参数表列、函数体语句、return表达式",[43,21689,5927],{},[451,21691,21695],{"className":21692,"code":21694,"language":8391,"meta":32},[21693],"language-text","返回值类型 函数名 （参数列表）\n{\n    函数体语句\n    return 表达式\n}\n",[457,21696,21694],{"__ignoreMap":32},[14,21698,21699],{},"小案例",[451,21701,21703],{"className":16745,"code":21702,"language":16747,"meta":32,"style":32},"\u002F\u002Fnum1,num2形参\nint add(int num1,int num2)\n{\n    int sum=num1+num2;\n    return sum;\n}\n",[457,21704,21705,21710,21733,21737,21754,21761],{"__ignoreMap":32},[460,21706,21707],{"class":462,"line":463},[460,21708,21709],{"class":942},"\u002F\u002Fnum1,num2形参\n",[460,21711,21712,21714,21717,21719,21721,21724,21726,21728,21731],{"class":462,"line":476},[460,21713,16759],{"class":887},[460,21715,21716],{"class":929}," add",[460,21718,2174],{"class":466},[460,21720,16759],{"class":887},[460,21722,21723],{"class":3380}," num1",[460,21725,3986],{"class":466},[460,21727,16759],{"class":887},[460,21729,21730],{"class":3380}," num2",[460,21732,3754],{"class":466},[460,21734,21735],{"class":462,"line":482},[460,21736,18115],{"class":466},[460,21738,21739,21741,21744,21746,21749,21751],{"class":462,"line":488},[460,21740,18525],{"class":887},[460,21742,21743],{"class":466}," sum",[460,21745,894],{"class":887},[460,21747,21748],{"class":466},"num1",[460,21750,8495],{"class":887},[460,21752,21753],{"class":466},"num2;\n",[460,21755,21756,21758],{"class":462,"line":494},[460,21757,20605],{"class":887},[460,21759,21760],{"class":466}," sum;\n",[460,21762,21763],{"class":462,"line":500},[460,21764,821],{"class":466},[18,21766,21768],{"id":21767},"_22函数调用","2.2函数调用",[14,21770,21771],{},"调用刚刚写的求和函数",[451,21773,21775],{"className":16745,"code":21774,"language":16747,"meta":32,"style":32},"int main()\n{\n    \u002F\u002Fa,b实参\n    int a=0;\n    int b=0;\n    cin>>a,b;\n    \u002F\u002F调用函数时，实参值传给了形参\n    cout\u003C\u003Cadd(a,b);\n}\n",[457,21776,21777,21785,21789,21794,21806,21818,21827,21832,21844],{"__ignoreMap":32},[460,21778,21779,21781,21783],{"class":462,"line":463},[460,21780,16759],{"class":887},[460,21782,18514],{"class":929},[460,21784,10758],{"class":466},[460,21786,21787],{"class":462,"line":476},[460,21788,18115],{"class":466},[460,21790,21791],{"class":462,"line":482},[460,21792,21793],{"class":942},"    \u002F\u002Fa,b实参\n",[460,21795,21796,21798,21800,21802,21804],{"class":462,"line":488},[460,21797,18525],{"class":887},[460,21799,2574],{"class":466},[460,21801,894],{"class":887},[460,21803,936],{"class":900},[460,21805,1966],{"class":466},[460,21807,21808,21810,21812,21814,21816],{"class":462,"line":494},[460,21809,18525],{"class":887},[460,21811,19355],{"class":466},[460,21813,894],{"class":887},[460,21815,936],{"class":900},[460,21817,1966],{"class":466},[460,21819,21820,21822,21824],{"class":462,"line":500},[460,21821,18552],{"class":466},[460,21823,17999],{"class":887},[460,21825,21826],{"class":466},"a,b;\n",[460,21828,21829],{"class":462,"line":506},[460,21830,21831],{"class":942},"    \u002F\u002F调用函数时，实参值传给了形参\n",[460,21833,21834,21836,21838,21841],{"class":462,"line":512},[460,21835,18120],{"class":466},[460,21837,17750],{"class":887},[460,21839,21840],{"class":929},"add",[460,21842,21843],{"class":466},"(a,b);\n",[460,21845,21846],{"class":462,"line":518},[460,21847,821],{"class":466},[18,21849,21851],{"id":21850},"_23值传递","2.3值传递",[14,21853,21854],{},"值传递就是函数调用时实参将数值传给形参",[14,21856,21857],{},"值传递时，如果形参发生任何改变，不会影响实参",[14,21859,21860],{},"如果函数不需要返回值，声明的时候可以写void,此时函数返回值可以写return；或者直接不写",[451,21862,21864],{"className":16745,"code":21863,"language":16747,"meta":32,"style":32},"void swap(int num1,int num2)\n{\n    cout\u003C\u003C\"交换前：\"\u003C\u003Cendl;\n    cout\u003C\u003C\"num1=\"\u003C\u003Cnum1\u003C\u003Cendl;\n    cout\u003C\u003C\"num2=\"\u003C\u003Cnum2\u003C\u003Cendl;\n    int temp=num1;\n    num1=num2;\n    num2=temp;\n    cout\u003C\u003C\"交换后：\"\u003C\u003Cendl;\n    cout\u003C\u003C\"num1=\"\u003C\u003Cnum1\u003C\u003Cendl;\n    cout\u003C\u003C\"num2=\"\u003C\u003Cnum2\u003C\u003Cendl;\n    return;\u002F\u002F或者不写\n}\nint main()\n{\n    int a=10;\n    int b=20;\n    swap(a,b);\n}\n",[457,21865,21866,21888,21892,21905,21922,21940,21951,21960,21969,21982,21998,22014,22023,22027,22035,22039,22051,22063,22070],{"__ignoreMap":32},[460,21867,21868,21871,21874,21876,21878,21880,21882,21884,21886],{"class":462,"line":463},[460,21869,21870],{"class":887},"void",[460,21872,21873],{"class":929}," swap",[460,21875,2174],{"class":466},[460,21877,16759],{"class":887},[460,21879,21723],{"class":3380},[460,21881,3986],{"class":466},[460,21883,16759],{"class":887},[460,21885,21730],{"class":3380},[460,21887,3754],{"class":466},[460,21889,21890],{"class":462,"line":476},[460,21891,18115],{"class":466},[460,21893,21894,21896,21898,21901,21903],{"class":462,"line":482},[460,21895,18120],{"class":466},[460,21897,17750],{"class":887},[460,21899,21900],{"class":1353},"\"交换前：\"",[460,21902,17750],{"class":887},[460,21904,17772],{"class":466},[460,21906,21907,21909,21911,21914,21916,21918,21920],{"class":462,"line":488},[460,21908,18120],{"class":466},[460,21910,17750],{"class":887},[460,21912,21913],{"class":1353},"\"num1=\"",[460,21915,17750],{"class":887},[460,21917,21748],{"class":466},[460,21919,17750],{"class":887},[460,21921,17772],{"class":466},[460,21923,21924,21926,21928,21931,21933,21936,21938],{"class":462,"line":494},[460,21925,18120],{"class":466},[460,21927,17750],{"class":887},[460,21929,21930],{"class":1353},"\"num2=\"",[460,21932,17750],{"class":887},[460,21934,21935],{"class":466},"num2",[460,21937,17750],{"class":887},[460,21939,17772],{"class":466},[460,21941,21942,21944,21946,21948],{"class":462,"line":500},[460,21943,18525],{"class":887},[460,21945,20768],{"class":466},[460,21947,894],{"class":887},[460,21949,21950],{"class":466},"num1;\n",[460,21952,21953,21956,21958],{"class":462,"line":506},[460,21954,21955],{"class":466},"    num1",[460,21957,894],{"class":887},[460,21959,21753],{"class":466},[460,21961,21962,21965,21967],{"class":462,"line":512},[460,21963,21964],{"class":466},"    num2",[460,21966,894],{"class":887},[460,21968,20793],{"class":466},[460,21970,21971,21973,21975,21978,21980],{"class":462,"line":518},[460,21972,18120],{"class":466},[460,21974,17750],{"class":887},[460,21976,21977],{"class":1353},"\"交换后：\"",[460,21979,17750],{"class":887},[460,21981,17772],{"class":466},[460,21983,21984,21986,21988,21990,21992,21994,21996],{"class":462,"line":525},[460,21985,18120],{"class":466},[460,21987,17750],{"class":887},[460,21989,21913],{"class":1353},[460,21991,17750],{"class":887},[460,21993,21748],{"class":466},[460,21995,17750],{"class":887},[460,21997,17772],{"class":466},[460,21999,22000,22002,22004,22006,22008,22010,22012],{"class":462,"line":531},[460,22001,18120],{"class":466},[460,22003,17750],{"class":887},[460,22005,21930],{"class":1353},[460,22007,17750],{"class":887},[460,22009,21935],{"class":466},[460,22011,17750],{"class":887},[460,22013,17772],{"class":466},[460,22015,22016,22018,22020],{"class":462,"line":537},[460,22017,20605],{"class":887},[460,22019,16807],{"class":466},[460,22021,22022],{"class":942},"\u002F\u002F或者不写\n",[460,22024,22025],{"class":462,"line":543},[460,22026,821],{"class":466},[460,22028,22029,22031,22033],{"class":462,"line":549},[460,22030,16759],{"class":887},[460,22032,18514],{"class":929},[460,22034,10758],{"class":466},[460,22036,22037],{"class":462,"line":555},[460,22038,18115],{"class":466},[460,22040,22041,22043,22045,22047,22049],{"class":462,"line":560},[460,22042,18525],{"class":887},[460,22044,2574],{"class":466},[460,22046,894],{"class":887},[460,22048,2096],{"class":900},[460,22050,1966],{"class":466},[460,22052,22053,22055,22057,22059,22061],{"class":462,"line":566},[460,22054,18525],{"class":887},[460,22056,19355],{"class":466},[460,22058,894],{"class":887},[460,22060,2110],{"class":900},[460,22062,1966],{"class":466},[460,22064,22065,22068],{"class":462,"line":572},[460,22066,22067],{"class":929},"    swap",[460,22069,21843],{"class":466},[460,22071,22072],{"class":462,"line":578},[460,22073,821],{"class":466},[18,22075,22077],{"id":22076},"_24函数的常见形式","2.4函数的常见形式",[103,22079,22080],{},[43,22081,22082],{},"无参无返",[451,22084,22086],{"className":16745,"code":22085,"language":16747,"meta":32,"style":32},"void test01()\n{\n    cout\u003C\u003C\"你好\"\u003C\u003Cendl;\n}\nint main()\n{\n    \u002F\u002F函数调用\n    test01();\n}\n",[457,22087,22088,22097,22101,22114,22118,22126,22130,22135,22143],{"__ignoreMap":32},[460,22089,22090,22092,22095],{"class":462,"line":463},[460,22091,21870],{"class":887},[460,22093,22094],{"class":929}," test01",[460,22096,10758],{"class":466},[460,22098,22099],{"class":462,"line":476},[460,22100,18115],{"class":466},[460,22102,22103,22105,22107,22110,22112],{"class":462,"line":482},[460,22104,18120],{"class":466},[460,22106,17750],{"class":887},[460,22108,22109],{"class":1353},"\"你好\"",[460,22111,17750],{"class":887},[460,22113,17772],{"class":466},[460,22115,22116],{"class":462,"line":488},[460,22117,821],{"class":466},[460,22119,22120,22122,22124],{"class":462,"line":494},[460,22121,16759],{"class":887},[460,22123,18514],{"class":929},[460,22125,10758],{"class":466},[460,22127,22128],{"class":462,"line":500},[460,22129,18115],{"class":466},[460,22131,22132],{"class":462,"line":506},[460,22133,22134],{"class":942},"    \u002F\u002F函数调用\n",[460,22136,22137,22140],{"class":462,"line":512},[460,22138,22139],{"class":929},"    test01",[460,22141,22142],{"class":466},"();\n",[460,22144,22145],{"class":462,"line":518},[460,22146,821],{"class":466},[103,22148,22149],{"start":476},[43,22150,22151],{},"有参无返",[451,22153,22155],{"className":16745,"code":22154,"language":16747,"meta":32,"style":32},"void test02(int a)\n{\n    cout\u003C\u003C\"你好\"\u003C\u003Cendl;\n}\nint main()\n{\n    test02(100);\n}\n",[457,22156,22157,22172,22176,22188,22192,22200,22204,22215],{"__ignoreMap":32},[460,22158,22159,22161,22164,22166,22168,22170],{"class":462,"line":463},[460,22160,21870],{"class":887},[460,22162,22163],{"class":929}," test02",[460,22165,2174],{"class":466},[460,22167,16759],{"class":887},[460,22169,2574],{"class":3380},[460,22171,3754],{"class":466},[460,22173,22174],{"class":462,"line":476},[460,22175,18115],{"class":466},[460,22177,22178,22180,22182,22184,22186],{"class":462,"line":482},[460,22179,18120],{"class":466},[460,22181,17750],{"class":887},[460,22183,22109],{"class":1353},[460,22185,17750],{"class":887},[460,22187,17772],{"class":466},[460,22189,22190],{"class":462,"line":488},[460,22191,821],{"class":466},[460,22193,22194,22196,22198],{"class":462,"line":494},[460,22195,16759],{"class":887},[460,22197,18514],{"class":929},[460,22199,10758],{"class":466},[460,22201,22202],{"class":462,"line":500},[460,22203,18115],{"class":466},[460,22205,22206,22209,22211,22213],{"class":462,"line":506},[460,22207,22208],{"class":929},"    test02",[460,22210,2174],{"class":466},[460,22212,2325],{"class":900},[460,22214,2254],{"class":466},[460,22216,22217],{"class":462,"line":512},[460,22218,821],{"class":466},[103,22220,22221],{"start":482},[43,22222,22223],{},"无参有返",[451,22225,22227],{"className":16745,"code":22226,"language":16747,"meta":32,"style":32},"int test03()\n{\n    cout\u003C\u003C\"你好\"\u003C\u003Cendl;\n    return 100;\n}\nint main()\n{\n    int num1=test03();\n    cout\u003C\u003C\"num1=\"\u003C\u003Cnum1\u003C\u003Cendl; \u002F\u002F100\n}\n",[457,22228,22229,22238,22242,22254,22262,22266,22274,22278,22291,22310],{"__ignoreMap":32},[460,22230,22231,22233,22236],{"class":462,"line":463},[460,22232,16759],{"class":887},[460,22234,22235],{"class":929}," test03",[460,22237,10758],{"class":466},[460,22239,22240],{"class":462,"line":476},[460,22241,18115],{"class":466},[460,22243,22244,22246,22248,22250,22252],{"class":462,"line":482},[460,22245,18120],{"class":466},[460,22247,17750],{"class":887},[460,22249,22109],{"class":1353},[460,22251,17750],{"class":887},[460,22253,17772],{"class":466},[460,22255,22256,22258,22260],{"class":462,"line":488},[460,22257,20605],{"class":887},[460,22259,3751],{"class":900},[460,22261,1966],{"class":466},[460,22263,22264],{"class":462,"line":494},[460,22265,821],{"class":466},[460,22267,22268,22270,22272],{"class":462,"line":500},[460,22269,16759],{"class":887},[460,22271,18514],{"class":929},[460,22273,10758],{"class":466},[460,22275,22276],{"class":462,"line":506},[460,22277,18115],{"class":466},[460,22279,22280,22282,22284,22286,22289],{"class":462,"line":512},[460,22281,18525],{"class":887},[460,22283,21723],{"class":466},[460,22285,894],{"class":887},[460,22287,22288],{"class":929},"test03",[460,22290,22142],{"class":466},[460,22292,22293,22295,22297,22299,22301,22303,22305,22307],{"class":462,"line":518},[460,22294,18120],{"class":466},[460,22296,17750],{"class":887},[460,22298,21913],{"class":1353},[460,22300,17750],{"class":887},[460,22302,21748],{"class":466},[460,22304,17750],{"class":887},[460,22306,17815],{"class":466},[460,22308,22309],{"class":942}," \u002F\u002F100\n",[460,22311,22312],{"class":462,"line":525},[460,22313,821],{"class":466},[14,22315,22316],{},"4.有参有返",[451,22318,22320],{"className":16745,"code":22319,"language":16747,"meta":32,"style":32},"int test04(int a)\n{\n    cout\u003C\u003C\"hello\"\u003C\u003Cendl;\n    return a;\n}\nint mian()\n{\n    int b=1;\n    int c=test04(b);\n    cout\u003C\u003Cc\u003C\u003Cendl; \u002F\u002F1\n}\n",[457,22321,22322,22337,22341,22354,22360,22364,22373,22377,22389,22403,22418],{"__ignoreMap":32},[460,22323,22324,22326,22329,22331,22333,22335],{"class":462,"line":463},[460,22325,16759],{"class":887},[460,22327,22328],{"class":929}," test04",[460,22330,2174],{"class":466},[460,22332,16759],{"class":887},[460,22334,2574],{"class":3380},[460,22336,3754],{"class":466},[460,22338,22339],{"class":462,"line":476},[460,22340,18115],{"class":466},[460,22342,22343,22345,22347,22350,22352],{"class":462,"line":482},[460,22344,18120],{"class":466},[460,22346,17750],{"class":887},[460,22348,22349],{"class":1353},"\"hello\"",[460,22351,17750],{"class":887},[460,22353,17772],{"class":466},[460,22355,22356,22358],{"class":462,"line":488},[460,22357,20605],{"class":887},[460,22359,18002],{"class":466},[460,22361,22362],{"class":462,"line":494},[460,22363,821],{"class":466},[460,22365,22366,22368,22371],{"class":462,"line":500},[460,22367,16759],{"class":887},[460,22369,22370],{"class":929}," mian",[460,22372,10758],{"class":466},[460,22374,22375],{"class":462,"line":506},[460,22376,18115],{"class":466},[460,22378,22379,22381,22383,22385,22387],{"class":462,"line":512},[460,22380,18525],{"class":887},[460,22382,19355],{"class":466},[460,22384,894],{"class":887},[460,22386,901],{"class":900},[460,22388,1966],{"class":466},[460,22390,22391,22393,22395,22397,22400],{"class":462,"line":518},[460,22392,18525],{"class":887},[460,22394,19371],{"class":466},[460,22396,894],{"class":887},[460,22398,22399],{"class":929},"test04",[460,22401,22402],{"class":466},"(b);\n",[460,22404,22405,22407,22409,22411,22413,22415],{"class":462,"line":525},[460,22406,18120],{"class":466},[460,22408,17750],{"class":887},[460,22410,17030],{"class":466},[460,22412,17750],{"class":887},[460,22414,17815],{"class":466},[460,22416,22417],{"class":942}," \u002F\u002F1\n",[460,22419,22420],{"class":462,"line":531},[460,22421,821],{"class":466},[18,22423,22425],{"id":22424},"_25函数的声明","2.5函数的声明",[14,22427,22428],{},"作用：告诉编译器函数名称以及如何调用函数，函数的实际主体可以单独定义",[14,22430,22431,22432],{},"函数的",[3944,22433,22434],{},"声明可以多次，但是函数的定义只能有一次",[451,22436,22438],{"className":16745,"code":22437,"language":16747,"meta":32,"style":32},"\u002F\u002F函数声明\n\u002F\u002F比较函数，实现两个整型数字进行比较，返回较大的值\nint max(int a,int b);\u002F\u002F这样函数就可以写在后面，不报错了\nint main() \n{\n    int a=10;\n    int b=20;\n    cout\u003C\u003Cmax(a,b)\u003C\u003Cendl;\n}\nint max(int a,int b)\n{\n    return a>b?a:b;\n}\n",[457,22439,22440,22445,22450,22474,22483,22487,22499,22511,22526,22530,22550,22554,22573],{"__ignoreMap":32},[460,22441,22442],{"class":462,"line":463},[460,22443,22444],{"class":942},"\u002F\u002F函数声明\n",[460,22446,22447],{"class":462,"line":476},[460,22448,22449],{"class":942},"\u002F\u002F比较函数，实现两个整型数字进行比较，返回较大的值\n",[460,22451,22452,22454,22456,22458,22460,22462,22464,22466,22468,22471],{"class":462,"line":482},[460,22453,16759],{"class":887},[460,22455,13319],{"class":929},[460,22457,2174],{"class":466},[460,22459,16759],{"class":887},[460,22461,2574],{"class":3380},[460,22463,3986],{"class":466},[460,22465,16759],{"class":887},[460,22467,19355],{"class":3380},[460,22469,22470],{"class":466},");",[460,22472,22473],{"class":942},"\u002F\u002F这样函数就可以写在后面，不报错了\n",[460,22475,22476,22478,22480],{"class":462,"line":488},[460,22477,16759],{"class":887},[460,22479,18514],{"class":929},[460,22481,22482],{"class":466},"() \n",[460,22484,22485],{"class":462,"line":494},[460,22486,18115],{"class":466},[460,22488,22489,22491,22493,22495,22497],{"class":462,"line":500},[460,22490,18525],{"class":887},[460,22492,2574],{"class":466},[460,22494,894],{"class":887},[460,22496,2096],{"class":900},[460,22498,1966],{"class":466},[460,22500,22501,22503,22505,22507,22509],{"class":462,"line":506},[460,22502,18525],{"class":887},[460,22504,19355],{"class":466},[460,22506,894],{"class":887},[460,22508,2110],{"class":900},[460,22510,1966],{"class":466},[460,22512,22513,22515,22517,22519,22522,22524],{"class":462,"line":512},[460,22514,18120],{"class":466},[460,22516,17750],{"class":887},[460,22518,13378],{"class":929},[460,22520,22521],{"class":466},"(a,b)",[460,22523,17750],{"class":887},[460,22525,17772],{"class":466},[460,22527,22528],{"class":462,"line":518},[460,22529,821],{"class":466},[460,22531,22532,22534,22536,22538,22540,22542,22544,22546,22548],{"class":462,"line":525},[460,22533,16759],{"class":887},[460,22535,13319],{"class":929},[460,22537,2174],{"class":466},[460,22539,16759],{"class":887},[460,22541,2574],{"class":3380},[460,22543,3986],{"class":466},[460,22545,16759],{"class":887},[460,22547,19355],{"class":3380},[460,22549,3754],{"class":466},[460,22551,22552],{"class":462,"line":531},[460,22553,18115],{"class":466},[460,22555,22556,22558,22560,22562,22564,22566,22568,22570],{"class":462,"line":537},[460,22557,20605],{"class":887},[460,22559,2574],{"class":466},[460,22561,17668],{"class":887},[460,22563,17005],{"class":466},[460,22565,8258],{"class":887},[460,22567,2756],{"class":466},[460,22569,1357],{"class":887},[460,22571,22572],{"class":466},"b;\n",[460,22574,22575],{"class":462,"line":543},[460,22576,821],{"class":466},[18,22578,22580],{"id":22579},"_26函数的分文件编写","2.6函数的分文件编写",[14,22582,22583],{},"4个步骤：",[40,22585,22586,22589,22592,22595],{},[43,22587,22588],{},"1.创建后缀名为.h的头文件",[43,22590,22591],{},"2.创建后缀名为.cpp的源文件",[43,22593,22594],{},"3.在头文件中写函数的定义",[43,22596,22597],{},"4.在源文件中写函数的定义\n示例：",[14,22599,22600],{},"头文件：swap.h",[451,22602,22604],{"className":16745,"code":22603,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n\u002F\u002F函数声明\nvoid swap(int a,int b);\n",[457,22605,22606,22612,22622,22626],{"__ignoreMap":32},[460,22607,22608,22610],{"class":462,"line":463},[460,22609,18491],{"class":887},[460,22611,18494],{"class":1353},[460,22613,22614,22616,22618,22620],{"class":462,"line":476},[460,22615,18499],{"class":887},[460,22617,18502],{"class":887},[460,22619,18505],{"class":929},[460,22621,1966],{"class":466},[460,22623,22624],{"class":462,"line":482},[460,22625,22444],{"class":942},[460,22627,22628,22630,22632,22634,22636,22638,22640,22642,22644],{"class":462,"line":488},[460,22629,21870],{"class":887},[460,22631,21873],{"class":929},[460,22633,2174],{"class":466},[460,22635,16759],{"class":887},[460,22637,2574],{"class":3380},[460,22639,3986],{"class":466},[460,22641,16759],{"class":887},[460,22643,19355],{"class":3380},[460,22645,2254],{"class":466},[14,22647,22648],{},"源文件：swap.cpp",[451,22650,22652],{"className":16745,"code":22651,"language":16747,"meta":32,"style":32},"#include \"swap.h\"\n\u002F\u002F函数的定义\nvoid swap(int a,int b)\n{\n    int temp=a;\n    a=b;\n    b=temp;\n    cout\u003C\u003C\"a=\"\u003C\u003Ca\u003C\u003Cendl;\n    cout\u003C\u003C\"b=\"\u003C\u003Cb\u003C\u003Cendl;\n}\n",[457,22653,22654,22661,22666,22686,22690,22701,22710,22719,22736,22753],{"__ignoreMap":32},[460,22655,22656,22658],{"class":462,"line":463},[460,22657,18491],{"class":887},[460,22659,22660],{"class":1353}," \"swap.h\"\n",[460,22662,22663],{"class":462,"line":476},[460,22664,22665],{"class":942},"\u002F\u002F函数的定义\n",[460,22667,22668,22670,22672,22674,22676,22678,22680,22682,22684],{"class":462,"line":482},[460,22669,21870],{"class":887},[460,22671,21873],{"class":929},[460,22673,2174],{"class":466},[460,22675,16759],{"class":887},[460,22677,2574],{"class":3380},[460,22679,3986],{"class":466},[460,22681,16759],{"class":887},[460,22683,19355],{"class":3380},[460,22685,3754],{"class":466},[460,22687,22688],{"class":462,"line":488},[460,22689,18115],{"class":466},[460,22691,22692,22694,22696,22698],{"class":462,"line":494},[460,22693,18525],{"class":887},[460,22695,20768],{"class":466},[460,22697,894],{"class":887},[460,22699,22700],{"class":466},"a;\n",[460,22702,22703,22706,22708],{"class":462,"line":500},[460,22704,22705],{"class":466},"    a",[460,22707,894],{"class":887},[460,22709,22572],{"class":466},[460,22711,22712,22715,22717],{"class":462,"line":506},[460,22713,22714],{"class":466},"    b",[460,22716,894],{"class":887},[460,22718,20793],{"class":466},[460,22720,22721,22723,22725,22728,22730,22732,22734],{"class":462,"line":512},[460,22722,18120],{"class":466},[460,22724,17750],{"class":887},[460,22726,22727],{"class":1353},"\"a=\"",[460,22729,17750],{"class":887},[460,22731,2756],{"class":466},[460,22733,17750],{"class":887},[460,22735,17772],{"class":466},[460,22737,22738,22740,22742,22745,22747,22749,22751],{"class":462,"line":518},[460,22739,18120],{"class":466},[460,22741,17750],{"class":887},[460,22743,22744],{"class":1353},"\"b=\"",[460,22746,17750],{"class":887},[460,22748,17005],{"class":466},[460,22750,17750],{"class":887},[460,22752,17772],{"class":466},[460,22754,22755],{"class":462,"line":525},[460,22756,821],{"class":466},[1944,22758,22759],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":22761},[22762,22763,22764,22765,22766,22767],{"id":21681,"depth":476,"text":21682},{"id":21767,"depth":476,"text":21768},{"id":21850,"depth":476,"text":21851},{"id":22076,"depth":476,"text":22077},{"id":22424,"depth":476,"text":22425},{"id":22579,"depth":476,"text":22580},{},"\u002Fwiki\u002F2026-05-24-c++\u002Fch2",{"title":21673,"description":32},"wiki\u002F2026-05-24-c++学习\u002Fch2-函数","u7fvjnBVwC9MwO8e-TA4xJeO-qzH_msHECf1fhCEVWc",{"id":22774,"title":22775,"body":22776,"description":22783,"extension":16683,"meta":24182,"navigation":521,"path":24183,"seo":24184,"stem":24185,"__hash__":24186},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Fch3-指针.md","3.指针",{"type":7,"value":22777,"toc":24172},[22778,22781,22784,22788,22948,22952,22955,22958,22961,22964,23103,23107,23110,23113,23116,23181,23185,23190,23257,23260,23264,23267,23278,23283,23302,23305,23310,23328,23331,23335,23354,23357,23361,23596,23600,23603,23606,23609,23771,23774,23778,23781,23787,24169],[10,22779,22775],{"id":22780},"_3指针",[14,22782,22783],{},"通过指针保存一个地址，指针就是个地址",[18,22785,22787],{"id":22786},"_31定义指针","3.1定义指针",[451,22789,22791],{"className":16745,"code":22790,"language":16747,"meta":32,"style":32},"int main()\n{\n    \u002F\u002F1.定义指针\n    int a=10;\n    \u002F\u002F指针定义语法：数据类型*指针变量名;\n    int*p;\n    p=&a;\n    cout\u003C\u003C\"a的地址为：\"\u003C\u003C&a\u003C\u003Cendl;\n    cout\u003C\u003C\"指针p为：\"\u003C\u003Cp\u003C\u003Cendl;\u002F\u002F指针p表示的就是a的地址\n\n    \u002F\u002F2.使用指针\n    \u002F\u002F可以通过解引用的方式来找到指针指向的内存\n    \u002F\u002F指针前加*代表解引用，找到指针指向的内存中的数据\n    *p=1000;\n    cout\u003C\u003C*p\u003C\u003Cendl;\u002F\u002F1000\n    cout\u003C\u003Ca\u003C\u003Cendl;\u002F\u002F1000\n}\n",[457,22792,22793,22801,22805,22810,22822,22827,22835,22845,22863,22883,22887,22892,22897,22902,22914,22930,22944],{"__ignoreMap":32},[460,22794,22795,22797,22799],{"class":462,"line":463},[460,22796,16759],{"class":887},[460,22798,18514],{"class":929},[460,22800,10758],{"class":466},[460,22802,22803],{"class":462,"line":476},[460,22804,18115],{"class":466},[460,22806,22807],{"class":462,"line":482},[460,22808,22809],{"class":942},"    \u002F\u002F1.定义指针\n",[460,22811,22812,22814,22816,22818,22820],{"class":462,"line":488},[460,22813,18525],{"class":887},[460,22815,2574],{"class":466},[460,22817,894],{"class":887},[460,22819,2096],{"class":900},[460,22821,1966],{"class":466},[460,22823,22824],{"class":462,"line":494},[460,22825,22826],{"class":942},"    \u002F\u002F指针定义语法：数据类型*指针变量名;\n",[460,22828,22829,22832],{"class":462,"line":500},[460,22830,22831],{"class":887},"    int*",[460,22833,22834],{"class":466},"p;\n",[460,22836,22837,22840,22843],{"class":462,"line":506},[460,22838,22839],{"class":466},"    p",[460,22841,22842],{"class":887},"=&",[460,22844,22700],{"class":466},[460,22846,22847,22849,22851,22854,22857,22859,22861],{"class":462,"line":512},[460,22848,18120],{"class":466},[460,22850,17750],{"class":887},[460,22852,22853],{"class":1353},"\"a的地址为：\"",[460,22855,22856],{"class":887},"\u003C\u003C&",[460,22858,2756],{"class":466},[460,22860,17750],{"class":887},[460,22862,17772],{"class":466},[460,22864,22865,22867,22869,22872,22874,22876,22878,22880],{"class":462,"line":518},[460,22866,18120],{"class":466},[460,22868,17750],{"class":887},[460,22870,22871],{"class":1353},"\"指针p为：\"",[460,22873,17750],{"class":887},[460,22875,14],{"class":466},[460,22877,17750],{"class":887},[460,22879,17815],{"class":466},[460,22881,22882],{"class":942},"\u002F\u002F指针p表示的就是a的地址\n",[460,22884,22885],{"class":462,"line":525},[460,22886,522],{"emptyLinePlaceholder":521},[460,22888,22889],{"class":462,"line":531},[460,22890,22891],{"class":942},"    \u002F\u002F2.使用指针\n",[460,22893,22894],{"class":462,"line":537},[460,22895,22896],{"class":942},"    \u002F\u002F可以通过解引用的方式来找到指针指向的内存\n",[460,22898,22899],{"class":462,"line":543},[460,22900,22901],{"class":942},"    \u002F\u002F指针前加*代表解引用，找到指针指向的内存中的数据\n",[460,22903,22904,22906,22908,22910,22912],{"class":462,"line":549},[460,22905,1951],{"class":887},[460,22907,14],{"class":466},[460,22909,894],{"class":887},[460,22911,11412],{"class":900},[460,22913,1966],{"class":466},[460,22915,22916,22918,22921,22923,22925,22927],{"class":462,"line":555},[460,22917,18120],{"class":466},[460,22919,22920],{"class":887},"\u003C\u003C*",[460,22922,14],{"class":466},[460,22924,17750],{"class":887},[460,22926,17815],{"class":466},[460,22928,22929],{"class":942},"\u002F\u002F1000\n",[460,22931,22932,22934,22936,22938,22940,22942],{"class":462,"line":560},[460,22933,18120],{"class":466},[460,22935,17750],{"class":887},[460,22937,2756],{"class":466},[460,22939,17750],{"class":887},[460,22941,17815],{"class":466},[460,22943,22929],{"class":942},[460,22945,22946],{"class":462,"line":566},[460,22947,821],{"class":466},[18,22949,22951],{"id":22950},"_32指针所占的内存空间","3.2指针所占的内存空间",[14,22953,22954],{},"要注意：指针也是一种数据类型，也是要占内存空间的",[14,22956,22957],{},"在32位操作系统下：占用4个字节空间",[14,22959,22960],{},"在64位操作系统下：占用8个字节空间",[14,22962,22963],{},"上方是不管啥数据类型的",[451,22965,22967],{"className":16745,"code":22966,"language":16747,"meta":32,"style":32},"int main()\n{\n    \u002F\u002F指针所占内存空间\n    int a=10;\n    \u002F\u002Fint *p;\n    \u002F\u002Fp=&a;\n    \u002F\u002F上述可以写为以下：\n    int *p=&a;\n    cout \u003C\u003C\"sizeof(int *)\"\u003C\u003Csizeof(p)\u003C\u003Cendl;\u002F\u002F因为是看数据类型，写int *也可以，因为是int *类型   4字节(32位的话)\n    cout \u003C\u003C\"sizeof(int *)\"\u003C\u003Csizeof(int *)\u003C\u003Cendl  \u002F\u002F4字节(32位的话)\n    cout \u003C\u003C\"sizeof(char *)\"\u003C\u003Csizeof(char *)\u003C\u003Cendl; \u002F\u002F4字节(32位的话)\n}\n",[457,22968,22969,22977,22981,22986,22998,23003,23008,23013,23025,23047,23073,23099],{"__ignoreMap":32},[460,22970,22971,22973,22975],{"class":462,"line":463},[460,22972,16759],{"class":887},[460,22974,18514],{"class":929},[460,22976,10758],{"class":466},[460,22978,22979],{"class":462,"line":476},[460,22980,18115],{"class":466},[460,22982,22983],{"class":462,"line":482},[460,22984,22985],{"class":942},"    \u002F\u002F指针所占内存空间\n",[460,22987,22988,22990,22992,22994,22996],{"class":462,"line":488},[460,22989,18525],{"class":887},[460,22991,2574],{"class":466},[460,22993,894],{"class":887},[460,22995,2096],{"class":900},[460,22997,1966],{"class":466},[460,22999,23000],{"class":462,"line":494},[460,23001,23002],{"class":942},"    \u002F\u002Fint *p;\n",[460,23004,23005],{"class":462,"line":500},[460,23006,23007],{"class":942},"    \u002F\u002Fp=&a;\n",[460,23009,23010],{"class":462,"line":506},[460,23011,23012],{"class":942},"    \u002F\u002F上述可以写为以下：\n",[460,23014,23015,23017,23019,23021,23023],{"class":462,"line":512},[460,23016,18525],{"class":887},[460,23018,8325],{"class":887},[460,23020,14],{"class":466},[460,23022,22842],{"class":887},[460,23024,22700],{"class":466},[460,23026,23027,23030,23032,23035,23037,23040,23042,23044],{"class":462,"line":518},[460,23028,23029],{"class":466},"    cout ",[460,23031,17750],{"class":887},[460,23033,23034],{"class":1353},"\"sizeof(int *)\"",[460,23036,17943],{"class":887},[460,23038,23039],{"class":466},"(p)",[460,23041,17750],{"class":887},[460,23043,17815],{"class":466},[460,23045,23046],{"class":942},"\u002F\u002F因为是看数据类型，写int *也可以，因为是int *类型   4字节(32位的话)\n",[460,23048,23049,23051,23053,23055,23057,23059,23061,23063,23065,23067,23070],{"class":462,"line":525},[460,23050,23029],{"class":466},[460,23052,17750],{"class":887},[460,23054,23034],{"class":1353},[460,23056,17943],{"class":887},[460,23058,2174],{"class":466},[460,23060,16759],{"class":887},[460,23062,8325],{"class":887},[460,23064,8411],{"class":466},[460,23066,17750],{"class":887},[460,23068,23069],{"class":466},"endl",[460,23071,23072],{"class":942},"  \u002F\u002F4字节(32位的话)\n",[460,23074,23075,23077,23079,23082,23084,23086,23088,23090,23092,23094,23096],{"class":462,"line":531},[460,23076,23029],{"class":466},[460,23078,17750],{"class":887},[460,23080,23081],{"class":1353},"\"sizeof(char *)\"",[460,23083,17943],{"class":887},[460,23085,2174],{"class":466},[460,23087,16844],{"class":887},[460,23089,8325],{"class":887},[460,23091,8411],{"class":466},[460,23093,17750],{"class":887},[460,23095,17815],{"class":466},[460,23097,23098],{"class":942}," \u002F\u002F4字节(32位的话)\n",[460,23100,23101],{"class":462,"line":537},[460,23102,821],{"class":466},[18,23104,23106],{"id":23105},"_33空指针","3.3空指针",[14,23108,23109],{},"空指针：指针变量指向内存中编号为0的空间",[14,23111,23112],{},"用途：初始化指针变量",[14,23114,23115],{},"注意：空指针指向的内存是不可以访问的",[451,23117,23119],{"className":16745,"code":23118,"language":16747,"meta":32,"style":32},"int main()\n{\n    \u002F\u002F1.空指针用于给指针变量进行初始化\n    int *p=NULL;\n    \u002F\u002F2.空指针不能进行访问\n    *p=100;\u002F\u002F直接报错，压根不能访问\n    \u002F\u002F0～255之间的内存编号是系统占用的，因此不可以访问\n}\n",[457,23120,23121,23129,23133,23138,23152,23157,23172,23177],{"__ignoreMap":32},[460,23122,23123,23125,23127],{"class":462,"line":463},[460,23124,16759],{"class":887},[460,23126,18514],{"class":929},[460,23128,10758],{"class":466},[460,23130,23131],{"class":462,"line":476},[460,23132,18115],{"class":466},[460,23134,23135],{"class":462,"line":482},[460,23136,23137],{"class":942},"    \u002F\u002F1.空指针用于给指针变量进行初始化\n",[460,23139,23140,23142,23144,23146,23148,23150],{"class":462,"line":488},[460,23141,18525],{"class":887},[460,23143,8325],{"class":887},[460,23145,14],{"class":466},[460,23147,894],{"class":887},[460,23149,18927],{"class":900},[460,23151,1966],{"class":466},[460,23153,23154],{"class":462,"line":494},[460,23155,23156],{"class":942},"    \u002F\u002F2.空指针不能进行访问\n",[460,23158,23159,23161,23163,23165,23167,23169],{"class":462,"line":500},[460,23160,1951],{"class":887},[460,23162,14],{"class":466},[460,23164,894],{"class":887},[460,23166,2325],{"class":900},[460,23168,16807],{"class":466},[460,23170,23171],{"class":942},"\u002F\u002F直接报错，压根不能访问\n",[460,23173,23174],{"class":462,"line":506},[460,23175,23176],{"class":942},"    \u002F\u002F0～255之间的内存编号是系统占用的，因此不可以访问\n",[460,23178,23179],{"class":462,"line":512},[460,23180,821],{"class":466},[18,23182,23184],{"id":23183},"_34野指针","3.4野指针",[14,23186,23187],{},[3944,23188,23189],{},"指针变量指向非法的内存空间",[451,23191,23193],{"className":16745,"code":23192,"language":16747,"meta":32,"style":32},"int main()\n{\n    int *p=(int *)0x1100; \u002F\u002F定义了一个指针，直接去指向随便指定的地址-->野指针，是没有访问权限的\n    \u002F\u002F访问野指针报错\n    cout\u003C\u003C*p\u003C\u003Cendl;\n}\n",[457,23194,23195,23203,23207,23236,23241,23253],{"__ignoreMap":32},[460,23196,23197,23199,23201],{"class":462,"line":463},[460,23198,16759],{"class":887},[460,23200,18514],{"class":929},[460,23202,10758],{"class":466},[460,23204,23205],{"class":462,"line":476},[460,23206,18115],{"class":466},[460,23208,23209,23211,23213,23215,23217,23219,23221,23223,23225,23228,23231,23233],{"class":462,"line":482},[460,23210,18525],{"class":887},[460,23212,8325],{"class":887},[460,23214,14],{"class":466},[460,23216,894],{"class":887},[460,23218,2174],{"class":466},[460,23220,16759],{"class":887},[460,23222,8325],{"class":887},[460,23224,8411],{"class":466},[460,23226,23227],{"class":887},"0x",[460,23229,23230],{"class":900},"1100",[460,23232,16807],{"class":466},[460,23234,23235],{"class":942}," \u002F\u002F定义了一个指针，直接去指向随便指定的地址-->野指针，是没有访问权限的\n",[460,23237,23238],{"class":462,"line":488},[460,23239,23240],{"class":942},"    \u002F\u002F访问野指针报错\n",[460,23242,23243,23245,23247,23249,23251],{"class":462,"line":494},[460,23244,18120],{"class":466},[460,23246,22920],{"class":887},[460,23248,14],{"class":466},[460,23250,17750],{"class":887},[460,23252,17772],{"class":466},[460,23254,23255],{"class":462,"line":500},[460,23256,821],{"class":466},[14,23258,23259],{},"空指针和野指针都不是我们申请的空间，因此不要访问",[18,23261,23263],{"id":23262},"_35const修饰指针","3.5const修饰指针",[14,23265,23266],{},"三种情况：",[40,23268,23269,23272,23275],{},[43,23270,23271],{},"const修饰指针 常量指针",[43,23273,23274],{},"const修饰常量 指针常量",[43,23276,23277],{},"const即修饰指针，又修饰常量",[103,23279,23280],{},[43,23281,23282],{},"常量指针",[451,23284,23286],{"className":16745,"code":23285,"language":16747,"meta":32,"style":32},"const int *p=&a;\n",[457,23287,23288],{"__ignoreMap":32},[460,23289,23290,23292,23294,23296,23298,23300],{"class":462,"line":463},[460,23291,888],{"class":887},[460,23293,18917],{"class":887},[460,23295,8325],{"class":887},[460,23297,14],{"class":466},[460,23299,22842],{"class":887},[460,23301,22700],{"class":466},[14,23303,23304],{},"指针的指向可以修改，但是指针指向的值不可以修改，改为指向地址后，这个地址存的值还是这个值",[103,23306,23307],{"start":476},[43,23308,23309],{},"指针常量",[451,23311,23313],{"className":16745,"code":23312,"language":16747,"meta":32,"style":32},"int *const p=&a;\n",[457,23314,23315],{"__ignoreMap":32},[460,23316,23317,23319,23322,23324,23326],{"class":462,"line":463},[460,23318,16759],{"class":887},[460,23320,23321],{"class":887}," *const",[460,23323,12687],{"class":466},[460,23325,22842],{"class":887},[460,23327,22700],{"class":466},[14,23329,23330],{},"指针的指向不可以改，指针指向的值可以改",[103,23332,23333],{"start":482},[43,23334,23277],{},[451,23336,23338],{"className":16745,"code":23337,"language":16747,"meta":32,"style":32},"const int *const p=&a;\n",[457,23339,23340],{"__ignoreMap":32},[460,23341,23342,23344,23346,23348,23350,23352],{"class":462,"line":463},[460,23343,888],{"class":887},[460,23345,18917],{"class":887},[460,23347,23321],{"class":887},[460,23349,12687],{"class":466},[460,23351,22842],{"class":887},[460,23353,22700],{"class":466},[14,23355,23356],{},"指针的指向和指针指向的值都不可以改变",[18,23358,23360],{"id":23359},"_36指针和数组","3.6指针和数组",[451,23362,23364],{"className":16745,"code":23363,"language":16747,"meta":32,"style":32},"int main()\n{\n    \u002F\u002F利用指针访问数组中的元素\n    int arr[10]={1,2,3,4,5,6,7,8,9,10};\n    cout\u003C\u003C\"数组的第一个元素为：\"\u003C\u003Carr[0]\u003C\u003Cendl;\n    int *p=arr;\u002F\u002F注意数才要加取地址符号&\n    cout\u003C\u003C\"数组的第一个元素为：\"\u003C\u003C*p\u003C\u003Cendl;\n    p++; \u002F\u002F让指针向后偏移4个字节\n    cout\u003C\u003C\"数组的第二个元素为：\"\u003C\u003C*p\u003C\u003Cendl;\n    \u002F\u002F利用指针遍历数组\n    int *p2=arr;\n    for (int i=0;i\u003C10;i++)\n    {\n        cout\u003C\u003C*p2\u003C\u003Cendl;\n        p2++;\n    }\n}\n",[457,23365,23366,23374,23378,23383,23437,23458,23474,23490,23501,23518,23523,23537,23563,23567,23579,23588,23592],{"__ignoreMap":32},[460,23367,23368,23370,23372],{"class":462,"line":463},[460,23369,16759],{"class":887},[460,23371,18514],{"class":929},[460,23373,10758],{"class":466},[460,23375,23376],{"class":462,"line":476},[460,23377,18115],{"class":466},[460,23379,23380],{"class":462,"line":482},[460,23381,23382],{"class":942},"    \u002F\u002F利用指针访问数组中的元素\n",[460,23384,23385,23387,23389,23391,23393,23395,23397,23399,23401,23403,23405,23407,23409,23411,23413,23415,23417,23419,23421,23423,23425,23427,23429,23431,23433,23435],{"class":462,"line":488},[460,23386,18525],{"class":887},[460,23388,20478],{"class":466},[460,23390,2096],{"class":900},[460,23392,17649],{"class":466},[460,23394,894],{"class":887},[460,23396,17607],{"class":466},[460,23398,901],{"class":900},[460,23400,3986],{"class":466},[460,23402,907],{"class":900},[460,23404,3986],{"class":466},[460,23406,913],{"class":900},[460,23408,3986],{"class":466},[460,23410,918],{"class":900},[460,23412,3986],{"class":466},[460,23414,7290],{"class":900},[460,23416,3986],{"class":466},[460,23418,4064],{"class":900},[460,23420,3986],{"class":466},[460,23422,6149],{"class":900},[460,23424,3986],{"class":466},[460,23426,17130],{"class":900},[460,23428,3986],{"class":466},[460,23430,17154],{"class":900},[460,23432,3986],{"class":466},[460,23434,2096],{"class":900},[460,23436,20510],{"class":466},[460,23438,23439,23441,23443,23446,23448,23450,23452,23454,23456],{"class":462,"line":494},[460,23440,18120],{"class":466},[460,23442,17750],{"class":887},[460,23444,23445],{"class":1353},"\"数组的第一个元素为：\"",[460,23447,17750],{"class":887},[460,23449,20422],{"class":466},[460,23451,936],{"class":900},[460,23453,17649],{"class":466},[460,23455,17750],{"class":887},[460,23457,17772],{"class":466},[460,23459,23460,23462,23464,23466,23468,23471],{"class":462,"line":500},[460,23461,18525],{"class":887},[460,23463,8325],{"class":887},[460,23465,14],{"class":466},[460,23467,894],{"class":887},[460,23469,23470],{"class":466},"arr;",[460,23472,23473],{"class":942},"\u002F\u002F注意数才要加取地址符号&\n",[460,23475,23476,23478,23480,23482,23484,23486,23488],{"class":462,"line":506},[460,23477,18120],{"class":466},[460,23479,17750],{"class":887},[460,23481,23445],{"class":1353},[460,23483,22920],{"class":887},[460,23485,14],{"class":466},[460,23487,17750],{"class":887},[460,23489,17772],{"class":466},[460,23491,23492,23494,23496,23498],{"class":462,"line":512},[460,23493,22839],{"class":466},[460,23495,18828],{"class":887},[460,23497,16807],{"class":466},[460,23499,23500],{"class":942}," \u002F\u002F让指针向后偏移4个字节\n",[460,23502,23503,23505,23507,23510,23512,23514,23516],{"class":462,"line":518},[460,23504,18120],{"class":466},[460,23506,17750],{"class":887},[460,23508,23509],{"class":1353},"\"数组的第二个元素为：\"",[460,23511,22920],{"class":887},[460,23513,14],{"class":466},[460,23515,17750],{"class":887},[460,23517,17772],{"class":466},[460,23519,23520],{"class":462,"line":525},[460,23521,23522],{"class":942},"    \u002F\u002F利用指针遍历数组\n",[460,23524,23525,23527,23529,23532,23534],{"class":462,"line":531},[460,23526,18525],{"class":887},[460,23528,8325],{"class":887},[460,23530,23531],{"class":466},"p2",[460,23533,894],{"class":887},[460,23535,23536],{"class":466},"arr;\n",[460,23538,23539,23541,23543,23545,23547,23549,23551,23553,23555,23557,23559,23561],{"class":462,"line":537},[460,23540,19722],{"class":887},[460,23542,11704],{"class":466},[460,23544,16759],{"class":887},[460,23546,10169],{"class":466},[460,23548,894],{"class":887},[460,23550,936],{"class":900},[460,23552,19560],{"class":466},[460,23554,781],{"class":887},[460,23556,2096],{"class":900},[460,23558,19560],{"class":466},[460,23560,18828],{"class":887},[460,23562,3754],{"class":466},[460,23564,23565],{"class":462,"line":543},[460,23566,18570],{"class":466},[460,23568,23569,23571,23573,23575,23577],{"class":462,"line":549},[460,23570,19972],{"class":466},[460,23572,22920],{"class":887},[460,23574,23531],{"class":466},[460,23576,17750],{"class":887},[460,23578,17772],{"class":466},[460,23580,23581,23584,23586],{"class":462,"line":555},[460,23582,23583],{"class":466},"        p2",[460,23585,18828],{"class":887},[460,23587,1966],{"class":466},[460,23589,23590],{"class":462,"line":560},[460,23591,509],{"class":466},[460,23593,23594],{"class":462,"line":566},[460,23595,821],{"class":466},[18,23597,23599],{"id":23598},"_37指针和函数","3.7指针和函数",[14,23601,23602],{},"利用指针做函数参数，可以修改实参的值",[14,23604,23605],{},"值传递：只改变形参，不改变实参",[14,23607,23608],{},"地址传递：",[451,23610,23612],{"className":16745,"code":23611,"language":16747,"meta":32,"style":32},"void swap(int *p1,int *p2)\n{\n    int temp=*p1;\n    *p1=*p2;\n    *p2=temp;\n}\nint main()\n{\n    int a=10;\n    int b=20;\n    \u002F\u002F地址传递\n    swap(&a,&b);\n    cout\u003C\u003Ca\u003C\u003Cendl;\u002F\u002F20\n    cout\u003C\u003Cb\u003C\u003Cendl;\u002F\u002F10\n}\n",[457,23613,23614,23639,23643,23655,23666,23676,23680,23688,23692,23704,23716,23721,23737,23752,23767],{"__ignoreMap":32},[460,23615,23616,23618,23620,23622,23624,23626,23629,23631,23633,23635,23637],{"class":462,"line":463},[460,23617,21870],{"class":887},[460,23619,21873],{"class":929},[460,23621,2174],{"class":466},[460,23623,16759],{"class":887},[460,23625,8325],{"class":887},[460,23627,23628],{"class":3380},"p1",[460,23630,3986],{"class":466},[460,23632,16759],{"class":887},[460,23634,8325],{"class":887},[460,23636,23531],{"class":3380},[460,23638,3754],{"class":466},[460,23640,23641],{"class":462,"line":476},[460,23642,18115],{"class":466},[460,23644,23645,23647,23649,23652],{"class":462,"line":482},[460,23646,18525],{"class":887},[460,23648,20768],{"class":466},[460,23650,23651],{"class":887},"=*",[460,23653,23654],{"class":466},"p1;\n",[460,23656,23657,23659,23661,23663],{"class":462,"line":488},[460,23658,1951],{"class":887},[460,23660,23628],{"class":466},[460,23662,23651],{"class":887},[460,23664,23665],{"class":466},"p2;\n",[460,23667,23668,23670,23672,23674],{"class":462,"line":494},[460,23669,1951],{"class":887},[460,23671,23531],{"class":466},[460,23673,894],{"class":887},[460,23675,20793],{"class":466},[460,23677,23678],{"class":462,"line":500},[460,23679,821],{"class":466},[460,23681,23682,23684,23686],{"class":462,"line":506},[460,23683,16759],{"class":887},[460,23685,18514],{"class":929},[460,23687,10758],{"class":466},[460,23689,23690],{"class":462,"line":512},[460,23691,18115],{"class":466},[460,23693,23694,23696,23698,23700,23702],{"class":462,"line":518},[460,23695,18525],{"class":887},[460,23697,2574],{"class":466},[460,23699,894],{"class":887},[460,23701,2096],{"class":900},[460,23703,1966],{"class":466},[460,23705,23706,23708,23710,23712,23714],{"class":462,"line":525},[460,23707,18525],{"class":887},[460,23709,19355],{"class":466},[460,23711,894],{"class":887},[460,23713,2110],{"class":900},[460,23715,1966],{"class":466},[460,23717,23718],{"class":462,"line":531},[460,23719,23720],{"class":942},"    \u002F\u002F地址传递\n",[460,23722,23723,23725,23727,23729,23732,23734],{"class":462,"line":537},[460,23724,22067],{"class":929},[460,23726,2174],{"class":466},[460,23728,17090],{"class":887},[460,23730,23731],{"class":466},"a,",[460,23733,17090],{"class":887},[460,23735,23736],{"class":466},"b);\n",[460,23738,23739,23741,23743,23745,23747,23749],{"class":462,"line":543},[460,23740,18120],{"class":466},[460,23742,17750],{"class":887},[460,23744,2756],{"class":466},[460,23746,17750],{"class":887},[460,23748,17815],{"class":466},[460,23750,23751],{"class":942},"\u002F\u002F20\n",[460,23753,23754,23756,23758,23760,23762,23764],{"class":462,"line":549},[460,23755,18120],{"class":466},[460,23757,17750],{"class":887},[460,23759,17005],{"class":466},[460,23761,17750],{"class":887},[460,23763,17815],{"class":466},[460,23765,23766],{"class":942},"\u002F\u002F10\n",[460,23768,23769],{"class":462,"line":555},[460,23770,821],{"class":466},[14,23772,23773],{},"总结：不想修改实参，就用值传递；想修改实参，就用值传递",[18,23775,23777],{"id":23776},"_38指针数组函数组合案例","3.8指针，数组，函数组合案例",[14,23779,23780],{},"案例描述：封装一个函数，利用冒泡排序，实现对整数数组的升序排序",[14,23782,23783,23784,23786],{},"例如数组：int arr",[460,23785,2096],{},"={4,3,6,9,1,2,10,8,7,5}",[451,23788,23790],{"className":16745,"code":23789,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nvoid bubbleSort(int *p,int len)\n{\n    for(int i=0;i\u003Clen-1;i++)\n    {\n        for(int j=0;j\u003Clen-i-1;j++)\n        {\n            if(p[j]>p[j+1])\n            {\n                int temp=p[j];\n                p[j]=p[j+1];\n                p[j+1]=temp;\n            }\n        }\n    }\n}\n\nint main()\n{\n    \u002F\u002F 1.创建数组\n    int arr[10]={4,3,6,9,1,2,10,8,7,5};\n    int len=10;\n    int *p=arr;\n    \u002F\u002F 2.创建函数，实现冒泡排序\n    bubbleSort(p,len);\n\n    \u002F\u002F 3.打印排序后的数组\n    for (int i=0; i\u003Clen; i++)\n    {\n        cout\u003C\u003C*p\u003C\u003C\"\";\n        p++;\n    }\n}\n",[457,23791,23792,23798,23808,23832,23836,23867,23871,23905,23909,23927,23931,23942,23957,23972,23976,23980,23984,23988,23992,24000,24004,24009,24063,24075,24087,24092,24100,24104,24109,24134,24138,24152,24161,24165],{"__ignoreMap":32},[460,23793,23794,23796],{"class":462,"line":463},[460,23795,18491],{"class":887},[460,23797,18494],{"class":1353},[460,23799,23800,23802,23804,23806],{"class":462,"line":476},[460,23801,18499],{"class":887},[460,23803,18502],{"class":887},[460,23805,18505],{"class":929},[460,23807,1966],{"class":466},[460,23809,23810,23812,23815,23817,23819,23821,23823,23825,23827,23830],{"class":462,"line":482},[460,23811,21870],{"class":887},[460,23813,23814],{"class":929}," bubbleSort",[460,23816,2174],{"class":466},[460,23818,16759],{"class":887},[460,23820,8325],{"class":887},[460,23822,14],{"class":3380},[460,23824,3986],{"class":466},[460,23826,16759],{"class":887},[460,23828,23829],{"class":3380}," len",[460,23831,3754],{"class":466},[460,23833,23834],{"class":462,"line":488},[460,23835,18115],{"class":466},[460,23837,23838,23840,23842,23844,23846,23848,23850,23852,23854,23857,23859,23861,23863,23865],{"class":462,"line":494},[460,23839,19722],{"class":887},[460,23841,2174],{"class":466},[460,23843,16759],{"class":887},[460,23845,10169],{"class":466},[460,23847,894],{"class":887},[460,23849,936],{"class":900},[460,23851,19560],{"class":466},[460,23853,781],{"class":887},[460,23855,23856],{"class":466},"len",[460,23858,17259],{"class":887},[460,23860,901],{"class":900},[460,23862,19560],{"class":466},[460,23864,18828],{"class":887},[460,23866,3754],{"class":466},[460,23868,23869],{"class":462,"line":500},[460,23870,18570],{"class":466},[460,23872,23873,23875,23877,23879,23881,23883,23885,23887,23889,23891,23893,23895,23897,23899,23901,23903],{"class":462,"line":506},[460,23874,19924],{"class":887},[460,23876,2174],{"class":466},[460,23878,16759],{"class":887},[460,23880,19931],{"class":466},[460,23882,894],{"class":887},[460,23884,936],{"class":900},[460,23886,19938],{"class":466},[460,23888,781],{"class":887},[460,23890,23856],{"class":466},[460,23892,17259],{"class":887},[460,23894,17174],{"class":466},[460,23896,17259],{"class":887},[460,23898,901],{"class":900},[460,23900,19938],{"class":466},[460,23902,18828],{"class":887},[460,23904,3754],{"class":466},[460,23906,23907],{"class":462,"line":512},[460,23908,1390],{"class":466},[460,23910,23911,23913,23916,23918,23921,23923,23925],{"class":462,"line":518},[460,23912,21153],{"class":887},[460,23914,23915],{"class":466},"(p[j]",[460,23917,17668],{"class":887},[460,23919,23920],{"class":466},"p[j",[460,23922,8495],{"class":887},[460,23924,901],{"class":900},[460,23926,13249],{"class":466},[460,23928,23929],{"class":462,"line":525},[460,23930,21172],{"class":466},[460,23932,23933,23935,23937,23939],{"class":462,"line":531},[460,23934,21177],{"class":887},[460,23936,20768],{"class":466},[460,23938,894],{"class":887},[460,23940,23941],{"class":466},"p[j];\n",[460,23943,23944,23947,23949,23951,23953,23955],{"class":462,"line":537},[460,23945,23946],{"class":466},"                p[j]",[460,23948,894],{"class":887},[460,23950,23920],{"class":466},[460,23952,8495],{"class":887},[460,23954,901],{"class":900},[460,23956,21200],{"class":466},[460,23958,23959,23962,23964,23966,23968,23970],{"class":462,"line":543},[460,23960,23961],{"class":466},"                p[j",[460,23963,8495],{"class":887},[460,23965,901],{"class":900},[460,23967,17649],{"class":466},[460,23969,894],{"class":887},[460,23971,20793],{"class":466},[460,23973,23974],{"class":462,"line":549},[460,23975,21220],{"class":466},[460,23977,23978],{"class":462,"line":555},[460,23979,3858],{"class":466},[460,23981,23982],{"class":462,"line":560},[460,23983,509],{"class":466},[460,23985,23986],{"class":462,"line":566},[460,23987,821],{"class":466},[460,23989,23990],{"class":462,"line":572},[460,23991,522],{"emptyLinePlaceholder":521},[460,23993,23994,23996,23998],{"class":462,"line":578},[460,23995,16759],{"class":887},[460,23997,18514],{"class":929},[460,23999,10758],{"class":466},[460,24001,24002],{"class":462,"line":812},[460,24003,18115],{"class":466},[460,24005,24006],{"class":462,"line":818},[460,24007,24008],{"class":942},"    \u002F\u002F 1.创建数组\n",[460,24010,24011,24013,24015,24017,24019,24021,24023,24025,24027,24029,24031,24033,24035,24037,24039,24041,24043,24045,24047,24049,24051,24053,24055,24057,24059,24061],{"class":462,"line":824},[460,24012,18525],{"class":887},[460,24014,20478],{"class":466},[460,24016,2096],{"class":900},[460,24018,17649],{"class":466},[460,24020,894],{"class":887},[460,24022,17607],{"class":466},[460,24024,918],{"class":900},[460,24026,3986],{"class":466},[460,24028,913],{"class":900},[460,24030,3986],{"class":466},[460,24032,4064],{"class":900},[460,24034,3986],{"class":466},[460,24036,17154],{"class":900},[460,24038,3986],{"class":466},[460,24040,901],{"class":900},[460,24042,3986],{"class":466},[460,24044,907],{"class":900},[460,24046,3986],{"class":466},[460,24048,2096],{"class":900},[460,24050,3986],{"class":466},[460,24052,17130],{"class":900},[460,24054,3986],{"class":466},[460,24056,6149],{"class":900},[460,24058,3986],{"class":466},[460,24060,7290],{"class":900},[460,24062,20510],{"class":466},[460,24064,24065,24067,24069,24071,24073],{"class":462,"line":2074},[460,24066,18525],{"class":887},[460,24068,23829],{"class":466},[460,24070,894],{"class":887},[460,24072,2096],{"class":900},[460,24074,1966],{"class":466},[460,24076,24077,24079,24081,24083,24085],{"class":462,"line":2088},[460,24078,18525],{"class":887},[460,24080,8325],{"class":887},[460,24082,14],{"class":466},[460,24084,894],{"class":887},[460,24086,23536],{"class":466},[460,24088,24089],{"class":462,"line":2103},[460,24090,24091],{"class":942},"    \u002F\u002F 2.创建函数，实现冒泡排序\n",[460,24093,24094,24097],{"class":462,"line":2122},[460,24095,24096],{"class":929},"    bubbleSort",[460,24098,24099],{"class":466},"(p,len);\n",[460,24101,24102],{"class":462,"line":2144},[460,24103,522],{"emptyLinePlaceholder":521},[460,24105,24106],{"class":462,"line":2158},[460,24107,24108],{"class":942},"    \u002F\u002F 3.打印排序后的数组\n",[460,24110,24111,24113,24115,24117,24119,24121,24123,24125,24127,24130,24132],{"class":462,"line":2163},[460,24112,19722],{"class":887},[460,24114,11704],{"class":466},[460,24116,16759],{"class":887},[460,24118,10169],{"class":466},[460,24120,894],{"class":887},[460,24122,936],{"class":900},[460,24124,19735],{"class":466},[460,24126,781],{"class":887},[460,24128,24129],{"class":466},"len; i",[460,24131,18828],{"class":887},[460,24133,3754],{"class":466},[460,24135,24136],{"class":462,"line":2168},[460,24137,18570],{"class":466},[460,24139,24140,24142,24144,24146,24148,24150],{"class":462,"line":2183},[460,24141,19972],{"class":466},[460,24143,22920],{"class":887},[460,24145,14],{"class":466},[460,24147,17750],{"class":887},[460,24149,6606],{"class":1353},[460,24151,1966],{"class":466},[460,24153,24154,24157,24159],{"class":462,"line":2194},[460,24155,24156],{"class":466},"        p",[460,24158,18828],{"class":887},[460,24160,1966],{"class":466},[460,24162,24163],{"class":462,"line":2199},[460,24164,509],{"class":466},[460,24166,24167],{"class":462,"line":2204},[460,24168,821],{"class":466},[1944,24170,24171],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":24173},[24174,24175,24176,24177,24178,24179,24180,24181],{"id":22786,"depth":476,"text":22787},{"id":22950,"depth":476,"text":22951},{"id":23105,"depth":476,"text":23106},{"id":23183,"depth":476,"text":23184},{"id":23262,"depth":476,"text":23263},{"id":23359,"depth":476,"text":23360},{"id":23598,"depth":476,"text":23599},{"id":23776,"depth":476,"text":23777},{},"\u002Fwiki\u002F2026-05-24-c++\u002Fch3",{"title":22775,"description":22783},"wiki\u002F2026-05-24-c++学习\u002Fch3-指针","LotROpzxgkxZVFDdc0uLdT7FhfhATX3FzlZsglMj7hQ",{"id":24188,"title":24189,"body":24190,"description":24197,"extension":16683,"meta":27139,"navigation":521,"path":27140,"seo":27141,"stem":27142,"__hash__":27143},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Fch4-结构体.md","4.结构体",{"type":7,"value":24191,"toc":27130},[24192,24195,24198,24202,24205,24208,24219,24547,24550,24554,24557,24564,24819,24823,24826,24829,24984,24988,24991,24994,25200,25204,25207,25509,25512,25520,25524,25527,25678,25680,25691,25748,25752,25757,26393,26401,26404,26498,26501,27121,27127],[10,24193,24189],{"id":24194},"_4结构体",[14,24196,24197],{},"结构体属于用户自定义的数据类型，允许用户存储不同的数据类型",[18,24199,24201],{"id":24200},"_41结构体定义与使用","4.1结构体定义与使用",[14,24203,24204],{},"语法：struct 结构体名 {结构体成员列表}；",[14,24206,24207],{},"通过结构体创建变量的方式：",[40,24209,24210,24213,24216],{},[43,24211,24212],{},"struct 结构体名 变量名",[43,24214,24215],{},"struct 结构体名 变量名={成员1值，成员2值...}",[43,24217,24218],{},"定义结构体时顺便创建变量",[451,24220,24222],{"className":16745,"code":24221,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\n\u002F\u002F1.创建学生数据类型：学生包括：（姓名，年龄，分数）\nstruct Student\n{\n    \u002F\u002F成员列表\n\n    \u002F\u002F姓名\n    string name;\n    \u002F\u002F年龄\n    int age;\n    \u002F\u002F分数\n    int score;\n};\nstruct School\n{\n    \u002F\u002F成员列表\n\n    \u002F\u002F姓名\n    string name;\n    \u002F\u002F年龄\n    int age;\n    \u002F\u002F分数\n    int score;\n} s3; \u002F\u002F创建结构体时就创建了变量\nint main()\n{\n    \u002F\u002F2.通过学生类型创建具体学生\n    \u002F\u002F2.1 struct Student s1;\n    struct Student s1;\n    \u002F\u002F给s1属性赋值，通过访问结构体变量中的属性\n    s1.name=\"张三\";\n    s1.age=18;\n    s1.score=66;\n    \u002F\u002F输出结果\n    cout\u003C\u003Cs1.name\u003C\u003Cs1.age\u003C\u003Cs1.score\u003C\u003Cendl;\n\n    \u002F\u002F2.2 struct Student s2={...}\n    struct Student s2={\"王五\",18,66};\n\n    \u002F\u002F2.3在定义结构体时顺便创建结构体变量\n    s3.name=\"1\";\n    s3.age=18;\n    s3.score=20;\n}\n",[457,24223,24224,24230,24240,24247,24252,24260,24264,24269,24273,24278,24283,24288,24295,24300,24307,24311,24318,24322,24326,24330,24334,24338,24342,24348,24352,24358,24366,24374,24378,24383,24388,24399,24404,24416,24427,24438,24443,24466,24470,24475,24501,24505,24510,24521,24532,24543],{"__ignoreMap":32},[460,24225,24226,24228],{"class":462,"line":463},[460,24227,18491],{"class":887},[460,24229,18494],{"class":1353},[460,24231,24232,24234,24236,24238],{"class":462,"line":476},[460,24233,18499],{"class":887},[460,24235,18502],{"class":887},[460,24237,18505],{"class":929},[460,24239,1966],{"class":466},[460,24241,24242,24244],{"class":462,"line":482},[460,24243,18491],{"class":887},[460,24245,24246],{"class":1353},"\u003Cstring>\n",[460,24248,24249],{"class":462,"line":488},[460,24250,24251],{"class":942},"\u002F\u002F1.创建学生数据类型：学生包括：（姓名，年龄，分数）\n",[460,24253,24254,24257],{"class":462,"line":494},[460,24255,24256],{"class":887},"struct",[460,24258,24259],{"class":929}," Student\n",[460,24261,24262],{"class":462,"line":500},[460,24263,18115],{"class":466},[460,24265,24266],{"class":462,"line":506},[460,24267,24268],{"class":942},"    \u002F\u002F成员列表\n",[460,24270,24271],{"class":462,"line":512},[460,24272,522],{"emptyLinePlaceholder":521},[460,24274,24275],{"class":462,"line":518},[460,24276,24277],{"class":942},"    \u002F\u002F姓名\n",[460,24279,24280],{"class":462,"line":525},[460,24281,24282],{"class":466},"    string name;\n",[460,24284,24285],{"class":462,"line":531},[460,24286,24287],{"class":942},"    \u002F\u002F年龄\n",[460,24289,24290,24292],{"class":462,"line":537},[460,24291,18525],{"class":887},[460,24293,24294],{"class":466}," age;\n",[460,24296,24297],{"class":462,"line":543},[460,24298,24299],{"class":942},"    \u002F\u002F分数\n",[460,24301,24302,24304],{"class":462,"line":549},[460,24303,18525],{"class":887},[460,24305,24306],{"class":466}," score;\n",[460,24308,24309],{"class":462,"line":555},[460,24310,20510],{"class":466},[460,24312,24313,24315],{"class":462,"line":560},[460,24314,24256],{"class":887},[460,24316,24317],{"class":929}," School\n",[460,24319,24320],{"class":462,"line":566},[460,24321,18115],{"class":466},[460,24323,24324],{"class":462,"line":572},[460,24325,24268],{"class":942},[460,24327,24328],{"class":462,"line":578},[460,24329,522],{"emptyLinePlaceholder":521},[460,24331,24332],{"class":462,"line":812},[460,24333,24277],{"class":942},[460,24335,24336],{"class":462,"line":818},[460,24337,24282],{"class":466},[460,24339,24340],{"class":462,"line":824},[460,24341,24287],{"class":942},[460,24343,24344,24346],{"class":462,"line":2074},[460,24345,18525],{"class":887},[460,24347,24294],{"class":466},[460,24349,24350],{"class":462,"line":2088},[460,24351,24299],{"class":942},[460,24353,24354,24356],{"class":462,"line":2103},[460,24355,18525],{"class":887},[460,24357,24306],{"class":466},[460,24359,24360,24363],{"class":462,"line":2122},[460,24361,24362],{"class":466},"} s3;",[460,24364,24365],{"class":942}," \u002F\u002F创建结构体时就创建了变量\n",[460,24367,24368,24370,24372],{"class":462,"line":2144},[460,24369,16759],{"class":887},[460,24371,18514],{"class":929},[460,24373,10758],{"class":466},[460,24375,24376],{"class":462,"line":2158},[460,24377,18115],{"class":466},[460,24379,24380],{"class":462,"line":2163},[460,24381,24382],{"class":942},"    \u002F\u002F2.通过学生类型创建具体学生\n",[460,24384,24385],{"class":462,"line":2168},[460,24386,24387],{"class":942},"    \u002F\u002F2.1 struct Student s1;\n",[460,24389,24390,24393,24396],{"class":462,"line":2183},[460,24391,24392],{"class":887},"    struct",[460,24394,24395],{"class":929}," Student",[460,24397,24398],{"class":466}," s1;\n",[460,24400,24401],{"class":462,"line":2194},[460,24402,24403],{"class":942},"    \u002F\u002F给s1属性赋值，通过访问结构体变量中的属性\n",[460,24405,24406,24409,24411,24414],{"class":462,"line":2199},[460,24407,24408],{"class":466},"    s1.name",[460,24410,894],{"class":887},[460,24412,24413],{"class":1353},"\"张三\"",[460,24415,1966],{"class":466},[460,24417,24418,24421,24423,24425],{"class":462,"line":2204},[460,24419,24420],{"class":466},"    s1.age",[460,24422,894],{"class":887},[460,24424,2361],{"class":900},[460,24426,1966],{"class":466},[460,24428,24429,24432,24434,24436],{"class":462,"line":2212},[460,24430,24431],{"class":466},"    s1.score",[460,24433,894],{"class":887},[460,24435,16996],{"class":900},[460,24437,1966],{"class":466},[460,24439,24440],{"class":462,"line":2257},[460,24441,24442],{"class":942},"    \u002F\u002F输出结果\n",[460,24444,24445,24447,24449,24452,24454,24457,24459,24462,24464],{"class":462,"line":2285},[460,24446,18120],{"class":466},[460,24448,17750],{"class":887},[460,24450,24451],{"class":466},"s1.name",[460,24453,17750],{"class":887},[460,24455,24456],{"class":466},"s1.age",[460,24458,17750],{"class":887},[460,24460,24461],{"class":466},"s1.score",[460,24463,17750],{"class":887},[460,24465,17772],{"class":466},[460,24467,24468],{"class":462,"line":2298},[460,24469,522],{"emptyLinePlaceholder":521},[460,24471,24472],{"class":462,"line":2303},[460,24473,24474],{"class":942},"    \u002F\u002F2.2 struct Student s2={...}\n",[460,24476,24477,24479,24481,24484,24486,24488,24491,24493,24495,24497,24499],{"class":462,"line":2308},[460,24478,24392],{"class":887},[460,24480,24395],{"class":929},[460,24482,24483],{"class":466}," s2",[460,24485,894],{"class":887},[460,24487,17607],{"class":466},[460,24489,24490],{"class":1353},"\"王五\"",[460,24492,3986],{"class":466},[460,24494,2361],{"class":900},[460,24496,3986],{"class":466},[460,24498,16996],{"class":900},[460,24500,20510],{"class":466},[460,24502,24503],{"class":462,"line":2318},[460,24504,522],{"emptyLinePlaceholder":521},[460,24506,24507],{"class":462,"line":2333},[460,24508,24509],{"class":942},"    \u002F\u002F2.3在定义结构体时顺便创建结构体变量\n",[460,24511,24512,24515,24517,24519],{"class":462,"line":2338},[460,24513,24514],{"class":466},"    s3.name",[460,24516,894],{"class":887},[460,24518,2772],{"class":1353},[460,24520,1966],{"class":466},[460,24522,24523,24526,24528,24530],{"class":462,"line":2343},[460,24524,24525],{"class":466},"    s3.age",[460,24527,894],{"class":887},[460,24529,2361],{"class":900},[460,24531,1966],{"class":466},[460,24533,24534,24537,24539,24541],{"class":462,"line":2353},[460,24535,24536],{"class":466},"    s3.score",[460,24538,894],{"class":887},[460,24540,2110],{"class":900},[460,24542,1966],{"class":466},[460,24544,24545],{"class":462,"line":2368},[460,24546,821],{"class":466},[14,24548,24549],{},"注意：结构体定义时关键词struct不可以省略，但是创建是可以省略",[18,24551,24553],{"id":24552},"_42结构体数组","4.2结构体数组",[14,24555,24556],{},"将自定义的结构体放入到数组中方便维护",[14,24558,24559,24560,24563],{},"语法：struct 结构体名 数组名",[460,24561,24562],{},"元素个数","={ {}，{},...{} };",[451,24565,24567],{"className":16745,"code":24566,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\n\u002F\u002F1.定义结构体\nstruct Student\n{\n    string name;\n    int age;\n    int score;\n\n};\nint main()\n{\n    \u002F\u002F2.创建结构体数组\n    struct Student stuArray[2]=\n    {\n        {\"张三\",18,100},\n        {\"1\",15,15}\n    }\n    \u002F\u002F3.给结构体数组中的元素赋值\n    stuArray[1].name=\"2\";\n    stuArray[1].age=2;\n    stuArray[1].score=2;\n    \u002F\u002F4.遍历结构体数组\n    for (int i=0;i\u003C2;i++)\n    {\n        cout\u003C\u003CstuArray[i].name\u003C\u003CstuArray[i].age\u003C\u003CstuArray[i].score\u003C\u003Cendl;\n    }\n}\n",[457,24568,24569,24575,24585,24591,24596,24602,24606,24610,24616,24622,24626,24630,24638,24642,24647,24662,24666,24682,24698,24702,24707,24723,24738,24753,24758,24784,24788,24811,24815],{"__ignoreMap":32},[460,24570,24571,24573],{"class":462,"line":463},[460,24572,18491],{"class":887},[460,24574,18494],{"class":1353},[460,24576,24577,24579,24581,24583],{"class":462,"line":476},[460,24578,18499],{"class":887},[460,24580,18502],{"class":887},[460,24582,18505],{"class":929},[460,24584,1966],{"class":466},[460,24586,24587,24589],{"class":462,"line":482},[460,24588,18491],{"class":887},[460,24590,24246],{"class":1353},[460,24592,24593],{"class":462,"line":488},[460,24594,24595],{"class":942},"\u002F\u002F1.定义结构体\n",[460,24597,24598,24600],{"class":462,"line":494},[460,24599,24256],{"class":887},[460,24601,24259],{"class":929},[460,24603,24604],{"class":462,"line":500},[460,24605,18115],{"class":466},[460,24607,24608],{"class":462,"line":506},[460,24609,24282],{"class":466},[460,24611,24612,24614],{"class":462,"line":512},[460,24613,18525],{"class":887},[460,24615,24294],{"class":466},[460,24617,24618,24620],{"class":462,"line":518},[460,24619,18525],{"class":887},[460,24621,24306],{"class":466},[460,24623,24624],{"class":462,"line":525},[460,24625,522],{"emptyLinePlaceholder":521},[460,24627,24628],{"class":462,"line":531},[460,24629,20510],{"class":466},[460,24631,24632,24634,24636],{"class":462,"line":537},[460,24633,16759],{"class":887},[460,24635,18514],{"class":929},[460,24637,10758],{"class":466},[460,24639,24640],{"class":462,"line":543},[460,24641,18115],{"class":466},[460,24643,24644],{"class":462,"line":549},[460,24645,24646],{"class":942},"    \u002F\u002F2.创建结构体数组\n",[460,24648,24649,24651,24653,24656,24658,24660],{"class":462,"line":555},[460,24650,24392],{"class":887},[460,24652,24395],{"class":929},[460,24654,24655],{"class":466}," stuArray[",[460,24657,907],{"class":900},[460,24659,17649],{"class":466},[460,24661,21417],{"class":887},[460,24663,24664],{"class":462,"line":560},[460,24665,18570],{"class":466},[460,24667,24668,24670,24672,24674,24676,24678,24680],{"class":462,"line":566},[460,24669,21426],{"class":466},[460,24671,24413],{"class":1353},[460,24673,3986],{"class":466},[460,24675,2361],{"class":900},[460,24677,3986],{"class":466},[460,24679,2325],{"class":900},[460,24681,21439],{"class":466},[460,24683,24684,24686,24688,24690,24692,24694,24696],{"class":462,"line":572},[460,24685,21426],{"class":466},[460,24687,2772],{"class":1353},[460,24689,3986],{"class":466},[460,24691,7157],{"class":900},[460,24693,3986],{"class":466},[460,24695,7157],{"class":900},[460,24697,821],{"class":466},[460,24699,24700],{"class":462,"line":578},[460,24701,509],{"class":466},[460,24703,24704],{"class":462,"line":812},[460,24705,24706],{"class":942},"    \u002F\u002F3.给结构体数组中的元素赋值\n",[460,24708,24709,24712,24714,24717,24719,24721],{"class":462,"line":818},[460,24710,24711],{"class":466},"    stuArray[",[460,24713,901],{"class":900},[460,24715,24716],{"class":466},"].name",[460,24718,894],{"class":887},[460,24720,2799],{"class":1353},[460,24722,1966],{"class":466},[460,24724,24725,24727,24729,24732,24734,24736],{"class":462,"line":824},[460,24726,24711],{"class":466},[460,24728,901],{"class":900},[460,24730,24731],{"class":466},"].age",[460,24733,894],{"class":887},[460,24735,907],{"class":900},[460,24737,1966],{"class":466},[460,24739,24740,24742,24744,24747,24749,24751],{"class":462,"line":2074},[460,24741,24711],{"class":466},[460,24743,901],{"class":900},[460,24745,24746],{"class":466},"].score",[460,24748,894],{"class":887},[460,24750,907],{"class":900},[460,24752,1966],{"class":466},[460,24754,24755],{"class":462,"line":2088},[460,24756,24757],{"class":942},"    \u002F\u002F4.遍历结构体数组\n",[460,24759,24760,24762,24764,24766,24768,24770,24772,24774,24776,24778,24780,24782],{"class":462,"line":2103},[460,24761,19722],{"class":887},[460,24763,11704],{"class":466},[460,24765,16759],{"class":887},[460,24767,10169],{"class":466},[460,24769,894],{"class":887},[460,24771,936],{"class":900},[460,24773,19560],{"class":466},[460,24775,781],{"class":887},[460,24777,907],{"class":900},[460,24779,19560],{"class":466},[460,24781,18828],{"class":887},[460,24783,3754],{"class":466},[460,24785,24786],{"class":462,"line":2122},[460,24787,18570],{"class":466},[460,24789,24790,24792,24794,24797,24799,24802,24804,24807,24809],{"class":462,"line":2144},[460,24791,19972],{"class":466},[460,24793,17750],{"class":887},[460,24795,24796],{"class":466},"stuArray[i].name",[460,24798,17750],{"class":887},[460,24800,24801],{"class":466},"stuArray[i].age",[460,24803,17750],{"class":887},[460,24805,24806],{"class":466},"stuArray[i].score",[460,24808,17750],{"class":887},[460,24810,17772],{"class":466},[460,24812,24813],{"class":462,"line":2158},[460,24814,509],{"class":466},[460,24816,24817],{"class":462,"line":2163},[460,24818,821],{"class":466},[18,24820,24822],{"id":24821},"_43结构体指针","4.3结构体指针",[14,24824,24825],{},"作用：通过指针访问结构体中的成员",[14,24827,24828],{},"利用操作符->可以通过结构体指针访问结构体属性",[451,24830,24832],{"className":16745,"code":24831,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\n\u002F\u002F1.定义结构体\nstruct Student\n{\n    string name;\n    int age;\n    int score;\n};\nint main()\n{\n    \u002F\u002F创建学生结构体变量\n    struct Student s={\"张三\",18,200};\n    \u002F\u002F通过指针指向结构体变量\n    struct Student *p=&s\n    \u002F\u002F通过指针访问结构体变量中的数据\n    cout\u003C\u003Cp->name\u003C\u003Cp->age\u003C\u003Cp->score\u003C\u003Cendl;\n}\n",[457,24833,24834,24840,24850,24856,24860,24866,24870,24874,24880,24886,24890,24898,24902,24907,24932,24937,24952,24957,24980],{"__ignoreMap":32},[460,24835,24836,24838],{"class":462,"line":463},[460,24837,18491],{"class":887},[460,24839,18494],{"class":1353},[460,24841,24842,24844,24846,24848],{"class":462,"line":476},[460,24843,18499],{"class":887},[460,24845,18502],{"class":887},[460,24847,18505],{"class":929},[460,24849,1966],{"class":466},[460,24851,24852,24854],{"class":462,"line":482},[460,24853,18491],{"class":887},[460,24855,24246],{"class":1353},[460,24857,24858],{"class":462,"line":488},[460,24859,24595],{"class":942},[460,24861,24862,24864],{"class":462,"line":494},[460,24863,24256],{"class":887},[460,24865,24259],{"class":929},[460,24867,24868],{"class":462,"line":500},[460,24869,18115],{"class":466},[460,24871,24872],{"class":462,"line":506},[460,24873,24282],{"class":466},[460,24875,24876,24878],{"class":462,"line":512},[460,24877,18525],{"class":887},[460,24879,24294],{"class":466},[460,24881,24882,24884],{"class":462,"line":518},[460,24883,18525],{"class":887},[460,24885,24306],{"class":466},[460,24887,24888],{"class":462,"line":525},[460,24889,20510],{"class":466},[460,24891,24892,24894,24896],{"class":462,"line":531},[460,24893,16759],{"class":887},[460,24895,18514],{"class":929},[460,24897,10758],{"class":466},[460,24899,24900],{"class":462,"line":537},[460,24901,18115],{"class":466},[460,24903,24904],{"class":462,"line":543},[460,24905,24906],{"class":942},"    \u002F\u002F创建学生结构体变量\n",[460,24908,24909,24911,24913,24916,24918,24920,24922,24924,24926,24928,24930],{"class":462,"line":549},[460,24910,24392],{"class":887},[460,24912,24395],{"class":929},[460,24914,24915],{"class":466}," s",[460,24917,894],{"class":887},[460,24919,17607],{"class":466},[460,24921,24413],{"class":1353},[460,24923,3986],{"class":466},[460,24925,2361],{"class":900},[460,24927,3986],{"class":466},[460,24929,5490],{"class":900},[460,24931,20510],{"class":466},[460,24933,24934],{"class":462,"line":555},[460,24935,24936],{"class":942},"    \u002F\u002F通过指针指向结构体变量\n",[460,24938,24939,24941,24943,24945,24947,24949],{"class":462,"line":560},[460,24940,24392],{"class":887},[460,24942,24395],{"class":929},[460,24944,8325],{"class":887},[460,24946,14],{"class":466},[460,24948,22842],{"class":887},[460,24950,24951],{"class":466},"s\n",[460,24953,24954],{"class":462,"line":566},[460,24955,24956],{"class":942},"    \u002F\u002F通过指针访问结构体变量中的数据\n",[460,24958,24959,24961,24963,24966,24968,24971,24973,24976,24978],{"class":462,"line":572},[460,24960,18120],{"class":466},[460,24962,17750],{"class":887},[460,24964,24965],{"class":466},"p->name",[460,24967,17750],{"class":887},[460,24969,24970],{"class":466},"p->age",[460,24972,17750],{"class":887},[460,24974,24975],{"class":466},"p->score",[460,24977,17750],{"class":887},[460,24979,17772],{"class":466},[460,24981,24982],{"class":462,"line":578},[460,24983,821],{"class":466},[18,24985,24987],{"id":24986},"_44结构体嵌套结构体","4.4结构体嵌套结构体",[14,24989,24990],{},"作用：结构体中的成员可以是另一个结构体",[14,24992,24993],{},"例如：每个老师辅导一个学员，一个老师的结构体中，记录一个学生的结构体",[451,24995,24997],{"className":16745,"code":24996,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\n\u002F\u002F定义学生结构体\nstruct Student \n{\n    string name;\n    int age;\n    int score;\n}\n\u002F\u002F定义老师结构体\nstruct Teacher\n{\n    int id;\n    string name;\n    int age;\n    Student stu;\n}\nint main() \n{\n    \u002F\u002F结构体嵌套结构体\n    \u002F\u002F创建老师\n    Teacher t;\n    t.id=100;\n    t.name=\"老王\";\n    t.age=18;\n    t.stu.name=\"小王\"；\n    t.stu.age=20;\n    t.stu.score=6;\n}\n",[457,24998,24999,25005,25015,25021,25026,25034,25038,25042,25048,25054,25058,25063,25070,25074,25081,25085,25091,25096,25100,25108,25112,25117,25122,25127,25138,25150,25161,25174,25185,25196],{"__ignoreMap":32},[460,25000,25001,25003],{"class":462,"line":463},[460,25002,18491],{"class":887},[460,25004,18494],{"class":1353},[460,25006,25007,25009,25011,25013],{"class":462,"line":476},[460,25008,18499],{"class":887},[460,25010,18502],{"class":887},[460,25012,18505],{"class":929},[460,25014,1966],{"class":466},[460,25016,25017,25019],{"class":462,"line":482},[460,25018,18491],{"class":887},[460,25020,24246],{"class":1353},[460,25022,25023],{"class":462,"line":488},[460,25024,25025],{"class":942},"\u002F\u002F定义学生结构体\n",[460,25027,25028,25030,25032],{"class":462,"line":494},[460,25029,24256],{"class":887},[460,25031,24395],{"class":929},[460,25033,19198],{"class":466},[460,25035,25036],{"class":462,"line":500},[460,25037,18115],{"class":466},[460,25039,25040],{"class":462,"line":506},[460,25041,24282],{"class":466},[460,25043,25044,25046],{"class":462,"line":512},[460,25045,18525],{"class":887},[460,25047,24294],{"class":466},[460,25049,25050,25052],{"class":462,"line":518},[460,25051,18525],{"class":887},[460,25053,24306],{"class":466},[460,25055,25056],{"class":462,"line":525},[460,25057,821],{"class":466},[460,25059,25060],{"class":462,"line":531},[460,25061,25062],{"class":942},"\u002F\u002F定义老师结构体\n",[460,25064,25065,25067],{"class":462,"line":537},[460,25066,24256],{"class":887},[460,25068,25069],{"class":929}," Teacher\n",[460,25071,25072],{"class":462,"line":543},[460,25073,18115],{"class":466},[460,25075,25076,25078],{"class":462,"line":549},[460,25077,18525],{"class":887},[460,25079,25080],{"class":466}," id;\n",[460,25082,25083],{"class":462,"line":555},[460,25084,24282],{"class":466},[460,25086,25087,25089],{"class":462,"line":560},[460,25088,18525],{"class":887},[460,25090,24294],{"class":466},[460,25092,25093],{"class":462,"line":566},[460,25094,25095],{"class":466},"    Student stu;\n",[460,25097,25098],{"class":462,"line":572},[460,25099,821],{"class":466},[460,25101,25102,25104,25106],{"class":462,"line":578},[460,25103,16759],{"class":887},[460,25105,18514],{"class":929},[460,25107,22482],{"class":466},[460,25109,25110],{"class":462,"line":812},[460,25111,18115],{"class":466},[460,25113,25114],{"class":462,"line":818},[460,25115,25116],{"class":942},"    \u002F\u002F结构体嵌套结构体\n",[460,25118,25119],{"class":462,"line":824},[460,25120,25121],{"class":942},"    \u002F\u002F创建老师\n",[460,25123,25124],{"class":462,"line":2074},[460,25125,25126],{"class":466},"    Teacher t;\n",[460,25128,25129,25132,25134,25136],{"class":462,"line":2088},[460,25130,25131],{"class":466},"    t.id",[460,25133,894],{"class":887},[460,25135,2325],{"class":900},[460,25137,1966],{"class":466},[460,25139,25140,25143,25145,25148],{"class":462,"line":2103},[460,25141,25142],{"class":466},"    t.name",[460,25144,894],{"class":887},[460,25146,25147],{"class":1353},"\"老王\"",[460,25149,1966],{"class":466},[460,25151,25152,25155,25157,25159],{"class":462,"line":2122},[460,25153,25154],{"class":466},"    t.age",[460,25156,894],{"class":887},[460,25158,2361],{"class":900},[460,25160,1966],{"class":466},[460,25162,25163,25166,25168,25171],{"class":462,"line":2144},[460,25164,25165],{"class":466},"    t.stu.name",[460,25167,894],{"class":887},[460,25169,25170],{"class":1353},"\"小王\"",[460,25172,25173],{"class":466},"；\n",[460,25175,25176,25179,25181,25183],{"class":462,"line":2158},[460,25177,25178],{"class":466},"    t.stu.age",[460,25180,894],{"class":887},[460,25182,2110],{"class":900},[460,25184,1966],{"class":466},[460,25186,25187,25190,25192,25194],{"class":462,"line":2163},[460,25188,25189],{"class":466},"    t.stu.score",[460,25191,894],{"class":887},[460,25193,4064],{"class":900},[460,25195,1966],{"class":466},[460,25197,25198],{"class":462,"line":2168},[460,25199,821],{"class":466},[18,25201,25203],{"id":25202},"_45结构体做函数参数","4.5结构体做函数参数",[14,25205,25206],{},"案例学习:将学生传入到一个参数中，打印学生身上的所有信息",[451,25208,25210],{"className":16745,"code":25209,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\nstruct Student\n{\n    string name;\n    int age;\n    int score;\n};\n\u002F\u002F打印学生信息的函数\n\u002F\u002F值传递\nvoid printStudent1(struct Student s)\n{\n    cout \u003C\u003C s.name \u003C\u003C \" \" \u003C\u003C s.age \u003C\u003C \" \" \u003C\u003C s.score \u003C\u003C endl;\n}\n\u002F\u002F地址传递\nvoid printStudent2(struct Student *s)\n{\n    cout \u003C\u003C s->name \u003C\u003C \" \" \u003C\u003C s->age \u003C\u003C \" \" \u003C\u003C s->score \u003C\u003C endl;\n}\nint main()\n{\n    struct Student s;\n    s.name = \"张三\";\n    s.age = 20;\n    s.score = 85;\n    cout\u003C\u003C\"值传递:\"\u003C\u003Cendl;\n    printStudent1(s);\n    cout\u003C\u003C\"地址传递:\"\u003C\u003Cendl;\n    printStudent2(&s); \n    return 0;\n}\n",[457,25211,25212,25218,25228,25234,25240,25244,25248,25254,25260,25264,25269,25274,25291,25295,25328,25332,25337,25356,25360,25391,25395,25403,25407,25416,25428,25439,25451,25464,25472,25485,25497,25505],{"__ignoreMap":32},[460,25213,25214,25216],{"class":462,"line":463},[460,25215,18491],{"class":887},[460,25217,18494],{"class":1353},[460,25219,25220,25222,25224,25226],{"class":462,"line":476},[460,25221,18499],{"class":887},[460,25223,18502],{"class":887},[460,25225,18505],{"class":929},[460,25227,1966],{"class":466},[460,25229,25230,25232],{"class":462,"line":482},[460,25231,18491],{"class":887},[460,25233,24246],{"class":1353},[460,25235,25236,25238],{"class":462,"line":488},[460,25237,24256],{"class":887},[460,25239,24259],{"class":929},[460,25241,25242],{"class":462,"line":494},[460,25243,18115],{"class":466},[460,25245,25246],{"class":462,"line":500},[460,25247,24282],{"class":466},[460,25249,25250,25252],{"class":462,"line":506},[460,25251,18525],{"class":887},[460,25253,24294],{"class":466},[460,25255,25256,25258],{"class":462,"line":512},[460,25257,18525],{"class":887},[460,25259,24306],{"class":466},[460,25261,25262],{"class":462,"line":518},[460,25263,20510],{"class":466},[460,25265,25266],{"class":462,"line":525},[460,25267,25268],{"class":942},"\u002F\u002F打印学生信息的函数\n",[460,25270,25271],{"class":462,"line":531},[460,25272,25273],{"class":942},"\u002F\u002F值传递\n",[460,25275,25276,25278,25281,25283,25285,25287,25289],{"class":462,"line":537},[460,25277,21870],{"class":887},[460,25279,25280],{"class":929}," printStudent1",[460,25282,2174],{"class":466},[460,25284,24256],{"class":887},[460,25286,24395],{"class":929},[460,25288,24915],{"class":3380},[460,25290,3754],{"class":466},[460,25292,25293],{"class":462,"line":543},[460,25294,18115],{"class":466},[460,25296,25297,25299,25301,25304,25306,25309,25311,25314,25316,25318,25320,25323,25325],{"class":462,"line":549},[460,25298,23029],{"class":466},[460,25300,17750],{"class":887},[460,25302,25303],{"class":466}," s.name ",[460,25305,17750],{"class":887},[460,25307,25308],{"class":1353}," \" \"",[460,25310,18014],{"class":887},[460,25312,25313],{"class":466}," s.age ",[460,25315,17750],{"class":887},[460,25317,25308],{"class":1353},[460,25319,18014],{"class":887},[460,25321,25322],{"class":466}," s.score ",[460,25324,17750],{"class":887},[460,25326,25327],{"class":466}," endl;\n",[460,25329,25330],{"class":462,"line":555},[460,25331,821],{"class":466},[460,25333,25334],{"class":462,"line":560},[460,25335,25336],{"class":942},"\u002F\u002F地址传递\n",[460,25338,25339,25341,25344,25346,25348,25350,25352,25354],{"class":462,"line":566},[460,25340,21870],{"class":887},[460,25342,25343],{"class":929}," printStudent2",[460,25345,2174],{"class":466},[460,25347,24256],{"class":887},[460,25349,24395],{"class":929},[460,25351,8325],{"class":887},[460,25353,2139],{"class":3380},[460,25355,3754],{"class":466},[460,25357,25358],{"class":462,"line":572},[460,25359,18115],{"class":466},[460,25361,25362,25364,25366,25369,25371,25373,25375,25378,25380,25382,25384,25387,25389],{"class":462,"line":578},[460,25363,23029],{"class":466},[460,25365,17750],{"class":887},[460,25367,25368],{"class":466}," s->name ",[460,25370,17750],{"class":887},[460,25372,25308],{"class":1353},[460,25374,18014],{"class":887},[460,25376,25377],{"class":466}," s->age ",[460,25379,17750],{"class":887},[460,25381,25308],{"class":1353},[460,25383,18014],{"class":887},[460,25385,25386],{"class":466}," s->score ",[460,25388,17750],{"class":887},[460,25390,25327],{"class":466},[460,25392,25393],{"class":462,"line":812},[460,25394,821],{"class":466},[460,25396,25397,25399,25401],{"class":462,"line":818},[460,25398,16759],{"class":887},[460,25400,18514],{"class":929},[460,25402,10758],{"class":466},[460,25404,25405],{"class":462,"line":824},[460,25406,18115],{"class":466},[460,25408,25409,25411,25413],{"class":462,"line":2074},[460,25410,24392],{"class":887},[460,25412,24395],{"class":929},[460,25414,25415],{"class":466}," s;\n",[460,25417,25418,25421,25423,25426],{"class":462,"line":2088},[460,25419,25420],{"class":466},"    s.name ",[460,25422,894],{"class":887},[460,25424,25425],{"class":1353}," \"张三\"",[460,25427,1966],{"class":466},[460,25429,25430,25433,25435,25437],{"class":462,"line":2103},[460,25431,25432],{"class":466},"    s.age ",[460,25434,894],{"class":887},[460,25436,2590],{"class":900},[460,25438,1966],{"class":466},[460,25440,25441,25444,25446,25449],{"class":462,"line":2122},[460,25442,25443],{"class":466},"    s.score ",[460,25445,894],{"class":887},[460,25447,25448],{"class":900}," 85",[460,25450,1966],{"class":466},[460,25452,25453,25455,25457,25460,25462],{"class":462,"line":2144},[460,25454,18120],{"class":466},[460,25456,17750],{"class":887},[460,25458,25459],{"class":1353},"\"值传递:\"",[460,25461,17750],{"class":887},[460,25463,17772],{"class":466},[460,25465,25466,25469],{"class":462,"line":2158},[460,25467,25468],{"class":929},"    printStudent1",[460,25470,25471],{"class":466},"(s);\n",[460,25473,25474,25476,25478,25481,25483],{"class":462,"line":2163},[460,25475,18120],{"class":466},[460,25477,17750],{"class":887},[460,25479,25480],{"class":1353},"\"地址传递:\"",[460,25482,17750],{"class":887},[460,25484,17772],{"class":466},[460,25486,25487,25490,25492,25494],{"class":462,"line":2168},[460,25488,25489],{"class":929},"    printStudent2",[460,25491,2174],{"class":466},[460,25493,17090],{"class":887},[460,25495,25496],{"class":466},"s); \n",[460,25498,25499,25501,25503],{"class":462,"line":2183},[460,25500,20605],{"class":887},[460,25502,2224],{"class":900},[460,25504,1966],{"class":466},[460,25506,25507],{"class":462,"line":2194},[460,25508,821],{"class":466},[14,25510,25511],{},"注意：",[40,25513,25514,25517],{},[43,25515,25516],{},"1.先定义结构体，不要在函数中写结构体的定义",[43,25518,25519],{},"2.不想修改主函数中的数据，就用值传递；反之用地址传递",[18,25521,25523],{"id":25522},"_46结构体中const使用场景","4.6结构体中const使用场景",[14,25525,25526],{},"用const防止误操作",[451,25528,25530],{"className":16745,"code":25529,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\nsctuct Student\n{\n    string name;\n    int age;\n    int score;\n};\nvoid printStudents(student s)\n{\n    cout\u003C\u003Cs.name\u003C\u003Cs.age\u003C\u003Cs.score\u003C\u003Cendl;\n}\nint main() \n{\n    Student s={\"张三\",18,18};\n    printStudent(s);\n\n}\n",[457,25531,25532,25538,25548,25554,25559,25563,25567,25573,25579,25583,25599,25603,25626,25630,25638,25642,25663,25670,25674],{"__ignoreMap":32},[460,25533,25534,25536],{"class":462,"line":463},[460,25535,18491],{"class":887},[460,25537,18494],{"class":1353},[460,25539,25540,25542,25544,25546],{"class":462,"line":476},[460,25541,18499],{"class":887},[460,25543,18502],{"class":887},[460,25545,18505],{"class":929},[460,25547,1966],{"class":466},[460,25549,25550,25552],{"class":462,"line":482},[460,25551,18491],{"class":887},[460,25553,24246],{"class":1353},[460,25555,25556],{"class":462,"line":488},[460,25557,25558],{"class":466},"sctuct Student\n",[460,25560,25561],{"class":462,"line":494},[460,25562,18115],{"class":466},[460,25564,25565],{"class":462,"line":500},[460,25566,24282],{"class":466},[460,25568,25569,25571],{"class":462,"line":506},[460,25570,18525],{"class":887},[460,25572,24294],{"class":466},[460,25574,25575,25577],{"class":462,"line":512},[460,25576,18525],{"class":887},[460,25578,24306],{"class":466},[460,25580,25581],{"class":462,"line":518},[460,25582,20510],{"class":466},[460,25584,25585,25587,25590,25592,25595,25597],{"class":462,"line":525},[460,25586,21870],{"class":887},[460,25588,25589],{"class":929}," printStudents",[460,25591,2174],{"class":466},[460,25593,25594],{"class":929},"student",[460,25596,24915],{"class":3380},[460,25598,3754],{"class":466},[460,25600,25601],{"class":462,"line":531},[460,25602,18115],{"class":466},[460,25604,25605,25607,25609,25612,25614,25617,25619,25622,25624],{"class":462,"line":537},[460,25606,18120],{"class":466},[460,25608,17750],{"class":887},[460,25610,25611],{"class":466},"s.name",[460,25613,17750],{"class":887},[460,25615,25616],{"class":466},"s.age",[460,25618,17750],{"class":887},[460,25620,25621],{"class":466},"s.score",[460,25623,17750],{"class":887},[460,25625,17772],{"class":466},[460,25627,25628],{"class":462,"line":543},[460,25629,821],{"class":466},[460,25631,25632,25634,25636],{"class":462,"line":549},[460,25633,16759],{"class":887},[460,25635,18514],{"class":929},[460,25637,22482],{"class":466},[460,25639,25640],{"class":462,"line":555},[460,25641,18115],{"class":466},[460,25643,25644,25647,25649,25651,25653,25655,25657,25659,25661],{"class":462,"line":560},[460,25645,25646],{"class":466},"    Student s",[460,25648,894],{"class":887},[460,25650,17607],{"class":466},[460,25652,24413],{"class":1353},[460,25654,3986],{"class":466},[460,25656,2361],{"class":900},[460,25658,3986],{"class":466},[460,25660,2361],{"class":900},[460,25662,20510],{"class":466},[460,25664,25665,25668],{"class":462,"line":566},[460,25666,25667],{"class":929},"    printStudent",[460,25669,25471],{"class":466},[460,25671,25672],{"class":462,"line":572},[460,25673,522],{"emptyLinePlaceholder":521},[460,25675,25676],{"class":462,"line":578},[460,25677,821],{"class":466},[14,25679,25511],{},[40,25681,25682,25685,25688],{},[43,25683,25684],{},"1.值传递时形参会copy一份实参的数值，所以实参数据多时，就会比较浪费内存",[43,25686,25687],{},"2.将函数中的形参改为指针，可以减少内存空间，而且不会复制新的副本出来",[43,25689,25690],{},"3.在结构体形参前边加上const后，函数中就没法改参数信息了（加入const之后，一旦有修改的操作就会报错，可以防止我们的误操作）",[451,25692,25694],{"className":16745,"code":25693,"language":16747,"meta":32,"style":32},"void printStudents(const student *s)\n{\n    \u002F\u002F s->age=18;\u002F\u002F提示❎无，不可以这样做\n    cout\u003C\u003Cs.name\u003C\u003Cs.age\u003C\u003Cs.score\u003C\u003Cendl;\n}\n",[457,25695,25696,25715,25719,25724,25744],{"__ignoreMap":32},[460,25697,25698,25700,25702,25704,25706,25709,25711,25713],{"class":462,"line":463},[460,25699,21870],{"class":887},[460,25701,25589],{"class":929},[460,25703,2174],{"class":466},[460,25705,888],{"class":887},[460,25707,25708],{"class":929}," student",[460,25710,8325],{"class":887},[460,25712,2139],{"class":3380},[460,25714,3754],{"class":466},[460,25716,25717],{"class":462,"line":476},[460,25718,18115],{"class":466},[460,25720,25721],{"class":462,"line":482},[460,25722,25723],{"class":942},"    \u002F\u002F s->age=18;\u002F\u002F提示❎无，不可以这样做\n",[460,25725,25726,25728,25730,25732,25734,25736,25738,25740,25742],{"class":462,"line":488},[460,25727,18120],{"class":466},[460,25729,17750],{"class":887},[460,25731,25611],{"class":466},[460,25733,17750],{"class":887},[460,25735,25616],{"class":466},[460,25737,17750],{"class":887},[460,25739,25621],{"class":466},[460,25741,17750],{"class":887},[460,25743,17772],{"class":466},[460,25745,25746],{"class":462,"line":494},[460,25747,821],{"class":466},[18,25749,25751],{"id":25750},"_47案例","4.7案例",[103,25753,25754],{},[43,25755,25756],{},"案例说明：学校正在做毕设项目，每名老师带领5个学生，总共有3名老师，需求如下：设计学生和老师的结构体，其中在老师的结构体中，有老师姓名和一个存放5名学生的数组，作为成员学生的成员有姓名、考试分数，创建数组存放3名老师，通过函数给每个老师及所带的学生赋值，最终打印出老师数据以及老师所带的学生数据。",[451,25758,25760],{"className":16745,"code":25759,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\n#include\u003Cctime>\n\u002F\u002F定义学生结构体\nstruct Student\n{\n    string sName;\n    int age;\n    int score;\n};\n\u002F\u002F定义老师结构体\nstruct Teacher\n{\n    string tName;\n    \u002F\u002F学生数组\n    struct Student sArray[5];\n};\n\u002F\u002F给老师和学生赋值的函数\nvoid allocateSpace(struct Teacher tArray[],int len)\n{\n    string nameSeed=\"ABCDE\";\n    for (int i = 0; i \u003C len; i++)\n    {\n        tArray[i].tName = \"Teacher_\";\n        tArray[i].tName +=nameSeed[i];\n\n        \u002F\u002F通过循环给每名老师带的学生赋值\n        for (int j = 0; j \u003C 5; j++)\n        {\n            tArray[i].sArray[j].sName = \"Student_\";\n            tArray[i].sArray[j].sName += nameSeed[j];\n            int random=rand()%60+40;\u002F\u002F40~99\n            tArray[i].sArray[j].age = 20;\n            tArray[i].sArray[j].score = random;\n        }\n    }\n}\n\u002F\u002F打印所有信息的函数\nvoid printInfo(struct Teacher tArray[], int len)\n{\n    for (int i = 0; i \u003C len; i++)\n    {\n        cout \u003C\u003C \"Teacher: \" \u003C\u003C tArray[i].tName \u003C\u003C endl;\n        for (int j = 0; j \u003C 5; j++)\n        {\n            cout \u003C\u003C \"\\tStudent: \" \u003C\u003C tArray[i].sArray[j].sName\u003C\u003Cendl;\n            cout \u003C\u003C \"\\tAge: \" \u003C\u003C tArray[i].sArray[j].age \u003C\u003C endl;\n            cout \u003C\u003C \"\\tScore: \" \u003C\u003C tArray[i].sArray[j].score \u003C\u003C endl;   \n        }\n    }\n}\nint main()\n{\n    \u002F\u002F随机数种子\n    srand((unsigned int)time(NULL));\n    \u002F\u002F1.创建3名老师的数组\n    struct Teacher tArray[3];\n    \u002F\u002F2.通过函数给3名老师的信息赋值，并给老师带的学生信息赋值\n    int len = sizeof(tArray) \u002F sizeof(tArray[0]);\n    allocateSpace(tArray, len);\n    \u002F\u002F3.打印所有老师及所带的学生信息\n    printInfo(tArray, len);\n\n}\n",[457,25761,25762,25768,25778,25784,25791,25795,25801,25805,25810,25816,25822,25826,25830,25836,25840,25845,25850,25863,25867,25872,25898,25902,25914,25940,25944,25956,25965,25969,25974,26003,26007,26019,26028,26055,26066,26076,26080,26084,26088,26093,26117,26121,26145,26149,26168,26194,26198,26222,26244,26267,26271,26275,26279,26287,26291,26296,26316,26321,26334,26339,26365,26373,26378,26385,26389],{"__ignoreMap":32},[460,25763,25764,25766],{"class":462,"line":463},[460,25765,18491],{"class":887},[460,25767,18494],{"class":1353},[460,25769,25770,25772,25774,25776],{"class":462,"line":476},[460,25771,18499],{"class":887},[460,25773,18502],{"class":887},[460,25775,18505],{"class":929},[460,25777,1966],{"class":466},[460,25779,25780,25782],{"class":462,"line":482},[460,25781,18491],{"class":887},[460,25783,24246],{"class":1353},[460,25785,25786,25788],{"class":462,"line":488},[460,25787,18491],{"class":887},[460,25789,25790],{"class":1353},"\u003Cctime>\n",[460,25792,25793],{"class":462,"line":494},[460,25794,25025],{"class":942},[460,25796,25797,25799],{"class":462,"line":500},[460,25798,24256],{"class":887},[460,25800,24259],{"class":929},[460,25802,25803],{"class":462,"line":506},[460,25804,18115],{"class":466},[460,25806,25807],{"class":462,"line":512},[460,25808,25809],{"class":466},"    string sName;\n",[460,25811,25812,25814],{"class":462,"line":518},[460,25813,18525],{"class":887},[460,25815,24294],{"class":466},[460,25817,25818,25820],{"class":462,"line":525},[460,25819,18525],{"class":887},[460,25821,24306],{"class":466},[460,25823,25824],{"class":462,"line":531},[460,25825,20510],{"class":466},[460,25827,25828],{"class":462,"line":537},[460,25829,25062],{"class":942},[460,25831,25832,25834],{"class":462,"line":543},[460,25833,24256],{"class":887},[460,25835,25069],{"class":929},[460,25837,25838],{"class":462,"line":549},[460,25839,18115],{"class":466},[460,25841,25842],{"class":462,"line":555},[460,25843,25844],{"class":466},"    string tName;\n",[460,25846,25847],{"class":462,"line":560},[460,25848,25849],{"class":942},"    \u002F\u002F学生数组\n",[460,25851,25852,25854,25856,25859,25861],{"class":462,"line":566},[460,25853,24392],{"class":887},[460,25855,24395],{"class":929},[460,25857,25858],{"class":466}," sArray[",[460,25860,7290],{"class":900},[460,25862,21200],{"class":466},[460,25864,25865],{"class":462,"line":572},[460,25866,20510],{"class":466},[460,25868,25869],{"class":462,"line":578},[460,25870,25871],{"class":942},"\u002F\u002F给老师和学生赋值的函数\n",[460,25873,25874,25876,25879,25881,25883,25886,25889,25892,25894,25896],{"class":462,"line":812},[460,25875,21870],{"class":887},[460,25877,25878],{"class":929}," allocateSpace",[460,25880,2174],{"class":466},[460,25882,24256],{"class":887},[460,25884,25885],{"class":929}," Teacher",[460,25887,25888],{"class":3380}," tArray",[460,25890,25891],{"class":466},"[],",[460,25893,16759],{"class":887},[460,25895,23829],{"class":3380},[460,25897,3754],{"class":466},[460,25899,25900],{"class":462,"line":818},[460,25901,18115],{"class":466},[460,25903,25904,25907,25909,25912],{"class":462,"line":824},[460,25905,25906],{"class":466},"    string nameSeed",[460,25908,894],{"class":887},[460,25910,25911],{"class":1353},"\"ABCDE\"",[460,25913,1966],{"class":466},[460,25915,25916,25918,25920,25922,25924,25926,25928,25931,25933,25936,25938],{"class":462,"line":2074},[460,25917,19722],{"class":887},[460,25919,11704],{"class":466},[460,25921,16759],{"class":887},[460,25923,13991],{"class":466},[460,25925,894],{"class":887},[460,25927,2224],{"class":900},[460,25929,25930],{"class":466},"; i ",[460,25932,781],{"class":887},[460,25934,25935],{"class":466}," len; i",[460,25937,18828],{"class":887},[460,25939,3754],{"class":466},[460,25941,25942],{"class":462,"line":2088},[460,25943,18570],{"class":466},[460,25945,25946,25949,25951,25954],{"class":462,"line":2103},[460,25947,25948],{"class":466},"        tArray[i].tName ",[460,25950,894],{"class":887},[460,25952,25953],{"class":1353}," \"Teacher_\"",[460,25955,1966],{"class":466},[460,25957,25958,25960,25962],{"class":462,"line":2122},[460,25959,25948],{"class":466},[460,25961,3467],{"class":887},[460,25963,25964],{"class":466},"nameSeed[i];\n",[460,25966,25967],{"class":462,"line":2144},[460,25968,522],{"emptyLinePlaceholder":521},[460,25970,25971],{"class":462,"line":2158},[460,25972,25973],{"class":942},"        \u002F\u002F通过循环给每名老师带的学生赋值\n",[460,25975,25976,25978,25980,25982,25985,25987,25989,25992,25994,25996,25999,26001],{"class":462,"line":2163},[460,25977,19924],{"class":887},[460,25979,11704],{"class":466},[460,25981,16759],{"class":887},[460,25983,25984],{"class":466}," j ",[460,25986,894],{"class":887},[460,25988,2224],{"class":900},[460,25990,25991],{"class":466},"; j ",[460,25993,781],{"class":887},[460,25995,2229],{"class":900},[460,25997,25998],{"class":466},"; j",[460,26000,18828],{"class":887},[460,26002,3754],{"class":466},[460,26004,26005],{"class":462,"line":2168},[460,26006,1390],{"class":466},[460,26008,26009,26012,26014,26017],{"class":462,"line":2183},[460,26010,26011],{"class":466},"            tArray[i].sArray[j].sName ",[460,26013,894],{"class":887},[460,26015,26016],{"class":1353}," \"Student_\"",[460,26018,1966],{"class":466},[460,26020,26021,26023,26025],{"class":462,"line":2194},[460,26022,26011],{"class":466},[460,26024,3467],{"class":887},[460,26026,26027],{"class":466}," nameSeed[j];\n",[460,26029,26030,26033,26036,26038,26040,26042,26044,26046,26048,26050,26052],{"class":462,"line":2199},[460,26031,26032],{"class":887},"            int",[460,26034,26035],{"class":466}," random",[460,26037,894],{"class":887},[460,26039,18958],{"class":929},[460,26041,18961],{"class":466},[460,26043,2328],{"class":887},[460,26045,16027],{"class":900},[460,26047,8495],{"class":887},[460,26049,5504],{"class":900},[460,26051,16807],{"class":466},[460,26053,26054],{"class":942},"\u002F\u002F40~99\n",[460,26056,26057,26060,26062,26064],{"class":462,"line":2204},[460,26058,26059],{"class":466},"            tArray[i].sArray[j].age ",[460,26061,894],{"class":887},[460,26063,2590],{"class":900},[460,26065,1966],{"class":466},[460,26067,26068,26071,26073],{"class":462,"line":2212},[460,26069,26070],{"class":466},"            tArray[i].sArray[j].score ",[460,26072,894],{"class":887},[460,26074,26075],{"class":466}," random;\n",[460,26077,26078],{"class":462,"line":2257},[460,26079,3858],{"class":466},[460,26081,26082],{"class":462,"line":2285},[460,26083,509],{"class":466},[460,26085,26086],{"class":462,"line":2298},[460,26087,821],{"class":466},[460,26089,26090],{"class":462,"line":2303},[460,26091,26092],{"class":942},"\u002F\u002F打印所有信息的函数\n",[460,26094,26095,26097,26100,26102,26104,26106,26108,26111,26113,26115],{"class":462,"line":2308},[460,26096,21870],{"class":887},[460,26098,26099],{"class":929}," printInfo",[460,26101,2174],{"class":466},[460,26103,24256],{"class":887},[460,26105,25885],{"class":929},[460,26107,25888],{"class":3380},[460,26109,26110],{"class":466},"[], ",[460,26112,16759],{"class":887},[460,26114,23829],{"class":3380},[460,26116,3754],{"class":466},[460,26118,26119],{"class":462,"line":2318},[460,26120,18115],{"class":466},[460,26122,26123,26125,26127,26129,26131,26133,26135,26137,26139,26141,26143],{"class":462,"line":2333},[460,26124,19722],{"class":887},[460,26126,11704],{"class":466},[460,26128,16759],{"class":887},[460,26130,13991],{"class":466},[460,26132,894],{"class":887},[460,26134,2224],{"class":900},[460,26136,25930],{"class":466},[460,26138,781],{"class":887},[460,26140,25935],{"class":466},[460,26142,18828],{"class":887},[460,26144,3754],{"class":466},[460,26146,26147],{"class":462,"line":2338},[460,26148,18570],{"class":466},[460,26150,26151,26154,26156,26159,26161,26164,26166],{"class":462,"line":2343},[460,26152,26153],{"class":466},"        cout ",[460,26155,17750],{"class":887},[460,26157,26158],{"class":1353}," \"Teacher: \"",[460,26160,18014],{"class":887},[460,26162,26163],{"class":466}," tArray[i].tName ",[460,26165,17750],{"class":887},[460,26167,25327],{"class":466},[460,26169,26170,26172,26174,26176,26178,26180,26182,26184,26186,26188,26190,26192],{"class":462,"line":2353},[460,26171,19924],{"class":887},[460,26173,11704],{"class":466},[460,26175,16759],{"class":887},[460,26177,25984],{"class":466},[460,26179,894],{"class":887},[460,26181,2224],{"class":900},[460,26183,25991],{"class":466},[460,26185,781],{"class":887},[460,26187,2229],{"class":900},[460,26189,25998],{"class":466},[460,26191,18828],{"class":887},[460,26193,3754],{"class":466},[460,26195,26196],{"class":462,"line":2368},[460,26197,1390],{"class":466},[460,26199,26200,26203,26205,26208,26210,26213,26215,26218,26220],{"class":462,"line":2381},[460,26201,26202],{"class":466},"            cout ",[460,26204,17750],{"class":887},[460,26206,26207],{"class":1353}," \"",[460,26209,17807],{"class":900},[460,26211,26212],{"class":1353},"Student: \"",[460,26214,18014],{"class":887},[460,26216,26217],{"class":466}," tArray[i].sArray[j].sName",[460,26219,17750],{"class":887},[460,26221,17772],{"class":466},[460,26223,26224,26226,26228,26230,26232,26235,26237,26240,26242],{"class":462,"line":2394},[460,26225,26202],{"class":466},[460,26227,17750],{"class":887},[460,26229,26207],{"class":1353},[460,26231,17807],{"class":900},[460,26233,26234],{"class":1353},"Age: \"",[460,26236,18014],{"class":887},[460,26238,26239],{"class":466}," tArray[i].sArray[j].age ",[460,26241,17750],{"class":887},[460,26243,25327],{"class":466},[460,26245,26246,26248,26250,26252,26254,26257,26259,26262,26264],{"class":462,"line":2399},[460,26247,26202],{"class":466},[460,26249,17750],{"class":887},[460,26251,26207],{"class":1353},[460,26253,17807],{"class":900},[460,26255,26256],{"class":1353},"Score: \"",[460,26258,18014],{"class":887},[460,26260,26261],{"class":466}," tArray[i].sArray[j].score ",[460,26263,17750],{"class":887},[460,26265,26266],{"class":466}," endl;   \n",[460,26268,26269],{"class":462,"line":2404},[460,26270,3858],{"class":466},[460,26272,26273],{"class":462,"line":2414},[460,26274,509],{"class":466},[460,26276,26277],{"class":462,"line":2428},[460,26278,821],{"class":466},[460,26280,26281,26283,26285],{"class":462,"line":2440},[460,26282,16759],{"class":887},[460,26284,18514],{"class":929},[460,26286,10758],{"class":466},[460,26288,26289],{"class":462,"line":2445},[460,26290,18115],{"class":466},[460,26292,26293],{"class":462,"line":2450},[460,26294,26295],{"class":942},"    \u002F\u002F随机数种子\n",[460,26297,26298,26300,26302,26304,26306,26308,26310,26312,26314],{"class":462,"line":2460},[460,26299,18909],{"class":929},[460,26301,8477],{"class":466},[460,26303,18914],{"class":887},[460,26305,18917],{"class":887},[460,26307,8411],{"class":466},[460,26309,18922],{"class":929},[460,26311,2174],{"class":466},[460,26313,18927],{"class":900},[460,26315,18930],{"class":466},[460,26317,26318],{"class":462,"line":2473},[460,26319,26320],{"class":942},"    \u002F\u002F1.创建3名老师的数组\n",[460,26322,26323,26325,26327,26330,26332],{"class":462,"line":2487},[460,26324,24392],{"class":887},[460,26326,25885],{"class":929},[460,26328,26329],{"class":466}," tArray[",[460,26331,913],{"class":900},[460,26333,21200],{"class":466},[460,26335,26336],{"class":462,"line":2492},[460,26337,26338],{"class":942},"    \u002F\u002F2.通过函数给3名老师的信息赋值，并给老师带的学生信息赋值\n",[460,26340,26341,26343,26346,26348,26351,26354,26356,26358,26361,26363],{"class":462,"line":2497},[460,26342,18525],{"class":887},[460,26344,26345],{"class":466}," len ",[460,26347,894],{"class":887},[460,26349,26350],{"class":887}," sizeof",[460,26352,26353],{"class":466},"(tArray) ",[460,26355,8331],{"class":887},[460,26357,26350],{"class":887},[460,26359,26360],{"class":466},"(tArray[",[460,26362,936],{"class":900},[460,26364,20373],{"class":466},[460,26366,26367,26370],{"class":462,"line":2505},[460,26368,26369],{"class":929},"    allocateSpace",[460,26371,26372],{"class":466},"(tArray, len);\n",[460,26374,26375],{"class":462,"line":2516},[460,26376,26377],{"class":942},"    \u002F\u002F3.打印所有老师及所带的学生信息\n",[460,26379,26380,26383],{"class":462,"line":2529},[460,26381,26382],{"class":929},"    printInfo",[460,26384,26372],{"class":466},[460,26386,26387],{"class":462,"line":2542},[460,26388,522],{"emptyLinePlaceholder":521},[460,26390,26391],{"class":462,"line":2559},[460,26392,821],{"class":466},[103,26394,26395],{"start":476},[43,26396,26397,26400],{},[3944,26398,26399],{},"案例描述：","：设计一个英雄的结构体，包括成员姓名，年龄，性别;创建结构体数组，数组中存放5名英雄。通过冒泡排序的算法，将数组中的英雄按照年龄进行升序排序，最终打印排序后的结果。",[14,26402,26403],{},"五名英雄信息如下：",[451,26405,26409],{"className":26406,"code":26407,"language":26408,"meta":32,"style":32},"language-C++ shiki shiki-themes github-light github-dark","        {\"刘备\",23,\"男\"},\n        {\"关羽\",22,\"男\"},\n        {\"张飞\",20,\"男\"},\n        {\"赵云\",21,\"男\"},\n        {\"貂蝉\",19,\"女\"},\n","C++",[457,26410,26411,26429,26446,26463,26480],{"__ignoreMap":32},[460,26412,26413,26415,26418,26420,26422,26424,26427],{"class":462,"line":463},[460,26414,21426],{"class":466},[460,26416,26417],{"class":1353},"\"刘备\"",[460,26419,3986],{"class":466},[460,26421,17490],{"class":900},[460,26423,3986],{"class":466},[460,26425,26426],{"class":1353},"\"男\"",[460,26428,21439],{"class":466},[460,26430,26431,26433,26436,26438,26440,26442,26444],{"class":462,"line":476},[460,26432,21426],{"class":466},[460,26434,26435],{"class":1353},"\"关羽\"",[460,26437,3986],{"class":466},[460,26439,2421],{"class":900},[460,26441,3986],{"class":466},[460,26443,26426],{"class":1353},[460,26445,21439],{"class":466},[460,26447,26448,26450,26453,26455,26457,26459,26461],{"class":462,"line":482},[460,26449,21426],{"class":466},[460,26451,26452],{"class":1353},"\"张飞\"",[460,26454,3986],{"class":466},[460,26456,2110],{"class":900},[460,26458,3986],{"class":466},[460,26460,26426],{"class":1353},[460,26462,21439],{"class":466},[460,26464,26465,26467,26470,26472,26474,26476,26478],{"class":462,"line":488},[460,26466,21426],{"class":466},[460,26468,26469],{"class":1353},"\"赵云\"",[460,26471,3986],{"class":466},[460,26473,17441],{"class":900},[460,26475,3986],{"class":466},[460,26477,26426],{"class":1353},[460,26479,21439],{"class":466},[460,26481,26482,26484,26487,26489,26491,26493,26496],{"class":462,"line":494},[460,26483,21426],{"class":466},[460,26485,26486],{"class":1353},"\"貂蝉\"",[460,26488,3986],{"class":466},[460,26490,17394],{"class":900},[460,26492,3986],{"class":466},[460,26494,26495],{"class":1353},"\"女\"",[460,26497,21439],{"class":466},[14,26499,26500],{},"代码：",[451,26502,26504],{"className":16745,"code":26503,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\nstruct Sanguo\n{\n    string name;\n    int age;\n    string gender;\n};\n\u002F\u002F定义排序函数\nvoid bubbleSort(Sanguo *s,int len)\n{\n    for(int i=0;i\u003Clen;i++)\n    {\n     for (int j=0;j\u003Clen-1-i;j++)\n     {\n         if ((s+j)->age > (s+j+1)->age)\n         {\n             Sanguo temp=*(s+j);\n             *(s+j)=*(s+j+1);\n             *(s+j+1)=temp;\n         }\n     }\n    }\n}\n\u002F\u002F定义打印函数\nvoid printInfo(Sanguo *s,int len)\n{\n    for (int i=0;i\u003Clen;i++)\n    {\n        cout\u003C\u003C\"\\t姓名：\"\u003C\u003C(s+i)->name\u003C\u003C\"\\t年龄：\"\u003C\u003C(s+i)->age\u003C\u003C\"\\t性别：\"\u003C\u003C(s+i)->gender\u003C\u003Cendl;\n    }\n}\nint main()\n{\n    \u002F\u002F定义结构体变量\n    Sanguo s1[5]=\n    {\n        {\"刘备\",23,\"男\"},\n        {\"关羽\",22,\"男\"},\n        {\"张飞\",20,\"男\"},\n        {\"赵云\",21,\"男\"},\n        {\"貂蝉\",19,\"女\"},\n    };\n    int len=sizeof(s1)\u002Fsizeof(s1[0]);\n    Sanguo *s = &s1[0];\n    \u002F\u002F排序前：\n    cout \u003C\u003C \"排序前：\" \u003C\u003C endl;\n    printInfo(s,len);\n    \u002F\u002F调用排序函数\n    bubbleSort(s,len);\n    \u002F\u002F排序后\n    cout \u003C\u003C \"排序后：\" \u003C\u003C endl;\n    printInfo(s,len);\n}\n",[457,26505,26506,26512,26522,26528,26535,26539,26543,26549,26554,26558,26563,26586,26590,26615,26619,26652,26657,26686,26691,26706,26732,26752,26757,26762,26766,26770,26775,26797,26801,26825,26829,26891,26895,26899,26907,26911,26916,26927,26931,26947,26963,26979,26995,27011,27015,27035,27057,27062,27075,27082,27087,27093,27098,27111,27117],{"__ignoreMap":32},[460,26507,26508,26510],{"class":462,"line":463},[460,26509,18491],{"class":887},[460,26511,18494],{"class":1353},[460,26513,26514,26516,26518,26520],{"class":462,"line":476},[460,26515,18499],{"class":887},[460,26517,18502],{"class":887},[460,26519,18505],{"class":929},[460,26521,1966],{"class":466},[460,26523,26524,26526],{"class":462,"line":482},[460,26525,18491],{"class":887},[460,26527,24246],{"class":1353},[460,26529,26530,26532],{"class":462,"line":488},[460,26531,24256],{"class":887},[460,26533,26534],{"class":929}," Sanguo\n",[460,26536,26537],{"class":462,"line":494},[460,26538,18115],{"class":466},[460,26540,26541],{"class":462,"line":500},[460,26542,24282],{"class":466},[460,26544,26545,26547],{"class":462,"line":506},[460,26546,18525],{"class":887},[460,26548,24294],{"class":466},[460,26550,26551],{"class":462,"line":512},[460,26552,26553],{"class":466},"    string gender;\n",[460,26555,26556],{"class":462,"line":518},[460,26557,20510],{"class":466},[460,26559,26560],{"class":462,"line":525},[460,26561,26562],{"class":942},"\u002F\u002F定义排序函数\n",[460,26564,26565,26567,26569,26571,26574,26576,26578,26580,26582,26584],{"class":462,"line":531},[460,26566,21870],{"class":887},[460,26568,23814],{"class":929},[460,26570,2174],{"class":466},[460,26572,26573],{"class":929},"Sanguo",[460,26575,8325],{"class":887},[460,26577,2139],{"class":3380},[460,26579,3986],{"class":466},[460,26581,16759],{"class":887},[460,26583,23829],{"class":3380},[460,26585,3754],{"class":466},[460,26587,26588],{"class":462,"line":537},[460,26589,18115],{"class":466},[460,26591,26592,26594,26596,26598,26600,26602,26604,26606,26608,26611,26613],{"class":462,"line":543},[460,26593,19722],{"class":887},[460,26595,2174],{"class":466},[460,26597,16759],{"class":887},[460,26599,10169],{"class":466},[460,26601,894],{"class":887},[460,26603,936],{"class":900},[460,26605,19560],{"class":466},[460,26607,781],{"class":887},[460,26609,26610],{"class":466},"len;i",[460,26612,18828],{"class":887},[460,26614,3754],{"class":466},[460,26616,26617],{"class":462,"line":549},[460,26618,18570],{"class":466},[460,26620,26621,26624,26626,26628,26630,26632,26634,26636,26638,26640,26642,26644,26646,26648,26650],{"class":462,"line":555},[460,26622,26623],{"class":887},"     for",[460,26625,11704],{"class":466},[460,26627,16759],{"class":887},[460,26629,19931],{"class":466},[460,26631,894],{"class":887},[460,26633,936],{"class":900},[460,26635,19938],{"class":466},[460,26637,781],{"class":887},[460,26639,23856],{"class":466},[460,26641,17259],{"class":887},[460,26643,901],{"class":900},[460,26645,17259],{"class":887},[460,26647,20071],{"class":466},[460,26649,18828],{"class":887},[460,26651,3754],{"class":466},[460,26653,26654],{"class":462,"line":560},[460,26655,26656],{"class":466},"     {\n",[460,26658,26659,26662,26665,26667,26670,26672,26675,26677,26679,26681,26683],{"class":462,"line":566},[460,26660,26661],{"class":887},"         if",[460,26663,26664],{"class":466}," ((s",[460,26666,8495],{"class":887},[460,26668,26669],{"class":466},"j)->age ",[460,26671,17668],{"class":887},[460,26673,26674],{"class":466}," (s",[460,26676,8495],{"class":887},[460,26678,17198],{"class":466},[460,26680,8495],{"class":887},[460,26682,901],{"class":900},[460,26684,26685],{"class":466},")->age)\n",[460,26687,26688],{"class":462,"line":572},[460,26689,26690],{"class":466},"         {\n",[460,26692,26693,26696,26698,26701,26703],{"class":462,"line":578},[460,26694,26695],{"class":466},"             Sanguo temp",[460,26697,23651],{"class":887},[460,26699,26700],{"class":466},"(s",[460,26702,8495],{"class":887},[460,26704,26705],{"class":466},"j);\n",[460,26707,26708,26711,26713,26715,26718,26720,26722,26724,26726,26728,26730],{"class":462,"line":812},[460,26709,26710],{"class":887},"             *",[460,26712,26700],{"class":466},[460,26714,8495],{"class":887},[460,26716,26717],{"class":466},"j)",[460,26719,23651],{"class":887},[460,26721,26700],{"class":466},[460,26723,8495],{"class":887},[460,26725,17198],{"class":466},[460,26727,8495],{"class":887},[460,26729,901],{"class":900},[460,26731,2254],{"class":466},[460,26733,26734,26736,26738,26740,26742,26744,26746,26748,26750],{"class":462,"line":818},[460,26735,26710],{"class":887},[460,26737,26700],{"class":466},[460,26739,8495],{"class":887},[460,26741,17198],{"class":466},[460,26743,8495],{"class":887},[460,26745,901],{"class":900},[460,26747,8411],{"class":466},[460,26749,894],{"class":887},[460,26751,20793],{"class":466},[460,26753,26754],{"class":462,"line":824},[460,26755,26756],{"class":466},"         }\n",[460,26758,26759],{"class":462,"line":2074},[460,26760,26761],{"class":466},"     }\n",[460,26763,26764],{"class":462,"line":2088},[460,26765,509],{"class":466},[460,26767,26768],{"class":462,"line":2103},[460,26769,821],{"class":466},[460,26771,26772],{"class":462,"line":2122},[460,26773,26774],{"class":942},"\u002F\u002F定义打印函数\n",[460,26776,26777,26779,26781,26783,26785,26787,26789,26791,26793,26795],{"class":462,"line":2144},[460,26778,21870],{"class":887},[460,26780,26099],{"class":929},[460,26782,2174],{"class":466},[460,26784,26573],{"class":929},[460,26786,8325],{"class":887},[460,26788,2139],{"class":3380},[460,26790,3986],{"class":466},[460,26792,16759],{"class":887},[460,26794,23829],{"class":3380},[460,26796,3754],{"class":466},[460,26798,26799],{"class":462,"line":2158},[460,26800,18115],{"class":466},[460,26802,26803,26805,26807,26809,26811,26813,26815,26817,26819,26821,26823],{"class":462,"line":2163},[460,26804,19722],{"class":887},[460,26806,11704],{"class":466},[460,26808,16759],{"class":887},[460,26810,10169],{"class":466},[460,26812,894],{"class":887},[460,26814,936],{"class":900},[460,26816,19560],{"class":466},[460,26818,781],{"class":887},[460,26820,26610],{"class":466},[460,26822,18828],{"class":887},[460,26824,3754],{"class":466},[460,26826,26827],{"class":462,"line":2168},[460,26828,18570],{"class":466},[460,26830,26831,26833,26835,26837,26839,26842,26844,26846,26848,26851,26853,26855,26857,26860,26862,26864,26866,26869,26871,26873,26875,26878,26880,26882,26884,26887,26889],{"class":462,"line":2183},[460,26832,19972],{"class":466},[460,26834,17750],{"class":887},[460,26836,16993],{"class":1353},[460,26838,17807],{"class":900},[460,26840,26841],{"class":1353},"姓名：\"",[460,26843,17750],{"class":887},[460,26845,26700],{"class":466},[460,26847,8495],{"class":887},[460,26849,26850],{"class":466},"i)->name",[460,26852,17750],{"class":887},[460,26854,16993],{"class":1353},[460,26856,17807],{"class":900},[460,26858,26859],{"class":1353},"年龄：\"",[460,26861,17750],{"class":887},[460,26863,26700],{"class":466},[460,26865,8495],{"class":887},[460,26867,26868],{"class":466},"i)->age",[460,26870,17750],{"class":887},[460,26872,16993],{"class":1353},[460,26874,17807],{"class":900},[460,26876,26877],{"class":1353},"性别：\"",[460,26879,17750],{"class":887},[460,26881,26700],{"class":466},[460,26883,8495],{"class":887},[460,26885,26886],{"class":466},"i)->gender",[460,26888,17750],{"class":887},[460,26890,17772],{"class":466},[460,26892,26893],{"class":462,"line":2194},[460,26894,509],{"class":466},[460,26896,26897],{"class":462,"line":2199},[460,26898,821],{"class":466},[460,26900,26901,26903,26905],{"class":462,"line":2204},[460,26902,16759],{"class":887},[460,26904,18514],{"class":929},[460,26906,10758],{"class":466},[460,26908,26909],{"class":462,"line":2212},[460,26910,18115],{"class":466},[460,26912,26913],{"class":462,"line":2257},[460,26914,26915],{"class":942},"    \u002F\u002F定义结构体变量\n",[460,26917,26918,26921,26923,26925],{"class":462,"line":2285},[460,26919,26920],{"class":466},"    Sanguo s1[",[460,26922,7290],{"class":900},[460,26924,17649],{"class":466},[460,26926,21417],{"class":887},[460,26928,26929],{"class":462,"line":2298},[460,26930,18570],{"class":466},[460,26932,26933,26935,26937,26939,26941,26943,26945],{"class":462,"line":2303},[460,26934,21426],{"class":466},[460,26936,26417],{"class":1353},[460,26938,3986],{"class":466},[460,26940,17490],{"class":900},[460,26942,3986],{"class":466},[460,26944,26426],{"class":1353},[460,26946,21439],{"class":466},[460,26948,26949,26951,26953,26955,26957,26959,26961],{"class":462,"line":2308},[460,26950,21426],{"class":466},[460,26952,26435],{"class":1353},[460,26954,3986],{"class":466},[460,26956,2421],{"class":900},[460,26958,3986],{"class":466},[460,26960,26426],{"class":1353},[460,26962,21439],{"class":466},[460,26964,26965,26967,26969,26971,26973,26975,26977],{"class":462,"line":2318},[460,26966,21426],{"class":466},[460,26968,26452],{"class":1353},[460,26970,3986],{"class":466},[460,26972,2110],{"class":900},[460,26974,3986],{"class":466},[460,26976,26426],{"class":1353},[460,26978,21439],{"class":466},[460,26980,26981,26983,26985,26987,26989,26991,26993],{"class":462,"line":2333},[460,26982,21426],{"class":466},[460,26984,26469],{"class":1353},[460,26986,3986],{"class":466},[460,26988,17441],{"class":900},[460,26990,3986],{"class":466},[460,26992,26426],{"class":1353},[460,26994,21439],{"class":466},[460,26996,26997,26999,27001,27003,27005,27007,27009],{"class":462,"line":2338},[460,26998,21426],{"class":466},[460,27000,26486],{"class":1353},[460,27002,3986],{"class":466},[460,27004,17394],{"class":900},[460,27006,3986],{"class":466},[460,27008,26495],{"class":1353},[460,27010,21439],{"class":466},[460,27012,27013],{"class":462,"line":2343},[460,27014,21460],{"class":466},[460,27016,27017,27019,27021,27023,27026,27028,27031,27033],{"class":462,"line":2353},[460,27018,18525],{"class":887},[460,27020,23829],{"class":466},[460,27022,20717],{"class":887},[460,27024,27025],{"class":466},"(s1)",[460,27027,20723],{"class":887},[460,27029,27030],{"class":466},"(s1[",[460,27032,936],{"class":900},[460,27034,20373],{"class":466},[460,27036,27037,27040,27042,27045,27047,27050,27053,27055],{"class":462,"line":2368},[460,27038,27039],{"class":466},"    Sanguo ",[460,27041,8320],{"class":887},[460,27043,27044],{"class":466},"s ",[460,27046,894],{"class":887},[460,27048,27049],{"class":887}," &",[460,27051,27052],{"class":466},"s1[",[460,27054,936],{"class":900},[460,27056,21200],{"class":466},[460,27058,27059],{"class":462,"line":2381},[460,27060,27061],{"class":942},"    \u002F\u002F排序前：\n",[460,27063,27064,27066,27068,27071,27073],{"class":462,"line":2394},[460,27065,23029],{"class":466},[460,27067,17750],{"class":887},[460,27069,27070],{"class":1353}," \"排序前：\"",[460,27072,18014],{"class":887},[460,27074,25327],{"class":466},[460,27076,27077,27079],{"class":462,"line":2399},[460,27078,26382],{"class":929},[460,27080,27081],{"class":466},"(s,len);\n",[460,27083,27084],{"class":462,"line":2404},[460,27085,27086],{"class":942},"    \u002F\u002F调用排序函数\n",[460,27088,27089,27091],{"class":462,"line":2414},[460,27090,24096],{"class":929},[460,27092,27081],{"class":466},[460,27094,27095],{"class":462,"line":2428},[460,27096,27097],{"class":942},"    \u002F\u002F排序后\n",[460,27099,27100,27102,27104,27107,27109],{"class":462,"line":2440},[460,27101,23029],{"class":466},[460,27103,17750],{"class":887},[460,27105,27106],{"class":1353}," \"排序后：\"",[460,27108,18014],{"class":887},[460,27110,25327],{"class":466},[460,27112,27113,27115],{"class":462,"line":2445},[460,27114,26382],{"class":929},[460,27116,27081],{"class":466},[460,27118,27119],{"class":462,"line":2450},[460,27120,821],{"class":466},[14,27122,27123,27124,27126],{},"注意：使用指针时直接用传首地址**&s",[460,27125,936],{},"**",[1944,27128,27129],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":27131},[27132,27133,27134,27135,27136,27137,27138],{"id":24200,"depth":476,"text":24201},{"id":24552,"depth":476,"text":24553},{"id":24821,"depth":476,"text":24822},{"id":24986,"depth":476,"text":24987},{"id":25202,"depth":476,"text":25203},{"id":25522,"depth":476,"text":25523},{"id":25750,"depth":476,"text":25751},{},"\u002Fwiki\u002F2026-05-24-c++\u002Fch4",{"title":24189,"description":24197},"wiki\u002F2026-05-24-c++学习\u002Fch4-结构体","9PmekB_EowSYIB-KISKoLIyOoICqlLJlAWgdT5pQ-Ns",{"id":27145,"title":27146,"body":27147,"description":32,"extension":16683,"meta":28485,"navigation":521,"path":28486,"seo":28487,"stem":28488,"__hash__":28489},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Fch5-程序内存模型.md","5.程序内存模型",{"type":7,"value":27148,"toc":28479},[27149,27152,27156,27162,27176,27181,27184,27188,27195,27201,27204,27211,27217,27222,27225,27228,27231,27793,27795,27809,27813,27818,27834,27974,27977,27983,27986,27991,27999,28106,28109,28114,28117,28122,28125,28131,28134,28476],[10,27150,27146],{"id":27151},"_5程序内存模型",[18,27153,27155],{"id":27154},"_51内存分区模型","5.1内存分区模型",[14,27157,27158,27159],{},"C++程序在执行时，将内存大方向划分为",[3944,27160,27161],{},"4个区域",[40,27163,27164,27167,27170,27173],{},[43,27165,27166],{},"代码区：存放函数体的二进制代码，由操作系统进行管理的",[43,27168,27169],{},"全局区：存放全局变量和静态变量以及常量",[43,27171,27172],{},"栈区：由编译器自动分配释放, 存放函数的参数值,局部变量等",[43,27174,27175],{},"堆区：由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收",[14,27177,27178],{},[3944,27179,27180],{},"内存四区意义：",[14,27182,27183],{},"不同区域存放的数据，赋予不同的生命周期, 给我们更大的灵活编程",[23,27185,27187],{"id":27186},"_511程序运行前","5.1.1程序运行前",[14,27189,27190,27191,27194],{},"​\t在程序编译后，生成了exe可执行程序，",[3944,27192,27193],{},"未执行该程序前","分为两个区域",[14,27196,27197,27198],{},"​\t",[3944,27199,27200],{},"代码区：",[14,27202,27203],{},"​\t\t存放 CPU 执行的机器指令",[14,27205,27206,27207,27210],{},"​\t\t代码区是",[3944,27208,27209],{},"共享","的，共享的目的是对于频繁被执行的程序，只需要在内存中有一份代码即可",[14,27212,27206,27213,27216],{},[3944,27214,27215],{},"只读","的，使其只读的原因是防止程序意外地修改了它的指令",[14,27218,27197,27219],{},[3944,27220,27221],{},"全局区：",[14,27223,27224],{},"​\t\t全局变量和静态变量存放在此.",[14,27226,27227],{},"​\t\t全局区还包含了常量区, 字符串常量和其他常量也存放在此.",[14,27229,27230],{},"​\t\t该区域的数据在程序结束后由操作系统释放",[451,27232,27234],{"className":16745,"code":27233,"language":16747,"meta":32,"style":32},"\u002F\u002F全局变量\nint g_a = 10;\nint g_b = 10;\n\n\u002F\u002F全局常量\nconst int c_g_a = 10;\nconst int c_g_b = 10;\n\nint main() {\n\n    \u002F\u002F局部变量\n    int a = 10;\n    int b = 10;\n\n    \u002F\u002F打印地址\n    cout \u003C\u003C \"局部变量a地址为： \" \u003C\u003C (int)&a \u003C\u003C endl;\n    cout \u003C\u003C \"局部变量b地址为： \" \u003C\u003C (int)&b \u003C\u003C endl;\n\n    cout \u003C\u003C \"全局变量g_a地址为： \" \u003C\u003C  (int)&g_a \u003C\u003C endl;\n    cout \u003C\u003C \"全局变量g_b地址为： \" \u003C\u003C  (int)&g_b \u003C\u003C endl;\n\n    \u002F\u002F静态变量\n    static int s_a = 10;\n    static int s_b = 10;\n\n    cout \u003C\u003C \"静态变量s_a地址为： \" \u003C\u003C (int)&s_a \u003C\u003C endl;\n    cout \u003C\u003C \"静态变量s_b地址为： \" \u003C\u003C (int)&s_b \u003C\u003C endl;\n\n    cout \u003C\u003C \"字符串常量地址为： \" \u003C\u003C (int)&\"hello world\" \u003C\u003C endl;\n    cout \u003C\u003C \"字符串常量地址为： \" \u003C\u003C (int)&\"hello world1\" \u003C\u003C endl;\n\n    cout \u003C\u003C \"全局常量c_g_a地址为： \" \u003C\u003C (int)&c_g_a \u003C\u003C endl;\n    cout \u003C\u003C \"全局常量c_g_b地址为： \" \u003C\u003C (int)&c_g_b \u003C\u003C endl;\n\n    const int c_l_a = 10;\n    const int c_l_b = 10;\n    cout \u003C\u003C \"局部常量c_l_a地址为： \" \u003C\u003C (int)&c_l_a \u003C\u003C endl;\n    cout \u003C\u003C \"局部常量c_l_b地址为： \" \u003C\u003C (int)&c_l_b \u003C\u003C endl;\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,27235,27236,27241,27254,27267,27271,27276,27291,27306,27310,27318,27322,27327,27340,27353,27357,27362,27388,27414,27418,27445,27471,27475,27480,27496,27511,27515,27541,27567,27571,27596,27621,27625,27651,27677,27681,27696,27711,27737,27763,27767,27777,27781,27789],{"__ignoreMap":32},[460,27237,27238],{"class":462,"line":463},[460,27239,27240],{"class":942},"\u002F\u002F全局变量\n",[460,27242,27243,27245,27248,27250,27252],{"class":462,"line":476},[460,27244,16759],{"class":887},[460,27246,27247],{"class":466}," g_a ",[460,27249,894],{"class":887},[460,27251,5231],{"class":900},[460,27253,1966],{"class":466},[460,27255,27256,27258,27261,27263,27265],{"class":462,"line":482},[460,27257,16759],{"class":887},[460,27259,27260],{"class":466}," g_b ",[460,27262,894],{"class":887},[460,27264,5231],{"class":900},[460,27266,1966],{"class":466},[460,27268,27269],{"class":462,"line":488},[460,27270,522],{"emptyLinePlaceholder":521},[460,27272,27273],{"class":462,"line":494},[460,27274,27275],{"class":942},"\u002F\u002F全局常量\n",[460,27277,27278,27280,27282,27285,27287,27289],{"class":462,"line":500},[460,27279,888],{"class":887},[460,27281,18917],{"class":887},[460,27283,27284],{"class":466}," c_g_a ",[460,27286,894],{"class":887},[460,27288,5231],{"class":900},[460,27290,1966],{"class":466},[460,27292,27293,27295,27297,27300,27302,27304],{"class":462,"line":506},[460,27294,888],{"class":887},[460,27296,18917],{"class":887},[460,27298,27299],{"class":466}," c_g_b ",[460,27301,894],{"class":887},[460,27303,5231],{"class":900},[460,27305,1966],{"class":466},[460,27307,27308],{"class":462,"line":512},[460,27309,522],{"emptyLinePlaceholder":521},[460,27311,27312,27314,27316],{"class":462,"line":518},[460,27313,16759],{"class":887},[460,27315,18514],{"class":929},[460,27317,11374],{"class":466},[460,27319,27320],{"class":462,"line":525},[460,27321,522],{"emptyLinePlaceholder":521},[460,27323,27324],{"class":462,"line":531},[460,27325,27326],{"class":942},"    \u002F\u002F局部变量\n",[460,27328,27329,27331,27334,27336,27338],{"class":462,"line":537},[460,27330,18525],{"class":887},[460,27332,27333],{"class":466}," a ",[460,27335,894],{"class":887},[460,27337,5231],{"class":900},[460,27339,1966],{"class":466},[460,27341,27342,27344,27347,27349,27351],{"class":462,"line":543},[460,27343,18525],{"class":887},[460,27345,27346],{"class":466}," b ",[460,27348,894],{"class":887},[460,27350,5231],{"class":900},[460,27352,1966],{"class":466},[460,27354,27355],{"class":462,"line":549},[460,27356,522],{"emptyLinePlaceholder":521},[460,27358,27359],{"class":462,"line":555},[460,27360,27361],{"class":942},"    \u002F\u002F打印地址\n",[460,27363,27364,27366,27368,27371,27373,27375,27377,27379,27381,27384,27386],{"class":462,"line":560},[460,27365,23029],{"class":466},[460,27367,17750],{"class":887},[460,27369,27370],{"class":1353}," \"局部变量a地址为： \"",[460,27372,18014],{"class":887},[460,27374,11704],{"class":466},[460,27376,16759],{"class":887},[460,27378,8411],{"class":466},[460,27380,17090],{"class":887},[460,27382,27383],{"class":466},"a ",[460,27385,17750],{"class":887},[460,27387,25327],{"class":466},[460,27389,27390,27392,27394,27397,27399,27401,27403,27405,27407,27410,27412],{"class":462,"line":566},[460,27391,23029],{"class":466},[460,27393,17750],{"class":887},[460,27395,27396],{"class":1353}," \"局部变量b地址为： \"",[460,27398,18014],{"class":887},[460,27400,11704],{"class":466},[460,27402,16759],{"class":887},[460,27404,8411],{"class":466},[460,27406,17090],{"class":887},[460,27408,27409],{"class":466},"b ",[460,27411,17750],{"class":887},[460,27413,25327],{"class":466},[460,27415,27416],{"class":462,"line":572},[460,27417,522],{"emptyLinePlaceholder":521},[460,27419,27420,27422,27424,27427,27429,27432,27434,27436,27438,27441,27443],{"class":462,"line":578},[460,27421,23029],{"class":466},[460,27423,17750],{"class":887},[460,27425,27426],{"class":1353}," \"全局变量g_a地址为： \"",[460,27428,18014],{"class":887},[460,27430,27431],{"class":466},"  (",[460,27433,16759],{"class":887},[460,27435,8411],{"class":466},[460,27437,17090],{"class":887},[460,27439,27440],{"class":466},"g_a ",[460,27442,17750],{"class":887},[460,27444,25327],{"class":466},[460,27446,27447,27449,27451,27454,27456,27458,27460,27462,27464,27467,27469],{"class":462,"line":812},[460,27448,23029],{"class":466},[460,27450,17750],{"class":887},[460,27452,27453],{"class":1353}," \"全局变量g_b地址为： \"",[460,27455,18014],{"class":887},[460,27457,27431],{"class":466},[460,27459,16759],{"class":887},[460,27461,8411],{"class":466},[460,27463,17090],{"class":887},[460,27465,27466],{"class":466},"g_b ",[460,27468,17750],{"class":887},[460,27470,25327],{"class":466},[460,27472,27473],{"class":462,"line":818},[460,27474,522],{"emptyLinePlaceholder":521},[460,27476,27477],{"class":462,"line":824},[460,27478,27479],{"class":942},"    \u002F\u002F静态变量\n",[460,27481,27482,27485,27487,27490,27492,27494],{"class":462,"line":2074},[460,27483,27484],{"class":887},"    static",[460,27486,18917],{"class":887},[460,27488,27489],{"class":466}," s_a ",[460,27491,894],{"class":887},[460,27493,5231],{"class":900},[460,27495,1966],{"class":466},[460,27497,27498,27500,27502,27505,27507,27509],{"class":462,"line":2088},[460,27499,27484],{"class":887},[460,27501,18917],{"class":887},[460,27503,27504],{"class":466}," s_b ",[460,27506,894],{"class":887},[460,27508,5231],{"class":900},[460,27510,1966],{"class":466},[460,27512,27513],{"class":462,"line":2103},[460,27514,522],{"emptyLinePlaceholder":521},[460,27516,27517,27519,27521,27524,27526,27528,27530,27532,27534,27537,27539],{"class":462,"line":2122},[460,27518,23029],{"class":466},[460,27520,17750],{"class":887},[460,27522,27523],{"class":1353}," \"静态变量s_a地址为： \"",[460,27525,18014],{"class":887},[460,27527,11704],{"class":466},[460,27529,16759],{"class":887},[460,27531,8411],{"class":466},[460,27533,17090],{"class":887},[460,27535,27536],{"class":466},"s_a ",[460,27538,17750],{"class":887},[460,27540,25327],{"class":466},[460,27542,27543,27545,27547,27550,27552,27554,27556,27558,27560,27563,27565],{"class":462,"line":2144},[460,27544,23029],{"class":466},[460,27546,17750],{"class":887},[460,27548,27549],{"class":1353}," \"静态变量s_b地址为： \"",[460,27551,18014],{"class":887},[460,27553,11704],{"class":466},[460,27555,16759],{"class":887},[460,27557,8411],{"class":466},[460,27559,17090],{"class":887},[460,27561,27562],{"class":466},"s_b ",[460,27564,17750],{"class":887},[460,27566,25327],{"class":466},[460,27568,27569],{"class":462,"line":2158},[460,27570,522],{"emptyLinePlaceholder":521},[460,27572,27573,27575,27577,27580,27582,27584,27586,27588,27590,27592,27594],{"class":462,"line":2163},[460,27574,23029],{"class":466},[460,27576,17750],{"class":887},[460,27578,27579],{"class":1353}," \"字符串常量地址为： \"",[460,27581,18014],{"class":887},[460,27583,11704],{"class":466},[460,27585,16759],{"class":887},[460,27587,8411],{"class":466},[460,27589,17090],{"class":887},[460,27591,17767],{"class":1353},[460,27593,18014],{"class":887},[460,27595,25327],{"class":466},[460,27597,27598,27600,27602,27604,27606,27608,27610,27612,27614,27617,27619],{"class":462,"line":2168},[460,27599,23029],{"class":466},[460,27601,17750],{"class":887},[460,27603,27579],{"class":1353},[460,27605,18014],{"class":887},[460,27607,11704],{"class":466},[460,27609,16759],{"class":887},[460,27611,8411],{"class":466},[460,27613,17090],{"class":887},[460,27615,27616],{"class":1353},"\"hello world1\"",[460,27618,18014],{"class":887},[460,27620,25327],{"class":466},[460,27622,27623],{"class":462,"line":2183},[460,27624,522],{"emptyLinePlaceholder":521},[460,27626,27627,27629,27631,27634,27636,27638,27640,27642,27644,27647,27649],{"class":462,"line":2194},[460,27628,23029],{"class":466},[460,27630,17750],{"class":887},[460,27632,27633],{"class":1353}," \"全局常量c_g_a地址为： \"",[460,27635,18014],{"class":887},[460,27637,11704],{"class":466},[460,27639,16759],{"class":887},[460,27641,8411],{"class":466},[460,27643,17090],{"class":887},[460,27645,27646],{"class":466},"c_g_a ",[460,27648,17750],{"class":887},[460,27650,25327],{"class":466},[460,27652,27653,27655,27657,27660,27662,27664,27666,27668,27670,27673,27675],{"class":462,"line":2199},[460,27654,23029],{"class":466},[460,27656,17750],{"class":887},[460,27658,27659],{"class":1353}," \"全局常量c_g_b地址为： \"",[460,27661,18014],{"class":887},[460,27663,11704],{"class":466},[460,27665,16759],{"class":887},[460,27667,8411],{"class":466},[460,27669,17090],{"class":887},[460,27671,27672],{"class":466},"c_g_b ",[460,27674,17750],{"class":887},[460,27676,25327],{"class":466},[460,27678,27679],{"class":462,"line":2204},[460,27680,522],{"emptyLinePlaceholder":521},[460,27682,27683,27685,27687,27690,27692,27694],{"class":462,"line":2212},[460,27684,1340],{"class":887},[460,27686,18917],{"class":887},[460,27688,27689],{"class":466}," c_l_a ",[460,27691,894],{"class":887},[460,27693,5231],{"class":900},[460,27695,1966],{"class":466},[460,27697,27698,27700,27702,27705,27707,27709],{"class":462,"line":2257},[460,27699,1340],{"class":887},[460,27701,18917],{"class":887},[460,27703,27704],{"class":466}," c_l_b ",[460,27706,894],{"class":887},[460,27708,5231],{"class":900},[460,27710,1966],{"class":466},[460,27712,27713,27715,27717,27720,27722,27724,27726,27728,27730,27733,27735],{"class":462,"line":2285},[460,27714,23029],{"class":466},[460,27716,17750],{"class":887},[460,27718,27719],{"class":1353}," \"局部常量c_l_a地址为： \"",[460,27721,18014],{"class":887},[460,27723,11704],{"class":466},[460,27725,16759],{"class":887},[460,27727,8411],{"class":466},[460,27729,17090],{"class":887},[460,27731,27732],{"class":466},"c_l_a ",[460,27734,17750],{"class":887},[460,27736,25327],{"class":466},[460,27738,27739,27741,27743,27746,27748,27750,27752,27754,27756,27759,27761],{"class":462,"line":2298},[460,27740,23029],{"class":466},[460,27742,17750],{"class":887},[460,27744,27745],{"class":1353}," \"局部常量c_l_b地址为： \"",[460,27747,18014],{"class":887},[460,27749,11704],{"class":466},[460,27751,16759],{"class":887},[460,27753,8411],{"class":466},[460,27755,17090],{"class":887},[460,27757,27758],{"class":466},"c_l_b ",[460,27760,17750],{"class":887},[460,27762,25327],{"class":466},[460,27764,27765],{"class":462,"line":2303},[460,27766,522],{"emptyLinePlaceholder":521},[460,27768,27769,27771,27773,27775],{"class":462,"line":2308},[460,27770,18839],{"class":929},[460,27772,2174],{"class":466},[460,27774,18844],{"class":1353},[460,27776,2254],{"class":466},[460,27778,27779],{"class":462,"line":2318},[460,27780,522],{"emptyLinePlaceholder":521},[460,27782,27783,27785,27787],{"class":462,"line":2333},[460,27784,20605],{"class":887},[460,27786,2224],{"class":900},[460,27788,1966],{"class":466},[460,27790,27791],{"class":462,"line":2338},[460,27792,821],{"class":466},[14,27794,433],{},[40,27796,27797,27800,27803,27806],{},[43,27798,27799],{},"c++中程序运行前分为全局区和代码区",[43,27801,27802],{},"代码区特点是共享和只读",[43,27804,27805],{},"全局区中存放全局变量、静态变量、常量",[43,27807,27808],{},"常量区中存放const修饰的全局常量和字符串常量",[23,27810,27812],{"id":27811},"_512程序运行后","5.1.2程序运行后",[103,27814,27815],{},[43,27816,27817],{},"栈区：",[40,27819,27820,27827],{},[43,27821,27822,27823,27826],{},"由编译器自动分配释放, 存放",[3944,27824,27825],{},"函数的参数值,局部变量","等",[43,27828,27829,27830,27833],{},"注意事项：",[3944,27831,27832],{},"不要返回局部变量的地址","，栈区开辟的数据由编译器自动释放，执行完这部分就会释放",[451,27835,27837],{"className":16745,"code":27836,"language":16747,"meta":32,"style":32},"int * func()\n{\n    int a = 10; \u002F\u002F局部变量 存放在栈区，栈区的数据在函数执行完自动释放\n    return &a; \u002F\u002F放回局部变量的地址\n}\n\nint main() {\n    \u002F\u002F接受func的返回值\n    int *p = func();\n    cout \u003C\u003C *p \u003C\u003C endl; \u002F\u002F第一次打印正确的数字，是因为编辑器做了保留\n    cout \u003C\u003C *p \u003C\u003C endl; \u002F\u002F第二次这个数据不再保留\n    system(\"pause\");\n    return 0;\n}\n",[457,27838,27839,27850,27854,27869,27881,27885,27889,27897,27902,27917,27935,27952,27962,27970],{"__ignoreMap":32},[460,27840,27841,27843,27845,27848],{"class":462,"line":463},[460,27842,16759],{"class":887},[460,27844,8325],{"class":887},[460,27846,27847],{"class":929}," func",[460,27849,10758],{"class":466},[460,27851,27852],{"class":462,"line":476},[460,27853,18115],{"class":466},[460,27855,27856,27858,27860,27862,27864,27866],{"class":462,"line":482},[460,27857,18525],{"class":887},[460,27859,27333],{"class":466},[460,27861,894],{"class":887},[460,27863,5231],{"class":900},[460,27865,16807],{"class":466},[460,27867,27868],{"class":942}," \u002F\u002F局部变量 存放在栈区，栈区的数据在函数执行完自动释放\n",[460,27870,27871,27873,27875,27878],{"class":462,"line":488},[460,27872,20605],{"class":887},[460,27874,27049],{"class":887},[460,27876,27877],{"class":466},"a;",[460,27879,27880],{"class":942}," \u002F\u002F放回局部变量的地址\n",[460,27882,27883],{"class":462,"line":494},[460,27884,821],{"class":466},[460,27886,27887],{"class":462,"line":500},[460,27888,522],{"emptyLinePlaceholder":521},[460,27890,27891,27893,27895],{"class":462,"line":506},[460,27892,16759],{"class":887},[460,27894,18514],{"class":929},[460,27896,11374],{"class":466},[460,27898,27899],{"class":462,"line":512},[460,27900,27901],{"class":942},"    \u002F\u002F接受func的返回值\n",[460,27903,27904,27906,27908,27911,27913,27915],{"class":462,"line":518},[460,27905,18525],{"class":887},[460,27907,8325],{"class":887},[460,27909,27910],{"class":466},"p ",[460,27912,894],{"class":887},[460,27914,27847],{"class":929},[460,27916,22142],{"class":466},[460,27918,27919,27921,27923,27925,27927,27929,27932],{"class":462,"line":525},[460,27920,23029],{"class":466},[460,27922,17750],{"class":887},[460,27924,8325],{"class":887},[460,27926,27910],{"class":466},[460,27928,17750],{"class":887},[460,27930,27931],{"class":466}," endl;",[460,27933,27934],{"class":942}," \u002F\u002F第一次打印正确的数字，是因为编辑器做了保留\n",[460,27936,27937,27939,27941,27943,27945,27947,27949],{"class":462,"line":531},[460,27938,23029],{"class":466},[460,27940,17750],{"class":887},[460,27942,8325],{"class":887},[460,27944,27910],{"class":466},[460,27946,17750],{"class":887},[460,27948,27931],{"class":466},[460,27950,27951],{"class":942}," \u002F\u002F第二次这个数据不再保留\n",[460,27953,27954,27956,27958,27960],{"class":462,"line":537},[460,27955,18839],{"class":929},[460,27957,2174],{"class":466},[460,27959,18844],{"class":1353},[460,27961,2254],{"class":466},[460,27963,27964,27966,27968],{"class":462,"line":543},[460,27965,20605],{"class":887},[460,27967,2224],{"class":900},[460,27969,1966],{"class":466},[460,27971,27972],{"class":462,"line":549},[460,27973,821],{"class":466},[14,27975,27976],{},"输出结果：",[14,27978,27979],{},[30,27980],{"alt":27981,"src":27982},"alt text","\u002Fimages\u002Ffeishu\u002Fassets\u002F2026-05-24-c++%E5%AD%A6%E4%B9%A0-005.png",[14,27984,27985],{},"总结：不要返回局部变量的地址",[103,27987,27988],{"start":476},[43,27989,27990],{},"堆区",[40,27992,27993,27996],{},[43,27994,27995],{},"有程序员分配释放，若程序员不释放，程序结束时由操作系统回收",[43,27997,27998],{},"在c++中主要利用new在堆区开辟内存",[451,28000,28002],{"className":16745,"code":28001,"language":16747,"meta":32,"style":32},"int  *func()  \u002F\u002F函数返回指针\n{\n    \u002F\u002F利用new关键词  可以将数据开辟到堆区\n   int *p= new int(10);\n   return p;\n}\nint main()\n{\n    \u002F\u002F在堆区开辟数据\n    int *p=func();\n    cout\u003C\u003C*p\u003C\u003Cendl;\n}\n",[457,28003,28004,28019,28023,28028,28048,28055,28059,28067,28071,28076,28090,28102],{"__ignoreMap":32},[460,28005,28006,28008,28011,28014,28016],{"class":462,"line":463},[460,28007,16759],{"class":887},[460,28009,28010],{"class":887},"  *",[460,28012,28013],{"class":929},"func",[460,28015,18961],{"class":466},[460,28017,28018],{"class":942},"  \u002F\u002F函数返回指针\n",[460,28020,28021],{"class":462,"line":476},[460,28022,18115],{"class":466},[460,28024,28025],{"class":462,"line":482},[460,28026,28027],{"class":942},"    \u002F\u002F利用new关键词  可以将数据开辟到堆区\n",[460,28029,28030,28032,28034,28036,28038,28040,28042,28044,28046],{"class":462,"line":488},[460,28031,20661],{"class":887},[460,28033,8325],{"class":887},[460,28035,14],{"class":466},[460,28037,894],{"class":887},[460,28039,10913],{"class":887},[460,28041,18917],{"class":887},[460,28043,2174],{"class":466},[460,28045,2096],{"class":900},[460,28047,2254],{"class":466},[460,28049,28050,28052],{"class":462,"line":494},[460,28051,20893],{"class":887},[460,28053,28054],{"class":466}," p;\n",[460,28056,28057],{"class":462,"line":500},[460,28058,821],{"class":466},[460,28060,28061,28063,28065],{"class":462,"line":506},[460,28062,16759],{"class":887},[460,28064,18514],{"class":929},[460,28066,10758],{"class":466},[460,28068,28069],{"class":462,"line":512},[460,28070,18115],{"class":466},[460,28072,28073],{"class":462,"line":518},[460,28074,28075],{"class":942},"    \u002F\u002F在堆区开辟数据\n",[460,28077,28078,28080,28082,28084,28086,28088],{"class":462,"line":525},[460,28079,18525],{"class":887},[460,28081,8325],{"class":887},[460,28083,14],{"class":466},[460,28085,894],{"class":887},[460,28087,28013],{"class":929},[460,28089,22142],{"class":466},[460,28091,28092,28094,28096,28098,28100],{"class":462,"line":531},[460,28093,18120],{"class":466},[460,28095,22920],{"class":887},[460,28097,14],{"class":466},[460,28099,17750],{"class":887},[460,28101,17772],{"class":466},[460,28103,28104],{"class":462,"line":537},[460,28105,821],{"class":466},[14,28107,28108],{},"图片展示：",[14,28110,28111],{},[30,28112],{"alt":27981,"src":28113},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2026-05-24-c++%E5%AD%A6%E4%B9%A0-006.png",[14,28115,28116],{},"堆区内存由程序员管生死！！！",[103,28118,28119],{"start":482},[43,28120,28121],{},"new操作符\n​C++中利用==new==操作符在堆区开辟数据",[14,28123,28124],{},"​堆区开辟的数据，由程序员手动开辟，手动释放，释放利用操作符 ==delete==",[14,28126,28127,28128],{},"​语法：",[457,28129,28130],{}," new 数据类型",[14,28132,28133],{},"​利用new创建的数据，会返回该数据对应的类型的指针",[451,28135,28137],{"className":16745,"code":28136,"language":16747,"meta":32,"style":32},"\u002F\u002F1.new的基本语法\nint *func()\n{\n    \u002F\u002F在堆区创建整型数据\n    \u002F\u002Fnew返回的是该数据类型的指针\n    int *p=new int(10);\u002F\u002Fnew啥类型就返回啥类型数据的指针\n}\nvoid test01()\n{\n    int *p=func();\n    cout\u003C\u003C*p\u003C\u003Cendl;\n    cout\u003C\u003C*p\u003C\u003Cendl;\n    cout\u003C\u003C*p\u003C\u003Cendl;\n    \u002F\u002F堆区的数据 由程序员管理开辟，程序员管理释放\n    \u002F\u002F如果想释放堆区的数据，利用关键词 delete\n    delete p;\u002F\u002F删除这块地址\n}\n\u002F\u002F2.在堆区利用new开辟数组\nvoid test02()\n{\n    \u002F\u002F创建10整数数据的数组，在堆区\n    int *arr=new int[10];\u002F\u002F10代表数组有10个元素\n    for (int i=0;i\u003C10;i++)\n    {\n        arr[i]=i+100;\u002F\u002F给10个元素赋值100～109\n    }\n    for (int i=0;i\u003C10;i++)\n    {\n        cout\u003C\u003Carr[i]\u003C\u003Cendl;\n    }\n    \u002F\u002F释放堆区数组\n    \u002F\u002F释放数组的时候 要加[]才可以\n    delete[] arr;\n}\n\nint main()\n{\n    test01();\n    test02();\n}\n\n",[457,28138,28139,28144,28154,28158,28163,28168,28189,28193,28201,28205,28219,28231,28243,28255,28260,28265,28276,28280,28285,28293,28297,28302,28324,28350,28354,28372,28376,28402,28406,28418,28422,28427,28432,28440,28444,28448,28456,28460,28466,28472],{"__ignoreMap":32},[460,28140,28141],{"class":462,"line":463},[460,28142,28143],{"class":942},"\u002F\u002F1.new的基本语法\n",[460,28145,28146,28148,28150,28152],{"class":462,"line":476},[460,28147,16759],{"class":887},[460,28149,8325],{"class":887},[460,28151,28013],{"class":929},[460,28153,10758],{"class":466},[460,28155,28156],{"class":462,"line":482},[460,28157,18115],{"class":466},[460,28159,28160],{"class":462,"line":488},[460,28161,28162],{"class":942},"    \u002F\u002F在堆区创建整型数据\n",[460,28164,28165],{"class":462,"line":494},[460,28166,28167],{"class":942},"    \u002F\u002Fnew返回的是该数据类型的指针\n",[460,28169,28170,28172,28174,28176,28178,28180,28182,28184,28186],{"class":462,"line":500},[460,28171,18525],{"class":887},[460,28173,8325],{"class":887},[460,28175,14],{"class":466},[460,28177,4052],{"class":887},[460,28179,18917],{"class":887},[460,28181,2174],{"class":466},[460,28183,2096],{"class":900},[460,28185,22470],{"class":466},[460,28187,28188],{"class":942},"\u002F\u002Fnew啥类型就返回啥类型数据的指针\n",[460,28190,28191],{"class":462,"line":506},[460,28192,821],{"class":466},[460,28194,28195,28197,28199],{"class":462,"line":512},[460,28196,21870],{"class":887},[460,28198,22094],{"class":929},[460,28200,10758],{"class":466},[460,28202,28203],{"class":462,"line":518},[460,28204,18115],{"class":466},[460,28206,28207,28209,28211,28213,28215,28217],{"class":462,"line":525},[460,28208,18525],{"class":887},[460,28210,8325],{"class":887},[460,28212,14],{"class":466},[460,28214,894],{"class":887},[460,28216,28013],{"class":929},[460,28218,22142],{"class":466},[460,28220,28221,28223,28225,28227,28229],{"class":462,"line":531},[460,28222,18120],{"class":466},[460,28224,22920],{"class":887},[460,28226,14],{"class":466},[460,28228,17750],{"class":887},[460,28230,17772],{"class":466},[460,28232,28233,28235,28237,28239,28241],{"class":462,"line":537},[460,28234,18120],{"class":466},[460,28236,22920],{"class":887},[460,28238,14],{"class":466},[460,28240,17750],{"class":887},[460,28242,17772],{"class":466},[460,28244,28245,28247,28249,28251,28253],{"class":462,"line":543},[460,28246,18120],{"class":466},[460,28248,22920],{"class":887},[460,28250,14],{"class":466},[460,28252,17750],{"class":887},[460,28254,17772],{"class":466},[460,28256,28257],{"class":462,"line":549},[460,28258,28259],{"class":942},"    \u002F\u002F堆区的数据 由程序员管理开辟，程序员管理释放\n",[460,28261,28262],{"class":462,"line":555},[460,28263,28264],{"class":942},"    \u002F\u002F如果想释放堆区的数据，利用关键词 delete\n",[460,28266,28267,28270,28273],{"class":462,"line":560},[460,28268,28269],{"class":887},"    delete",[460,28271,28272],{"class":466}," p;",[460,28274,28275],{"class":942},"\u002F\u002F删除这块地址\n",[460,28277,28278],{"class":462,"line":566},[460,28279,821],{"class":466},[460,28281,28282],{"class":462,"line":572},[460,28283,28284],{"class":942},"\u002F\u002F2.在堆区利用new开辟数组\n",[460,28286,28287,28289,28291],{"class":462,"line":578},[460,28288,21870],{"class":887},[460,28290,22163],{"class":929},[460,28292,10758],{"class":466},[460,28294,28295],{"class":462,"line":812},[460,28296,18115],{"class":466},[460,28298,28299],{"class":462,"line":818},[460,28300,28301],{"class":942},"    \u002F\u002F创建10整数数据的数组，在堆区\n",[460,28303,28304,28306,28308,28310,28312,28314,28316,28318,28321],{"class":462,"line":824},[460,28305,18525],{"class":887},[460,28307,8325],{"class":887},[460,28309,3381],{"class":466},[460,28311,4052],{"class":887},[460,28313,18917],{"class":887},[460,28315,17601],{"class":466},[460,28317,2096],{"class":900},[460,28319,28320],{"class":466},"];",[460,28322,28323],{"class":942},"\u002F\u002F10代表数组有10个元素\n",[460,28325,28326,28328,28330,28332,28334,28336,28338,28340,28342,28344,28346,28348],{"class":462,"line":2074},[460,28327,19722],{"class":887},[460,28329,11704],{"class":466},[460,28331,16759],{"class":887},[460,28333,10169],{"class":466},[460,28335,894],{"class":887},[460,28337,936],{"class":900},[460,28339,19560],{"class":466},[460,28341,781],{"class":887},[460,28343,2096],{"class":900},[460,28345,19560],{"class":466},[460,28347,18828],{"class":887},[460,28349,3754],{"class":466},[460,28351,28352],{"class":462,"line":2088},[460,28353,18570],{"class":466},[460,28355,28356,28359,28361,28363,28365,28367,28369],{"class":462,"line":2103},[460,28357,28358],{"class":466},"        arr[i]",[460,28360,894],{"class":887},[460,28362,17174],{"class":466},[460,28364,8495],{"class":887},[460,28366,2325],{"class":900},[460,28368,16807],{"class":466},[460,28370,28371],{"class":942},"\u002F\u002F给10个元素赋值100～109\n",[460,28373,28374],{"class":462,"line":2122},[460,28375,509],{"class":466},[460,28377,28378,28380,28382,28384,28386,28388,28390,28392,28394,28396,28398,28400],{"class":462,"line":2144},[460,28379,19722],{"class":887},[460,28381,11704],{"class":466},[460,28383,16759],{"class":887},[460,28385,10169],{"class":466},[460,28387,894],{"class":887},[460,28389,936],{"class":900},[460,28391,19560],{"class":466},[460,28393,781],{"class":887},[460,28395,2096],{"class":900},[460,28397,19560],{"class":466},[460,28399,18828],{"class":887},[460,28401,3754],{"class":466},[460,28403,28404],{"class":462,"line":2158},[460,28405,18570],{"class":466},[460,28407,28408,28410,28412,28414,28416],{"class":462,"line":2163},[460,28409,19972],{"class":466},[460,28411,17750],{"class":887},[460,28413,20866],{"class":466},[460,28415,17750],{"class":887},[460,28417,17772],{"class":466},[460,28419,28420],{"class":462,"line":2168},[460,28421,509],{"class":466},[460,28423,28424],{"class":462,"line":2183},[460,28425,28426],{"class":942},"    \u002F\u002F释放堆区数组\n",[460,28428,28429],{"class":462,"line":2194},[460,28430,28431],{"class":942},"    \u002F\u002F释放数组的时候 要加[]才可以\n",[460,28433,28434,28437],{"class":462,"line":2199},[460,28435,28436],{"class":887},"    delete[]",[460,28438,28439],{"class":466}," arr;\n",[460,28441,28442],{"class":462,"line":2204},[460,28443,821],{"class":466},[460,28445,28446],{"class":462,"line":2212},[460,28447,522],{"emptyLinePlaceholder":521},[460,28449,28450,28452,28454],{"class":462,"line":2257},[460,28451,16759],{"class":887},[460,28453,18514],{"class":929},[460,28455,10758],{"class":466},[460,28457,28458],{"class":462,"line":2285},[460,28459,18115],{"class":466},[460,28461,28462,28464],{"class":462,"line":2298},[460,28463,22139],{"class":929},[460,28465,22142],{"class":466},[460,28467,28468,28470],{"class":462,"line":2303},[460,28469,22208],{"class":929},[460,28471,22142],{"class":466},[460,28473,28474],{"class":462,"line":2308},[460,28475,821],{"class":466},[1944,28477,28478],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":32,"searchDepth":476,"depth":476,"links":28480},[28481],{"id":27154,"depth":476,"text":27155,"children":28482},[28483,28484],{"id":27186,"depth":482,"text":27187},{"id":27811,"depth":482,"text":27812},{},"\u002Fwiki\u002F2026-05-24-c++\u002Fch5",{"title":27146,"description":32},"wiki\u002F2026-05-24-c++学习\u002Fch5-程序内存模型","0YdYp-3ZJdvtzoCrG1guRSWnTqjqRMbmStt7z9sZDAA",{"id":28491,"title":28492,"body":28493,"description":32,"extension":16683,"meta":29971,"navigation":521,"path":29972,"seo":29973,"stem":29974,"__hash__":29975},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Fch6-引用.md","6.引用",{"type":7,"value":28494,"toc":29963},[28495,28498,28502,28505,28508,28677,28681,28686,28703,28708,28860,28864,28867,28870,29262,29266,29269,29274,29277,29588,29592,29598,29758,29760,29768,29772,29775,29782,29960],[10,28496,28492],{"id":28497},"_6引用",[18,28499,28501],{"id":28500},"_61引用基本用法","6.1引用基本用法",[14,28503,28504],{},"引用的本质：给变量起别名",[14,28506,28507],{},"语法：数据类型 &别名=原名",[451,28509,28511],{"className":16745,"code":28510,"language":16747,"meta":32,"style":32},"int main() {\n\n    int a = 10;\n    int &b = a;\n\n    cout \u003C\u003C \"a = \" \u003C\u003C a \u003C\u003C endl;\u002F\u002F10\n    cout \u003C\u003C \"b = \" \u003C\u003C b \u003C\u003C endl;\u002F\u002F10\n\n    b = 100;\n\n    cout \u003C\u003C \"a = \" \u003C\u003C a \u003C\u003C endl;\u002F\u002F100\n    cout \u003C\u003C \"b = \" \u003C\u003C b \u003C\u003C endl;\u002F\u002F100\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,28512,28513,28521,28525,28537,28549,28553,28572,28591,28595,28606,28610,28629,28647,28651,28661,28665,28673],{"__ignoreMap":32},[460,28514,28515,28517,28519],{"class":462,"line":463},[460,28516,16759],{"class":887},[460,28518,18514],{"class":929},[460,28520,11374],{"class":466},[460,28522,28523],{"class":462,"line":476},[460,28524,522],{"emptyLinePlaceholder":521},[460,28526,28527,28529,28531,28533,28535],{"class":462,"line":482},[460,28528,18525],{"class":887},[460,28530,27333],{"class":466},[460,28532,894],{"class":887},[460,28534,5231],{"class":900},[460,28536,1966],{"class":466},[460,28538,28539,28541,28543,28545,28547],{"class":462,"line":488},[460,28540,18525],{"class":887},[460,28542,27049],{"class":887},[460,28544,27409],{"class":466},[460,28546,894],{"class":887},[460,28548,18002],{"class":466},[460,28550,28551],{"class":462,"line":494},[460,28552,522],{"emptyLinePlaceholder":521},[460,28554,28555,28557,28559,28562,28564,28566,28568,28570],{"class":462,"line":500},[460,28556,23029],{"class":466},[460,28558,17750],{"class":887},[460,28560,28561],{"class":1353}," \"a = \"",[460,28563,18014],{"class":887},[460,28565,27333],{"class":466},[460,28567,17750],{"class":887},[460,28569,27931],{"class":466},[460,28571,23766],{"class":942},[460,28573,28574,28576,28578,28581,28583,28585,28587,28589],{"class":462,"line":506},[460,28575,23029],{"class":466},[460,28577,17750],{"class":887},[460,28579,28580],{"class":1353}," \"b = \"",[460,28582,18014],{"class":887},[460,28584,27346],{"class":466},[460,28586,17750],{"class":887},[460,28588,27931],{"class":466},[460,28590,23766],{"class":942},[460,28592,28593],{"class":462,"line":512},[460,28594,522],{"emptyLinePlaceholder":521},[460,28596,28597,28600,28602,28604],{"class":462,"line":518},[460,28598,28599],{"class":466},"    b ",[460,28601,894],{"class":887},[460,28603,3751],{"class":900},[460,28605,1966],{"class":466},[460,28607,28608],{"class":462,"line":525},[460,28609,522],{"emptyLinePlaceholder":521},[460,28611,28612,28614,28616,28618,28620,28622,28624,28626],{"class":462,"line":531},[460,28613,23029],{"class":466},[460,28615,17750],{"class":887},[460,28617,28561],{"class":1353},[460,28619,18014],{"class":887},[460,28621,27333],{"class":466},[460,28623,17750],{"class":887},[460,28625,27931],{"class":466},[460,28627,28628],{"class":942},"\u002F\u002F100\n",[460,28630,28631,28633,28635,28637,28639,28641,28643,28645],{"class":462,"line":537},[460,28632,23029],{"class":466},[460,28634,17750],{"class":887},[460,28636,28580],{"class":1353},[460,28638,18014],{"class":887},[460,28640,27346],{"class":466},[460,28642,17750],{"class":887},[460,28644,27931],{"class":466},[460,28646,28628],{"class":942},[460,28648,28649],{"class":462,"line":543},[460,28650,522],{"emptyLinePlaceholder":521},[460,28652,28653,28655,28657,28659],{"class":462,"line":549},[460,28654,18839],{"class":929},[460,28656,2174],{"class":466},[460,28658,18844],{"class":1353},[460,28660,2254],{"class":466},[460,28662,28663],{"class":462,"line":555},[460,28664,522],{"emptyLinePlaceholder":521},[460,28666,28667,28669,28671],{"class":462,"line":560},[460,28668,20605],{"class":887},[460,28670,2224],{"class":900},[460,28672,1966],{"class":466},[460,28674,28675],{"class":462,"line":566},[460,28676,821],{"class":466},[18,28678,28680],{"id":28679},"_62引用的注意事项","6.2引用的注意事项",[103,28682,28683],{},[43,28684,28685],{},"引用必须要初始化",[451,28687,28689],{"className":16745,"code":28688,"language":16747,"meta":32,"style":32},"int &b;\u002F\u002F非常错误！\n",[457,28690,28691],{"__ignoreMap":32},[460,28692,28693,28695,28697,28700],{"class":462,"line":463},[460,28694,16759],{"class":887},[460,28696,27049],{"class":887},[460,28698,28699],{"class":466},"b;",[460,28701,28702],{"class":942},"\u002F\u002F非常错误！\n",[103,28704,28705],{"start":476},[43,28706,28707],{},"引用一旦初始化后，就不可以更改了，引用a了，就不能引用b了",[451,28709,28711],{"className":16745,"code":28710,"language":16747,"meta":32,"style":32},"int main() {\n    int a = 10;\n    int b = 20;\n    \u002F\u002Fint &c; \u002F\u002F错误，引用必须初始化\n    int &c = a; \u002F\u002F一旦初始化后，就不可以更改\n    c = b; \u002F\u002F这是赋值操作，不是更改引用\n    cout \u003C\u003C \"a = \" \u003C\u003C a \u003C\u003C endl;\u002F\u002F20\n    cout \u003C\u003C \"b = \" \u003C\u003C b \u003C\u003C endl;\u002F\u002F20\n    cout \u003C\u003C \"c = \" \u003C\u003C c \u003C\u003C endl;\u002F\u002F20\n    system(\"pause\");\n    return 0;\n}\n",[457,28712,28713,28721,28733,28745,28753,28769,28782,28800,28818,28838,28848,28856],{"__ignoreMap":32},[460,28714,28715,28717,28719],{"class":462,"line":463},[460,28716,16759],{"class":887},[460,28718,18514],{"class":929},[460,28720,11374],{"class":466},[460,28722,28723,28725,28727,28729,28731],{"class":462,"line":476},[460,28724,18525],{"class":887},[460,28726,27333],{"class":466},[460,28728,894],{"class":887},[460,28730,5231],{"class":900},[460,28732,1966],{"class":466},[460,28734,28735,28737,28739,28741,28743],{"class":462,"line":482},[460,28736,18525],{"class":887},[460,28738,27346],{"class":466},[460,28740,894],{"class":887},[460,28742,2590],{"class":900},[460,28744,1966],{"class":466},[460,28746,28747,28750],{"class":462,"line":488},[460,28748,28749],{"class":942},"    \u002F\u002Fint &c;",[460,28751,28752],{"class":942}," \u002F\u002F错误，引用必须初始化\n",[460,28754,28755,28757,28759,28761,28763,28766],{"class":462,"line":494},[460,28756,18525],{"class":887},[460,28758,27049],{"class":887},[460,28760,19468],{"class":466},[460,28762,894],{"class":887},[460,28764,28765],{"class":466}," a;",[460,28767,28768],{"class":942}," \u002F\u002F一旦初始化后，就不可以更改\n",[460,28770,28771,28774,28776,28779],{"class":462,"line":500},[460,28772,28773],{"class":466},"    c ",[460,28775,894],{"class":887},[460,28777,28778],{"class":466}," b;",[460,28780,28781],{"class":942}," \u002F\u002F这是赋值操作，不是更改引用\n",[460,28783,28784,28786,28788,28790,28792,28794,28796,28798],{"class":462,"line":506},[460,28785,23029],{"class":466},[460,28787,17750],{"class":887},[460,28789,28561],{"class":1353},[460,28791,18014],{"class":887},[460,28793,27333],{"class":466},[460,28795,17750],{"class":887},[460,28797,27931],{"class":466},[460,28799,23751],{"class":942},[460,28801,28802,28804,28806,28808,28810,28812,28814,28816],{"class":462,"line":512},[460,28803,23029],{"class":466},[460,28805,17750],{"class":887},[460,28807,28580],{"class":1353},[460,28809,18014],{"class":887},[460,28811,27346],{"class":466},[460,28813,17750],{"class":887},[460,28815,27931],{"class":466},[460,28817,23751],{"class":942},[460,28819,28820,28822,28824,28827,28829,28832,28834,28836],{"class":462,"line":518},[460,28821,23029],{"class":466},[460,28823,17750],{"class":887},[460,28825,28826],{"class":1353}," \"c = \"",[460,28828,18014],{"class":887},[460,28830,28831],{"class":466}," c ",[460,28833,17750],{"class":887},[460,28835,27931],{"class":466},[460,28837,23751],{"class":942},[460,28839,28840,28842,28844,28846],{"class":462,"line":525},[460,28841,18839],{"class":929},[460,28843,2174],{"class":466},[460,28845,18844],{"class":1353},[460,28847,2254],{"class":466},[460,28849,28850,28852,28854],{"class":462,"line":531},[460,28851,20605],{"class":887},[460,28853,2224],{"class":900},[460,28855,1966],{"class":466},[460,28857,28858],{"class":462,"line":537},[460,28859,821],{"class":466},[18,28861,28863],{"id":28862},"_63引用做函数参数","6.3引用做函数参数",[14,28865,28866],{},"作用：函数传参时，可以利用引用的技术让形参修饰实参",[14,28868,28869],{},"优点：可以简化指针修改实参",[451,28871,28873],{"className":16745,"code":28872,"language":16747,"meta":32,"style":32},"\u002F\u002F1. 值传递\nvoid mySwap01(int a, int b) {\n    int temp = a;\n    a = b;\n    b = temp;\n}\n\n\u002F\u002F2. 地址传递\nvoid mySwap02(int* a, int* b) {\n    int temp = *a;\n    *a = *b;\n    *b = temp;\n}\n\n\u002F\u002F3. 引用传递\nvoid mySwap03(int& a, int& b) {\n    int temp = a;\n    a = b;\n    b = temp;\n}\n\nint main() {\n\n    int a = 10;\n    int b = 20;\n\n    mySwap01(a, b);\u002F\u002F值传递，形参不会修饰实参\n    cout \u003C\u003C \"a:\" \u003C\u003C a \u003C\u003C \" b:\" \u003C\u003C b \u003C\u003C endl;\n\n    mySwap02(&a, &b);\u002F\u002F地址传递，形参会修饰实参\n    cout \u003C\u003C \"a:\" \u003C\u003C a \u003C\u003C \" b:\" \u003C\u003C b \u003C\u003C endl;\n\n    mySwap03(a, b);\u002F\u002F引用传递，形参会修饰实参\n    cout \u003C\u003C \"a:\" \u003C\u003C a \u003C\u003C \" b:\" \u003C\u003C b \u003C\u003C endl;\n\n    system(\"pause\");\n\n    return 0;\n}\n\n",[457,28874,28875,28880,28901,28912,28922,28931,28935,28939,28944,28966,28978,28990,29000,29004,29008,29013,29035,29045,29053,29061,29065,29069,29077,29081,29093,29105,29109,29120,29146,29150,29170,29194,29198,29208,29232,29236,29246,29250,29258],{"__ignoreMap":32},[460,28876,28877],{"class":462,"line":463},[460,28878,28879],{"class":942},"\u002F\u002F1. 值传递\n",[460,28881,28882,28884,28887,28889,28891,28893,28895,28897,28899],{"class":462,"line":476},[460,28883,21870],{"class":887},[460,28885,28886],{"class":929}," mySwap01",[460,28888,2174],{"class":466},[460,28890,16759],{"class":887},[460,28892,2574],{"class":3380},[460,28894,904],{"class":466},[460,28896,16759],{"class":887},[460,28898,19355],{"class":3380},[460,28900,2180],{"class":466},[460,28902,28903,28905,28908,28910],{"class":462,"line":482},[460,28904,18525],{"class":887},[460,28906,28907],{"class":466}," temp ",[460,28909,894],{"class":887},[460,28911,18002],{"class":466},[460,28913,28914,28917,28919],{"class":462,"line":488},[460,28915,28916],{"class":466},"    a ",[460,28918,894],{"class":887},[460,28920,28921],{"class":466}," b;\n",[460,28923,28924,28926,28928],{"class":462,"line":494},[460,28925,28599],{"class":466},[460,28927,894],{"class":887},[460,28929,28930],{"class":466}," temp;\n",[460,28932,28933],{"class":462,"line":500},[460,28934,821],{"class":466},[460,28936,28937],{"class":462,"line":506},[460,28938,522],{"emptyLinePlaceholder":521},[460,28940,28941],{"class":462,"line":512},[460,28942,28943],{"class":942},"\u002F\u002F2. 地址传递\n",[460,28945,28946,28948,28951,28953,28956,28958,28960,28962,28964],{"class":462,"line":518},[460,28947,21870],{"class":887},[460,28949,28950],{"class":929}," mySwap02",[460,28952,2174],{"class":466},[460,28954,28955],{"class":887},"int*",[460,28957,2574],{"class":3380},[460,28959,904],{"class":466},[460,28961,28955],{"class":887},[460,28963,19355],{"class":3380},[460,28965,2180],{"class":466},[460,28967,28968,28970,28972,28974,28976],{"class":462,"line":525},[460,28969,18525],{"class":887},[460,28971,28907],{"class":466},[460,28973,894],{"class":887},[460,28975,8325],{"class":887},[460,28977,22700],{"class":466},[460,28979,28980,28982,28984,28986,28988],{"class":462,"line":531},[460,28981,1951],{"class":887},[460,28983,27383],{"class":466},[460,28985,894],{"class":887},[460,28987,8325],{"class":887},[460,28989,22572],{"class":466},[460,28991,28992,28994,28996,28998],{"class":462,"line":537},[460,28993,1951],{"class":887},[460,28995,27409],{"class":466},[460,28997,894],{"class":887},[460,28999,28930],{"class":466},[460,29001,29002],{"class":462,"line":543},[460,29003,821],{"class":466},[460,29005,29006],{"class":462,"line":549},[460,29007,522],{"emptyLinePlaceholder":521},[460,29009,29010],{"class":462,"line":555},[460,29011,29012],{"class":942},"\u002F\u002F3. 引用传递\n",[460,29014,29015,29017,29020,29022,29025,29027,29029,29031,29033],{"class":462,"line":560},[460,29016,21870],{"class":887},[460,29018,29019],{"class":929}," mySwap03",[460,29021,2174],{"class":466},[460,29023,29024],{"class":887},"int&",[460,29026,2574],{"class":3380},[460,29028,904],{"class":466},[460,29030,29024],{"class":887},[460,29032,19355],{"class":3380},[460,29034,2180],{"class":466},[460,29036,29037,29039,29041,29043],{"class":462,"line":566},[460,29038,18525],{"class":887},[460,29040,28907],{"class":466},[460,29042,894],{"class":887},[460,29044,18002],{"class":466},[460,29046,29047,29049,29051],{"class":462,"line":572},[460,29048,28916],{"class":466},[460,29050,894],{"class":887},[460,29052,28921],{"class":466},[460,29054,29055,29057,29059],{"class":462,"line":578},[460,29056,28599],{"class":466},[460,29058,894],{"class":887},[460,29060,28930],{"class":466},[460,29062,29063],{"class":462,"line":812},[460,29064,821],{"class":466},[460,29066,29067],{"class":462,"line":818},[460,29068,522],{"emptyLinePlaceholder":521},[460,29070,29071,29073,29075],{"class":462,"line":824},[460,29072,16759],{"class":887},[460,29074,18514],{"class":929},[460,29076,11374],{"class":466},[460,29078,29079],{"class":462,"line":2074},[460,29080,522],{"emptyLinePlaceholder":521},[460,29082,29083,29085,29087,29089,29091],{"class":462,"line":2088},[460,29084,18525],{"class":887},[460,29086,27333],{"class":466},[460,29088,894],{"class":887},[460,29090,5231],{"class":900},[460,29092,1966],{"class":466},[460,29094,29095,29097,29099,29101,29103],{"class":462,"line":2103},[460,29096,18525],{"class":887},[460,29098,27346],{"class":466},[460,29100,894],{"class":887},[460,29102,2590],{"class":900},[460,29104,1966],{"class":466},[460,29106,29107],{"class":462,"line":2122},[460,29108,522],{"emptyLinePlaceholder":521},[460,29110,29111,29114,29117],{"class":462,"line":2144},[460,29112,29113],{"class":929},"    mySwap01",[460,29115,29116],{"class":466},"(a, b);",[460,29118,29119],{"class":942},"\u002F\u002F值传递，形参不会修饰实参\n",[460,29121,29122,29124,29126,29129,29131,29133,29135,29138,29140,29142,29144],{"class":462,"line":2158},[460,29123,23029],{"class":466},[460,29125,17750],{"class":887},[460,29127,29128],{"class":1353}," \"a:\"",[460,29130,18014],{"class":887},[460,29132,27333],{"class":466},[460,29134,17750],{"class":887},[460,29136,29137],{"class":1353}," \" b:\"",[460,29139,18014],{"class":887},[460,29141,27346],{"class":466},[460,29143,17750],{"class":887},[460,29145,25327],{"class":466},[460,29147,29148],{"class":462,"line":2163},[460,29149,522],{"emptyLinePlaceholder":521},[460,29151,29152,29155,29157,29159,29162,29164,29167],{"class":462,"line":2168},[460,29153,29154],{"class":929},"    mySwap02",[460,29156,2174],{"class":466},[460,29158,17090],{"class":887},[460,29160,29161],{"class":466},"a, ",[460,29163,17090],{"class":887},[460,29165,29166],{"class":466},"b);",[460,29168,29169],{"class":942},"\u002F\u002F地址传递，形参会修饰实参\n",[460,29171,29172,29174,29176,29178,29180,29182,29184,29186,29188,29190,29192],{"class":462,"line":2183},[460,29173,23029],{"class":466},[460,29175,17750],{"class":887},[460,29177,29128],{"class":1353},[460,29179,18014],{"class":887},[460,29181,27333],{"class":466},[460,29183,17750],{"class":887},[460,29185,29137],{"class":1353},[460,29187,18014],{"class":887},[460,29189,27346],{"class":466},[460,29191,17750],{"class":887},[460,29193,25327],{"class":466},[460,29195,29196],{"class":462,"line":2194},[460,29197,522],{"emptyLinePlaceholder":521},[460,29199,29200,29203,29205],{"class":462,"line":2199},[460,29201,29202],{"class":929},"    mySwap03",[460,29204,29116],{"class":466},[460,29206,29207],{"class":942},"\u002F\u002F引用传递，形参会修饰实参\n",[460,29209,29210,29212,29214,29216,29218,29220,29222,29224,29226,29228,29230],{"class":462,"line":2204},[460,29211,23029],{"class":466},[460,29213,17750],{"class":887},[460,29215,29128],{"class":1353},[460,29217,18014],{"class":887},[460,29219,27333],{"class":466},[460,29221,17750],{"class":887},[460,29223,29137],{"class":1353},[460,29225,18014],{"class":887},[460,29227,27346],{"class":466},[460,29229,17750],{"class":887},[460,29231,25327],{"class":466},[460,29233,29234],{"class":462,"line":2212},[460,29235,522],{"emptyLinePlaceholder":521},[460,29237,29238,29240,29242,29244],{"class":462,"line":2257},[460,29239,18839],{"class":929},[460,29241,2174],{"class":466},[460,29243,18844],{"class":1353},[460,29245,2254],{"class":466},[460,29247,29248],{"class":462,"line":2285},[460,29249,522],{"emptyLinePlaceholder":521},[460,29251,29252,29254,29256],{"class":462,"line":2298},[460,29253,20605],{"class":887},[460,29255,2224],{"class":900},[460,29257,1966],{"class":466},[460,29259,29260],{"class":462,"line":2303},[460,29261,821],{"class":466},[18,29263,29265],{"id":29264},"_64引用做函数的返回值","6.4引用做函数的返回值",[14,29267,29268],{},"作用：引用是可以作为函数的返回值存在的",[14,29270,25511,29271],{},[3944,29272,29273],{},"不要返回局部变量引用",[14,29275,29276],{},"用法：函数调用作为左值",[451,29278,29280],{"className":26406,"code":29279,"language":26408,"meta":32,"style":32},"\u002F\u002F返回局部变量引用\nint& test01() {\n    int a = 10; \u002F\u002F局部变量\n    return a;\n}\n\n\u002F\u002F返回静态变量引用\nint& test02() {\n    static int a = 20;\u002F\u002F静态变量，存放在全局区，全局区上的数据在程序结束后系统释放\n    return a;\n}\n\nint main() {\n\n    \u002F\u002F不能返回局部变量的引用\n    int& ref = test01();\n    cout \u003C\u003C \"ref = \" \u003C\u003C ref \u003C\u003C endl;\u002F\u002F10 第一次正确，是因为编译器做了保留\n    cout \u003C\u003C \"ref = \" \u003C\u003C ref \u003C\u003C endl;\u002F\u002F乱码状态 第二次结果错误，因为a的内存已经释放\n\n    \u002F\u002F如果函数做左值，那么必须返回引用\n    int& ref2 = test02();\n    cout \u003C\u003C \"ref2 = \" \u003C\u003C ref2 \u003C\u003C endl; \u002F\u002F20\n    cout \u003C\u003C \"ref2 = \" \u003C\u003C ref2 \u003C\u003C endl; \u002F\u002F20\n\n    test02() = 1000;\u002F\u002F如果函数的返回值是引用，这个函数调用可以作为左值\n\n    cout \u003C\u003C \"ref2 = \" \u003C\u003C ref2 \u003C\u003C endl; \u002F\u002F1000\n    cout \u003C\u003C \"ref2 = \" \u003C\u003C ref2 \u003C\u003C endl; \u002F\u002F1000\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,29281,29282,29287,29295,29310,29316,29320,29324,29329,29337,29354,29360,29364,29368,29376,29380,29385,29399,29419,29438,29442,29447,29460,29480,29498,29502,29517,29521,29540,29558,29562,29572,29576,29584],{"__ignoreMap":32},[460,29283,29284],{"class":462,"line":463},[460,29285,29286],{"class":942},"\u002F\u002F返回局部变量引用\n",[460,29288,29289,29291,29293],{"class":462,"line":476},[460,29290,29024],{"class":887},[460,29292,22094],{"class":929},[460,29294,11374],{"class":466},[460,29296,29297,29299,29301,29303,29305,29307],{"class":462,"line":482},[460,29298,18525],{"class":887},[460,29300,27333],{"class":466},[460,29302,894],{"class":887},[460,29304,5231],{"class":900},[460,29306,16807],{"class":466},[460,29308,29309],{"class":942}," \u002F\u002F局部变量\n",[460,29311,29312,29314],{"class":462,"line":488},[460,29313,20605],{"class":887},[460,29315,18002],{"class":466},[460,29317,29318],{"class":462,"line":494},[460,29319,821],{"class":466},[460,29321,29322],{"class":462,"line":500},[460,29323,522],{"emptyLinePlaceholder":521},[460,29325,29326],{"class":462,"line":506},[460,29327,29328],{"class":942},"\u002F\u002F返回静态变量引用\n",[460,29330,29331,29333,29335],{"class":462,"line":512},[460,29332,29024],{"class":887},[460,29334,22163],{"class":929},[460,29336,11374],{"class":466},[460,29338,29339,29341,29343,29345,29347,29349,29351],{"class":462,"line":518},[460,29340,27484],{"class":887},[460,29342,18917],{"class":887},[460,29344,27333],{"class":466},[460,29346,894],{"class":887},[460,29348,2590],{"class":900},[460,29350,16807],{"class":466},[460,29352,29353],{"class":942},"\u002F\u002F静态变量，存放在全局区，全局区上的数据在程序结束后系统释放\n",[460,29355,29356,29358],{"class":462,"line":525},[460,29357,20605],{"class":887},[460,29359,18002],{"class":466},[460,29361,29362],{"class":462,"line":531},[460,29363,821],{"class":466},[460,29365,29366],{"class":462,"line":537},[460,29367,522],{"emptyLinePlaceholder":521},[460,29369,29370,29372,29374],{"class":462,"line":543},[460,29371,16759],{"class":887},[460,29373,18514],{"class":929},[460,29375,11374],{"class":466},[460,29377,29378],{"class":462,"line":549},[460,29379,522],{"emptyLinePlaceholder":521},[460,29381,29382],{"class":462,"line":555},[460,29383,29384],{"class":942},"    \u002F\u002F不能返回局部变量的引用\n",[460,29386,29387,29390,29393,29395,29397],{"class":462,"line":560},[460,29388,29389],{"class":887},"    int&",[460,29391,29392],{"class":466}," ref ",[460,29394,894],{"class":887},[460,29396,22094],{"class":929},[460,29398,22142],{"class":466},[460,29400,29401,29403,29405,29408,29410,29412,29414,29416],{"class":462,"line":566},[460,29402,23029],{"class":466},[460,29404,17750],{"class":887},[460,29406,29407],{"class":1353}," \"ref = \"",[460,29409,18014],{"class":887},[460,29411,29392],{"class":466},[460,29413,17750],{"class":887},[460,29415,27931],{"class":466},[460,29417,29418],{"class":942},"\u002F\u002F10 第一次正确，是因为编译器做了保留\n",[460,29420,29421,29423,29425,29427,29429,29431,29433,29435],{"class":462,"line":572},[460,29422,23029],{"class":466},[460,29424,17750],{"class":887},[460,29426,29407],{"class":1353},[460,29428,18014],{"class":887},[460,29430,29392],{"class":466},[460,29432,17750],{"class":887},[460,29434,27931],{"class":466},[460,29436,29437],{"class":942},"\u002F\u002F乱码状态 第二次结果错误，因为a的内存已经释放\n",[460,29439,29440],{"class":462,"line":578},[460,29441,522],{"emptyLinePlaceholder":521},[460,29443,29444],{"class":462,"line":812},[460,29445,29446],{"class":942},"    \u002F\u002F如果函数做左值，那么必须返回引用\n",[460,29448,29449,29451,29454,29456,29458],{"class":462,"line":818},[460,29450,29389],{"class":887},[460,29452,29453],{"class":466}," ref2 ",[460,29455,894],{"class":887},[460,29457,22163],{"class":929},[460,29459,22142],{"class":466},[460,29461,29462,29464,29466,29469,29471,29473,29475,29477],{"class":462,"line":824},[460,29463,23029],{"class":466},[460,29465,17750],{"class":887},[460,29467,29468],{"class":1353}," \"ref2 = \"",[460,29470,18014],{"class":887},[460,29472,29453],{"class":466},[460,29474,17750],{"class":887},[460,29476,27931],{"class":466},[460,29478,29479],{"class":942}," \u002F\u002F20\n",[460,29481,29482,29484,29486,29488,29490,29492,29494,29496],{"class":462,"line":2074},[460,29483,23029],{"class":466},[460,29485,17750],{"class":887},[460,29487,29468],{"class":1353},[460,29489,18014],{"class":887},[460,29491,29453],{"class":466},[460,29493,17750],{"class":887},[460,29495,27931],{"class":466},[460,29497,29479],{"class":942},[460,29499,29500],{"class":462,"line":2088},[460,29501,522],{"emptyLinePlaceholder":521},[460,29503,29504,29506,29508,29510,29512,29514],{"class":462,"line":2103},[460,29505,22208],{"class":929},[460,29507,14546],{"class":466},[460,29509,894],{"class":887},[460,29511,19521],{"class":900},[460,29513,16807],{"class":466},[460,29515,29516],{"class":942},"\u002F\u002F如果函数的返回值是引用，这个函数调用可以作为左值\n",[460,29518,29519],{"class":462,"line":2122},[460,29520,522],{"emptyLinePlaceholder":521},[460,29522,29523,29525,29527,29529,29531,29533,29535,29537],{"class":462,"line":2144},[460,29524,23029],{"class":466},[460,29526,17750],{"class":887},[460,29528,29468],{"class":1353},[460,29530,18014],{"class":887},[460,29532,29453],{"class":466},[460,29534,17750],{"class":887},[460,29536,27931],{"class":466},[460,29538,29539],{"class":942}," \u002F\u002F1000\n",[460,29541,29542,29544,29546,29548,29550,29552,29554,29556],{"class":462,"line":2158},[460,29543,23029],{"class":466},[460,29545,17750],{"class":887},[460,29547,29468],{"class":1353},[460,29549,18014],{"class":887},[460,29551,29453],{"class":466},[460,29553,17750],{"class":887},[460,29555,27931],{"class":466},[460,29557,29539],{"class":942},[460,29559,29560],{"class":462,"line":2163},[460,29561,522],{"emptyLinePlaceholder":521},[460,29563,29564,29566,29568,29570],{"class":462,"line":2168},[460,29565,18839],{"class":929},[460,29567,2174],{"class":466},[460,29569,18844],{"class":1353},[460,29571,2254],{"class":466},[460,29573,29574],{"class":462,"line":2183},[460,29575,522],{"emptyLinePlaceholder":521},[460,29577,29578,29580,29582],{"class":462,"line":2194},[460,29579,20605],{"class":887},[460,29581,2224],{"class":900},[460,29583,1966],{"class":466},[460,29585,29586],{"class":462,"line":2199},[460,29587,821],{"class":466},[18,29589,29591],{"id":29590},"_65引用的本质","6.5引用的本质",[14,29593,29594,29595],{},"本质：",[3944,29596,29597],{},"引用的本质在c++内部实现是一个指针常量.",[451,29599,29601],{"className":16745,"code":29600,"language":16747,"meta":32,"style":32},"\u002F\u002F发现是引用，转换为 int* const ref = &a;\nvoid func(int& ref){\n    ref = 100; \u002F\u002F ref是引用，转换为*ref = 100\n}\nint main(){\n    int a = 10;\n    \n    \u002F\u002F自动转换为 int* const ref = &a; 指针常量是指针指向不可改，也说明为什么引用不可更改\n    int& ref = a; \n    ref = 20; \u002F\u002F内部发现ref是引用，自动帮我们转换为: *ref = 20;\n    \n    cout \u003C\u003C \"a:\" \u003C\u003C a \u003C\u003C endl;\n    cout \u003C\u003C \"ref:\" \u003C\u003C ref \u003C\u003C endl;\n    \n    func(a);\n    return 0;\n}\n",[457,29602,29603,29608,29624,29638,29642,29651,29663,29668,29673,29684,29697,29701,29717,29734,29738,29746,29754],{"__ignoreMap":32},[460,29604,29605],{"class":462,"line":463},[460,29606,29607],{"class":942},"\u002F\u002F发现是引用，转换为 int* const ref = &a;\n",[460,29609,29610,29612,29614,29616,29618,29621],{"class":462,"line":476},[460,29611,21870],{"class":887},[460,29613,27847],{"class":929},[460,29615,2174],{"class":466},[460,29617,29024],{"class":887},[460,29619,29620],{"class":3380}," ref",[460,29622,29623],{"class":466},"){\n",[460,29625,29626,29629,29631,29633,29635],{"class":462,"line":482},[460,29627,29628],{"class":466},"    ref ",[460,29630,894],{"class":887},[460,29632,3751],{"class":900},[460,29634,16807],{"class":466},[460,29636,29637],{"class":942}," \u002F\u002F ref是引用，转换为*ref = 100\n",[460,29639,29640],{"class":462,"line":488},[460,29641,821],{"class":466},[460,29643,29644,29646,29648],{"class":462,"line":494},[460,29645,16759],{"class":887},[460,29647,18514],{"class":929},[460,29649,29650],{"class":466},"(){\n",[460,29652,29653,29655,29657,29659,29661],{"class":462,"line":500},[460,29654,18525],{"class":887},[460,29656,27333],{"class":466},[460,29658,894],{"class":887},[460,29660,5231],{"class":900},[460,29662,1966],{"class":466},[460,29664,29665],{"class":462,"line":506},[460,29666,29667],{"class":466},"    \n",[460,29669,29670],{"class":462,"line":512},[460,29671,29672],{"class":942},"    \u002F\u002F自动转换为 int* const ref = &a; 指针常量是指针指向不可改，也说明为什么引用不可更改\n",[460,29674,29675,29677,29679,29681],{"class":462,"line":518},[460,29676,29389],{"class":887},[460,29678,29392],{"class":466},[460,29680,894],{"class":887},[460,29682,29683],{"class":466}," a; \n",[460,29685,29686,29688,29690,29692,29694],{"class":462,"line":525},[460,29687,29628],{"class":466},[460,29689,894],{"class":887},[460,29691,2590],{"class":900},[460,29693,16807],{"class":466},[460,29695,29696],{"class":942}," \u002F\u002F内部发现ref是引用，自动帮我们转换为: *ref = 20;\n",[460,29698,29699],{"class":462,"line":531},[460,29700,29667],{"class":466},[460,29702,29703,29705,29707,29709,29711,29713,29715],{"class":462,"line":537},[460,29704,23029],{"class":466},[460,29706,17750],{"class":887},[460,29708,29128],{"class":1353},[460,29710,18014],{"class":887},[460,29712,27333],{"class":466},[460,29714,17750],{"class":887},[460,29716,25327],{"class":466},[460,29718,29719,29721,29723,29726,29728,29730,29732],{"class":462,"line":543},[460,29720,23029],{"class":466},[460,29722,17750],{"class":887},[460,29724,29725],{"class":1353}," \"ref:\"",[460,29727,18014],{"class":887},[460,29729,29392],{"class":466},[460,29731,17750],{"class":887},[460,29733,25327],{"class":466},[460,29735,29736],{"class":462,"line":549},[460,29737,29667],{"class":466},[460,29739,29740,29743],{"class":462,"line":555},[460,29741,29742],{"class":929},"    func",[460,29744,29745],{"class":466},"(a);\n",[460,29747,29748,29750,29752],{"class":462,"line":560},[460,29749,20605],{"class":887},[460,29751,2224],{"class":900},[460,29753,1966],{"class":466},[460,29755,29756],{"class":462,"line":566},[460,29757,821],{"class":466},[14,29759,433],{},[103,29761,29762,29765],{},[43,29763,29764],{},"引用的本质，就是一个指针常量",[43,29766,29767],{},"引用一旦初始化，就不可以发生改变",[18,29769,29771],{"id":29770},"_66常量引用","6.6常量引用",[14,29773,29774],{},"作用：常量引用主要用来修饰形参",[14,29776,29777,29778,29781],{},"在函数形参列表中，可以加",[3944,29779,29780],{},"const修饰形参","，防止形参改变实参",[451,29783,29785],{"className":16745,"code":29784,"language":16747,"meta":32,"style":32},"\u002F\u002F引用使用的场景，通常用来修饰形参\n\u002F\u002F加上const就不能修改实参的\nvoid showValue(const int& v) {\n    \u002F\u002Fv += 100;\n    cout \u003C\u003C v \u003C\u003C endl;\n}\n\nint main() {\n\n    \u002F\u002Fint& ref = 10;  引用本身需要一个合法的内存空间，因此这行错误\n    \u002F\u002F加入const就可以了，编译器优化代码，int temp = 10; const int& ref = temp;\n    const int& ref = 10;\n\n    \u002F\u002Fref = 100;  \u002F\u002F加入const后不可以修改变量\n    cout \u003C\u003C ref \u003C\u003C endl;\n\n    \u002F\u002F函数中利用常量引用防止误操作修改实参\n    int a = 10;\n    showValue(a);\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,29786,29787,29792,29797,29816,29821,29834,29838,29842,29850,29854,29859,29864,29878,29882,29890,29902,29906,29911,29923,29930,29934,29944,29948,29956],{"__ignoreMap":32},[460,29788,29789],{"class":462,"line":463},[460,29790,29791],{"class":942},"\u002F\u002F引用使用的场景，通常用来修饰形参\n",[460,29793,29794],{"class":462,"line":476},[460,29795,29796],{"class":942},"\u002F\u002F加上const就不能修改实参的\n",[460,29798,29799,29801,29804,29806,29808,29811,29814],{"class":462,"line":482},[460,29800,21870],{"class":887},[460,29802,29803],{"class":929}," showValue",[460,29805,2174],{"class":466},[460,29807,888],{"class":887},[460,29809,29810],{"class":887}," int&",[460,29812,29813],{"class":3380}," v",[460,29815,2180],{"class":466},[460,29817,29818],{"class":462,"line":488},[460,29819,29820],{"class":942},"    \u002F\u002Fv += 100;\n",[460,29822,29823,29825,29827,29830,29832],{"class":462,"line":494},[460,29824,23029],{"class":466},[460,29826,17750],{"class":887},[460,29828,29829],{"class":466}," v ",[460,29831,17750],{"class":887},[460,29833,25327],{"class":466},[460,29835,29836],{"class":462,"line":500},[460,29837,821],{"class":466},[460,29839,29840],{"class":462,"line":506},[460,29841,522],{"emptyLinePlaceholder":521},[460,29843,29844,29846,29848],{"class":462,"line":512},[460,29845,16759],{"class":887},[460,29847,18514],{"class":929},[460,29849,11374],{"class":466},[460,29851,29852],{"class":462,"line":518},[460,29853,522],{"emptyLinePlaceholder":521},[460,29855,29856],{"class":462,"line":525},[460,29857,29858],{"class":942},"    \u002F\u002Fint& ref = 10;  引用本身需要一个合法的内存空间，因此这行错误\n",[460,29860,29861],{"class":462,"line":531},[460,29862,29863],{"class":942},"    \u002F\u002F加入const就可以了，编译器优化代码，int temp = 10; const int& ref = temp;\n",[460,29865,29866,29868,29870,29872,29874,29876],{"class":462,"line":537},[460,29867,1340],{"class":887},[460,29869,29810],{"class":887},[460,29871,29392],{"class":466},[460,29873,894],{"class":887},[460,29875,5231],{"class":900},[460,29877,1966],{"class":466},[460,29879,29880],{"class":462,"line":543},[460,29881,522],{"emptyLinePlaceholder":521},[460,29883,29884,29887],{"class":462,"line":549},[460,29885,29886],{"class":942},"    \u002F\u002Fref = 100;",[460,29888,29889],{"class":942},"  \u002F\u002F加入const后不可以修改变量\n",[460,29891,29892,29894,29896,29898,29900],{"class":462,"line":555},[460,29893,23029],{"class":466},[460,29895,17750],{"class":887},[460,29897,29392],{"class":466},[460,29899,17750],{"class":887},[460,29901,25327],{"class":466},[460,29903,29904],{"class":462,"line":560},[460,29905,522],{"emptyLinePlaceholder":521},[460,29907,29908],{"class":462,"line":566},[460,29909,29910],{"class":942},"    \u002F\u002F函数中利用常量引用防止误操作修改实参\n",[460,29912,29913,29915,29917,29919,29921],{"class":462,"line":572},[460,29914,18525],{"class":887},[460,29916,27333],{"class":466},[460,29918,894],{"class":887},[460,29920,5231],{"class":900},[460,29922,1966],{"class":466},[460,29924,29925,29928],{"class":462,"line":578},[460,29926,29927],{"class":929},"    showValue",[460,29929,29745],{"class":466},[460,29931,29932],{"class":462,"line":812},[460,29933,522],{"emptyLinePlaceholder":521},[460,29935,29936,29938,29940,29942],{"class":462,"line":818},[460,29937,18839],{"class":929},[460,29939,2174],{"class":466},[460,29941,18844],{"class":1353},[460,29943,2254],{"class":466},[460,29945,29946],{"class":462,"line":824},[460,29947,522],{"emptyLinePlaceholder":521},[460,29949,29950,29952,29954],{"class":462,"line":2074},[460,29951,20605],{"class":887},[460,29953,2224],{"class":900},[460,29955,1966],{"class":466},[460,29957,29958],{"class":462,"line":2088},[460,29959,821],{"class":466},[1944,29961,29962],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":29964},[29965,29966,29967,29968,29969,29970],{"id":28500,"depth":476,"text":28501},{"id":28679,"depth":476,"text":28680},{"id":28862,"depth":476,"text":28863},{"id":29264,"depth":476,"text":29265},{"id":29590,"depth":476,"text":29591},{"id":29770,"depth":476,"text":29771},{},"\u002Fwiki\u002F2026-05-24-c++\u002Fch6",{"title":28492,"description":32},"wiki\u002F2026-05-24-c++学习\u002Fch6-引用","3b9GaOu4dJ6AA4pEN3OBkRN5PfpCvI4JUz7VlaaP6b0",{"id":29977,"title":29978,"body":29979,"description":32,"extension":16683,"meta":31057,"navigation":521,"path":31058,"seo":31059,"stem":31060,"__hash__":31061},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Fch7-函数高级.md","7.函数(高级部分)",{"type":7,"value":29980,"toc":31049},[29981,29984,29988,29991,29996,30226,30228,30239,30243,30246,30253,30357,30360,30364,30367,30371,30374,30379,30401,30407,30734,30737,30741,30749,31046],[10,29982,29978],{"id":29983},"_7函数高级部分",[18,29985,29987],{"id":29986},"_71函数默认参数","7.1函数默认参数",[14,29989,29990],{},"在C++中，函数的形参列表中的形参是可以有默认值的。",[14,29992,5927,29993],{},[457,29994,29995],{}," 返回值类型  函数名 （参数= 默认值）{}",[451,29997,29999],{"className":16745,"code":29998,"language":16747,"meta":32,"style":32},"int func(int a, int b = 10, int c = 10) {\n    return a + b + c;\n}\n\n\u002F\u002F1. 如果某个位置参数有默认值，那么从这个位置往后，从左向右，必须都要有默认值\n\u002F\u002F2. 如果函数声明有默认值，函数实现的时候就不能有默认参数\nint func2(int a = 10, int b = 10);\nint func2(int a, int b) {\n    return a + b;\n}\n\nint main() {\n\n    cout \u003C\u003C \"ret = \" \u003C\u003C func(20, 20) \u003C\u003C endl;\n    cout \u003C\u003C \"ret = \" \u003C\u003C func(100) \u003C\u003C endl;\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,30000,30001,30035,30050,30054,30058,30063,30068,30097,30117,30127,30131,30135,30143,30147,30174,30196,30200,30210,30214,30222],{"__ignoreMap":32},[460,30002,30003,30005,30007,30009,30011,30013,30015,30017,30019,30021,30023,30025,30027,30029,30031,30033],{"class":462,"line":463},[460,30004,16759],{"class":887},[460,30006,27847],{"class":929},[460,30008,2174],{"class":466},[460,30010,16759],{"class":887},[460,30012,2574],{"class":3380},[460,30014,904],{"class":466},[460,30016,16759],{"class":887},[460,30018,19355],{"class":3380},[460,30020,2943],{"class":887},[460,30022,5231],{"class":900},[460,30024,904],{"class":466},[460,30026,16759],{"class":887},[460,30028,19371],{"class":3380},[460,30030,2943],{"class":887},[460,30032,5231],{"class":900},[460,30034,2180],{"class":466},[460,30036,30037,30039,30041,30043,30045,30047],{"class":462,"line":476},[460,30038,20605],{"class":887},[460,30040,27333],{"class":466},[460,30042,8495],{"class":887},[460,30044,27346],{"class":466},[460,30046,8495],{"class":887},[460,30048,30049],{"class":466}," c;\n",[460,30051,30052],{"class":462,"line":482},[460,30053,821],{"class":466},[460,30055,30056],{"class":462,"line":488},[460,30057,522],{"emptyLinePlaceholder":521},[460,30059,30060],{"class":462,"line":494},[460,30061,30062],{"class":942},"\u002F\u002F1. 如果某个位置参数有默认值，那么从这个位置往后，从左向右，必须都要有默认值\n",[460,30064,30065],{"class":462,"line":500},[460,30066,30067],{"class":942},"\u002F\u002F2. 如果函数声明有默认值，函数实现的时候就不能有默认参数\n",[460,30069,30070,30072,30075,30077,30079,30081,30083,30085,30087,30089,30091,30093,30095],{"class":462,"line":506},[460,30071,16759],{"class":887},[460,30073,30074],{"class":929}," func2",[460,30076,2174],{"class":466},[460,30078,16759],{"class":887},[460,30080,2574],{"class":3380},[460,30082,2943],{"class":887},[460,30084,5231],{"class":900},[460,30086,904],{"class":466},[460,30088,16759],{"class":887},[460,30090,19355],{"class":3380},[460,30092,2943],{"class":887},[460,30094,5231],{"class":900},[460,30096,2254],{"class":466},[460,30098,30099,30101,30103,30105,30107,30109,30111,30113,30115],{"class":462,"line":512},[460,30100,16759],{"class":887},[460,30102,30074],{"class":929},[460,30104,2174],{"class":466},[460,30106,16759],{"class":887},[460,30108,2574],{"class":3380},[460,30110,904],{"class":466},[460,30112,16759],{"class":887},[460,30114,19355],{"class":3380},[460,30116,2180],{"class":466},[460,30118,30119,30121,30123,30125],{"class":462,"line":518},[460,30120,20605],{"class":887},[460,30122,27333],{"class":466},[460,30124,8495],{"class":887},[460,30126,28921],{"class":466},[460,30128,30129],{"class":462,"line":525},[460,30130,821],{"class":466},[460,30132,30133],{"class":462,"line":531},[460,30134,522],{"emptyLinePlaceholder":521},[460,30136,30137,30139,30141],{"class":462,"line":537},[460,30138,16759],{"class":887},[460,30140,18514],{"class":929},[460,30142,11374],{"class":466},[460,30144,30145],{"class":462,"line":543},[460,30146,522],{"emptyLinePlaceholder":521},[460,30148,30149,30151,30153,30156,30158,30160,30162,30164,30166,30168,30170,30172],{"class":462,"line":549},[460,30150,23029],{"class":466},[460,30152,17750],{"class":887},[460,30154,30155],{"class":1353}," \"ret = \"",[460,30157,18014],{"class":887},[460,30159,27847],{"class":929},[460,30161,2174],{"class":466},[460,30163,2110],{"class":900},[460,30165,904],{"class":466},[460,30167,2110],{"class":900},[460,30169,8296],{"class":466},[460,30171,17750],{"class":887},[460,30173,25327],{"class":466},[460,30175,30176,30178,30180,30182,30184,30186,30188,30190,30192,30194],{"class":462,"line":555},[460,30177,23029],{"class":466},[460,30179,17750],{"class":887},[460,30181,30155],{"class":1353},[460,30183,18014],{"class":887},[460,30185,27847],{"class":929},[460,30187,2174],{"class":466},[460,30189,2325],{"class":900},[460,30191,8296],{"class":466},[460,30193,17750],{"class":887},[460,30195,25327],{"class":466},[460,30197,30198],{"class":462,"line":560},[460,30199,522],{"emptyLinePlaceholder":521},[460,30201,30202,30204,30206,30208],{"class":462,"line":566},[460,30203,18839],{"class":929},[460,30205,2174],{"class":466},[460,30207,18844],{"class":1353},[460,30209,2254],{"class":466},[460,30211,30212],{"class":462,"line":572},[460,30213,522],{"emptyLinePlaceholder":521},[460,30215,30216,30218,30220],{"class":462,"line":578},[460,30217,20605],{"class":887},[460,30219,2224],{"class":900},[460,30221,1966],{"class":466},[460,30223,30224],{"class":462,"line":812},[460,30225,821],{"class":466},[14,30227,433],{},[103,30229,30230,30233,30236],{},[43,30231,30232],{},"我传就用我；没传就用你",[43,30234,30235],{},"如果某个位置参数有默认值，那么从这个位置往后，从左向右，必须都要有默认值；前边有没有无所谓",[43,30237,30238],{},"如果函数声明有默认值，函数实现的时候就不能有默认参数",[18,30240,30242],{"id":30241},"_72函数的占位参数","7.2函数的占位参数",[14,30244,30245],{},"C++中函数的形参列表里可以有占位参数，用来做占位，调用函数时必须填补该位置",[14,30247,30248,6464,30250],{},[3944,30249,5927],{},[457,30251,30252],{},"返回值类型 函数名 (数据类型){}",[451,30254,30256],{"className":16745,"code":30255,"language":16747,"meta":32,"style":32},"\u002F\u002F函数占位参数 ，占位参数也可以有默认参数\nvoid func(int a, int) {\n    cout \u003C\u003C \"this is func\" \u003C\u003C endl;\n}\nint main() {\n\n    func(10,10); \u002F\u002F占位参数必须填补，现在还没法在函数中使用，后面就会用到！\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,30257,30258,30263,30281,30294,30298,30306,30310,30327,30331,30341,30345,30353],{"__ignoreMap":32},[460,30259,30260],{"class":462,"line":463},[460,30261,30262],{"class":942},"\u002F\u002F函数占位参数 ，占位参数也可以有默认参数\n",[460,30264,30265,30267,30269,30271,30273,30275,30277,30279],{"class":462,"line":476},[460,30266,21870],{"class":887},[460,30268,27847],{"class":929},[460,30270,2174],{"class":466},[460,30272,16759],{"class":887},[460,30274,2574],{"class":3380},[460,30276,904],{"class":466},[460,30278,16759],{"class":887},[460,30280,2180],{"class":466},[460,30282,30283,30285,30287,30290,30292],{"class":462,"line":482},[460,30284,23029],{"class":466},[460,30286,17750],{"class":887},[460,30288,30289],{"class":1353}," \"this is func\"",[460,30291,18014],{"class":887},[460,30293,25327],{"class":466},[460,30295,30296],{"class":462,"line":488},[460,30297,821],{"class":466},[460,30299,30300,30302,30304],{"class":462,"line":494},[460,30301,16759],{"class":887},[460,30303,18514],{"class":929},[460,30305,11374],{"class":466},[460,30307,30308],{"class":462,"line":500},[460,30309,522],{"emptyLinePlaceholder":521},[460,30311,30312,30314,30316,30318,30320,30322,30324],{"class":462,"line":506},[460,30313,29742],{"class":929},[460,30315,2174],{"class":466},[460,30317,2096],{"class":900},[460,30319,3986],{"class":466},[460,30321,2096],{"class":900},[460,30323,22470],{"class":466},[460,30325,30326],{"class":942}," \u002F\u002F占位参数必须填补，现在还没法在函数中使用，后面就会用到！\n",[460,30328,30329],{"class":462,"line":512},[460,30330,522],{"emptyLinePlaceholder":521},[460,30332,30333,30335,30337,30339],{"class":462,"line":518},[460,30334,18839],{"class":929},[460,30336,2174],{"class":466},[460,30338,18844],{"class":1353},[460,30340,2254],{"class":466},[460,30342,30343],{"class":462,"line":525},[460,30344,522],{"emptyLinePlaceholder":521},[460,30346,30347,30349,30351],{"class":462,"line":531},[460,30348,20605],{"class":887},[460,30350,2224],{"class":900},[460,30352,1966],{"class":466},[460,30354,30355],{"class":462,"line":537},[460,30356,821],{"class":466},[14,30358,30359],{},"注意：就是只填写数据类型作为占位，调用的时候必须传对应数据",[18,30361,30363],{"id":30362},"_73函数重载","7.3函数重载",[14,30365,30366],{},"意思是函数名是可以相同的",[23,30368,30370],{"id":30369},"_731基本语法","7.3.1基本语法",[14,30372,30373],{},"作用：函数名可以相同，提高复用性",[14,30375,30376],{},[3944,30377,30378],{},"函数重载满足条件：",[40,30380,30381,30384,30387],{},[43,30382,30383],{},"同一个作用域下",[43,30385,30386],{},"函数名称相同",[43,30388,30389,30390,30393,30394,30397,30398],{},"函数参数",[3944,30391,30392],{},"类型不同","  或者 ",[3944,30395,30396],{},"个数不同"," 或者 ",[3944,30399,30400],{},"顺序不同",[14,30402,30403,30406],{},[3944,30404,30405],{},"注意:","  函数的返回值不可以作为函数重载的条件",[451,30408,30410],{"className":26406,"code":30409,"language":26408,"meta":32,"style":32},"\u002F\u002F函数重载需要函数都在同一个作用域下\nvoid func()\n{\n    cout \u003C\u003C \"func 的调用！\" \u003C\u003C endl;\n}\nvoid func(int a)\n{\n    cout \u003C\u003C \"func (int a) 的调用！\" \u003C\u003C endl;\n}\nvoid func(double a)\n{\n    cout \u003C\u003C \"func (double a)的调用！\" \u003C\u003C endl;\n}\nvoid func(int a ,double b)\n{\n    cout \u003C\u003C \"func (int a ,double b) 的调用！\" \u003C\u003C endl;\n}\nvoid func(double a ,int b)\n{\n    cout \u003C\u003C \"func (double a ,int b)的调用！\" \u003C\u003C endl;\n}\n\n\u002F\u002F函数返回值不可以作为函数重载条件\n\u002F\u002Fint func(double a, int b)\n\u002F\u002F{\n\u002F\u002F  cout \u003C\u003C \"func (double a ,int b)的调用！\" \u003C\u003C endl;\n\u002F\u002F}\n\n\nint main() {\n\n    func();\n    func(10);\n    func(3.14);\n    func(10,3.14);\n    func(3.14 , 10);\n    \n    system(\"pause\");\n\n    return 0;\n}\n",[457,30411,30412,30417,30425,30429,30442,30446,30460,30464,30477,30481,30496,30500,30513,30517,30538,30542,30555,30559,30579,30583,30596,30600,30604,30609,30614,30619,30624,30629,30633,30637,30645,30649,30655,30665,30675,30689,30704,30708,30718,30722,30730],{"__ignoreMap":32},[460,30413,30414],{"class":462,"line":463},[460,30415,30416],{"class":942},"\u002F\u002F函数重载需要函数都在同一个作用域下\n",[460,30418,30419,30421,30423],{"class":462,"line":476},[460,30420,21870],{"class":887},[460,30422,27847],{"class":929},[460,30424,10758],{"class":466},[460,30426,30427],{"class":462,"line":482},[460,30428,18115],{"class":466},[460,30430,30431,30433,30435,30438,30440],{"class":462,"line":488},[460,30432,23029],{"class":466},[460,30434,17750],{"class":887},[460,30436,30437],{"class":1353}," \"func 的调用！\"",[460,30439,18014],{"class":887},[460,30441,25327],{"class":466},[460,30443,30444],{"class":462,"line":494},[460,30445,821],{"class":466},[460,30447,30448,30450,30452,30454,30456,30458],{"class":462,"line":500},[460,30449,21870],{"class":887},[460,30451,27847],{"class":929},[460,30453,2174],{"class":466},[460,30455,16759],{"class":887},[460,30457,2574],{"class":3380},[460,30459,3754],{"class":466},[460,30461,30462],{"class":462,"line":506},[460,30463,18115],{"class":466},[460,30465,30466,30468,30470,30473,30475],{"class":462,"line":512},[460,30467,23029],{"class":466},[460,30469,17750],{"class":887},[460,30471,30472],{"class":1353}," \"func (int a) 的调用！\"",[460,30474,18014],{"class":887},[460,30476,25327],{"class":466},[460,30478,30479],{"class":462,"line":518},[460,30480,821],{"class":466},[460,30482,30483,30485,30487,30489,30492,30494],{"class":462,"line":525},[460,30484,21870],{"class":887},[460,30486,27847],{"class":929},[460,30488,2174],{"class":466},[460,30490,30491],{"class":887},"double",[460,30493,2574],{"class":3380},[460,30495,3754],{"class":466},[460,30497,30498],{"class":462,"line":531},[460,30499,18115],{"class":466},[460,30501,30502,30504,30506,30509,30511],{"class":462,"line":537},[460,30503,23029],{"class":466},[460,30505,17750],{"class":887},[460,30507,30508],{"class":1353}," \"func (double a)的调用！\"",[460,30510,18014],{"class":887},[460,30512,25327],{"class":466},[460,30514,30515],{"class":462,"line":543},[460,30516,821],{"class":466},[460,30518,30519,30521,30523,30525,30527,30529,30532,30534,30536],{"class":462,"line":549},[460,30520,21870],{"class":887},[460,30522,27847],{"class":929},[460,30524,2174],{"class":466},[460,30526,16759],{"class":887},[460,30528,2574],{"class":3380},[460,30530,30531],{"class":466}," ,",[460,30533,30491],{"class":887},[460,30535,19355],{"class":3380},[460,30537,3754],{"class":466},[460,30539,30540],{"class":462,"line":555},[460,30541,18115],{"class":466},[460,30543,30544,30546,30548,30551,30553],{"class":462,"line":560},[460,30545,23029],{"class":466},[460,30547,17750],{"class":887},[460,30549,30550],{"class":1353}," \"func (int a ,double b) 的调用！\"",[460,30552,18014],{"class":887},[460,30554,25327],{"class":466},[460,30556,30557],{"class":462,"line":566},[460,30558,821],{"class":466},[460,30560,30561,30563,30565,30567,30569,30571,30573,30575,30577],{"class":462,"line":572},[460,30562,21870],{"class":887},[460,30564,27847],{"class":929},[460,30566,2174],{"class":466},[460,30568,30491],{"class":887},[460,30570,2574],{"class":3380},[460,30572,30531],{"class":466},[460,30574,16759],{"class":887},[460,30576,19355],{"class":3380},[460,30578,3754],{"class":466},[460,30580,30581],{"class":462,"line":578},[460,30582,18115],{"class":466},[460,30584,30585,30587,30589,30592,30594],{"class":462,"line":812},[460,30586,23029],{"class":466},[460,30588,17750],{"class":887},[460,30590,30591],{"class":1353}," \"func (double a ,int b)的调用！\"",[460,30593,18014],{"class":887},[460,30595,25327],{"class":466},[460,30597,30598],{"class":462,"line":818},[460,30599,821],{"class":466},[460,30601,30602],{"class":462,"line":824},[460,30603,522],{"emptyLinePlaceholder":521},[460,30605,30606],{"class":462,"line":2074},[460,30607,30608],{"class":942},"\u002F\u002F函数返回值不可以作为函数重载条件\n",[460,30610,30611],{"class":462,"line":2088},[460,30612,30613],{"class":942},"\u002F\u002Fint func(double a, int b)\n",[460,30615,30616],{"class":462,"line":2103},[460,30617,30618],{"class":942},"\u002F\u002F{\n",[460,30620,30621],{"class":462,"line":2122},[460,30622,30623],{"class":942},"\u002F\u002F  cout \u003C\u003C \"func (double a ,int b)的调用！\" \u003C\u003C endl;\n",[460,30625,30626],{"class":462,"line":2144},[460,30627,30628],{"class":942},"\u002F\u002F}\n",[460,30630,30631],{"class":462,"line":2158},[460,30632,522],{"emptyLinePlaceholder":521},[460,30634,30635],{"class":462,"line":2163},[460,30636,522],{"emptyLinePlaceholder":521},[460,30638,30639,30641,30643],{"class":462,"line":2168},[460,30640,16759],{"class":887},[460,30642,18514],{"class":929},[460,30644,11374],{"class":466},[460,30646,30647],{"class":462,"line":2183},[460,30648,522],{"emptyLinePlaceholder":521},[460,30650,30651,30653],{"class":462,"line":2194},[460,30652,29742],{"class":929},[460,30654,22142],{"class":466},[460,30656,30657,30659,30661,30663],{"class":462,"line":2199},[460,30658,29742],{"class":929},[460,30660,2174],{"class":466},[460,30662,2096],{"class":900},[460,30664,2254],{"class":466},[460,30666,30667,30669,30671,30673],{"class":462,"line":2204},[460,30668,29742],{"class":929},[460,30670,2174],{"class":466},[460,30672,16801],{"class":900},[460,30674,2254],{"class":466},[460,30676,30677,30679,30681,30683,30685,30687],{"class":462,"line":2212},[460,30678,29742],{"class":929},[460,30680,2174],{"class":466},[460,30682,2096],{"class":900},[460,30684,3986],{"class":466},[460,30686,16801],{"class":900},[460,30688,2254],{"class":466},[460,30690,30691,30693,30695,30697,30700,30702],{"class":462,"line":2257},[460,30692,29742],{"class":929},[460,30694,2174],{"class":466},[460,30696,16801],{"class":900},[460,30698,30699],{"class":466}," , ",[460,30701,2096],{"class":900},[460,30703,2254],{"class":466},[460,30705,30706],{"class":462,"line":2285},[460,30707,29667],{"class":466},[460,30709,30710,30712,30714,30716],{"class":462,"line":2298},[460,30711,18839],{"class":929},[460,30713,2174],{"class":466},[460,30715,18844],{"class":1353},[460,30717,2254],{"class":466},[460,30719,30720],{"class":462,"line":2303},[460,30721,522],{"emptyLinePlaceholder":521},[460,30723,30724,30726,30728],{"class":462,"line":2308},[460,30725,20605],{"class":887},[460,30727,2224],{"class":900},[460,30729,1966],{"class":466},[460,30731,30732],{"class":462,"line":2318},[460,30733,821],{"class":466},[14,30735,30736],{},"重点：函数返回值不可以作为函数重载条件！",[23,30738,30740],{"id":30739},"_732注意事项","7.3.2注意事项",[40,30742,30743,30746],{},[43,30744,30745],{},"引用作为重载条件!!!",[43,30747,30748],{},"函数重载碰到函数默认参数",[451,30750,30752],{"className":16745,"code":30751,"language":16747,"meta":32,"style":32},"\u002F\u002F函数重载注意事项\n\u002F\u002F1、引用作为重载条件\n\nvoid func(int &a)\n{\n    cout \u003C\u003C \"func (int &a) 调用 \" \u003C\u003C endl;\n}\n\nvoid func(const int &a)\n{\n    cout \u003C\u003C \"func (const int &a) 调用 \" \u003C\u003C endl;\n}\n\n\n\u002F\u002F2、函数重载碰到函数默认参数\n\nvoid func2(int a, int b = 10)\n{\n    cout \u003C\u003C \"func2(int a, int b = 10) 调用\" \u003C\u003C endl;\n}\n\nvoid func2(int a)\n{\n    cout \u003C\u003C \"func2(int a) 调用\" \u003C\u003C endl;\n}\n\nint main() {\n    \n    int a = 10;\n    func(a); \u002F\u002F调用无const   因为a本身是个变量，可读可写\n    func(10);\u002F\u002F调用有const   10是个常量\n\n\n    \u002F\u002Ffunc2(10); \u002F\u002F碰到默认参数产生歧义，需要避免\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,30753,30754,30759,30764,30768,30784,30788,30801,30805,30809,30827,30831,30844,30848,30852,30856,30861,30865,30889,30893,30906,30910,30914,30928,30932,30945,30949,30953,30961,30965,30977,30987,31000,31004,31008,31016,31020,31030,31034,31042],{"__ignoreMap":32},[460,30755,30756],{"class":462,"line":463},[460,30757,30758],{"class":942},"\u002F\u002F函数重载注意事项\n",[460,30760,30761],{"class":462,"line":476},[460,30762,30763],{"class":942},"\u002F\u002F1、引用作为重载条件\n",[460,30765,30766],{"class":462,"line":482},[460,30767,522],{"emptyLinePlaceholder":521},[460,30769,30770,30772,30774,30776,30778,30780,30782],{"class":462,"line":488},[460,30771,21870],{"class":887},[460,30773,27847],{"class":929},[460,30775,2174],{"class":466},[460,30777,16759],{"class":887},[460,30779,27049],{"class":887},[460,30781,2756],{"class":3380},[460,30783,3754],{"class":466},[460,30785,30786],{"class":462,"line":494},[460,30787,18115],{"class":466},[460,30789,30790,30792,30794,30797,30799],{"class":462,"line":500},[460,30791,23029],{"class":466},[460,30793,17750],{"class":887},[460,30795,30796],{"class":1353}," \"func (int &a) 调用 \"",[460,30798,18014],{"class":887},[460,30800,25327],{"class":466},[460,30802,30803],{"class":462,"line":506},[460,30804,821],{"class":466},[460,30806,30807],{"class":462,"line":512},[460,30808,522],{"emptyLinePlaceholder":521},[460,30810,30811,30813,30815,30817,30819,30821,30823,30825],{"class":462,"line":518},[460,30812,21870],{"class":887},[460,30814,27847],{"class":929},[460,30816,2174],{"class":466},[460,30818,888],{"class":887},[460,30820,18917],{"class":887},[460,30822,27049],{"class":887},[460,30824,2756],{"class":3380},[460,30826,3754],{"class":466},[460,30828,30829],{"class":462,"line":525},[460,30830,18115],{"class":466},[460,30832,30833,30835,30837,30840,30842],{"class":462,"line":531},[460,30834,23029],{"class":466},[460,30836,17750],{"class":887},[460,30838,30839],{"class":1353}," \"func (const int &a) 调用 \"",[460,30841,18014],{"class":887},[460,30843,25327],{"class":466},[460,30845,30846],{"class":462,"line":537},[460,30847,821],{"class":466},[460,30849,30850],{"class":462,"line":543},[460,30851,522],{"emptyLinePlaceholder":521},[460,30853,30854],{"class":462,"line":549},[460,30855,522],{"emptyLinePlaceholder":521},[460,30857,30858],{"class":462,"line":555},[460,30859,30860],{"class":942},"\u002F\u002F2、函数重载碰到函数默认参数\n",[460,30862,30863],{"class":462,"line":560},[460,30864,522],{"emptyLinePlaceholder":521},[460,30866,30867,30869,30871,30873,30875,30877,30879,30881,30883,30885,30887],{"class":462,"line":566},[460,30868,21870],{"class":887},[460,30870,30074],{"class":929},[460,30872,2174],{"class":466},[460,30874,16759],{"class":887},[460,30876,2574],{"class":3380},[460,30878,904],{"class":466},[460,30880,16759],{"class":887},[460,30882,19355],{"class":3380},[460,30884,2943],{"class":887},[460,30886,5231],{"class":900},[460,30888,3754],{"class":466},[460,30890,30891],{"class":462,"line":572},[460,30892,18115],{"class":466},[460,30894,30895,30897,30899,30902,30904],{"class":462,"line":578},[460,30896,23029],{"class":466},[460,30898,17750],{"class":887},[460,30900,30901],{"class":1353}," \"func2(int a, int b = 10) 调用\"",[460,30903,18014],{"class":887},[460,30905,25327],{"class":466},[460,30907,30908],{"class":462,"line":812},[460,30909,821],{"class":466},[460,30911,30912],{"class":462,"line":818},[460,30913,522],{"emptyLinePlaceholder":521},[460,30915,30916,30918,30920,30922,30924,30926],{"class":462,"line":824},[460,30917,21870],{"class":887},[460,30919,30074],{"class":929},[460,30921,2174],{"class":466},[460,30923,16759],{"class":887},[460,30925,2574],{"class":3380},[460,30927,3754],{"class":466},[460,30929,30930],{"class":462,"line":2074},[460,30931,18115],{"class":466},[460,30933,30934,30936,30938,30941,30943],{"class":462,"line":2088},[460,30935,23029],{"class":466},[460,30937,17750],{"class":887},[460,30939,30940],{"class":1353}," \"func2(int a) 调用\"",[460,30942,18014],{"class":887},[460,30944,25327],{"class":466},[460,30946,30947],{"class":462,"line":2103},[460,30948,821],{"class":466},[460,30950,30951],{"class":462,"line":2122},[460,30952,522],{"emptyLinePlaceholder":521},[460,30954,30955,30957,30959],{"class":462,"line":2144},[460,30956,16759],{"class":887},[460,30958,18514],{"class":929},[460,30960,11374],{"class":466},[460,30962,30963],{"class":462,"line":2158},[460,30964,29667],{"class":466},[460,30966,30967,30969,30971,30973,30975],{"class":462,"line":2163},[460,30968,18525],{"class":887},[460,30970,27333],{"class":466},[460,30972,894],{"class":887},[460,30974,5231],{"class":900},[460,30976,1966],{"class":466},[460,30978,30979,30981,30984],{"class":462,"line":2168},[460,30980,29742],{"class":929},[460,30982,30983],{"class":466},"(a);",[460,30985,30986],{"class":942}," \u002F\u002F调用无const   因为a本身是个变量，可读可写\n",[460,30988,30989,30991,30993,30995,30997],{"class":462,"line":2183},[460,30990,29742],{"class":929},[460,30992,2174],{"class":466},[460,30994,2096],{"class":900},[460,30996,22470],{"class":466},[460,30998,30999],{"class":942},"\u002F\u002F调用有const   10是个常量\n",[460,31001,31002],{"class":462,"line":2194},[460,31003,522],{"emptyLinePlaceholder":521},[460,31005,31006],{"class":462,"line":2199},[460,31007,522],{"emptyLinePlaceholder":521},[460,31009,31010,31013],{"class":462,"line":2204},[460,31011,31012],{"class":942},"    \u002F\u002Ffunc2(10);",[460,31014,31015],{"class":942}," \u002F\u002F碰到默认参数产生歧义，需要避免\n",[460,31017,31018],{"class":462,"line":2212},[460,31019,522],{"emptyLinePlaceholder":521},[460,31021,31022,31024,31026,31028],{"class":462,"line":2257},[460,31023,18839],{"class":929},[460,31025,2174],{"class":466},[460,31027,18844],{"class":1353},[460,31029,2254],{"class":466},[460,31031,31032],{"class":462,"line":2285},[460,31033,522],{"emptyLinePlaceholder":521},[460,31035,31036,31038,31040],{"class":462,"line":2298},[460,31037,20605],{"class":887},[460,31039,2224],{"class":900},[460,31041,1966],{"class":466},[460,31043,31044],{"class":462,"line":2303},[460,31045,821],{"class":466},[1944,31047,31048],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":32,"searchDepth":476,"depth":476,"links":31050},[31051,31052,31053],{"id":29986,"depth":476,"text":29987},{"id":30241,"depth":476,"text":30242},{"id":30362,"depth":476,"text":30363,"children":31054},[31055,31056],{"id":30369,"depth":482,"text":30370},{"id":30739,"depth":482,"text":30740},{},"\u002Fwiki\u002F2026-05-24-c++\u002Fch7",{"title":29978,"description":32},"wiki\u002F2026-05-24-c++学习\u002Fch7-函数高级","JeAg03-_IoVFCkdwiBEVx1i5FNY-l3QWmylt1RpVnus",{"id":31063,"title":31064,"body":31065,"description":39778,"extension":16683,"meta":39779,"navigation":521,"path":39780,"seo":39781,"stem":39782,"__hash__":39783},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Fch8-类和对象.md","8.类和对象",{"type":7,"value":31066,"toc":39759},[31067,31070,31076,31083,31088,31091,31094,31097,31101,31105,31108,31111,31119,31124,31127,31134,31139,31297,31300,31551,31554,31557,31560,31565,31568,31571,31582,31587,31823,31827,31837,31840,31848,31995,31999,32002,32005,32009,32453,32457,32465,32473,33353,33360,33365,33992,33995,33998,34001,34120,34123,34210,34213,34339,34342,34436,34439,34792,34796,34804,34808,34815,34818,34821,34832,34838,34843,34855,34863,34883,34891,34908,35094,35097,35101,35104,35107,35110,35113,35116,35119,35122,35582,35588,35592,35595,35606,36193,36196,36685,36689,36692,36695,36698,36701,36704,36712,37108,37112,37115,37118,37565,37568,37571,37576,37579,37584,37587,37591,37594,37596,37602,37605,37911,37920,37961,37965,37968,37970,38003,38006,38313,38315,38330,38333,38356,38365,38370,38373,38377,38380,38383,38388,38399,38404,38412,38416,38546,38549,38552,38727,38732,38944,38948,38951,39065,39070,39309,39313,39317,39320,39323,39327,39432,39435,39438,39441,39445,39556,39559,39562,39567,39619,39622,39625,39630,39676,39679,39684,39752,39754,39757],[10,31068,31064],{"id":31069},"_8类和对象",[14,31071,31072,31073],{},"C++面向对象的三大特性为",[3944,31074,31075],{},"封装、继承、多态",[14,31077,31078,31079,31082],{},"C++认为",[3944,31080,31081],{},"万事万物都皆为对象","，对象上有其属性和行为",[14,31084,31085],{},[3944,31086,31087],{},"例如：",[14,31089,31090],{},"​\t人可以作为对象，属性有姓名、年龄、身高、体重...，行为有走、跑、跳、吃饭、唱歌...",[14,31092,31093],{},"​\t车也可以作为对象，属性有轮胎、方向盘、车灯...,行为有载人、放音乐、放空调...",[14,31095,31096],{},"​\t具有相同性质的对象，我们可以抽象称为类，人属于人类，车属于车类",[18,31098,31100],{"id":31099},"_81封装","8.1封装",[23,31102,31104],{"id":31103},"_811封装的意义","8.1.1封装的意义",[14,31106,31107],{},"封装是C++面向对象三大特性之一",[14,31109,31110],{},"封装的意义：",[40,31112,31113,31116],{},[43,31114,31115],{},"将属性和行为作为一个整体，表现生活中的事物",[43,31117,31118],{},"将属性和行为加以权限控制",[14,31120,31121],{},[3944,31122,31123],{},"封装意义一：",[14,31125,31126],{},"​\t在设计类的时候，属性和行为写在一起，表现事物",[14,31128,31129,6464,31131],{},[3944,31130,5927],{},[457,31132,31133],{},"class 类名{   访问权限： 属性  \u002F 行为  };",[103,31135,31136],{},[43,31137,31138],{},"**示例1：**设计一个圆类，求圆的周长",[451,31140,31142],{"className":16745,"code":31141,"language":16747,"meta":32,"style":32},"class Circle\n{\n    \u002F\u002F访问权限\n    \u002F\u002F公共权限\npublic:\n    \u002F\u002F属性\n    int m_r;\n    \u002F\u002F行为\n    double calculateZC()\n    {\n        return 2*PI*m_r;\n    }\n};\nint main()\n{\n    \u002F\u002F通过圆类 创建具体的圆(对象)\n    \u002F\u002F实例化（通过一个类 创建一个对象的过程）\n    Circle c1;\n    \u002F\u002F给圆对象 的属性进行赋值\n    c1.m_r=10;\n    cout\u003C\u003C\"圆的周长\"\u003C\u003Cc1.calculateZC()\u003C\u003Cendl;\n}\n",[457,31143,31144,31152,31156,31161,31166,31171,31176,31183,31188,31198,31202,31219,31223,31227,31235,31239,31244,31249,31254,31259,31270,31293],{"__ignoreMap":32},[460,31145,31146,31149],{"class":462,"line":463},[460,31147,31148],{"class":887},"class",[460,31150,31151],{"class":929}," Circle\n",[460,31153,31154],{"class":462,"line":476},[460,31155,18115],{"class":466},[460,31157,31158],{"class":462,"line":482},[460,31159,31160],{"class":942},"    \u002F\u002F访问权限\n",[460,31162,31163],{"class":462,"line":488},[460,31164,31165],{"class":942},"    \u002F\u002F公共权限\n",[460,31167,31168],{"class":462,"line":494},[460,31169,31170],{"class":887},"public:\n",[460,31172,31173],{"class":462,"line":500},[460,31174,31175],{"class":942},"    \u002F\u002F属性\n",[460,31177,31178,31180],{"class":462,"line":506},[460,31179,18525],{"class":887},[460,31181,31182],{"class":466}," m_r;\n",[460,31184,31185],{"class":462,"line":512},[460,31186,31187],{"class":942},"    \u002F\u002F行为\n",[460,31189,31190,31193,31196],{"class":462,"line":518},[460,31191,31192],{"class":887},"    double",[460,31194,31195],{"class":929}," calculateZC",[460,31197,10758],{"class":466},[460,31199,31200],{"class":462,"line":525},[460,31201,18570],{"class":466},[460,31203,31204,31207,31209,31211,31214,31216],{"class":462,"line":531},[460,31205,31206],{"class":887},"        return",[460,31208,1442],{"class":900},[460,31210,8320],{"class":887},[460,31212,31213],{"class":466},"PI",[460,31215,8320],{"class":887},[460,31217,31218],{"class":466},"m_r;\n",[460,31220,31221],{"class":462,"line":537},[460,31222,509],{"class":466},[460,31224,31225],{"class":462,"line":543},[460,31226,20510],{"class":466},[460,31228,31229,31231,31233],{"class":462,"line":549},[460,31230,16759],{"class":887},[460,31232,18514],{"class":929},[460,31234,10758],{"class":466},[460,31236,31237],{"class":462,"line":555},[460,31238,18115],{"class":466},[460,31240,31241],{"class":462,"line":560},[460,31242,31243],{"class":942},"    \u002F\u002F通过圆类 创建具体的圆(对象)\n",[460,31245,31246],{"class":462,"line":566},[460,31247,31248],{"class":942},"    \u002F\u002F实例化（通过一个类 创建一个对象的过程）\n",[460,31250,31251],{"class":462,"line":572},[460,31252,31253],{"class":466},"    Circle c1;\n",[460,31255,31256],{"class":462,"line":578},[460,31257,31258],{"class":942},"    \u002F\u002F给圆对象 的属性进行赋值\n",[460,31260,31261,31264,31266,31268],{"class":462,"line":812},[460,31262,31263],{"class":466},"    c1.m_r",[460,31265,894],{"class":887},[460,31267,2096],{"class":900},[460,31269,1966],{"class":466},[460,31271,31272,31274,31276,31279,31281,31284,31287,31289,31291],{"class":462,"line":818},[460,31273,18120],{"class":466},[460,31275,17750],{"class":887},[460,31277,31278],{"class":1353},"\"圆的周长\"",[460,31280,17750],{"class":887},[460,31282,31283],{"class":466},"c1.",[460,31285,31286],{"class":929},"calculateZC",[460,31288,18961],{"class":466},[460,31290,17750],{"class":887},[460,31292,17772],{"class":466},[460,31294,31295],{"class":462,"line":824},[460,31296,821],{"class":466},[14,31298,31299],{},"案例：设计一个学生类，属性有姓名和学号，可以给姓名和学号赋值，可以显示学生的姓名和学号",[451,31301,31303],{"className":16745,"code":31302,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Cstring>\nclass Student\n{\npublic:\n    string m_name;\n    int m_id;\n    \u002F\u002F赋值姓名\n    void setName(string name)\n    {\n        m_name=name;\n    }\n    \u002F\u002F赋值学号\n    void setId(int id)\n    {\n        m_id=id;\n    }\n    \u002F\u002F打印学生信息\n    void printInfo()\n    {\n        cout\u003C\u003C\"姓名：\"\u003C\u003Cm_name\u003C\u003C\" \"\u003C\u003C\"学号：\"\u003C\u003Cm_id\u003C\u003Cendl;\n    }\n};\nint main()\n{\n    \u002F\u002F实例化\n    Student s1;\n    s1.setName(\"张三\");\n    s1.setId(123456);\n    s1.printInfo();\n}\n",[457,31304,31305,31311,31321,31327,31333,31337,31341,31346,31353,31358,31375,31379,31389,31393,31398,31413,31417,31427,31431,31436,31444,31448,31480,31484,31488,31496,31500,31505,31510,31524,31538,31547],{"__ignoreMap":32},[460,31306,31307,31309],{"class":462,"line":463},[460,31308,18491],{"class":887},[460,31310,18494],{"class":1353},[460,31312,31313,31315,31317,31319],{"class":462,"line":476},[460,31314,18499],{"class":887},[460,31316,18502],{"class":887},[460,31318,18505],{"class":929},[460,31320,1966],{"class":466},[460,31322,31323,31325],{"class":462,"line":482},[460,31324,18491],{"class":887},[460,31326,24246],{"class":1353},[460,31328,31329,31331],{"class":462,"line":488},[460,31330,31148],{"class":887},[460,31332,24259],{"class":929},[460,31334,31335],{"class":462,"line":494},[460,31336,18115],{"class":466},[460,31338,31339],{"class":462,"line":500},[460,31340,31170],{"class":887},[460,31342,31343],{"class":462,"line":506},[460,31344,31345],{"class":466},"    string m_name;\n",[460,31347,31348,31350],{"class":462,"line":512},[460,31349,18525],{"class":887},[460,31351,31352],{"class":466}," m_id;\n",[460,31354,31355],{"class":462,"line":518},[460,31356,31357],{"class":942},"    \u002F\u002F赋值姓名\n",[460,31359,31360,31363,31366,31368,31371,31373],{"class":462,"line":525},[460,31361,31362],{"class":887},"    void",[460,31364,31365],{"class":929}," setName",[460,31367,2174],{"class":466},[460,31369,31370],{"class":929},"string",[460,31372,1908],{"class":3380},[460,31374,3754],{"class":466},[460,31376,31377],{"class":462,"line":531},[460,31378,18570],{"class":466},[460,31380,31381,31384,31386],{"class":462,"line":537},[460,31382,31383],{"class":466},"        m_name",[460,31385,894],{"class":887},[460,31387,31388],{"class":466},"name;\n",[460,31390,31391],{"class":462,"line":543},[460,31392,509],{"class":466},[460,31394,31395],{"class":462,"line":549},[460,31396,31397],{"class":942},"    \u002F\u002F赋值学号\n",[460,31399,31400,31402,31405,31407,31409,31411],{"class":462,"line":555},[460,31401,31362],{"class":887},[460,31403,31404],{"class":929}," setId",[460,31406,2174],{"class":466},[460,31408,16759],{"class":887},[460,31410,10504],{"class":3380},[460,31412,3754],{"class":466},[460,31414,31415],{"class":462,"line":560},[460,31416,18570],{"class":466},[460,31418,31419,31422,31424],{"class":462,"line":566},[460,31420,31421],{"class":466},"        m_id",[460,31423,894],{"class":887},[460,31425,31426],{"class":466},"id;\n",[460,31428,31429],{"class":462,"line":572},[460,31430,509],{"class":466},[460,31432,31433],{"class":462,"line":578},[460,31434,31435],{"class":942},"    \u002F\u002F打印学生信息\n",[460,31437,31438,31440,31442],{"class":462,"line":812},[460,31439,31362],{"class":887},[460,31441,26099],{"class":929},[460,31443,10758],{"class":466},[460,31445,31446],{"class":462,"line":818},[460,31447,18570],{"class":466},[460,31449,31450,31452,31454,31457,31459,31462,31464,31466,31468,31471,31473,31476,31478],{"class":462,"line":824},[460,31451,19972],{"class":466},[460,31453,17750],{"class":887},[460,31455,31456],{"class":1353},"\"姓名：\"",[460,31458,17750],{"class":887},[460,31460,31461],{"class":466},"m_name",[460,31463,17750],{"class":887},[460,31465,20871],{"class":1353},[460,31467,17750],{"class":887},[460,31469,31470],{"class":1353},"\"学号：\"",[460,31472,17750],{"class":887},[460,31474,31475],{"class":466},"m_id",[460,31477,17750],{"class":887},[460,31479,17772],{"class":466},[460,31481,31482],{"class":462,"line":2074},[460,31483,509],{"class":466},[460,31485,31486],{"class":462,"line":2088},[460,31487,20510],{"class":466},[460,31489,31490,31492,31494],{"class":462,"line":2103},[460,31491,16759],{"class":887},[460,31493,18514],{"class":929},[460,31495,10758],{"class":466},[460,31497,31498],{"class":462,"line":2122},[460,31499,18115],{"class":466},[460,31501,31502],{"class":462,"line":2144},[460,31503,31504],{"class":942},"    \u002F\u002F实例化\n",[460,31506,31507],{"class":462,"line":2158},[460,31508,31509],{"class":466},"    Student s1;\n",[460,31511,31512,31515,31518,31520,31522],{"class":462,"line":2163},[460,31513,31514],{"class":466},"    s1.",[460,31516,31517],{"class":929},"setName",[460,31519,2174],{"class":466},[460,31521,24413],{"class":1353},[460,31523,2254],{"class":466},[460,31525,31526,31528,31531,31533,31536],{"class":462,"line":2168},[460,31527,31514],{"class":466},[460,31529,31530],{"class":929},"setId",[460,31532,2174],{"class":466},[460,31534,31535],{"class":900},"123456",[460,31537,2254],{"class":466},[460,31539,31540,31542,31545],{"class":462,"line":2183},[460,31541,31514],{"class":466},[460,31543,31544],{"class":929},"printInfo",[460,31546,22142],{"class":466},[460,31548,31549],{"class":462,"line":2194},[460,31550,821],{"class":466},[14,31552,31553],{},"类中的属性和行为统称为成员",[14,31555,31556],{},"属性：成员属性(成员变量)",[14,31558,31559],{},"方法：成员函数(成员方法)",[14,31561,31562],{},[3944,31563,31564],{},"封装意义二：",[14,31566,31567],{},"类在设计时，可以把属性和行为放在不同的权限下，加以控制",[14,31569,31570],{},"访问权限有三种：",[103,31572,31573,31576,31579],{},[43,31574,31575],{},"public        公共权限",[43,31577,31578],{},"protected 保护权限",[43,31580,31581],{},"private      私有权限",[14,31583,31584],{},[3944,31585,31586],{},"示例：",[451,31588,31590],{"className":26406,"code":31589,"language":26408,"meta":32,"style":32},"\u002F\u002F三种权限\n\u002F\u002F公共权限  public     类内可以访问  类外可以访问\n\u002F\u002F保护权限  protected  类内可以访问  类外不可以访问  儿子可以访问父亲中的保护内容\n\u002F\u002F私有权限  private    类内可以访问  类外不可以访问  儿子不可以访问父亲中的保护内容\n\nclass Person\n{\n    \u002F\u002F姓名  公共权限\npublic:\n    string m_Name;\n\n    \u002F\u002F汽车  保护权限\nprotected:\n    string m_Car;\n\n    \u002F\u002F银行卡密码  私有权限\nprivate:\n    int m_Password;\n\npublic:\n    void func()\n    {\n        m_Name = \"张三\";\n        m_Car = \"拖拉机\";\n        m_Password = 123456;\n    }\n};\n\nint main() {\n\n    Person p;\n    p.m_Name = \"李四\";\n    \u002F\u002Fp.m_Car = \"奔驰\";  \u002F\u002F保护权限类外访问不到\n    \u002F\u002Fp.m_Password = 123; \u002F\u002F私有权限类外访问不到\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,31591,31592,31597,31602,31607,31612,31616,31623,31627,31632,31636,31641,31645,31650,31655,31660,31664,31669,31674,31681,31685,31689,31697,31701,31712,31724,31736,31740,31744,31748,31756,31760,31765,31777,31785,31793,31797,31807,31811,31819],{"__ignoreMap":32},[460,31593,31594],{"class":462,"line":463},[460,31595,31596],{"class":942},"\u002F\u002F三种权限\n",[460,31598,31599],{"class":462,"line":476},[460,31600,31601],{"class":942},"\u002F\u002F公共权限  public     类内可以访问  类外可以访问\n",[460,31603,31604],{"class":462,"line":482},[460,31605,31606],{"class":942},"\u002F\u002F保护权限  protected  类内可以访问  类外不可以访问  儿子可以访问父亲中的保护内容\n",[460,31608,31609],{"class":462,"line":488},[460,31610,31611],{"class":942},"\u002F\u002F私有权限  private    类内可以访问  类外不可以访问  儿子不可以访问父亲中的保护内容\n",[460,31613,31614],{"class":462,"line":494},[460,31615,522],{"emptyLinePlaceholder":521},[460,31617,31618,31620],{"class":462,"line":500},[460,31619,31148],{"class":887},[460,31621,31622],{"class":929}," Person\n",[460,31624,31625],{"class":462,"line":506},[460,31626,18115],{"class":466},[460,31628,31629],{"class":462,"line":512},[460,31630,31631],{"class":942},"    \u002F\u002F姓名  公共权限\n",[460,31633,31634],{"class":462,"line":518},[460,31635,31170],{"class":887},[460,31637,31638],{"class":462,"line":525},[460,31639,31640],{"class":466},"    string m_Name;\n",[460,31642,31643],{"class":462,"line":531},[460,31644,522],{"emptyLinePlaceholder":521},[460,31646,31647],{"class":462,"line":537},[460,31648,31649],{"class":942},"    \u002F\u002F汽车  保护权限\n",[460,31651,31652],{"class":462,"line":543},[460,31653,31654],{"class":887},"protected:\n",[460,31656,31657],{"class":462,"line":549},[460,31658,31659],{"class":466},"    string m_Car;\n",[460,31661,31662],{"class":462,"line":555},[460,31663,522],{"emptyLinePlaceholder":521},[460,31665,31666],{"class":462,"line":560},[460,31667,31668],{"class":942},"    \u002F\u002F银行卡密码  私有权限\n",[460,31670,31671],{"class":462,"line":566},[460,31672,31673],{"class":887},"private:\n",[460,31675,31676,31678],{"class":462,"line":572},[460,31677,18525],{"class":887},[460,31679,31680],{"class":466}," m_Password;\n",[460,31682,31683],{"class":462,"line":578},[460,31684,522],{"emptyLinePlaceholder":521},[460,31686,31687],{"class":462,"line":812},[460,31688,31170],{"class":887},[460,31690,31691,31693,31695],{"class":462,"line":818},[460,31692,31362],{"class":887},[460,31694,27847],{"class":929},[460,31696,10758],{"class":466},[460,31698,31699],{"class":462,"line":824},[460,31700,18570],{"class":466},[460,31702,31703,31706,31708,31710],{"class":462,"line":2074},[460,31704,31705],{"class":466},"        m_Name ",[460,31707,894],{"class":887},[460,31709,25425],{"class":1353},[460,31711,1966],{"class":466},[460,31713,31714,31717,31719,31722],{"class":462,"line":2088},[460,31715,31716],{"class":466},"        m_Car ",[460,31718,894],{"class":887},[460,31720,31721],{"class":1353}," \"拖拉机\"",[460,31723,1966],{"class":466},[460,31725,31726,31729,31731,31734],{"class":462,"line":2103},[460,31727,31728],{"class":466},"        m_Password ",[460,31730,894],{"class":887},[460,31732,31733],{"class":900}," 123456",[460,31735,1966],{"class":466},[460,31737,31738],{"class":462,"line":2122},[460,31739,509],{"class":466},[460,31741,31742],{"class":462,"line":2144},[460,31743,20510],{"class":466},[460,31745,31746],{"class":462,"line":2158},[460,31747,522],{"emptyLinePlaceholder":521},[460,31749,31750,31752,31754],{"class":462,"line":2163},[460,31751,16759],{"class":887},[460,31753,18514],{"class":929},[460,31755,11374],{"class":466},[460,31757,31758],{"class":462,"line":2168},[460,31759,522],{"emptyLinePlaceholder":521},[460,31761,31762],{"class":462,"line":2183},[460,31763,31764],{"class":466},"    Person p;\n",[460,31766,31767,31770,31772,31775],{"class":462,"line":2194},[460,31768,31769],{"class":466},"    p.m_Name ",[460,31771,894],{"class":887},[460,31773,31774],{"class":1353}," \"李四\"",[460,31776,1966],{"class":466},[460,31778,31779,31782],{"class":462,"line":2199},[460,31780,31781],{"class":942},"    \u002F\u002Fp.m_Car = \"奔驰\";",[460,31783,31784],{"class":942},"  \u002F\u002F保护权限类外访问不到\n",[460,31786,31787,31790],{"class":462,"line":2204},[460,31788,31789],{"class":942},"    \u002F\u002Fp.m_Password = 123;",[460,31791,31792],{"class":942}," \u002F\u002F私有权限类外访问不到\n",[460,31794,31795],{"class":462,"line":2212},[460,31796,522],{"emptyLinePlaceholder":521},[460,31798,31799,31801,31803,31805],{"class":462,"line":2257},[460,31800,18839],{"class":929},[460,31802,2174],{"class":466},[460,31804,18844],{"class":1353},[460,31806,2254],{"class":466},[460,31808,31809],{"class":462,"line":2285},[460,31810,522],{"emptyLinePlaceholder":521},[460,31812,31813,31815,31817],{"class":462,"line":2298},[460,31814,20605],{"class":887},[460,31816,2224],{"class":900},[460,31818,1966],{"class":466},[460,31820,31821],{"class":462,"line":2303},[460,31822,821],{"class":466},[23,31824,31826],{"id":31825},"_812封装c中的class和struct的区别","8.1.2封装c++中的class和struct的区别",[14,31828,31829,31830,31833,31834],{},"在C++中 struct和class唯一的",[3944,31831,31832],{},"区别","就在于 ",[3944,31835,31836],{},"默认的访问权限不同",[14,31838,31839],{},"区别：",[40,31841,31842,31845],{},[43,31843,31844],{},"struct 默认权限为公共",[43,31846,31847],{},"class   默认权限为私有",[451,31849,31851],{"className":26406,"code":31850,"language":26408,"meta":32,"style":32},"class C1\n{\n    int  m_A; \u002F\u002F默认是私有权限\n};\n\nstruct C2\n{\n    int m_A;  \u002F\u002F默认是公共权限\n};\n\nint main() {\n\n    C1 c1;\n    c1.m_A = 10; \u002F\u002F错误，访问权限是私有\n\n    C2 c2;\n    c2.m_A = 10; \u002F\u002F正确，访问权限是公共\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,31852,31853,31860,31864,31874,31878,31882,31889,31893,31903,31907,31911,31919,31923,31928,31942,31946,31951,31965,31969,31979,31983,31991],{"__ignoreMap":32},[460,31854,31855,31857],{"class":462,"line":463},[460,31856,31148],{"class":887},[460,31858,31859],{"class":929}," C1\n",[460,31861,31862],{"class":462,"line":476},[460,31863,18115],{"class":466},[460,31865,31866,31868,31871],{"class":462,"line":482},[460,31867,18525],{"class":887},[460,31869,31870],{"class":466},"  m_A;",[460,31872,31873],{"class":942}," \u002F\u002F默认是私有权限\n",[460,31875,31876],{"class":462,"line":488},[460,31877,20510],{"class":466},[460,31879,31880],{"class":462,"line":494},[460,31881,522],{"emptyLinePlaceholder":521},[460,31883,31884,31886],{"class":462,"line":500},[460,31885,24256],{"class":887},[460,31887,31888],{"class":929}," C2\n",[460,31890,31891],{"class":462,"line":506},[460,31892,18115],{"class":466},[460,31894,31895,31897,31900],{"class":462,"line":512},[460,31896,18525],{"class":887},[460,31898,31899],{"class":466}," m_A;",[460,31901,31902],{"class":942},"  \u002F\u002F默认是公共权限\n",[460,31904,31905],{"class":462,"line":518},[460,31906,20510],{"class":466},[460,31908,31909],{"class":462,"line":525},[460,31910,522],{"emptyLinePlaceholder":521},[460,31912,31913,31915,31917],{"class":462,"line":531},[460,31914,16759],{"class":887},[460,31916,18514],{"class":929},[460,31918,11374],{"class":466},[460,31920,31921],{"class":462,"line":537},[460,31922,522],{"emptyLinePlaceholder":521},[460,31924,31925],{"class":462,"line":543},[460,31926,31927],{"class":466},"    C1 c1;\n",[460,31929,31930,31933,31935,31937,31939],{"class":462,"line":549},[460,31931,31932],{"class":466},"    c1.m_A ",[460,31934,894],{"class":887},[460,31936,5231],{"class":900},[460,31938,16807],{"class":466},[460,31940,31941],{"class":942}," \u002F\u002F错误，访问权限是私有\n",[460,31943,31944],{"class":462,"line":555},[460,31945,522],{"emptyLinePlaceholder":521},[460,31947,31948],{"class":462,"line":560},[460,31949,31950],{"class":466},"    C2 c2;\n",[460,31952,31953,31956,31958,31960,31962],{"class":462,"line":566},[460,31954,31955],{"class":466},"    c2.m_A ",[460,31957,894],{"class":887},[460,31959,5231],{"class":900},[460,31961,16807],{"class":466},[460,31963,31964],{"class":942}," \u002F\u002F正确，访问权限是公共\n",[460,31966,31967],{"class":462,"line":572},[460,31968,522],{"emptyLinePlaceholder":521},[460,31970,31971,31973,31975,31977],{"class":462,"line":578},[460,31972,18839],{"class":929},[460,31974,2174],{"class":466},[460,31976,18844],{"class":1353},[460,31978,2254],{"class":466},[460,31980,31981],{"class":462,"line":812},[460,31982,522],{"emptyLinePlaceholder":521},[460,31984,31985,31987,31989],{"class":462,"line":818},[460,31986,20605],{"class":887},[460,31988,2224],{"class":900},[460,31990,1966],{"class":466},[460,31992,31993],{"class":462,"line":824},[460,31994,821],{"class":466},[23,31996,31998],{"id":31997},"_813成员属性设置为私有","8.1.3成员属性设置为私有",[14,32000,32001],{},"**优点1：**将所有成员属性设置为私有，可以自己控制读写权限",[14,32003,32004],{},"**优点2：**对于写权限，我们可以检测数据的有效性",[14,32006,32007],{},[3944,32008,31586],{},[451,32010,32012],{"className":26406,"code":32011,"language":26408,"meta":32,"style":32},"class Person {\npublic:\n\n    \u002F\u002F姓名设置可读可写\n    void setName(string name) {\n        m_Name = name;\n    }\n    string getName()\n    {\n        return m_Name;\n    }\n\n\n    \u002F\u002F获取年龄 \n    int getAge() {\n        return m_Age;\n    }\n    \u002F\u002F设置年龄\n    void setAge(int age) {\n        if (age \u003C 0 || age > 150) {\n            cout \u003C\u003C \"你个老妖精!\" \u003C\u003C endl;\n            return;\n        }\n        m_Age = age;\n    }\n\n    \u002F\u002F情人设置为只写\n    void setLover(string lover) {\n        m_Lover = lover;\n    }\n\nprivate:\n    string m_Name; \u002F\u002F可读可写  姓名\n    \n    int m_Age; \u002F\u002F只读  年龄\n\n    string m_Lover; \u002F\u002F只写  情人\n};\n\nint main() {\n\n    Person p;\n    \u002F\u002F姓名设置\n    p.setName(\"张三\");\n    cout \u003C\u003C \"姓名： \" \u003C\u003C p.getName() \u003C\u003C endl;\n\n    \u002F\u002F年龄设置\n    p.setAge(50);\n    cout \u003C\u003C \"年龄： \" \u003C\u003C p.getAge() \u003C\u003C endl;\n\n    \u002F\u002F情人设置\n    p.setLover(\"苍井\");\n    \u002F\u002Fcout \u003C\u003C \"情人： \" \u003C\u003C p.m_Lover \u003C\u003C endl;  \u002F\u002F只写属性，不可以读取\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,32013,32014,32023,32027,32031,32036,32050,32059,32063,32073,32077,32084,32088,32092,32096,32101,32110,32117,32121,32126,32142,32165,32178,32185,32189,32198,32202,32206,32211,32227,32237,32241,32245,32249,32257,32261,32271,32275,32283,32287,32291,32299,32303,32307,32312,32325,32348,32352,32357,32370,32392,32396,32401,32415,32423,32427,32437,32441,32449],{"__ignoreMap":32},[460,32015,32016,32018,32021],{"class":462,"line":463},[460,32017,31148],{"class":887},[460,32019,32020],{"class":929}," Person",[460,32022,1348],{"class":466},[460,32024,32025],{"class":462,"line":476},[460,32026,31170],{"class":887},[460,32028,32029],{"class":462,"line":482},[460,32030,522],{"emptyLinePlaceholder":521},[460,32032,32033],{"class":462,"line":488},[460,32034,32035],{"class":942},"    \u002F\u002F姓名设置可读可写\n",[460,32037,32038,32040,32042,32044,32046,32048],{"class":462,"line":494},[460,32039,31362],{"class":887},[460,32041,31365],{"class":929},[460,32043,2174],{"class":466},[460,32045,31370],{"class":929},[460,32047,1908],{"class":3380},[460,32049,2180],{"class":466},[460,32051,32052,32054,32056],{"class":462,"line":500},[460,32053,31705],{"class":466},[460,32055,894],{"class":887},[460,32057,32058],{"class":466}," name;\n",[460,32060,32061],{"class":462,"line":506},[460,32062,509],{"class":466},[460,32064,32065,32068,32071],{"class":462,"line":512},[460,32066,32067],{"class":929},"    string",[460,32069,32070],{"class":929}," getName",[460,32072,10758],{"class":466},[460,32074,32075],{"class":462,"line":518},[460,32076,18570],{"class":466},[460,32078,32079,32081],{"class":462,"line":525},[460,32080,31206],{"class":887},[460,32082,32083],{"class":466}," m_Name;\n",[460,32085,32086],{"class":462,"line":531},[460,32087,509],{"class":466},[460,32089,32090],{"class":462,"line":537},[460,32091,522],{"emptyLinePlaceholder":521},[460,32093,32094],{"class":462,"line":543},[460,32095,522],{"emptyLinePlaceholder":521},[460,32097,32098],{"class":462,"line":549},[460,32099,32100],{"class":942},"    \u002F\u002F获取年龄 \n",[460,32102,32103,32105,32108],{"class":462,"line":555},[460,32104,18525],{"class":887},[460,32106,32107],{"class":929}," getAge",[460,32109,11374],{"class":466},[460,32111,32112,32114],{"class":462,"line":560},[460,32113,31206],{"class":887},[460,32115,32116],{"class":466}," m_Age;\n",[460,32118,32119],{"class":462,"line":566},[460,32120,509],{"class":466},[460,32122,32123],{"class":462,"line":572},[460,32124,32125],{"class":942},"    \u002F\u002F设置年龄\n",[460,32127,32128,32130,32133,32135,32137,32140],{"class":462,"line":578},[460,32129,31362],{"class":887},[460,32131,32132],{"class":929}," setAge",[460,32134,2174],{"class":466},[460,32136,16759],{"class":887},[460,32138,32139],{"class":3380}," age",[460,32141,2180],{"class":466},[460,32143,32144,32146,32149,32151,32153,32155,32158,32160,32163],{"class":462,"line":812},[460,32145,3702],{"class":887},[460,32147,32148],{"class":466}," (age ",[460,32150,781],{"class":887},[460,32152,2224],{"class":900},[460,32154,19776],{"class":887},[460,32156,32157],{"class":466}," age ",[460,32159,17668],{"class":887},[460,32161,32162],{"class":900}," 150",[460,32164,2180],{"class":466},[460,32166,32167,32169,32171,32174,32176],{"class":462,"line":818},[460,32168,26202],{"class":466},[460,32170,17750],{"class":887},[460,32172,32173],{"class":1353}," \"你个老妖精!\"",[460,32175,18014],{"class":887},[460,32177,25327],{"class":466},[460,32179,32180,32183],{"class":462,"line":824},[460,32181,32182],{"class":887},"            return",[460,32184,1966],{"class":466},[460,32186,32187],{"class":462,"line":2074},[460,32188,3858],{"class":466},[460,32190,32191,32194,32196],{"class":462,"line":2088},[460,32192,32193],{"class":466},"        m_Age ",[460,32195,894],{"class":887},[460,32197,24294],{"class":466},[460,32199,32200],{"class":462,"line":2103},[460,32201,509],{"class":466},[460,32203,32204],{"class":462,"line":2122},[460,32205,522],{"emptyLinePlaceholder":521},[460,32207,32208],{"class":462,"line":2144},[460,32209,32210],{"class":942},"    \u002F\u002F情人设置为只写\n",[460,32212,32213,32215,32218,32220,32222,32225],{"class":462,"line":2158},[460,32214,31362],{"class":887},[460,32216,32217],{"class":929}," setLover",[460,32219,2174],{"class":466},[460,32221,31370],{"class":929},[460,32223,32224],{"class":3380}," lover",[460,32226,2180],{"class":466},[460,32228,32229,32232,32234],{"class":462,"line":2163},[460,32230,32231],{"class":466},"        m_Lover ",[460,32233,894],{"class":887},[460,32235,32236],{"class":466}," lover;\n",[460,32238,32239],{"class":462,"line":2168},[460,32240,509],{"class":466},[460,32242,32243],{"class":462,"line":2183},[460,32244,522],{"emptyLinePlaceholder":521},[460,32246,32247],{"class":462,"line":2194},[460,32248,31673],{"class":887},[460,32250,32251,32254],{"class":462,"line":2199},[460,32252,32253],{"class":466},"    string m_Name;",[460,32255,32256],{"class":942}," \u002F\u002F可读可写  姓名\n",[460,32258,32259],{"class":462,"line":2204},[460,32260,29667],{"class":466},[460,32262,32263,32265,32268],{"class":462,"line":2212},[460,32264,18525],{"class":887},[460,32266,32267],{"class":466}," m_Age;",[460,32269,32270],{"class":942}," \u002F\u002F只读  年龄\n",[460,32272,32273],{"class":462,"line":2257},[460,32274,522],{"emptyLinePlaceholder":521},[460,32276,32277,32280],{"class":462,"line":2285},[460,32278,32279],{"class":466},"    string m_Lover;",[460,32281,32282],{"class":942}," \u002F\u002F只写  情人\n",[460,32284,32285],{"class":462,"line":2298},[460,32286,20510],{"class":466},[460,32288,32289],{"class":462,"line":2303},[460,32290,522],{"emptyLinePlaceholder":521},[460,32292,32293,32295,32297],{"class":462,"line":2308},[460,32294,16759],{"class":887},[460,32296,18514],{"class":929},[460,32298,11374],{"class":466},[460,32300,32301],{"class":462,"line":2318},[460,32302,522],{"emptyLinePlaceholder":521},[460,32304,32305],{"class":462,"line":2333},[460,32306,31764],{"class":466},[460,32308,32309],{"class":462,"line":2338},[460,32310,32311],{"class":942},"    \u002F\u002F姓名设置\n",[460,32313,32314,32317,32319,32321,32323],{"class":462,"line":2343},[460,32315,32316],{"class":466},"    p.",[460,32318,31517],{"class":929},[460,32320,2174],{"class":466},[460,32322,24413],{"class":1353},[460,32324,2254],{"class":466},[460,32326,32327,32329,32331,32334,32336,32339,32342,32344,32346],{"class":462,"line":2353},[460,32328,23029],{"class":466},[460,32330,17750],{"class":887},[460,32332,32333],{"class":1353}," \"姓名： \"",[460,32335,18014],{"class":887},[460,32337,32338],{"class":466}," p.",[460,32340,32341],{"class":929},"getName",[460,32343,14546],{"class":466},[460,32345,17750],{"class":887},[460,32347,25327],{"class":466},[460,32349,32350],{"class":462,"line":2368},[460,32351,522],{"emptyLinePlaceholder":521},[460,32353,32354],{"class":462,"line":2381},[460,32355,32356],{"class":942},"    \u002F\u002F年龄设置\n",[460,32358,32359,32361,32364,32366,32368],{"class":462,"line":2394},[460,32360,32316],{"class":466},[460,32362,32363],{"class":929},"setAge",[460,32365,2174],{"class":466},[460,32367,2549],{"class":900},[460,32369,2254],{"class":466},[460,32371,32372,32374,32376,32379,32381,32383,32386,32388,32390],{"class":462,"line":2399},[460,32373,23029],{"class":466},[460,32375,17750],{"class":887},[460,32377,32378],{"class":1353}," \"年龄： \"",[460,32380,18014],{"class":887},[460,32382,32338],{"class":466},[460,32384,32385],{"class":929},"getAge",[460,32387,14546],{"class":466},[460,32389,17750],{"class":887},[460,32391,25327],{"class":466},[460,32393,32394],{"class":462,"line":2404},[460,32395,522],{"emptyLinePlaceholder":521},[460,32397,32398],{"class":462,"line":2414},[460,32399,32400],{"class":942},"    \u002F\u002F情人设置\n",[460,32402,32403,32405,32408,32410,32413],{"class":462,"line":2428},[460,32404,32316],{"class":466},[460,32406,32407],{"class":929},"setLover",[460,32409,2174],{"class":466},[460,32411,32412],{"class":1353},"\"苍井\"",[460,32414,2254],{"class":466},[460,32416,32417,32420],{"class":462,"line":2440},[460,32418,32419],{"class":942},"    \u002F\u002Fcout \u003C\u003C \"情人： \" \u003C\u003C p.m_Lover \u003C\u003C endl;",[460,32421,32422],{"class":942},"  \u002F\u002F只写属性，不可以读取\n",[460,32424,32425],{"class":462,"line":2445},[460,32426,522],{"emptyLinePlaceholder":521},[460,32428,32429,32431,32433,32435],{"class":462,"line":2450},[460,32430,18839],{"class":929},[460,32432,2174],{"class":466},[460,32434,18844],{"class":1353},[460,32436,2254],{"class":466},[460,32438,32439],{"class":462,"line":2460},[460,32440,522],{"emptyLinePlaceholder":521},[460,32442,32443,32445,32447],{"class":462,"line":2473},[460,32444,20605],{"class":887},[460,32446,2224],{"class":900},[460,32448,1966],{"class":466},[460,32450,32451],{"class":462,"line":2487},[460,32452,821],{"class":466},[23,32454,32456],{"id":32455},"_814封装案例","8.1.4封装案例",[103,32458,32459],{},[43,32460,32461,32464],{},[3944,32462,32463],{},"练习案例1：设计立方体类","\n设计立方体类(Cube)",[40,32466,32467,32470],{},[43,32468,32469],{},"求出立方体的面积和体积",[43,32471,32472],{},"分别用全局函数和成员函数判断两个立方体是否相等。",[451,32474,32476],{"className":16745,"code":32475,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nclass Cube\n{\npublic:\n    \u002F\u002F输入长宽高\n    void setLwh(int l,int w,int h)\n    {\n        m_L=l;\n        m_W=w;\n        m_H=h;\n    }\n    int mianji()\n    {\n        return 2*(m_L*m_W + m_L*m_H + m_W*m_H);\n    }\n    int tiji()\n    {\n        return m_L*m_W*m_H;\n    }\n    \u002F\u002F获取长宽高\n    int getLength()\n    {\n        return m_L;\n    }\n    int getWidth()\n    {\n        return m_W;\n    }\n    int getHeight()\n    {\n        return m_H;\n    }\n    \u002F\u002F成员函数判断两个立方体是否相等\n    bool isEqual(Cube c)\n    {\n        if (c.getLength() == m_L && c.getWidth() == m_W && c.getHeight() == m_H)\n        {\n            return true;\n        }\n        else\n        {\n            return false;\n        }\n    }\n    \u002F\u002F私有属性\nprivate:\n    int m_L;\n    int m_W;\n    int m_H;\n\n};\n\u002F\u002F全局函数判断两个立方体是否相等\nbool isEqual(Cube c1,Cube c2)\n{\n    return (c1.getLength() == c2.getLength()) && (c1.getWidth() == c2.getWidth()) && (c1.getHeight() == c2.getHeight());\n}\nint main()\n{\n    Cube c1;\n    \u002F\u002F输入立方体的长宽高\n    cout\u003C\u003C\"请输入第一个立方体的长、宽、高：\"\u003C\u003Cendl;\n    int l,w,h,l1,w1,h1;\n    cin>>l>>w>>h;\n    c1.setLwh(l,w,h);\n    \u002F\u002F面积\n    cout\u003C\u003C\"立方体的表面积为：\"\u003C\u003Cc1.mianji()\u003C\u003Cendl;\n    \u002F\u002F体积\n    cout\u003C\u003C\"立方体的体积为：\"\u003C\u003Cc1.tiji()\u003C\u003Cendl;\n    cout\u003C\u003C\"请输入第二个立方体的长、宽、高：\"\u003C\u003Cendl;\n    cin>>l1>>w1>>h1;\n    Cube c2;\n    c2.setLwh(l1,w1,h1);\n    cout\u003C\u003C\"第二个立方体的表面积为：\"\u003C\u003Cc2.mianji()\u003C\u003Cendl;\n    cout\u003C\u003C\"第二个立方体的体积为：\"\u003C\u003Cc2.tiji()\u003C\u003Cendl;\n\n    \u002F\u002F判断两个立方体的表面积和体积是否相等\n    cout\u003C\u003C\"内部函数判断结果：\"\u003C\u003Cendl;\n    if (c1.isEqual(c2))\n    {\n        cout\u003C\u003C\"两个立方体相等\"\u003C\u003Cendl;\n    }\n    else\n    {\n        cout\u003C\u003C\"两个立方体不相等\"\u003C\u003Cendl;\n    }\n\n    cout\u003C\u003C\"全局函数判断结果：\"\u003C\u003Cendl;\n    if (isEqual(c1, c2))\n    {\n        cout\u003C\u003C\"两个立方体相等\"\u003C\u003Cendl;\n    }\n    else\n    {\n        cout\u003C\u003C\"两个立方体不相等\"\u003C\u003Cendl;\n    }\n}\n",[457,32477,32478,32484,32494,32501,32505,32509,32514,32544,32548,32558,32568,32578,32582,32591,32595,32631,32635,32644,32648,32664,32668,32673,32682,32686,32693,32697,32706,32710,32717,32721,32730,32734,32741,32745,32750,32767,32771,32817,32821,32830,32834,32838,32842,32851,32855,32859,32864,32868,32874,32880,32886,32890,32894,32899,32921,32925,32979,32983,32991,32995,33000,33005,33018,33025,33041,33052,33057,33079,33084,33106,33119,33138,33143,33153,33175,33196,33200,33205,33218,33230,33234,33247,33251,33256,33260,33273,33277,33281,33294,33305,33309,33321,33325,33329,33333,33345,33349],{"__ignoreMap":32},[460,32479,32480,32482],{"class":462,"line":463},[460,32481,18491],{"class":887},[460,32483,18494],{"class":1353},[460,32485,32486,32488,32490,32492],{"class":462,"line":476},[460,32487,18499],{"class":887},[460,32489,18502],{"class":887},[460,32491,18505],{"class":929},[460,32493,1966],{"class":466},[460,32495,32496,32498],{"class":462,"line":482},[460,32497,31148],{"class":887},[460,32499,32500],{"class":929}," Cube\n",[460,32502,32503],{"class":462,"line":488},[460,32504,18115],{"class":466},[460,32506,32507],{"class":462,"line":494},[460,32508,31170],{"class":887},[460,32510,32511],{"class":462,"line":500},[460,32512,32513],{"class":942},"    \u002F\u002F输入长宽高\n",[460,32515,32516,32518,32521,32523,32525,32528,32530,32532,32535,32537,32539,32542],{"class":462,"line":506},[460,32517,31362],{"class":887},[460,32519,32520],{"class":929}," setLwh",[460,32522,2174],{"class":466},[460,32524,16759],{"class":887},[460,32526,32527],{"class":3380}," l",[460,32529,3986],{"class":466},[460,32531,16759],{"class":887},[460,32533,32534],{"class":3380}," w",[460,32536,3986],{"class":466},[460,32538,16759],{"class":887},[460,32540,32541],{"class":3380}," h",[460,32543,3754],{"class":466},[460,32545,32546],{"class":462,"line":512},[460,32547,18570],{"class":466},[460,32549,32550,32553,32555],{"class":462,"line":518},[460,32551,32552],{"class":466},"        m_L",[460,32554,894],{"class":887},[460,32556,32557],{"class":466},"l;\n",[460,32559,32560,32563,32565],{"class":462,"line":525},[460,32561,32562],{"class":466},"        m_W",[460,32564,894],{"class":887},[460,32566,32567],{"class":466},"w;\n",[460,32569,32570,32573,32575],{"class":462,"line":531},[460,32571,32572],{"class":466},"        m_H",[460,32574,894],{"class":887},[460,32576,32577],{"class":466},"h;\n",[460,32579,32580],{"class":462,"line":537},[460,32581,509],{"class":466},[460,32583,32584,32586,32589],{"class":462,"line":543},[460,32585,18525],{"class":887},[460,32587,32588],{"class":929}," mianji",[460,32590,10758],{"class":466},[460,32592,32593],{"class":462,"line":549},[460,32594,18570],{"class":466},[460,32596,32597,32599,32601,32603,32606,32608,32611,32613,32616,32618,32621,32623,32626,32628],{"class":462,"line":555},[460,32598,31206],{"class":887},[460,32600,1442],{"class":900},[460,32602,8320],{"class":887},[460,32604,32605],{"class":466},"(m_L",[460,32607,8320],{"class":887},[460,32609,32610],{"class":466},"m_W ",[460,32612,8495],{"class":887},[460,32614,32615],{"class":466}," m_L",[460,32617,8320],{"class":887},[460,32619,32620],{"class":466},"m_H ",[460,32622,8495],{"class":887},[460,32624,32625],{"class":466}," m_W",[460,32627,8320],{"class":887},[460,32629,32630],{"class":466},"m_H);\n",[460,32632,32633],{"class":462,"line":560},[460,32634,509],{"class":466},[460,32636,32637,32639,32642],{"class":462,"line":566},[460,32638,18525],{"class":887},[460,32640,32641],{"class":929}," tiji",[460,32643,10758],{"class":466},[460,32645,32646],{"class":462,"line":572},[460,32647,18570],{"class":466},[460,32649,32650,32652,32654,32656,32659,32661],{"class":462,"line":578},[460,32651,31206],{"class":887},[460,32653,32615],{"class":466},[460,32655,8320],{"class":887},[460,32657,32658],{"class":466},"m_W",[460,32660,8320],{"class":887},[460,32662,32663],{"class":466},"m_H;\n",[460,32665,32666],{"class":462,"line":812},[460,32667,509],{"class":466},[460,32669,32670],{"class":462,"line":818},[460,32671,32672],{"class":942},"    \u002F\u002F获取长宽高\n",[460,32674,32675,32677,32680],{"class":462,"line":824},[460,32676,18525],{"class":887},[460,32678,32679],{"class":929}," getLength",[460,32681,10758],{"class":466},[460,32683,32684],{"class":462,"line":2074},[460,32685,18570],{"class":466},[460,32687,32688,32690],{"class":462,"line":2088},[460,32689,31206],{"class":887},[460,32691,32692],{"class":466}," m_L;\n",[460,32694,32695],{"class":462,"line":2103},[460,32696,509],{"class":466},[460,32698,32699,32701,32704],{"class":462,"line":2122},[460,32700,18525],{"class":887},[460,32702,32703],{"class":929}," getWidth",[460,32705,10758],{"class":466},[460,32707,32708],{"class":462,"line":2144},[460,32709,18570],{"class":466},[460,32711,32712,32714],{"class":462,"line":2158},[460,32713,31206],{"class":887},[460,32715,32716],{"class":466}," m_W;\n",[460,32718,32719],{"class":462,"line":2163},[460,32720,509],{"class":466},[460,32722,32723,32725,32728],{"class":462,"line":2168},[460,32724,18525],{"class":887},[460,32726,32727],{"class":929}," getHeight",[460,32729,10758],{"class":466},[460,32731,32732],{"class":462,"line":2183},[460,32733,18570],{"class":466},[460,32735,32736,32738],{"class":462,"line":2194},[460,32737,31206],{"class":887},[460,32739,32740],{"class":466}," m_H;\n",[460,32742,32743],{"class":462,"line":2199},[460,32744,509],{"class":466},[460,32746,32747],{"class":462,"line":2204},[460,32748,32749],{"class":942},"    \u002F\u002F成员函数判断两个立方体是否相等\n",[460,32751,32752,32755,32758,32760,32763,32765],{"class":462,"line":2212},[460,32753,32754],{"class":887},"    bool",[460,32756,32757],{"class":929}," isEqual",[460,32759,2174],{"class":466},[460,32761,32762],{"class":929},"Cube",[460,32764,19371],{"class":3380},[460,32766,3754],{"class":466},[460,32768,32769],{"class":462,"line":2257},[460,32770,18570],{"class":466},[460,32772,32773,32775,32778,32781,32783,32785,32788,32790,32793,32796,32798,32800,32803,32805,32807,32810,32812,32814],{"class":462,"line":2285},[460,32774,3702],{"class":887},[460,32776,32777],{"class":466}," (c.",[460,32779,32780],{"class":929},"getLength",[460,32782,14546],{"class":466},[460,32784,19471],{"class":887},[460,32786,32787],{"class":466}," m_L ",[460,32789,10749],{"class":887},[460,32791,32792],{"class":466}," c.",[460,32794,32795],{"class":929},"getWidth",[460,32797,14546],{"class":466},[460,32799,19471],{"class":887},[460,32801,32802],{"class":466}," m_W ",[460,32804,10749],{"class":887},[460,32806,32792],{"class":466},[460,32808,32809],{"class":929},"getHeight",[460,32811,14546],{"class":466},[460,32813,19471],{"class":887},[460,32815,32816],{"class":466}," m_H)\n",[460,32818,32819],{"class":462,"line":2298},[460,32820,1390],{"class":466},[460,32822,32823,32825,32828],{"class":462,"line":2303},[460,32824,32182],{"class":887},[460,32826,32827],{"class":900}," true",[460,32829,1966],{"class":466},[460,32831,32832],{"class":462,"line":2308},[460,32833,3858],{"class":466},[460,32835,32836],{"class":462,"line":2318},[460,32837,19101],{"class":887},[460,32839,32840],{"class":462,"line":2333},[460,32841,1390],{"class":466},[460,32843,32844,32846,32849],{"class":462,"line":2338},[460,32845,32182],{"class":887},[460,32847,32848],{"class":900}," false",[460,32850,1966],{"class":466},[460,32852,32853],{"class":462,"line":2343},[460,32854,3858],{"class":466},[460,32856,32857],{"class":462,"line":2353},[460,32858,509],{"class":466},[460,32860,32861],{"class":462,"line":2368},[460,32862,32863],{"class":942},"    \u002F\u002F私有属性\n",[460,32865,32866],{"class":462,"line":2381},[460,32867,31673],{"class":887},[460,32869,32870,32872],{"class":462,"line":2394},[460,32871,18525],{"class":887},[460,32873,32692],{"class":466},[460,32875,32876,32878],{"class":462,"line":2399},[460,32877,18525],{"class":887},[460,32879,32716],{"class":466},[460,32881,32882,32884],{"class":462,"line":2404},[460,32883,18525],{"class":887},[460,32885,32740],{"class":466},[460,32887,32888],{"class":462,"line":2414},[460,32889,522],{"emptyLinePlaceholder":521},[460,32891,32892],{"class":462,"line":2428},[460,32893,20510],{"class":466},[460,32895,32896],{"class":462,"line":2440},[460,32897,32898],{"class":942},"\u002F\u002F全局函数判断两个立方体是否相等\n",[460,32900,32901,32903,32905,32907,32909,32912,32914,32916,32919],{"class":462,"line":2445},[460,32902,17926],{"class":887},[460,32904,32757],{"class":929},[460,32906,2174],{"class":466},[460,32908,32762],{"class":929},[460,32910,32911],{"class":3380}," c1",[460,32913,3986],{"class":466},[460,32915,32762],{"class":929},[460,32917,32918],{"class":3380}," c2",[460,32920,3754],{"class":466},[460,32922,32923],{"class":462,"line":2450},[460,32924,18115],{"class":466},[460,32926,32927,32929,32932,32934,32936,32938,32941,32943,32946,32948,32950,32952,32954,32956,32958,32960,32962,32964,32966,32968,32970,32972,32974,32976],{"class":462,"line":2460},[460,32928,20605],{"class":887},[460,32930,32931],{"class":466}," (c1.",[460,32933,32780],{"class":929},[460,32935,14546],{"class":466},[460,32937,19471],{"class":887},[460,32939,32940],{"class":466}," c2.",[460,32942,32780],{"class":929},[460,32944,32945],{"class":466},"()) ",[460,32947,10749],{"class":887},[460,32949,32931],{"class":466},[460,32951,32795],{"class":929},[460,32953,14546],{"class":466},[460,32955,19471],{"class":887},[460,32957,32940],{"class":466},[460,32959,32795],{"class":929},[460,32961,32945],{"class":466},[460,32963,10749],{"class":887},[460,32965,32931],{"class":466},[460,32967,32809],{"class":929},[460,32969,14546],{"class":466},[460,32971,19471],{"class":887},[460,32973,32940],{"class":466},[460,32975,32809],{"class":929},[460,32977,32978],{"class":466},"());\n",[460,32980,32981],{"class":462,"line":2473},[460,32982,821],{"class":466},[460,32984,32985,32987,32989],{"class":462,"line":2487},[460,32986,16759],{"class":887},[460,32988,18514],{"class":929},[460,32990,10758],{"class":466},[460,32992,32993],{"class":462,"line":2492},[460,32994,18115],{"class":466},[460,32996,32997],{"class":462,"line":2497},[460,32998,32999],{"class":466},"    Cube c1;\n",[460,33001,33002],{"class":462,"line":2505},[460,33003,33004],{"class":942},"    \u002F\u002F输入立方体的长宽高\n",[460,33006,33007,33009,33011,33014,33016],{"class":462,"line":2516},[460,33008,18120],{"class":466},[460,33010,17750],{"class":887},[460,33012,33013],{"class":1353},"\"请输入第一个立方体的长、宽、高：\"",[460,33015,17750],{"class":887},[460,33017,17772],{"class":466},[460,33019,33020,33022],{"class":462,"line":2529},[460,33021,18525],{"class":887},[460,33023,33024],{"class":466}," l,w,h,l1,w1,h1;\n",[460,33026,33027,33029,33031,33033,33035,33037,33039],{"class":462,"line":2542},[460,33028,18552],{"class":466},[460,33030,17999],{"class":887},[460,33032,17245],{"class":466},[460,33034,17999],{"class":887},[460,33036,17510],{"class":466},[460,33038,17999],{"class":887},[460,33040,32577],{"class":466},[460,33042,33043,33046,33049],{"class":462,"line":2559},[460,33044,33045],{"class":466},"    c1.",[460,33047,33048],{"class":929},"setLwh",[460,33050,33051],{"class":466},"(l,w,h);\n",[460,33053,33054],{"class":462,"line":2564},[460,33055,33056],{"class":942},"    \u002F\u002F面积\n",[460,33058,33059,33061,33063,33066,33068,33070,33073,33075,33077],{"class":462,"line":2569},[460,33060,18120],{"class":466},[460,33062,17750],{"class":887},[460,33064,33065],{"class":1353},"\"立方体的表面积为：\"",[460,33067,17750],{"class":887},[460,33069,31283],{"class":466},[460,33071,33072],{"class":929},"mianji",[460,33074,18961],{"class":466},[460,33076,17750],{"class":887},[460,33078,17772],{"class":466},[460,33080,33081],{"class":462,"line":2579},[460,33082,33083],{"class":942},"    \u002F\u002F体积\n",[460,33085,33086,33088,33090,33093,33095,33097,33100,33102,33104],{"class":462,"line":2597},[460,33087,18120],{"class":466},[460,33089,17750],{"class":887},[460,33091,33092],{"class":1353},"\"立方体的体积为：\"",[460,33094,17750],{"class":887},[460,33096,31283],{"class":466},[460,33098,33099],{"class":929},"tiji",[460,33101,18961],{"class":466},[460,33103,17750],{"class":887},[460,33105,17772],{"class":466},[460,33107,33108,33110,33112,33115,33117],{"class":462,"line":2610},[460,33109,18120],{"class":466},[460,33111,17750],{"class":887},[460,33113,33114],{"class":1353},"\"请输入第二个立方体的长、宽、高：\"",[460,33116,17750],{"class":887},[460,33118,17772],{"class":466},[460,33120,33121,33123,33125,33128,33130,33133,33135],{"class":462,"line":2621},[460,33122,18552],{"class":466},[460,33124,17999],{"class":887},[460,33126,33127],{"class":466},"l1",[460,33129,17999],{"class":887},[460,33131,33132],{"class":466},"w1",[460,33134,17999],{"class":887},[460,33136,33137],{"class":466},"h1;\n",[460,33139,33140],{"class":462,"line":2634},[460,33141,33142],{"class":466},"    Cube c2;\n",[460,33144,33145,33148,33150],{"class":462,"line":2648},[460,33146,33147],{"class":466},"    c2.",[460,33149,33048],{"class":929},[460,33151,33152],{"class":466},"(l1,w1,h1);\n",[460,33154,33155,33157,33159,33162,33164,33167,33169,33171,33173],{"class":462,"line":2653},[460,33156,18120],{"class":466},[460,33158,17750],{"class":887},[460,33160,33161],{"class":1353},"\"第二个立方体的表面积为：\"",[460,33163,17750],{"class":887},[460,33165,33166],{"class":466},"c2.",[460,33168,33072],{"class":929},[460,33170,18961],{"class":466},[460,33172,17750],{"class":887},[460,33174,17772],{"class":466},[460,33176,33177,33179,33181,33184,33186,33188,33190,33192,33194],{"class":462,"line":2658},[460,33178,18120],{"class":466},[460,33180,17750],{"class":887},[460,33182,33183],{"class":1353},"\"第二个立方体的体积为：\"",[460,33185,17750],{"class":887},[460,33187,33166],{"class":466},[460,33189,33099],{"class":929},[460,33191,18961],{"class":466},[460,33193,17750],{"class":887},[460,33195,17772],{"class":466},[460,33197,33198],{"class":462,"line":2670},[460,33199,522],{"emptyLinePlaceholder":521},[460,33201,33202],{"class":462,"line":2683},[460,33203,33204],{"class":942},"    \u002F\u002F判断两个立方体的表面积和体积是否相等\n",[460,33206,33207,33209,33211,33214,33216],{"class":462,"line":2695},[460,33208,18120],{"class":466},[460,33210,17750],{"class":887},[460,33212,33213],{"class":1353},"\"内部函数判断结果：\"",[460,33215,17750],{"class":887},[460,33217,17772],{"class":466},[460,33219,33220,33222,33224,33227],{"class":462,"line":2700},[460,33221,19622],{"class":887},[460,33223,32931],{"class":466},[460,33225,33226],{"class":929},"isEqual",[460,33228,33229],{"class":466},"(c2))\n",[460,33231,33232],{"class":462,"line":2709},[460,33233,18570],{"class":466},[460,33235,33236,33238,33240,33243,33245],{"class":462,"line":2718},[460,33237,19972],{"class":466},[460,33239,17750],{"class":887},[460,33241,33242],{"class":1353},"\"两个立方体相等\"",[460,33244,17750],{"class":887},[460,33246,17772],{"class":466},[460,33248,33249],{"class":462,"line":2723},[460,33250,509],{"class":466},[460,33252,33253],{"class":462,"line":2732},[460,33254,33255],{"class":887},"    else\n",[460,33257,33258],{"class":462,"line":2750},[460,33259,18570],{"class":466},[460,33261,33262,33264,33266,33269,33271],{"class":462,"line":2782},[460,33263,19972],{"class":466},[460,33265,17750],{"class":887},[460,33267,33268],{"class":1353},"\"两个立方体不相等\"",[460,33270,17750],{"class":887},[460,33272,17772],{"class":466},[460,33274,33275],{"class":462,"line":2809},[460,33276,509],{"class":466},[460,33278,33279],{"class":462,"line":2836},[460,33280,522],{"emptyLinePlaceholder":521},[460,33282,33283,33285,33287,33290,33292],{"class":462,"line":2856},[460,33284,18120],{"class":466},[460,33286,17750],{"class":887},[460,33288,33289],{"class":1353},"\"全局函数判断结果：\"",[460,33291,17750],{"class":887},[460,33293,17772],{"class":466},[460,33295,33296,33298,33300,33302],{"class":462,"line":2865},[460,33297,19622],{"class":887},[460,33299,11704],{"class":466},[460,33301,33226],{"class":929},[460,33303,33304],{"class":466},"(c1, c2))\n",[460,33306,33307],{"class":462,"line":2881},[460,33308,18570],{"class":466},[460,33310,33311,33313,33315,33317,33319],{"class":462,"line":2887},[460,33312,19972],{"class":466},[460,33314,17750],{"class":887},[460,33316,33242],{"class":1353},[460,33318,17750],{"class":887},[460,33320,17772],{"class":466},[460,33322,33323],{"class":462,"line":2893},[460,33324,509],{"class":466},[460,33326,33327],{"class":462,"line":2899},[460,33328,33255],{"class":887},[460,33330,33331],{"class":462,"line":2905},[460,33332,18570],{"class":466},[460,33334,33335,33337,33339,33341,33343],{"class":462,"line":2911},[460,33336,19972],{"class":466},[460,33338,17750],{"class":887},[460,33340,33268],{"class":1353},[460,33342,17750],{"class":887},[460,33344,17772],{"class":466},[460,33346,33347],{"class":462,"line":2920},[460,33348,509],{"class":466},[460,33350,33351],{"class":462,"line":2929},[460,33352,821],{"class":466},[103,33354,33355],{"start":476},[43,33356,33357],{},[3944,33358,33359],{},"练习案例2：点和圆的关系",[40,33361,33362],{},[43,33363,33364],{},"设计一个圆形类（Circle），和一个点类（Point），计算点和圆的关系。",[451,33366,33368],{"className":16745,"code":33367,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Ccmath>\nclass Point\n{\npublic:\n    \u002F\u002F赋值\n    void setPoint(double x, double y) { m_x = x; m_y = y; }\n    \u002F\u002F获取坐标\n    double getX() { return m_x; }\n    double getY() { return m_y; }\n\nprivate:\n    double m_x;\n    double m_y;\n};\nclass Circle\n{\npublic:\n    \u002F\u002F赋值\n    void setRadius(double r) { m_r = r; }\n    void setCenter(Point center) { m_center = center; }\n    \u002F\u002F获取属性\n    double getRadius() { return m_r; }\n    Point getCenter() { return m_center; }\n\nprivate:\n    double m_r;\n    \u002F\u002F在类中可以让另一个类作为本来的成员\n    Point m_center;\n};\nvoid isInCircle(Circle &c,Point &p)\n{\n    double dx = c.getCenter().getX() - p.getX();\n    double dy = c.getCenter().getY() - p.getY();\n    double distance = sqrt(dx * dx + dy * dy);\n    if (distance \u003C c.getRadius())\n    {\n        cout \u003C\u003C \"点在圆内\" \u003C\u003C endl;\n    }\n    else\n    {\n        cout \u003C\u003C \"点在圆外\" \u003C\u003C endl;\n    }\n}\nint main()\n{\n    \u002F\u002F实例化\n    Circle c1;\n    Point p1;\n    \u002F\u002F赋值\n    cout\u003C\u003C\"请输入圆的半径：\";\n    double r;\n    cin>>r;\n    c1.setRadius(r);\n    cout\u003C\u003C\"请输入圆心坐标：\";\n    double x, y;\n    cin>>x>>y;\n    p1.setPoint(x, y);\n    c1.setCenter(p1);\n    cout\u003C\u003C\"请输入测试点坐标：\";\n    double x1, y1;\n    cin>>x1>>y1;\n    Point p2;\n    p2.setPoint(x1, y1);\n    isInCircle(c1, p2);\n}\n",[457,33369,33370,33376,33386,33393,33400,33404,33408,33413,33447,33452,33468,33482,33486,33490,33497,33504,33508,33514,33518,33522,33526,33548,33571,33576,33590,33605,33609,33613,33619,33624,33629,33633,33659,33663,33692,33720,33748,33765,33769,33782,33786,33790,33794,33807,33811,33815,33823,33827,33831,33835,33840,33844,33855,33862,33871,33881,33892,33899,33912,33923,33933,33944,33951,33965,33970,33980,33988],{"__ignoreMap":32},[460,33371,33372,33374],{"class":462,"line":463},[460,33373,18491],{"class":887},[460,33375,18494],{"class":1353},[460,33377,33378,33380,33382,33384],{"class":462,"line":476},[460,33379,18499],{"class":887},[460,33381,18502],{"class":887},[460,33383,18505],{"class":929},[460,33385,1966],{"class":466},[460,33387,33388,33390],{"class":462,"line":482},[460,33389,18491],{"class":887},[460,33391,33392],{"class":1353},"\u003Ccmath>\n",[460,33394,33395,33397],{"class":462,"line":488},[460,33396,31148],{"class":887},[460,33398,33399],{"class":929}," Point\n",[460,33401,33402],{"class":462,"line":494},[460,33403,18115],{"class":466},[460,33405,33406],{"class":462,"line":500},[460,33407,31170],{"class":887},[460,33409,33410],{"class":462,"line":506},[460,33411,33412],{"class":942},"    \u002F\u002F赋值\n",[460,33414,33415,33417,33420,33422,33424,33427,33429,33431,33434,33437,33439,33442,33444],{"class":462,"line":512},[460,33416,31362],{"class":887},[460,33418,33419],{"class":929}," setPoint",[460,33421,2174],{"class":466},[460,33423,30491],{"class":887},[460,33425,33426],{"class":3380}," x",[460,33428,904],{"class":466},[460,33430,30491],{"class":887},[460,33432,33433],{"class":3380}," y",[460,33435,33436],{"class":466},") { m_x ",[460,33438,894],{"class":887},[460,33440,33441],{"class":466}," x; m_y ",[460,33443,894],{"class":887},[460,33445,33446],{"class":466}," y; }\n",[460,33448,33449],{"class":462,"line":518},[460,33450,33451],{"class":942},"    \u002F\u002F获取坐标\n",[460,33453,33454,33456,33459,33462,33465],{"class":462,"line":525},[460,33455,31192],{"class":887},[460,33457,33458],{"class":929}," getX",[460,33460,33461],{"class":466},"() { ",[460,33463,33464],{"class":887},"return",[460,33466,33467],{"class":466}," m_x; }\n",[460,33469,33470,33472,33475,33477,33479],{"class":462,"line":531},[460,33471,31192],{"class":887},[460,33473,33474],{"class":929}," getY",[460,33476,33461],{"class":466},[460,33478,33464],{"class":887},[460,33480,33481],{"class":466}," m_y; }\n",[460,33483,33484],{"class":462,"line":537},[460,33485,522],{"emptyLinePlaceholder":521},[460,33487,33488],{"class":462,"line":543},[460,33489,31673],{"class":887},[460,33491,33492,33494],{"class":462,"line":549},[460,33493,31192],{"class":887},[460,33495,33496],{"class":466}," m_x;\n",[460,33498,33499,33501],{"class":462,"line":555},[460,33500,31192],{"class":887},[460,33502,33503],{"class":466}," m_y;\n",[460,33505,33506],{"class":462,"line":560},[460,33507,20510],{"class":466},[460,33509,33510,33512],{"class":462,"line":566},[460,33511,31148],{"class":887},[460,33513,31151],{"class":929},[460,33515,33516],{"class":462,"line":572},[460,33517,18115],{"class":466},[460,33519,33520],{"class":462,"line":578},[460,33521,31170],{"class":887},[460,33523,33524],{"class":462,"line":812},[460,33525,33412],{"class":942},[460,33527,33528,33530,33533,33535,33537,33540,33543,33545],{"class":462,"line":818},[460,33529,31362],{"class":887},[460,33531,33532],{"class":929}," setRadius",[460,33534,2174],{"class":466},[460,33536,30491],{"class":887},[460,33538,33539],{"class":3380}," r",[460,33541,33542],{"class":466},") { m_r ",[460,33544,894],{"class":887},[460,33546,33547],{"class":466}," r; }\n",[460,33549,33550,33552,33555,33557,33560,33563,33566,33568],{"class":462,"line":824},[460,33551,31362],{"class":887},[460,33553,33554],{"class":929}," setCenter",[460,33556,2174],{"class":466},[460,33558,33559],{"class":929},"Point",[460,33561,33562],{"class":3380}," center",[460,33564,33565],{"class":466},") { m_center ",[460,33567,894],{"class":887},[460,33569,33570],{"class":466}," center; }\n",[460,33572,33573],{"class":462,"line":2074},[460,33574,33575],{"class":942},"    \u002F\u002F获取属性\n",[460,33577,33578,33580,33583,33585,33587],{"class":462,"line":2088},[460,33579,31192],{"class":887},[460,33581,33582],{"class":929}," getRadius",[460,33584,33461],{"class":466},[460,33586,33464],{"class":887},[460,33588,33589],{"class":466}," m_r; }\n",[460,33591,33592,33595,33598,33600,33602],{"class":462,"line":2103},[460,33593,33594],{"class":929},"    Point",[460,33596,33597],{"class":929}," getCenter",[460,33599,33461],{"class":466},[460,33601,33464],{"class":887},[460,33603,33604],{"class":466}," m_center; }\n",[460,33606,33607],{"class":462,"line":2122},[460,33608,522],{"emptyLinePlaceholder":521},[460,33610,33611],{"class":462,"line":2144},[460,33612,31673],{"class":887},[460,33614,33615,33617],{"class":462,"line":2158},[460,33616,31192],{"class":887},[460,33618,31182],{"class":466},[460,33620,33621],{"class":462,"line":2163},[460,33622,33623],{"class":942},"    \u002F\u002F在类中可以让另一个类作为本来的成员\n",[460,33625,33626],{"class":462,"line":2168},[460,33627,33628],{"class":466},"    Point m_center;\n",[460,33630,33631],{"class":462,"line":2183},[460,33632,20510],{"class":466},[460,33634,33635,33637,33640,33642,33645,33647,33649,33651,33653,33655,33657],{"class":462,"line":2194},[460,33636,21870],{"class":887},[460,33638,33639],{"class":929}," isInCircle",[460,33641,2174],{"class":466},[460,33643,33644],{"class":929},"Circle",[460,33646,27049],{"class":887},[460,33648,17030],{"class":3380},[460,33650,3986],{"class":466},[460,33652,33559],{"class":929},[460,33654,27049],{"class":887},[460,33656,14],{"class":3380},[460,33658,3754],{"class":466},[460,33660,33661],{"class":462,"line":2199},[460,33662,18115],{"class":466},[460,33664,33665,33667,33670,33672,33674,33677,33679,33682,33684,33686,33688,33690],{"class":462,"line":2204},[460,33666,31192],{"class":887},[460,33668,33669],{"class":466}," dx ",[460,33671,894],{"class":887},[460,33673,32792],{"class":466},[460,33675,33676],{"class":929},"getCenter",[460,33678,11396],{"class":466},[460,33680,33681],{"class":929},"getX",[460,33683,14546],{"class":466},[460,33685,17259],{"class":887},[460,33687,32338],{"class":466},[460,33689,33681],{"class":929},[460,33691,22142],{"class":466},[460,33693,33694,33696,33699,33701,33703,33705,33707,33710,33712,33714,33716,33718],{"class":462,"line":2212},[460,33695,31192],{"class":887},[460,33697,33698],{"class":466}," dy ",[460,33700,894],{"class":887},[460,33702,32792],{"class":466},[460,33704,33676],{"class":929},[460,33706,11396],{"class":466},[460,33708,33709],{"class":929},"getY",[460,33711,14546],{"class":466},[460,33713,17259],{"class":887},[460,33715,32338],{"class":466},[460,33717,33709],{"class":929},[460,33719,22142],{"class":466},[460,33721,33722,33724,33727,33729,33732,33735,33737,33739,33741,33743,33745],{"class":462,"line":2257},[460,33723,31192],{"class":887},[460,33725,33726],{"class":466}," distance ",[460,33728,894],{"class":887},[460,33730,33731],{"class":929}," sqrt",[460,33733,33734],{"class":466},"(dx ",[460,33736,8320],{"class":887},[460,33738,33669],{"class":466},[460,33740,8495],{"class":887},[460,33742,33698],{"class":466},[460,33744,8320],{"class":887},[460,33746,33747],{"class":466}," dy);\n",[460,33749,33750,33752,33755,33757,33759,33762],{"class":462,"line":2285},[460,33751,19622],{"class":887},[460,33753,33754],{"class":466}," (distance ",[460,33756,781],{"class":887},[460,33758,32792],{"class":466},[460,33760,33761],{"class":929},"getRadius",[460,33763,33764],{"class":466},"())\n",[460,33766,33767],{"class":462,"line":2298},[460,33768,18570],{"class":466},[460,33770,33771,33773,33775,33778,33780],{"class":462,"line":2303},[460,33772,26153],{"class":466},[460,33774,17750],{"class":887},[460,33776,33777],{"class":1353}," \"点在圆内\"",[460,33779,18014],{"class":887},[460,33781,25327],{"class":466},[460,33783,33784],{"class":462,"line":2308},[460,33785,509],{"class":466},[460,33787,33788],{"class":462,"line":2318},[460,33789,33255],{"class":887},[460,33791,33792],{"class":462,"line":2333},[460,33793,18570],{"class":466},[460,33795,33796,33798,33800,33803,33805],{"class":462,"line":2338},[460,33797,26153],{"class":466},[460,33799,17750],{"class":887},[460,33801,33802],{"class":1353}," \"点在圆外\"",[460,33804,18014],{"class":887},[460,33806,25327],{"class":466},[460,33808,33809],{"class":462,"line":2343},[460,33810,509],{"class":466},[460,33812,33813],{"class":462,"line":2353},[460,33814,821],{"class":466},[460,33816,33817,33819,33821],{"class":462,"line":2368},[460,33818,16759],{"class":887},[460,33820,18514],{"class":929},[460,33822,10758],{"class":466},[460,33824,33825],{"class":462,"line":2381},[460,33826,18115],{"class":466},[460,33828,33829],{"class":462,"line":2394},[460,33830,31504],{"class":942},[460,33832,33833],{"class":462,"line":2399},[460,33834,31253],{"class":466},[460,33836,33837],{"class":462,"line":2404},[460,33838,33839],{"class":466},"    Point p1;\n",[460,33841,33842],{"class":462,"line":2414},[460,33843,33412],{"class":942},[460,33845,33846,33848,33850,33853],{"class":462,"line":2428},[460,33847,18120],{"class":466},[460,33849,17750],{"class":887},[460,33851,33852],{"class":1353},"\"请输入圆的半径：\"",[460,33854,1966],{"class":466},[460,33856,33857,33859],{"class":462,"line":2440},[460,33858,31192],{"class":887},[460,33860,33861],{"class":466}," r;\n",[460,33863,33864,33866,33868],{"class":462,"line":2445},[460,33865,18552],{"class":466},[460,33867,17999],{"class":887},[460,33869,33870],{"class":466},"r;\n",[460,33872,33873,33875,33878],{"class":462,"line":2450},[460,33874,33045],{"class":466},[460,33876,33877],{"class":929},"setRadius",[460,33879,33880],{"class":466},"(r);\n",[460,33882,33883,33885,33887,33890],{"class":462,"line":2460},[460,33884,18120],{"class":466},[460,33886,17750],{"class":887},[460,33888,33889],{"class":1353},"\"请输入圆心坐标：\"",[460,33891,1966],{"class":466},[460,33893,33894,33896],{"class":462,"line":2473},[460,33895,31192],{"class":887},[460,33897,33898],{"class":466}," x, y;\n",[460,33900,33901,33903,33905,33907,33909],{"class":462,"line":2487},[460,33902,18552],{"class":466},[460,33904,17999],{"class":887},[460,33906,13187],{"class":466},[460,33908,17999],{"class":887},[460,33910,33911],{"class":466},"y;\n",[460,33913,33914,33917,33920],{"class":462,"line":2492},[460,33915,33916],{"class":466},"    p1.",[460,33918,33919],{"class":929},"setPoint",[460,33921,33922],{"class":466},"(x, y);\n",[460,33924,33925,33927,33930],{"class":462,"line":2497},[460,33926,33045],{"class":466},[460,33928,33929],{"class":929},"setCenter",[460,33931,33932],{"class":466},"(p1);\n",[460,33934,33935,33937,33939,33942],{"class":462,"line":2505},[460,33936,18120],{"class":466},[460,33938,17750],{"class":887},[460,33940,33941],{"class":1353},"\"请输入测试点坐标：\"",[460,33943,1966],{"class":466},[460,33945,33946,33948],{"class":462,"line":2516},[460,33947,31192],{"class":887},[460,33949,33950],{"class":466}," x1, y1;\n",[460,33952,33953,33955,33957,33960,33962],{"class":462,"line":2529},[460,33954,18552],{"class":466},[460,33956,17999],{"class":887},[460,33958,33959],{"class":466},"x1",[460,33961,17999],{"class":887},[460,33963,33964],{"class":466},"y1;\n",[460,33966,33967],{"class":462,"line":2542},[460,33968,33969],{"class":466},"    Point p2;\n",[460,33971,33972,33975,33977],{"class":462,"line":2559},[460,33973,33974],{"class":466},"    p2.",[460,33976,33919],{"class":929},[460,33978,33979],{"class":466},"(x1, y1);\n",[460,33981,33982,33985],{"class":462,"line":2564},[460,33983,33984],{"class":929},"    isInCircle",[460,33986,33987],{"class":466},"(c1, p2);\n",[460,33989,33990],{"class":462,"line":2569},[460,33991,821],{"class":466},[14,33993,33994],{},"在类中可以让另一个类作为本来的成员",[14,33996,33997],{},"这个案例非常重要的一点在于类和对象封装成一个单独文件",[14,33999,34000],{},"创建point.h",[451,34002,34004],{"className":16745,"code":34003,"language":16747,"meta":32,"style":32},"#pragma once \u002F\u002F防止头文件重复包含\n#include\u003Ciostream>\nusing namespace std;\nclass Point\n{\n\u002F\u002F做好声明与变量定义就可以\npublic:\n    \u002F\u002F赋值\n    void setPoint(double x, double y);\n    \u002F\u002F获取坐标\n    double getX();\n    double getY();\n\nprivate:\n    double m_x;\n    double m_y;\n};\n",[457,34005,34006,34017,34023,34033,34039,34043,34048,34052,34056,34076,34080,34088,34096,34100,34104,34110,34116],{"__ignoreMap":32},[460,34007,34008,34011,34014],{"class":462,"line":463},[460,34009,34010],{"class":887},"#pragma",[460,34012,34013],{"class":929}," once",[460,34015,34016],{"class":942}," \u002F\u002F防止头文件重复包含\n",[460,34018,34019,34021],{"class":462,"line":476},[460,34020,18491],{"class":887},[460,34022,18494],{"class":1353},[460,34024,34025,34027,34029,34031],{"class":462,"line":482},[460,34026,18499],{"class":887},[460,34028,18502],{"class":887},[460,34030,18505],{"class":929},[460,34032,1966],{"class":466},[460,34034,34035,34037],{"class":462,"line":488},[460,34036,31148],{"class":887},[460,34038,33399],{"class":929},[460,34040,34041],{"class":462,"line":494},[460,34042,18115],{"class":466},[460,34044,34045],{"class":462,"line":500},[460,34046,34047],{"class":942},"\u002F\u002F做好声明与变量定义就可以\n",[460,34049,34050],{"class":462,"line":506},[460,34051,31170],{"class":887},[460,34053,34054],{"class":462,"line":512},[460,34055,33412],{"class":942},[460,34057,34058,34060,34062,34064,34066,34068,34070,34072,34074],{"class":462,"line":518},[460,34059,31362],{"class":887},[460,34061,33419],{"class":929},[460,34063,2174],{"class":466},[460,34065,30491],{"class":887},[460,34067,33426],{"class":3380},[460,34069,904],{"class":466},[460,34071,30491],{"class":887},[460,34073,33433],{"class":3380},[460,34075,2254],{"class":466},[460,34077,34078],{"class":462,"line":525},[460,34079,33451],{"class":942},[460,34081,34082,34084,34086],{"class":462,"line":531},[460,34083,31192],{"class":887},[460,34085,33458],{"class":929},[460,34087,22142],{"class":466},[460,34089,34090,34092,34094],{"class":462,"line":537},[460,34091,31192],{"class":887},[460,34093,33474],{"class":929},[460,34095,22142],{"class":466},[460,34097,34098],{"class":462,"line":543},[460,34099,522],{"emptyLinePlaceholder":521},[460,34101,34102],{"class":462,"line":549},[460,34103,31673],{"class":887},[460,34105,34106,34108],{"class":462,"line":555},[460,34107,31192],{"class":887},[460,34109,33496],{"class":466},[460,34111,34112,34114],{"class":462,"line":560},[460,34113,31192],{"class":887},[460,34115,33503],{"class":466},[460,34117,34118],{"class":462,"line":566},[460,34119,20510],{"class":466},[14,34121,34122],{},"创建point.cpp",[451,34124,34126],{"className":16745,"code":34125,"language":16747,"meta":32,"style":32},"#include\u003Cpoint.h>\n\u002F\u002F此时如果不给予他作用域就会报错，所以要加Point::\n    void Point::setPoint(double x, double y) { m_x = x; m_y = y; }\n    \u002F\u002F获取坐标\n    double Point::getX() { return m_x; }\n    double Point::getY() { return m_y; }\n",[457,34127,34128,34135,34140,34174,34178,34194],{"__ignoreMap":32},[460,34129,34130,34132],{"class":462,"line":463},[460,34131,18491],{"class":887},[460,34133,34134],{"class":1353},"\u003Cpoint.h>\n",[460,34136,34137],{"class":462,"line":476},[460,34138,34139],{"class":942},"\u002F\u002F此时如果不给予他作用域就会报错，所以要加Point::\n",[460,34141,34142,34144,34147,34150,34152,34154,34156,34158,34160,34162,34164,34166,34168,34170,34172],{"class":462,"line":482},[460,34143,31362],{"class":887},[460,34145,34146],{"class":929}," Point",[460,34148,34149],{"class":466},"::",[460,34151,33919],{"class":929},[460,34153,2174],{"class":466},[460,34155,30491],{"class":887},[460,34157,33426],{"class":3380},[460,34159,904],{"class":466},[460,34161,30491],{"class":887},[460,34163,33433],{"class":3380},[460,34165,33436],{"class":466},[460,34167,894],{"class":887},[460,34169,33441],{"class":466},[460,34171,894],{"class":887},[460,34173,33446],{"class":466},[460,34175,34176],{"class":462,"line":488},[460,34177,33451],{"class":942},[460,34179,34180,34182,34184,34186,34188,34190,34192],{"class":462,"line":494},[460,34181,31192],{"class":887},[460,34183,34146],{"class":929},[460,34185,34149],{"class":466},[460,34187,33681],{"class":929},[460,34189,33461],{"class":466},[460,34191,33464],{"class":887},[460,34193,33467],{"class":466},[460,34195,34196,34198,34200,34202,34204,34206,34208],{"class":462,"line":500},[460,34197,31192],{"class":887},[460,34199,34146],{"class":929},[460,34201,34149],{"class":466},[460,34203,33709],{"class":929},[460,34205,33461],{"class":466},[460,34207,33464],{"class":887},[460,34209,33481],{"class":466},[14,34211,34212],{},"创建circle.h",[451,34214,34216],{"className":16745,"code":34215,"language":16747,"meta":32,"style":32},"#pragma once\n#include\u003Ciostream>\nusing namespace std;\n#include\u003Cpoint.h>\nclass Circle\n{\npublic:\n    \u002F\u002F赋值\n    void setRadius(double r);\n    void setCenter(Point center);\n    \u002F\u002F获取属性\n    double getRadius();\n    Point getCenter();\n\nprivate:\n    double m_r;\n    \u002F\u002F在类中可以让另一个类作为本来的成员\n    Point m_center;\n};\n",[457,34217,34218,34225,34231,34241,34247,34253,34257,34261,34265,34279,34293,34297,34305,34313,34317,34321,34327,34331,34335],{"__ignoreMap":32},[460,34219,34220,34222],{"class":462,"line":463},[460,34221,34010],{"class":887},[460,34223,34224],{"class":929}," once\n",[460,34226,34227,34229],{"class":462,"line":476},[460,34228,18491],{"class":887},[460,34230,18494],{"class":1353},[460,34232,34233,34235,34237,34239],{"class":462,"line":482},[460,34234,18499],{"class":887},[460,34236,18502],{"class":887},[460,34238,18505],{"class":929},[460,34240,1966],{"class":466},[460,34242,34243,34245],{"class":462,"line":488},[460,34244,18491],{"class":887},[460,34246,34134],{"class":1353},[460,34248,34249,34251],{"class":462,"line":494},[460,34250,31148],{"class":887},[460,34252,31151],{"class":929},[460,34254,34255],{"class":462,"line":500},[460,34256,18115],{"class":466},[460,34258,34259],{"class":462,"line":506},[460,34260,31170],{"class":887},[460,34262,34263],{"class":462,"line":512},[460,34264,33412],{"class":942},[460,34266,34267,34269,34271,34273,34275,34277],{"class":462,"line":518},[460,34268,31362],{"class":887},[460,34270,33532],{"class":929},[460,34272,2174],{"class":466},[460,34274,30491],{"class":887},[460,34276,33539],{"class":3380},[460,34278,2254],{"class":466},[460,34280,34281,34283,34285,34287,34289,34291],{"class":462,"line":525},[460,34282,31362],{"class":887},[460,34284,33554],{"class":929},[460,34286,2174],{"class":466},[460,34288,33559],{"class":929},[460,34290,33562],{"class":3380},[460,34292,2254],{"class":466},[460,34294,34295],{"class":462,"line":531},[460,34296,33575],{"class":942},[460,34298,34299,34301,34303],{"class":462,"line":537},[460,34300,31192],{"class":887},[460,34302,33582],{"class":929},[460,34304,22142],{"class":466},[460,34306,34307,34309,34311],{"class":462,"line":543},[460,34308,33594],{"class":929},[460,34310,33597],{"class":929},[460,34312,22142],{"class":466},[460,34314,34315],{"class":462,"line":549},[460,34316,522],{"emptyLinePlaceholder":521},[460,34318,34319],{"class":462,"line":555},[460,34320,31673],{"class":887},[460,34322,34323,34325],{"class":462,"line":560},[460,34324,31192],{"class":887},[460,34326,31182],{"class":466},[460,34328,34329],{"class":462,"line":566},[460,34330,33623],{"class":942},[460,34332,34333],{"class":462,"line":572},[460,34334,33628],{"class":466},[460,34336,34337],{"class":462,"line":578},[460,34338,20510],{"class":466},[14,34340,34341],{},"创建circle.cpp",[451,34343,34345],{"className":16745,"code":34344,"language":16747,"meta":32,"style":32},"#include\u003Ccircle.h>\nvoid Circle::setRadius(double r) { m_r = r; }\nvoid Circle::setCenter(Point center) { m_center = center; }\n\u002F\u002F获取属性\ndouble Circle::getRadius() { return m_r; }\nPoint Circle::getCenter() { return m_center; }\n",[457,34346,34347,34354,34377,34399,34404,34420],{"__ignoreMap":32},[460,34348,34349,34351],{"class":462,"line":463},[460,34350,18491],{"class":887},[460,34352,34353],{"class":1353},"\u003Ccircle.h>\n",[460,34355,34356,34358,34361,34363,34365,34367,34369,34371,34373,34375],{"class":462,"line":476},[460,34357,21870],{"class":887},[460,34359,34360],{"class":929}," Circle",[460,34362,34149],{"class":466},[460,34364,33877],{"class":929},[460,34366,2174],{"class":466},[460,34368,30491],{"class":887},[460,34370,33539],{"class":3380},[460,34372,33542],{"class":466},[460,34374,894],{"class":887},[460,34376,33547],{"class":466},[460,34378,34379,34381,34383,34385,34387,34389,34391,34393,34395,34397],{"class":462,"line":482},[460,34380,21870],{"class":887},[460,34382,34360],{"class":929},[460,34384,34149],{"class":466},[460,34386,33929],{"class":929},[460,34388,2174],{"class":466},[460,34390,33559],{"class":929},[460,34392,33562],{"class":3380},[460,34394,33565],{"class":466},[460,34396,894],{"class":887},[460,34398,33570],{"class":466},[460,34400,34401],{"class":462,"line":488},[460,34402,34403],{"class":942},"\u002F\u002F获取属性\n",[460,34405,34406,34408,34410,34412,34414,34416,34418],{"class":462,"line":494},[460,34407,30491],{"class":887},[460,34409,34360],{"class":929},[460,34411,34149],{"class":466},[460,34413,33761],{"class":929},[460,34415,33461],{"class":466},[460,34417,33464],{"class":887},[460,34419,33589],{"class":466},[460,34421,34422,34424,34426,34428,34430,34432,34434],{"class":462,"line":500},[460,34423,33559],{"class":929},[460,34425,34360],{"class":929},[460,34427,34149],{"class":466},[460,34429,33676],{"class":929},[460,34431,33461],{"class":466},[460,34433,33464],{"class":887},[460,34435,33604],{"class":466},[14,34437,34438],{},"使用封装的类",[451,34440,34442],{"className":16745,"code":34441,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n#include\u003Ccircle.h>\n#include\u003Cpoint.h>\nvoid isInCircle(Circle &c,Point &p)\n{\n    double dx = c.getCenter().getX() - p.getX();\n    double dy = c.getCenter().getY() - p.getY();\n    double distance = sqrt(dx * dx + dy * dy);\n    if (distance \u003C c.getRadius())\n    {\n        cout \u003C\u003C \"点在圆内\" \u003C\u003C endl;\n    }\n    else\n    {\n        cout \u003C\u003C \"点在圆外\" \u003C\u003C endl;\n    }\n}\nint main()\n{\n    \u002F\u002F实例化\n    Circle c1;\n    Point p1;\n    \u002F\u002F赋值\n    cout\u003C\u003C\"请输入圆的半径：\";\n    double r;\n    cin>>r;\n    c1.setRadius(r);\n    cout\u003C\u003C\"请输入圆心坐标：\";\n    double x, y;\n    cin>>x>>y;\n    p1.setPoint(x, y);\n    c1.setCenter(p1);\n    cout\u003C\u003C\"请输入测试点坐标：\";\n    double x1, y1;\n    cin>>x1>>y1;\n    Point p2;\n    p2.setPoint(x1, y1);\n    isInCircle(c1, p2);\n}\n",[457,34443,34444,34450,34460,34466,34472,34496,34500,34526,34552,34576,34590,34594,34606,34610,34614,34618,34630,34634,34638,34646,34650,34654,34658,34662,34666,34676,34682,34690,34698,34708,34714,34726,34734,34742,34752,34758,34770,34774,34782,34788],{"__ignoreMap":32},[460,34445,34446,34448],{"class":462,"line":463},[460,34447,18491],{"class":887},[460,34449,18494],{"class":1353},[460,34451,34452,34454,34456,34458],{"class":462,"line":476},[460,34453,18499],{"class":887},[460,34455,18502],{"class":887},[460,34457,18505],{"class":929},[460,34459,1966],{"class":466},[460,34461,34462,34464],{"class":462,"line":482},[460,34463,18491],{"class":887},[460,34465,34353],{"class":1353},[460,34467,34468,34470],{"class":462,"line":488},[460,34469,18491],{"class":887},[460,34471,34134],{"class":1353},[460,34473,34474,34476,34478,34480,34482,34484,34486,34488,34490,34492,34494],{"class":462,"line":494},[460,34475,21870],{"class":887},[460,34477,33639],{"class":929},[460,34479,2174],{"class":466},[460,34481,33644],{"class":929},[460,34483,27049],{"class":887},[460,34485,17030],{"class":3380},[460,34487,3986],{"class":466},[460,34489,33559],{"class":929},[460,34491,27049],{"class":887},[460,34493,14],{"class":3380},[460,34495,3754],{"class":466},[460,34497,34498],{"class":462,"line":500},[460,34499,18115],{"class":466},[460,34501,34502,34504,34506,34508,34510,34512,34514,34516,34518,34520,34522,34524],{"class":462,"line":506},[460,34503,31192],{"class":887},[460,34505,33669],{"class":466},[460,34507,894],{"class":887},[460,34509,32792],{"class":466},[460,34511,33676],{"class":929},[460,34513,11396],{"class":466},[460,34515,33681],{"class":929},[460,34517,14546],{"class":466},[460,34519,17259],{"class":887},[460,34521,32338],{"class":466},[460,34523,33681],{"class":929},[460,34525,22142],{"class":466},[460,34527,34528,34530,34532,34534,34536,34538,34540,34542,34544,34546,34548,34550],{"class":462,"line":512},[460,34529,31192],{"class":887},[460,34531,33698],{"class":466},[460,34533,894],{"class":887},[460,34535,32792],{"class":466},[460,34537,33676],{"class":929},[460,34539,11396],{"class":466},[460,34541,33709],{"class":929},[460,34543,14546],{"class":466},[460,34545,17259],{"class":887},[460,34547,32338],{"class":466},[460,34549,33709],{"class":929},[460,34551,22142],{"class":466},[460,34553,34554,34556,34558,34560,34562,34564,34566,34568,34570,34572,34574],{"class":462,"line":518},[460,34555,31192],{"class":887},[460,34557,33726],{"class":466},[460,34559,894],{"class":887},[460,34561,33731],{"class":929},[460,34563,33734],{"class":466},[460,34565,8320],{"class":887},[460,34567,33669],{"class":466},[460,34569,8495],{"class":887},[460,34571,33698],{"class":466},[460,34573,8320],{"class":887},[460,34575,33747],{"class":466},[460,34577,34578,34580,34582,34584,34586,34588],{"class":462,"line":525},[460,34579,19622],{"class":887},[460,34581,33754],{"class":466},[460,34583,781],{"class":887},[460,34585,32792],{"class":466},[460,34587,33761],{"class":929},[460,34589,33764],{"class":466},[460,34591,34592],{"class":462,"line":531},[460,34593,18570],{"class":466},[460,34595,34596,34598,34600,34602,34604],{"class":462,"line":537},[460,34597,26153],{"class":466},[460,34599,17750],{"class":887},[460,34601,33777],{"class":1353},[460,34603,18014],{"class":887},[460,34605,25327],{"class":466},[460,34607,34608],{"class":462,"line":543},[460,34609,509],{"class":466},[460,34611,34612],{"class":462,"line":549},[460,34613,33255],{"class":887},[460,34615,34616],{"class":462,"line":555},[460,34617,18570],{"class":466},[460,34619,34620,34622,34624,34626,34628],{"class":462,"line":560},[460,34621,26153],{"class":466},[460,34623,17750],{"class":887},[460,34625,33802],{"class":1353},[460,34627,18014],{"class":887},[460,34629,25327],{"class":466},[460,34631,34632],{"class":462,"line":566},[460,34633,509],{"class":466},[460,34635,34636],{"class":462,"line":572},[460,34637,821],{"class":466},[460,34639,34640,34642,34644],{"class":462,"line":578},[460,34641,16759],{"class":887},[460,34643,18514],{"class":929},[460,34645,10758],{"class":466},[460,34647,34648],{"class":462,"line":812},[460,34649,18115],{"class":466},[460,34651,34652],{"class":462,"line":818},[460,34653,31504],{"class":942},[460,34655,34656],{"class":462,"line":824},[460,34657,31253],{"class":466},[460,34659,34660],{"class":462,"line":2074},[460,34661,33839],{"class":466},[460,34663,34664],{"class":462,"line":2088},[460,34665,33412],{"class":942},[460,34667,34668,34670,34672,34674],{"class":462,"line":2103},[460,34669,18120],{"class":466},[460,34671,17750],{"class":887},[460,34673,33852],{"class":1353},[460,34675,1966],{"class":466},[460,34677,34678,34680],{"class":462,"line":2122},[460,34679,31192],{"class":887},[460,34681,33861],{"class":466},[460,34683,34684,34686,34688],{"class":462,"line":2144},[460,34685,18552],{"class":466},[460,34687,17999],{"class":887},[460,34689,33870],{"class":466},[460,34691,34692,34694,34696],{"class":462,"line":2158},[460,34693,33045],{"class":466},[460,34695,33877],{"class":929},[460,34697,33880],{"class":466},[460,34699,34700,34702,34704,34706],{"class":462,"line":2163},[460,34701,18120],{"class":466},[460,34703,17750],{"class":887},[460,34705,33889],{"class":1353},[460,34707,1966],{"class":466},[460,34709,34710,34712],{"class":462,"line":2168},[460,34711,31192],{"class":887},[460,34713,33898],{"class":466},[460,34715,34716,34718,34720,34722,34724],{"class":462,"line":2183},[460,34717,18552],{"class":466},[460,34719,17999],{"class":887},[460,34721,13187],{"class":466},[460,34723,17999],{"class":887},[460,34725,33911],{"class":466},[460,34727,34728,34730,34732],{"class":462,"line":2194},[460,34729,33916],{"class":466},[460,34731,33919],{"class":929},[460,34733,33922],{"class":466},[460,34735,34736,34738,34740],{"class":462,"line":2199},[460,34737,33045],{"class":466},[460,34739,33929],{"class":929},[460,34741,33932],{"class":466},[460,34743,34744,34746,34748,34750],{"class":462,"line":2204},[460,34745,18120],{"class":466},[460,34747,17750],{"class":887},[460,34749,33941],{"class":1353},[460,34751,1966],{"class":466},[460,34753,34754,34756],{"class":462,"line":2212},[460,34755,31192],{"class":887},[460,34757,33950],{"class":466},[460,34759,34760,34762,34764,34766,34768],{"class":462,"line":2257},[460,34761,18552],{"class":466},[460,34763,17999],{"class":887},[460,34765,33959],{"class":466},[460,34767,17999],{"class":887},[460,34769,33964],{"class":466},[460,34771,34772],{"class":462,"line":2285},[460,34773,33969],{"class":466},[460,34775,34776,34778,34780],{"class":462,"line":2298},[460,34777,33974],{"class":466},[460,34779,33919],{"class":929},[460,34781,33979],{"class":466},[460,34783,34784,34786],{"class":462,"line":2303},[460,34785,33984],{"class":929},[460,34787,33987],{"class":466},[460,34789,34790],{"class":462,"line":2308},[460,34791,821],{"class":466},[18,34793,34795],{"id":34794},"_82对象的初始化清理","8.2对象的初始化清理",[40,34797,34798,34801],{},[43,34799,34800],{},"生活中我们买的电子产品都基本会有出厂设置，在某一天我们不用时候也会删除一些自己信息数据保证安全",[43,34802,34803],{},"C++中的面向对象来源于生活，每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。",[23,34805,34807],{"id":34806},"_821构造函数和析构函数","8.2.1构造函数和析构函数",[14,34809,34810,34811,34814],{},"对象的",[3944,34812,34813],{},"初始化和清理","也是两个非常重要的安全问题",[14,34816,34817],{},"​\t一个对象或者变量没有初始状态，对其使用后果是未知",[14,34819,34820],{},"​\t同样的使用完一个对象或变量，没有及时清理，也会造成一定的安全问题",[14,34822,34823,34824,34827,34828,34831],{},"c++利用了",[3944,34825,34826],{},"构造函数","和",[3944,34829,34830],{},"析构函数","解决上述问题，这两个函数将会被编译器自动调用，完成对象初始化和清理工作。",[14,34833,34834,34835],{},"对象的初始化和清理工作是编译器强制要我们做的事情，因此如果",[3944,34836,34837],{},"我们不提供构造和析构，编译器会提供",[14,34839,34840],{},[3944,34841,34842],{},"编译器提供的构造函数和析构函数是空实现。",[40,34844,34845,34848],{},[43,34846,34847],{},"构造函数：主要作用在于创建对象时为对象的成员属性赋值，构造函数由编译器自动调用，无须手动调用。",[43,34849,34850,34851,34854],{},"析构函数：主要作用在于对象",[3944,34852,34853],{},"销毁前","系统自动调用，执行一些清理工作。",[14,34856,34857,34860],{},[3944,34858,34859],{},"构造函数语法：",[457,34861,34862],{},"类名(){}",[103,34864,34865,34868,34871,34874,34877],{},[43,34866,34867],{},"构造函数，没有返回值也不写void",[43,34869,34870],{},"函数名称与类名相同",[43,34872,34873],{},"构造函数可以有参数，因此可以发生重载",[43,34875,34876],{},"程序在调用对象时候会自动调用构造，无须手动调用,而且只会调用一次",[43,34878,34879,34880,8411],{},"构造函数在程序运行时会自动调用，如果自己定义的话就用自己；否则就用编译器给我们生成的(例如",[457,34881,34882],{},"Person(){}",[14,34884,34885,6464,34888],{},[3944,34886,34887],{},"析构函数语法：",[457,34889,34890],{},"~类名(){}",[103,34892,34893,34896,34899,34905],{},[43,34894,34895],{},"析构函数，没有返回值也不写void",[43,34897,34898],{},"函数名称与类名相同,在名称前加上符号  ~",[43,34900,34901,34902],{},"析构函数不可以有参数，因此",[3944,34903,34904],{},"不可以发生重载",[43,34906,34907],{},"程序在对象销毁前会自动调用析构，无须手动调用,而且只会调用一次",[451,34909,34911],{"className":16745,"code":34910,"language":16747,"meta":32,"style":32},"class Person\n{\npublic:\n    \u002F\u002F构造函数\n    Person()\n    {\n        cout \u003C\u003C \"Person的构造函数调用\" \u003C\u003C endl;\n    }\n    \u002F\u002F析构函数\n    ~Person()\n    {\n        cout \u003C\u003C \"Person的析构函数调用\" \u003C\u003C endl;\n    }\n\n};\n\nvoid test01()\n{\n    Person p;\u002F\u002F在栈上的数据，test01执行完毕后，释放这个\n}\n\nint main() {\n    \n    \u002F\u002F test01();  调用这个会有构造和析构函数的调用\n\n    Person p;\u002F\u002F只有构造函数\n\n    system(\"pause\");\u002F\u002F按键后程序才会结束，就会出现析构函数的调用，但是窗口很快就关了\n\n    return 0;\n}\n",[457,34912,34913,34919,34923,34927,34932,34939,34943,34956,34960,34965,34972,34976,34989,34993,34997,35001,35005,35013,35017,35025,35029,35033,35041,35045,35050,35054,35061,35065,35078,35082,35090],{"__ignoreMap":32},[460,34914,34915,34917],{"class":462,"line":463},[460,34916,31148],{"class":887},[460,34918,31622],{"class":929},[460,34920,34921],{"class":462,"line":476},[460,34922,18115],{"class":466},[460,34924,34925],{"class":462,"line":482},[460,34926,31170],{"class":887},[460,34928,34929],{"class":462,"line":488},[460,34930,34931],{"class":942},"    \u002F\u002F构造函数\n",[460,34933,34934,34937],{"class":462,"line":494},[460,34935,34936],{"class":929},"    Person",[460,34938,10758],{"class":466},[460,34940,34941],{"class":462,"line":500},[460,34942,18570],{"class":466},[460,34944,34945,34947,34949,34952,34954],{"class":462,"line":506},[460,34946,26153],{"class":466},[460,34948,17750],{"class":887},[460,34950,34951],{"class":1353}," \"Person的构造函数调用\"",[460,34953,18014],{"class":887},[460,34955,25327],{"class":466},[460,34957,34958],{"class":462,"line":512},[460,34959,509],{"class":466},[460,34961,34962],{"class":462,"line":518},[460,34963,34964],{"class":942},"    \u002F\u002F析构函数\n",[460,34966,34967,34970],{"class":462,"line":525},[460,34968,34969],{"class":929},"    ~Person",[460,34971,10758],{"class":466},[460,34973,34974],{"class":462,"line":531},[460,34975,18570],{"class":466},[460,34977,34978,34980,34982,34985,34987],{"class":462,"line":537},[460,34979,26153],{"class":466},[460,34981,17750],{"class":887},[460,34983,34984],{"class":1353}," \"Person的析构函数调用\"",[460,34986,18014],{"class":887},[460,34988,25327],{"class":466},[460,34990,34991],{"class":462,"line":543},[460,34992,509],{"class":466},[460,34994,34995],{"class":462,"line":549},[460,34996,522],{"emptyLinePlaceholder":521},[460,34998,34999],{"class":462,"line":555},[460,35000,20510],{"class":466},[460,35002,35003],{"class":462,"line":560},[460,35004,522],{"emptyLinePlaceholder":521},[460,35006,35007,35009,35011],{"class":462,"line":566},[460,35008,21870],{"class":887},[460,35010,22094],{"class":929},[460,35012,10758],{"class":466},[460,35014,35015],{"class":462,"line":572},[460,35016,18115],{"class":466},[460,35018,35019,35022],{"class":462,"line":578},[460,35020,35021],{"class":466},"    Person p;",[460,35023,35024],{"class":942},"\u002F\u002F在栈上的数据，test01执行完毕后，释放这个\n",[460,35026,35027],{"class":462,"line":812},[460,35028,821],{"class":466},[460,35030,35031],{"class":462,"line":818},[460,35032,522],{"emptyLinePlaceholder":521},[460,35034,35035,35037,35039],{"class":462,"line":824},[460,35036,16759],{"class":887},[460,35038,18514],{"class":929},[460,35040,11374],{"class":466},[460,35042,35043],{"class":462,"line":2074},[460,35044,29667],{"class":466},[460,35046,35047],{"class":462,"line":2088},[460,35048,35049],{"class":942},"    \u002F\u002F test01();  调用这个会有构造和析构函数的调用\n",[460,35051,35052],{"class":462,"line":2103},[460,35053,522],{"emptyLinePlaceholder":521},[460,35055,35056,35058],{"class":462,"line":2122},[460,35057,35021],{"class":466},[460,35059,35060],{"class":942},"\u002F\u002F只有构造函数\n",[460,35062,35063],{"class":462,"line":2144},[460,35064,522],{"emptyLinePlaceholder":521},[460,35066,35067,35069,35071,35073,35075],{"class":462,"line":2158},[460,35068,18839],{"class":929},[460,35070,2174],{"class":466},[460,35072,18844],{"class":1353},[460,35074,22470],{"class":466},[460,35076,35077],{"class":942},"\u002F\u002F按键后程序才会结束，就会出现析构函数的调用，但是窗口很快就关了\n",[460,35079,35080],{"class":462,"line":2163},[460,35081,522],{"emptyLinePlaceholder":521},[460,35083,35084,35086,35088],{"class":462,"line":2168},[460,35085,20605],{"class":887},[460,35087,2224],{"class":900},[460,35089,1966],{"class":466},[460,35091,35092],{"class":462,"line":2183},[460,35093,821],{"class":466},[14,35095,35096],{},"构造和析构都是必须有的实现，如果我们自己不提供，编译器会提供一个空实现的构造和析构",[23,35098,35100],{"id":35099},"_822构造函数的分类及调用","8.2.2构造函数的分类及调用",[14,35102,35103],{},"两种分类方式：",[14,35105,35106],{},"​\t按参数分为： 有参构造和无参构造",[14,35108,35109],{},"​\t按类型分为： 普通构造和拷贝构造",[14,35111,35112],{},"三种调用方式：",[14,35114,35115],{},"​\t括号法",[14,35117,35118],{},"​\t显示法",[14,35120,35121],{},"​\t隐式转换法",[451,35123,35125],{"className":16745,"code":35124,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n\u002F\u002F1.构造函数的分类及调用\n\u002F\u002F分类\n\u002F\u002F  按照参数分类 无参数构造(默认构造)  有参构造\n\u002F\u002F  按照类型分类 普通构造 拷贝构造\n\nclass Person \n{\npublic:\n    \u002F\u002F构造函数\n    Person()\n    {\n        cout\u003C\u003C\"Person构造函数无参构造\"\u003C\u003Cendl;\n    }\n    Person(int a)\n    {\n        age=a;\n        cout\u003C\u003C\"Person构造函数有参构造\"\u003C\u003Cendl;\n    }\n    \u002F\u002F析构函数\n    ~Person()\n    {\n        cout\u003C\u003C\"Person析构函数被调用\"\u003C\u003Cendl;\n    }\n    \u002F\u002F拷贝构造函数\n    Person(const Person &p)\n    {\n        \u002F\u002F将传入对象的age赋值给当前对象的age\n        age=p.age;\n        cout\u003C\u003C\"Person拷贝构造函数被调用\"\u003C\u003Cendl;\n    }\n    int age;\n};\n\u002F\u002F调用\nvoid test01()\n{\n    \u002F\u002F Person p1;\u002F\u002F默认构造函数调用\n}\nvoid test02()\n{\n    \u002F\u002F1.括号法\n    \u002F\u002F Person p2(10);\u002F\u002F有参构造函数调用\n    \u002F\u002F Person p3(p2);\u002F\u002F拷贝构造函数调用\n    \u002F\u002F cout\u003C\u003C\"p2的age:\"\u003C\u003Cp2.age\u003C\u003Cendl;\n    \u002F\u002F cout\u003C\u003C\"p3的age:\"\u003C\u003Cp3.age\u003C\u003Cendl;\n\n    \u002F\u002F注意事项\n    \u002F\u002F调用默认构造函数时候，不要加()\n    \u002F\u002F因为下面这行代码，编译器会认为是一个函数的声明,不会认为在创建对象\n    \u002F\u002F Person p4();\n\n    \u002F\u002F2.显示法\n    Person p1;\n    Person p2=Person(10);\n    Person p3=Person(p2);\n    \u002F\u002F 如果单独拿出右侧Person(10);，这是个匿名对象\n\n    \u002F\u002F 注意事项2\n    \u002F\u002F 不要利用拷贝构造函数  初始化匿名对象\n    \u002F\u002F Person(p2);  编译器会认为 Person (p2)===Person p2； 错误的 编译器会认为是对象的声明   \n\n    \u002F\u002F3.隐士转换法\n    Person p4=10;  \u002F\u002F 这里会调用有参构造函数  相当于Person p4=Person(10);\n    Person p5=p4; \u002F\u002F 这里会调用拷贝构造函数\n}\nint main()\n{\n    test01();\n    test02();\n    return 0;\n}\n",[457,35126,35127,35133,35143,35148,35153,35158,35163,35167,35175,35179,35183,35187,35193,35197,35210,35214,35226,35230,35239,35252,35256,35260,35266,35270,35283,35287,35292,35308,35312,35317,35326,35339,35343,35349,35353,35358,35366,35370,35375,35379,35387,35391,35396,35401,35406,35411,35416,35420,35425,35430,35435,35440,35444,35449,35454,35470,35482,35487,35491,35496,35501,35506,35510,35515,35529,35542,35546,35554,35558,35564,35570,35578],{"__ignoreMap":32},[460,35128,35129,35131],{"class":462,"line":463},[460,35130,18491],{"class":887},[460,35132,18494],{"class":1353},[460,35134,35135,35137,35139,35141],{"class":462,"line":476},[460,35136,18499],{"class":887},[460,35138,18502],{"class":887},[460,35140,18505],{"class":929},[460,35142,1966],{"class":466},[460,35144,35145],{"class":462,"line":482},[460,35146,35147],{"class":942},"\u002F\u002F1.构造函数的分类及调用\n",[460,35149,35150],{"class":462,"line":488},[460,35151,35152],{"class":942},"\u002F\u002F分类\n",[460,35154,35155],{"class":462,"line":494},[460,35156,35157],{"class":942},"\u002F\u002F  按照参数分类 无参数构造(默认构造)  有参构造\n",[460,35159,35160],{"class":462,"line":500},[460,35161,35162],{"class":942},"\u002F\u002F  按照类型分类 普通构造 拷贝构造\n",[460,35164,35165],{"class":462,"line":506},[460,35166,522],{"emptyLinePlaceholder":521},[460,35168,35169,35171,35173],{"class":462,"line":512},[460,35170,31148],{"class":887},[460,35172,32020],{"class":929},[460,35174,19198],{"class":466},[460,35176,35177],{"class":462,"line":518},[460,35178,18115],{"class":466},[460,35180,35181],{"class":462,"line":525},[460,35182,31170],{"class":887},[460,35184,35185],{"class":462,"line":531},[460,35186,34931],{"class":942},[460,35188,35189,35191],{"class":462,"line":537},[460,35190,34936],{"class":929},[460,35192,10758],{"class":466},[460,35194,35195],{"class":462,"line":543},[460,35196,18570],{"class":466},[460,35198,35199,35201,35203,35206,35208],{"class":462,"line":549},[460,35200,19972],{"class":466},[460,35202,17750],{"class":887},[460,35204,35205],{"class":1353},"\"Person构造函数无参构造\"",[460,35207,17750],{"class":887},[460,35209,17772],{"class":466},[460,35211,35212],{"class":462,"line":555},[460,35213,509],{"class":466},[460,35215,35216,35218,35220,35222,35224],{"class":462,"line":560},[460,35217,34936],{"class":929},[460,35219,2174],{"class":466},[460,35221,16759],{"class":887},[460,35223,2574],{"class":3380},[460,35225,3754],{"class":466},[460,35227,35228],{"class":462,"line":566},[460,35229,18570],{"class":466},[460,35231,35232,35235,35237],{"class":462,"line":572},[460,35233,35234],{"class":466},"        age",[460,35236,894],{"class":887},[460,35238,22700],{"class":466},[460,35240,35241,35243,35245,35248,35250],{"class":462,"line":578},[460,35242,19972],{"class":466},[460,35244,17750],{"class":887},[460,35246,35247],{"class":1353},"\"Person构造函数有参构造\"",[460,35249,17750],{"class":887},[460,35251,17772],{"class":466},[460,35253,35254],{"class":462,"line":812},[460,35255,509],{"class":466},[460,35257,35258],{"class":462,"line":818},[460,35259,34964],{"class":942},[460,35261,35262,35264],{"class":462,"line":824},[460,35263,34969],{"class":929},[460,35265,10758],{"class":466},[460,35267,35268],{"class":462,"line":2074},[460,35269,18570],{"class":466},[460,35271,35272,35274,35276,35279,35281],{"class":462,"line":2088},[460,35273,19972],{"class":466},[460,35275,17750],{"class":887},[460,35277,35278],{"class":1353},"\"Person析构函数被调用\"",[460,35280,17750],{"class":887},[460,35282,17772],{"class":466},[460,35284,35285],{"class":462,"line":2103},[460,35286,509],{"class":466},[460,35288,35289],{"class":462,"line":2122},[460,35290,35291],{"class":942},"    \u002F\u002F拷贝构造函数\n",[460,35293,35294,35296,35298,35300,35302,35304,35306],{"class":462,"line":2144},[460,35295,34936],{"class":929},[460,35297,2174],{"class":466},[460,35299,888],{"class":887},[460,35301,32020],{"class":929},[460,35303,27049],{"class":887},[460,35305,14],{"class":3380},[460,35307,3754],{"class":466},[460,35309,35310],{"class":462,"line":2158},[460,35311,18570],{"class":466},[460,35313,35314],{"class":462,"line":2163},[460,35315,35316],{"class":942},"        \u002F\u002F将传入对象的age赋值给当前对象的age\n",[460,35318,35319,35321,35323],{"class":462,"line":2168},[460,35320,35234],{"class":466},[460,35322,894],{"class":887},[460,35324,35325],{"class":466},"p.age;\n",[460,35327,35328,35330,35332,35335,35337],{"class":462,"line":2183},[460,35329,19972],{"class":466},[460,35331,17750],{"class":887},[460,35333,35334],{"class":1353},"\"Person拷贝构造函数被调用\"",[460,35336,17750],{"class":887},[460,35338,17772],{"class":466},[460,35340,35341],{"class":462,"line":2194},[460,35342,509],{"class":466},[460,35344,35345,35347],{"class":462,"line":2199},[460,35346,18525],{"class":887},[460,35348,24294],{"class":466},[460,35350,35351],{"class":462,"line":2204},[460,35352,20510],{"class":466},[460,35354,35355],{"class":462,"line":2212},[460,35356,35357],{"class":942},"\u002F\u002F调用\n",[460,35359,35360,35362,35364],{"class":462,"line":2257},[460,35361,21870],{"class":887},[460,35363,22094],{"class":929},[460,35365,10758],{"class":466},[460,35367,35368],{"class":462,"line":2285},[460,35369,18115],{"class":466},[460,35371,35372],{"class":462,"line":2298},[460,35373,35374],{"class":942},"    \u002F\u002F Person p1;\u002F\u002F默认构造函数调用\n",[460,35376,35377],{"class":462,"line":2303},[460,35378,821],{"class":466},[460,35380,35381,35383,35385],{"class":462,"line":2308},[460,35382,21870],{"class":887},[460,35384,22163],{"class":929},[460,35386,10758],{"class":466},[460,35388,35389],{"class":462,"line":2318},[460,35390,18115],{"class":466},[460,35392,35393],{"class":462,"line":2333},[460,35394,35395],{"class":942},"    \u002F\u002F1.括号法\n",[460,35397,35398],{"class":462,"line":2338},[460,35399,35400],{"class":942},"    \u002F\u002F Person p2(10);\u002F\u002F有参构造函数调用\n",[460,35402,35403],{"class":462,"line":2343},[460,35404,35405],{"class":942},"    \u002F\u002F Person p3(p2);\u002F\u002F拷贝构造函数调用\n",[460,35407,35408],{"class":462,"line":2353},[460,35409,35410],{"class":942},"    \u002F\u002F cout\u003C\u003C\"p2的age:\"\u003C\u003Cp2.age\u003C\u003Cendl;\n",[460,35412,35413],{"class":462,"line":2368},[460,35414,35415],{"class":942},"    \u002F\u002F cout\u003C\u003C\"p3的age:\"\u003C\u003Cp3.age\u003C\u003Cendl;\n",[460,35417,35418],{"class":462,"line":2381},[460,35419,522],{"emptyLinePlaceholder":521},[460,35421,35422],{"class":462,"line":2394},[460,35423,35424],{"class":942},"    \u002F\u002F注意事项\n",[460,35426,35427],{"class":462,"line":2399},[460,35428,35429],{"class":942},"    \u002F\u002F调用默认构造函数时候，不要加()\n",[460,35431,35432],{"class":462,"line":2404},[460,35433,35434],{"class":942},"    \u002F\u002F因为下面这行代码，编译器会认为是一个函数的声明,不会认为在创建对象\n",[460,35436,35437],{"class":462,"line":2414},[460,35438,35439],{"class":942},"    \u002F\u002F Person p4();\n",[460,35441,35442],{"class":462,"line":2428},[460,35443,522],{"emptyLinePlaceholder":521},[460,35445,35446],{"class":462,"line":2440},[460,35447,35448],{"class":942},"    \u002F\u002F2.显示法\n",[460,35450,35451],{"class":462,"line":2445},[460,35452,35453],{"class":466},"    Person p1;\n",[460,35455,35456,35459,35461,35464,35466,35468],{"class":462,"line":2450},[460,35457,35458],{"class":466},"    Person p2",[460,35460,894],{"class":887},[460,35462,35463],{"class":929},"Person",[460,35465,2174],{"class":466},[460,35467,2096],{"class":900},[460,35469,2254],{"class":466},[460,35471,35472,35475,35477,35479],{"class":462,"line":2460},[460,35473,35474],{"class":466},"    Person p3",[460,35476,894],{"class":887},[460,35478,35463],{"class":929},[460,35480,35481],{"class":466},"(p2);\n",[460,35483,35484],{"class":462,"line":2473},[460,35485,35486],{"class":942},"    \u002F\u002F 如果单独拿出右侧Person(10);，这是个匿名对象\n",[460,35488,35489],{"class":462,"line":2487},[460,35490,522],{"emptyLinePlaceholder":521},[460,35492,35493],{"class":462,"line":2492},[460,35494,35495],{"class":942},"    \u002F\u002F 注意事项2\n",[460,35497,35498],{"class":462,"line":2497},[460,35499,35500],{"class":942},"    \u002F\u002F 不要利用拷贝构造函数  初始化匿名对象\n",[460,35502,35503],{"class":462,"line":2505},[460,35504,35505],{"class":942},"    \u002F\u002F Person(p2);  编译器会认为 Person (p2)===Person p2； 错误的 编译器会认为是对象的声明   \n",[460,35507,35508],{"class":462,"line":2516},[460,35509,522],{"emptyLinePlaceholder":521},[460,35511,35512],{"class":462,"line":2529},[460,35513,35514],{"class":942},"    \u002F\u002F3.隐士转换法\n",[460,35516,35517,35520,35522,35524,35526],{"class":462,"line":2542},[460,35518,35519],{"class":466},"    Person p4",[460,35521,894],{"class":887},[460,35523,2096],{"class":900},[460,35525,16807],{"class":466},[460,35527,35528],{"class":942},"  \u002F\u002F 这里会调用有参构造函数  相当于Person p4=Person(10);\n",[460,35530,35531,35534,35536,35539],{"class":462,"line":2559},[460,35532,35533],{"class":466},"    Person p5",[460,35535,894],{"class":887},[460,35537,35538],{"class":466},"p4;",[460,35540,35541],{"class":942}," \u002F\u002F 这里会调用拷贝构造函数\n",[460,35543,35544],{"class":462,"line":2564},[460,35545,821],{"class":466},[460,35547,35548,35550,35552],{"class":462,"line":2569},[460,35549,16759],{"class":887},[460,35551,18514],{"class":929},[460,35553,10758],{"class":466},[460,35555,35556],{"class":462,"line":2579},[460,35557,18115],{"class":466},[460,35559,35560,35562],{"class":462,"line":2597},[460,35561,22139],{"class":929},[460,35563,22142],{"class":466},[460,35565,35566,35568],{"class":462,"line":2610},[460,35567,22208],{"class":929},[460,35569,22142],{"class":466},[460,35571,35572,35574,35576],{"class":462,"line":2621},[460,35573,20605],{"class":887},[460,35575,2224],{"class":900},[460,35577,1966],{"class":466},[460,35579,35580],{"class":462,"line":2634},[460,35581,821],{"class":466},[14,35583,35584,35587],{},[3944,35585,35586],{},"匿名对象的特点","：当前行执行结束后，系统会立即回收掉匿名对象",[23,35589,35591],{"id":35590},"_823拷贝构造函数","8.2.3拷贝构造函数",[14,35593,35594],{},"C++中拷贝构造函数调用时机通常有三种情况",[40,35596,35597,35600,35603],{},[43,35598,35599],{},"使用一个已经创建完毕的对象来初始化一个新对象",[43,35601,35602],{},"值传递的方式给函数参数传值",[43,35604,35605],{},"以值方式返回局部对象",[451,35607,35609],{"className":16745,"code":35608,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\n\n\u002F\u002F拷贝构造函数调用时机\n\n\u002F\u002F1.使用一个已经创建好的对象来初始化一个新对象\n\u002F\u002F2.值传递的方式给函数参数传值\n\u002F\u002F3.以值方式返回局部对象\nclass Person\n{\npublic:\n    Person()\n    {\n        cout \u003C\u003C \"Person的默认构造函数调用\" \u003C\u003C endl;\n    }\n    \u002F\u002F有参构造\n    Person(int age)\n    {\n        m_Age = age;\n        cout \u003C\u003C \"Person的有参构造函数调用\" \u003C\u003C endl;\n    }\n    \u002F\u002F拷贝构造函数\n    Person(const Person &p)\n    {\n        m_Age = p.m_Age;\n        cout \u003C\u003C \"Person的拷贝构造函数调用\" \u003C\u003C endl;\n    }\n    ~Person()\n    {\n        cout \u003C\u003C \"Person的析构函数调用\" \u003C\u003C endl;\n    }\n    int m_Age;\n};\n\u002F\u002F1.使用一个已经创建好的对象来初始化一个新对象\nvoid test01()\n{\n    Person p1(20);\n    Person p2(p1);\n    cout\u003C\u003C\"P2的年龄为：\"\u003C\u003Cp2.m_Age\u003C\u003Cendl;\n}\n\u002F\u002F 2.值传递的方式给函数参数传值\n\u002F\u002F值传递会拷贝一个新的对象，调用拷贝构造函数\nvoid doWork(Person p)\n{\n    cout \u003C\u003C \"doWork函数调用\" \u003C\u003C endl;\n}\nvoid test02()\n{\n    Person p;\n    doWork(p);\n}\n\u002F\u002F 3.以值方式返回局部对象\nPerson doWork2()\n{\n    Person p1;\n    cout\u003C\u003C(int *)&p1\u003C\u003Cendl;\u002F\u002F打印p1的地址\n    return p1;\u002F\u002F返回局部对象，调用拷贝构造函数\n}\nvoid test03()\n{\n    Person p = doWork2();\n    cout\u003C\u003C(int *)&p\u003C\u003Cendl;\u002F\u002F打印p的地址\n}\n\n\nint main()\n{\n    \u002F\u002F test01();\n    \u002F\u002F test02();\n    test03();\n\u002F\u002F此时编译器进行了优化，返回值优化（RVO），没有调用拷贝构造函数，直接在p的地址上创建了p1对象\n\u002F\u002F 输出结果如下：\n\u002F\u002F Person的默认构造函数调用\n\u002F\u002F 0x7fffffffceec\n\u002F\u002F 0x7fffffffceec\n\u002F\u002F Person的析构函数调用\n\n\u002F\u002F 之前的输出结果如下：\n\u002F\u002F Person的默认构造函数调用\n\u002F\u002F 地址\n\u002F\u002F Person的拷贝构造函数调用\n\u002F\u002F Person的析构函数调用\n\u002F\u002F 地址\n\u002F\u002F (这两次输出的地址也是不同的) \n\u002F\u002F Person的析构函数调用     \n    return 0;\n}\n",[457,35610,35611,35617,35627,35631,35636,35640,35645,35650,35655,35661,35665,35669,35675,35679,35692,35696,35701,35713,35717,35725,35738,35742,35746,35762,35766,35775,35788,35792,35798,35802,35814,35818,35824,35828,35832,35840,35844,35857,35865,35883,35887,35892,35897,35912,35916,35929,35933,35941,35945,35949,35957,35961,35966,35975,35979,35983,36008,36018,36022,36030,36034,36045,36070,36074,36078,36082,36090,36094,36099,36104,36111,36116,36121,36126,36131,36135,36140,36144,36149,36153,36158,36163,36167,36171,36176,36181,36189],{"__ignoreMap":32},[460,35612,35613,35615],{"class":462,"line":463},[460,35614,18491],{"class":887},[460,35616,18494],{"class":1353},[460,35618,35619,35621,35623,35625],{"class":462,"line":476},[460,35620,18499],{"class":887},[460,35622,18502],{"class":887},[460,35624,18505],{"class":929},[460,35626,1966],{"class":466},[460,35628,35629],{"class":462,"line":482},[460,35630,522],{"emptyLinePlaceholder":521},[460,35632,35633],{"class":462,"line":488},[460,35634,35635],{"class":942},"\u002F\u002F拷贝构造函数调用时机\n",[460,35637,35638],{"class":462,"line":494},[460,35639,522],{"emptyLinePlaceholder":521},[460,35641,35642],{"class":462,"line":500},[460,35643,35644],{"class":942},"\u002F\u002F1.使用一个已经创建好的对象来初始化一个新对象\n",[460,35646,35647],{"class":462,"line":506},[460,35648,35649],{"class":942},"\u002F\u002F2.值传递的方式给函数参数传值\n",[460,35651,35652],{"class":462,"line":512},[460,35653,35654],{"class":942},"\u002F\u002F3.以值方式返回局部对象\n",[460,35656,35657,35659],{"class":462,"line":518},[460,35658,31148],{"class":887},[460,35660,31622],{"class":929},[460,35662,35663],{"class":462,"line":525},[460,35664,18115],{"class":466},[460,35666,35667],{"class":462,"line":531},[460,35668,31170],{"class":887},[460,35670,35671,35673],{"class":462,"line":537},[460,35672,34936],{"class":929},[460,35674,10758],{"class":466},[460,35676,35677],{"class":462,"line":543},[460,35678,18570],{"class":466},[460,35680,35681,35683,35685,35688,35690],{"class":462,"line":549},[460,35682,26153],{"class":466},[460,35684,17750],{"class":887},[460,35686,35687],{"class":1353}," \"Person的默认构造函数调用\"",[460,35689,18014],{"class":887},[460,35691,25327],{"class":466},[460,35693,35694],{"class":462,"line":555},[460,35695,509],{"class":466},[460,35697,35698],{"class":462,"line":560},[460,35699,35700],{"class":942},"    \u002F\u002F有参构造\n",[460,35702,35703,35705,35707,35709,35711],{"class":462,"line":566},[460,35704,34936],{"class":929},[460,35706,2174],{"class":466},[460,35708,16759],{"class":887},[460,35710,32139],{"class":3380},[460,35712,3754],{"class":466},[460,35714,35715],{"class":462,"line":572},[460,35716,18570],{"class":466},[460,35718,35719,35721,35723],{"class":462,"line":578},[460,35720,32193],{"class":466},[460,35722,894],{"class":887},[460,35724,24294],{"class":466},[460,35726,35727,35729,35731,35734,35736],{"class":462,"line":812},[460,35728,26153],{"class":466},[460,35730,17750],{"class":887},[460,35732,35733],{"class":1353}," \"Person的有参构造函数调用\"",[460,35735,18014],{"class":887},[460,35737,25327],{"class":466},[460,35739,35740],{"class":462,"line":818},[460,35741,509],{"class":466},[460,35743,35744],{"class":462,"line":824},[460,35745,35291],{"class":942},[460,35747,35748,35750,35752,35754,35756,35758,35760],{"class":462,"line":2074},[460,35749,34936],{"class":929},[460,35751,2174],{"class":466},[460,35753,888],{"class":887},[460,35755,32020],{"class":929},[460,35757,27049],{"class":887},[460,35759,14],{"class":3380},[460,35761,3754],{"class":466},[460,35763,35764],{"class":462,"line":2088},[460,35765,18570],{"class":466},[460,35767,35768,35770,35772],{"class":462,"line":2103},[460,35769,32193],{"class":466},[460,35771,894],{"class":887},[460,35773,35774],{"class":466}," p.m_Age;\n",[460,35776,35777,35779,35781,35784,35786],{"class":462,"line":2122},[460,35778,26153],{"class":466},[460,35780,17750],{"class":887},[460,35782,35783],{"class":1353}," \"Person的拷贝构造函数调用\"",[460,35785,18014],{"class":887},[460,35787,25327],{"class":466},[460,35789,35790],{"class":462,"line":2144},[460,35791,509],{"class":466},[460,35793,35794,35796],{"class":462,"line":2158},[460,35795,34969],{"class":929},[460,35797,10758],{"class":466},[460,35799,35800],{"class":462,"line":2163},[460,35801,18570],{"class":466},[460,35803,35804,35806,35808,35810,35812],{"class":462,"line":2168},[460,35805,26153],{"class":466},[460,35807,17750],{"class":887},[460,35809,34984],{"class":1353},[460,35811,18014],{"class":887},[460,35813,25327],{"class":466},[460,35815,35816],{"class":462,"line":2183},[460,35817,509],{"class":466},[460,35819,35820,35822],{"class":462,"line":2194},[460,35821,18525],{"class":887},[460,35823,32116],{"class":466},[460,35825,35826],{"class":462,"line":2199},[460,35827,20510],{"class":466},[460,35829,35830],{"class":462,"line":2204},[460,35831,35644],{"class":942},[460,35833,35834,35836,35838],{"class":462,"line":2212},[460,35835,21870],{"class":887},[460,35837,22094],{"class":929},[460,35839,10758],{"class":466},[460,35841,35842],{"class":462,"line":2257},[460,35843,18115],{"class":466},[460,35845,35846,35849,35851,35853,35855],{"class":462,"line":2285},[460,35847,35848],{"class":466},"    Person ",[460,35850,23628],{"class":929},[460,35852,2174],{"class":466},[460,35854,2110],{"class":900},[460,35856,2254],{"class":466},[460,35858,35859,35861,35863],{"class":462,"line":2298},[460,35860,35848],{"class":466},[460,35862,23531],{"class":929},[460,35864,33932],{"class":466},[460,35866,35867,35869,35871,35874,35876,35879,35881],{"class":462,"line":2303},[460,35868,18120],{"class":466},[460,35870,17750],{"class":887},[460,35872,35873],{"class":1353},"\"P2的年龄为：\"",[460,35875,17750],{"class":887},[460,35877,35878],{"class":466},"p2.m_Age",[460,35880,17750],{"class":887},[460,35882,17772],{"class":466},[460,35884,35885],{"class":462,"line":2308},[460,35886,821],{"class":466},[460,35888,35889],{"class":462,"line":2318},[460,35890,35891],{"class":942},"\u002F\u002F 2.值传递的方式给函数参数传值\n",[460,35893,35894],{"class":462,"line":2333},[460,35895,35896],{"class":942},"\u002F\u002F值传递会拷贝一个新的对象，调用拷贝构造函数\n",[460,35898,35899,35901,35904,35906,35908,35910],{"class":462,"line":2338},[460,35900,21870],{"class":887},[460,35902,35903],{"class":929}," doWork",[460,35905,2174],{"class":466},[460,35907,35463],{"class":929},[460,35909,12687],{"class":3380},[460,35911,3754],{"class":466},[460,35913,35914],{"class":462,"line":2343},[460,35915,18115],{"class":466},[460,35917,35918,35920,35922,35925,35927],{"class":462,"line":2353},[460,35919,23029],{"class":466},[460,35921,17750],{"class":887},[460,35923,35924],{"class":1353}," \"doWork函数调用\"",[460,35926,18014],{"class":887},[460,35928,25327],{"class":466},[460,35930,35931],{"class":462,"line":2368},[460,35932,821],{"class":466},[460,35934,35935,35937,35939],{"class":462,"line":2381},[460,35936,21870],{"class":887},[460,35938,22163],{"class":929},[460,35940,10758],{"class":466},[460,35942,35943],{"class":462,"line":2394},[460,35944,18115],{"class":466},[460,35946,35947],{"class":462,"line":2399},[460,35948,31764],{"class":466},[460,35950,35951,35954],{"class":462,"line":2404},[460,35952,35953],{"class":929},"    doWork",[460,35955,35956],{"class":466},"(p);\n",[460,35958,35959],{"class":462,"line":2414},[460,35960,821],{"class":466},[460,35962,35963],{"class":462,"line":2428},[460,35964,35965],{"class":942},"\u002F\u002F 3.以值方式返回局部对象\n",[460,35967,35968,35970,35973],{"class":462,"line":2440},[460,35969,35463],{"class":929},[460,35971,35972],{"class":929}," doWork2",[460,35974,10758],{"class":466},[460,35976,35977],{"class":462,"line":2445},[460,35978,18115],{"class":466},[460,35980,35981],{"class":462,"line":2450},[460,35982,35453],{"class":466},[460,35984,35985,35987,35989,35991,35993,35995,35997,35999,36001,36003,36005],{"class":462,"line":2460},[460,35986,18120],{"class":466},[460,35988,17750],{"class":887},[460,35990,2174],{"class":466},[460,35992,16759],{"class":887},[460,35994,8325],{"class":887},[460,35996,8411],{"class":466},[460,35998,17090],{"class":887},[460,36000,23628],{"class":466},[460,36002,17750],{"class":887},[460,36004,17815],{"class":466},[460,36006,36007],{"class":942},"\u002F\u002F打印p1的地址\n",[460,36009,36010,36012,36015],{"class":462,"line":2473},[460,36011,20605],{"class":887},[460,36013,36014],{"class":466}," p1;",[460,36016,36017],{"class":942},"\u002F\u002F返回局部对象，调用拷贝构造函数\n",[460,36019,36020],{"class":462,"line":2487},[460,36021,821],{"class":466},[460,36023,36024,36026,36028],{"class":462,"line":2492},[460,36025,21870],{"class":887},[460,36027,22235],{"class":929},[460,36029,10758],{"class":466},[460,36031,36032],{"class":462,"line":2497},[460,36033,18115],{"class":466},[460,36035,36036,36039,36041,36043],{"class":462,"line":2505},[460,36037,36038],{"class":466},"    Person p ",[460,36040,894],{"class":887},[460,36042,35972],{"class":929},[460,36044,22142],{"class":466},[460,36046,36047,36049,36051,36053,36055,36057,36059,36061,36063,36065,36067],{"class":462,"line":2516},[460,36048,18120],{"class":466},[460,36050,17750],{"class":887},[460,36052,2174],{"class":466},[460,36054,16759],{"class":887},[460,36056,8325],{"class":887},[460,36058,8411],{"class":466},[460,36060,17090],{"class":887},[460,36062,14],{"class":466},[460,36064,17750],{"class":887},[460,36066,17815],{"class":466},[460,36068,36069],{"class":942},"\u002F\u002F打印p的地址\n",[460,36071,36072],{"class":462,"line":2529},[460,36073,821],{"class":466},[460,36075,36076],{"class":462,"line":2542},[460,36077,522],{"emptyLinePlaceholder":521},[460,36079,36080],{"class":462,"line":2559},[460,36081,522],{"emptyLinePlaceholder":521},[460,36083,36084,36086,36088],{"class":462,"line":2564},[460,36085,16759],{"class":887},[460,36087,18514],{"class":929},[460,36089,10758],{"class":466},[460,36091,36092],{"class":462,"line":2569},[460,36093,18115],{"class":466},[460,36095,36096],{"class":462,"line":2579},[460,36097,36098],{"class":942},"    \u002F\u002F test01();\n",[460,36100,36101],{"class":462,"line":2597},[460,36102,36103],{"class":942},"    \u002F\u002F test02();\n",[460,36105,36106,36109],{"class":462,"line":2610},[460,36107,36108],{"class":929},"    test03",[460,36110,22142],{"class":466},[460,36112,36113],{"class":462,"line":2621},[460,36114,36115],{"class":942},"\u002F\u002F此时编译器进行了优化，返回值优化（RVO），没有调用拷贝构造函数，直接在p的地址上创建了p1对象\n",[460,36117,36118],{"class":462,"line":2634},[460,36119,36120],{"class":942},"\u002F\u002F 输出结果如下：\n",[460,36122,36123],{"class":462,"line":2648},[460,36124,36125],{"class":942},"\u002F\u002F Person的默认构造函数调用\n",[460,36127,36128],{"class":462,"line":2653},[460,36129,36130],{"class":942},"\u002F\u002F 0x7fffffffceec\n",[460,36132,36133],{"class":462,"line":2658},[460,36134,36130],{"class":942},[460,36136,36137],{"class":462,"line":2670},[460,36138,36139],{"class":942},"\u002F\u002F Person的析构函数调用\n",[460,36141,36142],{"class":462,"line":2683},[460,36143,522],{"emptyLinePlaceholder":521},[460,36145,36146],{"class":462,"line":2695},[460,36147,36148],{"class":942},"\u002F\u002F 之前的输出结果如下：\n",[460,36150,36151],{"class":462,"line":2700},[460,36152,36125],{"class":942},[460,36154,36155],{"class":462,"line":2709},[460,36156,36157],{"class":942},"\u002F\u002F 地址\n",[460,36159,36160],{"class":462,"line":2718},[460,36161,36162],{"class":942},"\u002F\u002F Person的拷贝构造函数调用\n",[460,36164,36165],{"class":462,"line":2723},[460,36166,36139],{"class":942},[460,36168,36169],{"class":462,"line":2732},[460,36170,36157],{"class":942},[460,36172,36173],{"class":462,"line":2750},[460,36174,36175],{"class":942},"\u002F\u002F (这两次输出的地址也是不同的) \n",[460,36177,36178],{"class":462,"line":2782},[460,36179,36180],{"class":942},"\u002F\u002F Person的析构函数调用     \n",[460,36182,36183,36185,36187],{"class":462,"line":2809},[460,36184,20605],{"class":887},[460,36186,2224],{"class":900},[460,36188,1966],{"class":466},[460,36190,36191],{"class":462,"line":2836},[460,36192,821],{"class":466},[14,36194,36195],{},"简化版理解",[451,36197,36199],{"className":16745,"code":36198,"language":16747,"meta":32,"style":32},"class Person {\npublic:\n    Person() {\n        cout \u003C\u003C \"无参构造函数!\" \u003C\u003C endl;\n        mAge = 0;\n    }\n    Person(int age) {\n        cout \u003C\u003C \"有参构造函数!\" \u003C\u003C endl;\n        mAge = age;\n    }\n    Person(const Person& p) {\n        cout \u003C\u003C \"拷贝构造函数!\" \u003C\u003C endl;\n        mAge = p.mAge;\n    }\n    \u002F\u002F析构函数在释放内存之前调用\n    ~Person() {\n        cout \u003C\u003C \"析构函数!\" \u003C\u003C endl;\n    }\npublic:\n    int mAge;\n};\n\n\u002F\u002F1. 使用一个已经创建完毕的对象来初始化一个新对象\nvoid test01() {\n\n    Person man(100); \u002F\u002Fp对象已经创建完毕\n    Person newman(man); \u002F\u002F调用拷贝构造函数\n    Person newman2 = man; \u002F\u002F拷贝构造\n\n    \u002F\u002FPerson newman3;\n    \u002F\u002Fnewman3 = man; \u002F\u002F不是调用拷贝构造函数，赋值操作\n}\n\n\u002F\u002F2. 值传递的方式给函数参数传值\n\u002F\u002F相当于Person p1 = p;\nvoid doWork(Person p1) {}\nvoid test02() {\n    Person p; \u002F\u002F无参构造函数\n    doWork(p);\n}\n\n\u002F\u002F3. 以值方式返回局部对象\nPerson doWork2()\n{\n    Person p1;\n    cout \u003C\u003C (int *)&p1 \u003C\u003C endl;\n    return p1;\n}\n\nvoid test03()\n{\n    Person p = doWork2();\n    cout \u003C\u003C (int *)&p \u003C\u003C endl;\n}\n\n\nint main() {\n\n    \u002F\u002Ftest01();\n    \u002F\u002Ftest02();\n    test03();\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,36200,36201,36209,36213,36219,36232,36243,36247,36259,36272,36280,36284,36300,36313,36322,36326,36331,36337,36350,36354,36358,36365,36369,36373,36378,36386,36390,36406,36419,36432,36436,36441,36449,36453,36457,36462,36467,36483,36491,36498,36504,36508,36512,36517,36525,36529,36533,36556,36563,36567,36571,36579,36583,36593,36615,36619,36623,36627,36635,36639,36644,36649,36655,36659,36669,36673,36681],{"__ignoreMap":32},[460,36202,36203,36205,36207],{"class":462,"line":463},[460,36204,31148],{"class":887},[460,36206,32020],{"class":929},[460,36208,1348],{"class":466},[460,36210,36211],{"class":462,"line":476},[460,36212,31170],{"class":887},[460,36214,36215,36217],{"class":462,"line":482},[460,36216,34936],{"class":929},[460,36218,11374],{"class":466},[460,36220,36221,36223,36225,36228,36230],{"class":462,"line":488},[460,36222,26153],{"class":466},[460,36224,17750],{"class":887},[460,36226,36227],{"class":1353}," \"无参构造函数!\"",[460,36229,18014],{"class":887},[460,36231,25327],{"class":466},[460,36233,36234,36237,36239,36241],{"class":462,"line":494},[460,36235,36236],{"class":466},"        mAge ",[460,36238,894],{"class":887},[460,36240,2224],{"class":900},[460,36242,1966],{"class":466},[460,36244,36245],{"class":462,"line":500},[460,36246,509],{"class":466},[460,36248,36249,36251,36253,36255,36257],{"class":462,"line":506},[460,36250,34936],{"class":929},[460,36252,2174],{"class":466},[460,36254,16759],{"class":887},[460,36256,32139],{"class":3380},[460,36258,2180],{"class":466},[460,36260,36261,36263,36265,36268,36270],{"class":462,"line":512},[460,36262,26153],{"class":466},[460,36264,17750],{"class":887},[460,36266,36267],{"class":1353}," \"有参构造函数!\"",[460,36269,18014],{"class":887},[460,36271,25327],{"class":466},[460,36273,36274,36276,36278],{"class":462,"line":518},[460,36275,36236],{"class":466},[460,36277,894],{"class":887},[460,36279,24294],{"class":466},[460,36281,36282],{"class":462,"line":525},[460,36283,509],{"class":466},[460,36285,36286,36288,36290,36292,36294,36296,36298],{"class":462,"line":531},[460,36287,34936],{"class":929},[460,36289,2174],{"class":466},[460,36291,888],{"class":887},[460,36293,32020],{"class":929},[460,36295,17090],{"class":887},[460,36297,12687],{"class":3380},[460,36299,2180],{"class":466},[460,36301,36302,36304,36306,36309,36311],{"class":462,"line":537},[460,36303,26153],{"class":466},[460,36305,17750],{"class":887},[460,36307,36308],{"class":1353}," \"拷贝构造函数!\"",[460,36310,18014],{"class":887},[460,36312,25327],{"class":466},[460,36314,36315,36317,36319],{"class":462,"line":543},[460,36316,36236],{"class":466},[460,36318,894],{"class":887},[460,36320,36321],{"class":466}," p.mAge;\n",[460,36323,36324],{"class":462,"line":549},[460,36325,509],{"class":466},[460,36327,36328],{"class":462,"line":555},[460,36329,36330],{"class":942},"    \u002F\u002F析构函数在释放内存之前调用\n",[460,36332,36333,36335],{"class":462,"line":560},[460,36334,34969],{"class":929},[460,36336,11374],{"class":466},[460,36338,36339,36341,36343,36346,36348],{"class":462,"line":566},[460,36340,26153],{"class":466},[460,36342,17750],{"class":887},[460,36344,36345],{"class":1353}," \"析构函数!\"",[460,36347,18014],{"class":887},[460,36349,25327],{"class":466},[460,36351,36352],{"class":462,"line":572},[460,36353,509],{"class":466},[460,36355,36356],{"class":462,"line":578},[460,36357,31170],{"class":887},[460,36359,36360,36362],{"class":462,"line":812},[460,36361,18525],{"class":887},[460,36363,36364],{"class":466}," mAge;\n",[460,36366,36367],{"class":462,"line":818},[460,36368,20510],{"class":466},[460,36370,36371],{"class":462,"line":824},[460,36372,522],{"emptyLinePlaceholder":521},[460,36374,36375],{"class":462,"line":2074},[460,36376,36377],{"class":942},"\u002F\u002F1. 使用一个已经创建完毕的对象来初始化一个新对象\n",[460,36379,36380,36382,36384],{"class":462,"line":2088},[460,36381,21870],{"class":887},[460,36383,22094],{"class":929},[460,36385,11374],{"class":466},[460,36387,36388],{"class":462,"line":2103},[460,36389,522],{"emptyLinePlaceholder":521},[460,36391,36392,36394,36397,36399,36401,36403],{"class":462,"line":2122},[460,36393,35848],{"class":466},[460,36395,36396],{"class":929},"man",[460,36398,2174],{"class":466},[460,36400,2325],{"class":900},[460,36402,22470],{"class":466},[460,36404,36405],{"class":942}," \u002F\u002Fp对象已经创建完毕\n",[460,36407,36408,36410,36413,36416],{"class":462,"line":2144},[460,36409,35848],{"class":466},[460,36411,36412],{"class":929},"newman",[460,36414,36415],{"class":466},"(man);",[460,36417,36418],{"class":942}," \u002F\u002F调用拷贝构造函数\n",[460,36420,36421,36424,36426,36429],{"class":462,"line":2158},[460,36422,36423],{"class":466},"    Person newman2 ",[460,36425,894],{"class":887},[460,36427,36428],{"class":466}," man;",[460,36430,36431],{"class":942}," \u002F\u002F拷贝构造\n",[460,36433,36434],{"class":462,"line":2163},[460,36435,522],{"emptyLinePlaceholder":521},[460,36437,36438],{"class":462,"line":2168},[460,36439,36440],{"class":942},"    \u002F\u002FPerson newman3;\n",[460,36442,36443,36446],{"class":462,"line":2183},[460,36444,36445],{"class":942},"    \u002F\u002Fnewman3 = man;",[460,36447,36448],{"class":942}," \u002F\u002F不是调用拷贝构造函数，赋值操作\n",[460,36450,36451],{"class":462,"line":2194},[460,36452,821],{"class":466},[460,36454,36455],{"class":462,"line":2199},[460,36456,522],{"emptyLinePlaceholder":521},[460,36458,36459],{"class":462,"line":2204},[460,36460,36461],{"class":942},"\u002F\u002F2. 值传递的方式给函数参数传值\n",[460,36463,36464],{"class":462,"line":2212},[460,36465,36466],{"class":942},"\u002F\u002F相当于Person p1 = p;\n",[460,36468,36469,36471,36473,36475,36477,36480],{"class":462,"line":2257},[460,36470,21870],{"class":887},[460,36472,35903],{"class":929},[460,36474,2174],{"class":466},[460,36476,35463],{"class":929},[460,36478,36479],{"class":3380}," p1",[460,36481,36482],{"class":466},") {}\n",[460,36484,36485,36487,36489],{"class":462,"line":2285},[460,36486,21870],{"class":887},[460,36488,22163],{"class":929},[460,36490,11374],{"class":466},[460,36492,36493,36495],{"class":462,"line":2298},[460,36494,35021],{"class":466},[460,36496,36497],{"class":942}," \u002F\u002F无参构造函数\n",[460,36499,36500,36502],{"class":462,"line":2303},[460,36501,35953],{"class":929},[460,36503,35956],{"class":466},[460,36505,36506],{"class":462,"line":2308},[460,36507,821],{"class":466},[460,36509,36510],{"class":462,"line":2318},[460,36511,522],{"emptyLinePlaceholder":521},[460,36513,36514],{"class":462,"line":2333},[460,36515,36516],{"class":942},"\u002F\u002F3. 以值方式返回局部对象\n",[460,36518,36519,36521,36523],{"class":462,"line":2338},[460,36520,35463],{"class":929},[460,36522,35972],{"class":929},[460,36524,10758],{"class":466},[460,36526,36527],{"class":462,"line":2343},[460,36528,18115],{"class":466},[460,36530,36531],{"class":462,"line":2353},[460,36532,35453],{"class":466},[460,36534,36535,36537,36539,36541,36543,36545,36547,36549,36552,36554],{"class":462,"line":2368},[460,36536,23029],{"class":466},[460,36538,17750],{"class":887},[460,36540,11704],{"class":466},[460,36542,16759],{"class":887},[460,36544,8325],{"class":887},[460,36546,8411],{"class":466},[460,36548,17090],{"class":887},[460,36550,36551],{"class":466},"p1 ",[460,36553,17750],{"class":887},[460,36555,25327],{"class":466},[460,36557,36558,36560],{"class":462,"line":2381},[460,36559,20605],{"class":887},[460,36561,36562],{"class":466}," p1;\n",[460,36564,36565],{"class":462,"line":2394},[460,36566,821],{"class":466},[460,36568,36569],{"class":462,"line":2399},[460,36570,522],{"emptyLinePlaceholder":521},[460,36572,36573,36575,36577],{"class":462,"line":2404},[460,36574,21870],{"class":887},[460,36576,22235],{"class":929},[460,36578,10758],{"class":466},[460,36580,36581],{"class":462,"line":2414},[460,36582,18115],{"class":466},[460,36584,36585,36587,36589,36591],{"class":462,"line":2428},[460,36586,36038],{"class":466},[460,36588,894],{"class":887},[460,36590,35972],{"class":929},[460,36592,22142],{"class":466},[460,36594,36595,36597,36599,36601,36603,36605,36607,36609,36611,36613],{"class":462,"line":2440},[460,36596,23029],{"class":466},[460,36598,17750],{"class":887},[460,36600,11704],{"class":466},[460,36602,16759],{"class":887},[460,36604,8325],{"class":887},[460,36606,8411],{"class":466},[460,36608,17090],{"class":887},[460,36610,27910],{"class":466},[460,36612,17750],{"class":887},[460,36614,25327],{"class":466},[460,36616,36617],{"class":462,"line":2445},[460,36618,821],{"class":466},[460,36620,36621],{"class":462,"line":2450},[460,36622,522],{"emptyLinePlaceholder":521},[460,36624,36625],{"class":462,"line":2460},[460,36626,522],{"emptyLinePlaceholder":521},[460,36628,36629,36631,36633],{"class":462,"line":2473},[460,36630,16759],{"class":887},[460,36632,18514],{"class":929},[460,36634,11374],{"class":466},[460,36636,36637],{"class":462,"line":2487},[460,36638,522],{"emptyLinePlaceholder":521},[460,36640,36641],{"class":462,"line":2492},[460,36642,36643],{"class":942},"    \u002F\u002Ftest01();\n",[460,36645,36646],{"class":462,"line":2497},[460,36647,36648],{"class":942},"    \u002F\u002Ftest02();\n",[460,36650,36651,36653],{"class":462,"line":2505},[460,36652,36108],{"class":929},[460,36654,22142],{"class":466},[460,36656,36657],{"class":462,"line":2516},[460,36658,522],{"emptyLinePlaceholder":521},[460,36660,36661,36663,36665,36667],{"class":462,"line":2529},[460,36662,18839],{"class":929},[460,36664,2174],{"class":466},[460,36666,18844],{"class":1353},[460,36668,2254],{"class":466},[460,36670,36671],{"class":462,"line":2542},[460,36672,522],{"emptyLinePlaceholder":521},[460,36674,36675,36677,36679],{"class":462,"line":2559},[460,36676,20605],{"class":887},[460,36678,2224],{"class":900},[460,36680,1966],{"class":466},[460,36682,36683],{"class":462,"line":2564},[460,36684,821],{"class":466},[23,36686,36688],{"id":36687},"_824构造函数的调用规则","8.2.4构造函数的调用规则",[14,36690,36691],{},"默认情况下，c++编译器至少给一个类添加3个函数",[14,36693,36694],{},"1．默认构造函数(无参，函数体为空)",[14,36696,36697],{},"2．默认析构函数(无参，函数体为空)",[14,36699,36700],{},"3．默认拷贝构造函数，对属性进行值拷贝  (值拷贝)",[14,36702,36703],{},"构造函数调用规则如下：",[40,36705,36706,36709],{},[43,36707,36708],{},"如果用户定义有参构造函数，c++不在提供默认无参构造，但是会提供默认拷贝构造",[43,36710,36711],{},"如果用户定义拷贝构造函数，c++不会再提供其他构造函数",[451,36713,36715],{"className":16745,"code":36714,"language":16747,"meta":32,"style":32},"class Person {\npublic:\n    \u002F\u002F无参（默认）构造函数\n    Person() {\n        cout \u003C\u003C \"无参构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F有参构造函数\n    Person(int a) {\n        age = a;\n        cout \u003C\u003C \"有参构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F拷贝构造函数\n    Person(const Person& p) {\n        age = p.age;\n        cout \u003C\u003C \"拷贝构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F析构函数\n    ~Person() {\n        cout \u003C\u003C \"析构函数!\" \u003C\u003C endl;\n    }\npublic:\n    int age;\n};\n\nvoid test01()\n{\n    Person p1(18);\n    \u002F\u002F如果不写拷贝构造，编译器会自动添加拷贝构造，并且做浅拷贝操作\n    Person p2(p1);\n\n    cout \u003C\u003C \"p2的年龄为： \" \u003C\u003C p2.age \u003C\u003C endl;\n}\n\nvoid test02()\n{\n    \u002F\u002F如果用户提供有参构造，编译器不会提供默认构造，会提供拷贝构造\n    Person p1; \u002F\u002F此时如果用户自己没有提供默认构造，会出错\n    Person p2(10); \u002F\u002F用户提供的有参\n    Person p3(p2); \u002F\u002F此时如果用户没有提供拷贝构造，编译器会提供\n\n    \u002F\u002F如果用户提供拷贝构造，编译器不会提供其他构造函数\n    Person p4; \u002F\u002F此时如果用户自己没有提供默认构造，会出错\n    Person p5(10); \u002F\u002F此时如果用户自己没有提供有参，会出错\n    Person p6(p5); \u002F\u002F用户自己提供拷贝构造\n}\n\nint main() {\n\n    test01();\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,36716,36717,36725,36729,36734,36740,36752,36756,36761,36773,36782,36794,36798,36802,36818,36827,36839,36843,36847,36853,36865,36869,36873,36879,36883,36887,36895,36899,36911,36916,36924,36928,36946,36950,36954,36962,36966,36971,36979,36994,37007,37011,37016,37023,37039,37052,37056,37060,37068,37072,37078,37082,37092,37096,37104],{"__ignoreMap":32},[460,36718,36719,36721,36723],{"class":462,"line":463},[460,36720,31148],{"class":887},[460,36722,32020],{"class":929},[460,36724,1348],{"class":466},[460,36726,36727],{"class":462,"line":476},[460,36728,31170],{"class":887},[460,36730,36731],{"class":462,"line":482},[460,36732,36733],{"class":942},"    \u002F\u002F无参（默认）构造函数\n",[460,36735,36736,36738],{"class":462,"line":488},[460,36737,34936],{"class":929},[460,36739,11374],{"class":466},[460,36741,36742,36744,36746,36748,36750],{"class":462,"line":494},[460,36743,26153],{"class":466},[460,36745,17750],{"class":887},[460,36747,36227],{"class":1353},[460,36749,18014],{"class":887},[460,36751,25327],{"class":466},[460,36753,36754],{"class":462,"line":500},[460,36755,509],{"class":466},[460,36757,36758],{"class":462,"line":506},[460,36759,36760],{"class":942},"    \u002F\u002F有参构造函数\n",[460,36762,36763,36765,36767,36769,36771],{"class":462,"line":512},[460,36764,34936],{"class":929},[460,36766,2174],{"class":466},[460,36768,16759],{"class":887},[460,36770,2574],{"class":3380},[460,36772,2180],{"class":466},[460,36774,36775,36778,36780],{"class":462,"line":518},[460,36776,36777],{"class":466},"        age ",[460,36779,894],{"class":887},[460,36781,18002],{"class":466},[460,36783,36784,36786,36788,36790,36792],{"class":462,"line":525},[460,36785,26153],{"class":466},[460,36787,17750],{"class":887},[460,36789,36267],{"class":1353},[460,36791,18014],{"class":887},[460,36793,25327],{"class":466},[460,36795,36796],{"class":462,"line":531},[460,36797,509],{"class":466},[460,36799,36800],{"class":462,"line":537},[460,36801,35291],{"class":942},[460,36803,36804,36806,36808,36810,36812,36814,36816],{"class":462,"line":543},[460,36805,34936],{"class":929},[460,36807,2174],{"class":466},[460,36809,888],{"class":887},[460,36811,32020],{"class":929},[460,36813,17090],{"class":887},[460,36815,12687],{"class":3380},[460,36817,2180],{"class":466},[460,36819,36820,36822,36824],{"class":462,"line":549},[460,36821,36777],{"class":466},[460,36823,894],{"class":887},[460,36825,36826],{"class":466}," p.age;\n",[460,36828,36829,36831,36833,36835,36837],{"class":462,"line":555},[460,36830,26153],{"class":466},[460,36832,17750],{"class":887},[460,36834,36308],{"class":1353},[460,36836,18014],{"class":887},[460,36838,25327],{"class":466},[460,36840,36841],{"class":462,"line":560},[460,36842,509],{"class":466},[460,36844,36845],{"class":462,"line":566},[460,36846,34964],{"class":942},[460,36848,36849,36851],{"class":462,"line":572},[460,36850,34969],{"class":929},[460,36852,11374],{"class":466},[460,36854,36855,36857,36859,36861,36863],{"class":462,"line":578},[460,36856,26153],{"class":466},[460,36858,17750],{"class":887},[460,36860,36345],{"class":1353},[460,36862,18014],{"class":887},[460,36864,25327],{"class":466},[460,36866,36867],{"class":462,"line":812},[460,36868,509],{"class":466},[460,36870,36871],{"class":462,"line":818},[460,36872,31170],{"class":887},[460,36874,36875,36877],{"class":462,"line":824},[460,36876,18525],{"class":887},[460,36878,24294],{"class":466},[460,36880,36881],{"class":462,"line":2074},[460,36882,20510],{"class":466},[460,36884,36885],{"class":462,"line":2088},[460,36886,522],{"emptyLinePlaceholder":521},[460,36888,36889,36891,36893],{"class":462,"line":2103},[460,36890,21870],{"class":887},[460,36892,22094],{"class":929},[460,36894,10758],{"class":466},[460,36896,36897],{"class":462,"line":2122},[460,36898,18115],{"class":466},[460,36900,36901,36903,36905,36907,36909],{"class":462,"line":2144},[460,36902,35848],{"class":466},[460,36904,23628],{"class":929},[460,36906,2174],{"class":466},[460,36908,2361],{"class":900},[460,36910,2254],{"class":466},[460,36912,36913],{"class":462,"line":2158},[460,36914,36915],{"class":942},"    \u002F\u002F如果不写拷贝构造，编译器会自动添加拷贝构造，并且做浅拷贝操作\n",[460,36917,36918,36920,36922],{"class":462,"line":2163},[460,36919,35848],{"class":466},[460,36921,23531],{"class":929},[460,36923,33932],{"class":466},[460,36925,36926],{"class":462,"line":2168},[460,36927,522],{"emptyLinePlaceholder":521},[460,36929,36930,36932,36934,36937,36939,36942,36944],{"class":462,"line":2183},[460,36931,23029],{"class":466},[460,36933,17750],{"class":887},[460,36935,36936],{"class":1353}," \"p2的年龄为： \"",[460,36938,18014],{"class":887},[460,36940,36941],{"class":466}," p2.age ",[460,36943,17750],{"class":887},[460,36945,25327],{"class":466},[460,36947,36948],{"class":462,"line":2194},[460,36949,821],{"class":466},[460,36951,36952],{"class":462,"line":2199},[460,36953,522],{"emptyLinePlaceholder":521},[460,36955,36956,36958,36960],{"class":462,"line":2204},[460,36957,21870],{"class":887},[460,36959,22163],{"class":929},[460,36961,10758],{"class":466},[460,36963,36964],{"class":462,"line":2212},[460,36965,18115],{"class":466},[460,36967,36968],{"class":462,"line":2257},[460,36969,36970],{"class":942},"    \u002F\u002F如果用户提供有参构造，编译器不会提供默认构造，会提供拷贝构造\n",[460,36972,36973,36976],{"class":462,"line":2285},[460,36974,36975],{"class":466},"    Person p1;",[460,36977,36978],{"class":942}," \u002F\u002F此时如果用户自己没有提供默认构造，会出错\n",[460,36980,36981,36983,36985,36987,36989,36991],{"class":462,"line":2298},[460,36982,35848],{"class":466},[460,36984,23531],{"class":929},[460,36986,2174],{"class":466},[460,36988,2096],{"class":900},[460,36990,22470],{"class":466},[460,36992,36993],{"class":942}," \u002F\u002F用户提供的有参\n",[460,36995,36996,36998,37001,37004],{"class":462,"line":2303},[460,36997,35848],{"class":466},[460,36999,37000],{"class":929},"p3",[460,37002,37003],{"class":466},"(p2);",[460,37005,37006],{"class":942}," \u002F\u002F此时如果用户没有提供拷贝构造，编译器会提供\n",[460,37008,37009],{"class":462,"line":2308},[460,37010,522],{"emptyLinePlaceholder":521},[460,37012,37013],{"class":462,"line":2318},[460,37014,37015],{"class":942},"    \u002F\u002F如果用户提供拷贝构造，编译器不会提供其他构造函数\n",[460,37017,37018,37021],{"class":462,"line":2333},[460,37019,37020],{"class":466},"    Person p4;",[460,37022,36978],{"class":942},[460,37024,37025,37027,37030,37032,37034,37036],{"class":462,"line":2338},[460,37026,35848],{"class":466},[460,37028,37029],{"class":929},"p5",[460,37031,2174],{"class":466},[460,37033,2096],{"class":900},[460,37035,22470],{"class":466},[460,37037,37038],{"class":942}," \u002F\u002F此时如果用户自己没有提供有参，会出错\n",[460,37040,37041,37043,37046,37049],{"class":462,"line":2343},[460,37042,35848],{"class":466},[460,37044,37045],{"class":929},"p6",[460,37047,37048],{"class":466},"(p5);",[460,37050,37051],{"class":942}," \u002F\u002F用户自己提供拷贝构造\n",[460,37053,37054],{"class":462,"line":2353},[460,37055,821],{"class":466},[460,37057,37058],{"class":462,"line":2368},[460,37059,522],{"emptyLinePlaceholder":521},[460,37061,37062,37064,37066],{"class":462,"line":2381},[460,37063,16759],{"class":887},[460,37065,18514],{"class":929},[460,37067,11374],{"class":466},[460,37069,37070],{"class":462,"line":2394},[460,37071,522],{"emptyLinePlaceholder":521},[460,37073,37074,37076],{"class":462,"line":2399},[460,37075,22139],{"class":929},[460,37077,22142],{"class":466},[460,37079,37080],{"class":462,"line":2404},[460,37081,522],{"emptyLinePlaceholder":521},[460,37083,37084,37086,37088,37090],{"class":462,"line":2414},[460,37085,18839],{"class":929},[460,37087,2174],{"class":466},[460,37089,18844],{"class":1353},[460,37091,2254],{"class":466},[460,37093,37094],{"class":462,"line":2428},[460,37095,522],{"emptyLinePlaceholder":521},[460,37097,37098,37100,37102],{"class":462,"line":2440},[460,37099,20605],{"class":887},[460,37101,2224],{"class":900},[460,37103,1966],{"class":466},[460,37105,37106],{"class":462,"line":2445},[460,37107,821],{"class":466},[23,37109,37111],{"id":37110},"_825深拷贝和浅拷贝","8.2.5深拷贝和浅拷贝",[14,37113,37114],{},"浅拷贝：简单的赋值拷贝操作",[14,37116,37117],{},"深拷贝：在堆区重新申请空间，进行拷贝操作",[451,37119,37121],{"className":16745,"code":37120,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nclass Person\n{\npublic:\n    \u002F\u002F默认构造函数\n    Person()\n    {\n        cout\u003C\u003C\"默认构造函数\"\u003C\u003Cendl;\n    }\n    \u002F\u002F有参构造函数\n    ~Person(int age,int height)\n    {\n        m_Age=age;\n        m_Height=new int(height);\u002F\u002F放到堆区\n        cout\u003C\u003C\"有参构造函数\"\u003C\u003Cendl;\n    }\n    \u002F\u002F深拷贝解决上述问题\n    \u002F\u002F自己实现拷贝构造函数，解决浅拷贝带来的问题\n    Person(const Person &p)\n    {\n        cout\u003C\u003C\"拷贝构造函数\"\u003C\u003Cendl;\n        \u002F\u002F编译器默认的写如下注释部分\n        \u002F\u002Fm_Age=p.m_Age;\n        \u002F\u002Fm_Height=p.m_Height;\n        m_Age=p.m_Age;\n        \u002F\u002F深拷贝操作\n        m_Height=new int(*p.m_Height);\n    }\n\n    \u002F\u002F析构函数\n    ~Person()\n    {\n        \u002F\u002F析构函数，将堆区开辟数据做释放操作\n        if(m_Height != NULL)\n        {\n            delete m_Height; \u002F\u002F释放堆区内存\n            m_Height=NULL; \u002F\u002F防止野指针\n        }\n        cout\u003C\u003C\"Person的析构函数调用\"\n    }\n    int m_Age;\n    int *m_Height; \u002F\u002F定义一个指针，指向身高\n};\nvoid test01()\n{\n    Person p1(18,160);\n    cout\u003C\u003C\"p1的年龄为:\"\u003C\u003Cp1.m_Age\u003C\u003C\"身高为：\"\u003C\u003C*p1.m_Height\u003C\u003Cendl;  \u002F\u002F18\n    Person p2(p1);\n    cout\u003C\u003C\"p2的年龄为：\"\u003C\u003Cp2.m_Age\u003C\u003C\"身高为：\"\u003C\u003C*p2.m_Height\u003C\u003Cendl;  \u002F\u002F18\n    \n}\nint main()\n{\n    test01();\n}\n",[457,37122,37123,37129,37139,37145,37149,37153,37158,37164,37168,37181,37185,37189,37196,37200,37210,37225,37238,37242,37247,37252,37268,37272,37285,37290,37295,37300,37309,37314,37329,37333,37337,37341,37347,37351,37356,37371,37375,37386,37400,37404,37413,37417,37423,37435,37439,37447,37451,37468,37499,37507,37535,37539,37543,37551,37555,37561],{"__ignoreMap":32},[460,37124,37125,37127],{"class":462,"line":463},[460,37126,18491],{"class":887},[460,37128,18494],{"class":1353},[460,37130,37131,37133,37135,37137],{"class":462,"line":476},[460,37132,18499],{"class":887},[460,37134,18502],{"class":887},[460,37136,18505],{"class":929},[460,37138,1966],{"class":466},[460,37140,37141,37143],{"class":462,"line":482},[460,37142,31148],{"class":887},[460,37144,31622],{"class":929},[460,37146,37147],{"class":462,"line":488},[460,37148,18115],{"class":466},[460,37150,37151],{"class":462,"line":494},[460,37152,31170],{"class":887},[460,37154,37155],{"class":462,"line":500},[460,37156,37157],{"class":942},"    \u002F\u002F默认构造函数\n",[460,37159,37160,37162],{"class":462,"line":506},[460,37161,34936],{"class":929},[460,37163,10758],{"class":466},[460,37165,37166],{"class":462,"line":512},[460,37167,18570],{"class":466},[460,37169,37170,37172,37174,37177,37179],{"class":462,"line":518},[460,37171,19972],{"class":466},[460,37173,17750],{"class":887},[460,37175,37176],{"class":1353},"\"默认构造函数\"",[460,37178,17750],{"class":887},[460,37180,17772],{"class":466},[460,37182,37183],{"class":462,"line":525},[460,37184,509],{"class":466},[460,37186,37187],{"class":462,"line":531},[460,37188,36760],{"class":942},[460,37190,37191,37193],{"class":462,"line":537},[460,37192,34969],{"class":929},[460,37194,37195],{"class":466},"(int age,int height)\n",[460,37197,37198],{"class":462,"line":543},[460,37199,18570],{"class":466},[460,37201,37202,37205,37207],{"class":462,"line":549},[460,37203,37204],{"class":466},"        m_Age",[460,37206,894],{"class":887},[460,37208,37209],{"class":466},"age;\n",[460,37211,37212,37215,37217,37219,37222],{"class":462,"line":555},[460,37213,37214],{"class":466},"        m_Height",[460,37216,4052],{"class":887},[460,37218,18917],{"class":887},[460,37220,37221],{"class":466},"(height);",[460,37223,37224],{"class":942},"\u002F\u002F放到堆区\n",[460,37226,37227,37229,37231,37234,37236],{"class":462,"line":560},[460,37228,19972],{"class":466},[460,37230,17750],{"class":887},[460,37232,37233],{"class":1353},"\"有参构造函数\"",[460,37235,17750],{"class":887},[460,37237,17772],{"class":466},[460,37239,37240],{"class":462,"line":566},[460,37241,509],{"class":466},[460,37243,37244],{"class":462,"line":572},[460,37245,37246],{"class":942},"    \u002F\u002F深拷贝解决上述问题\n",[460,37248,37249],{"class":462,"line":578},[460,37250,37251],{"class":942},"    \u002F\u002F自己实现拷贝构造函数，解决浅拷贝带来的问题\n",[460,37253,37254,37256,37258,37260,37262,37264,37266],{"class":462,"line":812},[460,37255,34936],{"class":929},[460,37257,2174],{"class":466},[460,37259,888],{"class":887},[460,37261,32020],{"class":929},[460,37263,27049],{"class":887},[460,37265,14],{"class":3380},[460,37267,3754],{"class":466},[460,37269,37270],{"class":462,"line":818},[460,37271,18570],{"class":466},[460,37273,37274,37276,37278,37281,37283],{"class":462,"line":824},[460,37275,19972],{"class":466},[460,37277,17750],{"class":887},[460,37279,37280],{"class":1353},"\"拷贝构造函数\"",[460,37282,17750],{"class":887},[460,37284,17772],{"class":466},[460,37286,37287],{"class":462,"line":2074},[460,37288,37289],{"class":942},"        \u002F\u002F编译器默认的写如下注释部分\n",[460,37291,37292],{"class":462,"line":2088},[460,37293,37294],{"class":942},"        \u002F\u002Fm_Age=p.m_Age;\n",[460,37296,37297],{"class":462,"line":2103},[460,37298,37299],{"class":942},"        \u002F\u002Fm_Height=p.m_Height;\n",[460,37301,37302,37304,37306],{"class":462,"line":2122},[460,37303,37204],{"class":466},[460,37305,894],{"class":887},[460,37307,37308],{"class":466},"p.m_Age;\n",[460,37310,37311],{"class":462,"line":2144},[460,37312,37313],{"class":942},"        \u002F\u002F深拷贝操作\n",[460,37315,37316,37318,37320,37322,37324,37326],{"class":462,"line":2158},[460,37317,37214],{"class":466},[460,37319,4052],{"class":887},[460,37321,18917],{"class":887},[460,37323,2174],{"class":466},[460,37325,8320],{"class":887},[460,37327,37328],{"class":466},"p.m_Height);\n",[460,37330,37331],{"class":462,"line":2163},[460,37332,509],{"class":466},[460,37334,37335],{"class":462,"line":2168},[460,37336,522],{"emptyLinePlaceholder":521},[460,37338,37339],{"class":462,"line":2183},[460,37340,34964],{"class":942},[460,37342,37343,37345],{"class":462,"line":2194},[460,37344,34969],{"class":929},[460,37346,10758],{"class":466},[460,37348,37349],{"class":462,"line":2199},[460,37350,18570],{"class":466},[460,37352,37353],{"class":462,"line":2204},[460,37354,37355],{"class":942},"        \u002F\u002F析构函数，将堆区开辟数据做释放操作\n",[460,37357,37358,37360,37363,37366,37369],{"class":462,"line":2212},[460,37359,3702],{"class":887},[460,37361,37362],{"class":466},"(m_Height ",[460,37364,37365],{"class":887},"!=",[460,37367,37368],{"class":900}," NULL",[460,37370,3754],{"class":466},[460,37372,37373],{"class":462,"line":2257},[460,37374,1390],{"class":466},[460,37376,37377,37380,37383],{"class":462,"line":2285},[460,37378,37379],{"class":887},"            delete",[460,37381,37382],{"class":466}," m_Height;",[460,37384,37385],{"class":942}," \u002F\u002F释放堆区内存\n",[460,37387,37388,37391,37393,37395,37397],{"class":462,"line":2298},[460,37389,37390],{"class":466},"            m_Height",[460,37392,894],{"class":887},[460,37394,18927],{"class":900},[460,37396,16807],{"class":466},[460,37398,37399],{"class":942}," \u002F\u002F防止野指针\n",[460,37401,37402],{"class":462,"line":2303},[460,37403,3858],{"class":466},[460,37405,37406,37408,37410],{"class":462,"line":2308},[460,37407,19972],{"class":466},[460,37409,17750],{"class":887},[460,37411,37412],{"class":1353},"\"Person的析构函数调用\"\n",[460,37414,37415],{"class":462,"line":2318},[460,37416,509],{"class":466},[460,37418,37419,37421],{"class":462,"line":2333},[460,37420,18525],{"class":887},[460,37422,32116],{"class":466},[460,37424,37425,37427,37429,37432],{"class":462,"line":2338},[460,37426,18525],{"class":887},[460,37428,8325],{"class":887},[460,37430,37431],{"class":466},"m_Height;",[460,37433,37434],{"class":942}," \u002F\u002F定义一个指针，指向身高\n",[460,37436,37437],{"class":462,"line":2343},[460,37438,20510],{"class":466},[460,37440,37441,37443,37445],{"class":462,"line":2353},[460,37442,21870],{"class":887},[460,37444,22094],{"class":929},[460,37446,10758],{"class":466},[460,37448,37449],{"class":462,"line":2368},[460,37450,18115],{"class":466},[460,37452,37453,37455,37457,37459,37461,37463,37466],{"class":462,"line":2381},[460,37454,35848],{"class":466},[460,37456,23628],{"class":929},[460,37458,2174],{"class":466},[460,37460,2361],{"class":900},[460,37462,3986],{"class":466},[460,37464,37465],{"class":900},"160",[460,37467,2254],{"class":466},[460,37469,37470,37472,37474,37477,37479,37482,37484,37487,37489,37492,37494,37496],{"class":462,"line":2394},[460,37471,18120],{"class":466},[460,37473,17750],{"class":887},[460,37475,37476],{"class":1353},"\"p1的年龄为:\"",[460,37478,17750],{"class":887},[460,37480,37481],{"class":466},"p1.m_Age",[460,37483,17750],{"class":887},[460,37485,37486],{"class":1353},"\"身高为：\"",[460,37488,22920],{"class":887},[460,37490,37491],{"class":466},"p1.m_Height",[460,37493,17750],{"class":887},[460,37495,17815],{"class":466},[460,37497,37498],{"class":942},"  \u002F\u002F18\n",[460,37500,37501,37503,37505],{"class":462,"line":2399},[460,37502,35848],{"class":466},[460,37504,23531],{"class":929},[460,37506,33932],{"class":466},[460,37508,37509,37511,37513,37516,37518,37520,37522,37524,37526,37529,37531,37533],{"class":462,"line":2404},[460,37510,18120],{"class":466},[460,37512,17750],{"class":887},[460,37514,37515],{"class":1353},"\"p2的年龄为：\"",[460,37517,17750],{"class":887},[460,37519,35878],{"class":466},[460,37521,17750],{"class":887},[460,37523,37486],{"class":1353},[460,37525,22920],{"class":887},[460,37527,37528],{"class":466},"p2.m_Height",[460,37530,17750],{"class":887},[460,37532,17815],{"class":466},[460,37534,37498],{"class":942},[460,37536,37537],{"class":462,"line":2414},[460,37538,29667],{"class":466},[460,37540,37541],{"class":462,"line":2428},[460,37542,821],{"class":466},[460,37544,37545,37547,37549],{"class":462,"line":2440},[460,37546,16759],{"class":887},[460,37548,18514],{"class":929},[460,37550,10758],{"class":466},[460,37552,37553],{"class":462,"line":2445},[460,37554,18115],{"class":466},[460,37556,37557,37559],{"class":462,"line":2450},[460,37558,22139],{"class":929},[460,37560,22142],{"class":466},[460,37562,37563],{"class":462,"line":2460},[460,37564,821],{"class":466},[14,37566,37567],{},"浅拷贝时，对象释放是先进后放，所以会先释放p2，然后再释放p1；所以就出现了两次释放内存，也就是会出现非法操作",[14,37569,37570],{},"浅拷贝带来的问题是堆区的内存重复释放",[14,37572,37573],{},[30,37574],{"alt":32,"src":37575},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2026-05-24-c++%E5%AD%A6%E4%B9%A0-007.png",[14,37577,37578],{},"浅拷贝问题要使用深拷贝来解决",[14,37580,37581],{},[30,37582],{"alt":32,"src":37583},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2026-05-24-c++%E5%AD%A6%E4%B9%A0-008.png",[14,37585,37586],{},"**总结：**如果属性有在堆区开辟的，一定要自己提供拷贝构造函数，防止浅拷贝带来的问题",[23,37588,37590],{"id":37589},"_826初始化列表","8.2.6初始化列表",[14,37592,37593],{},"作用：初始化属性",[14,37595,5927],{},[451,37597,37600],{"className":37598,"code":37599,"language":8391},[21693],"构造函数():属性1(值1),属性2(值2).....{}\n",[457,37601,37599],{"__ignoreMap":32},[14,37603,37604],{},"例子",[451,37606,37608],{"className":16745,"code":37607,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nclass Person\n{\n    public:\n\n    \u002F\u002F\u002F\u002F传统方式初始化\n    \u002F\u002FPerson(int a, int b, int c) {\n    \u002F\u002F  m_A = a;\n    \u002F\u002F  m_B = b;\n    \u002F\u002F  m_C = c;\n    \u002F\u002F}\n\n    \u002F\u002F初始化列表方式初始化\n    \u002F\u002F使用有参构造函数\n    Person(int a, int b, int c) :m_A(a), m_B(b), m_C(c) {}\n    void PrintPerson() {\n        cout \u003C\u003C \"mA:\" \u003C\u003C m_A \u003C\u003C endl;\n        cout \u003C\u003C \"mB:\" \u003C\u003C m_B \u003C\u003C endl;\n        cout \u003C\u003C \"mC:\" \u003C\u003C m_C \u003C\u003C endl;\n    }\nprivate:\n    int m_A;\n    int m_B;\n    int m_C;\n};\n\nint main() \n{\n\n    Person p(1, 2, 3);\n    p.PrintPerson();\n\n\n    system(\"pause\");\n\n    return 0;\n}\n",[457,37609,37610,37616,37626,37632,37636,37641,37645,37650,37655,37660,37665,37670,37675,37679,37684,37689,37732,37741,37759,37777,37795,37799,37803,37810,37817,37824,37828,37832,37840,37844,37848,37868,37877,37881,37885,37895,37899,37907],{"__ignoreMap":32},[460,37611,37612,37614],{"class":462,"line":463},[460,37613,18491],{"class":887},[460,37615,18494],{"class":1353},[460,37617,37618,37620,37622,37624],{"class":462,"line":476},[460,37619,18499],{"class":887},[460,37621,18502],{"class":887},[460,37623,18505],{"class":929},[460,37625,1966],{"class":466},[460,37627,37628,37630],{"class":462,"line":482},[460,37629,31148],{"class":887},[460,37631,31622],{"class":929},[460,37633,37634],{"class":462,"line":488},[460,37635,18115],{"class":466},[460,37637,37638],{"class":462,"line":494},[460,37639,37640],{"class":887},"    public:\n",[460,37642,37643],{"class":462,"line":500},[460,37644,522],{"emptyLinePlaceholder":521},[460,37646,37647],{"class":462,"line":506},[460,37648,37649],{"class":942},"    \u002F\u002F\u002F\u002F传统方式初始化\n",[460,37651,37652],{"class":462,"line":512},[460,37653,37654],{"class":942},"    \u002F\u002FPerson(int a, int b, int c) {\n",[460,37656,37657],{"class":462,"line":518},[460,37658,37659],{"class":942},"    \u002F\u002F  m_A = a;\n",[460,37661,37662],{"class":462,"line":525},[460,37663,37664],{"class":942},"    \u002F\u002F  m_B = b;\n",[460,37666,37667],{"class":462,"line":531},[460,37668,37669],{"class":942},"    \u002F\u002F  m_C = c;\n",[460,37671,37672],{"class":462,"line":537},[460,37673,37674],{"class":942},"    \u002F\u002F}\n",[460,37676,37677],{"class":462,"line":543},[460,37678,522],{"emptyLinePlaceholder":521},[460,37680,37681],{"class":462,"line":549},[460,37682,37683],{"class":942},"    \u002F\u002F初始化列表方式初始化\n",[460,37685,37686],{"class":462,"line":555},[460,37687,37688],{"class":942},"    \u002F\u002F使用有参构造函数\n",[460,37690,37691,37693,37695,37697,37699,37701,37703,37705,37707,37709,37711,37714,37717,37720,37723,37726,37729],{"class":462,"line":560},[460,37692,34936],{"class":929},[460,37694,2174],{"class":466},[460,37696,16759],{"class":887},[460,37698,2574],{"class":3380},[460,37700,904],{"class":466},[460,37702,16759],{"class":887},[460,37704,19355],{"class":3380},[460,37706,904],{"class":466},[460,37708,16759],{"class":887},[460,37710,19371],{"class":3380},[460,37712,37713],{"class":466},") :",[460,37715,37716],{"class":929},"m_A",[460,37718,37719],{"class":466},"(a), ",[460,37721,37722],{"class":929},"m_B",[460,37724,37725],{"class":466},"(b), ",[460,37727,37728],{"class":929},"m_C",[460,37730,37731],{"class":466},"(c) {}\n",[460,37733,37734,37736,37739],{"class":462,"line":566},[460,37735,31362],{"class":887},[460,37737,37738],{"class":929}," PrintPerson",[460,37740,11374],{"class":466},[460,37742,37743,37745,37747,37750,37752,37755,37757],{"class":462,"line":572},[460,37744,26153],{"class":466},[460,37746,17750],{"class":887},[460,37748,37749],{"class":1353}," \"mA:\"",[460,37751,18014],{"class":887},[460,37753,37754],{"class":466}," m_A ",[460,37756,17750],{"class":887},[460,37758,25327],{"class":466},[460,37760,37761,37763,37765,37768,37770,37773,37775],{"class":462,"line":578},[460,37762,26153],{"class":466},[460,37764,17750],{"class":887},[460,37766,37767],{"class":1353}," \"mB:\"",[460,37769,18014],{"class":887},[460,37771,37772],{"class":466}," m_B ",[460,37774,17750],{"class":887},[460,37776,25327],{"class":466},[460,37778,37779,37781,37783,37786,37788,37791,37793],{"class":462,"line":812},[460,37780,26153],{"class":466},[460,37782,17750],{"class":887},[460,37784,37785],{"class":1353}," \"mC:\"",[460,37787,18014],{"class":887},[460,37789,37790],{"class":466}," m_C ",[460,37792,17750],{"class":887},[460,37794,25327],{"class":466},[460,37796,37797],{"class":462,"line":818},[460,37798,509],{"class":466},[460,37800,37801],{"class":462,"line":824},[460,37802,31673],{"class":887},[460,37804,37805,37807],{"class":462,"line":2074},[460,37806,18525],{"class":887},[460,37808,37809],{"class":466}," m_A;\n",[460,37811,37812,37814],{"class":462,"line":2088},[460,37813,18525],{"class":887},[460,37815,37816],{"class":466}," m_B;\n",[460,37818,37819,37821],{"class":462,"line":2103},[460,37820,18525],{"class":887},[460,37822,37823],{"class":466}," m_C;\n",[460,37825,37826],{"class":462,"line":2122},[460,37827,20510],{"class":466},[460,37829,37830],{"class":462,"line":2144},[460,37831,522],{"emptyLinePlaceholder":521},[460,37833,37834,37836,37838],{"class":462,"line":2158},[460,37835,16759],{"class":887},[460,37837,18514],{"class":929},[460,37839,22482],{"class":466},[460,37841,37842],{"class":462,"line":2163},[460,37843,18115],{"class":466},[460,37845,37846],{"class":462,"line":2168},[460,37847,522],{"emptyLinePlaceholder":521},[460,37849,37850,37852,37854,37856,37858,37860,37862,37864,37866],{"class":462,"line":2183},[460,37851,35848],{"class":466},[460,37853,14],{"class":929},[460,37855,2174],{"class":466},[460,37857,901],{"class":900},[460,37859,904],{"class":466},[460,37861,907],{"class":900},[460,37863,904],{"class":466},[460,37865,913],{"class":900},[460,37867,2254],{"class":466},[460,37869,37870,37872,37875],{"class":462,"line":2194},[460,37871,32316],{"class":466},[460,37873,37874],{"class":929},"PrintPerson",[460,37876,22142],{"class":466},[460,37878,37879],{"class":462,"line":2199},[460,37880,522],{"emptyLinePlaceholder":521},[460,37882,37883],{"class":462,"line":2204},[460,37884,522],{"emptyLinePlaceholder":521},[460,37886,37887,37889,37891,37893],{"class":462,"line":2212},[460,37888,18839],{"class":929},[460,37890,2174],{"class":466},[460,37892,18844],{"class":1353},[460,37894,2254],{"class":466},[460,37896,37897],{"class":462,"line":2257},[460,37898,522],{"emptyLinePlaceholder":521},[460,37900,37901,37903,37905],{"class":462,"line":2285},[460,37902,20605],{"class":887},[460,37904,2224],{"class":900},[460,37906,1966],{"class":466},[460,37908,37909],{"class":462,"line":2298},[460,37910,821],{"class":466},[14,37912,37913,37914,6410,37917],{},"通过有参构造函数的参数赋值给后面的属性的形式实现初始化列表的,",[3944,37915,37916],{},"参数名就是定义的对象属性",[3944,37918,37919],{},"属性后面的值为有参构造函数的形参",[451,37921,37923],{"className":16745,"code":37922,"language":16747,"meta":32,"style":32},"Person(int a.int b,int b):m_A(a),m_B(c),m_C(b) {}\n",[457,37924,37925],{"__ignoreMap":32},[460,37926,37927,37929,37931,37933,37936,37938,37941,37943,37946,37948,37951,37953,37956,37958],{"class":462,"line":463},[460,37928,35463],{"class":929},[460,37930,2174],{"class":466},[460,37932,16759],{"class":887},[460,37934,37935],{"class":466}," a.",[460,37937,16759],{"class":887},[460,37939,37940],{"class":466}," b,",[460,37942,16759],{"class":887},[460,37944,37945],{"class":466}," b):",[460,37947,37716],{"class":929},[460,37949,37950],{"class":466},"(a),",[460,37952,37722],{"class":929},[460,37954,37955],{"class":466},"(c),",[460,37957,37728],{"class":929},[460,37959,37960],{"class":466},"(b) {}\n",[23,37962,37964],{"id":37963},"_827类对象作为类成员","8.2.7类对象作为类成员",[14,37966,37967],{},"c++类中的成员可以是另一个类的对象，该成员被称为类成员",[14,37969,31087],{},[451,37971,37973],{"className":16745,"code":37972,"language":16747,"meta":32,"style":32},"A{};\nB\n{\n    A a;\n}\n\u002F\u002FB类中有对象A作为成员，A为对象成员\n",[457,37974,37975,37980,37985,37989,37994,37998],{"__ignoreMap":32},[460,37976,37977],{"class":462,"line":463},[460,37978,37979],{"class":466},"A{};\n",[460,37981,37982],{"class":462,"line":476},[460,37983,37984],{"class":466},"B\n",[460,37986,37987],{"class":462,"line":482},[460,37988,18115],{"class":466},[460,37990,37991],{"class":462,"line":488},[460,37992,37993],{"class":466},"    A a;\n",[460,37995,37996],{"class":462,"line":494},[460,37997,821],{"class":466},[460,37999,38000],{"class":462,"line":500},[460,38001,38002],{"class":942},"\u002F\u002FB类中有对象A作为成员，A为对象成员\n",[14,38004,38005],{},"案例",[451,38007,38009],{"className":16745,"code":38008,"language":16747,"meta":32,"style":32},"\u002F\u002Fphone这个对象作为Person这个类的类成员\nclass Phone\n{\npublic：\n    \u002F\u002F 赋值(构造函数)\n    Phone(string pName)\n    {\n        m_pName=pName;\n        cout\u003C\u003C\"Phone的构造函数调用\";\n    }\n    ~Phone()\n    {\n        cout\u003C\u003C\"Phone析构函数调用\"\u003C\u003Cendl;\n    }\n    \u002F\u002F\n    string m_PName;\n};\nclass Person\n{\npublic:\n    \u002F\u002F赋值\n    Person(string name,string pname):m_name(name),m_phone.m_PName(pname) \n    {\n        cout\u003C\u003C\"Person的构造函数调用\";\n    }\n    ~Person()\n    {\n        cout\u003C\u003C\"Person析构函数调用\"\u003C\u003Cendl;\n    }\n    \u002F\u002F姓名\n    string m_name;\n    \u002F\u002F手机\n    Phone m_Phone;\n};\nvoid test01()\n{\n    Person p(\"张三\",\"安卓\");\n    cout\u003C\u003Cp.Name\u003C\u003C\"拿着：\"\u003C\u003Cp.m_phone.m_PName;\n}\nint main()\n{\n    test01();\n}\n",[457,38010,38011,38016,38023,38027,38032,38037,38051,38055,38065,38076,38080,38087,38091,38104,38108,38113,38118,38122,38128,38132,38136,38140,38171,38175,38186,38190,38196,38200,38213,38217,38221,38225,38230,38235,38239,38247,38251,38268,38287,38291,38299,38303,38309],{"__ignoreMap":32},[460,38012,38013],{"class":462,"line":463},[460,38014,38015],{"class":942},"\u002F\u002Fphone这个对象作为Person这个类的类成员\n",[460,38017,38018,38020],{"class":462,"line":476},[460,38019,31148],{"class":887},[460,38021,38022],{"class":929}," Phone\n",[460,38024,38025],{"class":462,"line":482},[460,38026,18115],{"class":466},[460,38028,38029],{"class":462,"line":488},[460,38030,38031],{"class":466},"public：\n",[460,38033,38034],{"class":462,"line":494},[460,38035,38036],{"class":942},"    \u002F\u002F 赋值(构造函数)\n",[460,38038,38039,38042,38044,38046,38049],{"class":462,"line":500},[460,38040,38041],{"class":929},"    Phone",[460,38043,2174],{"class":466},[460,38045,31370],{"class":929},[460,38047,38048],{"class":3380}," pName",[460,38050,3754],{"class":466},[460,38052,38053],{"class":462,"line":506},[460,38054,18570],{"class":466},[460,38056,38057,38060,38062],{"class":462,"line":512},[460,38058,38059],{"class":466},"        m_pName",[460,38061,894],{"class":887},[460,38063,38064],{"class":466},"pName;\n",[460,38066,38067,38069,38071,38074],{"class":462,"line":518},[460,38068,19972],{"class":466},[460,38070,17750],{"class":887},[460,38072,38073],{"class":1353},"\"Phone的构造函数调用\"",[460,38075,1966],{"class":466},[460,38077,38078],{"class":462,"line":525},[460,38079,509],{"class":466},[460,38081,38082,38085],{"class":462,"line":531},[460,38083,38084],{"class":929},"    ~Phone",[460,38086,10758],{"class":466},[460,38088,38089],{"class":462,"line":537},[460,38090,18570],{"class":466},[460,38092,38093,38095,38097,38100,38102],{"class":462,"line":543},[460,38094,19972],{"class":466},[460,38096,17750],{"class":887},[460,38098,38099],{"class":1353},"\"Phone析构函数调用\"",[460,38101,17750],{"class":887},[460,38103,17772],{"class":466},[460,38105,38106],{"class":462,"line":549},[460,38107,509],{"class":466},[460,38109,38110],{"class":462,"line":555},[460,38111,38112],{"class":942},"    \u002F\u002F\n",[460,38114,38115],{"class":462,"line":560},[460,38116,38117],{"class":466},"    string m_PName;\n",[460,38119,38120],{"class":462,"line":566},[460,38121,20510],{"class":466},[460,38123,38124,38126],{"class":462,"line":572},[460,38125,31148],{"class":887},[460,38127,31622],{"class":929},[460,38129,38130],{"class":462,"line":578},[460,38131,18115],{"class":466},[460,38133,38134],{"class":462,"line":812},[460,38135,31170],{"class":887},[460,38137,38138],{"class":462,"line":818},[460,38139,33412],{"class":942},[460,38141,38142,38144,38146,38148,38150,38152,38154,38157,38160,38162,38165,38168],{"class":462,"line":824},[460,38143,34936],{"class":929},[460,38145,2174],{"class":466},[460,38147,31370],{"class":929},[460,38149,1908],{"class":3380},[460,38151,3986],{"class":466},[460,38153,31370],{"class":929},[460,38155,38156],{"class":3380}," pname",[460,38158,38159],{"class":466},"):",[460,38161,31461],{"class":929},[460,38163,38164],{"class":466},"(name),m_phone.",[460,38166,38167],{"class":929},"m_PName",[460,38169,38170],{"class":466},"(pname) \n",[460,38172,38173],{"class":462,"line":2074},[460,38174,18570],{"class":466},[460,38176,38177,38179,38181,38184],{"class":462,"line":2088},[460,38178,19972],{"class":466},[460,38180,17750],{"class":887},[460,38182,38183],{"class":1353},"\"Person的构造函数调用\"",[460,38185,1966],{"class":466},[460,38187,38188],{"class":462,"line":2103},[460,38189,509],{"class":466},[460,38191,38192,38194],{"class":462,"line":2122},[460,38193,34969],{"class":929},[460,38195,10758],{"class":466},[460,38197,38198],{"class":462,"line":2144},[460,38199,18570],{"class":466},[460,38201,38202,38204,38206,38209,38211],{"class":462,"line":2158},[460,38203,19972],{"class":466},[460,38205,17750],{"class":887},[460,38207,38208],{"class":1353},"\"Person析构函数调用\"",[460,38210,17750],{"class":887},[460,38212,17772],{"class":466},[460,38214,38215],{"class":462,"line":2163},[460,38216,509],{"class":466},[460,38218,38219],{"class":462,"line":2168},[460,38220,24277],{"class":942},[460,38222,38223],{"class":462,"line":2183},[460,38224,31345],{"class":466},[460,38226,38227],{"class":462,"line":2194},[460,38228,38229],{"class":942},"    \u002F\u002F手机\n",[460,38231,38232],{"class":462,"line":2199},[460,38233,38234],{"class":466},"    Phone m_Phone;\n",[460,38236,38237],{"class":462,"line":2204},[460,38238,20510],{"class":466},[460,38240,38241,38243,38245],{"class":462,"line":2212},[460,38242,21870],{"class":887},[460,38244,22094],{"class":929},[460,38246,10758],{"class":466},[460,38248,38249],{"class":462,"line":2257},[460,38250,18115],{"class":466},[460,38252,38253,38255,38257,38259,38261,38263,38266],{"class":462,"line":2285},[460,38254,35848],{"class":466},[460,38256,14],{"class":929},[460,38258,2174],{"class":466},[460,38260,24413],{"class":1353},[460,38262,3986],{"class":466},[460,38264,38265],{"class":1353},"\"安卓\"",[460,38267,2254],{"class":466},[460,38269,38270,38272,38274,38277,38279,38282,38284],{"class":462,"line":2298},[460,38271,18120],{"class":466},[460,38273,17750],{"class":887},[460,38275,38276],{"class":466},"p.Name",[460,38278,17750],{"class":887},[460,38280,38281],{"class":1353},"\"拿着：\"",[460,38283,17750],{"class":887},[460,38285,38286],{"class":466},"p.m_phone.m_PName;\n",[460,38288,38289],{"class":462,"line":2303},[460,38290,821],{"class":466},[460,38292,38293,38295,38297],{"class":462,"line":2308},[460,38294,16759],{"class":887},[460,38296,18514],{"class":929},[460,38298,10758],{"class":466},[460,38300,38301],{"class":462,"line":2318},[460,38302,18115],{"class":466},[460,38304,38305,38307],{"class":462,"line":2333},[460,38306,22139],{"class":929},[460,38308,22142],{"class":466},[460,38310,38311],{"class":462,"line":2338},[460,38312,821],{"class":466},[14,38314,25511],{},[451,38316,38318],{"className":16745,"code":38317,"language":16747,"meta":32,"style":32},"    \u002F\u002F不需要写这个：\n    \u002F\u002F Person(string name,string pname):m_name(name),m_phone.m_PName(pname) {}\n",[457,38319,38320,38325],{"__ignoreMap":32},[460,38321,38322],{"class":462,"line":463},[460,38323,38324],{"class":942},"    \u002F\u002F不需要写这个：\n",[460,38326,38327],{"class":462,"line":476},[460,38328,38329],{"class":942},"    \u002F\u002F Person(string name,string pname):m_name(name),m_phone.m_PName(pname) {}\n",[14,38331,38332],{},"因为Phone这个类里面写了有参构造函数，所以不需要调用他的属性直接传值通过有参构造函数就可以实现初始化phone",[451,38334,38336],{"className":16745,"code":38335,"language":16747,"meta":32,"style":32},"Person(string name.string pname):m_name(name),m_phone(pname) {}\n",[457,38337,38338],{"__ignoreMap":32},[460,38339,38340,38342,38345,38347,38350,38353],{"class":462,"line":463},[460,38341,35463],{"class":929},[460,38343,38344],{"class":466},"(string name.string pname):",[460,38346,31461],{"class":929},[460,38348,38349],{"class":466},"(name),",[460,38351,38352],{"class":929},"m_phone",[460,38354,38355],{"class":466},"(pname) {}\n",[14,38357,38358,38359,894,38362],{},"采用的是隐式转换法，实际为如下：\n",[457,38360,38361],{},"m_phone(pname)",[457,38363,38364],{},"Phone m_phone=pname",[14,38366,38367,38369],{},[3944,38368,13657],{},"：这里可以直接类比人的胳膊腿，肯定得全有之后才能构造人！析构函数是遵循先进后出的规律！（析构函数的调用顺序与构造函数的调用顺序是相反的）",[14,38371,38372],{},"因此，这里应当是先Phone构造函数调用，然后再Person构造函数调用；Person的析构函数先调用，Phone的析构函数在调用；",[23,38374,38376],{"id":38375},"_828静态对象","8.2.8静态对象",[14,38378,38379],{},"静态对象在成员对象前static，称为静态对象",[14,38381,38382],{},"静态对象分为两类：",[103,38384,38385],{},[43,38386,38387],{},"静态成员变量",[40,38389,38390,38393,38396],{},[43,38391,38392],{},"①所有对象共享同一份数据   (理解的话可以当作指针，例如a=10;b=20;此时a=20，这里只例子仅仅为解释共享同一份数据)",[43,38394,38395],{},"②在编译阶段分配内存",[43,38397,38398],{},"③类内声明，类外初始化",[103,38400,38401],{"start":476},[43,38402,38403],{},"静态成员函数",[40,38405,38406,38409],{},[43,38407,38408],{},"①所有对象共享同一个函数",[43,38410,38411],{},"②静态成员函数只能访问静态成员变量",[115,38413,38415],{"id":38414},"_8281静态成员变量","8.2.8.1静态成员变量",[451,38417,38419],{"className":16745,"code":38418,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nclass Person\n{\npublic:\n    \u002F\u002F非静态成员变量\n    \u002F\u002F int m_A;\n    \u002F\u002F定义静态成员变量\n    static int m_A;\n\n\n};\nvoid test01()\n{\n    Person p;\n    \u002F\u002F输出类成员变量这块内存\n    cout\u003C\u003Cp.m_A\u003C\u003Cendl;\n}\nint main()\n{\n    test01()\n}\n",[457,38420,38421,38427,38437,38443,38447,38451,38456,38461,38466,38474,38478,38482,38486,38494,38498,38502,38507,38520,38524,38532,38536,38542],{"__ignoreMap":32},[460,38422,38423,38425],{"class":462,"line":463},[460,38424,18491],{"class":887},[460,38426,18494],{"class":1353},[460,38428,38429,38431,38433,38435],{"class":462,"line":476},[460,38430,18499],{"class":887},[460,38432,18502],{"class":887},[460,38434,18505],{"class":929},[460,38436,1966],{"class":466},[460,38438,38439,38441],{"class":462,"line":482},[460,38440,31148],{"class":887},[460,38442,31622],{"class":929},[460,38444,38445],{"class":462,"line":488},[460,38446,18115],{"class":466},[460,38448,38449],{"class":462,"line":494},[460,38450,31170],{"class":887},[460,38452,38453],{"class":462,"line":500},[460,38454,38455],{"class":942},"    \u002F\u002F非静态成员变量\n",[460,38457,38458],{"class":462,"line":506},[460,38459,38460],{"class":942},"    \u002F\u002F int m_A;\n",[460,38462,38463],{"class":462,"line":512},[460,38464,38465],{"class":942},"    \u002F\u002F定义静态成员变量\n",[460,38467,38468,38470,38472],{"class":462,"line":518},[460,38469,27484],{"class":887},[460,38471,18917],{"class":887},[460,38473,37809],{"class":466},[460,38475,38476],{"class":462,"line":525},[460,38477,522],{"emptyLinePlaceholder":521},[460,38479,38480],{"class":462,"line":531},[460,38481,522],{"emptyLinePlaceholder":521},[460,38483,38484],{"class":462,"line":537},[460,38485,20510],{"class":466},[460,38487,38488,38490,38492],{"class":462,"line":543},[460,38489,21870],{"class":887},[460,38491,22094],{"class":929},[460,38493,10758],{"class":466},[460,38495,38496],{"class":462,"line":549},[460,38497,18115],{"class":466},[460,38499,38500],{"class":462,"line":555},[460,38501,31764],{"class":466},[460,38503,38504],{"class":462,"line":560},[460,38505,38506],{"class":942},"    \u002F\u002F输出类成员变量这块内存\n",[460,38508,38509,38511,38513,38516,38518],{"class":462,"line":566},[460,38510,18120],{"class":466},[460,38512,17750],{"class":887},[460,38514,38515],{"class":466},"p.m_A",[460,38517,17750],{"class":887},[460,38519,17772],{"class":466},[460,38521,38522],{"class":462,"line":572},[460,38523,821],{"class":466},[460,38525,38526,38528,38530],{"class":462,"line":578},[460,38527,16759],{"class":887},[460,38529,18514],{"class":929},[460,38531,10758],{"class":466},[460,38533,38534],{"class":462,"line":812},[460,38535,18115],{"class":466},[460,38537,38538,38540],{"class":462,"line":818},[460,38539,22139],{"class":929},[460,38541,10758],{"class":466},[460,38543,38544],{"class":462,"line":824},[460,38545,821],{"class":466},[14,38547,38548],{},"此时输出是报错的：无法解析外部命令",[14,38550,38551],{},"解决这一问题：必须用到类内声明，类外初始化操作",[451,38553,38555],{"className":16745,"code":38554,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nclass Person\n{\npublic:\n    \u002F\u002F类内声明\n    static int m_A;\n};\n\u002F\u002F类外初始化\nint Person::m_A=10;\nvoid test01()\n{\n    Person p;\n    \u002F\u002F访问变量的原内存空间\n    \u002F\u002F100\n    cout\u003C\u003Cp.m_A\u003C\u003Cendl;\n    Person p2;\n    p2.m_A=200;\n    \u002F\u002F继续访问这片空间\n    \u002F\u002F200\n    cout\u003C\u003Cp2.m_A\u003C\u003Cendl;\n}\nint main()\n{\n    test01();\n}\n",[457,38556,38557,38563,38573,38579,38583,38587,38592,38600,38604,38609,38624,38632,38636,38640,38645,38650,38662,38667,38678,38683,38688,38701,38705,38713,38717,38723],{"__ignoreMap":32},[460,38558,38559,38561],{"class":462,"line":463},[460,38560,18491],{"class":887},[460,38562,18494],{"class":1353},[460,38564,38565,38567,38569,38571],{"class":462,"line":476},[460,38566,18499],{"class":887},[460,38568,18502],{"class":887},[460,38570,18505],{"class":929},[460,38572,1966],{"class":466},[460,38574,38575,38577],{"class":462,"line":482},[460,38576,31148],{"class":887},[460,38578,31622],{"class":929},[460,38580,38581],{"class":462,"line":488},[460,38582,18115],{"class":466},[460,38584,38585],{"class":462,"line":494},[460,38586,31170],{"class":887},[460,38588,38589],{"class":462,"line":500},[460,38590,38591],{"class":942},"    \u002F\u002F类内声明\n",[460,38593,38594,38596,38598],{"class":462,"line":506},[460,38595,27484],{"class":887},[460,38597,18917],{"class":887},[460,38599,37809],{"class":466},[460,38601,38602],{"class":462,"line":512},[460,38603,20510],{"class":466},[460,38605,38606],{"class":462,"line":518},[460,38607,38608],{"class":942},"\u002F\u002F类外初始化\n",[460,38610,38611,38613,38615,38618,38620,38622],{"class":462,"line":525},[460,38612,16759],{"class":887},[460,38614,32020],{"class":929},[460,38616,38617],{"class":466},"::m_A",[460,38619,894],{"class":887},[460,38621,2096],{"class":900},[460,38623,1966],{"class":466},[460,38625,38626,38628,38630],{"class":462,"line":531},[460,38627,21870],{"class":887},[460,38629,22094],{"class":929},[460,38631,10758],{"class":466},[460,38633,38634],{"class":462,"line":537},[460,38635,18115],{"class":466},[460,38637,38638],{"class":462,"line":543},[460,38639,31764],{"class":466},[460,38641,38642],{"class":462,"line":549},[460,38643,38644],{"class":942},"    \u002F\u002F访问变量的原内存空间\n",[460,38646,38647],{"class":462,"line":555},[460,38648,38649],{"class":942},"    \u002F\u002F100\n",[460,38651,38652,38654,38656,38658,38660],{"class":462,"line":560},[460,38653,18120],{"class":466},[460,38655,17750],{"class":887},[460,38657,38515],{"class":466},[460,38659,17750],{"class":887},[460,38661,17772],{"class":466},[460,38663,38664],{"class":462,"line":566},[460,38665,38666],{"class":466},"    Person p2;\n",[460,38668,38669,38672,38674,38676],{"class":462,"line":572},[460,38670,38671],{"class":466},"    p2.m_A",[460,38673,894],{"class":887},[460,38675,5490],{"class":900},[460,38677,1966],{"class":466},[460,38679,38680],{"class":462,"line":578},[460,38681,38682],{"class":942},"    \u002F\u002F继续访问这片空间\n",[460,38684,38685],{"class":462,"line":812},[460,38686,38687],{"class":942},"    \u002F\u002F200\n",[460,38689,38690,38692,38694,38697,38699],{"class":462,"line":818},[460,38691,18120],{"class":466},[460,38693,17750],{"class":887},[460,38695,38696],{"class":466},"p2.m_A",[460,38698,17750],{"class":887},[460,38700,17772],{"class":466},[460,38702,38703],{"class":462,"line":824},[460,38704,821],{"class":466},[460,38706,38707,38709,38711],{"class":462,"line":2074},[460,38708,16759],{"class":887},[460,38710,18514],{"class":929},[460,38712,10758],{"class":466},[460,38714,38715],{"class":462,"line":2088},[460,38716,18115],{"class":466},[460,38718,38719,38721],{"class":462,"line":2103},[460,38720,22139],{"class":929},[460,38722,22142],{"class":466},[460,38724,38725],{"class":462,"line":2122},[460,38726,821],{"class":466},[14,38728,38729],{},[3944,38730,38731],{},"静态变量的访问",[451,38733,38735],{"className":16745,"code":38734,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nclass Person\n{\npublic:\n    \u002F\u002F类内声明\n    static int m_A;\nprivate:\n    \u002F\u002F静态成员变量也是有访问权限的\n    static int m_B;\n};\n\u002F\u002F类外初始化\nint Person::m_A=10;\nint Person::m_B=20;\nvoid test02()\n{\n    \u002F\u002F静态成员变量 不属于某个对象上，所有对象都共享同一份数据\n    \u002F\u002F静态成员变量有两种访问方式：\n    \u002F\u002F1.通过对象进行访问\n    Person p;  \n    cout\u003C\u003Cp.m_A\u003C\u003Cendl;\n    \u002F\u002F这里其实也可以不用创建对象，因为它本身也不属于某个对象，采用下面方法\n    \u002F\u002F2.通过类名进行访问\n    cout\u003C\u003CPerson::m_A\u003C\u003Cendl;\n    cout\u003C\u003CPerson::m_B\u003C\u003Cendl; \u002F\u002F没有访问权限，报错\n}\nint main()\n{\n    test02();\n}\n",[457,38736,38737,38743,38753,38759,38763,38767,38771,38779,38783,38788,38796,38800,38804,38818,38833,38841,38845,38850,38855,38860,38865,38877,38882,38887,38901,38918,38922,38930,38934,38940],{"__ignoreMap":32},[460,38738,38739,38741],{"class":462,"line":463},[460,38740,18491],{"class":887},[460,38742,18494],{"class":1353},[460,38744,38745,38747,38749,38751],{"class":462,"line":476},[460,38746,18499],{"class":887},[460,38748,18502],{"class":887},[460,38750,18505],{"class":929},[460,38752,1966],{"class":466},[460,38754,38755,38757],{"class":462,"line":482},[460,38756,31148],{"class":887},[460,38758,31622],{"class":929},[460,38760,38761],{"class":462,"line":488},[460,38762,18115],{"class":466},[460,38764,38765],{"class":462,"line":494},[460,38766,31170],{"class":887},[460,38768,38769],{"class":462,"line":500},[460,38770,38591],{"class":942},[460,38772,38773,38775,38777],{"class":462,"line":506},[460,38774,27484],{"class":887},[460,38776,18917],{"class":887},[460,38778,37809],{"class":466},[460,38780,38781],{"class":462,"line":512},[460,38782,31673],{"class":887},[460,38784,38785],{"class":462,"line":518},[460,38786,38787],{"class":942},"    \u002F\u002F静态成员变量也是有访问权限的\n",[460,38789,38790,38792,38794],{"class":462,"line":525},[460,38791,27484],{"class":887},[460,38793,18917],{"class":887},[460,38795,37816],{"class":466},[460,38797,38798],{"class":462,"line":531},[460,38799,20510],{"class":466},[460,38801,38802],{"class":462,"line":537},[460,38803,38608],{"class":942},[460,38805,38806,38808,38810,38812,38814,38816],{"class":462,"line":543},[460,38807,16759],{"class":887},[460,38809,32020],{"class":929},[460,38811,38617],{"class":466},[460,38813,894],{"class":887},[460,38815,2096],{"class":900},[460,38817,1966],{"class":466},[460,38819,38820,38822,38824,38827,38829,38831],{"class":462,"line":549},[460,38821,16759],{"class":887},[460,38823,32020],{"class":929},[460,38825,38826],{"class":466},"::m_B",[460,38828,894],{"class":887},[460,38830,2110],{"class":900},[460,38832,1966],{"class":466},[460,38834,38835,38837,38839],{"class":462,"line":555},[460,38836,21870],{"class":887},[460,38838,22163],{"class":929},[460,38840,10758],{"class":466},[460,38842,38843],{"class":462,"line":560},[460,38844,18115],{"class":466},[460,38846,38847],{"class":462,"line":566},[460,38848,38849],{"class":942},"    \u002F\u002F静态成员变量 不属于某个对象上，所有对象都共享同一份数据\n",[460,38851,38852],{"class":462,"line":572},[460,38853,38854],{"class":942},"    \u002F\u002F静态成员变量有两种访问方式：\n",[460,38856,38857],{"class":462,"line":578},[460,38858,38859],{"class":942},"    \u002F\u002F1.通过对象进行访问\n",[460,38861,38862],{"class":462,"line":812},[460,38863,38864],{"class":466},"    Person p;  \n",[460,38866,38867,38869,38871,38873,38875],{"class":462,"line":818},[460,38868,18120],{"class":466},[460,38870,17750],{"class":887},[460,38872,38515],{"class":466},[460,38874,17750],{"class":887},[460,38876,17772],{"class":466},[460,38878,38879],{"class":462,"line":824},[460,38880,38881],{"class":942},"    \u002F\u002F这里其实也可以不用创建对象，因为它本身也不属于某个对象，采用下面方法\n",[460,38883,38884],{"class":462,"line":2074},[460,38885,38886],{"class":942},"    \u002F\u002F2.通过类名进行访问\n",[460,38888,38889,38891,38893,38895,38897,38899],{"class":462,"line":2088},[460,38890,18120],{"class":466},[460,38892,17750],{"class":887},[460,38894,35463],{"class":929},[460,38896,38617],{"class":466},[460,38898,17750],{"class":887},[460,38900,17772],{"class":466},[460,38902,38903,38905,38907,38909,38911,38913,38915],{"class":462,"line":2103},[460,38904,18120],{"class":466},[460,38906,17750],{"class":887},[460,38908,35463],{"class":929},[460,38910,38826],{"class":466},[460,38912,17750],{"class":887},[460,38914,17815],{"class":466},[460,38916,38917],{"class":942}," \u002F\u002F没有访问权限，报错\n",[460,38919,38920],{"class":462,"line":2122},[460,38921,821],{"class":466},[460,38923,38924,38926,38928],{"class":462,"line":2144},[460,38925,16759],{"class":887},[460,38927,18514],{"class":929},[460,38929,10758],{"class":466},[460,38931,38932],{"class":462,"line":2158},[460,38933,18115],{"class":466},[460,38935,38936,38938],{"class":462,"line":2163},[460,38937,22208],{"class":929},[460,38939,22142],{"class":466},[460,38941,38942],{"class":462,"line":2168},[460,38943,821],{"class":466},[115,38945,38947],{"id":38946},"_8282静态成员函数","8.2.8.2静态成员函数",[14,38949,38950],{},"1.静态成员函数定义与访问",[451,38952,38954],{"className":16745,"code":38953,"language":16747,"meta":32,"style":32},"class Person\n{\npublic:\n    \u002F\u002F在公共权限下定义静态成员函数\n    static void func()\n    {\n        coout\u003C\u003C\"静态成员函数的调用\"\u003C\u003Cendl;\n    }\n};\nvoid test01()\n{\n    \u002F\u002F静态成员函数的调用方式:\n    \u002F\u002F1.通过对象访问\n    Person p;\n    p.func();\n    \u002F\u002F2.通过类名访问\n    Person::func();\n}\n",[457,38955,38956,38962,38966,38970,38975,38986,38990,39004,39008,39012,39020,39024,39029,39034,39038,39046,39051,39061],{"__ignoreMap":32},[460,38957,38958,38960],{"class":462,"line":463},[460,38959,31148],{"class":887},[460,38961,31622],{"class":929},[460,38963,38964],{"class":462,"line":476},[460,38965,18115],{"class":466},[460,38967,38968],{"class":462,"line":482},[460,38969,31170],{"class":887},[460,38971,38972],{"class":462,"line":488},[460,38973,38974],{"class":942},"    \u002F\u002F在公共权限下定义静态成员函数\n",[460,38976,38977,38979,38982,38984],{"class":462,"line":494},[460,38978,27484],{"class":887},[460,38980,38981],{"class":887}," void",[460,38983,27847],{"class":929},[460,38985,10758],{"class":466},[460,38987,38988],{"class":462,"line":500},[460,38989,18570],{"class":466},[460,38991,38992,38995,38997,39000,39002],{"class":462,"line":506},[460,38993,38994],{"class":466},"        coout",[460,38996,17750],{"class":887},[460,38998,38999],{"class":1353},"\"静态成员函数的调用\"",[460,39001,17750],{"class":887},[460,39003,17772],{"class":466},[460,39005,39006],{"class":462,"line":512},[460,39007,509],{"class":466},[460,39009,39010],{"class":462,"line":518},[460,39011,20510],{"class":466},[460,39013,39014,39016,39018],{"class":462,"line":525},[460,39015,21870],{"class":887},[460,39017,22094],{"class":929},[460,39019,10758],{"class":466},[460,39021,39022],{"class":462,"line":531},[460,39023,18115],{"class":466},[460,39025,39026],{"class":462,"line":537},[460,39027,39028],{"class":942},"    \u002F\u002F静态成员函数的调用方式:\n",[460,39030,39031],{"class":462,"line":543},[460,39032,39033],{"class":942},"    \u002F\u002F1.通过对象访问\n",[460,39035,39036],{"class":462,"line":549},[460,39037,31764],{"class":466},[460,39039,39040,39042,39044],{"class":462,"line":555},[460,39041,32316],{"class":466},[460,39043,28013],{"class":929},[460,39045,22142],{"class":466},[460,39047,39048],{"class":462,"line":560},[460,39049,39050],{"class":942},"    \u002F\u002F2.通过类名访问\n",[460,39052,39053,39055,39057,39059],{"class":462,"line":566},[460,39054,34936],{"class":929},[460,39056,34149],{"class":466},[460,39058,28013],{"class":929},[460,39060,22142],{"class":466},[460,39062,39063],{"class":462,"line":572},[460,39064,821],{"class":466},[103,39066,39067],{"start":476},[43,39068,39069],{},"静态成员函数只能访问静态成员变量",[451,39071,39073],{"className":16745,"code":39072,"language":16747,"meta":32,"style":32},"class Person\n{\npublic:\n    \u002F\u002F在公共权限下定义静态成员函数\n    static void func()\n    {\n        m_A=100; \u002F\u002F静态成员函数可以访问 静态成员变量\n        \u002F\u002Fm_B=200;\u002F\u002F这行直接报错，因为Person::func();调用函数时，编译器是不知道改p1的m_B还是p2的m_B;m_A是对所有对象公用，但是m_B专属于某个对象\n        coout\u003C\u003C\"静态成员函数的调用\"\u003C\u003Cendl;\n    }\n    static int m_A; \u002F\u002F静态成员变量\n    int m_B; \u002F\u002F非静态成员变量\n\nprivate:\n    \u002F\u002F静态成员变量也是有访问权限的\n    static void func2()\n    {\n        cout\u003C\u003C\"这是私有权限下的静态函数调用\"\u003C\u003Cendl;\n    }\n\n\n};\nint Person::m_A=0;\nvoid test01()\n{\n    \u002F\u002F静态成员函数的调用方式:\n    \u002F\u002F1.通过对象访问\n    Person p;\n    p.func();\n    \u002F\u002F2.通过类名访问\n    Person::func();\n    \u002F\u002FPerson::func2();   报错，类外是访问不到私有静态成员函数的\n}\nint main()\n{\n    test01();\n}\n",[457,39074,39075,39081,39085,39089,39093,39103,39107,39121,39126,39138,39142,39153,39163,39167,39171,39175,39185,39189,39202,39206,39210,39214,39218,39232,39240,39244,39248,39252,39256,39264,39268,39278,39283,39287,39295,39299,39305],{"__ignoreMap":32},[460,39076,39077,39079],{"class":462,"line":463},[460,39078,31148],{"class":887},[460,39080,31622],{"class":929},[460,39082,39083],{"class":462,"line":476},[460,39084,18115],{"class":466},[460,39086,39087],{"class":462,"line":482},[460,39088,31170],{"class":887},[460,39090,39091],{"class":462,"line":488},[460,39092,38974],{"class":942},[460,39094,39095,39097,39099,39101],{"class":462,"line":494},[460,39096,27484],{"class":887},[460,39098,38981],{"class":887},[460,39100,27847],{"class":929},[460,39102,10758],{"class":466},[460,39104,39105],{"class":462,"line":500},[460,39106,18570],{"class":466},[460,39108,39109,39112,39114,39116,39118],{"class":462,"line":506},[460,39110,39111],{"class":466},"        m_A",[460,39113,894],{"class":887},[460,39115,2325],{"class":900},[460,39117,16807],{"class":466},[460,39119,39120],{"class":942}," \u002F\u002F静态成员函数可以访问 静态成员变量\n",[460,39122,39123],{"class":462,"line":512},[460,39124,39125],{"class":942},"        \u002F\u002Fm_B=200;\u002F\u002F这行直接报错，因为Person::func();调用函数时，编译器是不知道改p1的m_B还是p2的m_B;m_A是对所有对象公用，但是m_B专属于某个对象\n",[460,39127,39128,39130,39132,39134,39136],{"class":462,"line":518},[460,39129,38994],{"class":466},[460,39131,17750],{"class":887},[460,39133,38999],{"class":1353},[460,39135,17750],{"class":887},[460,39137,17772],{"class":466},[460,39139,39140],{"class":462,"line":525},[460,39141,509],{"class":466},[460,39143,39144,39146,39148,39150],{"class":462,"line":531},[460,39145,27484],{"class":887},[460,39147,18917],{"class":887},[460,39149,31899],{"class":466},[460,39151,39152],{"class":942}," \u002F\u002F静态成员变量\n",[460,39154,39155,39157,39160],{"class":462,"line":537},[460,39156,18525],{"class":887},[460,39158,39159],{"class":466}," m_B;",[460,39161,39162],{"class":942}," \u002F\u002F非静态成员变量\n",[460,39164,39165],{"class":462,"line":543},[460,39166,522],{"emptyLinePlaceholder":521},[460,39168,39169],{"class":462,"line":549},[460,39170,31673],{"class":887},[460,39172,39173],{"class":462,"line":555},[460,39174,38787],{"class":942},[460,39176,39177,39179,39181,39183],{"class":462,"line":560},[460,39178,27484],{"class":887},[460,39180,38981],{"class":887},[460,39182,30074],{"class":929},[460,39184,10758],{"class":466},[460,39186,39187],{"class":462,"line":566},[460,39188,18570],{"class":466},[460,39190,39191,39193,39195,39198,39200],{"class":462,"line":572},[460,39192,19972],{"class":466},[460,39194,17750],{"class":887},[460,39196,39197],{"class":1353},"\"这是私有权限下的静态函数调用\"",[460,39199,17750],{"class":887},[460,39201,17772],{"class":466},[460,39203,39204],{"class":462,"line":578},[460,39205,509],{"class":466},[460,39207,39208],{"class":462,"line":812},[460,39209,522],{"emptyLinePlaceholder":521},[460,39211,39212],{"class":462,"line":818},[460,39213,522],{"emptyLinePlaceholder":521},[460,39215,39216],{"class":462,"line":824},[460,39217,20510],{"class":466},[460,39219,39220,39222,39224,39226,39228,39230],{"class":462,"line":2074},[460,39221,16759],{"class":887},[460,39223,32020],{"class":929},[460,39225,38617],{"class":466},[460,39227,894],{"class":887},[460,39229,936],{"class":900},[460,39231,1966],{"class":466},[460,39233,39234,39236,39238],{"class":462,"line":2088},[460,39235,21870],{"class":887},[460,39237,22094],{"class":929},[460,39239,10758],{"class":466},[460,39241,39242],{"class":462,"line":2103},[460,39243,18115],{"class":466},[460,39245,39246],{"class":462,"line":2122},[460,39247,39028],{"class":942},[460,39249,39250],{"class":462,"line":2144},[460,39251,39033],{"class":942},[460,39253,39254],{"class":462,"line":2158},[460,39255,31764],{"class":466},[460,39257,39258,39260,39262],{"class":462,"line":2163},[460,39259,32316],{"class":466},[460,39261,28013],{"class":929},[460,39263,22142],{"class":466},[460,39265,39266],{"class":462,"line":2168},[460,39267,39050],{"class":942},[460,39269,39270,39272,39274,39276],{"class":462,"line":2183},[460,39271,34936],{"class":929},[460,39273,34149],{"class":466},[460,39275,28013],{"class":929},[460,39277,22142],{"class":466},[460,39279,39280],{"class":462,"line":2194},[460,39281,39282],{"class":942},"    \u002F\u002FPerson::func2();   报错，类外是访问不到私有静态成员函数的\n",[460,39284,39285],{"class":462,"line":2199},[460,39286,821],{"class":466},[460,39288,39289,39291,39293],{"class":462,"line":2204},[460,39290,16759],{"class":887},[460,39292,18514],{"class":929},[460,39294,10758],{"class":466},[460,39296,39297],{"class":462,"line":2212},[460,39298,18115],{"class":466},[460,39300,39301,39303],{"class":462,"line":2257},[460,39302,22139],{"class":929},[460,39304,22142],{"class":466},[460,39306,39307],{"class":462,"line":2285},[460,39308,821],{"class":466},[23,39310,39312],{"id":39311},"_83c对象模型和this指针","8.3C++对象模型和this指针",[115,39314,39316],{"id":39315},"_831成员变量和成员函数分开存储","8.3.1成员变量和成员函数分开存储",[14,39318,39319],{},"在c++中，类内的成员变量和成员函数分开存储",[14,39321,39322],{},"只有非静态成员变量才属于类的对象上",[4287,39324,39326],{"id":39325},"_8311空对象占的内存大小","8.3.1.1空对象占的内存大小",[451,39328,39330],{"className":16745,"code":39329,"language":16747,"meta":32,"style":32},"#include\u003Ciostraem>\nusing namespace std;\nclass Person\n{\n\n};\nvoid test01()\n{\n    Person p;\n    cout\u003C\u003C\"size of p=\"\u003C\u003Csizeoif(p)\u003C\u003Cendl; \u002F\u002F查看这个空类的占用的内存空间\n}\nint main()\n{\n    test01();\n}\n",[457,39331,39332,39339,39349,39355,39359,39363,39367,39375,39379,39383,39406,39410,39418,39422,39428],{"__ignoreMap":32},[460,39333,39334,39336],{"class":462,"line":463},[460,39335,18491],{"class":887},[460,39337,39338],{"class":1353},"\u003Ciostraem>\n",[460,39340,39341,39343,39345,39347],{"class":462,"line":476},[460,39342,18499],{"class":887},[460,39344,18502],{"class":887},[460,39346,18505],{"class":929},[460,39348,1966],{"class":466},[460,39350,39351,39353],{"class":462,"line":482},[460,39352,31148],{"class":887},[460,39354,31622],{"class":929},[460,39356,39357],{"class":462,"line":488},[460,39358,18115],{"class":466},[460,39360,39361],{"class":462,"line":494},[460,39362,522],{"emptyLinePlaceholder":521},[460,39364,39365],{"class":462,"line":500},[460,39366,20510],{"class":466},[460,39368,39369,39371,39373],{"class":462,"line":506},[460,39370,21870],{"class":887},[460,39372,22094],{"class":929},[460,39374,10758],{"class":466},[460,39376,39377],{"class":462,"line":512},[460,39378,18115],{"class":466},[460,39380,39381],{"class":462,"line":518},[460,39382,31764],{"class":466},[460,39384,39385,39387,39389,39392,39394,39397,39399,39401,39403],{"class":462,"line":525},[460,39386,18120],{"class":466},[460,39388,17750],{"class":887},[460,39390,39391],{"class":1353},"\"size of p=\"",[460,39393,17750],{"class":887},[460,39395,39396],{"class":929},"sizeoif",[460,39398,23039],{"class":466},[460,39400,17750],{"class":887},[460,39402,17815],{"class":466},[460,39404,39405],{"class":942}," \u002F\u002F查看这个空类的占用的内存空间\n",[460,39407,39408],{"class":462,"line":531},[460,39409,821],{"class":466},[460,39411,39412,39414,39416],{"class":462,"line":537},[460,39413,16759],{"class":887},[460,39415,18514],{"class":929},[460,39417,10758],{"class":466},[460,39419,39420],{"class":462,"line":543},[460,39421,18115],{"class":466},[460,39423,39424,39426],{"class":462,"line":549},[460,39425,22139],{"class":929},[460,39427,22142],{"class":466},[460,39429,39430],{"class":462,"line":555},[460,39431,821],{"class":466},[14,39433,39434],{},"输出结果为：size of p=1",[14,39436,39437],{},"原因：C++编译器会给每个空对象也分配一个字节空间，是为了区分空对象占内存的位置",[14,39439,39440],{},"每一个空对象也应该有一个独一无二的内存地址（可以这样理解：一个字节的空间不用来存储数据，而是作为标记去区分不同的对象）",[4287,39442,39444],{"id":39443},"_8312成员变量与成员函数分开存储","8.3.1.2成员变量与成员函数分开存储",[451,39446,39448],{"className":16745,"code":39447,"language":16747,"meta":32,"style":32},"#include\u003Ciostream>\nusing namespace std;\nclass Person \n{\n    int m_A;\u002F\u002F非静态成员变量\n};\nvoid test01()\n{\n    Person p;\n    cout\u003C\u003C\"size of p=\"\u003C\u003Csizeof(p)\u003C\u003Cendl; \u002F\u002F查看不是空对象时占用多少内存\n\n}\nint main()\n{\n    test01();\n}\n",[457,39449,39450,39456,39466,39474,39478,39487,39491,39499,39503,39507,39526,39530,39534,39542,39546,39552],{"__ignoreMap":32},[460,39451,39452,39454],{"class":462,"line":463},[460,39453,18491],{"class":887},[460,39455,18494],{"class":1353},[460,39457,39458,39460,39462,39464],{"class":462,"line":476},[460,39459,18499],{"class":887},[460,39461,18502],{"class":887},[460,39463,18505],{"class":929},[460,39465,1966],{"class":466},[460,39467,39468,39470,39472],{"class":462,"line":482},[460,39469,31148],{"class":887},[460,39471,32020],{"class":929},[460,39473,19198],{"class":466},[460,39475,39476],{"class":462,"line":488},[460,39477,18115],{"class":466},[460,39479,39480,39482,39484],{"class":462,"line":494},[460,39481,18525],{"class":887},[460,39483,31899],{"class":466},[460,39485,39486],{"class":942},"\u002F\u002F非静态成员变量\n",[460,39488,39489],{"class":462,"line":500},[460,39490,20510],{"class":466},[460,39492,39493,39495,39497],{"class":462,"line":506},[460,39494,21870],{"class":887},[460,39496,22094],{"class":929},[460,39498,10758],{"class":466},[460,39500,39501],{"class":462,"line":512},[460,39502,18115],{"class":466},[460,39504,39505],{"class":462,"line":518},[460,39506,31764],{"class":466},[460,39508,39509,39511,39513,39515,39517,39519,39521,39523],{"class":462,"line":525},[460,39510,18120],{"class":466},[460,39512,17750],{"class":887},[460,39514,39391],{"class":1353},[460,39516,17943],{"class":887},[460,39518,23039],{"class":466},[460,39520,17750],{"class":887},[460,39522,17815],{"class":466},[460,39524,39525],{"class":942}," \u002F\u002F查看不是空对象时占用多少内存\n",[460,39527,39528],{"class":462,"line":531},[460,39529,522],{"emptyLinePlaceholder":521},[460,39531,39532],{"class":462,"line":537},[460,39533,821],{"class":466},[460,39535,39536,39538,39540],{"class":462,"line":543},[460,39537,16759],{"class":887},[460,39539,18514],{"class":929},[460,39541,10758],{"class":466},[460,39543,39544],{"class":462,"line":549},[460,39545,18115],{"class":466},[460,39547,39548,39550],{"class":462,"line":555},[460,39549,22139],{"class":929},[460,39551,22142],{"class":466},[460,39553,39554],{"class":462,"line":560},[460,39555,821],{"class":466},[14,39557,39558],{},"输出结果：size of p=4",[14,39560,39561],{},"解释：对象是空的话就占用一字节内存；如果对象不为空，占用的内存空间就是变量占用内存空间的情况",[103,39563,39564],{},[43,39565,39566],{},"如果加上非静态成员变量，Person类修改如下",[451,39568,39570],{"className":16745,"code":39569,"language":16747,"meta":32,"style":32},"class Person\n{\n    int m_A;\n    static int m_B;\n};\n\u002F\u002F 静态成员变量类内声明，类外初始化\nint Person::m_B=0;\n",[457,39571,39572,39578,39582,39588,39596,39600,39605],{"__ignoreMap":32},[460,39573,39574,39576],{"class":462,"line":463},[460,39575,31148],{"class":887},[460,39577,31622],{"class":929},[460,39579,39580],{"class":462,"line":476},[460,39581,18115],{"class":466},[460,39583,39584,39586],{"class":462,"line":482},[460,39585,18525],{"class":887},[460,39587,37809],{"class":466},[460,39589,39590,39592,39594],{"class":462,"line":488},[460,39591,27484],{"class":887},[460,39593,18917],{"class":887},[460,39595,37816],{"class":466},[460,39597,39598],{"class":462,"line":494},[460,39599,20510],{"class":466},[460,39601,39602],{"class":462,"line":500},[460,39603,39604],{"class":942},"\u002F\u002F 静态成员变量类内声明，类外初始化\n",[460,39606,39607,39609,39611,39613,39615,39617],{"class":462,"line":506},[460,39608,16759],{"class":887},[460,39610,32020],{"class":929},[460,39612,38826],{"class":466},[460,39614,894],{"class":887},[460,39616,936],{"class":900},[460,39618,1966],{"class":466},[14,39620,39621],{},"输出结果：4",[14,39623,39624],{},"解释：静态成员变量不属于某一个对象上，因此还是看int m_A;占用4字节",[103,39626,39627],{"start":476},[43,39628,39629],{},"加上非静态成员函数",[451,39631,39633],{"className":16745,"code":39632,"language":16747,"meta":32,"style":32},"class  Person\n{\n    int m_A;\n    void func()\n    {\n\n    }\n};\n\n",[457,39634,39635,39642,39646,39652,39660,39664,39668,39672],{"__ignoreMap":32},[460,39636,39637,39639],{"class":462,"line":463},[460,39638,31148],{"class":887},[460,39640,39641],{"class":929},"  Person\n",[460,39643,39644],{"class":462,"line":476},[460,39645,18115],{"class":466},[460,39647,39648,39650],{"class":462,"line":482},[460,39649,18525],{"class":887},[460,39651,37809],{"class":466},[460,39653,39654,39656,39658],{"class":462,"line":488},[460,39655,31362],{"class":887},[460,39657,27847],{"class":929},[460,39659,10758],{"class":466},[460,39661,39662],{"class":462,"line":494},[460,39663,18570],{"class":466},[460,39665,39666],{"class":462,"line":500},[460,39667,522],{"emptyLinePlaceholder":521},[460,39669,39670],{"class":462,"line":506},[460,39671,509],{"class":466},[460,39673,39674],{"class":462,"line":512},[460,39675,20510],{"class":466},[14,39677,39678],{},"输出结果：4\n成员函数与成员变量是分开存储的，非静态成员函数不属于类对象上",[103,39680,39681],{"start":482},[43,39682,39683],{},"加上静态成员函数",[451,39685,39687],{"className":16745,"code":39686,"language":16747,"meta":32,"style":32},"class  Person\n{\n    int m_A;\n    void func()\n    {\n\n    }\n    static void func1()\n    {\n\n    }\n};\n\n",[457,39688,39689,39695,39699,39705,39713,39717,39721,39725,39736,39740,39744,39748],{"__ignoreMap":32},[460,39690,39691,39693],{"class":462,"line":463},[460,39692,31148],{"class":887},[460,39694,39641],{"class":929},[460,39696,39697],{"class":462,"line":476},[460,39698,18115],{"class":466},[460,39700,39701,39703],{"class":462,"line":482},[460,39702,18525],{"class":887},[460,39704,37809],{"class":466},[460,39706,39707,39709,39711],{"class":462,"line":488},[460,39708,31362],{"class":887},[460,39710,27847],{"class":929},[460,39712,10758],{"class":466},[460,39714,39715],{"class":462,"line":494},[460,39716,18570],{"class":466},[460,39718,39719],{"class":462,"line":500},[460,39720,522],{"emptyLinePlaceholder":521},[460,39722,39723],{"class":462,"line":506},[460,39724,509],{"class":466},[460,39726,39727,39729,39731,39734],{"class":462,"line":512},[460,39728,27484],{"class":887},[460,39730,38981],{"class":887},[460,39732,39733],{"class":929}," func1",[460,39735,10758],{"class":466},[460,39737,39738],{"class":462,"line":518},[460,39739,18570],{"class":466},[460,39741,39742],{"class":462,"line":525},[460,39743,522],{"emptyLinePlaceholder":521},[460,39745,39746],{"class":462,"line":531},[460,39747,509],{"class":466},[460,39749,39750],{"class":462,"line":537},[460,39751,20510],{"class":466},[14,39753,39621],{},[14,39755,39756],{},"解释：静态成员函数也不属于类上",[1944,39758,24171],{},{"title":32,"searchDepth":476,"depth":476,"links":39760},[39761,39767],{"id":31099,"depth":476,"text":31100,"children":39762},[39763,39764,39765,39766],{"id":31103,"depth":482,"text":31104},{"id":31825,"depth":482,"text":31826},{"id":31997,"depth":482,"text":31998},{"id":32455,"depth":482,"text":32456},{"id":34794,"depth":476,"text":34795,"children":39768},[39769,39770,39771,39772,39773,39774,39775,39776,39777],{"id":34806,"depth":482,"text":34807},{"id":35099,"depth":482,"text":35100},{"id":35590,"depth":482,"text":35591},{"id":36687,"depth":482,"text":36688},{"id":37110,"depth":482,"text":37111},{"id":37589,"depth":482,"text":37590},{"id":37963,"depth":482,"text":37964},{"id":38375,"depth":482,"text":38376},{"id":39311,"depth":482,"text":39312},"C++面向对象的三大特性为封装、继承、多态",{},"\u002Fwiki\u002F2026-05-24-c++\u002Fch8",{"title":31064,"description":39778},"wiki\u002F2026-05-24-c++学习\u002Fch8-类和对象","zb3Tc7FBL0NwZ1Abpqpn9O1Rg-UdgPbemeNRscdNci4",{"id":39785,"title":16747,"body":39786,"description":16682,"extension":16683,"meta":39790,"navigation":521,"path":39792,"seo":39793,"stem":39794,"__hash__":39795},"wiki\u002Fwiki\u002F2026-05-24-c++学习\u002Findex.md",{"type":7,"value":39787,"toc":39788},[],{"title":32,"searchDepth":476,"depth":476,"links":39789},[],{"category":39791},"机器人","\u002Fwiki\u002F2026-05-24-c++",{"title":16747,"description":16682},"wiki\u002F2026-05-24-c++学习\u002Findex","C9n-1L0uN4HGOF9HS37y6tUkSfEeWPo7gZVXtwLRezw",{"id":39797,"title":39798,"body":39799,"description":32,"extension":16683,"meta":40389,"navigation":521,"path":40390,"seo":40391,"stem":40392,"__hash__":40393},"wiki\u002Fwiki\u002F2025-12-04-强化学习\u002Fch1-强化学习的基本认识.md","1.强化学习基本认识",{"type":7,"value":39800,"toc":40371},[39801,39804,39808,39811,39814,39817,39835,39840,39843,39846,39849,39852,39857,39860,39865,39868,39871,39875,39878,39881,39887,39890,39908,39912,39916,39919,39924,39927,39931,39934,39947,39950,39954,39957,39960,39963,39988,39991,40000,40011,40026,40058,40062,40069,40077,40081,40084,40087,40092,40096,40099,40102,40107,40110,40114,40117,40120,40125,40128,40132,40137,40141,40208,40212,40215,40218,40221,40224,40227,40233,40254,40257,40271,40279,40283,40286,40289,40294,40297,40302,40307,40310,40313,40318,40323,40326,40331,40336,40339,40344,40349,40352,40355,40360,40363,40368],[10,39802,39798],{"id":39803},"_1强化学习基本认识",[18,39805,39807],{"id":39806},"_11什么是强化学习","1.1.什么是强化学习",[14,39809,39810],{},"强化学习有两部分组成：智能体和环境；",[14,39812,39813],{},"监督学习：①输入的数据（标注的数据）都应是没有关联的；②需要我们告诉学习器正确的标签是什么，学习器会根据正确标签来修正自己的预测",[14,39815,39816],{},"强化学习与监督学习的区别:",[103,39818,39819,39822,39825,39828],{},[43,39820,39821],{},"强化学习输入的样本是序列数据(是时间序列数据)，而不像监督学习里面样本都是独立的",[43,39823,39824],{},"学习器并没有告诉我们每一步正确的动作应该是什么，学习器需要自己去发现哪些动作可以带来最多的奖励，只能通过不停地尝试来发现最有利的动作",[43,39826,39827],{},"智能体获得自己能力的过程，其实是不断地试错探索（trial-and-error exploration）的过程。探索（exploration）和利用（exploitation）是强化学习里面非常核心的问题。其中，探索指尝试一些新的动作,这些新的动作有可能会使我们得到更多的奖励，也有可能使我们“一无所有”；利用指采取已知的可以获得最多奖励的动作，重复执行这个动作，因为我们知道这样做可以获得一定的奖励。因此，我们需要在探索和利用之间进行权衡，这也是在监督学习里面没有的情况",[43,39829,39830,39831,39834],{},"在强化学习过程中，没有非常强的监督者（supervisor），只有 ",[3944,39832,39833],{},"奖励信号（reward signal）"," ，并且奖励信号是延迟的，即环境会在很久以后告诉我们之前我们采取的动作到底是不是有效的。因为我们没有得到即时反馈，所以智能体使用强化学习来学习就非常困难。当我们采取一个动作后，如果我们使用监督学习，我们就可以立刻获得一个指导，比如，我们现在采取了一个错误的动作，正确的动作应该是什么。而在强化学习里面，环境可能会告诉我们这个动作是错误的，但是它并没有告诉我们正确的动作是什么。而且更困难的是，它可能是在一两分钟过后告诉我们这个动作是错误的。所以这也是强化学习和监督学习不同的地方",[14,39836,39837],{},[30,39838],{"alt":32,"src":39839},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-001.png",[14,39841,39842],{},"在强化学习过程中，智能体与环境一直在交互。智能体在环境里面获取某个状态后，它会利用该状态输出",[14,39844,39845],{},"一个动作（action），这个动作也称为决策（decision）。然后这个动作会在环境之中被执行，环境会根据智",[14,39847,39848],{},"能体采取的动作，输出下一个状态以及当前这个动作带来的奖励。智能体的目的就是尽可能多地从环境中",[14,39850,39851],{},"获取奖励",[14,39853,39854],{},[30,39855],{"alt":32,"src":39856},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-002.png",[14,39858,39859],{},"强化学习可以分成标准强化学习和深度强化学习",[14,39861,39862],{},[30,39863],{"alt":32,"src":39864},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-003.png",[14,39866,39867],{},"标准强化学习需要先设计很多特征，这些特征可以描述现在整个状态。得到这些特征后，我们就可以通过训练一个分类网络或者分别训练一个价值估计函数来采取动作",[14,39869,39870],{},"深度强化学习是一个端到端训练过程，省去了设计特征，直接输入状态就可以输出动作",[18,39872,39874],{"id":39873},"_12强化学习应用场景","1.2.强化学习应用场景",[14,39876,39877],{},"具身智能、isaaclab中机械臂的仿真任务、无人驾驶等",[14,39879,39880],{},"具身智能中的应用",[14,39882,39883,39886],{},[3944,39884,39885],{},"Sim2Real（仿真到现实）："," 由于在现实中训练机器人太慢且危险，RL通常在物理仿真环境中让机器人疯狂试错，获得高奖励的策略，然后迁移到现实",[14,39888,39889],{},"RL与VLA结合可以对VLA模型进行微调和自我修正任务",[14,39891,39892,39893,39896,39897,39900,39901,39904,39905],{},"机器人是",[3944,39894,39895],{},"躯体","，深度学习是",[3944,39898,39899],{},"神经元****网络","，VLA是",[3944,39902,39903],{},"通用的行为逻辑","，而强化学习是",[3944,39906,39907],{},"教练",[18,39909,39911],{"id":39910},"_13序列决策","1.3.序列决策",[23,39913,39915],{"id":39914},"_131智能体与环境","1.3.1.智能体与环境",[14,39917,39918],{},"强化学习研究的问题是智能体agent与环境交互的问题",[14,39920,39921],{},[30,39922],{"alt":32,"src":39923},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-004.png",[14,39925,39926],{},"agent把动作输出给环境，环境根据agent的动作会把下一步的观测与这个动作带来的奖励还给agent，交互可以产生非常多的观测，agent的目的就是从这些观测中学到最大化奖励的策略",[23,39928,39930],{"id":39929},"_132奖励","1.3.2.奖励",[14,39932,39933],{},"奖励是由环境给的一种标量的反馈信号（scalar feedback signal），这种信号可显示智能体在某一步采",[14,39935,39936,39937,39946],{},"取某个策略的表现如何。强化学习的目的就是",[3944,39938,39939,39940,39945],{},"最大化",[3944,39941,39942],{},[3944,39943,39944],{},"智能体","可以获得的奖励","，智能体在环境里面存在的目",[14,39948,39949],{},"的就是最大化它的期望的累积奖励（expected cumulative reward）。不同的环境中，奖励也是不同的。",[23,39951,39953],{"id":39952},"_133序列决策","1.3.3.序列决策",[14,39955,39956],{},"强化学习里一个重要的课题就是近期奖励和远期奖励的权衡 （trade-off），研究怎么让agent取得更多的远期奖励",[14,39958,39959],{},"在与环境的交互过程中，智能体会获得很多观测。针对每一个观测，智能体会采取一个动作，也会得",[14,39961,39962],{},"到一个奖励。所以历史是观测、动作、奖励的序列：",[14,39964,39965,39969,39970,39972,39973,39975,39976,39978,39979,6464,39982,6464,39985],{},[39966,39967,39968],"em",{},"Ht"," = ",[39966,39971,17318],{},"1*, a",[39966,39974,901],{},", r",[39966,39977,901],{},", . . . ,* ",[39966,39980,39981],{},"ot",[39966,39983,39984],{},", at ,",[39966,39986,39987],{},"rt",[14,39989,39990],{},"智能体在采取当前动作的时候会依赖于它之前得到的历史，所以我们可以把整个游戏的状态看成关于这个历史的函数：",[14,39992,39993,39969,39996,11704,39998,8411],{},[39966,39994,39995],{},"st",[39966,39997,16804],{},[39966,39999,39968],{},[14,40001,40002,40003,40006,40007,40010],{},"环境有自己的函数来更新状态，在智能体的内部也有一个函数来更新状态。当智能体的状态与环境的状态等价的时候，即当智能体能够观察到环境的所有状态时，我们称这个环境是 ",[3944,40004,40005],{},"完全可观测的（fully observed）"," 。在这种情况下面，强化学习通常被建模成一个 ",[3944,40008,40009],{},"马尔可夫决策过程（Markov decision process，MDP）"," 的问题。",[14,40012,40013,40014,40017,40018,40021,40022,40025],{},"当智能体只能看到部分的观测，我们就称这个环境是 ",[3944,40015,40016],{},"部分可观测的（partially observed）。"," 在这种情况下，强化学习通常被建模成 ",[3944,40019,40020],{},"部分可观测马尔可夫决策过程（partially observable Markov decision process, POMDP）"," 的问题。部分可观测马尔可夫决策过程是马尔可夫决策过程的一种泛化。部分可观测马尔可夫决策过程依然具有马尔可夫性质，但是假设智能体无法感知环境的状态，只能知道部分观测值。比如在自动驾驶中，智能体只能感知传感器采集的有限的环境信息。部分可观测马尔可夫决策过程可以用一个七元组描述：(",[39966,40023,40024],{},"S, A, T, R, Ω, O, γ",")。",[14,40027,40028,40029,40031,40032,40034,40035,2174,40037,40040,40041,40043,40044,2174,40047,40050,40051,40053,40054,40057],{},"其中 ",[39966,40030,17408],{}," 表示状态空间，为隐变量，",[39966,40033,16975],{}," 为动作空间，",[39966,40036,17431],{},[39966,40038,40039],{},"s ′ |s, a",") 为状态转移概率，",[39966,40042,17383],{}," 为奖励函数，",[39966,40045,40046],{},"Ω",[39966,40048,40049],{},"o|s, a",") 为观测概率，",[39966,40052,17312],{}," 为观测空间，",[39966,40055,40056],{},"γ"," 为折扣因子。",[18,40059,40061],{"id":40060},"_14动作空间","1.4.动作空间",[14,40063,40064,40065,40068],{},"不同的环境允许不同种类的动作。在给定的环境中，有效动作的集合经常被称为 ",[3944,40066,40067],{},"动作空间"," ，动作空间分为:",[103,40070,40071,40074],{},[43,40072,40073],{},"离散动作空间:在该空间中，智能体的动作数量是有限的",[43,40075,40076],{},"连续动作空间：在其他环境，比如在物理世界中控制一个智能体，在这个环境中就有连续动作空间，在连续动作空间中，动作是实值的向量",[18,40078,40080],{"id":40079},"_15强化学习智能体的组成成分和类型","1.5.强化学习智能体的组成成分和类型",[14,40082,40083],{},"由策略、价值函数、模型三部分组成",[14,40085,40086],{},"这三者组成马尔可夫决策过程",[14,40088,40089],{},[30,40090],{"alt":32,"src":40091},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-005.png",[23,40093,40095],{"id":40094},"_151策略","1.5.1.策略",[14,40097,40098],{},"策略是智能体的动作模型，它决定了智能体的动作。它其实是一个函数，用于把输入的状态变成动作。",[14,40100,40101],{},"策略可分为两种：",[14,40103,40104],{},[30,40105],{"alt":32,"src":40106},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-006.png",[14,40108,40109],{},"强化学习一般使用的是随机性策略，相比于确定性策略使得agent对同样的状态采用相同的动作，随机性策略动作具有多样性，在智能体博弈时非常重要",[23,40111,40113],{"id":40112},"_152价值函数","1.5.2.价值函数",[14,40115,40116],{},"这个函数是对未来奖励的预测-->评估状态的好坏",[14,40118,40119],{},"价值函数中有一个折扣因子，类似于存款利息",[14,40121,40122],{},[30,40123],{"alt":32,"src":40124},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-007.png",[14,40126,40127],{},"进入某个状态采取的最优动作可以通过Q函数得到",[23,40129,40131],{"id":40130},"_153模型","1.5.3.模型",[14,40133,40134],{},[30,40135],{"alt":32,"src":40136},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-008.png",[18,40138,40140],{"id":40139},"_16强化学习智能体的类型","1.6.强化学习智能体的类型",[16884,40142,40143,40154],{},[16887,40144,40145],{},[16890,40146,40147,40151],{},[16893,40148,40150],{"align":40149},"left","类型",[16893,40152,40153],{"align":40149},"特点",[16930,40155,40156,40166,40176,40186,40198],{},[16890,40157,40158,40163],{},[16935,40159,40160],{"align":40149},[3944,40161,40162],{},"基于价值的智能体",[16935,40164,40165],{"align":40149},"显式地学习价值函数，隐式地学习它的策略。 策略是其从学到的价值函数里面推算出来的。",[16890,40167,40168,40173],{},[16935,40169,40170],{"align":40149},[3944,40171,40172],{},"基于策略的智能体",[16935,40174,40175],{"align":40149},"直接学习策略，没有学习价值函数",[16890,40177,40178,40183],{},[16935,40179,40180],{"align":40149},[3944,40181,40182],{},"演员-评论员智能体",[16935,40184,40185],{"align":40149},"基于策略的智能体和基于价值智能体的结合版，将策略和价值都学习了，通过两者的交互得到最佳动作",[16890,40187,40188,40193],{},[16935,40189,40190],{"align":40149},[3944,40191,40192],{},"有模型强化学习智能体",[16935,40194,40195],{"align":40149},[30,40196],{"alt":32,"src":40197},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-009.png",[16890,40199,40200,40205],{},[16935,40201,40202],{"align":40149},[3944,40203,40204],{},"免模型强化学习智能体",[16935,40206,40207],{"align":40149},"没有去直接估计状态的转移，也没有得到环境的具体转移量，它通过学习价值函数和策略函数进行决策，没有环境转移的模型 不对环境建模，直接与真实环境交互学习得到最优策略",[18,40209,40211],{"id":40210},"_17剩余强化学习概念知识","1.7.剩余强化学习概念知识",[14,40213,40214],{},"学习和规划是序列决策的两个基本问题",[14,40216,40217],{},"一个常用的强化学习问题解决思路：先学习环境如何工作，也就是了解环境工作的方式，即学习得到一个模型，然后利用这个模型进行规划",[14,40219,40220],{},"在强化学习里面，探索和利用是两个很核心的问题。探索即我们去探索环境，通过尝试不同的动作来得到最佳的策略（带来最大奖励的策略）。利用即我们不去尝试新的动作，而是采取已知的可以带来很大奖励的动作",[14,40222,40223],{},"强化学习用到的库：Gym",[14,40225,40226],{},"Gym可以检验强化学习算法的优劣",[14,40228,40229,40232],{},[3944,40230,40231],{},"Gym 库"," 是一个环境仿真库，里面包含很多现有的环境。针对不同的场景，我们可以选择不同的环境。离散控制场景一般使用雅达利环境评估；连续控制场景一 般使用 MuJoCo 环境评估",[451,40234,40238],{"className":40235,"code":40236,"language":40237,"meta":32,"style":32},"language-bash shiki shiki-themes github-light github-dark","pip install gym==0.25.2\n","bash",[457,40239,40240],{"__ignoreMap":32},[460,40241,40242,40245,40248,40251],{"class":462,"line":463},[460,40243,40244],{"class":929},"pip",[460,40246,40247],{"class":1353}," install",[460,40249,40250],{"class":1353}," gym==",[460,40252,40253],{"class":900},"0.25.2\n",[14,40255,40256],{},"显示图形界面需要",[451,40258,40260],{"className":40235,"code":40259,"language":40237,"meta":32,"style":32},"pip install pygame\n",[457,40261,40262],{"__ignoreMap":32},[460,40263,40264,40266,40268],{"class":462,"line":463},[460,40265,40244],{"class":929},[460,40267,40247],{"class":1353},[460,40269,40270],{"class":1353}," pygame\n",[14,40272,40273,40274],{},"有关Gym库的相关文档介绍：",[2756,40275,40278],{"href":40276,"rel":40277},"https:\u002F\u002Fgymnasium.org.cn\u002Fintroduction\u002Fbasic%5C_usage\u002F",[4943],"https:\u002F\u002Fgymnasium.org.cn\u002Fintroduction\u002Fbasic\\_usage\u002F",[18,40280,40282],{"id":40281},"_18一些补充基础概念","1.8.一些补充基础概念",[14,40284,40285],{},"强化学习的过程:强化学习中会使用概率密度函数来表示智能体根据当前的状态所作的动作的概率情况，智能体在执行动作之后，此时会得到一个奖励函数，此时会更新智能体的状态",[14,40287,40288],{},"St时刻的奖励函数肯定要比St+1时刻的奖励函数要值钱一些的，因为St时刻的奖励获得后，St+1时刻的奖励不一定就会获得，所以要给未来的奖励打折扣，所以折扣回报如下:",[14,40290,40291],{},[30,40292],{"alt":32,"src":40293},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-010.png",[14,40295,40296],{},"折扣率需要自己来设定",[14,40298,40299],{},[30,40300],{"alt":32,"src":40301},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-011.png",[103,40303,40304],{},[43,40305,40306],{},"状态转移函数：",[14,40308,40309],{},"指的是在状态 s下执行动作a后，环境有多大可能会进入每一个可能的下一个状态s'",[14,40311,40312],{},"例如角色在坐标中运动，得到的信息会是下方这种情况",[14,40314,40315],{},[30,40316],{"alt":32,"src":40317},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-012.png",[103,40319,40320],{"start":476},[43,40321,40322],{},"动作价值函数：",[14,40324,40325],{},"在t时刻并不知道这个折扣函数Ut是啥，所以可以对Ut求期望，QΠ只依赖于当前的状态St和动作at，动作价值可以反映当前状态St下，智能体做动作at的好坏程度",[14,40327,40328],{},[30,40329],{"alt":32,"src":40330},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-013.png",[103,40332,40333],{"start":482},[43,40334,40335],{},"最优动作价值函数：",[14,40337,40338],{},"这个函数是对QΠ关于策略Π求最大化，表示不管用什么样的策略函数Π，要使agent在当前状态St下做动作at，回报Ut的期望顶多为Q*，而且Q*函数跟策略函数中的Π是无关的，只要agent现在做了动作a，那么Q*(St,at)就是最好的结果，即使现在你将策略函数Π改进的再好，获得的期望汇报Ut也不可能比Q*(St,at)更好；Q*反映了基于当前状态St做出at的好坏程度，也就是说Q*函数可以指导agent做决策：agent观测当前的状态st，Q*函数会给所有的动作打分，agent会基于这个分数来做决策，这样期望回报会最大化",[14,40340,40341],{},[30,40342],{"alt":32,"src":40343},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-014.png",[103,40345,40346],{"start":488},[43,40347,40348],{},"状态价值函数:",[14,40350,40351],{},"在遵循某个特定策略 π 的情况下，从状态 s 开始，所能获得的期望折扣回报（平均长期总收益）",[14,40353,40354],{},"它衡量的是“一个具体动作”的长期价值",[14,40356,40357],{},[30,40358],{"alt":32,"src":40359},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-015.png",[14,40361,40362],{},"几个价值函数之间的比较：",[14,40364,40365],{},[30,40366],{"alt":32,"src":40367},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-016.png",[1944,40369,40370],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":32,"searchDepth":476,"depth":476,"links":40372},[40373,40374,40375,40380,40381,40386,40387,40388],{"id":39806,"depth":476,"text":39807},{"id":39873,"depth":476,"text":39874},{"id":39910,"depth":476,"text":39911,"children":40376},[40377,40378,40379],{"id":39914,"depth":482,"text":39915},{"id":39929,"depth":482,"text":39930},{"id":39952,"depth":482,"text":39953},{"id":40060,"depth":476,"text":40061},{"id":40079,"depth":476,"text":40080,"children":40382},[40383,40384,40385],{"id":40094,"depth":482,"text":40095},{"id":40112,"depth":482,"text":40113},{"id":40130,"depth":482,"text":40131},{"id":40139,"depth":476,"text":40140},{"id":40210,"depth":476,"text":40211},{"id":40281,"depth":476,"text":40282},{},"\u002Fwiki\u002F2025-12-04\u002Fch1",{"title":39798,"description":32},"wiki\u002F2025-12-04-强化学习\u002Fch1-强化学习的基本认识","QQJgDM8AHMQ2lFI0H5HtcYYpQ6x5K4ccUrZvuGfUAxM",{"id":40395,"title":40396,"body":40397,"description":40404,"extension":16683,"meta":40415,"navigation":521,"path":40416,"seo":40417,"stem":40418,"__hash__":40419},"wiki\u002Fwiki\u002F2025-12-04-强化学习\u002Fch2-马尔可夫决策过程.md","2.马尔可夫决策过程",{"type":7,"value":40398,"toc":40413},[40399,40402,40405,40410],[10,40400,40396],{"id":40401},"_2马尔可夫决策过程",[14,40403,40404],{},"这是强化学习的基本框架",[14,40406,40407],{},[30,40408],{"alt":32,"src":40409},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-017.png",[14,40411,40412],{},"马尔可夫过程指的是状态，核心为单步状态依赖",{"title":32,"searchDepth":476,"depth":476,"links":40414},[],{},"\u002Fwiki\u002F2025-12-04\u002Fch2",{"title":40396,"description":40404},"wiki\u002F2025-12-04-强化学习\u002Fch2-马尔可夫决策过程","V3fB9MQC6Z7cMbsh_eQBMmJ6frTaqyZrzXVsFs9eZSM",{"id":40421,"title":40422,"body":40423,"description":32,"extension":16683,"meta":40539,"navigation":521,"path":40540,"seo":40541,"stem":40542,"__hash__":40543},"wiki\u002Fwiki\u002F2025-12-04-强化学习\u002Fch3-动作价值函数.md","3.动作价值函数",{"type":7,"value":40424,"toc":40534},[40425,40428,40432,40435,40440,40445,40448,40453,40456,40461,40464,40468,40473,40476,40481,40486,40491,40494,40498,40503,40506,40511,40516,40521,40526,40529],[10,40426,40422],{"id":40427},"_3动作价值函数",[18,40429,40431],{"id":40430},"_31dqn","3.1.DQN",[14,40433,40434],{},"Deep Q-Network是一种价值学习的方法，用一个神经网络去近似Q*函数，将神经网络近似为Q（s,a;w）",[14,40436,40437],{},[30,40438],{"alt":32,"src":40439},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-018.png",[14,40441,40442],{},[30,40443],{"alt":32,"src":40444},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-019.png",[14,40446,40447],{},"DQN算法的描述：",[14,40449,40450],{},[30,40451],{"alt":32,"src":40452},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-020.png",[14,40454,40455],{},"这里的Dense指的是全连接层",[14,40457,40458],{},[30,40459],{"alt":32,"src":40460},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-021.png",[14,40462,40463],{},"当前观测的状态为St，用DQN把St作为输入，给所有的动作打分，选出动作最高的动作作为at，agent做出at动作后，环境会改变状态，用状态转移函数p来随机抽一个新的状态st+1，环境还会告诉我们这一步的奖励Rt，这个奖励可以+-0，奖励是强化学习中的监督信号，DQN要靠这些奖励来训练，有了新的状态St+1，DQN会再对所有的动作打分，agent选择分数最高的动作作为at+1，agent执行at+1后，环境会再更新状态s和再给一个奖励R，然后会继续重复之前的动作 训练DQN的最常用方法是TD算法",[18,40465,40467],{"id":40466},"_32dqn的举例","3.2.DQN的举例",[14,40469,40470],{},[30,40471],{"alt":32,"src":40472},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-022.png",[14,40474,40475],{},"上方进行模型预测的话需要完成整个过程才可以对模型进行更新，使用TD算法可以改进这一问题，不需要完成整个过程，只需要利用其中的一段过程来更新模型",[14,40477,40478],{},[30,40479],{"alt":32,"src":40480},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-023.png",[14,40482,40483],{},[30,40484],{"alt":32,"src":40485},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-024.png",[14,40487,40488],{},[30,40489],{"alt":32,"src":40490},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-025.png",[14,40492,40493],{},"TD算法的原理是尽可能的让TD error=0(预计时间与实际时间相等)，TD算法要用梯度下降来减少TD error",[18,40495,40497],{"id":40496},"_33td算法","3.3.TD算法",[14,40499,40500],{},[30,40501],{"alt":32,"src":40502},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-026.png",[14,40504,40505],{},"强化学习TD算法公式的粗略解释：",[14,40507,40508],{},[30,40509],{"alt":32,"src":40510},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-027.png",[14,40512,40513],{},[30,40514],{"alt":32,"src":40515},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-028.png",[14,40517,40518],{},[30,40519],{"alt":32,"src":40520},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-029.png",[14,40522,40523],{},[30,40524],{"alt":32,"src":40525},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-030.png",[14,40527,40528],{},"TD算法总结：",[14,40530,40531],{},[30,40532],{"alt":32,"src":40533},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-031.png",{"title":32,"searchDepth":476,"depth":476,"links":40535},[40536,40537,40538],{"id":40430,"depth":476,"text":40431},{"id":40466,"depth":476,"text":40467},{"id":40496,"depth":476,"text":40497},{},"\u002Fwiki\u002F2025-12-04\u002Fch3",{"title":40422,"description":32},"wiki\u002F2025-12-04-强化学习\u002Fch3-动作价值函数","hOI8u98eYzg8VeCIrCMpe_y_lDcQnTxfrNA8iN4Vl7g",{"id":40545,"title":40546,"body":40547,"description":32,"extension":16683,"meta":40780,"navigation":521,"path":40781,"seo":40782,"stem":40783,"__hash__":40784},"wiki\u002Fwiki\u002F2025-12-04-强化学习\u002Fch4-策略函数.md","4.策略学习",{"type":7,"value":40548,"toc":40776},[40549,40552,40556,40559,40562,40567,40572,40575,40580,40585,40588,40593,40596,40601,40604,40609,40612,40617,40620,40625,40630,40633,40638,40641,40644,40649,40652,40657,40662,40666,40669,40672,40677,40682,40685,40690,40695,40698,40703,40706,40709,40714,40717,40722,40725,40730,40735,40738,40743,40748,40751,40756,40759,40764,40767],[10,40550,40546],{"id":40551},"_4策略学习",[18,40553,40555],{"id":40554},"_41概念描述","4.1.概念描述",[14,40557,40558],{},"用神经网络（策略网络）近似策略函数",[14,40560,40561],{},"策略函数是一个概率密度函数，可以用它来自动控制agent运动，输入是状态s，输出是一个概率分布",[14,40563,40564],{},[30,40565],{"alt":32,"src":40566},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-032.png",[14,40568,40569],{},[30,40570],{"alt":32,"src":40571},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-033.png",[14,40573,40574],{},"softmax函数这个激活函数可以让输出都为正数，且加和为1，策略函数必须满足如下性质：对于所有可能的动作A，把Π函数的输出全部加起来必须要等于1",[14,40576,40577],{},[30,40578],{"alt":32,"src":40579},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-034.png",[14,40581,40582],{},[30,40583],{"alt":32,"src":40584},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-035.png",[14,40586,40587],{},"使用神经网络来近似策略函数，这样的话VΠ(St)就变为了VΠ(St,theta)，theta是神经网络中的参数 实现策略网络近似策略函数，V可以评价状态S和策略网络的好坏，给定状态S和策略网络越好，则V值越大",[14,40589,40590],{},[30,40591],{"alt":32,"src":40592},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-036.png",[14,40594,40595],{},"所以关键在于让策略网络变得越来越好：改变模型参数theta，让V(St,theta)变大，基于此我们可以把目标函数定义为V(St,theta)的期望J(theta)，这个期望是关于状态s来求解的，将状态S作为随机变量用期望的形式将其去掉，这样就只剩theta--->J(theta)就是对策略网络的评价（策略网络i越好，J(theta)就越大）",[14,40597,40598],{},[30,40599],{"alt":32,"src":40600},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-037.png",[14,40602,40603],{},"改进theta要用到策略梯度算法",[14,40605,40606],{},[30,40607],{"alt":32,"src":40608},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-038.png",[14,40610,40611],{},"这里采用梯度上升的形式实现theta更新(我们希望theta变大以提高J值)",[14,40613,40614],{},[30,40615],{"alt":32,"src":40616},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-039.png",[14,40618,40619],{},"假设QΠ(s,a)不依赖于theta，不影响最后结果的，即使QΠ是theta的导数最终结果也依然是如下的结果",[14,40621,40622],{},[30,40623],{"alt":32,"src":40624},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-040.png",[14,40626,40627],{},[30,40628],{"alt":32,"src":40629},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-041.png",[14,40631,40632],{},"梯度公式总结：",[14,40634,40635],{},[30,40636],{"alt":32,"src":40637},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-042.png",[14,40639,40640],{},"两个公式的分别应用场景：",[14,40642,40643],{},"对于离散的动作：",[14,40645,40646],{},[30,40647],{"alt":32,"src":40648},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-043.png",[14,40650,40651],{},"对于连续的动作：",[14,40653,40654],{},[30,40655],{"alt":32,"src":40656},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-044.png",[14,40658,40659],{},[30,40660],{"alt":32,"src":40661},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-045.png",[18,40663,40665],{"id":40664},"_42概率梯度算法总结","4.2.概率梯度算法总结",[14,40667,40668],{},"使用蒙特卡洛来近似计算策略梯度",[14,40670,40671],{},"蒙特卡洛法的解释如下：",[14,40673,40674],{},[30,40675],{"alt":32,"src":40676},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-046.png",[14,40678,40679],{},[30,40680],{"alt":32,"src":40681},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-047.png",[14,40683,40684],{},"但是现在存在一个问题，并不知道动作价值函数的值(QΠ(St,at))，可以通过如下两个办法来近似qt",[103,40686,40687],{},[43,40688,40689],{},"方法一：reinforce算法",[14,40691,40692],{},[30,40693],{"alt":32,"src":40694},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-048.png",[14,40696,40697],{},"用策略网络来控制agent的运动，从一开始到玩到游戏结束，把整个游戏的轨迹都记录下来了，观测到所有的奖励R，我们可以算出折扣汇报Ut，由于价值函数QΠ(St,at)是大于Ut的期望，所以可以用Ut的观测值ut来近似QΠ，这个REINFORCE算法就是用观测到的ut来代替QΠ函数，这个算法需要玩完一局游戏，观测到所有的奖励，然后才可以更新策略网络",[103,40699,40700],{"start":476},[43,40701,40702],{},"方法二：actor-critic算法",[14,40704,40705],{},"这一方法是用一个神经网络来做函数近似QΠ，这样加上之前用神经网络近似的策略函数Π，总共有两个神经网络，一个被称为actor，一个被称为critic，这个方法就是actor-critic方法，这个方法将策略学习与价值学习结合起来（策略网络用来控制agent的运动，可以将策略网络理解为体操运动员，要做一连串的动作；价值网络用来评价动作的好坏，可以将价值网络理解为裁判或评委，给运动员动作打分；终极目标是训练这个策略函数Π，也就是这个运动员，价值网络作为裁判起辅助作用，最后训好就不再用了）",[14,40707,40708],{},"两个网络的构建：",[14,40710,40711],{},[30,40712],{"alt":32,"src":40713},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-049.png",[14,40715,40716],{},"actor网路：",[14,40718,40719],{},[30,40720],{"alt":32,"src":40721},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-050.png",[14,40723,40724],{},"critic网络",[14,40726,40727],{},[30,40728],{"alt":32,"src":40729},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-051.png",[103,40731,40732],{"start":482},[43,40733,40734],{},"网络的训练",[14,40736,40737],{},"网络描述",[14,40739,40740],{},[30,40741],{"alt":32,"src":40742},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-052.png",[14,40744,40745],{},[30,40746],{"alt":32,"src":40747},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-053.png",[14,40749,40750],{},"TD算法更新梯度：",[14,40752,40753],{},[30,40754],{"alt":32,"src":40755},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-054.png",[14,40757,40758],{},"策略网络更新梯度：",[14,40760,40761],{},[30,40762],{"alt":32,"src":40763},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-055.png",[14,40765,40766],{},"训练整个流程的具体描述：",[14,40768,40769,40772,40773],{},[30,40770],{"alt":32,"src":40771},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-056.png","\n4.  算法步骤总结：\n",[30,40774],{"alt":32,"src":40775},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-057.png",{"title":32,"searchDepth":476,"depth":476,"links":40777},[40778,40779],{"id":40554,"depth":476,"text":40555},{"id":40664,"depth":476,"text":40665},{},"\u002Fwiki\u002F2025-12-04\u002Fch4",{"title":40546,"description":32},"wiki\u002F2025-12-04-强化学习\u002Fch4-策略函数","iPTq7imHbOiAmdpc63dBoleY9XDApFgwiwvhpbNentI",{"id":40786,"title":40787,"body":40788,"description":40795,"extension":16683,"meta":40845,"navigation":521,"path":40846,"seo":40847,"stem":40848,"__hash__":40849},"wiki\u002Fwiki\u002F2025-12-04-强化学习\u002Fch5-Alphago算法.md","5.Alphago算法",{"type":7,"value":40789,"toc":40841},[40790,40793,40796,40800,40803,40808,40812,40815,40820,40823,40828,40833,40836],[10,40791,40787],{"id":40792},"_5alphago算法",[14,40794,40795],{},"这一算法有两种实现形式：通过模仿学习来训练策略网络或通过强化学习来训练策略网络",[18,40797,40799],{"id":40798},"_51behavior-cloning训练策略网络","5.1.Behavior cloning训练策略网络",[14,40801,40802],{},"使用behavior cloning来训练策略网络，模仿人类的动作来实现任务的，不会用到rewards奖励；behavior cloning的缺陷是无法保证状态St一定出现在训练数据中，策略网络没有见过状态St，策略网络的决策at就会比较差，会使得错误累加，导致状态变得越来越奇怪",[14,40804,40805],{},[30,40806],{"alt":32,"src":40807},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-058.png",[18,40809,40811],{"id":40810},"_52上述弊端的解决方式","5.2.上述弊端的解决方式",[14,40813,40814],{},"采用强化学习的方式训练策略网络",[14,40816,40817],{},[30,40818],{"alt":32,"src":40819},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-059.png",[14,40821,40822],{},"Alphago让两个策略网络进行博弈(player和opponent)，Player就是agent，它是由策略网络来控制的，用的是策略网络最新的模型参数，每下完一局围棋，把胜负作为奖励，靠奖励来更新player的参数；opponent相当于环境，它是用来陪agent的，每当player下一个棋子，opponent也要跟着走一步，相当于随机状态转移，opponent也是策略网络来控制的，但是opponent的参数不用学习，随机从旧的参数中选出一个作为opponent的参数即可",[14,40824,40825],{},[30,40826],{"alt":32,"src":40827},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-060.png",[14,40829,40830],{},[30,40831],{"alt":32,"src":40832},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-061.png",[14,40834,40835],{},"强化学习训练策略网络的总结：",[14,40837,40838],{},[30,40839],{"alt":32,"src":40840},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-04-%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0-062.png",{"title":32,"searchDepth":476,"depth":476,"links":40842},[40843,40844],{"id":40798,"depth":476,"text":40799},{"id":40810,"depth":476,"text":40811},{},"\u002Fwiki\u002F2025-12-04\u002Fch5-alphago",{"title":40787,"description":40795},"wiki\u002F2025-12-04-强化学习\u002Fch5-Alphago算法","7NankPVCRx1TrpHTCvluPUc71533NNCBPe3Q8v6G_DE",{"id":40851,"title":40852,"body":40853,"description":40860,"extension":16683,"meta":40863,"navigation":521,"path":40864,"seo":40865,"stem":40866,"__hash__":40867},"wiki\u002Fwiki\u002F2025-12-04-强化学习\u002Fch6-价值网络.md","6.价值网络",{"type":7,"value":40854,"toc":40861},[40855,40858],[10,40856,40852],{"id":40857},"_6价值网络",[14,40859,40860],{},"价值网络是对状态价值函数V的近似，而不是对Q的近似",{"title":32,"searchDepth":476,"depth":476,"links":40862},[],{},"\u002Fwiki\u002F2025-12-04\u002Fch6",{"title":40852,"description":40860},"wiki\u002F2025-12-04-强化学习\u002Fch6-价值网络","3cEHo5nTUYq0vWJWE4vi_wjaXMU6_zNuhEXQKUo0VEw",{"id":40869,"title":40870,"body":40871,"description":40875,"extension":16683,"meta":40876,"navigation":521,"path":40877,"seo":40878,"stem":40879,"__hash__":40880},"wiki\u002Fwiki\u002F2025-12-04-强化学习\u002Findex.md","强化学习",{"type":7,"value":40872,"toc":40873},[],{"title":32,"searchDepth":476,"depth":476,"links":40874},[],"记录自己的强化学习笔记。",{"category":39791},"\u002Fwiki\u002F2025-12-04",{"title":40870,"description":40875},"wiki\u002F2025-12-04-强化学习\u002Findex","mU4IQte9eGoyxGmnQYAjswHUQyt6-Sy7KQ-XeruBDHA",{"id":40882,"title":40883,"body":40884,"description":16682,"extension":16683,"meta":40923,"navigation":521,"path":40924,"seo":40925,"stem":40926,"__hash__":40927},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch1-项目概览与官方资源.md","1. 项目概览与官方资源",{"type":7,"value":40885,"toc":40921},[40886,40889,40892,40898,40901,40907,40910,40915,40918],[10,40887,40883],{"id":40888},"_1-项目概览与官方资源",[14,40890,40891],{},"官方文档：",[14,40893,40894],{},[2756,40895,40896],{"href":40896,"rel":40897},"https:\u002F\u002Fhuggingface.co\u002Fdocs\u002Flerobot\u002Fso101",[4943],[14,40899,40900],{},"官方代码仓库：",[14,40902,40903],{},[2756,40904,40905],{"href":40905,"rel":40906},"https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Flerobot",[4943],[14,40908,40909],{},"复现大体流程：",[14,40911,40912],{},[30,40913],{"alt":32,"src":40914},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-001.png",[14,40916,40917],{},"本教程的目标是打通这条链路：",[14,40919,40920],{},"硬件连通 -> 遥操采集 -> 数据集上传 -> ACT 训练 -> 策略回放\u002F部署。",{"title":32,"searchDepth":476,"depth":476,"links":40922},[],{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch1",{"title":40883,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch1-项目概览与官方资源","aG5q21Mq3Ar_oYCKvVnhRqPnnBwQLIhGvrE7YSibWFk",{"id":40929,"title":40930,"body":40931,"description":16682,"extension":16683,"meta":41047,"navigation":521,"path":41048,"seo":41049,"stem":41050,"__hash__":41051},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch2-环境准备与设备连接.md","2. 环境准备与设备连接",{"type":7,"value":40932,"toc":41042},[40933,40936,40940,40943,40950,40954,40957,40966,40976,40980,41010,41013,41039],[10,40934,40930],{"id":40935},"_2-环境准备与设备连接",[18,40937,40939],{"id":40938},"_21-系统与环境","2.1 系统与环境",[14,40941,40942],{},"可用系统：Linux \u002F Windows(Wsl2) \u002F macOS。",[14,40944,40945,40946,40949],{},"建议使用 conda 创建独立虚拟环境，并按官方文档安装 ",[457,40947,40948],{},"lerobot"," 依赖。",[18,40951,40953],{"id":40952},"_22-机械臂串口识别","2.2 机械臂串口识别",[14,40955,40956],{},"需要用拓展坞把 usb 和电源接到 MotorBus。执行端口探测命令：",[451,40958,40960],{"className":40235,"code":40959,"language":40237,"meta":32,"style":32},"lerobot-find-out\n",[457,40961,40962],{"__ignoreMap":32},[460,40963,40964],{"class":462,"line":463},[460,40965,40959],{"class":929},[14,40967,40968,40969,16957,40972,40975],{},"按提示断开\u002F接回线缆后，记录识别出的串口（如 ",[457,40970,40971],{},"\u002Fdev\u002FttyACM0",[457,40973,40974],{},"\u002Fdev\u002FttyACM1","）。",[18,40977,40979],{"id":40978},"_23-串口授权","2.3 串口授权",[451,40981,40983],{"className":40235,"code":40982,"language":40237,"meta":32,"style":32},"sudo chmod 666 \u002Fdev\u002FttyACM0\nsudo chmod 666 \u002Fdev\u002FttyACM1\n",[457,40984,40985,40999],{"__ignoreMap":32},[460,40986,40987,40990,40993,40996],{"class":462,"line":463},[460,40988,40989],{"class":929},"sudo",[460,40991,40992],{"class":1353}," chmod",[460,40994,40995],{"class":900}," 666",[460,40997,40998],{"class":1353}," \u002Fdev\u002FttyACM0\n",[460,41000,41001,41003,41005,41007],{"class":462,"line":476},[460,41002,40989],{"class":929},[460,41004,40992],{"class":1353},[460,41006,40995],{"class":900},[460,41008,41009],{"class":1353}," \u002Fdev\u002FttyACM1\n",[14,41011,41012],{},"说明：",[40,41014,41015,41020,41026,41036],{},[43,41016,41017,41019],{},[457,41018,40989],{},"：以 root 权限执行命令。",[43,41021,41022,41025],{},[457,41023,41024],{},"chmod","：修改设备节点权限。",[43,41027,41028,41031,41032,41035],{},[457,41029,41030],{},"666","：",[457,41033,41034],{},"rw-rw-rw-","，所有用户可读写。",[43,41037,41038],{},"串口号必须替换为你机器上的真实端口。",[1944,41040,41041],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":32,"searchDepth":476,"depth":476,"links":41043},[41044,41045,41046],{"id":40938,"depth":476,"text":40939},{"id":40952,"depth":476,"text":40953},{"id":40978,"depth":476,"text":40979},{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch2",{"title":40930,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch2-环境准备与设备连接","rkCwGsCF9P0Hxf6FNqwOMf_cN32ap76nbDFqDZjilSg",{"id":41053,"title":41054,"body":41055,"description":16682,"extension":16683,"meta":41216,"navigation":521,"path":41217,"seo":41218,"stem":41219,"__hash__":41220},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch3-电机ID配置与机械臂校准.md","3. 电机ID配置与机械臂校准",{"type":7,"value":41056,"toc":41212},[41057,41061,41065,41071,41074,41131,41134,41138,41141,41209],[10,41058,41060],{"id":41059},"_3-电机-id-配置与机械臂校准","3. 电机 ID 配置与机械臂校准",[18,41062,41064],{"id":41063},"_31-配置电机-id","3.1 配置电机 ID",[14,41066,41067,41068,41070],{},"每个电机都需要唯一 ID。新电机默认常见为 ",[457,41069,901],{},"，需要改成机械臂链路里不冲突的编号。",[14,41072,41073],{},"方式一：用 LeRobot 命令逐步写入。",[451,41075,41077],{"className":40235,"code":41076,"language":40237,"meta":32,"style":32},"# 主臂舵机配置 ID\nlerobot-setup-motors \\\n  --teleop.type=so101_leader \\\n  --teleop.port=\u002Fdev\u002FttyACM0\n\n# 从臂舵机配置 ID\nlerobot-setup-motors \\\n  --robot.type=so101_follower \\\n  --robot.port=\u002Fdev\u002FttyACM1\n",[457,41078,41079,41084,41092,41099,41104,41108,41113,41119,41126],{"__ignoreMap":32},[460,41080,41081],{"class":462,"line":463},[460,41082,41083],{"class":942},"# 主臂舵机配置 ID\n",[460,41085,41086,41089],{"class":462,"line":476},[460,41087,41088],{"class":929},"lerobot-setup-motors",[460,41090,41091],{"class":900}," \\\n",[460,41093,41094,41097],{"class":462,"line":482},[460,41095,41096],{"class":900},"  --teleop.type=so101_leader",[460,41098,41091],{"class":900},[460,41100,41101],{"class":462,"line":488},[460,41102,41103],{"class":900},"  --teleop.port=\u002Fdev\u002FttyACM0\n",[460,41105,41106],{"class":462,"line":494},[460,41107,522],{"emptyLinePlaceholder":521},[460,41109,41110],{"class":462,"line":500},[460,41111,41112],{"class":942},"# 从臂舵机配置 ID\n",[460,41114,41115,41117],{"class":462,"line":506},[460,41116,41088],{"class":929},[460,41118,41091],{"class":900},[460,41120,41121,41124],{"class":462,"line":512},[460,41122,41123],{"class":900},"  --robot.type=so101_follower",[460,41125,41091],{"class":900},[460,41127,41128],{"class":462,"line":518},[460,41129,41130],{"class":900},"  --robot.port=\u002Fdev\u002FttyACM1\n",[14,41132,41133],{},"方式二：使用对应舵机厂商调试工具改 ID（排障时也常用）。",[18,41135,41137],{"id":41136},"_32-机械臂校准","3.2 机械臂校准",[14,41139,41140],{},"校准时先把关节放到行程中间位置，按提示在全行程内运动每个关节。",[451,41142,41144],{"className":40235,"code":41143,"language":40237,"meta":32,"style":32},"# 主臂校准\nlerobot-calibrate \\\n  --teleop.type=so101_leader \\\n  --teleop.port=\u002Fdev\u002FttyACM0 \\\n  --teleop.id=my_awesome_leader_arm\n\n# 从臂校准\nlerobot-calibrate \\\n  --robot.type=so101_follower \\\n  --robot.port=\u002Fdev\u002FttyACM1 \\\n  --robot.id=my_awesome_follower_arm\n",[457,41145,41146,41151,41158,41164,41171,41176,41180,41185,41191,41197,41204],{"__ignoreMap":32},[460,41147,41148],{"class":462,"line":463},[460,41149,41150],{"class":942},"# 主臂校准\n",[460,41152,41153,41156],{"class":462,"line":476},[460,41154,41155],{"class":929},"lerobot-calibrate",[460,41157,41091],{"class":900},[460,41159,41160,41162],{"class":462,"line":482},[460,41161,41096],{"class":900},[460,41163,41091],{"class":900},[460,41165,41166,41169],{"class":462,"line":488},[460,41167,41168],{"class":900},"  --teleop.port=\u002Fdev\u002FttyACM0",[460,41170,41091],{"class":900},[460,41172,41173],{"class":462,"line":494},[460,41174,41175],{"class":900},"  --teleop.id=my_awesome_leader_arm\n",[460,41177,41178],{"class":462,"line":500},[460,41179,522],{"emptyLinePlaceholder":521},[460,41181,41182],{"class":462,"line":506},[460,41183,41184],{"class":942},"# 从臂校准\n",[460,41186,41187,41189],{"class":462,"line":512},[460,41188,41155],{"class":929},[460,41190,41091],{"class":900},[460,41192,41193,41195],{"class":462,"line":518},[460,41194,41123],{"class":900},[460,41196,41091],{"class":900},[460,41198,41199,41202],{"class":462,"line":525},[460,41200,41201],{"class":900},"  --robot.port=\u002Fdev\u002FttyACM1",[460,41203,41091],{"class":900},[460,41205,41206],{"class":462,"line":531},[460,41207,41208],{"class":900},"  --robot.id=my_awesome_follower_arm\n",[1944,41210,41211],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":32,"searchDepth":476,"depth":476,"links":41213},[41214,41215],{"id":41063,"depth":476,"text":41064},{"id":41136,"depth":476,"text":41137},{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch3-id",{"title":41054,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch3-电机ID配置与机械臂校准","FWPrvO5PLjTaitrb_QEQTCyLpoBM2eeoOlKlR4HoLMc",{"id":41222,"title":41223,"body":41224,"description":16682,"extension":16683,"meta":41415,"navigation":521,"path":41416,"seo":41417,"stem":41418,"__hash__":41419},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch4-遥操与相机接入.md","4. 遥操与相机接入",{"type":7,"value":41225,"toc":41411},[41226,41229,41233,41280,41284,41297,41360,41363,41408],[10,41227,41223],{"id":41228},"_4-遥操与相机接入",[18,41230,41232],{"id":41231},"_41-不带相机遥操","4.1 不带相机遥操",[451,41234,41236],{"className":40235,"code":41235,"language":40237,"meta":32,"style":32},"lerobot-teleoperate \\\n  --robot.type=so101_follower \\\n  --robot.port=\u002Fdev\u002FttyACM1 \\\n  --robot.id=my_awesome_follower_arm \\\n  --teleop.type=so101_leader \\\n  --teleop.port=\u002Fdev\u002FttyACM0 \\\n  --teleop.id=my_awesome_leader_arm\n",[457,41237,41238,41245,41251,41257,41264,41270,41276],{"__ignoreMap":32},[460,41239,41240,41243],{"class":462,"line":463},[460,41241,41242],{"class":929},"lerobot-teleoperate",[460,41244,41091],{"class":900},[460,41246,41247,41249],{"class":462,"line":476},[460,41248,41123],{"class":900},[460,41250,41091],{"class":900},[460,41252,41253,41255],{"class":462,"line":482},[460,41254,41201],{"class":900},[460,41256,41091],{"class":900},[460,41258,41259,41262],{"class":462,"line":488},[460,41260,41261],{"class":900},"  --robot.id=my_awesome_follower_arm",[460,41263,41091],{"class":900},[460,41265,41266,41268],{"class":462,"line":494},[460,41267,41096],{"class":900},[460,41269,41091],{"class":900},[460,41271,41272,41274],{"class":462,"line":500},[460,41273,41168],{"class":900},[460,41275,41091],{"class":900},[460,41277,41278],{"class":462,"line":506},[460,41279,41175],{"class":900},[18,41281,41283],{"id":41282},"_42-查找相机并启用可视化","4.2 查找相机并启用可视化",[451,41285,41287],{"className":40235,"code":41286,"language":40237,"meta":32,"style":32},"lerobot-find-cameras opencv\n",[457,41288,41289],{"__ignoreMap":32},[460,41290,41291,41294],{"class":462,"line":463},[460,41292,41293],{"class":929},"lerobot-find-cameras",[460,41295,41296],{"class":1353}," opencv\n",[451,41298,41300],{"className":40235,"code":41299,"language":40237,"meta":32,"style":32},"lerobot-teleoperate \\\n  --robot.type=so101_follower \\\n  --robot.port=\u002Fdev\u002FttyACM1 \\\n  --robot.id=my_awesome_follower_arm \\\n  --robot.cameras=\"{ front: {type: opencv, index_or_path: \u002Fdev\u002Fvideo4, width: 640, height: 480, fps: 30}}\" \\\n  --teleop.type=so101_leader \\\n  --teleop.port=\u002Fdev\u002FttyACM0 \\\n  --teleop.id=my_awesome_leader_arm \\\n  --display_data=true\n",[457,41301,41302,41308,41314,41320,41326,41336,41342,41348,41355],{"__ignoreMap":32},[460,41303,41304,41306],{"class":462,"line":463},[460,41305,41242],{"class":929},[460,41307,41091],{"class":900},[460,41309,41310,41312],{"class":462,"line":476},[460,41311,41123],{"class":900},[460,41313,41091],{"class":900},[460,41315,41316,41318],{"class":462,"line":482},[460,41317,41201],{"class":900},[460,41319,41091],{"class":900},[460,41321,41322,41324],{"class":462,"line":488},[460,41323,41261],{"class":900},[460,41325,41091],{"class":900},[460,41327,41328,41331,41334],{"class":462,"line":494},[460,41329,41330],{"class":900},"  --robot.cameras=",[460,41332,41333],{"class":1353},"\"{ front: {type: opencv, index_or_path: \u002Fdev\u002Fvideo4, width: 640, height: 480, fps: 30}}\"",[460,41335,41091],{"class":900},[460,41337,41338,41340],{"class":462,"line":500},[460,41339,41096],{"class":900},[460,41341,41091],{"class":900},[460,41343,41344,41346],{"class":462,"line":506},[460,41345,41168],{"class":900},[460,41347,41091],{"class":900},[460,41349,41350,41353],{"class":462,"line":512},[460,41351,41352],{"class":900},"  --teleop.id=my_awesome_leader_arm",[460,41354,41091],{"class":900},[460,41356,41357],{"class":462,"line":518},[460,41358,41359],{"class":900},"  --display_data=true\n",[14,41361,41362],{},"相机参数说明：",[40,41364,41365,41371,41377,41386,41396,41402],{},[43,41366,41367,41370],{},[457,41368,41369],{},"front","：相机名称。",[43,41372,41373,41376],{},[457,41374,41375],{},"type: opencv","：相机驱动类型。",[43,41378,41379,41382,41383,40975],{},[457,41380,41381],{},"index_or_path","：设备编号或设备路径（如 ",[457,41384,41385],{},"\u002Fdev\u002Fvideo4",[43,41387,41388,41391,41392,41395],{},[457,41389,41390],{},"width"," \u002F ",[457,41393,41394],{},"height","：图像分辨率。",[43,41397,41398,41401],{},[457,41399,41400],{},"fps","：采样帧率。",[43,41403,41404,41407],{},[457,41405,41406],{},"--display_data=true","：启用实时可视化。",[1944,41409,41410],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":41412},[41413,41414],{"id":41231,"depth":476,"text":41232},{"id":41282,"depth":476,"text":41283},{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch4",{"title":41223,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch4-遥操与相机接入","V7Ps_cVCNPrXljkxAGw33NUyz0IWtr3kXqwGCWdWgQY",{"id":41421,"title":41422,"body":41423,"description":16682,"extension":16683,"meta":41594,"navigation":521,"path":41595,"seo":41596,"stem":41597,"__hash__":41598},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch5-HuggingFace认证与仓库准备.md","5. HuggingFace认证与仓库准备",{"type":7,"value":41424,"toc":41589},[41425,41429,41433,41438,41443,41446,41488,41494,41498,41546,41551,41555,41558,41566,41571,41576,41581,41586],[10,41426,41428],{"id":41427},"_5-hugging-face-认证与仓库准备","5. Hugging Face 认证与仓库准备",[18,41430,41432],{"id":41431},"_51-生成访问令牌","5.1 生成访问令牌",[14,41434,41435],{},[30,41436],{"alt":32,"src":41437},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-002.png",[14,41439,41440],{},[30,41441],{"alt":32,"src":41442},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-003.png",[14,41444,41445],{},"建议使用环境变量保存 token，不要把真实 token 写进脚本和仓库。",[451,41447,41449],{"className":40235,"code":41448,"language":40237,"meta":32,"style":32},"export HF_TOKEN=\"your_huggingface_token\"\nhf auth login --token \"$HF_TOKEN\" --add-to-git-credential\n",[457,41450,41451,41464],{"__ignoreMap":32},[460,41452,41453,41456,41459,41461],{"class":462,"line":463},[460,41454,41455],{"class":887},"export",[460,41457,41458],{"class":466}," HF_TOKEN",[460,41460,894],{"class":887},[460,41462,41463],{"class":1353},"\"your_huggingface_token\"\n",[460,41465,41466,41469,41472,41475,41478,41480,41483,41485],{"class":462,"line":476},[460,41467,41468],{"class":929},"hf",[460,41470,41471],{"class":1353}," auth",[460,41473,41474],{"class":1353}," login",[460,41476,41477],{"class":900}," --token",[460,41479,26207],{"class":1353},[460,41481,41482],{"class":466},"$HF_TOKEN",[460,41484,16993],{"class":1353},[460,41486,41487],{"class":900}," --add-to-git-credential\n",[14,41489,41490,41493],{},[457,41491,41492],{},"--add-to-git-credential"," 会把 token 写入 git 凭据系统，后续推拉 Hugging Face 仓库可免重复登录。",[18,41495,41497],{"id":41496},"_52-验证登录","5.2 验证登录",[451,41499,41501],{"className":40235,"code":41500,"language":40237,"meta":32,"style":32},"HF_USER=$(hf auth whoami | head -n 1)\necho \"$HF_USER\"\n",[457,41502,41503,41533],{"__ignoreMap":32},[460,41504,41505,41508,41510,41513,41515,41517,41520,41523,41526,41529,41531],{"class":462,"line":463},[460,41506,41507],{"class":466},"HF_USER",[460,41509,894],{"class":887},[460,41511,41512],{"class":466},"$(",[460,41514,41468],{"class":929},[460,41516,41471],{"class":1353},[460,41518,41519],{"class":1353}," whoami",[460,41521,41522],{"class":887}," |",[460,41524,41525],{"class":929}," head",[460,41527,41528],{"class":900}," -n",[460,41530,1400],{"class":900},[460,41532,3754],{"class":466},[460,41534,41535,41538,41540,41543],{"class":462,"line":476},[460,41536,41537],{"class":900},"echo",[460,41539,26207],{"class":1353},[460,41541,41542],{"class":466},"$HF_USER",[460,41544,41545],{"class":1353},"\"\n",[14,41547,41548],{},[30,41549],{"alt":32,"src":41550},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-004.png",[18,41552,41554],{"id":41553},"_53-创建数据集仓库与模型仓库","5.3 创建数据集仓库与模型仓库",[14,41556,41557],{},"训练和回放都依赖远程仓库，需提前在 Hugging Face Hub 创建：",[40,41559,41560,41563],{},[43,41561,41562],{},"Dataset Repo（用于上传演示数据）",[43,41564,41565],{},"Model Repo（用于上传训练后的 ACT 权重）",[14,41567,41568],{},[30,41569],{"alt":32,"src":41570},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-006.png",[14,41572,41573],{},[30,41574],{"alt":32,"src":41575},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-007.png",[14,41577,41578],{},[30,41579],{"alt":32,"src":41580},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-008.png",[14,41582,41583],{},[30,41584],{"alt":32,"src":41585},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-009.png",[1944,41587,41588],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":32,"searchDepth":476,"depth":476,"links":41590},[41591,41592,41593],{"id":41431,"depth":476,"text":41432},{"id":41496,"depth":476,"text":41497},{"id":41553,"depth":476,"text":41554},{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch5-huggingface",{"title":41422,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch5-HuggingFace认证与仓库准备","WTvwmhXny3fI_3GR6axPCny7WggFD_5lp-pvwwDej6Y",{"id":41600,"title":41601,"body":41602,"description":16682,"extension":16683,"meta":41799,"navigation":521,"path":41800,"seo":41801,"stem":41802,"__hash__":41803},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch6-数据录制重录与回放.md","6. 数据录制重录与回放",{"type":7,"value":41603,"toc":41794},[41604,41608,41612,41708,41716,41721,41725,41741,41744,41748,41791],[10,41605,41607],{"id":41606},"_6-数据录制重录与回放","6. 数据录制、重录与回放",[18,41609,41611],{"id":41610},"_61-录制示教数据","6.1 录制示教数据",[451,41613,41615],{"className":40235,"code":41614,"language":40237,"meta":32,"style":32},"lerobot-record \\\n  --robot.type=so101_follower \\\n  --robot.port=\u002Fdev\u002FttyACM1 \\\n  --robot.id=my_awesome_follower_arm \\\n  --robot.cameras=\"{ front: {type: opencv, index_or_path: 4, width: 640, height: 480, fps: 30}}\" \\\n  --teleop.type=so101_leader \\\n  --teleop.port=\u002Fdev\u002FttyACM0 \\\n  --teleop.id=my_awesome_leader_arm \\\n  --display_data=true \\\n  --dataset.repo_id=\"Embodied-AI-6\u002Fso101_test\" \\\n  --dataset.num_episodes=10 \\\n  --dataset.single_task=\"Grab the green cube\" \\\n  --resume=true\n",[457,41616,41617,41624,41630,41636,41642,41651,41657,41663,41669,41676,41686,41693,41703],{"__ignoreMap":32},[460,41618,41619,41622],{"class":462,"line":463},[460,41620,41621],{"class":929},"lerobot-record",[460,41623,41091],{"class":900},[460,41625,41626,41628],{"class":462,"line":476},[460,41627,41123],{"class":900},[460,41629,41091],{"class":900},[460,41631,41632,41634],{"class":462,"line":482},[460,41633,41201],{"class":900},[460,41635,41091],{"class":900},[460,41637,41638,41640],{"class":462,"line":488},[460,41639,41261],{"class":900},[460,41641,41091],{"class":900},[460,41643,41644,41646,41649],{"class":462,"line":494},[460,41645,41330],{"class":900},[460,41647,41648],{"class":1353},"\"{ front: {type: opencv, index_or_path: 4, width: 640, height: 480, fps: 30}}\"",[460,41650,41091],{"class":900},[460,41652,41653,41655],{"class":462,"line":500},[460,41654,41096],{"class":900},[460,41656,41091],{"class":900},[460,41658,41659,41661],{"class":462,"line":506},[460,41660,41168],{"class":900},[460,41662,41091],{"class":900},[460,41664,41665,41667],{"class":462,"line":512},[460,41666,41352],{"class":900},[460,41668,41091],{"class":900},[460,41670,41671,41674],{"class":462,"line":518},[460,41672,41673],{"class":900},"  --display_data=true",[460,41675,41091],{"class":900},[460,41677,41678,41681,41684],{"class":462,"line":525},[460,41679,41680],{"class":900},"  --dataset.repo_id=",[460,41682,41683],{"class":1353},"\"Embodied-AI-6\u002Fso101_test\"",[460,41685,41091],{"class":900},[460,41687,41688,41691],{"class":462,"line":531},[460,41689,41690],{"class":900},"  --dataset.num_episodes=10",[460,41692,41091],{"class":900},[460,41694,41695,41698,41701],{"class":462,"line":537},[460,41696,41697],{"class":900},"  --dataset.single_task=",[460,41699,41700],{"class":1353},"\"Grab the green cube\"",[460,41702,41091],{"class":900},[460,41704,41705],{"class":462,"line":543},[460,41706,41707],{"class":900},"  --resume=true\n",[40,41709,41710],{},[43,41711,41712,41715],{},[457,41713,41714],{},"--resume=true","：已有同一数据集时继续追加 episode。",[14,41717,41718],{},[30,41719],{"alt":32,"src":41720},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-005.png",[18,41722,41724],{"id":41723},"_62-重录前清理本地缓存","6.2 重录前清理本地缓存",[451,41726,41728],{"className":40235,"code":41727,"language":40237,"meta":32,"style":32},"rm -rf \u002Fhome\u002Fcherish\u002F.cache\u002Fhuggingface\u002Flerobot\u002FEmbodied-AI-6\u002Fso101_test\n",[457,41729,41730],{"__ignoreMap":32},[460,41731,41732,41735,41738],{"class":462,"line":463},[460,41733,41734],{"class":929},"rm",[460,41736,41737],{"class":900}," -rf",[460,41739,41740],{"class":1353}," \u002Fhome\u002Fcherish\u002F.cache\u002Fhuggingface\u002Flerobot\u002FEmbodied-AI-6\u002Fso101_test\n",[14,41742,41743],{},"注意：务必替换为自己的缓存路径，避免误删系统文件。",[18,41745,41747],{"id":41746},"_63-回放指定-episode","6.3 回放指定 episode",[451,41749,41751],{"className":40235,"code":41750,"language":40237,"meta":32,"style":32},"lerobot-replay \\\n  --robot.type=so101_follower \\\n  --robot.port=\u002Fdev\u002FttyACM1 \\\n  --robot.id=my_awesome_follower_arm \\\n  --dataset.repo_id=\"Embodied-AI-6\u002Fso101_test\" \\\n  --dataset.episode=0\n",[457,41752,41753,41760,41766,41772,41778,41786],{"__ignoreMap":32},[460,41754,41755,41758],{"class":462,"line":463},[460,41756,41757],{"class":929},"lerobot-replay",[460,41759,41091],{"class":900},[460,41761,41762,41764],{"class":462,"line":476},[460,41763,41123],{"class":900},[460,41765,41091],{"class":900},[460,41767,41768,41770],{"class":462,"line":482},[460,41769,41201],{"class":900},[460,41771,41091],{"class":900},[460,41773,41774,41776],{"class":462,"line":488},[460,41775,41261],{"class":900},[460,41777,41091],{"class":900},[460,41779,41780,41782,41784],{"class":462,"line":494},[460,41781,41680],{"class":900},[460,41783,41683],{"class":1353},[460,41785,41091],{"class":900},[460,41787,41788],{"class":462,"line":500},[460,41789,41790],{"class":900},"  --dataset.episode=0\n",[1944,41792,41793],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":32,"searchDepth":476,"depth":476,"links":41795},[41796,41797,41798],{"id":41610,"depth":476,"text":41611},{"id":41723,"depth":476,"text":41724},{"id":41746,"depth":476,"text":41747},{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch6",{"title":41601,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch6-数据录制重录与回放","8nexk4omzICmhfOlIf4GxgMqb-maIwGqHLr4YUnYKQ4",{"id":41805,"title":41806,"body":41807,"description":16682,"extension":16683,"meta":41935,"navigation":521,"path":41936,"seo":41937,"stem":41938,"__hash__":41939},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch7-ACT模型训练.md","7. ACT模型训练",{"type":7,"value":41808,"toc":41933},[41809,41813,41876,41879,41926,41931],[10,41810,41812],{"id":41811},"_7-act-模型训练","7. ACT 模型训练",[451,41814,41816],{"className":40235,"code":41815,"language":40237,"meta":32,"style":32},"lerobot-train \\\n  --dataset.repo_id=\"Embodied-AI-6\u002Fso101_test\" \\\n  --policy.type=act \\\n  --output_dir=outputs\u002Ftrain\u002Fact_so101_test \\\n  --job_name=act_so101_test \\\n  --policy.device=cuda \\\n  --wandb.enable=false \\\n  --policy.repo_id=\"Embodied-AI-6\u002Flerobot_new\"\n",[457,41817,41818,41825,41833,41840,41847,41854,41861,41868],{"__ignoreMap":32},[460,41819,41820,41823],{"class":462,"line":463},[460,41821,41822],{"class":929},"lerobot-train",[460,41824,41091],{"class":900},[460,41826,41827,41829,41831],{"class":462,"line":476},[460,41828,41680],{"class":900},[460,41830,41683],{"class":1353},[460,41832,41091],{"class":900},[460,41834,41835,41838],{"class":462,"line":482},[460,41836,41837],{"class":900},"  --policy.type=act",[460,41839,41091],{"class":900},[460,41841,41842,41845],{"class":462,"line":488},[460,41843,41844],{"class":900},"  --output_dir=outputs\u002Ftrain\u002Fact_so101_test",[460,41846,41091],{"class":900},[460,41848,41849,41852],{"class":462,"line":494},[460,41850,41851],{"class":900},"  --job_name=act_so101_test",[460,41853,41091],{"class":900},[460,41855,41856,41859],{"class":462,"line":500},[460,41857,41858],{"class":900},"  --policy.device=cuda",[460,41860,41091],{"class":900},[460,41862,41863,41866],{"class":462,"line":506},[460,41864,41865],{"class":900},"  --wandb.enable=false",[460,41867,41091],{"class":900},[460,41869,41870,41873],{"class":462,"line":512},[460,41871,41872],{"class":900},"  --policy.repo_id=",[460,41874,41875],{"class":1353},"\"Embodied-AI-6\u002Flerobot_new\"\n",[14,41877,41878],{},"参数说明：",[40,41880,41881,41887,41893,41899,41905,41914,41920],{},[43,41882,41883,41886],{},[457,41884,41885],{},"--dataset.repo_id","：训练数据集仓库。",[43,41888,41889,41892],{},[457,41890,41891],{},"--policy.type=act","：策略模型类型为 ACT。",[43,41894,41895,41898],{},[457,41896,41897],{},"--output_dir","：本地训练输出目录。",[43,41900,41901,41904],{},[457,41902,41903],{},"--job_name","：训练任务名称。",[43,41906,41907,41910,41911,40975],{},[457,41908,41909],{},"--policy.device","：训练设备（如 ",[457,41912,41913],{},"cuda",[43,41915,41916,41919],{},[457,41917,41918],{},"--wandb.enable","：是否启用 WandB 可视化。",[43,41921,41922,41925],{},[457,41923,41924],{},"--policy.repo_id","：训练后模型推送目标仓库。",[14,41927,41928],{},[30,41929],{"alt":32,"src":41930},"..\u002F\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-12-01-lerobot101-act%E7%AE%97%E6%B3%95%E5%A4%8D%E7%8E%B0-010.png",[1944,41932,41793],{},{"title":32,"searchDepth":476,"depth":476,"links":41934},[],{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch7-act",{"title":41806,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch7-ACT模型训练","Qt8rQhlcgcPzm395Ved_SsG10oi0KN9HpAkfBVuC-CM",{"id":41941,"title":41942,"body":41943,"description":16682,"extension":16683,"meta":42030,"navigation":521,"path":42031,"seo":42032,"stem":42033,"__hash__":42034},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch8-策略部署与自动采集.md","8. 策略部署与自动采集",{"type":7,"value":41944,"toc":42028},[41945,41948,41951,42018,42026],[10,41946,41942],{"id":41947},"_8-策略部署与自动采集",[14,41949,41950],{},"使用已训练好的 ACT 模型驱动从臂执行，并继续录制新数据：",[451,41952,41954],{"className":40235,"code":41953,"language":40237,"meta":32,"style":32},"lerobot-record \\\n  --robot.type=so101_follower \\\n  --robot.port=\u002Fdev\u002FttyACM1 \\\n  --robot.cameras=\"{ front: {type: opencv, index_or_path: 4, width: 640, height: 480, fps: 30}}\" \\\n  --robot.id=my_awesome_follower_arm \\\n  --display_data=false \\\n  --dataset.repo_id=\"Embodied-AI-6\u002Fso101_test\" \\\n  --dataset.single_task=\"Grab the green cube\" \\\n  --policy.path=\"Embodied-AI-6\u002Flerobot_new\"\n",[457,41955,41956,41962,41968,41974,41982,41988,41995,42003,42011],{"__ignoreMap":32},[460,41957,41958,41960],{"class":462,"line":463},[460,41959,41621],{"class":929},[460,41961,41091],{"class":900},[460,41963,41964,41966],{"class":462,"line":476},[460,41965,41123],{"class":900},[460,41967,41091],{"class":900},[460,41969,41970,41972],{"class":462,"line":482},[460,41971,41201],{"class":900},[460,41973,41091],{"class":900},[460,41975,41976,41978,41980],{"class":462,"line":488},[460,41977,41330],{"class":900},[460,41979,41648],{"class":1353},[460,41981,41091],{"class":900},[460,41983,41984,41986],{"class":462,"line":494},[460,41985,41261],{"class":900},[460,41987,41091],{"class":900},[460,41989,41990,41993],{"class":462,"line":500},[460,41991,41992],{"class":900},"  --display_data=false",[460,41994,41091],{"class":900},[460,41996,41997,41999,42001],{"class":462,"line":506},[460,41998,41680],{"class":900},[460,42000,41683],{"class":1353},[460,42002,41091],{"class":900},[460,42004,42005,42007,42009],{"class":462,"line":512},[460,42006,41697],{"class":900},[460,42008,41700],{"class":1353},[460,42010,41091],{"class":900},[460,42012,42013,42016],{"class":462,"line":518},[460,42014,42015],{"class":900},"  --policy.path=",[460,42017,41875],{"class":1353},[40,42019,42020],{},[43,42021,42022,42025],{},[457,42023,42024],{},"--policy.path","：已训练策略的本地路径或远程仓库路径。",[1944,42027,41793],{},{"title":32,"searchDepth":476,"depth":476,"links":42029},[],{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch8",{"title":41942,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch8-策略部署与自动采集","i9uzLIpUhl0JgoMvjV4YJ3r41m04fqol_qiMKUFJZA0",{"id":42036,"title":42037,"body":42038,"description":16682,"extension":16683,"meta":42067,"navigation":521,"path":42068,"seo":42069,"stem":42070,"__hash__":42071},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch9-IsaacLab仿真拓展.md","9. IsaacLab仿真拓展",{"type":7,"value":42039,"toc":42065},[42040,42044,42047,42053,42056,42062],[10,42041,42043],{"id":42042},"_9-isaaclab-仿真拓展","9. IsaacLab 仿真拓展",[14,42045,42046],{},"项目地址：",[14,42048,42049],{},[2756,42050,42051],{"href":42051,"rel":42052},"https:\u002F\u002Fgithub.com\u002FLightwheelAI\u002Fleisaac",[4943],[14,42054,42055],{},"参考教程：",[14,42057,42058],{},[2756,42059,42060],{"href":42060,"rel":42061},"https:\u002F\u002Fcloud.tencent.com\u002Fdeveloper\u002Farticle\u002F2578981",[4943],[14,42063,42064],{},"示例任务：仿真机械臂在厨房抓橘子。",{"title":32,"searchDepth":476,"depth":476,"links":42066},[],{},"\u002Fwiki\u002F2025-12-01-lerobot101-act\u002Fch9-isaaclab",{"title":42037,"description":16682},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Fch9-IsaacLab仿真拓展","yFxqMAnCXTDYdIYJyAM2pC4uxbPPomVMI3Y_my_JAQY",{"id":42073,"title":42074,"body":42075,"description":42079,"extension":16683,"meta":42080,"navigation":521,"path":42081,"seo":42082,"stem":42083,"__hash__":42084},"wiki\u002Fwiki\u002F2025-12-01-lerobot101-act算法复现\u002Findex.md","lerobot-act算法复现",{"type":7,"value":42076,"toc":42077},[],{"title":32,"searchDepth":476,"depth":476,"links":42078},[],"act复现",{"category":39791},"\u002Fwiki\u002F2025-12-01-lerobot101-act",{"title":42074,"description":42079},"wiki\u002F2025-12-01-lerobot101-act算法复现\u002Findex","O0oFPbXs3nGtmkVmLGeGnWlJcQIVE-dAD_mqYPwnk3w",{"id":42086,"title":42087,"body":42088,"description":32,"extension":16683,"meta":42390,"navigation":521,"path":42391,"seo":42392,"stem":42393,"__hash__":42394},"wiki\u002Fwiki\u002F2025-11-10-Docker\u002Fch1-简介.md","1.简介",{"type":7,"value":42089,"toc":42382},[42090,42093,42097,42107,42114,42121,42124,42131,42134,42137,42141,42153,42157,42203,42206,42209,42212,42215,42218,42222,42260,42266,42270,42324,42329,42332,42335,42340,42343,42348,42351,42354,42358,42361,42364,42368],[10,42091,42087],{"id":42092},"_1简介",[23,42094,42096],{"id":42095},"_11什么是-docker","1.1什么是 Docker？",[14,42098,42099,42100,42103,42104],{},"Docker 是一个开源的 ",[3944,42101,42102],{},"应用容器引擎"," ，可以让开发者将应用和其所有依赖打包成一个“容器”， ",[3944,42105,42106],{},"一次构建，到处运行。",[14,42108,42109,42110,42113],{},"“ ",[3944,42111,42112],{},"一次构建，到处运行"," ”也就是说：",[103,42115,42116],{},[43,42117,42118],{},[3944,42119,42120],{},"之前：",[14,42122,42123],{},"之前想跑ROS2+OpenCV+CUDA+CuDNN，我需要在一台电脑上一个一个环境的安装配置，如果我还要在另一台电脑上跑这个，也需要把第二台电脑也这样配置一遍。如果我的系统环境崩了，需要重装系统了，重装完后又双叒叕要再来一遍配置过程，很麻烦。",[103,42125,42126],{},[43,42127,42128],{},[3944,42129,42130],{},"使用docker后：",[14,42132,42133],{},"（docker镜像和docker容器的概念在下下下面，下面这段话里看到镜像和容器的概念先接受就行。）",[14,42135,42136],{},"我只需要在电脑上用docker配置一遍这个ROS2+OpenCV+CUDA+CuDNN环境，然后用docker生成一个镜像，把这个镜像打包好。以后在任何一台电脑上，我都可以直接用这个镜像生成一个容器，而这个容器内就包含了我所需要的ROS2+OpenCV+CUDA+CuDNN环境，如果我的容器环境崩了，我只需要把坏掉的容器删掉，重新由镜像再生成一个新的容器即可。只需要配置一次，以后都可以一键安装这个环境。",[23,42138,42140],{"id":42139},"_12它是怎么工作的","1.2.它是怎么工作的？",[40,42142,42143,42146],{},[43,42144,42145],{},"传统方式：软件运行需要在不同系统上安装各种库、配置环境，很麻烦。",[43,42147,42148,42149,42152],{},"Docker方式：打包成“容器”，环境和应用一起封装， ",[3944,42150,42151],{},"无论在哪运行都一样稳定"," 。",[23,42154,42156],{"id":42155},"_13docker-的几个基本概念","1.3.Docker 的几个基本概念",[16884,42158,42159,42169],{},[16887,42160,42161],{},[16890,42162,42163,42166],{},[16893,42164,42165],{"align":40149},"概念",[16893,42167,42168],{"align":40149},"解释",[16930,42170,42171,42179,42187,42195],{},[16890,42172,42173,42176],{},[16935,42174,42175],{"align":40149},"镜像",[16935,42177,42178],{"align":40149},"Image，运行容器的模板，像是一个应用快照",[16890,42180,42181,42184],{},[16935,42182,42183],{"align":40149},"容器",[16935,42185,42186],{"align":40149},"Container，运行中的镜像实例，有自己的文件系统、网络等",[16890,42188,42189,42192],{},[16935,42190,42191],{"align":40149},"Dockerfile",[16935,42193,42194],{"align":40149},"构建镜像的脚本，写明安装哪些包、设置哪些环境变量等",[16890,42196,42197,42200],{},[16935,42198,42199],{"align":40149},"仓库",[16935,42201,42202],{"align":40149},"Registry，存放镜像的地方，比如 Docker Hub",[14,42204,42205],{},"抽象化理解:",[14,42207,42208],{},"Docker镜像≈C++类",[14,42210,42211],{},"Docker容器≈C++类实例(即对象)",[14,42213,42214],{},"形象化理解: 镜像可以类似于给电脑装系统的iso镜像文件。 容器可以类似于已经被装到电脑上的可以运行的系统。",[14,42216,42217],{},"把镜像变为容器时，需要用docker run命令添加很多参数，这个可以理解你这个电脑到底有啥硬件配置。",[23,42219,42221],{"id":42220},"_14类比理解","1.4.类比理解",[16884,42223,42224,42234],{},[16887,42225,42226],{},[16890,42227,42228,42231],{},[16893,42229,42230],{"align":40149},"传统部署",[16893,42232,42233],{"align":40149},"Docker部署",[16930,42235,42236,42244,42252],{},[16890,42237,42238,42241],{},[16935,42239,42240],{"align":40149},"手动安装依赖、调试版本不一致问题",[16935,42242,42243],{"align":40149},"一次打包环境和代码",[16890,42245,42246,42249],{},[16935,42247,42248],{"align":40149},"程序“裸奔”跑在系统上",[16935,42250,42251],{"align":40149},"程序“穿着容器”隔离运行",[16890,42253,42254,42257],{},[16935,42255,42256],{"align":40149},"容易“在我电脑上能跑”",[16935,42258,42259],{"align":40149},"保证“无论在哪都能跑”",[14,42261,42262,42263],{},"就像快递包裹： ",[3944,42264,42265],{},"你不再关心内容怎么运送，因为包装已经帮你做好了一切隔离。",[23,42267,42269],{"id":42268},"_15docker-的核心优势","1.5.Docker 的核心优势",[16884,42271,42272,42282],{},[16887,42273,42274],{},[16890,42275,42276,42279],{},[16893,42277,42278],{"align":40149},"优势",[16893,42280,42281],{"align":40149},"说明",[16930,42283,42284,42292,42300,42308,42316],{},[16890,42285,42286,42289],{},[16935,42287,42288],{"align":40149},"轻量级",[16935,42290,42291],{"align":40149},"基于系统内核共享，启动速度快，占资源少",[16890,42293,42294,42297],{},[16935,42295,42296],{"align":40149},"跨平台",[16935,42298,42299],{"align":40149},"一次构建，到处运行（Windows、Linux、macOS 上都一致）",[16890,42301,42302,42305],{},[16935,42303,42304],{"align":40149},"易于迁移部署",[16935,42306,42307],{"align":40149},"应用和环境一起封装，不怕依赖不一致",[16890,42309,42310,42313],{},[16935,42311,42312],{"align":40149},"易于版本控制",[16935,42314,42315],{"align":40149},"镜像版本可控，支持回滚",[16890,42317,42318,42321],{},[16935,42319,42320],{"align":40149},"生态丰富",[16935,42322,42323],{"align":40149},"Docker Hub 上有成千上万的现成镜像可用",[103,42325,42326],{},[43,42327,42328],{},"在Linux上可以几乎实现无性能损失。",[14,42330,42331],{},"docker里的发行版和本机共用Linux内核。",[14,42333,42334],{},"CPU损耗不到1%。 内存接近原生没损耗。 硬盘损耗不到2%。 网络性能接近原生没有损耗。 显卡损耗小于1%。",[103,42336,42337],{},[43,42338,42339],{},"可以快速部署在绝大多数Linux发行版",[14,42341,42342],{},"你想跑ROS2，之前是仅在Ubuntu上是比较好部署的，但是现在你可以使用任意发行版，比如Fedora，ArchLinux等发行版上也能通过docker跑ROS2。",[103,42344,42345],{},[43,42346,42347],{},"配置环境简单",[14,42349,42350],{},"之前你需要在Ubuntu上按照教程安装ROS2，CUDA，CuDNN，OpenCV4等等，但是只要你用了Docker，可以直接用docker pull命令拉取别人配置好的开发环境，只需要一条命令直通罗马。",[14,42352,42353],{},"你仅仅只需要把一个发行版最基础的东西配置好，比如那些仓库换源，输入法，显卡驱动（只用让显卡工作起来，不用在本机配置CUDA和CuDNN）等。",[103,42355,42356],{},[43,42357,42320],{},[14,42359,42360],{},"生态极其丰富，有很多东西即便自己不构建，也能在dockerhub上找到别人构建好的镜像，自己连编译都省去了。",[14,42362,42363],{},"比如之前配置cuda和cudnn的话，需要在本机先安装英伟达驱动，再安装CUDA和CuDNN。而现在，我们只需要本机安装英伟达驱动，英伟达官方在DockerHub上提供了CUDA和CUDNN的镜像，他们已经编译好了，我们可以直接拿来用。",[23,42365,42367],{"id":42366},"_16常见-docker-应用场景","1.6.常见 Docker 应用场景",[40,42369,42370,42373,42376,42379],{},[43,42371,42372],{},"本地开发：快速搭建各种开发环境（如 Python + Jupyter、ROS + Gazebo）",[43,42374,42375],{},"测试部署：CI\u002FCD 中自动测试、构建、部署",[43,42377,42378],{},"微服务架构：每个服务一个容器，灵活组合",[43,42380,42381],{},"科研工具封装：复现别人论文环境，或封装自己的项目发给他人使用",{"title":32,"searchDepth":476,"depth":476,"links":42383},[42384,42385,42386,42387,42388,42389],{"id":42095,"depth":482,"text":42096},{"id":42139,"depth":482,"text":42140},{"id":42155,"depth":482,"text":42156},{"id":42220,"depth":482,"text":42221},{"id":42268,"depth":482,"text":42269},{"id":42366,"depth":482,"text":42367},{},"\u002Fwiki\u002F2025-11-10-docker\u002Fch1",{"title":42087,"description":32},"wiki\u002F2025-11-10-Docker\u002Fch1-简介","RWfN-VzqXrPFzaf024ZOqhkFsjhm2OaDsrg8ij3bqRg",{"id":42396,"title":42397,"body":42398,"description":32,"extension":16683,"meta":43130,"navigation":521,"path":43131,"seo":43132,"stem":43133,"__hash__":43134},"wiki\u002Fwiki\u002F2025-11-10-Docker\u002Fch2-安装Docker.md","2.安装Docker",{"type":7,"value":42399,"toc":43125},[42400,42403,42407,42410,42413,42419,42425,42429,42438,42441,42497,42500,42551,42554,42637,42640,42677,42681,42692,42705,42712,42715,42795,42798,42848,42851,42874,42878,42885,42888,42904,42910,42913,42929,42935,42938,42954,42968,42974,42994,43000,43003,43015,43021,43024,43038,43044,43047,43067,43072,43075,43078,43082,43085,43088,43091,43098,43101,43104,43107,43112,43117,43122],[10,42401,42397],{"id":42402},"_2安装docker",[23,42404,42406],{"id":42405},"_21linux安装docker-engine推荐","2.1.Linux安装Docker Engine(推荐)",[14,42408,42409],{},"Linux只需要安装Docker Engine就可以，不要安装docker desktop，那玩意是专门给Mac和Windows用的。",[14,42411,42412],{},"Linux跑docker性能损失很低，而Windows和MacOS跑docker损失相对于大一些。",[14,42414,42415],{},[2756,42416,42417],{"href":42417,"rel":42418},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002F",[4943],[14,42420,42421],{},[2756,42422,42423],{"href":42423,"rel":42424},"https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fhelp\u002Fdocker-ce\u002F",[4943],[115,42426,42428],{"id":42427},"_211ubuntuapt","2.1.1.Ubuntu（APT）",[14,42430,42431,42432,42437],{},"以下内容根据 ",[2756,42433,42436],{"href":42434,"rel":42435},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002Fubuntu\u002F",[4943],"官方文档"," 修改而来。",[14,42439,42440],{},"如果你过去安装过 docker，先删掉：",[451,42442,42444],{"className":40235,"code":42443,"language":40237,"meta":32,"style":32},"for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done\n",[457,42445,42446],{"__ignoreMap":32},[460,42447,42448,42450,42453,42455,42458,42461,42464,42467,42470,42473,42476,42479,42482,42485,42488,42491,42494],{"class":462,"line":463},[460,42449,19547],{"class":887},[460,42451,42452],{"class":466}," pkg ",[460,42454,11713],{"class":887},[460,42456,42457],{"class":1353}," docker.io",[460,42459,42460],{"class":1353}," docker-doc",[460,42462,42463],{"class":1353}," docker-compose",[460,42465,42466],{"class":1353}," docker-compose-v2",[460,42468,42469],{"class":1353}," podman-docker",[460,42471,42472],{"class":1353}," containerd",[460,42474,42475],{"class":1353}," runc",[460,42477,42478],{"class":466},"; ",[460,42480,42481],{"class":887},"do",[460,42483,42484],{"class":929}," sudo",[460,42486,42487],{"class":1353}," apt-get",[460,42489,42490],{"class":1353}," remove",[460,42492,42493],{"class":466}," $pkg; ",[460,42495,42496],{"class":887},"done\n",[14,42498,42499],{},"首先安装依赖和GPG：",[451,42501,42505],{"className":42502,"code":42503,"language":42504,"meta":32,"style":32},"language-markdown shiki shiki-themes github-light github-dark","# Add Docker's official GPG key:\nsudo apt-get update\nsudo apt-get install ca-certificates curl\nsudo install -m 0755 -d \u002Fetc\u002Fapt\u002Fkeyrings\nsudo curl -fsSL https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu\u002Fgpg | sudo gpg --dearmor -o \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.gpg\nsudo chmod a+r \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.asc\n\n# 如果上面这行报错就弄下面这行\nsudo chmod a+r \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.gpg\n","markdown",[457,42506,42507,42512,42517,42522,42527,42532,42537,42541,42546],{"__ignoreMap":32},[460,42508,42509],{"class":462,"line":463},[460,42510,42511],{},"# Add Docker's official GPG key:\n",[460,42513,42514],{"class":462,"line":476},[460,42515,42516],{},"sudo apt-get update\n",[460,42518,42519],{"class":462,"line":482},[460,42520,42521],{},"sudo apt-get install ca-certificates curl\n",[460,42523,42524],{"class":462,"line":488},[460,42525,42526],{},"sudo install -m 0755 -d \u002Fetc\u002Fapt\u002Fkeyrings\n",[460,42528,42529],{"class":462,"line":494},[460,42530,42531],{},"sudo curl -fsSL https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu\u002Fgpg | sudo gpg --dearmor -o \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.gpg\n",[460,42533,42534],{"class":462,"line":500},[460,42535,42536],{},"sudo chmod a+r \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.asc\n",[460,42538,42539],{"class":462,"line":506},[460,42540,522],{"emptyLinePlaceholder":521},[460,42542,42543],{"class":462,"line":512},[460,42544,42545],{},"# 如果上面这行报错就弄下面这行\n",[460,42547,42548],{"class":462,"line":518},[460,42549,42550],{},"sudo chmod a+r \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.gpg\n",[14,42552,42553],{},"信任 Docker 的 GPG 公钥并添加仓库：",[451,42555,42557],{"className":40235,"code":42556,"language":40237,"meta":32,"style":32},"# Add the repository to Apt sources:\necho \\\n  \"deb [arch=$(dpkg --print-architecture) signed-by=\u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.gpg] https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fdocker-ce\u002Flinux\u002Fubuntu \\\n  \"$(. \u002Fetc\u002Fos-release && echo \"$VERSION_CODENAME\")\" stable\" | \\\n  sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list > \u002Fdev\u002Fnull\n",[457,42558,42559,42564,42570,42587,42620],{"__ignoreMap":32},[460,42560,42561],{"class":462,"line":463},[460,42562,42563],{"class":942},"# Add the repository to Apt sources:\n",[460,42565,42566,42568],{"class":462,"line":476},[460,42567,41537],{"class":900},[460,42569,41091],{"class":900},[460,42571,42572,42575,42578,42581,42584],{"class":462,"line":482},[460,42573,42574],{"class":1353},"  \"deb [arch=$(",[460,42576,42577],{"class":929},"dpkg",[460,42579,42580],{"class":900}," --print-architecture",[460,42582,42583],{"class":1353},") signed-by=\u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.gpg] https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fdocker-ce\u002Flinux\u002Fubuntu ",[460,42585,42586],{"class":900},"\\\n",[460,42588,42589,42592,42594,42596,42599,42602,42604,42606,42609,42611,42613,42616,42618],{"class":462,"line":488},[460,42590,42591],{"class":1353},"  \"",[460,42593,41512],{"class":466},[460,42595,6000],{"class":900},[460,42597,42598],{"class":1353}," \u002Fetc\u002Fos-release",[460,42600,42601],{"class":466}," && ",[460,42603,41537],{"class":900},[460,42605,26207],{"class":1353},[460,42607,42608],{"class":466},"$VERSION_CODENAME",[460,42610,16993],{"class":1353},[460,42612,8411],{"class":466},[460,42614,42615],{"class":1353},"\" stable\"",[460,42617,41522],{"class":887},[460,42619,41091],{"class":900},[460,42621,42622,42625,42628,42631,42634],{"class":462,"line":494},[460,42623,42624],{"class":929},"  sudo",[460,42626,42627],{"class":1353}," tee",[460,42629,42630],{"class":1353}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list",[460,42632,42633],{"class":887}," >",[460,42635,42636],{"class":1353}," \u002Fdev\u002Fnull\n",[14,42638,42639],{},"最后安装",[451,42641,42643],{"className":40235,"code":42642,"language":40237,"meta":32,"style":32},"sudo apt-get update\nsudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n",[457,42644,42645,42654],{"__ignoreMap":32},[460,42646,42647,42649,42651],{"class":462,"line":463},[460,42648,40989],{"class":929},[460,42650,42487],{"class":1353},[460,42652,42653],{"class":1353}," update\n",[460,42655,42656,42658,42660,42662,42665,42668,42671,42674],{"class":462,"line":476},[460,42657,40989],{"class":929},[460,42659,42487],{"class":1353},[460,42661,40247],{"class":1353},[460,42663,42664],{"class":1353}," docker-ce",[460,42666,42667],{"class":1353}," docker-ce-cli",[460,42669,42670],{"class":1353}," containerd.io",[460,42672,42673],{"class":1353}," docker-buildx-plugin",[460,42675,42676],{"class":1353}," docker-compose-plugin\n",[115,42678,42680],{"id":42679},"_212fedoradnf5","2.1.2.Fedora（DNF5）",[14,42682,42683,42684,42687,42688,42691],{},"查看自己自己包管理工具版本（dnf是 ",[3944,42685,42686],{},"Fedora \u002F RHEL \u002F CentOS"," 系列 Linux 系统中的 ",[3944,42689,42690],{},"包管理器（包管理工具）"," ，用来安装、卸载、更新和管理软件包）",[451,42693,42695],{"className":40235,"code":42694,"language":40237,"meta":32,"style":32},"dnf --version\n",[457,42696,42697],{"__ignoreMap":32},[460,42698,42699,42702],{"class":462,"line":463},[460,42700,42701],{"class":929},"dnf",[460,42703,42704],{"class":900}," --version\n",[14,42706,42431,42707,42711],{},[2756,42708,42436],{"href":42709,"rel":42710},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002Ffedora\u002F",[4943]," 修改而来。(官方教程还是DNF4,太老了，请看下方的教程)",[14,42713,42714],{},"如果你之前安装过 docker，请先删掉",[451,42716,42718],{"className":40235,"code":42717,"language":40237,"meta":32,"style":32},"sudo dnf remove docker \\\n                  docker-client \\\n                  docker-client-latest \\\n                  docker-common \\\n                  docker-latest \\\n                  docker-latest-logrotate \\\n                  docker-logrotate \\\n                  docker-selinux \\\n                  docker-engine-selinux \\\n                  docker-engine\n",[457,42719,42720,42734,42741,42748,42755,42762,42769,42776,42783,42790],{"__ignoreMap":32},[460,42721,42722,42724,42727,42729,42732],{"class":462,"line":463},[460,42723,40989],{"class":929},[460,42725,42726],{"class":1353}," dnf",[460,42728,42490],{"class":1353},[460,42730,42731],{"class":1353}," docker",[460,42733,41091],{"class":900},[460,42735,42736,42739],{"class":462,"line":476},[460,42737,42738],{"class":1353},"                  docker-client",[460,42740,41091],{"class":900},[460,42742,42743,42746],{"class":462,"line":482},[460,42744,42745],{"class":1353},"                  docker-client-latest",[460,42747,41091],{"class":900},[460,42749,42750,42753],{"class":462,"line":488},[460,42751,42752],{"class":1353},"                  docker-common",[460,42754,41091],{"class":900},[460,42756,42757,42760],{"class":462,"line":494},[460,42758,42759],{"class":1353},"                  docker-latest",[460,42761,41091],{"class":900},[460,42763,42764,42767],{"class":462,"line":500},[460,42765,42766],{"class":1353},"                  docker-latest-logrotate",[460,42768,41091],{"class":900},[460,42770,42771,42774],{"class":462,"line":506},[460,42772,42773],{"class":1353},"                  docker-logrotate",[460,42775,41091],{"class":900},[460,42777,42778,42781],{"class":462,"line":512},[460,42779,42780],{"class":1353},"                  docker-selinux",[460,42782,41091],{"class":900},[460,42784,42785,42788],{"class":462,"line":518},[460,42786,42787],{"class":1353},"                  docker-engine-selinux",[460,42789,41091],{"class":900},[460,42791,42792],{"class":462,"line":525},[460,42793,42794],{"class":1353},"                  docker-engine\n",[14,42796,42797],{},"安装依赖，下载 repo 文件，并把软件仓库地址替换为镜像站：",[451,42799,42801],{"className":40235,"code":42800,"language":40237,"meta":32,"style":32},"sudo dnf -y install dnf-plugins-core\nsudo dnf config-manager addrepo --from-repofile=https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Ffedora\u002Fdocker-ce.repo\nsudo sed -i 's+https:\u002F\u002Fdownload.docker.com+https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fdocker-ce+' \u002Fetc\u002Fyum.repos.d\u002Fdocker-ce.repo\n",[457,42802,42803,42817,42832],{"__ignoreMap":32},[460,42804,42805,42807,42809,42812,42814],{"class":462,"line":463},[460,42806,40989],{"class":929},[460,42808,42726],{"class":1353},[460,42810,42811],{"class":900}," -y",[460,42813,40247],{"class":1353},[460,42815,42816],{"class":1353}," dnf-plugins-core\n",[460,42818,42819,42821,42823,42826,42829],{"class":462,"line":476},[460,42820,40989],{"class":929},[460,42822,42726],{"class":1353},[460,42824,42825],{"class":1353}," config-manager",[460,42827,42828],{"class":1353}," addrepo",[460,42830,42831],{"class":900}," --from-repofile=https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Ffedora\u002Fdocker-ce.repo\n",[460,42833,42834,42836,42839,42842,42845],{"class":462,"line":482},[460,42835,40989],{"class":929},[460,42837,42838],{"class":1353}," sed",[460,42840,42841],{"class":900}," -i",[460,42843,42844],{"class":1353}," 's+https:\u002F\u002Fdownload.docker.com+https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fdocker-ce+'",[460,42846,42847],{"class":1353}," \u002Fetc\u002Fyum.repos.d\u002Fdocker-ce.repo\n",[14,42849,42850],{},"最后安装：",[451,42852,42854],{"className":40235,"code":42853,"language":40237,"meta":32,"style":32},"sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n",[457,42855,42856],{"__ignoreMap":32},[460,42857,42858,42860,42862,42864,42866,42868,42870,42872],{"class":462,"line":463},[460,42859,40989],{"class":929},[460,42861,42726],{"class":1353},[460,42863,40247],{"class":1353},[460,42865,42664],{"class":1353},[460,42867,42667],{"class":1353},[460,42869,42670],{"class":1353},[460,42871,42673],{"class":1353},[460,42873,42676],{"class":1353},[23,42875,42877],{"id":42876},"_22配置环境","2.2.配置环境",[115,42879,42881,42884],{"id":42880},"_221检查-docker-服务状态",[3944,42882,42883],{},"2.2.1.检查 Docker 服务状态"," ：",[14,42886,42887],{},"在 Linux 上，你可以通过以下命令检查 Docker 服务的状态：",[451,42889,42891],{"className":40235,"code":42890,"language":40237,"meta":32,"style":32},"systemctl status docker\n",[457,42892,42893],{"__ignoreMap":32},[460,42894,42895,42898,42901],{"class":462,"line":463},[460,42896,42897],{"class":929},"systemctl",[460,42899,42900],{"class":1353}," status",[460,42902,42903],{"class":1353}," docker\n",[115,42905,42907,42884],{"id":42906},"_222启动-docker-服务",[3944,42908,42909],{},"2.2.2.启动 Docker 服务",[14,42911,42912],{},"如果服务没有运行，可以使用以下命令启动 Docker 服务：",[451,42914,42916],{"className":40235,"code":42915,"language":40237,"meta":32,"style":32},"sudo systemctl start docker\n",[457,42917,42918],{"__ignoreMap":32},[460,42919,42920,42922,42925,42927],{"class":462,"line":463},[460,42921,40989],{"class":929},[460,42923,42924],{"class":1353}," systemctl",[460,42926,20698],{"class":1353},[460,42928,42903],{"class":1353},[115,42930,42932,42884],{"id":42931},"_223设置-docker-开机自启",[3944,42933,42934],{},"2.2.3.设置 Docker 开机自启",[14,42936,42937],{},"如果你希望 Docker 在每次启动时自动运行，可以启用开机自启：",[451,42939,42941],{"className":40235,"code":42940,"language":40237,"meta":32,"style":32},"sudo systemctl enable docker\n",[457,42942,42943],{"__ignoreMap":32},[460,42944,42945,42947,42949,42952],{"class":462,"line":463},[460,42946,40989],{"class":929},[460,42948,42924],{"class":1353},[460,42950,42951],{"class":1353}," enable",[460,42953,42903],{"class":1353},[115,42955,42957,6464,42960,6464,42965,42884],{"id":42956},"_224将用户添加到-docker-组",[3944,42958,42959],{},"2.2.4.将用户添加到",[3944,42961,42962],{},[457,42963,42964],{},"docker",[3944,42966,42967],{},"组",[14,42969,42970,42971,42973],{},"使用以下命令将当前用户添加到 ",[457,42972,42964],{}," 组：",[451,42975,42977],{"className":40235,"code":42976,"language":40237,"meta":32,"style":32},"sudo usermod -aG docker $USER\n",[457,42978,42979],{"__ignoreMap":32},[460,42980,42981,42983,42986,42989,42991],{"class":462,"line":463},[460,42982,40989],{"class":929},[460,42984,42985],{"class":1353}," usermod",[460,42987,42988],{"class":900}," -aG",[460,42990,42731],{"class":1353},[460,42992,42993],{"class":466}," $USER\n",[115,42995,42997,42884],{"id":42996},"_225退出并重新登录",[3944,42998,42999],{},"2.2.5.退出并重新登录",[14,43001,43002],{},"执行完上述命令后，你需要退出当前会话并重新登录，或者运行以下命令使更改生效：",[451,43004,43006],{"className":40235,"code":43005,"language":40237,"meta":32,"style":32},"newgrp docker\n",[457,43007,43008],{"__ignoreMap":32},[460,43009,43010,43013],{"class":462,"line":463},[460,43011,43012],{"class":929},"newgrp",[460,43014,42903],{"class":1353},[115,43016,43018,42884],{"id":43017},"_226重新启动-docker-服务如果需要",[3944,43019,43020],{},"2.2.6.重新启动 Docker 服务（如果需要）",[14,43022,43023],{},"确保 Docker 服务正在运行，可以使用以下命令：",[451,43025,43026],{"className":40235,"code":42915,"language":40237,"meta":32,"style":32},[457,43027,43028],{"__ignoreMap":32},[460,43029,43030,43032,43034,43036],{"class":462,"line":463},[460,43031,40989],{"class":929},[460,43033,42924],{"class":1353},[460,43035,20698],{"class":1353},[460,43037,42903],{"class":1353},[115,43039,43041,42884],{"id":43040},"_227重启电脑后检查-docker-服务状态",[3944,43042,43043],{},"2.2.7.重启电脑后检查 Docker 服务状态",[14,43045,43046],{},"先重启电脑，接着你可以通过以下命令检查 Docker 服务的状态，看看是否正常：",[451,43048,43050],{"className":40235,"code":43049,"language":40237,"meta":32,"style":32},"sudo reboot\nsystemctl status docker\n",[457,43051,43052,43059],{"__ignoreMap":32},[460,43053,43054,43056],{"class":462,"line":463},[460,43055,40989],{"class":929},[460,43057,43058],{"class":1353}," reboot\n",[460,43060,43061,43063,43065],{"class":462,"line":476},[460,43062,42897],{"class":929},[460,43064,42900],{"class":1353},[460,43066,42903],{"class":1353},[14,43068,43069],{},[30,43070],{"alt":32,"src":43071},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-001.png",[14,43073,43074],{},"第三行显示enabled说明开机自启动成功",[14,43076,43077],{},"按q退出",[23,43079,43081],{"id":43080},"_23安装docker-desktopwinmac","2.3.安装Docker Desktop（Win，Mac）",[14,43083,43084],{},"优先使用linux来使用docker是比较好的",[14,43086,43087],{},"(Docker Desktop在Windows和MacOS使用的是虚拟机，性能有损失，在这俩系统上可以用，但是你需要接受这些性能损失。在Windows上性能损失和WSL2的损失几乎一样，因为Windows的docker desktop基于wsl2)",[14,43089,43090],{},"(Docker Desktop在Linux上只是Docker Engine的一个GUI管理工具，依然默认使用Docker Engine开启容器，所以依然几乎没有损耗，讨厌用命令行的可以考虑使用)",[14,43092,43093,43094],{},"官方下载安装:",[2756,43095,43096],{"href":43096,"rel":43097},"https:\u002F\u002Fwww.docker.com\u002F",[4943],[14,43099,43100],{},"Windows的Docker显卡直通与USB直通:",[14,43102,43103],{},"在Windows上想Nvidia显卡直通的话，需要先去DockerDesktop设置里开启WSL2支持并勾选一个wsl2的发行版，比如Ubuntu22.04，紧接着，需要进入wsl2的Ubuntu22.04中安装NVIDIA Container Toolkit，教程在下方。",[14,43105,43106],{},"在Windows的Docker上想要USB直通需要先让wsl2直通该usb，再在docker run命令将该设备添加到docker。(如果把wsl2所有设备全挂载到docker了，那么只需要让usb直通wsl2)",[14,43108,43109],{},[30,43110],{"alt":32,"src":43111},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-002.png",[14,43113,43114],{},[30,43115],{"alt":32,"src":43116},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-003.png",[14,43118,43119],{},[30,43120],{"alt":32,"src":43121},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-004.png",[1944,43123,43124],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":32,"searchDepth":476,"depth":476,"links":43126},[43127,43128,43129],{"id":42405,"depth":482,"text":42406},{"id":42876,"depth":482,"text":42877},{"id":43080,"depth":482,"text":43081},{},"\u002Fwiki\u002F2025-11-10-docker\u002Fch2-docker",{"title":42397,"description":32},"wiki\u002F2025-11-10-Docker\u002Fch2-安装Docker","CcH--l5LuaypKBoO7AJJUKqaK8NHmo0d-iudiZdasMo",{"id":43136,"title":43137,"body":43138,"description":43145,"extension":16683,"meta":43838,"navigation":521,"path":43839,"seo":43840,"stem":43841,"__hash__":43842},"wiki\u002Fwiki\u002F2025-11-10-Docker\u002Fch3-Docker直通.md","3.Docker直通",{"type":7,"value":43139,"toc":43832},[43140,43143,43146,43150,43155,43160,43163,43191,43196,43205,43208,43213,43217,43224,43229,43235,43239,43242,43246,43251,43343,43348,43366,43371,43392,43397,43413,43417,43422,43451,43456,43502,43507,43551,43559,43576,43581,43597,43602,43616,43619,43622,43625,43628,43657,43660,43665,43669,43672,43675,43681,43684,43687,43690,43752,43759,43764,43767,43785,43789,43792,43809,43812,43815,43829],[10,43141,43137],{"id":43142},"_3docker直通",[14,43144,43145],{},"将宿主机的硬件设备或特定资源直接传递给Docker容器使用的技术",[23,43147,43149],{"id":43148},"_31usb直通","3.1.USB直通",[14,43151,43152],{},[30,43153],{"alt":32,"src":43154},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-005.png",[103,43156,43157],{},[43,43158,43159],{},"方法一(不是很推荐新手)：",[14,43161,43162],{},"创建容器的时候把需要的设备加在红色部分这里即可。可以通过下面的命令查看想要的设备的名字。",[451,43164,43166],{"className":40235,"code":43165,"language":40237,"meta":32,"style":32},"ls \u002Fdev\n#例如\n--device=\u002Fdev\u002Ftty_USB0\n",[457,43167,43168,43176,43181],{"__ignoreMap":32},[460,43169,43170,43173],{"class":462,"line":463},[460,43171,43172],{"class":929},"ls",[460,43174,43175],{"class":1353}," \u002Fdev\n",[460,43177,43178],{"class":462,"line":476},[460,43179,43180],{"class":942},"#例如\n",[460,43182,43183,43186,43188],{"class":462,"line":482},[460,43184,43185],{"class":466},"--device",[460,43187,894],{"class":887},[460,43189,43190],{"class":1353},"\u002Fdev\u002Ftty_USB0\n",[103,43192,43193],{"start":476},[43,43194,43195],{},"方法二(个人更加推荐，不用重新再挂载了，虽然安全性会降低，但是别人利用安全权限能够攻击你的概率很低很低，企业服务器才需要提防)：",[451,43197,43199],{"className":40235,"code":43198,"language":40237,"meta":32,"style":32},"--privileged\n",[457,43200,43201],{"__ignoreMap":32},[460,43202,43203],{"class":462,"line":463},[460,43204,43198],{"class":929},[14,43206,43207],{},"直接添加一行绿色部分，然后所有设备都会被挂载到docker了。(红色部分就不用写了）",[14,43209,43210],{},[30,43211],{"alt":32,"src":43212},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-006.png",[23,43214,43216],{"id":43215},"_32nvidia显卡直通","3.2.NVIDIA显卡直通",[14,43218,43219,43220,43223],{},"NVIDIA Container Toolkit使用户 ",[3944,43221,43222],{},"能够构建和运行GPU加速的容器"," 。该工具包包括一个容器运行库和实用程序，用于自动配置容器以利用NVIDIA GPU。",[14,43225,43226],{},[30,43227],{"alt":32,"src":43228},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-007.png",[14,43230,43231],{},[2756,43232,43233],{"href":43233,"rel":43234},"https:\u002F\u002Fdocs.nvidia.com\u002Fdatacenter\u002Fcloud-native\u002Fcontainer-toolkit\u002Flatest\u002Finstall-guide.html",[4943],[115,43236,43238],{"id":43237},"_321安装","3.2.1.安装",[14,43240,43241],{},"（尽量能看官方就看官方的，安装方式可能会更新）",[4287,43243,43245],{"id":43244},"_3211ubuntu","3.2.1.1.Ubuntu",[103,43247,43248],{},[43,43249,43250],{},"配置存储库 并更新",[451,43252,43254],{"className":40235,"code":43253,"language":40237,"meta":32,"style":32},"curl -fsSL https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fgpgkey | sudo gpg --dearmor -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg \\\n  && curl -s -L https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fstable\u002Fdeb\u002Fnvidia-container-toolkit.list | \\\n    sed 's#deb https:\u002F\u002F#deb [signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg] https:\u002F\u002F#g' | \\\n    sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fnvidia-container-toolkit.list \\\n  && \\\n    sudo apt-get update\n",[457,43255,43256,43285,43305,43317,43329,43335],{"__ignoreMap":32},[460,43257,43258,43261,43264,43267,43269,43271,43274,43277,43280,43283],{"class":462,"line":463},[460,43259,43260],{"class":929},"curl",[460,43262,43263],{"class":900}," -fsSL",[460,43265,43266],{"class":1353}," https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fgpgkey",[460,43268,41522],{"class":887},[460,43270,42484],{"class":929},[460,43272,43273],{"class":1353}," gpg",[460,43275,43276],{"class":900}," --dearmor",[460,43278,43279],{"class":900}," -o",[460,43281,43282],{"class":1353}," \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg",[460,43284,41091],{"class":900},[460,43286,43287,43290,43292,43295,43298,43301,43303],{"class":462,"line":476},[460,43288,43289],{"class":466},"  && ",[460,43291,43260],{"class":929},[460,43293,43294],{"class":900}," -s",[460,43296,43297],{"class":900}," -L",[460,43299,43300],{"class":1353}," https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fstable\u002Fdeb\u002Fnvidia-container-toolkit.list",[460,43302,41522],{"class":887},[460,43304,41091],{"class":900},[460,43306,43307,43310,43313,43315],{"class":462,"line":482},[460,43308,43309],{"class":929},"    sed",[460,43311,43312],{"class":1353}," 's#deb https:\u002F\u002F#deb [signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg] https:\u002F\u002F#g'",[460,43314,41522],{"class":887},[460,43316,41091],{"class":900},[460,43318,43319,43322,43324,43327],{"class":462,"line":488},[460,43320,43321],{"class":929},"    sudo",[460,43323,42627],{"class":1353},[460,43325,43326],{"class":1353}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fnvidia-container-toolkit.list",[460,43328,41091],{"class":900},[460,43330,43331,43333],{"class":462,"line":494},[460,43332,43289],{"class":466},[460,43334,42586],{"class":900},[460,43336,43337,43339,43341],{"class":462,"line":500},[460,43338,43321],{"class":929},[460,43340,42487],{"class":1353},[460,43342,42653],{"class":1353},[103,43344,43345],{"start":476},[43,43346,43347],{},"安装nvidia-docker2",[451,43349,43351],{"className":40235,"code":43350,"language":40237,"meta":32,"style":32},"sudo apt-get install -y nvidia-docker2\n",[457,43352,43353],{"__ignoreMap":32},[460,43354,43355,43357,43359,43361,43363],{"class":462,"line":463},[460,43356,40989],{"class":929},[460,43358,42487],{"class":1353},[460,43360,40247],{"class":1353},[460,43362,42811],{"class":900},[460,43364,43365],{"class":1353}," nvidia-docker2\n",[103,43367,43368],{"start":482},[43,43369,43370],{},"使用nvidia-ctk命令配置container runtime",[451,43372,43374],{"className":40235,"code":43373,"language":40237,"meta":32,"style":32},"sudo nvidia-ctk runtime configure --runtime=docker\n",[457,43375,43376],{"__ignoreMap":32},[460,43377,43378,43380,43383,43386,43389],{"class":462,"line":463},[460,43379,40989],{"class":929},[460,43381,43382],{"class":1353}," nvidia-ctk",[460,43384,43385],{"class":1353}," runtime",[460,43387,43388],{"class":1353}," configure",[460,43390,43391],{"class":900}," --runtime=docker\n",[103,43393,43394],{"start":488},[43,43395,43396],{},"重启docker服务:",[451,43398,43400],{"className":40235,"code":43399,"language":40237,"meta":32,"style":32},"sudo systemctl restart docker\n",[457,43401,43402],{"__ignoreMap":32},[460,43403,43404,43406,43408,43411],{"class":462,"line":463},[460,43405,40989],{"class":929},[460,43407,42924],{"class":1353},[460,43409,43410],{"class":1353}," restart",[460,43412,42903],{"class":1353},[4287,43414,43416],{"id":43415},"_3212fedora","3.2.1.2.Fedora",[103,43418,43419],{},[43,43420,43421],{},"配置存储库",[451,43423,43425],{"className":40235,"code":43424,"language":40237,"meta":32,"style":32},"curl -s -L https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fstable\u002Frpm\u002Fnvidia-container-toolkit.repo | \\\nsudo tee \u002Fetc\u002Fyum.repos.d\u002Fnvidia-container-toolkit.repo\n",[457,43426,43427,43442],{"__ignoreMap":32},[460,43428,43429,43431,43433,43435,43438,43440],{"class":462,"line":463},[460,43430,43260],{"class":929},[460,43432,43294],{"class":900},[460,43434,43297],{"class":900},[460,43436,43437],{"class":1353}," https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fstable\u002Frpm\u002Fnvidia-container-toolkit.repo",[460,43439,41522],{"class":887},[460,43441,41091],{"class":900},[460,43443,43444,43446,43448],{"class":462,"line":476},[460,43445,40989],{"class":929},[460,43447,42627],{"class":1353},[460,43449,43450],{"class":1353}," \u002Fetc\u002Fyum.repos.d\u002Fnvidia-container-toolkit.repo\n",[103,43452,43453],{"start":476},[43,43454,43455],{},"配置NVIDIA容器工具库的官方软件源，使用实验包，可选",[451,43457,43459],{"className":40235,"code":43458,"language":40237,"meta":32,"style":32},"# 如果是RHEL或者Rocky（DNF4）\nsudo dnf config-manager --add-repo https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fstable\u002Frpm\u002Flibnvidia-container.repo\n\n# 如果是Feodra41+（DNF5）\nsudo dnf config-manager addrepo --from-repofile=https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fstable\u002Frpm\u002Flibnvidia-container.repo\n",[457,43460,43461,43466,43480,43484,43489],{"__ignoreMap":32},[460,43462,43463],{"class":462,"line":463},[460,43464,43465],{"class":942},"# 如果是RHEL或者Rocky（DNF4）\n",[460,43467,43468,43470,43472,43474,43477],{"class":462,"line":476},[460,43469,40989],{"class":929},[460,43471,42726],{"class":1353},[460,43473,42825],{"class":1353},[460,43475,43476],{"class":900}," --add-repo",[460,43478,43479],{"class":1353}," https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fstable\u002Frpm\u002Flibnvidia-container.repo\n",[460,43481,43482],{"class":462,"line":482},[460,43483,522],{"emptyLinePlaceholder":521},[460,43485,43486],{"class":462,"line":488},[460,43487,43488],{"class":942},"# 如果是Feodra41+（DNF5）\n",[460,43490,43491,43493,43495,43497,43499],{"class":462,"line":494},[460,43492,40989],{"class":929},[460,43494,42726],{"class":1353},[460,43496,42825],{"class":1353},[460,43498,42828],{"class":1353},[460,43500,43501],{"class":900}," --from-repofile=https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fstable\u002Frpm\u002Flibnvidia-container.repo\n",[103,43503,43504],{"start":482},[43,43505,43506],{},"安装NVIDIA Container Toolki包",[451,43508,43510],{"className":40235,"code":43509,"language":40237,"meta":32,"style":32},"# 如果是RHEL或者Rocky\nsudo dnf install -y nvidia-container-toolkit\n\n# 如果是Fedora\nsudo dnf install -y nvidia-container-toolkit\n",[457,43511,43512,43517,43530,43534,43539],{"__ignoreMap":32},[460,43513,43514],{"class":462,"line":463},[460,43515,43516],{"class":942},"# 如果是RHEL或者Rocky\n",[460,43518,43519,43521,43523,43525,43527],{"class":462,"line":476},[460,43520,40989],{"class":929},[460,43522,42726],{"class":1353},[460,43524,40247],{"class":1353},[460,43526,42811],{"class":900},[460,43528,43529],{"class":1353}," nvidia-container-toolkit\n",[460,43531,43532],{"class":462,"line":482},[460,43533,522],{"emptyLinePlaceholder":521},[460,43535,43536],{"class":462,"line":488},[460,43537,43538],{"class":942},"# 如果是Fedora\n",[460,43540,43541,43543,43545,43547,43549],{"class":462,"line":494},[460,43542,40989],{"class":929},[460,43544,42726],{"class":1353},[460,43546,40247],{"class":1353},[460,43548,42811],{"class":900},[460,43550,43529],{"class":1353},[103,43552,43553],{"start":488},[43,43554,43555,43556,43558],{},"安装nvidia-docker2 ： 在Fedora上使用",[457,43557,42701],{},"进行安装",[451,43560,43562],{"className":40235,"code":43561,"language":40237,"meta":32,"style":32},"sudo dnf install -y nvidia-docker2\n",[457,43563,43564],{"__ignoreMap":32},[460,43565,43566,43568,43570,43572,43574],{"class":462,"line":463},[460,43567,40989],{"class":929},[460,43569,42726],{"class":1353},[460,43571,40247],{"class":1353},[460,43573,42811],{"class":900},[460,43575,43365],{"class":1353},[103,43577,43578],{"start":494},[43,43579,43580],{},"使用nvidia-ctk命令配置容器运行时 ： 这个命令用于配置NVIDIA Container Toolkit与Docker集成。命令如下：",[451,43582,43583],{"className":40235,"code":43373,"language":40237,"meta":32,"style":32},[457,43584,43585],{"__ignoreMap":32},[460,43586,43587,43589,43591,43593,43595],{"class":462,"line":463},[460,43588,40989],{"class":929},[460,43590,43382],{"class":1353},[460,43592,43385],{"class":1353},[460,43594,43388],{"class":1353},[460,43596,43391],{"class":900},[103,43598,43599],{"start":500},[43,43600,43601],{},"重启Docker服务 ： 完成配置后，必须重启Docker服务以使更改生效：",[451,43603,43604],{"className":40235,"code":43399,"language":40237,"meta":32,"style":32},[457,43605,43606],{"__ignoreMap":32},[460,43607,43608,43610,43612,43614],{"class":462,"line":463},[460,43609,40989],{"class":929},[460,43611,42924],{"class":1353},[460,43613,43410],{"class":1353},[460,43615,42903],{"class":1353},[14,43617,43618],{},"这些步骤执行后，Docker将使用NVIDIA Container Runtime，并支持GPU加速的容器运行。你可以使用nvidia-smi命令来验证容器中的NVIDIA GPU是否可用",[14,43620,43621],{},"方法：",[14,43623,43624],{},"1️⃣nvidia-smi",[14,43626,43627],{},"2️⃣运行nvidia cuda 容器进行测试",[451,43629,43631],{"className":40235,"code":43630,"language":40237,"meta":32,"style":32},"sudo docker run --rm --gpus all nvidia\u002Fcuda:11.0.3-base-ubuntu20.04 nvidia-smi\n",[457,43632,43633],{"__ignoreMap":32},[460,43634,43635,43637,43639,43642,43645,43648,43651,43654],{"class":462,"line":463},[460,43636,40989],{"class":929},[460,43638,42731],{"class":1353},[460,43640,43641],{"class":1353}," run",[460,43643,43644],{"class":900}," --rm",[460,43646,43647],{"class":900}," --gpus",[460,43649,43650],{"class":1353}," all",[460,43652,43653],{"class":1353}," nvidia\u002Fcuda:11.0.3-base-ubuntu20.04",[460,43655,43656],{"class":1353}," nvidia-smi\n",[14,43658,43659],{},"docker会自动从nvidia\u002Fcuda拉取11.0.3-base-ubuntu20.04镜像，并创建一个运行一次即删除的容器",[14,43661,43662],{},[30,43663],{"alt":32,"src":43664},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-008.png",[23,43666,43668],{"id":43667},"_33docker配置cuda和cudnn","3.3.Docker配置CUDA和CuDNN",[14,43670,43671],{},"如果你不需要自己创建Docker镜像，直接使用学长或者其他人创建好的镜像，则不用看该章节，容器的CUDA和CuDNN是和本地完全隔离的环境，你本地有没有CUDA都无所谓，但英伟达驱动版本必须满足CUDA的最低版本要求。",[14,43673,43674],{},"下面是如果你想自己创建镜像，则可以在学会如何创建容器的镜像后再回来看本节：",[14,43676,43677],{},[2756,43678,43679],{"href":43679,"rel":43680},"https:\u002F\u002Fhub.docker.com\u002Fr\u002Fnvidia\u002Fcuda",[4943],[14,43682,43683],{},"在上方这个网站中，英伟达都帮我们配置好了CUDA和CuDNN了，我们根本不需要自己去配置了，比传统方式要简单太多太多了。",[14,43685,43686],{},"我们只需要找到对应的Docker镜像当底包即可。",[14,43688,43689],{},"CUDA镜像有三个类型，如下，如果我们需要编译OpenCV4,那么需要使用devel版的CUDA。",[16884,43691,43692,43708],{},[16887,43693,43694],{},[16890,43695,43696,43699,43702,43705],{},[16893,43697,43698],{"align":40149},"镜像类型",[16893,43700,43701],{"align":40149},"适用场景",[16893,43703,43704],{"align":40149},"示例标签",[16893,43706,43707],{"align":40149},"大小",[16930,43709,43710,43724,43738],{},[16890,43711,43712,43715,43718,43721],{},[16935,43713,43714],{"align":40149},"base",[16935,43716,43717],{"align":40149},"仅需 CUDA 运行时库",[16935,43719,43720],{"align":40149},"12.4.0-base-ubuntu22.04",[16935,43722,43723],{"align":40149},"~240MB",[16890,43725,43726,43729,43732,43735],{},[16935,43727,43728],{"align":40149},"runtime",[16935,43730,43731],{"align":40149},"部署编译后的应用（含数学库）",[16935,43733,43734],{"align":40149},"12.4.0-runtime-ubuntu22.04",[16935,43736,43737],{"align":40149},"~2GB",[16890,43739,43740,43743,43746,43749],{},[16935,43741,43742],{"align":40149},"devel",[16935,43744,43745],{"align":40149},"开发环境（含编译工具）",[16935,43747,43748],{"align":40149},"12.4.0-devel-ubuntu22.04",[16935,43750,43751],{"align":40149},"~3GB",[14,43753,43754,43755,43758],{},"我示例一个，比如我想用在Ubuntu24.04上用CUDA12.6和CuDNN，那么就选择",[457,43756,43757],{},"nvidia\u002Fcuda:12.6.0-cudnn-devel-ubuntu24.04","。这个镜像既有CUDA-devel也有CuDNN，而且还是基于Ubuntu24.04的。",[14,43760,43761],{},[30,43762],{"alt":32,"src":43763},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-009.png",[14,43765,43766],{},"在dockerfile里就可以开头这么写：",[451,43768,43770],{"className":40235,"code":43769,"language":40237,"meta":32,"style":32},"# 基于NVIDIA官方CUDA 12.6和CuDNN基础镜像\nFROM nvidia\u002Fcuda:12.6.0-cudnn-devel-ubuntu24.04\n",[457,43771,43772,43777],{"__ignoreMap":32},[460,43773,43774],{"class":462,"line":463},[460,43775,43776],{"class":942},"# 基于NVIDIA官方CUDA 12.6和CuDNN基础镜像\n",[460,43778,43779,43782],{"class":462,"line":476},[460,43780,43781],{"class":929},"FROM",[460,43783,43784],{"class":1353}," nvidia\u002Fcuda:12.6.0-cudnn-devel-ubuntu24.04\n",[23,43786,43788],{"id":43787},"_34配置以太网","3.4.配置以太网",[14,43790,43791],{},"指定网络模式",[451,43793,43795],{"className":40235,"code":43794,"language":40237,"meta":32,"style":32},"--net=host \\\n",[457,43796,43797],{"__ignoreMap":32},[460,43798,43799,43802,43804,43807],{"class":462,"line":463},[460,43800,43801],{"class":466},"--net",[460,43803,894],{"class":887},[460,43805,43806],{"class":1353},"host",[460,43808,41091],{"class":929},[14,43810,43811],{},"启动参数里加上这行即可。具体在下方",[14,43813,43814],{},"--net选项：指定网络模式，该选项有以下参数可选：",[40,43816,43817,43820,43823,43826],{},[43,43818,43819],{},"--net=bridge:默认选项，表示连接到默认的网桥",[43,43821,43822],{},"--net=host:容器使用宿主机的网络",[43,43824,43825],{},"--net=container:Name-or-ID:告诉Docker让新建的容器使用已有容器的网络配置",[43,43827,43828],{},"--net=none：不配置该容器的网络，用户自定义网络配置",[1944,43830,43831],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":32,"searchDepth":476,"depth":476,"links":43833},[43834,43835,43836,43837],{"id":43148,"depth":482,"text":43149},{"id":43215,"depth":482,"text":43216},{"id":43667,"depth":482,"text":43668},{"id":43787,"depth":482,"text":43788},{},"\u002Fwiki\u002F2025-11-10-docker\u002Fch3-docker",{"title":43137,"description":43145},"wiki\u002F2025-11-10-Docker\u002Fch3-Docker直通","3SumKNcyD4vYz0D1pW1XpeDrzDFvMpi3imN6YMXjcfA",{"id":43844,"title":43845,"body":43846,"description":43853,"extension":16683,"meta":43859,"navigation":521,"path":43860,"seo":43861,"stem":43862,"__hash__":43863},"wiki\u002Fwiki\u002F2025-11-10-Docker\u002Fch4-DockerHub换源.md","4.DockerHub换源",{"type":7,"value":43847,"toc":43857},[43848,43851,43854],[10,43849,43845],{"id":43850},"_4dockerhub换源",[14,43852,43853],{},"（DockerHub已于2024年5月被🇨🇳封杀，各大国内镜像源均已下架DockerHub镜像源，直接挂梯用官方源吧）",[14,43855,43856],{},"各大镜像源只有Docker-Ce的镜像库，这个是用来安装docker的，而不是dockerhub的镜像源。",{"title":32,"searchDepth":476,"depth":476,"links":43858},[],{},"\u002Fwiki\u002F2025-11-10-docker\u002Fch4-dockerhub",{"title":43845,"description":43853},"wiki\u002F2025-11-10-Docker\u002Fch4-DockerHub换源","3CWIuSicuLr9U-Hfgi3WEZVlW4kQZuOPYkyp9VBbnxY",{"id":43865,"title":43866,"body":43867,"description":32,"extension":16683,"meta":44877,"navigation":521,"path":44878,"seo":44879,"stem":44880,"__hash__":44881},"wiki\u002Fwiki\u002F2025-11-10-Docker\u002Fch5-Docker命令学习.md","5.Docker命令学习",{"type":7,"value":43868,"toc":44872},[43869,43872,43876,43882,43886,43889,44229,44232,44235,44238,44243,44248,44251,44254,44257,44260,44279,44282,44293,44299,44481,44491,44507,44768,44770,44795,44810,44819,44869],[10,43870,43866],{"id":43871},"_5docker命令学习",[23,43873,43875],{"id":43874},"_51参考文档","5.1.参考文档",[14,43877,43878],{},[2756,43879,43880],{"href":43880,"rel":43881},"https:\u002F\u002Fwww.runoob.com\u002Fdocker\u002Fdocker-tutorial.html",[4943],[23,43883,43885],{"id":43884},"_52常用命令","5.2.常用命令",[14,43887,43888],{},"常用的标红了，偶尔用的标绿了，其他了解就行。",[16884,43890,43891,43904],{},[16887,43892,43893],{},[16890,43894,43895,43898,43901],{},[16893,43896,43897],{"align":40149},"命令",[16893,43899,43900],{"align":40149},"描述",[16893,43902,43903],{"align":40149},"示例",[16930,43905,43906,43917,43928,43939,43950,43961,43972,43983,43993,44004,44015,44026,44036,44047,44058,44069,44079,44089,44099,44109,44120,44131,44142,44153,44164,44175,44185,44196,44207,44218],{},[16890,43907,43908,43911,43914],{},[16935,43909,43910],{"align":40149},"docker run",[16935,43912,43913],{"align":40149},"创建并启动一个新的容器。",[16935,43915,43916],{"align":40149},"docker run -it ubuntu bash",[16890,43918,43919,43922,43925],{},[16935,43920,43921],{"align":40149},"docker build",[16935,43923,43924],{"align":40149},"通过指定的 Dockerfile 创建一个新的镜像。",[16935,43926,43927],{"align":40149},"docker build -t myimage .",[16890,43929,43930,43933,43936],{},[16935,43931,43932],{"align":40149},"docker pull",[16935,43934,43935],{"align":40149},"从 Docker 仓库拉取镜像。",[16935,43937,43938],{"align":40149},"docker pull ubuntu",[16890,43940,43941,43944,43947],{},[16935,43942,43943],{"align":40149},"docker push",[16935,43945,43946],{"align":40149},"将本地镜像推送到 Docker 仓库。",[16935,43948,43949],{"align":40149},"docker push myimage",[16890,43951,43952,43955,43958],{},[16935,43953,43954],{"align":40149},"docker stop",[16935,43956,43957],{"align":40149},"停止一个正在运行的容器。",[16935,43959,43960],{"align":40149},"docker stop container_id",[16890,43962,43963,43966,43969],{},[16935,43964,43965],{"align":40149},"docker start",[16935,43967,43968],{"align":40149},"启动一个已经存在的容器。",[16935,43970,43971],{"align":40149},"docker start container_id",[16890,43973,43974,43977,43980],{},[16935,43975,43976],{"align":40149},"docker restart",[16935,43978,43979],{"align":40149},"重新启动容器。",[16935,43981,43982],{"align":40149},"docker restart container_id",[16890,43984,43985,43988,43991],{},[16935,43986,43987],{"align":40149},"docker ps",[16935,43989,43990],{"align":40149},"列出当前正在运行的容器。",[16935,43992,43987],{"align":40149},[16890,43994,43995,43998,44001],{},[16935,43996,43997],{"align":40149},"docker rm",[16935,43999,44000],{"align":40149},"删除一个或多个停止的容器。",[16935,44002,44003],{"align":40149},"docker rm container_id",[16890,44005,44006,44009,44012],{},[16935,44007,44008],{"align":40149},"docker exec",[16935,44010,44011],{"align":40149},"在一个正在运行的容器中执行命令。",[16935,44013,44014],{"align":40149},"docker exec -it container_id bash",[16890,44016,44017,44020,44023],{},[16935,44018,44019],{"align":40149},"docker logs",[16935,44021,44022],{"align":40149},"查看容器的日志输出。",[16935,44024,44025],{"align":40149},"docker logs container_id",[16890,44027,44028,44031,44034],{},[16935,44029,44030],{"align":40149},"docker images",[16935,44032,44033],{"align":40149},"列出本地所有镜像。",[16935,44035,44030],{"align":40149},[16890,44037,44038,44041,44044],{},[16935,44039,44040],{"align":40149},"docker rmi",[16935,44042,44043],{"align":40149},"删除一个或多个镜像。",[16935,44045,44046],{"align":40149},"docker rmi myimage",[16890,44048,44049,44052,44055],{},[16935,44050,44051],{"align":40149},"docker network",[16935,44053,44054],{"align":40149},"管理 Docker 网络。",[16935,44056,44057],{"align":40149},"docker network ls",[16890,44059,44060,44063,44066],{},[16935,44061,44062],{"align":40149},"docker volume",[16935,44064,44065],{"align":40149},"管理 Docker 数据卷。",[16935,44067,44068],{"align":40149},"docker volume ls",[16890,44070,44071,44074,44077],{},[16935,44072,44073],{"align":40149},"docker-compose up",[16935,44075,44076],{"align":40149},"启动 docker-compose.yml 中定义的所有服务。",[16935,44078,44073],{"align":40149},[16890,44080,44081,44084,44087],{},[16935,44082,44083],{"align":40149},"docker-compose down",[16935,44085,44086],{"align":40149},"停止并移除 docker-compose.yml 中定义的所有服务及其相关资源。",[16935,44088,44083],{"align":40149},[16890,44090,44091,44094,44097],{},[16935,44092,44093],{"align":40149},"docker info",[16935,44095,44096],{"align":40149},"显示 Docker 系统的详细信息。",[16935,44098,44093],{"align":40149},[16890,44100,44101,44104,44107],{},[16935,44102,44103],{"align":40149},"docker stats",[16935,44105,44106],{"align":40149},"查看正在运行的容器的实时资源使用情况（CPU、内存等）。",[16935,44108,44103],{"align":40149},[16890,44110,44111,44114,44117],{},[16935,44112,44113],{"align":40149},"docker inspect",[16935,44115,44116],{"align":40149},"查看容器或镜像的详细信息（JSON 格式）。",[16935,44118,44119],{"align":40149},"docker inspect container_id",[16890,44121,44122,44125,44128],{},[16935,44123,44124],{"align":40149},"docker save",[16935,44126,44127],{"align":40149},"将一个镜像保存为 tar 文件。",[16935,44129,44130],{"align":40149},"docker save -o myimage.tar myimage",[16890,44132,44133,44136,44139],{},[16935,44134,44135],{"align":40149},"docker load",[16935,44137,44138],{"align":40149},"从 tar 文件中加载镜像。",[16935,44140,44141],{"align":40149},"docker load -i myimage.tar",[16890,44143,44144,44147,44150],{},[16935,44145,44146],{"align":40149},"docker tag",[16935,44148,44149],{"align":40149},"为镜像添加标签（tag）。",[16935,44151,44152],{"align":40149},"docker tag myimage myimage:v1",[16890,44154,44155,44158,44161],{},[16935,44156,44157],{"align":40149},"docker buildx build",[16935,44159,44160],{"align":40149},"使用 Buildx 构建多架构镜像。",[16935,44162,44163],{"align":40149},"docker buildx build -t myimage .",[16890,44165,44166,44169,44172],{},[16935,44167,44168],{"align":40149},"docker buildx create",[16935,44170,44171],{"align":40149},"创建一个新的 Buildx 构建实例。",[16935,44173,44174],{"align":40149},"docker buildx create –use",[16890,44176,44177,44180,44183],{},[16935,44178,44179],{"align":40149},"docker buildx ls",[16935,44181,44182],{"align":40149},"列出所有可用的 Buildx 构建实例。",[16935,44184,44179],{"align":40149},[16890,44186,44187,44190,44193],{},[16935,44188,44189],{"align":40149},"docker buildx use",[16935,44191,44192],{"align":40149},"设置当前的 Buildx 构建实例。",[16935,44194,44195],{"align":40149},"docker buildx use mybuilder",[16890,44197,44198,44201,44204],{},[16935,44199,44200],{"align":40149},"docker buildx bake",[16935,44202,44203],{"align":40149},"使用 Bake 文件批量构建镜像。",[16935,44205,44206],{"align":40149},"docker buildx bake -f bake.hcl",[16890,44208,44209,44212,44215],{},[16935,44210,44211],{"align":40149},"docker buildx build –push",[16935,44213,44214],{"align":40149},"构建镜像并推送到镜像仓库。",[16935,44216,44217],{"align":40149},"docker buildx build –push -t myimage .",[16890,44219,44220,44223,44226],{},[16935,44221,44222],{"align":40149},"docker buildx build –platform",[16935,44224,44225],{"align":40149},"构建镜像并为多个平台生成支持。",[16935,44227,44228],{"align":40149},"docker buildx build –platform linux\u002Famd64,linux\u002Farm64 -t myimage .",[14,44230,44231],{},"docker exec -it 进入容器并给予i输入和t终端 （docker exec -it 4f6c8cd45b58 \u002Fbin\u002Fbash）",[14,44233,44234],{},"docker search 可以查看Docker Hub上关键字的镜像仓库",[14,44236,44237],{},"docker images 可以查看已经下载的镜像",[14,44239,44240],{},[30,44241],{"alt":32,"src":44242},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-010.png",[14,44244,44245],{},[3944,44246,44247],{},"Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器",[14,44249,44250],{},"docker rmi $(docker images -q) 删除所有的镜像",[14,44252,44253],{},"docker container logs 查看容器日志",[14,44255,44256],{},"docker top 查看容器里的进程",[14,44258,44259],{},"docker cp 容器id:要拷贝的文件在容器里面的路径 宿主机的相应路径",[451,44261,44263],{"className":40235,"code":44262,"language":40237,"meta":32,"style":32},"如：docker cp 7aa5dc458f9d:\u002Fetc\u002Fnginx\u002Fnginx.conf \u002Fmydata\u002Fnginx\n",[457,44264,44265],{"__ignoreMap":32},[460,44266,44267,44270,44273,44276],{"class":462,"line":463},[460,44268,44269],{"class":929},"如：docker",[460,44271,44272],{"class":1353}," cp",[460,44274,44275],{"class":1353}," 7aa5dc458f9d:\u002Fetc\u002Fnginx\u002Fnginx.conf",[460,44277,44278],{"class":1353}," \u002Fmydata\u002Fnginx\n",[14,44280,44281],{},"docker run时在启动容器的时候会有几个常用的选项：",[40,44283,44284,44287,44290],{},[43,44285,44286],{},"-d选项：表示后台运行",[43,44288,44289],{},"-P选项：随机端口映射",[43,44291,44292],{},"-p选项：指定端口映射，有以下四种方式： --ip:hostPort:containerPort --ip::containerPort --hostPort::containerPort --containerPort",[23,44294,44296],{"id":44295},"_53run命令的参数非常重要",[3944,44297,44298],{},"5.3.run命令的参数（非常重要）",[16884,44300,44301,44314],{},[16887,44302,44303],{},[16890,44304,44305,44308,44311],{},[16893,44306,44307],{"align":40149},"参数\u002F配置",[16893,44309,44310],{"align":40149},"功能说明",[16893,44312,44313],{"align":40149},"重要性与参考依据",[16930,44315,44316,44327,44338,44349,44360,44371,44382,44393,44404,44415,44426,44437,44448,44459,44470],{},[16890,44317,44318,44321,44324],{},[16935,44319,44320],{"align":40149},"-name=ros_jazzy_opencv411_cuda128_cudnn971_noble",[16935,44322,44323],{"align":40149},"指定容器名称，便于后续管理",[16935,44325,44326],{"align":40149},"替代随机生成的容器名。",[16890,44328,44329,44332,44335],{},[16935,44330,44331],{"align":40149},"–gpus all",[16935,44333,44334],{"align":40149},"允许容器访问宿主机所有GPU资源，需NVIDIA驱动支持",[16935,44336,44337],{"align":40149},"用于CUDA加速等GPU依赖任务。",[16890,44339,44340,44343,44346],{},[16935,44341,44342],{"align":40149},"-e NVIDIA_DRIVER_CAPABILITIES=all",[16935,44344,44345],{"align":40149},"启用NVIDIA驱动的全部功能（如CUDA、图形渲染）",[16935,44347,44348],{"align":40149},"确保容器内GPU功能完整67。",[16890,44350,44351,44354,44357],{},[16935,44352,44353],{"align":40149},"-dit",[16935,44355,44356],{"align":40149},"组合参数：- -d：后台运行容器（Detached模式）- -i：保持标准输入（STDIN）开放- -t：分配伪终端（TTY）",[16935,44358,44359],{"align":40149},"允许容器在后台运行并支持交互操作。",[16890,44361,44362,44365,44368],{},[16935,44363,44364],{"align":40149},"–privileged",[16935,44366,44367],{"align":40149},"赋予容器完全主机权限（可访问设备、内核模块等）",[16935,44369,44370],{"align":40149},"用于需要直接操作硬件的场景（如访问USB设备），但存在安全风险。",[16890,44372,44373,44376,44379],{},[16935,44374,44375],{"align":40149},"–net=host",[16935,44377,44378],{"align":40149},"共享宿主机网络命名空间（容器使用宿主机IP和端口）",[16935,44380,44381],{"align":40149},"简化网络配置，无NAT，这样的话，网络效率更高，局域网设备更容易发现。",[16890,44383,44384,44387,44390],{},[16935,44385,44386],{"align":40149},"–group-add audio–group-add video–group-add dialout",[16935,44388,44389],{"align":40149},"将容器用户加入宿主机用户组：- audio：音频设备访问- video：视频设备访问- dialout：串口设备访问",[16935,44391,44392],{"align":40149},"避免权限问题（如避免无法调用摄像头、麦克风）。",[16890,44394,44395,44398,44401],{},[16935,44396,44397],{"align":40149},"-e DISPLAY=$DISPLAY-e XAUTHORITY=\u002Fhome\u002Ftungchiahui\u002F.Xauthority-e WAYLAND_DISPLAY-e XDG_RUNTIME_DIR-e QT_QPA_PLATFORM=xcb",[16935,44399,44400],{"align":40149},"配置图形显示环境：- 绑定宿主机显示接口（X11或Wayland）- 设置GUI应用渲染后端",[16935,44402,44403],{"align":40149},"支持容器内运行图形界面应用（如OpenCV可视化）。",[16890,44405,44406,44409,44412],{},[16935,44407,44408],{"align":40149},"-v \u002Ftmp\u002F.X11-unix:\u002Ftmp\u002F.X11-unix:rw-v \u002Fdev\u002Fdri:\u002Fdev\u002Fdri",[16935,44410,44411],{"align":40149},"挂载宿主机图形设备：- X11套接字目录- 直接渲染管理器（DRI）设备",[16935,44413,44414],{"align":40149},"实现容器内图形显示。",[16890,44416,44417,44420,44423],{},[16935,44418,44419],{"align":40149},"-v $HOME\u002F.Xauthority:\u002Fhome\u002Ftungchiahui\u002F.Xauthority:ro",[16935,44421,44422],{"align":40149},"挂载X11认证文件（只读）",[16935,44424,44425],{"align":40149},"确保容器有权连接宿主机显示服务。",[16890,44427,44428,44431,44434],{},[16935,44429,44430],{"align":40149},"-v \u002Frun\u002Fuser\u002F1000\u002Fwayland-0-v \u002Frun\u002Fuser\u002F1000",[16935,44432,44433],{"align":40149},"挂载Wayland显示协议相关目录",[16935,44435,44436],{"align":40149},"支持Wayland协议的图形显示。",[16890,44438,44439,44442,44445],{},[16935,44440,44441],{"align":40149},"–ulimit nofile=1024:524288",[16935,44443,44444],{"align":40149},"设置进程最大可打开文件数（nofile）的方式，用于控制容器或进程运行时的文件句柄数量限制。–ulimit \u003C限制类型>=\u003C软限制>:\u003C硬限制>",[16935,44446,44447],{"align":40149},"如果默认限制太小，可能会出现 “too many open files” 的错误。所以在容器运行或系统服务启动时，需要调大这个值。–ulimit nofile=4096:65536",[16890,44449,44450,44453,44456],{},[16935,44451,44452],{"align":40149},"-v \u002Fhome\u002Ftungchiahui:\u002Fhome\u002Ftungchiahui",[16935,44454,44455],{"align":40149},"挂载宿主机用户目录到容器内同名路径",[16935,44457,44458],{"align":40149},"实现宿主机与容器间文件共享（如代码、数据持久化）。",[16890,44460,44461,44464,44467],{},[16935,44462,44463],{"align":40149},"-w \u002Fhome\u002Ftungchiahui",[16935,44465,44466],{"align":40149},"设置容器启动后的默认工作目录",[16935,44468,44469],{"align":40149},"直接进入项目路径，方便执行命令2324。",[16890,44471,44472,44475,44478],{},[16935,44473,44474],{"align":40149},"tungchiahui\u002Fros-opencv:jazzy-411-cuda128-cudnn971-noble",[16935,44476,44477],{"align":40149},"镜像名称指定镜像及标签，包含：- ROS 2 Jazzy- OpenCV 4.11- CUDA 12.8- cuDNN 9.7.1",[16935,44479,44480],{"align":40149},"提供预配置的深度学习与机器人开发环境。",[14,44482,44483,44484,44486,44487,44490],{},"下方这条命令一定要在普通用户下运行，不要在root用户下运行，其实加不加",[457,44485,40989],{},"加不加",[457,44488,44489],{},"sudo -E","都无所谓。",[14,44492,44493,44494,44496,44497,44499,44500,44503,44504,44506],{},"用户已经被加到docker组了，不用",[457,44495,40989],{},"也行跑，其次，",[457,44498,40989],{},"运行的话，你的",[457,44501,44502],{},"$HOME","变量也不会变，更何况加上-E的话，这样你的",[457,44505,44502],{},"更不可能变了。",[451,44508,44510],{"className":40235,"code":44509,"language":40237,"meta":32,"style":32},"sudo docker run --name=ros_opencv_cuda \\\n--gpus all \\\n-e NVIDIA_DRIVER_CAPABILITIES=all \\\n-e DISPLAY=$DISPLAY \\\n-dit \\\n--privileged \\\n--net=host \\\n--group-add audio \\\n--group-add video \\\n--group-add dialout \\\n-e XAUTHORITY=$HOME\u002F.Xauthority \\\n-e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \\\n-e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \\\n-e QT_QPA_PLATFORM=xcb \\\n-v \u002Ftmp\u002F.X11-unix:\u002Ftmp\u002F.X11-unix:rw \\\n-v \u002Fdev\u002Fdri:\u002Fdev\u002Fdri \\\n-v $HOME\u002F.Xauthority:$HOME\u002F.Xauthority:ro \\\n-v \u002Frun\u002Fuser\u002F$(id -u)\u002Fwayland-0:\u002Frun\u002Fuser\u002F$(id -u)\u002Fwayland-0 \\\n-v \u002Frun\u002Fuser\u002F$(id -u):\u002Frun\u002Fuser\u002F$(id -u) \\\n-v $HOME:$HOME \\\n-w $HOME \\\ntungchiahui\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy\n",[457,44511,44512,44525,44534,44544,44556,44563,44570,44577,44587,44595,44604,44618,44630,44642,44651,44661,44670,44685,44718,44745,44756,44763],{"__ignoreMap":32},[460,44513,44514,44516,44518,44520,44523],{"class":462,"line":463},[460,44515,40989],{"class":929},[460,44517,42731],{"class":1353},[460,44519,43641],{"class":1353},[460,44521,44522],{"class":900}," --name=ros_opencv_cuda",[460,44524,41091],{"class":900},[460,44526,44527,44530,44532],{"class":462,"line":476},[460,44528,44529],{"class":466},"--gpus ",[460,44531,2130],{"class":1353},[460,44533,41091],{"class":900},[460,44535,44536,44539,44542],{"class":462,"line":482},[460,44537,44538],{"class":466},"-e ",[460,44540,44541],{"class":1353},"NVIDIA_DRIVER_CAPABILITIES=all",[460,44543,41091],{"class":900},[460,44545,44546,44548,44551,44554],{"class":462,"line":488},[460,44547,44538],{"class":466},[460,44549,44550],{"class":1353},"DISPLAY=",[460,44552,44553],{"class":466},"$DISPLAY ",[460,44555,42586],{"class":900},[460,44557,44558,44561],{"class":462,"line":494},[460,44559,44560],{"class":466},"-dit ",[460,44562,42586],{"class":900},[460,44564,44565,44568],{"class":462,"line":500},[460,44566,44567],{"class":466},"--privileged ",[460,44569,42586],{"class":900},[460,44571,44572,44575],{"class":462,"line":506},[460,44573,44574],{"class":466},"--net=host ",[460,44576,42586],{"class":900},[460,44578,44579,44582,44585],{"class":462,"line":512},[460,44580,44581],{"class":466},"--group-add ",[460,44583,44584],{"class":1353},"audio",[460,44586,41091],{"class":900},[460,44588,44589,44591,44593],{"class":462,"line":518},[460,44590,44581],{"class":466},[460,44592,16270],{"class":1353},[460,44594,41091],{"class":900},[460,44596,44597,44599,44602],{"class":462,"line":525},[460,44598,44581],{"class":466},[460,44600,44601],{"class":1353},"dialout",[460,44603,41091],{"class":900},[460,44605,44606,44608,44611,44613,44616],{"class":462,"line":531},[460,44607,44538],{"class":466},[460,44609,44610],{"class":1353},"XAUTHORITY=",[460,44612,44502],{"class":466},[460,44614,44615],{"class":1353},"\u002F.Xauthority",[460,44617,41091],{"class":900},[460,44619,44620,44622,44625,44628],{"class":462,"line":537},[460,44621,44538],{"class":466},[460,44623,44624],{"class":1353},"WAYLAND_DISPLAY=",[460,44626,44627],{"class":466},"$WAYLAND_DISPLAY ",[460,44629,42586],{"class":900},[460,44631,44632,44634,44637,44640],{"class":462,"line":543},[460,44633,44538],{"class":466},[460,44635,44636],{"class":1353},"XDG_RUNTIME_DIR=",[460,44638,44639],{"class":466},"$XDG_RUNTIME_DIR ",[460,44641,42586],{"class":900},[460,44643,44644,44646,44649],{"class":462,"line":549},[460,44645,44538],{"class":466},[460,44647,44648],{"class":1353},"QT_QPA_PLATFORM=xcb",[460,44650,41091],{"class":900},[460,44652,44653,44656,44659],{"class":462,"line":555},[460,44654,44655],{"class":466},"-v ",[460,44657,44658],{"class":1353},"\u002Ftmp\u002F.X11-unix:\u002Ftmp\u002F.X11-unix:rw",[460,44660,41091],{"class":900},[460,44662,44663,44665,44668],{"class":462,"line":560},[460,44664,44655],{"class":466},[460,44666,44667],{"class":1353},"\u002Fdev\u002Fdri:\u002Fdev\u002Fdri",[460,44669,41091],{"class":900},[460,44671,44672,44675,44678,44680,44683],{"class":462,"line":566},[460,44673,44674],{"class":466},"-v $HOME",[460,44676,44677],{"class":1353},"\u002F.Xauthority:",[460,44679,44502],{"class":466},[460,44681,44682],{"class":1353},"\u002F.Xauthority:ro",[460,44684,41091],{"class":900},[460,44686,44687,44689,44692,44694,44697,44700,44702,44705,44707,44709,44711,44713,44716],{"class":462,"line":572},[460,44688,44655],{"class":466},[460,44690,44691],{"class":1353},"\u002Frun\u002Fuser\u002F",[460,44693,41512],{"class":466},[460,44695,44696],{"class":929},"id",[460,44698,44699],{"class":900}," -u",[460,44701,8411],{"class":466},[460,44703,44704],{"class":1353},"\u002Fwayland-0:\u002Frun\u002Fuser\u002F",[460,44706,41512],{"class":466},[460,44708,44696],{"class":929},[460,44710,44699],{"class":900},[460,44712,8411],{"class":466},[460,44714,44715],{"class":1353},"\u002Fwayland-0",[460,44717,41091],{"class":900},[460,44719,44720,44722,44724,44726,44728,44730,44732,44735,44737,44739,44741,44743],{"class":462,"line":578},[460,44721,44655],{"class":466},[460,44723,44691],{"class":1353},[460,44725,41512],{"class":466},[460,44727,44696],{"class":929},[460,44729,44699],{"class":900},[460,44731,8411],{"class":466},[460,44733,44734],{"class":1353},":\u002Frun\u002Fuser\u002F",[460,44736,41512],{"class":466},[460,44738,44696],{"class":929},[460,44740,44699],{"class":900},[460,44742,8296],{"class":466},[460,44744,42586],{"class":900},[460,44746,44747,44749,44751,44754],{"class":462,"line":812},[460,44748,44674],{"class":466},[460,44750,1357],{"class":1353},[460,44752,44753],{"class":466},"$HOME ",[460,44755,42586],{"class":900},[460,44757,44758,44761],{"class":462,"line":818},[460,44759,44760],{"class":466},"-w $HOME ",[460,44762,42586],{"class":900},[460,44764,44765],{"class":462,"line":824},[460,44766,44767],{"class":466},"tungchiahui\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy\n",[14,44769,25511],{},[103,44771,44772,44780,44783,44786],{},[43,44773,44774,6464,44776,44779],{},[457,44775,44541],{},[457,44777,44778],{},"--gpus all","没有英伟达显卡请注释。",[43,44781,44782],{},"--name后面请自己为容器起名。",[43,44784,44785],{},"最后一行仓库名称请你自己找对应的镜像填上。",[43,44787,44788,44789,44794],{},"ROS1在Fedora发行版下会爆内存，需要添加上下面这个参数，如果你不是Fedora和ROS1,",[39966,44790,44791],{},[3944,44792,44793],{},"请不要加","。",[451,44796,44798],{"className":40235,"code":44797,"language":40237,"meta":32,"style":32},"--ulimit nofile=1024:524288 \\\n",[457,44799,44800],{"__ignoreMap":32},[460,44801,44802,44805,44808],{"class":462,"line":463},[460,44803,44804],{"class":929},"--ulimit",[460,44806,44807],{"class":1353}," nofile=1024:524288",[460,44809,41091],{"class":900},[14,44811,44812,44813,44818],{},"如果想用当前用户登陆容器,可以加上下面这几条,但非常非常",[39966,44814,44815],{},[3944,44816,44817],{},"不建议","**.**",[451,44820,44822],{"className":40235,"code":44821,"language":40237,"meta":32,"style":32},"--user $(id -u):$(id -g) \\\n-v \u002Fetc\u002Fpasswd:\u002Fetc\u002Fpasswd:ro \\\n-v \u002Fetc\u002Fgroup:\u002Fetc\u002Fgroup:ro \\\n",[457,44823,44824,44851,44860],{"__ignoreMap":32},[460,44825,44826,44829,44832,44834,44836,44838,44840,44842,44844,44847,44849],{"class":462,"line":463},[460,44827,44828],{"class":929},"--user",[460,44830,44831],{"class":466}," $(",[460,44833,44696],{"class":929},[460,44835,44699],{"class":900},[460,44837,8411],{"class":466},[460,44839,1357],{"class":1353},[460,44841,41512],{"class":466},[460,44843,44696],{"class":929},[460,44845,44846],{"class":900}," -g",[460,44848,8296],{"class":466},[460,44850,42586],{"class":900},[460,44852,44853,44855,44858],{"class":462,"line":476},[460,44854,44655],{"class":466},[460,44856,44857],{"class":1353},"\u002Fetc\u002Fpasswd:\u002Fetc\u002Fpasswd:ro",[460,44859,41091],{"class":900},[460,44861,44862,44864,44867],{"class":462,"line":482},[460,44863,44655],{"class":466},[460,44865,44866],{"class":1353},"\u002Fetc\u002Fgroup:\u002Fetc\u002Fgroup:ro",[460,44868,41091],{"class":900},[1944,44870,44871],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":32,"searchDepth":476,"depth":476,"links":44873},[44874,44875,44876],{"id":43874,"depth":482,"text":43875},{"id":43884,"depth":482,"text":43885},{"id":44295,"depth":482,"text":44298},{},"\u002Fwiki\u002F2025-11-10-docker\u002Fch5-docker",{"title":43866,"description":32},"wiki\u002F2025-11-10-Docker\u002Fch5-Docker命令学习","G0221wUbE2NPPL3_iqRgrDmGtdCFY_26n0BQpBEY1bQ",{"id":44883,"title":44884,"body":44885,"description":32,"extension":16683,"meta":46508,"navigation":521,"path":46509,"seo":46510,"stem":46511,"__hash__":46512},"wiki\u002Fwiki\u002F2025-11-10-Docker\u002Fch6-手动创建Docker镜像.md","6.手动创建Docker镜像",{"type":7,"value":44886,"toc":46503},[44887,44890,44894,44897,45119,45123,45127,45130,45236,45241,45244,45249,45252,45257,45260,45265,45268,45280,45283,45288,45295,45323,45330,45406,45411,45414,45437,45439,45514,45519,45522,45526,45534,45539,45544,45548,45559,45565,45568,45571,45595,45598,45601,45629,45632,45635,46100,46103,46108,46113,46117,46140,46145,46149,46153,46156,46159,46162,46189,46192,46195,46213,46216,46219,46241,46249,46254,46259,46263,46266,46269,46272,46275,46320,46323,46341,46344,46349,46352,46373,46376,46432,46435,46440,46444,46447,46454,46457,46460,46465,46468,46484,46487,46500],[10,44888,44884],{"id":44889},"_6手动创建docker镜像",[23,44891,44893],{"id":44892},"_61dockerfile","6.1.DockerFile",[14,44895,44896],{},"常用命令：",[16884,44898,44899,44910],{},[16887,44900,44901],{},[16890,44902,44903,44906,44908],{},[16893,44904,44905],{"align":40149},"指令",[16893,44907,42281],{"align":40149},[16893,44909,43903],{"align":40149},[16930,44911,44912,44922,44938,44949,44960,44971,44982,44993,45004,45018,45032,45043,45057,45068,45079,45093,45108],{},[16890,44913,44914,44916,44919],{},[16935,44915,43781],{"align":40149},[16935,44917,44918],{"align":40149},"指定基础镜像，是 Dockerfile 的起点",[16935,44920,44921],{"align":40149},"FROM ubuntu:22.04",[16890,44923,44924,44927,44930],{},[16935,44925,44926],{"align":40149},"LABEL",[16935,44928,44929],{"align":40149},"添加元数据（如作者、版本等）",[16935,44931,44932,44933,44937],{"align":40149},"LABEL maintainer=”",[2756,44934,44936],{"href":44935},"mailto:you@example.com","you@example.com","”",[16890,44939,44940,44943,44946],{},[16935,44941,44942],{"align":40149},"ENV",[16935,44944,44945],{"align":40149},"设置环境变量",[16935,44947,44948],{"align":40149},"ENV PORT=8080",[16890,44950,44951,44954,44957],{},[16935,44952,44953],{"align":40149},"ARG",[16935,44955,44956],{"align":40149},"构建参数，只在构建期间可用",[16935,44958,44959],{"align":40149},"ARG VERSION=1.0",[16890,44961,44962,44965,44968],{},[16935,44963,44964],{"align":40149},"RUN",[16935,44966,44967],{"align":40149},"构建镜像时运行命令",[16935,44969,44970],{"align":40149},"RUN apt-get update && apt-get install -y curl",[16890,44972,44973,44976,44979],{},[16935,44974,44975],{"align":40149},"COPY",[16935,44977,44978],{"align":40149},"复制文件到镜像中",[16935,44980,44981],{"align":40149},"COPY . \u002Fapp",[16890,44983,44984,44987,44990],{},[16935,44985,44986],{"align":40149},"ADD",[16935,44988,44989],{"align":40149},"类似 COPY，额外支持解压 .tar 文件或远程 URL（不推荐用于 URL）",[16935,44991,44992],{"align":40149},"ADD archive.tar.gz \u002Fdata\u002F",[16890,44994,44995,44998,45001],{},[16935,44996,44997],{"align":40149},"WORKDIR",[16935,44999,45000],{"align":40149},"设置工作目录",[16935,45002,45003],{"align":40149},"WORKDIR \u002Fopt",[16890,45005,45006,45009,45012],{},[16935,45007,45008],{"align":40149},"CMD",[16935,45010,45011],{"align":40149},"设置容器启动时默认命令（可被 docker run 覆盖）",[16935,45013,45014,45015],{"align":40149},"CMD ",[460,45016,45017],{},"“node”, “index.js”",[16890,45019,45020,45023,45026],{},[16935,45021,45022],{"align":40149},"ENTRYPOINT",[16935,45024,45025],{"align":40149},"设置容器启动时固定命令（通常用于 CLI 工具等）",[16935,45027,45028,45029],{"align":40149},"ENTRYPOINT ",[460,45030,45031],{},"“python3”",[16890,45033,45034,45037,45040],{},[16935,45035,45036],{"align":40149},"EXPOSE",[16935,45038,45039],{"align":40149},"声明镜像内服务监听的端口（不会自动映射）",[16935,45041,45042],{"align":40149},"EXPOSE 80",[16890,45044,45045,45048,45051],{},[16935,45046,45047],{"align":40149},"VOLUME",[16935,45049,45050],{"align":40149},"声明数据卷挂载点",[16935,45052,45053,45054],{"align":40149},"VOLUME ",[460,45055,45056],{},"“\u002Fdata”",[16890,45058,45059,45062,45065],{},[16935,45060,45061],{"align":40149},"USER",[16935,45063,45064],{"align":40149},"设置后续命令执行的用户",[16935,45066,45067],{"align":40149},"USER appuser",[16890,45069,45070,45073,45076],{},[16935,45071,45072],{"align":40149},"ONBUILD",[16935,45074,45075],{"align":40149},"当镜像作为其他镜像基础镜像时触发的构建指令",[16935,45077,45078],{"align":40149},"ONBUILD COPY . \u002Fsrc",[16890,45080,45081,45084,45087],{},[16935,45082,45083],{"align":40149},"SHELL",[16935,45085,45086],{"align":40149},"更改默认 shell，比如将 sh -c 改为 bash -c",[16935,45088,45089,45090],{"align":40149},"SHELL ",[460,45091,45092],{},"“\u002Fbin\u002Fbash”, “-c”",[16890,45094,45095,45098,45101],{},[16935,45096,45097],{"align":40149},"HEALTHCHECK",[16935,45099,45100],{"align":40149},"定义容器运行时的健康检查命令",[16935,45102,45103,45104],{"align":40149},"`HEALTHCHECK CMD curl –fail ",[2756,45105,45106],{"href":45106,"rel":45107},"http:\u002F\u002Flocalhost:8080",[4943],[16890,45109,45110,45113,45116],{},[16935,45111,45112],{"align":40149},"STOPSIGNAL",[16935,45114,45115],{"align":40149},"容器停止时发送的信号",[16935,45117,45118],{"align":40149},"STOPSIGNAL SIGKILL",[23,45120,45122],{"id":45121},"_62自己创建容器","6.2.自己创建容器",[115,45124,45126],{"id":45125},"_621手动创建","6.2.1.手动创建",[14,45128,45129],{},"在x86电脑上编译x86的：",[451,45131,45133],{"className":40235,"code":45132,"language":40237,"meta":32,"style":32},"docker build -t ros-melodic-cuda118-cudnn8-bionic:latest .\n\ndocker build -t ros-noetic-focal:latest .\n\ndocker build -t ros-humble-jammy:latest .\n\ndocker build -t ros-jazzy-noble:latest .\n\ndocker build -t ros-humble-opencv411-cuda128-cudnn970-jammy:latest .\n\ndocker build -t ros-jazzy-opencv411-cuda128-cudnn970-noble:latest .\n",[457,45134,45135,45151,45155,45168,45172,45185,45189,45202,45206,45219,45223],{"__ignoreMap":32},[460,45136,45137,45139,45142,45145,45148],{"class":462,"line":463},[460,45138,42964],{"class":929},[460,45140,45141],{"class":1353}," build",[460,45143,45144],{"class":900}," -t",[460,45146,45147],{"class":1353}," ros-melodic-cuda118-cudnn8-bionic:latest",[460,45149,45150],{"class":1353}," .\n",[460,45152,45153],{"class":462,"line":476},[460,45154,522],{"emptyLinePlaceholder":521},[460,45156,45157,45159,45161,45163,45166],{"class":462,"line":482},[460,45158,42964],{"class":929},[460,45160,45141],{"class":1353},[460,45162,45144],{"class":900},[460,45164,45165],{"class":1353}," ros-noetic-focal:latest",[460,45167,45150],{"class":1353},[460,45169,45170],{"class":462,"line":488},[460,45171,522],{"emptyLinePlaceholder":521},[460,45173,45174,45176,45178,45180,45183],{"class":462,"line":494},[460,45175,42964],{"class":929},[460,45177,45141],{"class":1353},[460,45179,45144],{"class":900},[460,45181,45182],{"class":1353}," ros-humble-jammy:latest",[460,45184,45150],{"class":1353},[460,45186,45187],{"class":462,"line":500},[460,45188,522],{"emptyLinePlaceholder":521},[460,45190,45191,45193,45195,45197,45200],{"class":462,"line":506},[460,45192,42964],{"class":929},[460,45194,45141],{"class":1353},[460,45196,45144],{"class":900},[460,45198,45199],{"class":1353}," ros-jazzy-noble:latest",[460,45201,45150],{"class":1353},[460,45203,45204],{"class":462,"line":512},[460,45205,522],{"emptyLinePlaceholder":521},[460,45207,45208,45210,45212,45214,45217],{"class":462,"line":518},[460,45209,42964],{"class":929},[460,45211,45141],{"class":1353},[460,45213,45144],{"class":900},[460,45215,45216],{"class":1353}," ros-humble-opencv411-cuda128-cudnn970-jammy:latest",[460,45218,45150],{"class":1353},[460,45220,45221],{"class":462,"line":525},[460,45222,522],{"emptyLinePlaceholder":521},[460,45224,45225,45227,45229,45231,45234],{"class":462,"line":531},[460,45226,42964],{"class":929},[460,45228,45141],{"class":1353},[460,45230,45144],{"class":900},[460,45232,45233],{"class":1353}," ros-jazzy-opencv411-cuda128-cudnn970-noble:latest",[460,45235,45150],{"class":1353},[14,45237,45238],{},[30,45239],{"alt":32,"src":45240},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-011.png",[14,45242,45243],{},"镜像大小5GB(压缩后的大小详见DockerHub)",[14,45245,45246],{},[30,45247],{"alt":32,"src":45248},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-012.png",[14,45250,45251],{},"将 Docker 镜像推送到 Docker Hub 的步骤如下：",[103,45253,45254],{},[43,45255,45256],{},"创建 Docker Hub 账户",[14,45258,45259],{},"如果你还没有 Docker Hub 账户，请前往 Docker Hub 注册一个免费账户。",[103,45261,45262],{"start":476},[43,45263,45264],{},"登录 Docker Hub",[14,45266,45267],{},"在终端中使用以下命令登录到你的 Docker Hub 账户：",[451,45269,45271],{"className":40235,"code":45270,"language":40237,"meta":32,"style":32},"docker login\n",[457,45272,45273],{"__ignoreMap":32},[460,45274,45275,45277],{"class":462,"line":463},[460,45276,42964],{"class":929},[460,45278,45279],{"class":1353}," login\n",[14,45281,45282],{},"输入你的 Docker Hub 用户名和密码进行验证。",[103,45284,45285],{},[43,45286,45287],{},"为你的镜像打标签",[14,45289,45290,45291,45294],{},"Docker Hub 使用 ",[457,45292,45293],{},"\u003C用户名>\u002F\u003C镜像名>:\u003C标签>"," 的格式来标识镜像。你需要为你的镜像打上标签，以便能够推送到 Docker Hub。使用以下命令：",[451,45296,45298],{"className":40235,"code":45297,"language":40237,"meta":32,"style":32},"docker tag ros-jazzy-noble:latest \u003C你的用户名>\u002Fros-jazzy-noble:latest\n",[457,45299,45300],{"__ignoreMap":32},[460,45301,45302,45304,45307,45309,45312,45315,45318,45320],{"class":462,"line":463},[460,45303,42964],{"class":929},[460,45305,45306],{"class":1353}," tag",[460,45308,45199],{"class":1353},[460,45310,45311],{"class":887}," \u003C",[460,45313,45314],{"class":1353},"你的用户",[460,45316,45317],{"class":466},"名",[460,45319,17668],{"class":887},[460,45321,45322],{"class":1353},"\u002Fros-jazzy-noble:latest\n",[14,45324,45325,45326,45329],{},"例如，如果你的 Docker Hub 用户名是 ",[457,45327,45328],{},"tungchiahui","，你应该执行：",[451,45331,45333],{"className":40235,"code":45332,"language":40237,"meta":32,"style":32},"docker tag ros-noetic-focal:latest tungchiahui\u002Fros-noetic-focal:latest\n\ndocker tag ros-humble-jammy:latest tungchiahui\u002Fros-humble-jammy:latest\n\ndocker tag ros-jazzy-noble:latest tungchiahui\u002Fros-jazzy-noble:latest\n\ndocker tag ros-humble-opencv411-cuda128-cudnn970-jammy:latest \u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n\ndocker tag ros-jazzy-opencv411-cuda128-cudnn970-noble:latest tungchiahui\u002Fros-jazzy-opencv411-cuda128-cudnn970-noble:latest\n",[457,45334,45335,45346,45350,45361,45365,45376,45380,45391,45395],{"__ignoreMap":32},[460,45336,45337,45339,45341,45343],{"class":462,"line":463},[460,45338,42964],{"class":929},[460,45340,45306],{"class":1353},[460,45342,45165],{"class":1353},[460,45344,45345],{"class":1353}," tungchiahui\u002Fros-noetic-focal:latest\n",[460,45347,45348],{"class":462,"line":476},[460,45349,522],{"emptyLinePlaceholder":521},[460,45351,45352,45354,45356,45358],{"class":462,"line":482},[460,45353,42964],{"class":929},[460,45355,45306],{"class":1353},[460,45357,45182],{"class":1353},[460,45359,45360],{"class":1353}," tungchiahui\u002Fros-humble-jammy:latest\n",[460,45362,45363],{"class":462,"line":488},[460,45364,522],{"emptyLinePlaceholder":521},[460,45366,45367,45369,45371,45373],{"class":462,"line":494},[460,45368,42964],{"class":929},[460,45370,45306],{"class":1353},[460,45372,45199],{"class":1353},[460,45374,45375],{"class":1353}," tungchiahui\u002Fros-jazzy-noble:latest\n",[460,45377,45378],{"class":462,"line":500},[460,45379,522],{"emptyLinePlaceholder":521},[460,45381,45382,45384,45386,45388],{"class":462,"line":506},[460,45383,42964],{"class":929},[460,45385,45306],{"class":1353},[460,45387,45216],{"class":1353},[460,45389,45390],{"class":1353}," \u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n",[460,45392,45393],{"class":462,"line":512},[460,45394,522],{"emptyLinePlaceholder":521},[460,45396,45397,45399,45401,45403],{"class":462,"line":518},[460,45398,42964],{"class":929},[460,45400,45306],{"class":1353},[460,45402,45233],{"class":1353},[460,45404,45405],{"class":1353}," tungchiahui\u002Fros-jazzy-opencv411-cuda128-cudnn970-noble:latest\n",[103,45407,45408],{"start":476},[43,45409,45410],{},"推送镜像到 Docker Hub",[14,45412,45413],{},"使用以下命令将镜像推送到 Docker Hub：",[451,45415,45417],{"className":40235,"code":45416,"language":40237,"meta":32,"style":32},"docker push \u003C你的用户名>\u002Fros-noetic-jazzy-noble:latest\n",[457,45418,45419],{"__ignoreMap":32},[460,45420,45421,45423,45426,45428,45430,45432,45434],{"class":462,"line":463},[460,45422,42964],{"class":929},[460,45424,45425],{"class":1353}," push",[460,45427,45311],{"class":887},[460,45429,45314],{"class":1353},[460,45431,45317],{"class":466},[460,45433,17668],{"class":887},[460,45435,45436],{"class":1353},"\u002Fros-noetic-jazzy-noble:latest\n",[14,45438,31087],{},[451,45440,45442],{"className":40235,"code":45441,"language":40237,"meta":32,"style":32},"docker push tungchiahui\u002Fros-noetic-focal:latest\n\ndocker push tungchiahui\u002Fros-humble-jammy:latest\n\ndocker push tungchiahui\u002Fros-jazzy-noble:latest\n\ndocker push tungchiahui\u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n\ndocker push tungchiahui\u002Fros-jazzy-opencv411-cuda128-cudnn970-noble:latest\n\ndocker push tungchiahui\u002Fros-noetic-focal-arm64:latest\n",[457,45443,45444,45452,45456,45464,45468,45476,45480,45489,45493,45501,45505],{"__ignoreMap":32},[460,45445,45446,45448,45450],{"class":462,"line":463},[460,45447,42964],{"class":929},[460,45449,45425],{"class":1353},[460,45451,45345],{"class":1353},[460,45453,45454],{"class":462,"line":476},[460,45455,522],{"emptyLinePlaceholder":521},[460,45457,45458,45460,45462],{"class":462,"line":482},[460,45459,42964],{"class":929},[460,45461,45425],{"class":1353},[460,45463,45360],{"class":1353},[460,45465,45466],{"class":462,"line":488},[460,45467,522],{"emptyLinePlaceholder":521},[460,45469,45470,45472,45474],{"class":462,"line":494},[460,45471,42964],{"class":929},[460,45473,45425],{"class":1353},[460,45475,45375],{"class":1353},[460,45477,45478],{"class":462,"line":500},[460,45479,522],{"emptyLinePlaceholder":521},[460,45481,45482,45484,45486],{"class":462,"line":506},[460,45483,42964],{"class":929},[460,45485,45425],{"class":1353},[460,45487,45488],{"class":1353}," tungchiahui\u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n",[460,45490,45491],{"class":462,"line":512},[460,45492,522],{"emptyLinePlaceholder":521},[460,45494,45495,45497,45499],{"class":462,"line":518},[460,45496,42964],{"class":929},[460,45498,45425],{"class":1353},[460,45500,45405],{"class":1353},[460,45502,45503],{"class":462,"line":525},[460,45504,522],{"emptyLinePlaceholder":521},[460,45506,45507,45509,45511],{"class":462,"line":531},[460,45508,42964],{"class":929},[460,45510,45425],{"class":1353},[460,45512,45513],{"class":1353}," tungchiahui\u002Fros-noetic-focal-arm64:latest\n",[103,45515,45516],{"start":482},[43,45517,45518],{},"验证推送成功",[14,45520,45521],{},"你可以通过访问 Docker Hub 的个人页面来验证你的镜像是否已成功推送",[14,45523,45524],{},[3944,45525,20302],{},[40,45527,45528,45531],{},[43,45529,45530],{},"确保你的镜像大小在 Docker Hub 的限制范围内（一般为 10GB）",[43,45532,45533],{},"如果你打算将镜像公开，可以设置为公共仓库；如果希望只有你自己可以访问，可以设置为私有仓库",[14,45535,45536],{},[30,45537],{"alt":32,"src":45538},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-013.png",[14,45540,45541],{},[30,45542],{"alt":32,"src":45543},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-014.png",[115,45545,45547],{"id":45546},"_622手动创建跨平台多架构构建","6.2.2.手动创建(跨平台多架构构建)",[14,45549,45550,45551,45554,45555,45558],{},"如果您想在 ",[3944,45552,45553],{},"x86\u002Fx64 电脑上即为本机x86设备构建镜像，又想为树莓派、Jetson等ARM64 设备构建 Docker 镜像"," ，需要使用 ",[3944,45556,45557],{},"Docker 的跨平台构建功能"," 。以下是完整解决方案：",[14,45560,45561,45562],{},"1. ",[3944,45563,45564],{},"启用 Docker 跨平台构建",[14,45566,45567],{},"在 x86 主机上模拟 ARM64 环境需要以下工具：",[14,45569,45570],{},"第一步：启用 buildx（只需执行一次）",[451,45572,45574],{"className":40235,"code":45573,"language":40237,"meta":32,"style":32},"docker buildx create --name multiarch_builder --use\n",[457,45575,45576],{"__ignoreMap":32},[460,45577,45578,45580,45583,45586,45589,45592],{"class":462,"line":463},[460,45579,42964],{"class":929},[460,45581,45582],{"class":1353}," buildx",[460,45584,45585],{"class":1353}," create",[460,45587,45588],{"class":900}," --name",[460,45590,45591],{"class":1353}," multiarch_builder",[460,45593,45594],{"class":900}," --use\n",[14,45596,45597],{},"这会创建并启用一个支持多架构构建的 builder，电脑重启后也依然存在，所以只用运行一次。",[14,45599,45600],{},"第二步：安装 QEMU 支持（一般新版 Docker Desktop 已自带，但是Linux必须要安装） 如果你用的是服务器或Linux发行版，确保有 qemu 模拟器：",[451,45602,45604],{"className":40235,"code":45603,"language":40237,"meta":32,"style":32},"docker run --rm --privileged multiarch\u002Fqemu-user-static --reset -p yes\n",[457,45605,45606],{"__ignoreMap":32},[460,45607,45608,45610,45612,45614,45617,45620,45623,45626],{"class":462,"line":463},[460,45609,42964],{"class":929},[460,45611,43641],{"class":1353},[460,45613,43644],{"class":900},[460,45615,45616],{"class":900}," --privileged",[460,45618,45619],{"class":1353}," multiarch\u002Fqemu-user-static",[460,45621,45622],{"class":900}," --reset",[460,45624,45625],{"class":900}," -p",[460,45627,45628],{"class":1353}," yes\n",[14,45630,45631],{},"电脑重启后，就会消失，所以需要你每次电脑重启后，在buildx命令前，运行一次该命令即可。",[14,45633,45634],{},"第三步：构建多架构镜像 用下面的命令构建 amd64 和 arm64：",[451,45636,45638],{"className":40235,"code":45637,"language":40237,"meta":32,"style":32},"docker buildx build --platform linux\u002Famd64,linux\u002Farm64 -t \u003C你的镜像名>:\u003C标签> --push .\n\n# 例子：\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros:noetic-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros:humble-jammy \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros:jazzy-noble \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fopencv:411-cuda128-cudnn970-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fopencv:411-cuda128-cudnn971-jammy \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fopencv:411-cuda128-cudnn971-noble \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros-opencv:noetic-411-cuda128-cudnn970-focal \\\n --push \\\n .\n\ndocker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t cherish\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy \\\n --push \\\n .\n\n docker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t tungchiahui\u002Fros-opencv:jazzy-411-cuda128-cudnn970-noble \\\n --push \\\n .\n\n  docker buildx build \\\n--platform linux\u002Famd64,linux\u002Farm64 \\\n -t sdutvincirobot\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy \\\n --push \\\n .\n",[457,45639,45640,45682,45686,45691,45701,45711,45720,45726,45730,45734,45744,45752,45761,45767,45771,45775,45785,45793,45802,45808,45812,45816,45826,45834,45843,45849,45853,45857,45867,45875,45884,45890,45894,45898,45908,45916,45925,45931,45935,45939,45949,45957,45966,45972,45976,45980,45990,45998,46007,46013,46017,46021,46031,46039,46048,46054,46058,46062,46073,46081,46090,46096],{"__ignoreMap":32},[460,45641,45642,45644,45646,45648,45651,45654,45656,45658,45661,45663,45665,45667,45669,45672,45675,45677,45680],{"class":462,"line":463},[460,45643,42964],{"class":929},[460,45645,45582],{"class":1353},[460,45647,45141],{"class":1353},[460,45649,45650],{"class":900}," --platform",[460,45652,45653],{"class":1353}," linux\u002Famd64,linux\u002Farm64",[460,45655,45144],{"class":900},[460,45657,45311],{"class":887},[460,45659,45660],{"class":1353},"你的镜像",[460,45662,45317],{"class":466},[460,45664,17668],{"class":887},[460,45666,1357],{"class":1353},[460,45668,781],{"class":887},[460,45670,45671],{"class":1353},"标",[460,45673,45674],{"class":466},"签",[460,45676,17668],{"class":887},[460,45678,45679],{"class":900}," --push",[460,45681,45150],{"class":1353},[460,45683,45684],{"class":462,"line":476},[460,45685,522],{"emptyLinePlaceholder":521},[460,45687,45688],{"class":462,"line":482},[460,45689,45690],{"class":942},"# 例子：\n",[460,45692,45693,45695,45697,45699],{"class":462,"line":488},[460,45694,42964],{"class":929},[460,45696,45582],{"class":1353},[460,45698,45141],{"class":1353},[460,45700,41091],{"class":900},[460,45702,45703,45706,45709],{"class":462,"line":494},[460,45704,45705],{"class":466},"--platform ",[460,45707,45708],{"class":1353},"linux\u002Famd64,linux\u002Farm64",[460,45710,41091],{"class":900},[460,45712,45713,45715,45718],{"class":462,"line":500},[460,45714,45144],{"class":900},[460,45716,45717],{"class":1353}," tungchiahui\u002Fros:noetic-focal",[460,45719,41091],{"class":900},[460,45721,45722,45724],{"class":462,"line":506},[460,45723,45679],{"class":900},[460,45725,41091],{"class":900},[460,45727,45728],{"class":462,"line":512},[460,45729,45150],{"class":1353},[460,45731,45732],{"class":462,"line":518},[460,45733,522],{"emptyLinePlaceholder":521},[460,45735,45736,45738,45740,45742],{"class":462,"line":525},[460,45737,42964],{"class":929},[460,45739,45582],{"class":1353},[460,45741,45141],{"class":1353},[460,45743,41091],{"class":900},[460,45745,45746,45748,45750],{"class":462,"line":531},[460,45747,45705],{"class":466},[460,45749,45708],{"class":1353},[460,45751,41091],{"class":900},[460,45753,45754,45756,45759],{"class":462,"line":537},[460,45755,45144],{"class":900},[460,45757,45758],{"class":1353}," tungchiahui\u002Fros:humble-jammy",[460,45760,41091],{"class":900},[460,45762,45763,45765],{"class":462,"line":543},[460,45764,45679],{"class":900},[460,45766,41091],{"class":900},[460,45768,45769],{"class":462,"line":549},[460,45770,45150],{"class":1353},[460,45772,45773],{"class":462,"line":555},[460,45774,522],{"emptyLinePlaceholder":521},[460,45776,45777,45779,45781,45783],{"class":462,"line":560},[460,45778,42964],{"class":929},[460,45780,45582],{"class":1353},[460,45782,45141],{"class":1353},[460,45784,41091],{"class":900},[460,45786,45787,45789,45791],{"class":462,"line":566},[460,45788,45705],{"class":466},[460,45790,45708],{"class":1353},[460,45792,41091],{"class":900},[460,45794,45795,45797,45800],{"class":462,"line":572},[460,45796,45144],{"class":900},[460,45798,45799],{"class":1353}," tungchiahui\u002Fros:jazzy-noble",[460,45801,41091],{"class":900},[460,45803,45804,45806],{"class":462,"line":578},[460,45805,45679],{"class":900},[460,45807,41091],{"class":900},[460,45809,45810],{"class":462,"line":812},[460,45811,45150],{"class":1353},[460,45813,45814],{"class":462,"line":818},[460,45815,522],{"emptyLinePlaceholder":521},[460,45817,45818,45820,45822,45824],{"class":462,"line":824},[460,45819,42731],{"class":929},[460,45821,45582],{"class":1353},[460,45823,45141],{"class":1353},[460,45825,41091],{"class":900},[460,45827,45828,45830,45832],{"class":462,"line":2074},[460,45829,45705],{"class":466},[460,45831,45708],{"class":1353},[460,45833,41091],{"class":900},[460,45835,45836,45838,45841],{"class":462,"line":2088},[460,45837,45144],{"class":900},[460,45839,45840],{"class":1353}," tungchiahui\u002Fopencv:411-cuda128-cudnn970-focal",[460,45842,41091],{"class":900},[460,45844,45845,45847],{"class":462,"line":2103},[460,45846,45679],{"class":900},[460,45848,41091],{"class":900},[460,45850,45851],{"class":462,"line":2122},[460,45852,45150],{"class":1353},[460,45854,45855],{"class":462,"line":2144},[460,45856,522],{"emptyLinePlaceholder":521},[460,45858,45859,45861,45863,45865],{"class":462,"line":2158},[460,45860,42964],{"class":929},[460,45862,45582],{"class":1353},[460,45864,45141],{"class":1353},[460,45866,41091],{"class":900},[460,45868,45869,45871,45873],{"class":462,"line":2163},[460,45870,45705],{"class":466},[460,45872,45708],{"class":1353},[460,45874,41091],{"class":900},[460,45876,45877,45879,45882],{"class":462,"line":2168},[460,45878,45144],{"class":900},[460,45880,45881],{"class":1353}," tungchiahui\u002Fopencv:411-cuda128-cudnn971-jammy",[460,45883,41091],{"class":900},[460,45885,45886,45888],{"class":462,"line":2183},[460,45887,45679],{"class":900},[460,45889,41091],{"class":900},[460,45891,45892],{"class":462,"line":2194},[460,45893,45150],{"class":1353},[460,45895,45896],{"class":462,"line":2199},[460,45897,522],{"emptyLinePlaceholder":521},[460,45899,45900,45902,45904,45906],{"class":462,"line":2204},[460,45901,42731],{"class":929},[460,45903,45582],{"class":1353},[460,45905,45141],{"class":1353},[460,45907,41091],{"class":900},[460,45909,45910,45912,45914],{"class":462,"line":2212},[460,45911,45705],{"class":466},[460,45913,45708],{"class":1353},[460,45915,41091],{"class":900},[460,45917,45918,45920,45923],{"class":462,"line":2257},[460,45919,45144],{"class":900},[460,45921,45922],{"class":1353}," tungchiahui\u002Fopencv:411-cuda128-cudnn971-noble",[460,45924,41091],{"class":900},[460,45926,45927,45929],{"class":462,"line":2285},[460,45928,45679],{"class":900},[460,45930,41091],{"class":900},[460,45932,45933],{"class":462,"line":2298},[460,45934,45150],{"class":1353},[460,45936,45937],{"class":462,"line":2303},[460,45938,522],{"emptyLinePlaceholder":521},[460,45940,45941,45943,45945,45947],{"class":462,"line":2308},[460,45942,42964],{"class":929},[460,45944,45582],{"class":1353},[460,45946,45141],{"class":1353},[460,45948,41091],{"class":900},[460,45950,45951,45953,45955],{"class":462,"line":2318},[460,45952,45705],{"class":466},[460,45954,45708],{"class":1353},[460,45956,41091],{"class":900},[460,45958,45959,45961,45964],{"class":462,"line":2333},[460,45960,45144],{"class":900},[460,45962,45963],{"class":1353}," tungchiahui\u002Fros-opencv:noetic-411-cuda128-cudnn970-focal",[460,45965,41091],{"class":900},[460,45967,45968,45970],{"class":462,"line":2338},[460,45969,45679],{"class":900},[460,45971,41091],{"class":900},[460,45973,45974],{"class":462,"line":2343},[460,45975,45150],{"class":1353},[460,45977,45978],{"class":462,"line":2353},[460,45979,522],{"emptyLinePlaceholder":521},[460,45981,45982,45984,45986,45988],{"class":462,"line":2368},[460,45983,42964],{"class":929},[460,45985,45582],{"class":1353},[460,45987,45141],{"class":1353},[460,45989,41091],{"class":900},[460,45991,45992,45994,45996],{"class":462,"line":2381},[460,45993,45705],{"class":466},[460,45995,45708],{"class":1353},[460,45997,41091],{"class":900},[460,45999,46000,46002,46005],{"class":462,"line":2394},[460,46001,45144],{"class":900},[460,46003,46004],{"class":1353}," cherish\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy",[460,46006,41091],{"class":900},[460,46008,46009,46011],{"class":462,"line":2399},[460,46010,45679],{"class":900},[460,46012,41091],{"class":900},[460,46014,46015],{"class":462,"line":2404},[460,46016,45150],{"class":1353},[460,46018,46019],{"class":462,"line":2414},[460,46020,522],{"emptyLinePlaceholder":521},[460,46022,46023,46025,46027,46029],{"class":462,"line":2428},[460,46024,42731],{"class":929},[460,46026,45582],{"class":1353},[460,46028,45141],{"class":1353},[460,46030,41091],{"class":900},[460,46032,46033,46035,46037],{"class":462,"line":2440},[460,46034,45705],{"class":466},[460,46036,45708],{"class":1353},[460,46038,41091],{"class":900},[460,46040,46041,46043,46046],{"class":462,"line":2445},[460,46042,45144],{"class":900},[460,46044,46045],{"class":1353}," tungchiahui\u002Fros-opencv:jazzy-411-cuda128-cudnn970-noble",[460,46047,41091],{"class":900},[460,46049,46050,46052],{"class":462,"line":2450},[460,46051,45679],{"class":900},[460,46053,41091],{"class":900},[460,46055,46056],{"class":462,"line":2460},[460,46057,45150],{"class":1353},[460,46059,46060],{"class":462,"line":2473},[460,46061,522],{"emptyLinePlaceholder":521},[460,46063,46064,46067,46069,46071],{"class":462,"line":2487},[460,46065,46066],{"class":929},"  docker",[460,46068,45582],{"class":1353},[460,46070,45141],{"class":1353},[460,46072,41091],{"class":900},[460,46074,46075,46077,46079],{"class":462,"line":2492},[460,46076,45705],{"class":466},[460,46078,45708],{"class":1353},[460,46080,41091],{"class":900},[460,46082,46083,46085,46088],{"class":462,"line":2497},[460,46084,45144],{"class":900},[460,46086,46087],{"class":1353}," sdutvincirobot\u002Fros-opencv:humble-411-cuda128-cudnn970-jammy",[460,46089,41091],{"class":900},[460,46091,46092,46094],{"class":462,"line":2505},[460,46093,45679],{"class":900},[460,46095,41091],{"class":900},[460,46097,46098],{"class":462,"line":2516},[460,46099,45150],{"class":1353},[14,46101,46102],{},"说明： –platform 指定多架构。 –push 是必须的，因为 buildx 的多平台构建默认是不能本地加载的（除非加 –load，但那只能支持单一架构）",[14,46104,46105],{},[30,46106],{"alt":32,"src":46107},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-015.png",[14,46109,46110],{},[30,46111],{"alt":32,"src":46112},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-016.png",[115,46114,46116],{"id":46115},"_623清除构建缓存","6.2.3.清除构建缓存",[451,46118,46120],{"className":40235,"code":46119,"language":40237,"meta":32,"style":32},"# 清理BuildKit构建缓存\ndocker builder prune -f  \n",[457,46121,46122,46127],{"__ignoreMap":32},[460,46123,46124],{"class":462,"line":463},[460,46125,46126],{"class":942},"# 清理BuildKit构建缓存\n",[460,46128,46129,46131,46134,46137],{"class":462,"line":476},[460,46130,42964],{"class":929},[460,46132,46133],{"class":1353}," builder",[460,46135,46136],{"class":1353}," prune",[460,46138,46139],{"class":900}," -f\n",[14,46141,46142],{},[30,46143],{"alt":32,"src":46144},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-017.png",[23,46146,46148],{"id":46147},"_63补充","6.3.补充",[115,46150,46152],{"id":46151},"_631使用dockfile构建docker镜像","6.3.1.使用Dockfile构建Docker镜像",[14,46154,46155],{},"Dockerfile是一个文本文件，其中包含了若干条指令，指令描述了构建镜像的细节",[14,46157,46158],{},"先来编写一个最简单的Dockerfile，以前文下载的Nginx镜像为例，来编写一个Dockerfile修改该Nginx镜像的首页",[14,46160,46161],{},"1、新建一个空文件夹docker-demo，在里面再新建文件夹app，在app目录下新建一个名为Dockerfile的文件，在里面增加如下内容（vim Dockerfile）：",[451,46163,46165],{"className":40235,"code":46164,"language":40237,"meta":32,"style":32},"FROM nginx\nRUN echo '\u003Ch1>This is Tuling Nginx!!!\u003C\u002Fh1>' > \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\u002Findex.html\n",[457,46166,46167,46174],{"__ignoreMap":32},[460,46168,46169,46171],{"class":462,"line":463},[460,46170,43781],{"class":929},[460,46172,46173],{"class":1353}," nginx\n",[460,46175,46176,46178,46181,46184,46186],{"class":462,"line":476},[460,46177,44964],{"class":929},[460,46179,46180],{"class":1353}," echo",[460,46182,46183],{"class":1353}," '\u003Ch1>This is Tuling Nginx!!!\u003C\u002Fh1>'",[460,46185,42633],{"class":887},[460,46187,46188],{"class":1353}," \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\u002Findex.html\n",[14,46190,46191],{},"该Dockerfile非常简单，其中的 FROM、 RUN都是 Dockerfile的指令。 FROM指令用于指定基础镜像， RUN指令用于执行命令",[14,46193,46194],{},"2、在Dockerfile所在路径执行以下命令构建镜像：",[451,46196,46198],{"className":40235,"code":46197,"language":40237,"meta":32,"style":32},"docker build -t nginx:tuling .\n",[457,46199,46200],{"__ignoreMap":32},[460,46201,46202,46204,46206,46208,46211],{"class":462,"line":463},[460,46203,42964],{"class":929},[460,46205,45141],{"class":1353},[460,46207,45144],{"class":900},[460,46209,46210],{"class":1353}," nginx:tuling",[460,46212,45150],{"class":1353},[14,46214,46215],{},"其中，-t指定镜像名字，命令最后的点（.）表示Dockerfile文件所在路径",[14,46217,46218],{},"3、执行以下命令，即可使用该镜像启动一个 Docker容器",[451,46220,46222],{"className":40235,"code":46221,"language":40237,"meta":32,"style":32},"docker run -d -p 92:80 nginx:tuling\n",[457,46223,46224],{"__ignoreMap":32},[460,46225,46226,46228,46230,46233,46235,46238],{"class":462,"line":463},[460,46227,42964],{"class":929},[460,46229,43641],{"class":1353},[460,46231,46232],{"class":900}," -d",[460,46234,45625],{"class":900},[460,46236,46237],{"class":1353}," 92:80",[460,46239,46240],{"class":1353}," nginx:tuling\n",[14,46242,46243,46244],{},"4、访问 ",[2756,46245,46248],{"href":46246,"rel":46247},"http:\u002F\u002FDocker%E5%AE%BF%E4%B8%BB%E6%9C%BAIP:92\u002F%EF%BC%8C%E5%8F%AF%E7%9C%8B%E5%88%B0%E4%B8%8B%E5%9B%BE%E6%89%80%E7%A4%BA%E7%95%8C%E9%9D%A2",[4943],"http:\u002F\u002FDocker宿主机IP:92\u002F，可看到下图所示界面",[14,46250,46251],{},[30,46252],{"alt":32,"src":46253},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-018.png",[14,46255,46256],{},[30,46257],{"alt":32,"src":46258},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-019.png",[115,46260,46262],{"id":46261},"_632使用dockerfile构建微服务镜像","6.3.2.使用Dockerfile构建微服务镜像",[14,46264,46265],{},"只需要知道大体流程即可",[14,46267,46268],{},"以项目tulingmall-member为例，将该微服务的可运行jar包构建成docker镜像",[14,46270,46271],{},"1、将jar包上传linux服务器\u002Froot\u002Ftulingmall\u002Ftulingmall-member目录，在jar包所在目录创建名为Dockerfile的文件",[14,46273,46274],{},"2、在Dockerfile中添加以下内容",[451,46276,46278],{"className":42502,"code":46277,"language":42504,"meta":32,"style":32},"# 基于哪个镜像\nFrom java:8\n# 复制文件到容器\nADD tulingmall-member-0.0.5.jar \u002Ftulingmall-member-0.0.5.jar\n# 声明需要暴露的端口\nEXPOSE 8877\n# 配置容器启动后执行的命令\nENTRYPOINT java ${JAVA_OPTS} -jar \u002Ftulingmall-member-0.0.5.jar\n",[457,46279,46280,46285,46290,46295,46300,46305,46310,46315],{"__ignoreMap":32},[460,46281,46282],{"class":462,"line":463},[460,46283,46284],{},"# 基于哪个镜像\n",[460,46286,46287],{"class":462,"line":476},[460,46288,46289],{},"From java:8\n",[460,46291,46292],{"class":462,"line":482},[460,46293,46294],{},"# 复制文件到容器\n",[460,46296,46297],{"class":462,"line":488},[460,46298,46299],{},"ADD tulingmall-member-0.0.5.jar \u002Ftulingmall-member-0.0.5.jar\n",[460,46301,46302],{"class":462,"line":494},[460,46303,46304],{},"# 声明需要暴露的端口\n",[460,46306,46307],{"class":462,"line":500},[460,46308,46309],{},"EXPOSE 8877\n",[460,46311,46312],{"class":462,"line":506},[460,46313,46314],{},"# 配置容器启动后执行的命令\n",[460,46316,46317],{"class":462,"line":512},[460,46318,46319],{},"ENTRYPOINT java ${JAVA_OPTS} -jar \u002Ftulingmall-member-0.0.5.jar\n",[14,46321,46322],{},"3、使用docker build命令构建镜像",[451,46324,46326],{"className":40235,"code":46325,"language":40237,"meta":32,"style":32},"docker build -t tulingmall-member:0.0.5 .\n",[457,46327,46328],{"__ignoreMap":32},[460,46329,46330,46332,46334,46336,46339],{"class":462,"line":463},[460,46331,42964],{"class":929},[460,46333,45141],{"class":1353},[460,46335,45144],{"class":900},[460,46337,46338],{"class":1353}," tulingmall-member:0.0.5",[460,46340,45150],{"class":1353},[14,46342,46343],{},"格式： docker build -t 镜像名称:标签 Dockerfile的相对位置",[14,46345,46346],{},[30,46347],{"alt":32,"src":46348},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-020.png",[14,46350,46351],{},"4、启动镜像，加-d可在后台启动",[451,46353,46355],{"className":40235,"code":46354,"language":40237,"meta":32,"style":32},"docker run -d -p 8877:8877 tulingmall-member:0.0.5\n",[457,46356,46357],{"__ignoreMap":32},[460,46358,46359,46361,46363,46365,46367,46370],{"class":462,"line":463},[460,46360,42964],{"class":929},[460,46362,43641],{"class":1353},[460,46364,46232],{"class":900},[460,46366,45625],{"class":900},[460,46368,46369],{"class":1353}," 8877:8877",[460,46371,46372],{"class":1353}," tulingmall-member:0.0.5\n",[14,46374,46375],{},"加上JVM参数：",[451,46377,46379],{"className":40235,"code":46378,"language":40237,"meta":32,"style":32},"# --cap-add=SYS_PTRACE 这个参数是让docker能支持在容器里能执行jdk自带类似jinfo，jmap这些命令，如果不需要在容器里执行这些命令可以不加\ndocker run  -d -p 8877:8877 \\\n-e SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=192.168.65.174:8848  \\\n-e JAVA_OPTS='-Xmx1g -Xms1g -XX:MaxMetaspaceSize=512m'  \\\n--cap-add=SYS_PTRACE  \\\ntulingmall-member:0.0.5\n",[457,46380,46381,46386,46401,46411,46420,46427],{"__ignoreMap":32},[460,46382,46383],{"class":462,"line":463},[460,46384,46385],{"class":942},"# --cap-add=SYS_PTRACE 这个参数是让docker能支持在容器里能执行jdk自带类似jinfo，jmap这些命令，如果不需要在容器里执行这些命令可以不加\n",[460,46387,46388,46390,46392,46395,46397,46399],{"class":462,"line":476},[460,46389,42964],{"class":929},[460,46391,43641],{"class":1353},[460,46393,46394],{"class":900},"  -d",[460,46396,45625],{"class":900},[460,46398,46369],{"class":1353},[460,46400,41091],{"class":900},[460,46402,46403,46405,46408],{"class":462,"line":482},[460,46404,44538],{"class":466},[460,46406,46407],{"class":1353},"SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=192.168.65.174:8848",[460,46409,46410],{"class":900},"  \\\n",[460,46412,46413,46415,46418],{"class":462,"line":488},[460,46414,44538],{"class":466},[460,46416,46417],{"class":1353},"JAVA_OPTS='-Xmx1g -Xms1g -XX:MaxMetaspaceSize=512m'",[460,46419,46410],{"class":900},[460,46421,46422,46425],{"class":462,"line":494},[460,46423,46424],{"class":466},"--cap-add=SYS_PTRACE  ",[460,46426,42586],{"class":900},[460,46428,46429],{"class":462,"line":500},[460,46430,46431],{"class":466},"tulingmall-member:0.0.5\n",[14,46433,46434],{},"5、访问会员服务接口",[14,46436,46437],{},[30,46438],{"alt":32,"src":46439},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-021.png",[115,46441,46443],{"id":46442},"_633将微服务镜像发布到阿里云","6.3.3.将微服务镜像发布到阿里云",[14,46445,46446],{},"我们制作好了微服务镜像，一般需要发布到镜像仓库供别人使用，我们可以选择自建镜像仓库，也可以直接使用官方镜像仓库，这里我们选择",[14,46448,46449,46450],{},"阿里云docker镜像仓库：",[2756,46451,46452],{"href":46452,"rel":46453},"https:\u002F\u002Fcr.console.aliyun.com\u002Fcn-hangzhou\u002Finstance\u002Frepositories",[4943],[14,46455,46456],{},"首先，我们需要注册一个阿里云账号，创建容器镜像服务",[14,46458,46459],{},"然后，在linux服务器上用docker login命令登录镜像仓库",[14,46461,46462],{},[30,46463],{"alt":32,"src":46464},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-022.png",[14,46466,46467],{},"要把镜像推送到镜像仓库",[451,46469,46471],{"className":40235,"code":46470,"language":40237,"meta":32,"style":32},"docker tag tulingmall-member:0.0.5 registry.cn-hangzhou.aliyuncs.com\u002Ffox666\u002Ftulingmall-member:0.0.5\n",[457,46472,46473],{"__ignoreMap":32},[460,46474,46475,46477,46479,46481],{"class":462,"line":463},[460,46476,42964],{"class":929},[460,46478,45306],{"class":1353},[460,46480,46338],{"class":1353},[460,46482,46483],{"class":1353}," registry.cn-hangzhou.aliyuncs.com\u002Ffox666\u002Ftulingmall-member:0.0.5\n",[14,46485,46486],{},"最后将镜像推送到远程仓库",[451,46488,46490],{"className":40235,"code":46489,"language":40237,"meta":32,"style":32},"docker push registry.cn-hangzhou.aliyuncs.com\u002Ffox666\u002Ftulingmall-member:0.0.5\n",[457,46491,46492],{"__ignoreMap":32},[460,46493,46494,46496,46498],{"class":462,"line":463},[460,46495,42964],{"class":929},[460,46497,45425],{"class":1353},[460,46499,46483],{"class":1353},[1944,46501,46502],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":32,"searchDepth":476,"depth":476,"links":46504},[46505,46506,46507],{"id":44892,"depth":482,"text":44893},{"id":45121,"depth":482,"text":45122},{"id":46147,"depth":482,"text":46148},{},"\u002Fwiki\u002F2025-11-10-docker\u002Fch6-docker",{"title":44884,"description":32},"wiki\u002F2025-11-10-Docker\u002Fch6-手动创建Docker镜像","ViWMXEj6lWx3Vw92hAMOoKTyGbZ4r_bHvPkT-sIqCJk",{"id":46514,"title":46515,"body":46516,"description":32,"extension":16683,"meta":46659,"navigation":521,"path":46660,"seo":46661,"stem":46662,"__hash__":46663},"wiki\u002Fwiki\u002F2025-11-10-Docker\u002Fch7-VScode远程开发.md","7.VScode远程开发",{"type":7,"value":46517,"toc":46657},[46518,46521,46526,46531,46534,46539,46544,46547,46552,46557,46560,46565,46568,46571,46574,46577,46580,46583,46603,46625,46628,46631,46651,46654],[10,46519,46515],{"id":46520},"_7vscode远程开发",[103,46522,46523],{},[43,46524,46525],{},"插件1：微软Docker工具",[14,46527,46528],{},[30,46529],{"alt":32,"src":46530},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-023.png",[14,46532,46533],{},"docker扩展插件已经进化为container tools了，请安装container tools",[14,46535,46536],{},[30,46537],{"alt":32,"src":46538},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-024.png",[103,46540,46541],{"start":476},[43,46542,46543],{},"插件2：微软Docker远程开发工具",[14,46545,46546],{},"下面这是远程开发的插件。",[14,46548,46549],{},[30,46550],{"alt":32,"src":46551},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-025.png",[14,46553,46554],{},[30,46555],{"alt":32,"src":46556},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-026.png",[14,46558,46559],{},"上述教程已经挂载了本地磁盘了，所以在Docker容器中可以轻松访问本地的工程",[14,46561,46562],{},[30,46563],{"alt":32,"src":46564},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-10-Docker-027.png",[14,46566,46567],{},"安装完拓展之后，vscode进行链接：",[14,46569,46570],{},"1.按ctrl+shift+p",[14,46572,46573],{},"2.输入 \"Dev Containers: Attach to Running Container\"",[14,46575,46576],{},"3.选择目前运行的容器",[14,46578,46579],{},"4.VS Code 会在新窗口中打开并连接到容器",[14,46581,46582],{},"5.补充一点：在开发时候最好不要将项目所需要的文件夹放到容器中，可以将本地目录挂载到容器内，这样就可以实现项目文件在本地，环境仍然在容器当中 挂载实现方式：",[451,46584,46586],{"className":40235,"code":46585,"language":40237,"meta":32,"style":32},"docker run -v 主机目录:容器目录 image-name\n",[457,46587,46588],{"__ignoreMap":32},[460,46589,46590,46592,46594,46597,46600],{"class":462,"line":463},[460,46591,42964],{"class":929},[460,46593,43641],{"class":1353},[460,46595,46596],{"class":900}," -v",[460,46598,46599],{"class":1353}," 主机目录:容器目录",[460,46601,46602],{"class":1353}," image-name\n",[451,46604,46606],{"className":40235,"code":46605,"language":40237,"meta":32,"style":32},"docker run -it -v \u002Fhome\u002Fcherish\u002Fproject\u002Fpi0.5\u002F:\u002Fhome\u002Fcherish\u002Fproject\u002Fpi0.5\u002F cherish6\u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n",[457,46607,46608],{"__ignoreMap":32},[460,46609,46610,46612,46614,46617,46619,46622],{"class":462,"line":463},[460,46611,42964],{"class":929},[460,46613,43641],{"class":1353},[460,46615,46616],{"class":900}," -it",[460,46618,46596],{"class":900},[460,46620,46621],{"class":1353}," \u002Fhome\u002Fcherish\u002Fproject\u002Fpi0.5\u002F:\u002Fhome\u002Fcherish\u002Fproject\u002Fpi0.5\u002F",[460,46623,46624],{"class":1353}," cherish6\u002Fros-humble-opencv411-cuda128-cudnn970-jammy:latest\n",[14,46626,46627],{},"在运行的时候进行挂载，挂载自己的这个项目目录就可以，不会对其他目录产生影响的 需要补充一点非常重要：不要把系统文件给挂载进去，在容器中如果误删除后，本地就崩了！",[14,46629,46630],{},"查看挂载情况：",[451,46632,46634],{"className":40235,"code":46633,"language":40237,"meta":32,"style":32},"mount | grep -i project\n",[457,46635,46636],{"__ignoreMap":32},[460,46637,46638,46641,46643,46646,46648],{"class":462,"line":463},[460,46639,46640],{"class":929},"mount",[460,46642,41522],{"class":887},[460,46644,46645],{"class":929}," grep",[460,46647,42841],{"class":900},[460,46649,46650],{"class":1353}," project\n",[14,46652,46653],{},"也可以通过ls来进行查看",[1944,46655,46656],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":32,"searchDepth":476,"depth":476,"links":46658},[],{},"\u002Fwiki\u002F2025-11-10-docker\u002Fch7-vscode",{"title":46515,"description":32},"wiki\u002F2025-11-10-Docker\u002Fch7-VScode远程开发","jXcDt4HYisao6zvVrVK-MtSjb5N3Bk6ZZ0Wv7p7WKKI",{"id":46665,"title":46666,"body":46667,"description":16682,"extension":16683,"meta":46671,"navigation":521,"path":46673,"seo":46674,"stem":46675,"__hash__":46676},"wiki\u002Fwiki\u002F2025-11-10-Docker\u002Findex.md","Docker",{"type":7,"value":46668,"toc":46669},[],{"title":32,"searchDepth":476,"depth":476,"links":46670},[],{"category":46672},"运维","\u002Fwiki\u002F2025-11-10-docker",{"title":46666,"description":16682},"wiki\u002F2025-11-10-Docker\u002Findex","cPixP1_tGoKPYhmNBJD9RRykSUOIBgXIUZ_wkP0gFbg",{"id":46678,"title":46679,"body":46680,"description":16682,"extension":16683,"meta":46684,"navigation":521,"path":46685,"seo":46686,"stem":46687,"__hash__":46688},"wiki\u002Fwiki\u002F2025-11-10-k8s.md","K8S",{"type":7,"value":46681,"toc":46682},[],{"title":32,"searchDepth":476,"depth":476,"links":46683},[],{"category":46672},"\u002Fwiki\u002F2025-11-10-k8s",{"title":46679,"description":16682},"wiki\u002F2025-11-10-k8s","78QQJjmWuXthybVJ5CPmqyTGLhB8l9HoS-XENe0Lur0",{"id":46690,"title":46691,"body":46692,"description":16682,"extension":16683,"meta":46984,"navigation":521,"path":46985,"seo":46986,"stem":46987,"__hash__":46988},"wiki\u002Fwiki\u002F2025-11-03-cnn基础\u002Fch1-验证深度学习环境.md","1.验证深度学习环境",{"type":7,"value":46693,"toc":46982},[46694,46697,46705,46720,46725,46776,46779,46785,46971,46976,46979],[10,46695,46691],{"id":46696},"_1验证深度学习环境",[14,46698,46699,46700],{},"关于环境的安装，看",[2756,46701,46704],{"href":46702,"rel":46703},"https:\u002F\u002Facn59hvfac4g.feishu.cn\u002Fdocx\u002FK4cjdAj26ogJLGxVfWTcrwo6nih",[4943],"Pytorch-->深度学习",[14,46706,46707,46708,46711,46712,46715,46716,46719],{},"补充一点安装cuda和cudnn时，使用指令比较好一些，不用单独进行安装，安装pytorch时直接安依赖包就可以（ ",[457,46709,46710],{},"pytorch-cuda=12.4"," 是一个“ ",[3944,46713,46714],{},"元包（meta-package）"," ”，它并不包含真正的 CUDA 文件，而是一个 ",[3944,46717,46718],{},"依赖集合，"," 里边包含了所需要的一些包，需要注意的是安装前先查看电脑支持的cuda最高版本，要安装的cuda版本小于等于13.0",[14,46721,46722],{},[30,46723],{"alt":32,"src":46724},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-001.png",[451,46726,46728],{"className":40235,"code":46727,"language":40237,"meta":32,"style":32},"# CUDA 12.4\nconda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia\n",[457,46729,46730,46735],{"__ignoreMap":32},[460,46731,46732],{"class":462,"line":463},[460,46733,46734],{"class":942},"# CUDA 12.4\n",[460,46736,46737,46740,46742,46745,46748,46751,46754,46757,46759,46762,46765,46768,46771,46773],{"class":462,"line":476},[460,46738,46739],{"class":929},"conda",[460,46741,40247],{"class":1353},[460,46743,46744],{"class":1353}," pytorch==",[460,46746,46747],{"class":900},"2.5.1",[460,46749,46750],{"class":1353}," torchvision==",[460,46752,46753],{"class":900},"0.20.1",[460,46755,46756],{"class":1353}," torchaudio==",[460,46758,46747],{"class":900},[460,46760,46761],{"class":1353}," pytorch-cuda=",[460,46763,46764],{"class":900},"12.4",[460,46766,46767],{"class":900}," -c",[460,46769,46770],{"class":1353}," pytorch",[460,46772,46767],{"class":900},[460,46774,46775],{"class":1353}," nvidia\n",[14,46777,46778],{},"）：",[14,46780,46781],{},[2756,46782,46783],{"href":46783,"rel":46784},"https:\u002F\u002Fpytorch.org\u002Fget-started\u002Fprevious-versions\u002F",[4943],[451,46786,46790],{"className":46787,"code":46788,"language":46789,"meta":32,"style":32},"language-python shiki shiki-themes github-light github-dark","# 对深度学习环境进行测试\nimport torch\n# 查看cuda是否被激活\nflag=torch.cuda.is_available()\nprint(\"cuda:\", flag)   #返回true的话说明被激活\n# 进行调用查看:有GPU调用GPU，没有GPU调用CPU\nngpu=1\ndevice=torch.device(\"cuda:0\" if(torch.cuda.is_available() and ngpu>0) else \"cpu\")\nprint(device)\nprint(torch.cuda.get_device_name(0))\nprint(torch.rand(3,3).cuda())\n# 查看cuda和cudnn的版本\ncuda_version=torch.version.cuda\nprint(\"cuda version\",cuda_version)\ncudnn_version=torch.backends.cudnn.version()\nprint(\"cudnn version\",cudnn_version)\n","python",[457,46791,46792,46797,46805,46810,46820,46836,46841,46851,46888,46895,46906,46922,46927,46937,46949,46959],{"__ignoreMap":32},[460,46793,46794],{"class":462,"line":463},[460,46795,46796],{"class":942},"# 对深度学习环境进行测试\n",[460,46798,46799,46802],{"class":462,"line":476},[460,46800,46801],{"class":887},"import",[460,46803,46804],{"class":466}," torch\n",[460,46806,46807],{"class":462,"line":482},[460,46808,46809],{"class":942},"# 查看cuda是否被激活\n",[460,46811,46812,46815,46817],{"class":462,"line":488},[460,46813,46814],{"class":466},"flag",[460,46816,894],{"class":887},[460,46818,46819],{"class":466},"torch.cuda.is_available()\n",[460,46821,46822,46825,46827,46830,46833],{"class":462,"line":494},[460,46823,46824],{"class":900},"print",[460,46826,2174],{"class":466},[460,46828,46829],{"class":1353},"\"cuda:\"",[460,46831,46832],{"class":466},", flag)   ",[460,46834,46835],{"class":942},"#返回true的话说明被激活\n",[460,46837,46838],{"class":462,"line":500},[460,46839,46840],{"class":942},"# 进行调用查看:有GPU调用GPU，没有GPU调用CPU\n",[460,46842,46843,46846,46848],{"class":462,"line":506},[460,46844,46845],{"class":466},"ngpu",[460,46847,894],{"class":887},[460,46849,46850],{"class":900},"1\n",[460,46852,46853,46856,46858,46861,46864,46866,46869,46872,46875,46877,46879,46881,46883,46886],{"class":462,"line":512},[460,46854,46855],{"class":466},"device",[460,46857,894],{"class":887},[460,46859,46860],{"class":466},"torch.device(",[460,46862,46863],{"class":1353},"\"cuda:0\"",[460,46865,3766],{"class":887},[460,46867,46868],{"class":466},"(torch.cuda.is_available() ",[460,46870,46871],{"class":887},"and",[460,46873,46874],{"class":466}," ngpu",[460,46876,17668],{"class":887},[460,46878,936],{"class":900},[460,46880,8296],{"class":466},[460,46882,3763],{"class":887},[460,46884,46885],{"class":1353}," \"cpu\"",[460,46887,3754],{"class":466},[460,46889,46890,46892],{"class":462,"line":518},[460,46891,46824],{"class":900},[460,46893,46894],{"class":466},"(device)\n",[460,46896,46897,46899,46902,46904],{"class":462,"line":525},[460,46898,46824],{"class":900},[460,46900,46901],{"class":466},"(torch.cuda.get_device_name(",[460,46903,936],{"class":900},[460,46905,6311],{"class":466},[460,46907,46908,46910,46913,46915,46917,46919],{"class":462,"line":531},[460,46909,46824],{"class":900},[460,46911,46912],{"class":466},"(torch.rand(",[460,46914,913],{"class":900},[460,46916,3986],{"class":466},[460,46918,913],{"class":900},[460,46920,46921],{"class":466},").cuda())\n",[460,46923,46924],{"class":462,"line":537},[460,46925,46926],{"class":942},"# 查看cuda和cudnn的版本\n",[460,46928,46929,46932,46934],{"class":462,"line":543},[460,46930,46931],{"class":466},"cuda_version",[460,46933,894],{"class":887},[460,46935,46936],{"class":466},"torch.version.cuda\n",[460,46938,46939,46941,46943,46946],{"class":462,"line":549},[460,46940,46824],{"class":900},[460,46942,2174],{"class":466},[460,46944,46945],{"class":1353},"\"cuda version\"",[460,46947,46948],{"class":466},",cuda_version)\n",[460,46950,46951,46954,46956],{"class":462,"line":555},[460,46952,46953],{"class":466},"cudnn_version",[460,46955,894],{"class":887},[460,46957,46958],{"class":466},"torch.backends.cudnn.version()\n",[460,46960,46961,46963,46965,46968],{"class":462,"line":560},[460,46962,46824],{"class":900},[460,46964,2174],{"class":466},[460,46966,46967],{"class":1353},"\"cudnn version\"",[460,46969,46970],{"class":466},",cudnn_version)\n",[14,46972,46973],{},[30,46974],{"alt":32,"src":46975},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-002.png",[14,46977,46978],{},"cuda:0 指的是一块显卡",[1944,46980,46981],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":32,"searchDepth":476,"depth":476,"links":46983},[],{},"\u002Fwiki\u002F2025-11-03-cnn\u002Fch1",{"title":46691,"description":16682},"wiki\u002F2025-11-03-cnn基础\u002Fch1-验证深度学习环境","RH7hK3Jf2AfXWipS59cUOBvN5klNTAjs1j6ohh9I9GE",{"id":46990,"title":46991,"body":46992,"description":16682,"extension":16683,"meta":66691,"navigation":521,"path":66692,"seo":66693,"stem":66694,"__hash__":66695},"wiki\u002Fwiki\u002F2025-11-03-cnn基础\u002Fch2-经典神经网络.md","2.经典神经网络",{"type":7,"value":46993,"toc":66685},[46994,46997,47001,47005,47008,47013,47018,47021,47026,47031,47036,47039,47043,47048,47052,47057,47060,47065,47068,47071,47074,47077,47082,47085,47090,47095,47100,47105,47108,47112,47115,47120,47723,47728,47731,47736,47739,47742,48204,48207,48210,48213,48216,50167,50170,50175,50180,50975,50978,50983,51761,51765,53424,53428,54142,54146,54150,54155,54160,54165,54168,54173,54178,54183,54188,54193,54197,54202,55484,55489,55492,55494,55497,55652,55655,55658,56874,56879,57574,57578,57582,57587,57592,57595,57600,57605,57610,57615,57620,57625,57630,57635,57640,57645,57650,57655,57660,57665,57670,57675,57680,57685,57690,57695,57700,57705,57710,57715,57720,57725,57730,57735,57740,57745,57749,57753,57756,59234,59238,60885,60889,61583,61587,61590,61593,62137,62140,62144,62147,63544,63548,63551,64128,65915,65919,65922,66682],[10,46995,46991],{"id":46996},"_2经典神经网络",[23,46998,47000],{"id":46999},"_21lenet与alexnet","2.1.LeNet与AlexNet",[115,47002,47004],{"id":47003},"_211原理介绍","2.1.1.原理介绍",[14,47006,47007],{},"LeNet-5",[103,47009,47010],{},[43,47011,47012],{},"原理",[14,47014,47015],{},[30,47016],{"alt":32,"src":47017},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-003.png",[14,47019,47020],{},"B是batch批次；C是channel通道",[103,47022,47023],{"start":476},[43,47024,47025],{},"网络参数详细",[14,47027,47028],{},[30,47029],{"alt":32,"src":47030},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-004.png",[14,47032,47033],{},[30,47034],{"alt":32,"src":47035},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-005.png",[14,47037,47038],{},"AlexNet",[103,47040,47041],{},[43,47042,47012],{},[14,47044,47045],{},[30,47046],{"alt":32,"src":47047},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-006.png",[103,47049,47050],{"start":476},[43,47051,47025],{},[14,47053,47054],{},[30,47055],{"alt":32,"src":47056},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-007.png",[14,47058,47059],{},"使用dropout使一部分神经元失活，这样可以避免数据量太大导致的过拟合发生，操作如下：",[14,47061,47062],{},[30,47063],{"alt":32,"src":47064},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-008.png",[14,47066,47067],{},"数据处理中的图像增强操作:",[14,47069,47070],{},"在深度学习中最重要的就是对数据的采集和处理，数据不够的情况下，需要对数据进行扩增，有两个好处：",[14,47072,47073],{},"①增加数据量，保证训练数据充足；②防止过拟合",[14,47075,47076],{},"操作方式：①水平翻转；②随机裁剪；③PCA",[14,47078,47079],{},[30,47080],{"alt":32,"src":47081},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-009.png",[14,47083,47084],{},"提升网络精确度的方法：LRN正则化",[14,47086,47087],{},[30,47088],{"alt":32,"src":47089},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-010.png",[14,47091,47092],{},[30,47093],{"alt":32,"src":47094},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-011.png",[103,47096,47097],{"start":482},[43,47098,47099],{},"AlexNet的总结",[14,47101,47102],{},[30,47103],{"alt":32,"src":47104},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-012.png",[14,47106,47107],{},"比LeNet模型要深一丢丢",[115,47109,47111],{"id":47110},"_212代码实现","2.1.2.代码实现",[14,47113,47114],{},"（1）LeNet",[103,47116,47117],{},[43,47118,47119],{},"模型搭建",[451,47121,47123],{"className":46787,"code":47122,"language":46789,"meta":32,"style":32},"# 导入库\nimport torch\n# 导入神经网络层\nfrom torch import nn\n# 导入展示神经网络参数的包\nfrom torchsummary import summary\n\nclass LeNet(nn.Module):\n    # 模型初始化:\n    # 定义一些网络层和激活函数\n    def __init__(self):\n        # 当时使用继承的时候,如果要进行初始化,必须也要将父类进行初始化一下\n        super(LeNet,self).__init__()\n\n        # 定义网络层\n        self.c1=nn.Conv2d(in_channels=1,out_channels=6,kernel_size=5,padding=2)\n        self.sig=nn.Sigmoid()\n        # 定义池化\n        self.s2=nn.AvgPool2d(kernel_size=2,stride=2)\n        self.c3=nn.Conv2d(in_channels=6,out_channels=16,kernel_size=5)\n        self.s4=nn.AvgPool2d(kernel_size=2,stride=2)\n        # 定义平展层\n        self.flatten=nn.Flatten()\n        # 定义全连接层\n        self.f5=nn.Linear(400,120)\n        self.f6=nn.Linear(120,84)\n        self.f7=nn.Linear(84,10)\n\n    # 写工具->写前向传播\n    def forward(self,x):\n        x=self.sig(self.c1(x))\n        x=self.s2(x)\n        x=self.sig(self.c3(x))\n        x=self.s4(x)\n        x=self.flatten(x)\n        x=self.sig(self.f5(x))\n        x=self.sig(self.f6(x))\n        x=self.f7(x)\n        return x\n\nif __name__==\"__main__\":\n    # 判断是否有cuda是否激活,有GPU会返回cuda\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n    # 如果就是想指定用cpu用下方代码:\n    # device=\"cpu\"\n    # print(device)\n\n    # 实例化模型\n    # 将模型放到设备中去运行\n    model=LeNet().to(device)\n    print(summary(model,(1,28,28)))\n",[457,47124,47125,47130,47136,47141,47154,47159,47171,47175,47195,47200,47205,47216,47221,47239,47243,47248,47297,47309,47314,47343,47378,47405,47410,47422,47427,47447,47466,47485,47489,47494,47504,47521,47532,47547,47558,47569,47584,47599,47610,47617,47621,47635,47640,47663,47668,47673,47678,47682,47687,47692,47702],{"__ignoreMap":32},[460,47126,47127],{"class":462,"line":463},[460,47128,47129],{"class":942},"# 导入库\n",[460,47131,47132,47134],{"class":462,"line":476},[460,47133,46801],{"class":887},[460,47135,46804],{"class":466},[460,47137,47138],{"class":462,"line":482},[460,47139,47140],{"class":942},"# 导入神经网络层\n",[460,47142,47143,47146,47149,47151],{"class":462,"line":488},[460,47144,47145],{"class":887},"from",[460,47147,47148],{"class":466}," torch ",[460,47150,46801],{"class":887},[460,47152,47153],{"class":466}," nn\n",[460,47155,47156],{"class":462,"line":494},[460,47157,47158],{"class":942},"# 导入展示神经网络参数的包\n",[460,47160,47161,47163,47166,47168],{"class":462,"line":500},[460,47162,47145],{"class":887},[460,47164,47165],{"class":466}," torchsummary ",[460,47167,46801],{"class":887},[460,47169,47170],{"class":466}," summary\n",[460,47172,47173],{"class":462,"line":506},[460,47174,522],{"emptyLinePlaceholder":521},[460,47176,47177,47179,47182,47184,47187,47189,47192],{"class":462,"line":512},[460,47178,31148],{"class":887},[460,47180,47181],{"class":929}," LeNet",[460,47183,2174],{"class":466},[460,47185,47186],{"class":929},"nn",[460,47188,6000],{"class":466},[460,47190,47191],{"class":929},"Module",[460,47193,47194],{"class":466},"):\n",[460,47196,47197],{"class":462,"line":518},[460,47198,47199],{"class":942},"    # 模型初始化:\n",[460,47201,47202],{"class":462,"line":525},[460,47203,47204],{"class":942},"    # 定义一些网络层和激活函数\n",[460,47206,47207,47210,47213],{"class":462,"line":531},[460,47208,47209],{"class":887},"    def",[460,47211,47212],{"class":900}," __init__",[460,47214,47215],{"class":466},"(self):\n",[460,47217,47218],{"class":462,"line":537},[460,47219,47220],{"class":942},"        # 当时使用继承的时候,如果要进行初始化,必须也要将父类进行初始化一下\n",[460,47222,47223,47226,47229,47232,47234,47237],{"class":462,"line":543},[460,47224,47225],{"class":900},"        super",[460,47227,47228],{"class":466},"(LeNet,",[460,47230,47231],{"class":900},"self",[460,47233,3596],{"class":466},[460,47235,47236],{"class":900},"__init__",[460,47238,10758],{"class":466},[460,47240,47241],{"class":462,"line":549},[460,47242,522],{"emptyLinePlaceholder":521},[460,47244,47245],{"class":462,"line":555},[460,47246,47247],{"class":942},"        # 定义网络层\n",[460,47249,47250,47253,47256,47258,47261,47264,47266,47268,47270,47273,47275,47277,47279,47282,47284,47286,47288,47291,47293,47295],{"class":462,"line":560},[460,47251,47252],{"class":900},"        self",[460,47254,47255],{"class":466},".c1",[460,47257,894],{"class":887},[460,47259,47260],{"class":466},"nn.Conv2d(",[460,47262,47263],{"class":3380},"in_channels",[460,47265,894],{"class":887},[460,47267,901],{"class":900},[460,47269,3986],{"class":466},[460,47271,47272],{"class":3380},"out_channels",[460,47274,894],{"class":887},[460,47276,4064],{"class":900},[460,47278,3986],{"class":466},[460,47280,47281],{"class":3380},"kernel_size",[460,47283,894],{"class":887},[460,47285,7290],{"class":900},[460,47287,3986],{"class":466},[460,47289,47290],{"class":3380},"padding",[460,47292,894],{"class":887},[460,47294,907],{"class":900},[460,47296,3754],{"class":466},[460,47298,47299,47301,47304,47306],{"class":462,"line":566},[460,47300,47252],{"class":900},[460,47302,47303],{"class":466},".sig",[460,47305,894],{"class":887},[460,47307,47308],{"class":466},"nn.Sigmoid()\n",[460,47310,47311],{"class":462,"line":572},[460,47312,47313],{"class":942},"        # 定义池化\n",[460,47315,47316,47318,47321,47323,47326,47328,47330,47332,47334,47337,47339,47341],{"class":462,"line":578},[460,47317,47252],{"class":900},[460,47319,47320],{"class":466},".s2",[460,47322,894],{"class":887},[460,47324,47325],{"class":466},"nn.AvgPool2d(",[460,47327,47281],{"class":3380},[460,47329,894],{"class":887},[460,47331,907],{"class":900},[460,47333,3986],{"class":466},[460,47335,47336],{"class":3380},"stride",[460,47338,894],{"class":887},[460,47340,907],{"class":900},[460,47342,3754],{"class":466},[460,47344,47345,47347,47350,47352,47354,47356,47358,47360,47362,47364,47366,47368,47370,47372,47374,47376],{"class":462,"line":812},[460,47346,47252],{"class":900},[460,47348,47349],{"class":466},".c3",[460,47351,894],{"class":887},[460,47353,47260],{"class":466},[460,47355,47263],{"class":3380},[460,47357,894],{"class":887},[460,47359,4064],{"class":900},[460,47361,3986],{"class":466},[460,47363,47272],{"class":3380},[460,47365,894],{"class":887},[460,47367,17323],{"class":900},[460,47369,3986],{"class":466},[460,47371,47281],{"class":3380},[460,47373,894],{"class":887},[460,47375,7290],{"class":900},[460,47377,3754],{"class":466},[460,47379,47380,47382,47385,47387,47389,47391,47393,47395,47397,47399,47401,47403],{"class":462,"line":818},[460,47381,47252],{"class":900},[460,47383,47384],{"class":466},".s4",[460,47386,894],{"class":887},[460,47388,47325],{"class":466},[460,47390,47281],{"class":3380},[460,47392,894],{"class":887},[460,47394,907],{"class":900},[460,47396,3986],{"class":466},[460,47398,47336],{"class":3380},[460,47400,894],{"class":887},[460,47402,907],{"class":900},[460,47404,3754],{"class":466},[460,47406,47407],{"class":462,"line":824},[460,47408,47409],{"class":942},"        # 定义平展层\n",[460,47411,47412,47414,47417,47419],{"class":462,"line":2074},[460,47413,47252],{"class":900},[460,47415,47416],{"class":466},".flatten",[460,47418,894],{"class":887},[460,47420,47421],{"class":466},"nn.Flatten()\n",[460,47423,47424],{"class":462,"line":2088},[460,47425,47426],{"class":942},"        # 定义全连接层\n",[460,47428,47429,47431,47434,47436,47439,47441,47443,47445],{"class":462,"line":2103},[460,47430,47252],{"class":900},[460,47432,47433],{"class":466},".f5",[460,47435,894],{"class":887},[460,47437,47438],{"class":466},"nn.Linear(",[460,47440,20502],{"class":900},[460,47442,3986],{"class":466},[460,47444,17532],{"class":900},[460,47446,3754],{"class":466},[460,47448,47449,47451,47454,47456,47458,47460,47462,47464],{"class":462,"line":2122},[460,47450,47252],{"class":900},[460,47452,47453],{"class":466},".f6",[460,47455,894],{"class":887},[460,47457,47438],{"class":466},[460,47459,17532],{"class":900},[460,47461,3986],{"class":466},[460,47463,17428],{"class":900},[460,47465,3754],{"class":466},[460,47467,47468,47470,47473,47475,47477,47479,47481,47483],{"class":462,"line":2144},[460,47469,47252],{"class":900},[460,47471,47472],{"class":466},".f7",[460,47474,894],{"class":887},[460,47476,47438],{"class":466},[460,47478,17428],{"class":900},[460,47480,3986],{"class":466},[460,47482,2096],{"class":900},[460,47484,3754],{"class":466},[460,47486,47487],{"class":462,"line":2158},[460,47488,522],{"emptyLinePlaceholder":521},[460,47490,47491],{"class":462,"line":2163},[460,47492,47493],{"class":942},"    # 写工具->写前向传播\n",[460,47495,47496,47498,47501],{"class":462,"line":2168},[460,47497,47209],{"class":887},[460,47499,47500],{"class":929}," forward",[460,47502,47503],{"class":466},"(self,x):\n",[460,47505,47506,47509,47511,47513,47516,47518],{"class":462,"line":2183},[460,47507,47508],{"class":466},"        x",[460,47510,894],{"class":887},[460,47512,47231],{"class":900},[460,47514,47515],{"class":466},".sig(",[460,47517,47231],{"class":900},[460,47519,47520],{"class":466},".c1(x))\n",[460,47522,47523,47525,47527,47529],{"class":462,"line":2194},[460,47524,47508],{"class":466},[460,47526,894],{"class":887},[460,47528,47231],{"class":900},[460,47530,47531],{"class":466},".s2(x)\n",[460,47533,47534,47536,47538,47540,47542,47544],{"class":462,"line":2199},[460,47535,47508],{"class":466},[460,47537,894],{"class":887},[460,47539,47231],{"class":900},[460,47541,47515],{"class":466},[460,47543,47231],{"class":900},[460,47545,47546],{"class":466},".c3(x))\n",[460,47548,47549,47551,47553,47555],{"class":462,"line":2204},[460,47550,47508],{"class":466},[460,47552,894],{"class":887},[460,47554,47231],{"class":900},[460,47556,47557],{"class":466},".s4(x)\n",[460,47559,47560,47562,47564,47566],{"class":462,"line":2212},[460,47561,47508],{"class":466},[460,47563,894],{"class":887},[460,47565,47231],{"class":900},[460,47567,47568],{"class":466},".flatten(x)\n",[460,47570,47571,47573,47575,47577,47579,47581],{"class":462,"line":2257},[460,47572,47508],{"class":466},[460,47574,894],{"class":887},[460,47576,47231],{"class":900},[460,47578,47515],{"class":466},[460,47580,47231],{"class":900},[460,47582,47583],{"class":466},".f5(x))\n",[460,47585,47586,47588,47590,47592,47594,47596],{"class":462,"line":2285},[460,47587,47508],{"class":466},[460,47589,894],{"class":887},[460,47591,47231],{"class":900},[460,47593,47515],{"class":466},[460,47595,47231],{"class":900},[460,47597,47598],{"class":466},".f6(x))\n",[460,47600,47601,47603,47605,47607],{"class":462,"line":2298},[460,47602,47508],{"class":466},[460,47604,894],{"class":887},[460,47606,47231],{"class":900},[460,47608,47609],{"class":466},".f7(x)\n",[460,47611,47612,47614],{"class":462,"line":2303},[460,47613,31206],{"class":887},[460,47615,47616],{"class":466}," x\n",[460,47618,47619],{"class":462,"line":2308},[460,47620,522],{"emptyLinePlaceholder":521},[460,47622,47623,47625,47628,47630,47633],{"class":462,"line":2318},[460,47624,18100],{"class":887},[460,47626,47627],{"class":900}," __name__",[460,47629,19471],{"class":887},[460,47631,47632],{"class":1353},"\"__main__\"",[460,47634,20257],{"class":466},[460,47636,47637],{"class":462,"line":2333},[460,47638,47639],{"class":942},"    # 判断是否有cuda是否激活,有GPU会返回cuda\n",[460,47641,47642,47645,47647,47649,47652,47654,47657,47659,47661],{"class":462,"line":2338},[460,47643,47644],{"class":466},"    device",[460,47646,894],{"class":887},[460,47648,46860],{"class":466},[460,47650,47651],{"class":1353},"\"cuda\"",[460,47653,3766],{"class":887},[460,47655,47656],{"class":466}," torch.cuda.is_available() ",[460,47658,3763],{"class":887},[460,47660,46885],{"class":1353},[460,47662,3754],{"class":466},[460,47664,47665],{"class":462,"line":2343},[460,47666,47667],{"class":942},"    # 如果就是想指定用cpu用下方代码:\n",[460,47669,47670],{"class":462,"line":2353},[460,47671,47672],{"class":942},"    # device=\"cpu\"\n",[460,47674,47675],{"class":462,"line":2368},[460,47676,47677],{"class":942},"    # print(device)\n",[460,47679,47680],{"class":462,"line":2381},[460,47681,522],{"emptyLinePlaceholder":521},[460,47683,47684],{"class":462,"line":2394},[460,47685,47686],{"class":942},"    # 实例化模型\n",[460,47688,47689],{"class":462,"line":2399},[460,47690,47691],{"class":942},"    # 将模型放到设备中去运行\n",[460,47693,47694,47697,47699],{"class":462,"line":2404},[460,47695,47696],{"class":466},"    model",[460,47698,894],{"class":887},[460,47700,47701],{"class":466},"LeNet().to(device)\n",[460,47703,47704,47707,47710,47712,47714,47716,47718,47720],{"class":462,"line":2414},[460,47705,47706],{"class":900},"    print",[460,47708,47709],{"class":466},"(summary(model,(",[460,47711,901],{"class":900},[460,47713,3986],{"class":466},[460,47715,17612],{"class":900},[460,47717,3986],{"class":466},[460,47719,17612],{"class":900},[460,47721,47722],{"class":466},")))\n",[14,47724,47725],{},[30,47726],{"alt":32,"src":47727},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-013.png",[14,47729,47730],{},"summary这个包就是用来展示神经网络的计算过程，展示参数的变化",[103,47732,47733],{"start":476},[43,47734,47735],{},"训练",[14,47737,47738],{},"训练和测试部分的代码作为模板，可以移植到其他模型使用",[14,47740,47741],{},"在训练之前可以将数据展示看一下",[451,47743,47745],{"className":46787,"code":47744,"language":46789,"meta":32,"style":32},"# 建立画图的函数，用于展示数据\n# torchvision中包含很多内置的数据集\nfrom sklearn.externals.array_api_compat.torch import squeeze\nfrom torchvision.datasets import FashionMNIST\nimport numpy as np\n# 引入处理数据集的包\nfrom torchvision import transforms\n# 从torch库中引入数据处理的包\nimport torch.utils.data as Data\n# 导入画图的库\nimport matplotlib.pyplot as plt\n\n\ntrain_data=FashionMNIST(root='.\u002Fdata',\n                        train=True,\n                        # 将数据大小变为224大小,并转换为张量的形式,方便模型的应用\n                        transform=transforms.Compose([transforms.Resize(size=224),transforms.ToTensor()]),\n                        download=True)\n\n# 处理数据--->将数据引入进来,将数据进行打乱,成捆,然后规定进程\ntrain_loader=Data.DataLoader(dataset=train_data,\n                             batch_size=64,\n                             # 数据是否打乱\n                             shuffle=True,\n                             # 规定加载数据的进程\n                             num_workers=0)\n\n# 获得一个batch的数据\nfor step,(b_x,b_y) in enumerate(train_loader):\n    if step > 0:\n        break\n# squeeze()这个函数是去除张量中所有大小为1的维度\nbatch_x=b_x.squeeze().numpy()  #将四维张量移除所有维度为1的维度,并转换成numpy数组\nbatch_y=b_y.numpy()   #将张量转换成功numpy数组\nclass_label=train_data.classes  #训练集标签\n# print(class_label)\n\n# 可视化一个batch的图像\nplt.figure(figsize=(12,5))\nfor ii in np.arange(len(batch_y)):\n    plt.subplot(4,16,ii + 1)\n    plt.imshow(batch_x[ii,:,:],cmap=plt.cm.gray)\n    plt.title(class_label[batch_y[ii]],size=10)\n    plt.axis(\"off\")\n    plt.subplots_adjust(wspace=0.05)\nplt.show()\n",[457,47746,47747,47752,47757,47769,47781,47794,47799,47811,47816,47828,47833,47845,47849,47853,47873,47885,47890,47911,47922,47926,47931,47948,47959,47964,47975,47980,47991,47995,48000,48015,48028,48033,48038,48051,48064,48077,48082,48086,48091,48111,48128,48148,48161,48174,48184,48199],{"__ignoreMap":32},[460,47748,47749],{"class":462,"line":463},[460,47750,47751],{"class":942},"# 建立画图的函数，用于展示数据\n",[460,47753,47754],{"class":462,"line":476},[460,47755,47756],{"class":942},"# torchvision中包含很多内置的数据集\n",[460,47758,47759,47761,47764,47766],{"class":462,"line":482},[460,47760,47145],{"class":887},[460,47762,47763],{"class":466}," sklearn.externals.array_api_compat.torch ",[460,47765,46801],{"class":887},[460,47767,47768],{"class":466}," squeeze\n",[460,47770,47771,47773,47776,47778],{"class":462,"line":488},[460,47772,47145],{"class":887},[460,47774,47775],{"class":466}," torchvision.datasets ",[460,47777,46801],{"class":887},[460,47779,47780],{"class":466}," FashionMNIST\n",[460,47782,47783,47785,47788,47791],{"class":462,"line":494},[460,47784,46801],{"class":887},[460,47786,47787],{"class":466}," numpy ",[460,47789,47790],{"class":887},"as",[460,47792,47793],{"class":466}," np\n",[460,47795,47796],{"class":462,"line":500},[460,47797,47798],{"class":942},"# 引入处理数据集的包\n",[460,47800,47801,47803,47806,47808],{"class":462,"line":506},[460,47802,47145],{"class":887},[460,47804,47805],{"class":466}," torchvision ",[460,47807,46801],{"class":887},[460,47809,47810],{"class":466}," transforms\n",[460,47812,47813],{"class":462,"line":512},[460,47814,47815],{"class":942},"# 从torch库中引入数据处理的包\n",[460,47817,47818,47820,47823,47825],{"class":462,"line":518},[460,47819,46801],{"class":887},[460,47821,47822],{"class":466}," torch.utils.data ",[460,47824,47790],{"class":887},[460,47826,47827],{"class":466}," Data\n",[460,47829,47830],{"class":462,"line":525},[460,47831,47832],{"class":942},"# 导入画图的库\n",[460,47834,47835,47837,47840,47842],{"class":462,"line":531},[460,47836,46801],{"class":887},[460,47838,47839],{"class":466}," matplotlib.pyplot ",[460,47841,47790],{"class":887},[460,47843,47844],{"class":466}," plt\n",[460,47846,47847],{"class":462,"line":537},[460,47848,522],{"emptyLinePlaceholder":521},[460,47850,47851],{"class":462,"line":543},[460,47852,522],{"emptyLinePlaceholder":521},[460,47854,47855,47858,47860,47863,47866,47868,47871],{"class":462,"line":549},[460,47856,47857],{"class":466},"train_data",[460,47859,894],{"class":887},[460,47861,47862],{"class":466},"FashionMNIST(",[460,47864,47865],{"class":3380},"root",[460,47867,894],{"class":887},[460,47869,47870],{"class":1353},"'.\u002Fdata'",[460,47872,1363],{"class":466},[460,47874,47875,47878,47880,47883],{"class":462,"line":555},[460,47876,47877],{"class":3380},"                        train",[460,47879,894],{"class":887},[460,47881,47882],{"class":900},"True",[460,47884,1363],{"class":466},[460,47886,47887],{"class":462,"line":560},[460,47888,47889],{"class":942},"                        # 将数据大小变为224大小,并转换为张量的形式,方便模型的应用\n",[460,47891,47892,47895,47897,47900,47903,47905,47908],{"class":462,"line":566},[460,47893,47894],{"class":3380},"                        transform",[460,47896,894],{"class":887},[460,47898,47899],{"class":466},"transforms.Compose([transforms.Resize(",[460,47901,47902],{"class":3380},"size",[460,47904,894],{"class":887},[460,47906,47907],{"class":900},"224",[460,47909,47910],{"class":466},"),transforms.ToTensor()]),\n",[460,47912,47913,47916,47918,47920],{"class":462,"line":572},[460,47914,47915],{"class":3380},"                        download",[460,47917,894],{"class":887},[460,47919,47882],{"class":900},[460,47921,3754],{"class":466},[460,47923,47924],{"class":462,"line":578},[460,47925,522],{"emptyLinePlaceholder":521},[460,47927,47928],{"class":462,"line":812},[460,47929,47930],{"class":942},"# 处理数据--->将数据引入进来,将数据进行打乱,成捆,然后规定进程\n",[460,47932,47933,47936,47938,47941,47943,47945],{"class":462,"line":818},[460,47934,47935],{"class":466},"train_loader",[460,47937,894],{"class":887},[460,47939,47940],{"class":466},"Data.DataLoader(",[460,47942,3635],{"class":3380},[460,47944,894],{"class":887},[460,47946,47947],{"class":466},"train_data,\n",[460,47949,47950,47953,47955,47957],{"class":462,"line":824},[460,47951,47952],{"class":3380},"                             batch_size",[460,47954,894],{"class":887},[460,47956,16948],{"class":900},[460,47958,1363],{"class":466},[460,47960,47961],{"class":462,"line":2074},[460,47962,47963],{"class":942},"                             # 数据是否打乱\n",[460,47965,47966,47969,47971,47973],{"class":462,"line":2088},[460,47967,47968],{"class":3380},"                             shuffle",[460,47970,894],{"class":887},[460,47972,47882],{"class":900},[460,47974,1363],{"class":466},[460,47976,47977],{"class":462,"line":2103},[460,47978,47979],{"class":942},"                             # 规定加载数据的进程\n",[460,47981,47982,47985,47987,47989],{"class":462,"line":2122},[460,47983,47984],{"class":3380},"                             num_workers",[460,47986,894],{"class":887},[460,47988,936],{"class":900},[460,47990,3754],{"class":466},[460,47992,47993],{"class":462,"line":2144},[460,47994,522],{"emptyLinePlaceholder":521},[460,47996,47997],{"class":462,"line":2158},[460,47998,47999],{"class":942},"# 获得一个batch的数据\n",[460,48001,48002,48004,48007,48009,48012],{"class":462,"line":2163},[460,48003,19547],{"class":887},[460,48005,48006],{"class":466}," step,(b_x,b_y) ",[460,48008,11713],{"class":887},[460,48010,48011],{"class":900}," enumerate",[460,48013,48014],{"class":466},"(train_loader):\n",[460,48016,48017,48019,48022,48024,48026],{"class":462,"line":2168},[460,48018,19622],{"class":887},[460,48020,48021],{"class":466}," step ",[460,48023,17668],{"class":887},[460,48025,2224],{"class":900},[460,48027,20257],{"class":466},[460,48029,48030],{"class":462,"line":2183},[460,48031,48032],{"class":887},"        break\n",[460,48034,48035],{"class":462,"line":2194},[460,48036,48037],{"class":942},"# squeeze()这个函数是去除张量中所有大小为1的维度\n",[460,48039,48040,48043,48045,48048],{"class":462,"line":2199},[460,48041,48042],{"class":466},"batch_x",[460,48044,894],{"class":887},[460,48046,48047],{"class":466},"b_x.squeeze().numpy()  ",[460,48049,48050],{"class":942},"#将四维张量移除所有维度为1的维度,并转换成numpy数组\n",[460,48052,48053,48056,48058,48061],{"class":462,"line":2204},[460,48054,48055],{"class":466},"batch_y",[460,48057,894],{"class":887},[460,48059,48060],{"class":466},"b_y.numpy()   ",[460,48062,48063],{"class":942},"#将张量转换成功numpy数组\n",[460,48065,48066,48069,48071,48074],{"class":462,"line":2212},[460,48067,48068],{"class":466},"class_label",[460,48070,894],{"class":887},[460,48072,48073],{"class":466},"train_data.classes  ",[460,48075,48076],{"class":942},"#训练集标签\n",[460,48078,48079],{"class":462,"line":2257},[460,48080,48081],{"class":942},"# print(class_label)\n",[460,48083,48084],{"class":462,"line":2285},[460,48085,522],{"emptyLinePlaceholder":521},[460,48087,48088],{"class":462,"line":2298},[460,48089,48090],{"class":942},"# 可视化一个batch的图像\n",[460,48092,48093,48096,48099,48101,48103,48105,48107,48109],{"class":462,"line":2303},[460,48094,48095],{"class":466},"plt.figure(",[460,48097,48098],{"class":3380},"figsize",[460,48100,894],{"class":887},[460,48102,2174],{"class":466},[460,48104,5531],{"class":900},[460,48106,3986],{"class":466},[460,48108,7290],{"class":900},[460,48110,6311],{"class":466},[460,48112,48113,48115,48118,48120,48123,48125],{"class":462,"line":2308},[460,48114,19547],{"class":887},[460,48116,48117],{"class":466}," ii ",[460,48119,11713],{"class":887},[460,48121,48122],{"class":466}," np.arange(",[460,48124,23856],{"class":900},[460,48126,48127],{"class":466},"(batch_y)):\n",[460,48129,48130,48133,48135,48137,48139,48142,48144,48146],{"class":462,"line":2318},[460,48131,48132],{"class":466},"    plt.subplot(",[460,48134,918],{"class":900},[460,48136,3986],{"class":466},[460,48138,17323],{"class":900},[460,48140,48141],{"class":466},",ii ",[460,48143,8495],{"class":887},[460,48145,1400],{"class":900},[460,48147,3754],{"class":466},[460,48149,48150,48153,48156,48158],{"class":462,"line":2333},[460,48151,48152],{"class":466},"    plt.imshow(batch_x[ii,:,:],",[460,48154,48155],{"class":3380},"cmap",[460,48157,894],{"class":887},[460,48159,48160],{"class":466},"plt.cm.gray)\n",[460,48162,48163,48166,48168,48170,48172],{"class":462,"line":2338},[460,48164,48165],{"class":466},"    plt.title(class_label[batch_y[ii]],",[460,48167,47902],{"class":3380},[460,48169,894],{"class":887},[460,48171,2096],{"class":900},[460,48173,3754],{"class":466},[460,48175,48176,48179,48182],{"class":462,"line":2343},[460,48177,48178],{"class":466},"    plt.axis(",[460,48180,48181],{"class":1353},"\"off\"",[460,48183,3754],{"class":466},[460,48185,48186,48189,48192,48194,48197],{"class":462,"line":2353},[460,48187,48188],{"class":466},"    plt.subplots_adjust(",[460,48190,48191],{"class":3380},"wspace",[460,48193,894],{"class":887},[460,48195,48196],{"class":900},"0.05",[460,48198,3754],{"class":466},[460,48200,48201],{"class":462,"line":2368},[460,48202,48203],{"class":466},"plt.show()\n",[14,48205,48206],{},"用matplotlib进行展示的过程可以后续再补",[14,48208,48209],{},"关于损失函数的使用：分类用交叉熵损失函数；回归用均方差损失函数",[14,48211,48212],{},"训练次数就是按照批次过整个训练集数据的次数",[14,48214,48215],{},"模型训练：",[451,48217,48219],{"className":46787,"code":48218,"language":46789,"meta":32,"style":32},"import copy\nimport time\n\nimport pandas as pd\nimport torch\nfrom torch.utils.data import Dataset\nfrom torchvision.datasets import FashionMNIST\nfrom torchvision import transforms\nimport torch.utils.data as Data\nimport matplotlib.pyplot as plt\n# 导入模型\nfrom model import LeNet\nfrom torch import nn\n\n\n# 处理训练集与验证集函数--->划分数据集\ndef train_val_data_process():\n    train_data=FashionMNIST('.\u002Fdata',\n                            train=True,\n                            transform=transforms.Compose([transforms.Resize(size=28),transforms.ToTensor()]),\n                            download=True)\n    train_data,val_data=Data.random_split(train_data,[round(0.8*len(train_data)),round(0.2*len(train_data))])\n    train_dataloader = Data.DataLoader(dataset=train_data,\n                                       batch_size=128,\n                                       shuffle=True,\n                                       # 规定8个进程\n                                       num_workers=8)\n    val_dataloader=Data.DataLoader(dataset=val_data,\n                                   batch_size=128,\n                                   shuffle=True,\n                                   num_workers=8)\n    return train_dataloader,val_dataloader\n\n# 验证是否出错\n# train_val_data_process()\n\n# 定义模型训练函数\ndef train_model_process(model,train_dataloader,val_dataloader,num_epochs):\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else 'cpu')\n\n\n    # 定义优化器\n    # model.parameters()表示把模型里所有可训练的参数（权重、偏置）传给优化器\n    # lr为学习率\n    optimizer=torch.optim.Adam(model.parameters(),lr=0.001)\n\n    # 定义损失函数使用交叉熵损失函数\n    criterion=nn.CrossEntropyLoss()\n\n    # 将模型放到GPU中进行训练\n    model=model.to(device)\n    # 复制当前模型的参数\n    # 把model（PyTorch的神经网络）的当前参数（权重 \u002F 偏置等）完整复制一份，放到best_model_wts变量里\n    # ，保证这份拷贝不会随着后续训练改变 —— 常用于保存“到目前为止表现最好的模型参数”\n    best_model_wts=copy.deepcopy(model.state_dict())\n\n\n    # 初始化参数\n    # 最高准确度\n    best_acc=0.0\n    # 训练集损失列表\n    train_loss_all=[]\n    # 验证集函数列表\n    val_loss_all=[]\n    # 训练集准确度列表\n    train_acc_all=[]\n    # 验证集准确度列表\n    val_acc_all=[]\n\n    # 保存当前时间--->方便看每轮训练的时间\n    since=time.time()\n\n\n    # 准备工作完成--->开始训练模型\n    for epoch in range(num_epochs):\n        print(\"Epoch {}\u002F{}\".format(epoch,num_epochs-1))\n        print(\"-\"*10)\n\n        # 初始化参数\n        # 训练集损失函数\n        train_loss=0.0\n        # 训练集准确度\n        train_corrects=0\n        # 验证集损失函数\n        val_loss=0.0\n        # 验证集准确度\n        val_corrects=0\n        # 训练集样本数量\n        train_num=0\n        # 验证集样本数量\n        val_num=0\n        # 将数据放到设备,并开始训练\n        for step,(b_x,b_y) in enumerate(train_dataloader):\n            # 将特征放入到训练设备\n            b_x=b_x.to(device)\n            # 将标签放入到训练设备当中\n            b_y=b_y.to(device)\n            # 设置模型为训练模式\n            model.train()\n            # 将数据放到模型当中,开始前向传播\n            # 前向传播过程,输入一个batch,输出为一个batch中对应的预测\n            output=model(b_x)\n            # 从网络输出 output 的每一行里，找出数值最大的下标（类别），作为模型预测的标签\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算每一个batch的损失函数\n            loss=criterion(output,b_y)\n            # 将梯度初始化为0\n            optimizer.zero_grad()\n            # 梯度置为0后再进行反向传播\n            loss.backward()\n            # 根据网络反向传播的梯度信息来更新网络的参数，以起到降低loss函数计算的作用\n            optimizer.step()\n            # loss.item()指的是batch的平均损失\n            train_loss+=loss.item()*b_x.size(0)\n            # 计算每个批次中正确预测的数量\n            train_corrects+=torch.sum(pre_lab==b_y.data)\n            # 计算目前为止一共处理了多少样本\n            train_num+=b_x.size(0)\n        # 验证数据\n        for step ,(b_x,b_y) in enumerate(val_dataloader):\n            # 将特征放到验证设备当中\n            b_x=b_x.to(device)\n            # 将标签放到放到训练设备当中\n            b_y=b_y.to(device)\n            # 开启验证模式，设置模型为评估模式\n            model.eval()\n            with torch.no_grad():\n                # 前向传播过程，输入一个batch,输出为一个batch中对应的预测\n                output = model(b_x)\n                # 查找每一行中最大值对应的下标\n                pre_lab = torch.argmax(output, dim=1)\n                # 计算验证集上的当前 batch 损失\n                val_batch_loss = criterion(output, b_y)\n                # 对损失函数进行累加（按样本数加权）\n                val_loss += val_batch_loss.item() * b_x.size(0)\n                val_corrects += torch.sum(pre_lab == b_y.data)\n                # 当前用于验证的样本数量\n            val_num += b_x.size(0)\n        # 计算并保存每一次迭代的loss值和准确率\n        # 计算并保存训练集的loss值\n        train_loss_all.append(train_loss\u002Ftrain_num)\n        # 取双精度\n        # 计算并保存训练集的准确率\n        train_acc_all.append(train_corrects.double().item()\u002Ftrain_num)\n        # 计算并保存验证集的loss值\n        val_loss_all.append(val_loss\u002Fval_num)\n        # 计算并保存验证集的准确率\n        val_acc_all.append(val_corrects.double().item()\u002Fval_num)\n\n        # 打印训练一轮的loss值和准确率\n        print('{}train loss:{:.4f} train acc:{:.4f}'.format(epoch,train_loss_all[-1],train_acc_all[-1]))\n        print('{}val loss:{:.4f} val acc:{:.4f}'.format(epoch,val_loss_all[-1],val_acc_all[-1]))\n\n        # 判断准确度--->保存最优模型\n        if val_acc_all[-1]>best_acc:\n            # 保存当前模型准确度\n            best_acc:float=val_acc_all[-1]\n            # 保存当前的准确度\n            # model.state_dict()是当前模型的所有参数（权重和偏置）\n            best_model_wts=copy.deepcopy(model.state_dict())\n\n        # 计算耗时\n        time_use=time.time()-since\n        print('训练和验证耗费的时间{:.0f}m{:.0f}s'.format(time_use\u002F\u002F60,time_use%60))\n    # 选择最优参数\n    # 加载最高准确率下的模型参数\n    # model.load_state_dict(best_model_wts)\n    torch.save(model.state_dict(best_model_wts), '.\u002Fbest_model.pth')\n    # 或者写成\n    # torch.save(best_model_wts,'.\u002Fbest_model.pth')\n    # 保存训练过程,可以使用pandas来进行保存,里边有个DataFrame()可以像列表一样保存数据\n    train_process=pd.DataFrame(data={\n        \"epoch\":range(num_epochs),\n        \"train_loss_all\":train_loss_all,\n        \"val_loss_all\":val_loss_all,\n        \"train_acc_all\":train_acc_all,\n        \"val_acc_all\":val_acc_all\n    })\n    # 返回训练保存的过程\n    return train_process\n\n# 将loss值和精度按照图片的形式展示出来\ndef matplot_acc_loss(train_process):\n    # 设置图的大小\n    plt.figure(figsize=(12,4))\n    # 设置图中有几张图\n    # 把当前画布分成1行2列的子图,当前位置是 第 1 个子图\n    # ①loss图\n    plt.subplot(1,2,1)\n    # 补充:\n    # plt.subplot(nrows, ncols, index)\n    # nrows：行数\n    # ncols：列数\n    # index：目前选中第几个子图（从1开始）\n    plt.plot(train_process[\"epoch\"],train_process.train_loss_all,'ro-',label='train loss')\n    plt.plot(train_process[\"epoch\"],train_process.val_loss_all,'bs--',label='val loss')\n    # 添加一个图例\n    plt.legend()\n    # 给轴添加标签\n    plt.xlabel('epoch')\n    plt.ylabel('loss')\n    # ②准确度图\n    plt.subplot(1,2,2)\n    plt.plot(train_process[\"epoch\"],train_process.train_acc_all,'ro-',label='train acc')\n    plt.plot(train_process[\"epoch\"],train_process.val_acc_all,'bs--',label='val acc')\n    # 添加图例\n    plt.legend()\n    plt.xlabel(\"epoch\")\n    plt.ylabel(\"acc\")\n    plt.show()\n\n# 正式开始训练:\nif __name__==\"__main__\":\n    # 将模型实例化\n    LeNet=LeNet()\n    train_dataloader,val_dataloader=train_val_data_process()\n    train_process=train_model_process(LeNet,train_dataloader,val_dataloader,num_epochs=20)\n    matplot_acc_loss(train_process)\n",[457,48220,48221,48228,48235,48239,48251,48257,48268,48278,48288,48298,48308,48313,48325,48335,48339,48343,48348,48359,48372,48383,48400,48411,48450,48466,48478,48489,48494,48505,48521,48532,48543,48554,48561,48565,48570,48575,48579,48584,48594,48615,48619,48623,48628,48633,48638,48658,48662,48667,48677,48681,48686,48695,48700,48705,48710,48720,48724,48728,48733,48738,48748,48753,48763,48768,48777,48782,48791,48796,48805,48809,48814,48824,48828,48832,48837,48852,48880,48895,48899,48904,48909,48918,48923,48932,48937,48946,48951,48960,48965,48974,48979,48988,48993,49006,49011,49021,49026,49036,49041,49046,49051,49056,49066,49071,49090,49095,49105,49110,49115,49120,49125,49130,49135,49140,49159,49164,49179,49184,49197,49202,49216,49221,49229,49234,49242,49247,49252,49260,49265,49275,49280,49298,49303,49313,49318,49337,49352,49357,49370,49375,49380,49390,49395,49400,49409,49414,49424,49429,49438,49442,49447,49495,49541,49545,49550,49568,49573,49591,49596,49601,49610,49614,49619,49634,49677,49682,49687,49692,49702,49707,49712,49717,49734,49747,49755,49763,49771,49779,49783,49788,49795,49799,49804,49814,49819,49838,49843,49848,49853,49869,49874,49879,49884,49889,49894,49921,49945,49951,49957,49963,49974,49985,49991,50008,50031,50054,50060,50065,50074,50084,50090,50095,50101,50114,50120,50131,50142,50161],{"__ignoreMap":32},[460,48222,48223,48225],{"class":462,"line":463},[460,48224,46801],{"class":887},[460,48226,48227],{"class":466}," copy\n",[460,48229,48230,48232],{"class":462,"line":476},[460,48231,46801],{"class":887},[460,48233,48234],{"class":466}," time\n",[460,48236,48237],{"class":462,"line":482},[460,48238,522],{"emptyLinePlaceholder":521},[460,48240,48241,48243,48246,48248],{"class":462,"line":488},[460,48242,46801],{"class":887},[460,48244,48245],{"class":466}," pandas ",[460,48247,47790],{"class":887},[460,48249,48250],{"class":466}," pd\n",[460,48252,48253,48255],{"class":462,"line":494},[460,48254,46801],{"class":887},[460,48256,46804],{"class":466},[460,48258,48259,48261,48263,48265],{"class":462,"line":500},[460,48260,47145],{"class":887},[460,48262,47822],{"class":466},[460,48264,46801],{"class":887},[460,48266,48267],{"class":466}," Dataset\n",[460,48269,48270,48272,48274,48276],{"class":462,"line":506},[460,48271,47145],{"class":887},[460,48273,47775],{"class":466},[460,48275,46801],{"class":887},[460,48277,47780],{"class":466},[460,48279,48280,48282,48284,48286],{"class":462,"line":512},[460,48281,47145],{"class":887},[460,48283,47805],{"class":466},[460,48285,46801],{"class":887},[460,48287,47810],{"class":466},[460,48289,48290,48292,48294,48296],{"class":462,"line":518},[460,48291,46801],{"class":887},[460,48293,47822],{"class":466},[460,48295,47790],{"class":887},[460,48297,47827],{"class":466},[460,48299,48300,48302,48304,48306],{"class":462,"line":525},[460,48301,46801],{"class":887},[460,48303,47839],{"class":466},[460,48305,47790],{"class":887},[460,48307,47844],{"class":466},[460,48309,48310],{"class":462,"line":531},[460,48311,48312],{"class":942},"# 导入模型\n",[460,48314,48315,48317,48320,48322],{"class":462,"line":537},[460,48316,47145],{"class":887},[460,48318,48319],{"class":466}," model ",[460,48321,46801],{"class":887},[460,48323,48324],{"class":466}," LeNet\n",[460,48326,48327,48329,48331,48333],{"class":462,"line":543},[460,48328,47145],{"class":887},[460,48330,47148],{"class":466},[460,48332,46801],{"class":887},[460,48334,47153],{"class":466},[460,48336,48337],{"class":462,"line":549},[460,48338,522],{"emptyLinePlaceholder":521},[460,48340,48341],{"class":462,"line":555},[460,48342,522],{"emptyLinePlaceholder":521},[460,48344,48345],{"class":462,"line":560},[460,48346,48347],{"class":942},"# 处理训练集与验证集函数--->划分数据集\n",[460,48349,48350,48353,48356],{"class":462,"line":566},[460,48351,48352],{"class":887},"def",[460,48354,48355],{"class":929}," train_val_data_process",[460,48357,48358],{"class":466},"():\n",[460,48360,48361,48364,48366,48368,48370],{"class":462,"line":572},[460,48362,48363],{"class":466},"    train_data",[460,48365,894],{"class":887},[460,48367,47862],{"class":466},[460,48369,47870],{"class":1353},[460,48371,1363],{"class":466},[460,48373,48374,48377,48379,48381],{"class":462,"line":578},[460,48375,48376],{"class":3380},"                            train",[460,48378,894],{"class":887},[460,48380,47882],{"class":900},[460,48382,1363],{"class":466},[460,48384,48385,48388,48390,48392,48394,48396,48398],{"class":462,"line":812},[460,48386,48387],{"class":3380},"                            transform",[460,48389,894],{"class":887},[460,48391,47899],{"class":466},[460,48393,47902],{"class":3380},[460,48395,894],{"class":887},[460,48397,17612],{"class":900},[460,48399,47910],{"class":466},[460,48401,48402,48405,48407,48409],{"class":462,"line":818},[460,48403,48404],{"class":3380},"                            download",[460,48406,894],{"class":887},[460,48408,47882],{"class":900},[460,48410,3754],{"class":466},[460,48412,48413,48416,48418,48421,48424,48426,48429,48431,48433,48436,48438,48440,48443,48445,48447],{"class":462,"line":824},[460,48414,48415],{"class":466},"    train_data,val_data",[460,48417,894],{"class":887},[460,48419,48420],{"class":466},"Data.random_split(train_data,[",[460,48422,48423],{"class":900},"round",[460,48425,2174],{"class":466},[460,48427,48428],{"class":900},"0.8",[460,48430,8320],{"class":887},[460,48432,23856],{"class":900},[460,48434,48435],{"class":466},"(train_data)),",[460,48437,48423],{"class":900},[460,48439,2174],{"class":466},[460,48441,48442],{"class":900},"0.2",[460,48444,8320],{"class":887},[460,48446,23856],{"class":900},[460,48448,48449],{"class":466},"(train_data))])\n",[460,48451,48452,48455,48457,48460,48462,48464],{"class":462,"line":2074},[460,48453,48454],{"class":466},"    train_dataloader ",[460,48456,894],{"class":887},[460,48458,48459],{"class":466}," Data.DataLoader(",[460,48461,3635],{"class":3380},[460,48463,894],{"class":887},[460,48465,47947],{"class":466},[460,48467,48468,48471,48473,48476],{"class":462,"line":2088},[460,48469,48470],{"class":3380},"                                       batch_size",[460,48472,894],{"class":887},[460,48474,48475],{"class":900},"128",[460,48477,1363],{"class":466},[460,48479,48480,48483,48485,48487],{"class":462,"line":2103},[460,48481,48482],{"class":3380},"                                       shuffle",[460,48484,894],{"class":887},[460,48486,47882],{"class":900},[460,48488,1363],{"class":466},[460,48490,48491],{"class":462,"line":2122},[460,48492,48493],{"class":942},"                                       # 规定8个进程\n",[460,48495,48496,48499,48501,48503],{"class":462,"line":2144},[460,48497,48498],{"class":3380},"                                       num_workers",[460,48500,894],{"class":887},[460,48502,17130],{"class":900},[460,48504,3754],{"class":466},[460,48506,48507,48510,48512,48514,48516,48518],{"class":462,"line":2158},[460,48508,48509],{"class":466},"    val_dataloader",[460,48511,894],{"class":887},[460,48513,47940],{"class":466},[460,48515,3635],{"class":3380},[460,48517,894],{"class":887},[460,48519,48520],{"class":466},"val_data,\n",[460,48522,48523,48526,48528,48530],{"class":462,"line":2163},[460,48524,48525],{"class":3380},"                                   batch_size",[460,48527,894],{"class":887},[460,48529,48475],{"class":900},[460,48531,1363],{"class":466},[460,48533,48534,48537,48539,48541],{"class":462,"line":2168},[460,48535,48536],{"class":3380},"                                   shuffle",[460,48538,894],{"class":887},[460,48540,47882],{"class":900},[460,48542,1363],{"class":466},[460,48544,48545,48548,48550,48552],{"class":462,"line":2183},[460,48546,48547],{"class":3380},"                                   num_workers",[460,48549,894],{"class":887},[460,48551,17130],{"class":900},[460,48553,3754],{"class":466},[460,48555,48556,48558],{"class":462,"line":2194},[460,48557,20605],{"class":887},[460,48559,48560],{"class":466}," train_dataloader,val_dataloader\n",[460,48562,48563],{"class":462,"line":2199},[460,48564,522],{"emptyLinePlaceholder":521},[460,48566,48567],{"class":462,"line":2204},[460,48568,48569],{"class":942},"# 验证是否出错\n",[460,48571,48572],{"class":462,"line":2212},[460,48573,48574],{"class":942},"# train_val_data_process()\n",[460,48576,48577],{"class":462,"line":2257},[460,48578,522],{"emptyLinePlaceholder":521},[460,48580,48581],{"class":462,"line":2285},[460,48582,48583],{"class":942},"# 定义模型训练函数\n",[460,48585,48586,48588,48591],{"class":462,"line":2298},[460,48587,48352],{"class":887},[460,48589,48590],{"class":929}," train_model_process",[460,48592,48593],{"class":466},"(model,train_dataloader,val_dataloader,num_epochs):\n",[460,48595,48596,48598,48600,48602,48604,48606,48608,48610,48613],{"class":462,"line":2303},[460,48597,47644],{"class":466},[460,48599,894],{"class":887},[460,48601,46860],{"class":466},[460,48603,47651],{"class":1353},[460,48605,3766],{"class":887},[460,48607,47656],{"class":466},[460,48609,3763],{"class":887},[460,48611,48612],{"class":1353}," 'cpu'",[460,48614,3754],{"class":466},[460,48616,48617],{"class":462,"line":2308},[460,48618,522],{"emptyLinePlaceholder":521},[460,48620,48621],{"class":462,"line":2318},[460,48622,522],{"emptyLinePlaceholder":521},[460,48624,48625],{"class":462,"line":2333},[460,48626,48627],{"class":942},"    # 定义优化器\n",[460,48629,48630],{"class":462,"line":2338},[460,48631,48632],{"class":942},"    # model.parameters()表示把模型里所有可训练的参数（权重、偏置）传给优化器\n",[460,48634,48635],{"class":462,"line":2343},[460,48636,48637],{"class":942},"    # lr为学习率\n",[460,48639,48640,48643,48645,48648,48651,48653,48656],{"class":462,"line":2353},[460,48641,48642],{"class":466},"    optimizer",[460,48644,894],{"class":887},[460,48646,48647],{"class":466},"torch.optim.Adam(model.parameters(),",[460,48649,48650],{"class":3380},"lr",[460,48652,894],{"class":887},[460,48654,48655],{"class":900},"0.001",[460,48657,3754],{"class":466},[460,48659,48660],{"class":462,"line":2368},[460,48661,522],{"emptyLinePlaceholder":521},[460,48663,48664],{"class":462,"line":2381},[460,48665,48666],{"class":942},"    # 定义损失函数使用交叉熵损失函数\n",[460,48668,48669,48672,48674],{"class":462,"line":2394},[460,48670,48671],{"class":466},"    criterion",[460,48673,894],{"class":887},[460,48675,48676],{"class":466},"nn.CrossEntropyLoss()\n",[460,48678,48679],{"class":462,"line":2399},[460,48680,522],{"emptyLinePlaceholder":521},[460,48682,48683],{"class":462,"line":2404},[460,48684,48685],{"class":942},"    # 将模型放到GPU中进行训练\n",[460,48687,48688,48690,48692],{"class":462,"line":2414},[460,48689,47696],{"class":466},[460,48691,894],{"class":887},[460,48693,48694],{"class":466},"model.to(device)\n",[460,48696,48697],{"class":462,"line":2428},[460,48698,48699],{"class":942},"    # 复制当前模型的参数\n",[460,48701,48702],{"class":462,"line":2440},[460,48703,48704],{"class":942},"    # 把model（PyTorch的神经网络）的当前参数（权重 \u002F 偏置等）完整复制一份，放到best_model_wts变量里\n",[460,48706,48707],{"class":462,"line":2445},[460,48708,48709],{"class":942},"    # ，保证这份拷贝不会随着后续训练改变 —— 常用于保存“到目前为止表现最好的模型参数”\n",[460,48711,48712,48715,48717],{"class":462,"line":2450},[460,48713,48714],{"class":466},"    best_model_wts",[460,48716,894],{"class":887},[460,48718,48719],{"class":466},"copy.deepcopy(model.state_dict())\n",[460,48721,48722],{"class":462,"line":2460},[460,48723,522],{"emptyLinePlaceholder":521},[460,48725,48726],{"class":462,"line":2473},[460,48727,522],{"emptyLinePlaceholder":521},[460,48729,48730],{"class":462,"line":2487},[460,48731,48732],{"class":942},"    # 初始化参数\n",[460,48734,48735],{"class":462,"line":2492},[460,48736,48737],{"class":942},"    # 最高准确度\n",[460,48739,48740,48743,48745],{"class":462,"line":2497},[460,48741,48742],{"class":466},"    best_acc",[460,48744,894],{"class":887},[460,48746,48747],{"class":900},"0.0\n",[460,48749,48750],{"class":462,"line":2505},[460,48751,48752],{"class":942},"    # 训练集损失列表\n",[460,48754,48755,48758,48760],{"class":462,"line":2516},[460,48756,48757],{"class":466},"    train_loss_all",[460,48759,894],{"class":887},[460,48761,48762],{"class":466},"[]\n",[460,48764,48765],{"class":462,"line":2529},[460,48766,48767],{"class":942},"    # 验证集函数列表\n",[460,48769,48770,48773,48775],{"class":462,"line":2542},[460,48771,48772],{"class":466},"    val_loss_all",[460,48774,894],{"class":887},[460,48776,48762],{"class":466},[460,48778,48779],{"class":462,"line":2559},[460,48780,48781],{"class":942},"    # 训练集准确度列表\n",[460,48783,48784,48787,48789],{"class":462,"line":2564},[460,48785,48786],{"class":466},"    train_acc_all",[460,48788,894],{"class":887},[460,48790,48762],{"class":466},[460,48792,48793],{"class":462,"line":2569},[460,48794,48795],{"class":942},"    # 验证集准确度列表\n",[460,48797,48798,48801,48803],{"class":462,"line":2579},[460,48799,48800],{"class":466},"    val_acc_all",[460,48802,894],{"class":887},[460,48804,48762],{"class":466},[460,48806,48807],{"class":462,"line":2597},[460,48808,522],{"emptyLinePlaceholder":521},[460,48810,48811],{"class":462,"line":2610},[460,48812,48813],{"class":942},"    # 保存当前时间--->方便看每轮训练的时间\n",[460,48815,48816,48819,48821],{"class":462,"line":2621},[460,48817,48818],{"class":466},"    since",[460,48820,894],{"class":887},[460,48822,48823],{"class":466},"time.time()\n",[460,48825,48826],{"class":462,"line":2634},[460,48827,522],{"emptyLinePlaceholder":521},[460,48829,48830],{"class":462,"line":2648},[460,48831,522],{"emptyLinePlaceholder":521},[460,48833,48834],{"class":462,"line":2653},[460,48835,48836],{"class":942},"    # 准备工作完成--->开始训练模型\n",[460,48838,48839,48841,48844,48846,48849],{"class":462,"line":2658},[460,48840,19722],{"class":887},[460,48842,48843],{"class":466}," epoch ",[460,48845,11713],{"class":887},[460,48847,48848],{"class":900}," range",[460,48850,48851],{"class":466},"(num_epochs):\n",[460,48853,48854,48857,48859,48862,48865,48867,48869,48871,48874,48876,48878],{"class":462,"line":2670},[460,48855,48856],{"class":900},"        print",[460,48858,2174],{"class":466},[460,48860,48861],{"class":1353},"\"Epoch ",[460,48863,48864],{"class":900},"{}",[460,48866,8331],{"class":1353},[460,48868,48864],{"class":900},[460,48870,16993],{"class":1353},[460,48872,48873],{"class":466},".format(epoch,num_epochs",[460,48875,17259],{"class":887},[460,48877,901],{"class":900},[460,48879,6311],{"class":466},[460,48881,48882,48884,48886,48889,48891,48893],{"class":462,"line":2683},[460,48883,48856],{"class":900},[460,48885,2174],{"class":466},[460,48887,48888],{"class":1353},"\"-\"",[460,48890,8320],{"class":887},[460,48892,2096],{"class":900},[460,48894,3754],{"class":466},[460,48896,48897],{"class":462,"line":2695},[460,48898,522],{"emptyLinePlaceholder":521},[460,48900,48901],{"class":462,"line":2700},[460,48902,48903],{"class":942},"        # 初始化参数\n",[460,48905,48906],{"class":462,"line":2709},[460,48907,48908],{"class":942},"        # 训练集损失函数\n",[460,48910,48911,48914,48916],{"class":462,"line":2718},[460,48912,48913],{"class":466},"        train_loss",[460,48915,894],{"class":887},[460,48917,48747],{"class":900},[460,48919,48920],{"class":462,"line":2723},[460,48921,48922],{"class":942},"        # 训练集准确度\n",[460,48924,48925,48928,48930],{"class":462,"line":2732},[460,48926,48927],{"class":466},"        train_corrects",[460,48929,894],{"class":887},[460,48931,19606],{"class":900},[460,48933,48934],{"class":462,"line":2750},[460,48935,48936],{"class":942},"        # 验证集损失函数\n",[460,48938,48939,48942,48944],{"class":462,"line":2782},[460,48940,48941],{"class":466},"        val_loss",[460,48943,894],{"class":887},[460,48945,48747],{"class":900},[460,48947,48948],{"class":462,"line":2809},[460,48949,48950],{"class":942},"        # 验证集准确度\n",[460,48952,48953,48956,48958],{"class":462,"line":2836},[460,48954,48955],{"class":466},"        val_corrects",[460,48957,894],{"class":887},[460,48959,19606],{"class":900},[460,48961,48962],{"class":462,"line":2856},[460,48963,48964],{"class":942},"        # 训练集样本数量\n",[460,48966,48967,48970,48972],{"class":462,"line":2865},[460,48968,48969],{"class":466},"        train_num",[460,48971,894],{"class":887},[460,48973,19606],{"class":900},[460,48975,48976],{"class":462,"line":2881},[460,48977,48978],{"class":942},"        # 验证集样本数量\n",[460,48980,48981,48984,48986],{"class":462,"line":2887},[460,48982,48983],{"class":466},"        val_num",[460,48985,894],{"class":887},[460,48987,19606],{"class":900},[460,48989,48990],{"class":462,"line":2893},[460,48991,48992],{"class":942},"        # 将数据放到设备,并开始训练\n",[460,48994,48995,48997,48999,49001,49003],{"class":462,"line":2899},[460,48996,19924],{"class":887},[460,48998,48006],{"class":466},[460,49000,11713],{"class":887},[460,49002,48011],{"class":900},[460,49004,49005],{"class":466},"(train_dataloader):\n",[460,49007,49008],{"class":462,"line":2905},[460,49009,49010],{"class":942},"            # 将特征放入到训练设备\n",[460,49012,49013,49016,49018],{"class":462,"line":2911},[460,49014,49015],{"class":466},"            b_x",[460,49017,894],{"class":887},[460,49019,49020],{"class":466},"b_x.to(device)\n",[460,49022,49023],{"class":462,"line":2920},[460,49024,49025],{"class":942},"            # 将标签放入到训练设备当中\n",[460,49027,49028,49031,49033],{"class":462,"line":2929},[460,49029,49030],{"class":466},"            b_y",[460,49032,894],{"class":887},[460,49034,49035],{"class":466},"b_y.to(device)\n",[460,49037,49038],{"class":462,"line":2935},[460,49039,49040],{"class":942},"            # 设置模型为训练模式\n",[460,49042,49043],{"class":462,"line":2948},[460,49044,49045],{"class":466},"            model.train()\n",[460,49047,49048],{"class":462,"line":2954},[460,49049,49050],{"class":942},"            # 将数据放到模型当中,开始前向传播\n",[460,49052,49053],{"class":462,"line":2965},[460,49054,49055],{"class":942},"            # 前向传播过程,输入一个batch,输出为一个batch中对应的预测\n",[460,49057,49058,49061,49063],{"class":462,"line":2976},[460,49059,49060],{"class":466},"            output",[460,49062,894],{"class":887},[460,49064,49065],{"class":466},"model(b_x)\n",[460,49067,49068],{"class":462,"line":2987},[460,49069,49070],{"class":942},"            # 从网络输出 output 的每一行里，找出数值最大的下标（类别），作为模型预测的标签\n",[460,49072,49073,49076,49078,49081,49084,49086,49088],{"class":462,"line":2998},[460,49074,49075],{"class":466},"            pre_lab",[460,49077,894],{"class":887},[460,49079,49080],{"class":466},"torch.argmax(output,",[460,49082,49083],{"class":3380},"dim",[460,49085,894],{"class":887},[460,49087,901],{"class":900},[460,49089,3754],{"class":466},[460,49091,49092],{"class":462,"line":3003},[460,49093,49094],{"class":942},"            # 计算每一个batch的损失函数\n",[460,49096,49097,49100,49102],{"class":462,"line":3008},[460,49098,49099],{"class":466},"            loss",[460,49101,894],{"class":887},[460,49103,49104],{"class":466},"criterion(output,b_y)\n",[460,49106,49107],{"class":462,"line":3018},[460,49108,49109],{"class":942},"            # 将梯度初始化为0\n",[460,49111,49112],{"class":462,"line":3028},[460,49113,49114],{"class":466},"            optimizer.zero_grad()\n",[460,49116,49117],{"class":462,"line":3038},[460,49118,49119],{"class":942},"            # 梯度置为0后再进行反向传播\n",[460,49121,49122],{"class":462,"line":3048},[460,49123,49124],{"class":466},"            loss.backward()\n",[460,49126,49127],{"class":462,"line":3053},[460,49128,49129],{"class":942},"            # 根据网络反向传播的梯度信息来更新网络的参数，以起到降低loss函数计算的作用\n",[460,49131,49132],{"class":462,"line":3058},[460,49133,49134],{"class":466},"            optimizer.step()\n",[460,49136,49137],{"class":462,"line":3068},[460,49138,49139],{"class":942},"            # loss.item()指的是batch的平均损失\n",[460,49141,49142,49145,49147,49150,49152,49155,49157],{"class":462,"line":3078},[460,49143,49144],{"class":466},"            train_loss",[460,49146,3467],{"class":887},[460,49148,49149],{"class":466},"loss.item()",[460,49151,8320],{"class":887},[460,49153,49154],{"class":466},"b_x.size(",[460,49156,936],{"class":900},[460,49158,3754],{"class":466},[460,49160,49161],{"class":462,"line":3088},[460,49162,49163],{"class":942},"            # 计算每个批次中正确预测的数量\n",[460,49165,49166,49169,49171,49174,49176],{"class":462,"line":3098},[460,49167,49168],{"class":466},"            train_corrects",[460,49170,3467],{"class":887},[460,49172,49173],{"class":466},"torch.sum(pre_lab",[460,49175,19471],{"class":887},[460,49177,49178],{"class":466},"b_y.data)\n",[460,49180,49181],{"class":462,"line":3103},[460,49182,49183],{"class":942},"            # 计算目前为止一共处理了多少样本\n",[460,49185,49186,49189,49191,49193,49195],{"class":462,"line":3108},[460,49187,49188],{"class":466},"            train_num",[460,49190,3467],{"class":887},[460,49192,49154],{"class":466},[460,49194,936],{"class":900},[460,49196,3754],{"class":466},[460,49198,49199],{"class":462,"line":3118},[460,49200,49201],{"class":942},"        # 验证数据\n",[460,49203,49204,49206,49209,49211,49213],{"class":462,"line":3128},[460,49205,19924],{"class":887},[460,49207,49208],{"class":466}," step ,(b_x,b_y) ",[460,49210,11713],{"class":887},[460,49212,48011],{"class":900},[460,49214,49215],{"class":466},"(val_dataloader):\n",[460,49217,49218],{"class":462,"line":3138},[460,49219,49220],{"class":942},"            # 将特征放到验证设备当中\n",[460,49222,49223,49225,49227],{"class":462,"line":3148},[460,49224,49015],{"class":466},[460,49226,894],{"class":887},[460,49228,49020],{"class":466},[460,49230,49231],{"class":462,"line":3153},[460,49232,49233],{"class":942},"            # 将标签放到放到训练设备当中\n",[460,49235,49236,49238,49240],{"class":462,"line":3158},[460,49237,49030],{"class":466},[460,49239,894],{"class":887},[460,49241,49035],{"class":466},[460,49243,49244],{"class":462,"line":3168},[460,49245,49246],{"class":942},"            # 开启验证模式，设置模型为评估模式\n",[460,49248,49249],{"class":462,"line":3178},[460,49250,49251],{"class":466},"            model.eval()\n",[460,49253,49254,49257],{"class":462,"line":3188},[460,49255,49256],{"class":887},"            with",[460,49258,49259],{"class":466}," torch.no_grad():\n",[460,49261,49262],{"class":462,"line":3198},[460,49263,49264],{"class":942},"                # 前向传播过程，输入一个batch,输出为一个batch中对应的预测\n",[460,49266,49267,49270,49272],{"class":462,"line":3203},[460,49268,49269],{"class":466},"                output ",[460,49271,894],{"class":887},[460,49273,49274],{"class":466}," model(b_x)\n",[460,49276,49277],{"class":462,"line":3208},[460,49278,49279],{"class":942},"                # 查找每一行中最大值对应的下标\n",[460,49281,49282,49285,49287,49290,49292,49294,49296],{"class":462,"line":3218},[460,49283,49284],{"class":466},"                pre_lab ",[460,49286,894],{"class":887},[460,49288,49289],{"class":466}," torch.argmax(output, ",[460,49291,49083],{"class":3380},[460,49293,894],{"class":887},[460,49295,901],{"class":900},[460,49297,3754],{"class":466},[460,49299,49300],{"class":462,"line":3228},[460,49301,49302],{"class":942},"                # 计算验证集上的当前 batch 损失\n",[460,49304,49305,49308,49310],{"class":462,"line":3238},[460,49306,49307],{"class":466},"                val_batch_loss ",[460,49309,894],{"class":887},[460,49311,49312],{"class":466}," criterion(output, b_y)\n",[460,49314,49315],{"class":462,"line":3248},[460,49316,49317],{"class":942},"                # 对损失函数进行累加（按样本数加权）\n",[460,49319,49320,49323,49325,49328,49330,49333,49335],{"class":462,"line":3253},[460,49321,49322],{"class":466},"                val_loss ",[460,49324,3467],{"class":887},[460,49326,49327],{"class":466}," val_batch_loss.item() ",[460,49329,8320],{"class":887},[460,49331,49332],{"class":466}," b_x.size(",[460,49334,936],{"class":900},[460,49336,3754],{"class":466},[460,49338,49339,49342,49344,49347,49349],{"class":462,"line":3258},[460,49340,49341],{"class":466},"                val_corrects ",[460,49343,3467],{"class":887},[460,49345,49346],{"class":466}," torch.sum(pre_lab ",[460,49348,19471],{"class":887},[460,49350,49351],{"class":466}," b_y.data)\n",[460,49353,49354],{"class":462,"line":3268},[460,49355,49356],{"class":942},"                # 当前用于验证的样本数量\n",[460,49358,49359,49362,49364,49366,49368],{"class":462,"line":3278},[460,49360,49361],{"class":466},"            val_num ",[460,49363,3467],{"class":887},[460,49365,49332],{"class":466},[460,49367,936],{"class":900},[460,49369,3754],{"class":466},[460,49371,49372],{"class":462,"line":3288},[460,49373,49374],{"class":942},"        # 计算并保存每一次迭代的loss值和准确率\n",[460,49376,49377],{"class":462,"line":3298},[460,49378,49379],{"class":942},"        # 计算并保存训练集的loss值\n",[460,49381,49382,49385,49387],{"class":462,"line":3303},[460,49383,49384],{"class":466},"        train_loss_all.append(train_loss",[460,49386,8331],{"class":887},[460,49388,49389],{"class":466},"train_num)\n",[460,49391,49392],{"class":462,"line":3308},[460,49393,49394],{"class":942},"        # 取双精度\n",[460,49396,49397],{"class":462,"line":3318},[460,49398,49399],{"class":942},"        # 计算并保存训练集的准确率\n",[460,49401,49402,49405,49407],{"class":462,"line":3328},[460,49403,49404],{"class":466},"        train_acc_all.append(train_corrects.double().item()",[460,49406,8331],{"class":887},[460,49408,49389],{"class":466},[460,49410,49411],{"class":462,"line":3337},[460,49412,49413],{"class":942},"        # 计算并保存验证集的loss值\n",[460,49415,49416,49419,49421],{"class":462,"line":3347},[460,49417,49418],{"class":466},"        val_loss_all.append(val_loss",[460,49420,8331],{"class":887},[460,49422,49423],{"class":466},"val_num)\n",[460,49425,49426],{"class":462,"line":3352},[460,49427,49428],{"class":942},"        # 计算并保存验证集的准确率\n",[460,49430,49431,49434,49436],{"class":462,"line":3358},[460,49432,49433],{"class":466},"        val_acc_all.append(val_corrects.double().item()",[460,49435,8331],{"class":887},[460,49437,49423],{"class":466},[460,49439,49440],{"class":462,"line":3363},[460,49441,522],{"emptyLinePlaceholder":521},[460,49443,49444],{"class":462,"line":3369},[460,49445,49446],{"class":942},"        # 打印训练一轮的loss值和准确率\n",[460,49448,49449,49451,49453,49455,49457,49460,49462,49465,49467,49470,49472,49474,49476,49478,49481,49483,49485,49488,49490,49492],{"class":462,"line":3386},[460,49450,48856],{"class":900},[460,49452,2174],{"class":466},[460,49454,20113],{"class":1353},[460,49456,48864],{"class":900},[460,49458,49459],{"class":1353},"train loss:",[460,49461,17607],{"class":900},[460,49463,49464],{"class":887},":.4f",[460,49466,612],{"class":900},[460,49468,49469],{"class":1353}," train acc:",[460,49471,17607],{"class":900},[460,49473,49464],{"class":887},[460,49475,612],{"class":900},[460,49477,20113],{"class":1353},[460,49479,49480],{"class":466},".format(epoch,train_loss_all[",[460,49482,17259],{"class":887},[460,49484,901],{"class":900},[460,49486,49487],{"class":466},"],train_acc_all[",[460,49489,17259],{"class":887},[460,49491,901],{"class":900},[460,49493,49494],{"class":466},"]))\n",[460,49496,49497,49499,49501,49503,49505,49508,49510,49512,49514,49517,49519,49521,49523,49525,49528,49530,49532,49535,49537,49539],{"class":462,"line":3392},[460,49498,48856],{"class":900},[460,49500,2174],{"class":466},[460,49502,20113],{"class":1353},[460,49504,48864],{"class":900},[460,49506,49507],{"class":1353},"val loss:",[460,49509,17607],{"class":900},[460,49511,49464],{"class":887},[460,49513,612],{"class":900},[460,49515,49516],{"class":1353}," val acc:",[460,49518,17607],{"class":900},[460,49520,49464],{"class":887},[460,49522,612],{"class":900},[460,49524,20113],{"class":1353},[460,49526,49527],{"class":466},".format(epoch,val_loss_all[",[460,49529,17259],{"class":887},[460,49531,901],{"class":900},[460,49533,49534],{"class":466},"],val_acc_all[",[460,49536,17259],{"class":887},[460,49538,901],{"class":900},[460,49540,49494],{"class":466},[460,49542,49543],{"class":462,"line":3406},[460,49544,522],{"emptyLinePlaceholder":521},[460,49546,49547],{"class":462,"line":3412},[460,49548,49549],{"class":942},"        # 判断准确度--->保存最优模型\n",[460,49551,49552,49554,49557,49559,49561,49563,49565],{"class":462,"line":3431},[460,49553,3702],{"class":887},[460,49555,49556],{"class":466}," val_acc_all[",[460,49558,17259],{"class":887},[460,49560,901],{"class":900},[460,49562,17649],{"class":466},[460,49564,17668],{"class":887},[460,49566,49567],{"class":466},"best_acc:\n",[460,49569,49570],{"class":462,"line":3461},[460,49571,49572],{"class":942},"            # 保存当前模型准确度\n",[460,49574,49575,49578,49580,49582,49585,49587,49589],{"class":462,"line":3473},[460,49576,49577],{"class":466},"            best_acc:",[460,49579,16793],{"class":900},[460,49581,894],{"class":887},[460,49583,49584],{"class":466},"val_acc_all[",[460,49586,17259],{"class":887},[460,49588,901],{"class":900},[460,49590,13307],{"class":466},[460,49592,49593],{"class":462,"line":3479},[460,49594,49595],{"class":942},"            # 保存当前的准确度\n",[460,49597,49598],{"class":462,"line":3490},[460,49599,49600],{"class":942},"            # model.state_dict()是当前模型的所有参数（权重和偏置）\n",[460,49602,49603,49606,49608],{"class":462,"line":3501},[460,49604,49605],{"class":466},"            best_model_wts",[460,49607,894],{"class":887},[460,49609,48719],{"class":466},[460,49611,49612],{"class":462,"line":3511},[460,49613,522],{"emptyLinePlaceholder":521},[460,49615,49616],{"class":462,"line":3517},[460,49617,49618],{"class":942},"        # 计算耗时\n",[460,49620,49621,49624,49626,49629,49631],{"class":462,"line":3523},[460,49622,49623],{"class":466},"        time_use",[460,49625,894],{"class":887},[460,49627,49628],{"class":466},"time.time()",[460,49630,17259],{"class":887},[460,49632,49633],{"class":466},"since\n",[460,49635,49636,49638,49640,49643,49645,49648,49650,49652,49654,49656,49658,49661,49664,49666,49668,49671,49673,49675],{"class":462,"line":3529},[460,49637,48856],{"class":900},[460,49639,2174],{"class":466},[460,49641,49642],{"class":1353},"'训练和验证耗费的时间",[460,49644,17607],{"class":900},[460,49646,49647],{"class":887},":.0f",[460,49649,612],{"class":900},[460,49651,17270],{"class":1353},[460,49653,17607],{"class":900},[460,49655,49647],{"class":887},[460,49657,612],{"class":900},[460,49659,49660],{"class":1353},"s'",[460,49662,49663],{"class":466},".format(time_use",[460,49665,5245],{"class":887},[460,49667,16027],{"class":900},[460,49669,49670],{"class":466},",time_use",[460,49672,2328],{"class":887},[460,49674,16027],{"class":900},[460,49676,6311],{"class":466},[460,49678,49679],{"class":462,"line":3535},[460,49680,49681],{"class":942},"    # 选择最优参数\n",[460,49683,49684],{"class":462,"line":3557},[460,49685,49686],{"class":942},"    # 加载最高准确率下的模型参数\n",[460,49688,49689],{"class":462,"line":3562},[460,49690,49691],{"class":942},"    # model.load_state_dict(best_model_wts)\n",[460,49693,49694,49697,49700],{"class":462,"line":3568},[460,49695,49696],{"class":466},"    torch.save(model.state_dict(best_model_wts), ",[460,49698,49699],{"class":1353},"'.\u002Fbest_model.pth'",[460,49701,3754],{"class":466},[460,49703,49704],{"class":462,"line":3577},[460,49705,49706],{"class":942},"    # 或者写成\n",[460,49708,49709],{"class":462,"line":3583},[460,49710,49711],{"class":942},"    # torch.save(best_model_wts,'.\u002Fbest_model.pth')\n",[460,49713,49714],{"class":462,"line":3616},[460,49715,49716],{"class":942},"    # 保存训练过程,可以使用pandas来进行保存,里边有个DataFrame()可以像列表一样保存数据\n",[460,49718,49719,49722,49724,49727,49730,49732],{"class":462,"line":3622},[460,49720,49721],{"class":466},"    train_process",[460,49723,894],{"class":887},[460,49725,49726],{"class":466},"pd.DataFrame(",[460,49728,49729],{"class":3380},"data",[460,49731,894],{"class":887},[460,49733,18115],{"class":466},[460,49735,49736,49739,49741,49744],{"class":462,"line":3645},[460,49737,49738],{"class":1353},"        \"epoch\"",[460,49740,1357],{"class":466},[460,49742,49743],{"class":900},"range",[460,49745,49746],{"class":466},"(num_epochs),\n",[460,49748,49749,49752],{"class":462,"line":3651},[460,49750,49751],{"class":1353},"        \"train_loss_all\"",[460,49753,49754],{"class":466},":train_loss_all,\n",[460,49756,49757,49760],{"class":462,"line":3668},[460,49758,49759],{"class":1353},"        \"val_loss_all\"",[460,49761,49762],{"class":466},":val_loss_all,\n",[460,49764,49765,49768],{"class":462,"line":3674},[460,49766,49767],{"class":1353},"        \"train_acc_all\"",[460,49769,49770],{"class":466},":train_acc_all,\n",[460,49772,49773,49776],{"class":462,"line":3680},[460,49774,49775],{"class":1353},"        \"val_acc_all\"",[460,49777,49778],{"class":466},":val_acc_all\n",[460,49780,49781],{"class":462,"line":3686},[460,49782,1679],{"class":466},[460,49784,49785],{"class":462,"line":3699},[460,49786,49787],{"class":942},"    # 返回训练保存的过程\n",[460,49789,49790,49792],{"class":462,"line":3715},[460,49791,20605],{"class":887},[460,49793,49794],{"class":466}," train_process\n",[460,49796,49797],{"class":462,"line":3757},[460,49798,522],{"emptyLinePlaceholder":521},[460,49800,49801],{"class":462,"line":3778},[460,49802,49803],{"class":942},"# 将loss值和精度按照图片的形式展示出来\n",[460,49805,49806,49808,49811],{"class":462,"line":3812},[460,49807,48352],{"class":887},[460,49809,49810],{"class":929}," matplot_acc_loss",[460,49812,49813],{"class":466},"(train_process):\n",[460,49815,49816],{"class":462,"line":3830},[460,49817,49818],{"class":942},"    # 设置图的大小\n",[460,49820,49821,49824,49826,49828,49830,49832,49834,49836],{"class":462,"line":3855},[460,49822,49823],{"class":466},"    plt.figure(",[460,49825,48098],{"class":3380},[460,49827,894],{"class":887},[460,49829,2174],{"class":466},[460,49831,5531],{"class":900},[460,49833,3986],{"class":466},[460,49835,918],{"class":900},[460,49837,6311],{"class":466},[460,49839,49840],{"class":462,"line":3861},[460,49841,49842],{"class":942},"    # 设置图中有几张图\n",[460,49844,49845],{"class":462,"line":3867},[460,49846,49847],{"class":942},"    # 把当前画布分成1行2列的子图,当前位置是 第 1 个子图\n",[460,49849,49850],{"class":462,"line":3876},[460,49851,49852],{"class":942},"    # ①loss图\n",[460,49854,49855,49857,49859,49861,49863,49865,49867],{"class":462,"line":3881},[460,49856,48132],{"class":466},[460,49858,901],{"class":900},[460,49860,3986],{"class":466},[460,49862,907],{"class":900},[460,49864,3986],{"class":466},[460,49866,901],{"class":900},[460,49868,3754],{"class":466},[460,49870,49871],{"class":462,"line":3886},[460,49872,49873],{"class":942},"    # 补充:\n",[460,49875,49876],{"class":462,"line":3891},[460,49877,49878],{"class":942},"    # plt.subplot(nrows, ncols, index)\n",[460,49880,49881],{"class":462,"line":3900},[460,49882,49883],{"class":942},"    # nrows：行数\n",[460,49885,49886],{"class":462,"line":3909},[460,49887,49888],{"class":942},"    # ncols：列数\n",[460,49890,49891],{"class":462,"line":3914},[460,49892,49893],{"class":942},"    # index：目前选中第几个子图（从1开始）\n",[460,49895,49897,49900,49903,49906,49909,49911,49914,49916,49919],{"class":462,"line":49896},195,[460,49898,49899],{"class":466},"    plt.plot(train_process[",[460,49901,49902],{"class":1353},"\"epoch\"",[460,49904,49905],{"class":466},"],train_process.train_loss_all,",[460,49907,49908],{"class":1353},"'ro-'",[460,49910,3986],{"class":466},[460,49912,49913],{"class":3380},"label",[460,49915,894],{"class":887},[460,49917,49918],{"class":1353},"'train loss'",[460,49920,3754],{"class":466},[460,49922,49924,49926,49928,49931,49934,49936,49938,49940,49943],{"class":462,"line":49923},196,[460,49925,49899],{"class":466},[460,49927,49902],{"class":1353},[460,49929,49930],{"class":466},"],train_process.val_loss_all,",[460,49932,49933],{"class":1353},"'bs--'",[460,49935,3986],{"class":466},[460,49937,49913],{"class":3380},[460,49939,894],{"class":887},[460,49941,49942],{"class":1353},"'val loss'",[460,49944,3754],{"class":466},[460,49946,49948],{"class":462,"line":49947},197,[460,49949,49950],{"class":942},"    # 添加一个图例\n",[460,49952,49954],{"class":462,"line":49953},198,[460,49955,49956],{"class":466},"    plt.legend()\n",[460,49958,49960],{"class":462,"line":49959},199,[460,49961,49962],{"class":942},"    # 给轴添加标签\n",[460,49964,49966,49969,49972],{"class":462,"line":49965},200,[460,49967,49968],{"class":466},"    plt.xlabel(",[460,49970,49971],{"class":1353},"'epoch'",[460,49973,3754],{"class":466},[460,49975,49977,49980,49983],{"class":462,"line":49976},201,[460,49978,49979],{"class":466},"    plt.ylabel(",[460,49981,49982],{"class":1353},"'loss'",[460,49984,3754],{"class":466},[460,49986,49988],{"class":462,"line":49987},202,[460,49989,49990],{"class":942},"    # ②准确度图\n",[460,49992,49994,49996,49998,50000,50002,50004,50006],{"class":462,"line":49993},203,[460,49995,48132],{"class":466},[460,49997,901],{"class":900},[460,49999,3986],{"class":466},[460,50001,907],{"class":900},[460,50003,3986],{"class":466},[460,50005,907],{"class":900},[460,50007,3754],{"class":466},[460,50009,50011,50013,50015,50018,50020,50022,50024,50026,50029],{"class":462,"line":50010},204,[460,50012,49899],{"class":466},[460,50014,49902],{"class":1353},[460,50016,50017],{"class":466},"],train_process.train_acc_all,",[460,50019,49908],{"class":1353},[460,50021,3986],{"class":466},[460,50023,49913],{"class":3380},[460,50025,894],{"class":887},[460,50027,50028],{"class":1353},"'train acc'",[460,50030,3754],{"class":466},[460,50032,50034,50036,50038,50041,50043,50045,50047,50049,50052],{"class":462,"line":50033},205,[460,50035,49899],{"class":466},[460,50037,49902],{"class":1353},[460,50039,50040],{"class":466},"],train_process.val_acc_all,",[460,50042,49933],{"class":1353},[460,50044,3986],{"class":466},[460,50046,49913],{"class":3380},[460,50048,894],{"class":887},[460,50050,50051],{"class":1353},"'val acc'",[460,50053,3754],{"class":466},[460,50055,50057],{"class":462,"line":50056},206,[460,50058,50059],{"class":942},"    # 添加图例\n",[460,50061,50063],{"class":462,"line":50062},207,[460,50064,49956],{"class":466},[460,50066,50068,50070,50072],{"class":462,"line":50067},208,[460,50069,49968],{"class":466},[460,50071,49902],{"class":1353},[460,50073,3754],{"class":466},[460,50075,50077,50079,50082],{"class":462,"line":50076},209,[460,50078,49979],{"class":466},[460,50080,50081],{"class":1353},"\"acc\"",[460,50083,3754],{"class":466},[460,50085,50087],{"class":462,"line":50086},210,[460,50088,50089],{"class":466},"    plt.show()\n",[460,50091,50093],{"class":462,"line":50092},211,[460,50094,522],{"emptyLinePlaceholder":521},[460,50096,50098],{"class":462,"line":50097},212,[460,50099,50100],{"class":942},"# 正式开始训练:\n",[460,50102,50104,50106,50108,50110,50112],{"class":462,"line":50103},213,[460,50105,18100],{"class":887},[460,50107,47627],{"class":900},[460,50109,19471],{"class":887},[460,50111,47632],{"class":1353},[460,50113,20257],{"class":466},[460,50115,50117],{"class":462,"line":50116},214,[460,50118,50119],{"class":942},"    # 将模型实例化\n",[460,50121,50123,50126,50128],{"class":462,"line":50122},215,[460,50124,50125],{"class":466},"    LeNet",[460,50127,894],{"class":887},[460,50129,50130],{"class":466},"LeNet()\n",[460,50132,50134,50137,50139],{"class":462,"line":50133},216,[460,50135,50136],{"class":466},"    train_dataloader,val_dataloader",[460,50138,894],{"class":887},[460,50140,50141],{"class":466},"train_val_data_process()\n",[460,50143,50145,50147,50149,50152,50155,50157,50159],{"class":462,"line":50144},217,[460,50146,49721],{"class":466},[460,50148,894],{"class":887},[460,50150,50151],{"class":466},"train_model_process(LeNet,train_dataloader,val_dataloader,",[460,50153,50154],{"class":3380},"num_epochs",[460,50156,894],{"class":887},[460,50158,2110],{"class":900},[460,50160,3754],{"class":466},[460,50162,50164],{"class":462,"line":50163},218,[460,50165,50166],{"class":466},"    matplot_acc_loss(train_process)\n",[14,50168,50169],{},"画图的补充点学习：",[14,50171,50172],{},[30,50173],{"alt":32,"src":50174},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-014.png",[103,50176,50177],{"start":482},[43,50178,50179],{},"测试",[451,50181,50183],{"className":46787,"code":50182,"language":46789,"meta":32,"style":32},"import torch\nimport torch.utils.data as Data\nfrom jupyter_client.consoleapp import classes\nfrom torchvision import transforms\n# 导入数据集\nfrom torchvision.datasets import FashionMNIST\nfrom model import LeNet\n\n# 测试数据处理\ndef test_data_process():\n    test_data=FashionMNIST(root='.\u002Fdata',\n                           train=False,\n                           transform=transforms.Compose([transforms.Resize(size=28),transforms.ToTensor()]),\n                           download=True)\n    test_dataloader=Data.DataLoader(dataset=test_data,\n                                    # 这里是一张一张进行测试\n                                    batch_size=1,\n                                    shuffle=True,\n                                    num_workers=0)\n    return test_dataloader\n\n# 定义模型测试函数\ndef test_model_process(model,test_dataloader):\n    # 将模型放到设备当中，先进行判断\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n\n    # 设置初始化参数\n    test_corrects=0.0\n    test_num=0\n\n    # 进行模型测试\n    # 模型在推理的时候只进行前向传播，不再进行反向传播更新梯度了\n    # 不进行梯度计算，可以节省内存，加快运行速度\n    with torch.no_grad():\n        # 从数据中进行\n        for test_data_x,test_data_y in test_dataloader:\n            test_data_x=test_data_x.to(device)\n            test_data_y=test_data_y.to(device)\n            # 设置为验证模式\n            model.eval()\n            # 前向传播过程，输入为测试数据集,输出为对每个样本的预测值\n            output=model(test_data_x)\n            # 查找每一行中最大值对应的下标\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算正确率\n            # .data表示是一个不带梯度信息的tensor\n            # 如果预测正确，则准确度test_corrects加1\n            test_corrects+=torch.sum(pre_lab==test_data_y.data)\n            # 将所有的测试样本进行累计\n            test_num+=test_data_x.size(0)\n\n        # 计算准确度\n        test_acc=test_corrects.double().item()\u002Ftest_num\n        # .item()的作用是：把只含1个数字的 Tensor 转成 Python 的数字\n        print(\"测试的准确率：\",test_acc)\n\n# 实现模型的测试功能\nif __name__==\"__main__\":\n    # 加载模型\n    model=LeNet()\n    # 调用训练好的权重，把之前训练好、保存下来的模型参数重新装回模型里\n    # 使用torch中的load函数加载权重，利用model.load_state_dict将参数加回到模型当中\n    model.load_state_dict(torch.load('best_model.pth'))\n    # 数据加载\n    test_dataloader=test_data_process()\n    # 加载模型测试的函数\n    test_model_process(model,test_dataloader)\n\n    # 验证集推理实现：\n    # 加载数据加载的更详细一些\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n    # 设置类别，这样预测值就不展示数字，就直接展示这个种类了\n    # 顺序不可改变\n    classes=['T-shirt\u002Ftop','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']\n    with torch.no_grad():\n        # 将数据和标签都放到设备当中\n        for b_x,b_y in test_dataloader:\n            b_x=b_x.to(device)\n            b_y=b_y.to(device)\n\n            # 设置模型为验证模式\n            model.eval()\n            # 模型推理结果\n            output=model(b_x)\n            # 获取最大下标，最大下标就是类别号\n            pre_lab=torch.argmax(output,dim=1)\n            # 取出张量中的数值\n            result=pre_lab.item()\n            label=b_y.item()\n            print(\"预测值：\",classes[result],\"------\",\"真实值：\",classes[label])\n",[457,50184,50185,50191,50201,50213,50223,50228,50238,50248,50252,50257,50266,50283,50295,50312,50323,50339,50344,50355,50366,50377,50384,50388,50393,50403,50408,50425,50433,50437,50442,50451,50460,50464,50469,50474,50479,50486,50491,50503,50513,50523,50528,50532,50537,50546,50551,50567,50572,50577,50582,50596,50601,50615,50619,50624,50639,50644,50656,50660,50665,50677,50682,50690,50695,50700,50710,50715,50724,50729,50734,50738,50743,50748,50764,50772,50777,50782,50841,50847,50852,50863,50871,50879,50883,50888,50892,50897,50905,50910,50926,50931,50941,50951],{"__ignoreMap":32},[460,50186,50187,50189],{"class":462,"line":463},[460,50188,46801],{"class":887},[460,50190,46804],{"class":466},[460,50192,50193,50195,50197,50199],{"class":462,"line":476},[460,50194,46801],{"class":887},[460,50196,47822],{"class":466},[460,50198,47790],{"class":887},[460,50200,47827],{"class":466},[460,50202,50203,50205,50208,50210],{"class":462,"line":482},[460,50204,47145],{"class":887},[460,50206,50207],{"class":466}," jupyter_client.consoleapp ",[460,50209,46801],{"class":887},[460,50211,50212],{"class":466}," classes\n",[460,50214,50215,50217,50219,50221],{"class":462,"line":488},[460,50216,47145],{"class":887},[460,50218,47805],{"class":466},[460,50220,46801],{"class":887},[460,50222,47810],{"class":466},[460,50224,50225],{"class":462,"line":494},[460,50226,50227],{"class":942},"# 导入数据集\n",[460,50229,50230,50232,50234,50236],{"class":462,"line":500},[460,50231,47145],{"class":887},[460,50233,47775],{"class":466},[460,50235,46801],{"class":887},[460,50237,47780],{"class":466},[460,50239,50240,50242,50244,50246],{"class":462,"line":506},[460,50241,47145],{"class":887},[460,50243,48319],{"class":466},[460,50245,46801],{"class":887},[460,50247,48324],{"class":466},[460,50249,50250],{"class":462,"line":512},[460,50251,522],{"emptyLinePlaceholder":521},[460,50253,50254],{"class":462,"line":518},[460,50255,50256],{"class":942},"# 测试数据处理\n",[460,50258,50259,50261,50264],{"class":462,"line":525},[460,50260,48352],{"class":887},[460,50262,50263],{"class":929}," test_data_process",[460,50265,48358],{"class":466},[460,50267,50268,50271,50273,50275,50277,50279,50281],{"class":462,"line":531},[460,50269,50270],{"class":466},"    test_data",[460,50272,894],{"class":887},[460,50274,47862],{"class":466},[460,50276,47865],{"class":3380},[460,50278,894],{"class":887},[460,50280,47870],{"class":1353},[460,50282,1363],{"class":466},[460,50284,50285,50288,50290,50293],{"class":462,"line":537},[460,50286,50287],{"class":3380},"                           train",[460,50289,894],{"class":887},[460,50291,50292],{"class":900},"False",[460,50294,1363],{"class":466},[460,50296,50297,50300,50302,50304,50306,50308,50310],{"class":462,"line":543},[460,50298,50299],{"class":3380},"                           transform",[460,50301,894],{"class":887},[460,50303,47899],{"class":466},[460,50305,47902],{"class":3380},[460,50307,894],{"class":887},[460,50309,17612],{"class":900},[460,50311,47910],{"class":466},[460,50313,50314,50317,50319,50321],{"class":462,"line":549},[460,50315,50316],{"class":3380},"                           download",[460,50318,894],{"class":887},[460,50320,47882],{"class":900},[460,50322,3754],{"class":466},[460,50324,50325,50328,50330,50332,50334,50336],{"class":462,"line":555},[460,50326,50327],{"class":466},"    test_dataloader",[460,50329,894],{"class":887},[460,50331,47940],{"class":466},[460,50333,3635],{"class":3380},[460,50335,894],{"class":887},[460,50337,50338],{"class":466},"test_data,\n",[460,50340,50341],{"class":462,"line":560},[460,50342,50343],{"class":942},"                                    # 这里是一张一张进行测试\n",[460,50345,50346,50349,50351,50353],{"class":462,"line":566},[460,50347,50348],{"class":3380},"                                    batch_size",[460,50350,894],{"class":887},[460,50352,901],{"class":900},[460,50354,1363],{"class":466},[460,50356,50357,50360,50362,50364],{"class":462,"line":572},[460,50358,50359],{"class":3380},"                                    shuffle",[460,50361,894],{"class":887},[460,50363,47882],{"class":900},[460,50365,1363],{"class":466},[460,50367,50368,50371,50373,50375],{"class":462,"line":578},[460,50369,50370],{"class":3380},"                                    num_workers",[460,50372,894],{"class":887},[460,50374,936],{"class":900},[460,50376,3754],{"class":466},[460,50378,50379,50381],{"class":462,"line":812},[460,50380,20605],{"class":887},[460,50382,50383],{"class":466}," test_dataloader\n",[460,50385,50386],{"class":462,"line":818},[460,50387,522],{"emptyLinePlaceholder":521},[460,50389,50390],{"class":462,"line":824},[460,50391,50392],{"class":942},"# 定义模型测试函数\n",[460,50394,50395,50397,50400],{"class":462,"line":2074},[460,50396,48352],{"class":887},[460,50398,50399],{"class":929}," test_model_process",[460,50401,50402],{"class":466},"(model,test_dataloader):\n",[460,50404,50405],{"class":462,"line":2088},[460,50406,50407],{"class":942},"    # 将模型放到设备当中，先进行判断\n",[460,50409,50410,50412,50414,50416,50418,50420,50422],{"class":462,"line":2103},[460,50411,47644],{"class":466},[460,50413,894],{"class":887},[460,50415,47651],{"class":1353},[460,50417,3766],{"class":887},[460,50419,47656],{"class":466},[460,50421,3763],{"class":887},[460,50423,50424],{"class":1353}," \"cpu\"\n",[460,50426,50427,50429,50431],{"class":462,"line":2122},[460,50428,47696],{"class":466},[460,50430,894],{"class":887},[460,50432,48694],{"class":466},[460,50434,50435],{"class":462,"line":2144},[460,50436,522],{"emptyLinePlaceholder":521},[460,50438,50439],{"class":462,"line":2158},[460,50440,50441],{"class":942},"    # 设置初始化参数\n",[460,50443,50444,50447,50449],{"class":462,"line":2163},[460,50445,50446],{"class":466},"    test_corrects",[460,50448,894],{"class":887},[460,50450,48747],{"class":900},[460,50452,50453,50456,50458],{"class":462,"line":2168},[460,50454,50455],{"class":466},"    test_num",[460,50457,894],{"class":887},[460,50459,19606],{"class":900},[460,50461,50462],{"class":462,"line":2183},[460,50463,522],{"emptyLinePlaceholder":521},[460,50465,50466],{"class":462,"line":2194},[460,50467,50468],{"class":942},"    # 进行模型测试\n",[460,50470,50471],{"class":462,"line":2199},[460,50472,50473],{"class":942},"    # 模型在推理的时候只进行前向传播，不再进行反向传播更新梯度了\n",[460,50475,50476],{"class":462,"line":2204},[460,50477,50478],{"class":942},"    # 不进行梯度计算，可以节省内存，加快运行速度\n",[460,50480,50481,50484],{"class":462,"line":2212},[460,50482,50483],{"class":887},"    with",[460,50485,49259],{"class":466},[460,50487,50488],{"class":462,"line":2257},[460,50489,50490],{"class":942},"        # 从数据中进行\n",[460,50492,50493,50495,50498,50500],{"class":462,"line":2285},[460,50494,19924],{"class":887},[460,50496,50497],{"class":466}," test_data_x,test_data_y ",[460,50499,11713],{"class":887},[460,50501,50502],{"class":466}," test_dataloader:\n",[460,50504,50505,50508,50510],{"class":462,"line":2298},[460,50506,50507],{"class":466},"            test_data_x",[460,50509,894],{"class":887},[460,50511,50512],{"class":466},"test_data_x.to(device)\n",[460,50514,50515,50518,50520],{"class":462,"line":2303},[460,50516,50517],{"class":466},"            test_data_y",[460,50519,894],{"class":887},[460,50521,50522],{"class":466},"test_data_y.to(device)\n",[460,50524,50525],{"class":462,"line":2308},[460,50526,50527],{"class":942},"            # 设置为验证模式\n",[460,50529,50530],{"class":462,"line":2318},[460,50531,49251],{"class":466},[460,50533,50534],{"class":462,"line":2333},[460,50535,50536],{"class":942},"            # 前向传播过程，输入为测试数据集,输出为对每个样本的预测值\n",[460,50538,50539,50541,50543],{"class":462,"line":2338},[460,50540,49060],{"class":466},[460,50542,894],{"class":887},[460,50544,50545],{"class":466},"model(test_data_x)\n",[460,50547,50548],{"class":462,"line":2343},[460,50549,50550],{"class":942},"            # 查找每一行中最大值对应的下标\n",[460,50552,50553,50555,50557,50559,50561,50563,50565],{"class":462,"line":2353},[460,50554,49075],{"class":466},[460,50556,894],{"class":887},[460,50558,49080],{"class":466},[460,50560,49083],{"class":3380},[460,50562,894],{"class":887},[460,50564,901],{"class":900},[460,50566,3754],{"class":466},[460,50568,50569],{"class":462,"line":2368},[460,50570,50571],{"class":942},"            # 计算正确率\n",[460,50573,50574],{"class":462,"line":2381},[460,50575,50576],{"class":942},"            # .data表示是一个不带梯度信息的tensor\n",[460,50578,50579],{"class":462,"line":2394},[460,50580,50581],{"class":942},"            # 如果预测正确，则准确度test_corrects加1\n",[460,50583,50584,50587,50589,50591,50593],{"class":462,"line":2399},[460,50585,50586],{"class":466},"            test_corrects",[460,50588,3467],{"class":887},[460,50590,49173],{"class":466},[460,50592,19471],{"class":887},[460,50594,50595],{"class":466},"test_data_y.data)\n",[460,50597,50598],{"class":462,"line":2404},[460,50599,50600],{"class":942},"            # 将所有的测试样本进行累计\n",[460,50602,50603,50606,50608,50611,50613],{"class":462,"line":2414},[460,50604,50605],{"class":466},"            test_num",[460,50607,3467],{"class":887},[460,50609,50610],{"class":466},"test_data_x.size(",[460,50612,936],{"class":900},[460,50614,3754],{"class":466},[460,50616,50617],{"class":462,"line":2428},[460,50618,522],{"emptyLinePlaceholder":521},[460,50620,50621],{"class":462,"line":2440},[460,50622,50623],{"class":942},"        # 计算准确度\n",[460,50625,50626,50629,50631,50634,50636],{"class":462,"line":2445},[460,50627,50628],{"class":466},"        test_acc",[460,50630,894],{"class":887},[460,50632,50633],{"class":466},"test_corrects.double().item()",[460,50635,8331],{"class":887},[460,50637,50638],{"class":466},"test_num\n",[460,50640,50641],{"class":462,"line":2450},[460,50642,50643],{"class":942},"        # .item()的作用是：把只含1个数字的 Tensor 转成 Python 的数字\n",[460,50645,50646,50648,50650,50653],{"class":462,"line":2460},[460,50647,48856],{"class":900},[460,50649,2174],{"class":466},[460,50651,50652],{"class":1353},"\"测试的准确率：\"",[460,50654,50655],{"class":466},",test_acc)\n",[460,50657,50658],{"class":462,"line":2473},[460,50659,522],{"emptyLinePlaceholder":521},[460,50661,50662],{"class":462,"line":2487},[460,50663,50664],{"class":942},"# 实现模型的测试功能\n",[460,50666,50667,50669,50671,50673,50675],{"class":462,"line":2492},[460,50668,18100],{"class":887},[460,50670,47627],{"class":900},[460,50672,19471],{"class":887},[460,50674,47632],{"class":1353},[460,50676,20257],{"class":466},[460,50678,50679],{"class":462,"line":2497},[460,50680,50681],{"class":942},"    # 加载模型\n",[460,50683,50684,50686,50688],{"class":462,"line":2505},[460,50685,47696],{"class":466},[460,50687,894],{"class":887},[460,50689,50130],{"class":466},[460,50691,50692],{"class":462,"line":2516},[460,50693,50694],{"class":942},"    # 调用训练好的权重，把之前训练好、保存下来的模型参数重新装回模型里\n",[460,50696,50697],{"class":462,"line":2529},[460,50698,50699],{"class":942},"    # 使用torch中的load函数加载权重，利用model.load_state_dict将参数加回到模型当中\n",[460,50701,50702,50705,50708],{"class":462,"line":2542},[460,50703,50704],{"class":466},"    model.load_state_dict(torch.load(",[460,50706,50707],{"class":1353},"'best_model.pth'",[460,50709,6311],{"class":466},[460,50711,50712],{"class":462,"line":2559},[460,50713,50714],{"class":942},"    # 数据加载\n",[460,50716,50717,50719,50721],{"class":462,"line":2564},[460,50718,50327],{"class":466},[460,50720,894],{"class":887},[460,50722,50723],{"class":466},"test_data_process()\n",[460,50725,50726],{"class":462,"line":2569},[460,50727,50728],{"class":942},"    # 加载模型测试的函数\n",[460,50730,50731],{"class":462,"line":2579},[460,50732,50733],{"class":466},"    test_model_process(model,test_dataloader)\n",[460,50735,50736],{"class":462,"line":2597},[460,50737,522],{"emptyLinePlaceholder":521},[460,50739,50740],{"class":462,"line":2610},[460,50741,50742],{"class":942},"    # 验证集推理实现：\n",[460,50744,50745],{"class":462,"line":2621},[460,50746,50747],{"class":942},"    # 加载数据加载的更详细一些\n",[460,50749,50750,50752,50754,50756,50758,50760,50762],{"class":462,"line":2634},[460,50751,47644],{"class":466},[460,50753,894],{"class":887},[460,50755,47651],{"class":1353},[460,50757,3766],{"class":887},[460,50759,47656],{"class":466},[460,50761,3763],{"class":887},[460,50763,50424],{"class":1353},[460,50765,50766,50768,50770],{"class":462,"line":2648},[460,50767,47696],{"class":466},[460,50769,894],{"class":887},[460,50771,48694],{"class":466},[460,50773,50774],{"class":462,"line":2653},[460,50775,50776],{"class":942},"    # 设置类别，这样预测值就不展示数字，就直接展示这个种类了\n",[460,50778,50779],{"class":462,"line":2658},[460,50780,50781],{"class":942},"    # 顺序不可改变\n",[460,50783,50784,50787,50789,50791,50794,50796,50799,50801,50804,50806,50809,50811,50814,50816,50819,50821,50824,50826,50829,50831,50834,50836,50839],{"class":462,"line":2670},[460,50785,50786],{"class":466},"    classes",[460,50788,894],{"class":887},[460,50790,17601],{"class":466},[460,50792,50793],{"class":1353},"'T-shirt\u002Ftop'",[460,50795,3986],{"class":466},[460,50797,50798],{"class":1353},"'Trouser'",[460,50800,3986],{"class":466},[460,50802,50803],{"class":1353},"'Pullover'",[460,50805,3986],{"class":466},[460,50807,50808],{"class":1353},"'Dress'",[460,50810,3986],{"class":466},[460,50812,50813],{"class":1353},"'Coat'",[460,50815,3986],{"class":466},[460,50817,50818],{"class":1353},"'Sandal'",[460,50820,3986],{"class":466},[460,50822,50823],{"class":1353},"'Shirt'",[460,50825,3986],{"class":466},[460,50827,50828],{"class":1353},"'Sneaker'",[460,50830,3986],{"class":466},[460,50832,50833],{"class":1353},"'Bag'",[460,50835,3986],{"class":466},[460,50837,50838],{"class":1353},"'Ankle boot'",[460,50840,13307],{"class":466},[460,50842,50843,50845],{"class":462,"line":2683},[460,50844,50483],{"class":887},[460,50846,49259],{"class":466},[460,50848,50849],{"class":462,"line":2695},[460,50850,50851],{"class":942},"        # 将数据和标签都放到设备当中\n",[460,50853,50854,50856,50859,50861],{"class":462,"line":2700},[460,50855,19924],{"class":887},[460,50857,50858],{"class":466}," b_x,b_y ",[460,50860,11713],{"class":887},[460,50862,50502],{"class":466},[460,50864,50865,50867,50869],{"class":462,"line":2709},[460,50866,49015],{"class":466},[460,50868,894],{"class":887},[460,50870,49020],{"class":466},[460,50872,50873,50875,50877],{"class":462,"line":2718},[460,50874,49030],{"class":466},[460,50876,894],{"class":887},[460,50878,49035],{"class":466},[460,50880,50881],{"class":462,"line":2723},[460,50882,522],{"emptyLinePlaceholder":521},[460,50884,50885],{"class":462,"line":2732},[460,50886,50887],{"class":942},"            # 设置模型为验证模式\n",[460,50889,50890],{"class":462,"line":2750},[460,50891,49251],{"class":466},[460,50893,50894],{"class":462,"line":2782},[460,50895,50896],{"class":942},"            # 模型推理结果\n",[460,50898,50899,50901,50903],{"class":462,"line":2809},[460,50900,49060],{"class":466},[460,50902,894],{"class":887},[460,50904,49065],{"class":466},[460,50906,50907],{"class":462,"line":2836},[460,50908,50909],{"class":942},"            # 获取最大下标，最大下标就是类别号\n",[460,50911,50912,50914,50916,50918,50920,50922,50924],{"class":462,"line":2856},[460,50913,49075],{"class":466},[460,50915,894],{"class":887},[460,50917,49080],{"class":466},[460,50919,49083],{"class":3380},[460,50921,894],{"class":887},[460,50923,901],{"class":900},[460,50925,3754],{"class":466},[460,50927,50928],{"class":462,"line":2865},[460,50929,50930],{"class":942},"            # 取出张量中的数值\n",[460,50932,50933,50936,50938],{"class":462,"line":2881},[460,50934,50935],{"class":466},"            result",[460,50937,894],{"class":887},[460,50939,50940],{"class":466},"pre_lab.item()\n",[460,50942,50943,50946,50948],{"class":462,"line":2887},[460,50944,50945],{"class":466},"            label",[460,50947,894],{"class":887},[460,50949,50950],{"class":466},"b_y.item()\n",[460,50952,50953,50956,50958,50961,50964,50967,50969,50972],{"class":462,"line":2893},[460,50954,50955],{"class":900},"            print",[460,50957,2174],{"class":466},[460,50959,50960],{"class":1353},"\"预测值：\"",[460,50962,50963],{"class":466},",classes[result],",[460,50965,50966],{"class":1353},"\"------\"",[460,50968,3986],{"class":466},[460,50970,50971],{"class":1353},"\"真实值：\"",[460,50973,50974],{"class":466},",classes[label])\n",[14,50976,50977],{},"（2）AlexNet",[103,50979,50980],{},[43,50981,50982],{},"神经网络构建",[451,50984,50986],{"className":46787,"code":50985,"language":46789,"meta":32,"style":32},"import torch\nfrom torch import nn\nfrom torchsummary import summary\nimport torch.nn.functional as F\n\nclass AlexNet(nn.Module):\n    def __init__(self):\n        super(AlexNet,self).__init__()\n        self.ReLu=nn.ReLU()\n        self.c1=nn.Conv2d(in_channels=1,out_channels=96,kernel_size=11,stride=4)\n        self.s2=nn.MaxPool2d(kernel_size=3,stride=2)\n        self.c3=nn.Conv2d(in_channels=96,out_channels=256,kernel_size=5,padding=2)\n        self.s4=nn.MaxPool2d(kernel_size=3,stride=2)\n        self.c5=nn.Conv2d(in_channels=256,out_channels=384,kernel_size=3,padding=1)\n        self.c6=nn.Conv2d(in_channels=384,out_channels=384,kernel_size=3,padding=1)\n        self.c7=nn.Conv2d(in_channels=384,out_channels=256,kernel_size=3,padding=1)\n        self.s8=nn.MaxPool2d(kernel_size=3,stride=2)\n        # 定义平展层\n        self.flatten=nn.Flatten()\n       # 定义全连接层\n        self.f1=nn.Linear(6*6*256,4096)\n        self.f2=nn.Linear(4096,4096)\n        self.f3=nn.Linear(4096,10)\n\n    # 定义前向传播\n    def forward(self,x):\n        x=self.ReLu(self.c1(x))\n        x=self.s2(x)\n        x=self.ReLu(self.c3(x))\n        x=self.s4(x)\n        x=self.ReLu(self.c5(x))\n        x=self.ReLu(self.c6(x))\n        x=self.ReLu(self.c7(x))\n        x=self.s8(x)\n\n        # 展平加线性全连接层\n        x=self.flatten(x)\n        x=self.ReLu(self.f1(x))\n        # 还需要dropout对神经元随机进行失活\n        x=F.dropout(x,0.5)\n        x=self.ReLu(self.f2(x))\n        x=F.dropout(x,0.5)\n        # 直接输出\n        x=self.f3(x)\n        # 前向传播输出\n        return x\n# 定义主函数，用于测试神经网络是否可以正常工作\nif __name__==\"__main__\":\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n    # 模型实例化，然后将实例化的模型放到设备中\n    model=AlexNet().to(device)\n    print(summary(model,(1,227,227)))\n",[457,50987,50988,50994,51004,51014,51026,51030,51047,51055,51070,51082,51124,51151,51194,51220,51264,51307,51350,51377,51381,51391,51396,51424,51443,51462,51466,51471,51479,51494,51504,51518,51528,51543,51558,51573,51584,51588,51593,51603,51618,51623,51637,51652,51664,51669,51680,51685,51691,51696,51708,51728,51733,51742],{"__ignoreMap":32},[460,50989,50990,50992],{"class":462,"line":463},[460,50991,46801],{"class":887},[460,50993,46804],{"class":466},[460,50995,50996,50998,51000,51002],{"class":462,"line":476},[460,50997,47145],{"class":887},[460,50999,47148],{"class":466},[460,51001,46801],{"class":887},[460,51003,47153],{"class":466},[460,51005,51006,51008,51010,51012],{"class":462,"line":482},[460,51007,47145],{"class":887},[460,51009,47165],{"class":466},[460,51011,46801],{"class":887},[460,51013,47170],{"class":466},[460,51015,51016,51018,51021,51023],{"class":462,"line":488},[460,51017,46801],{"class":887},[460,51019,51020],{"class":466}," torch.nn.functional ",[460,51022,47790],{"class":887},[460,51024,51025],{"class":466}," F\n",[460,51027,51028],{"class":462,"line":494},[460,51029,522],{"emptyLinePlaceholder":521},[460,51031,51032,51034,51037,51039,51041,51043,51045],{"class":462,"line":500},[460,51033,31148],{"class":887},[460,51035,51036],{"class":929}," AlexNet",[460,51038,2174],{"class":466},[460,51040,47186],{"class":929},[460,51042,6000],{"class":466},[460,51044,47191],{"class":929},[460,51046,47194],{"class":466},[460,51048,51049,51051,51053],{"class":462,"line":506},[460,51050,47209],{"class":887},[460,51052,47212],{"class":900},[460,51054,47215],{"class":466},[460,51056,51057,51059,51062,51064,51066,51068],{"class":462,"line":512},[460,51058,47225],{"class":900},[460,51060,51061],{"class":466},"(AlexNet,",[460,51063,47231],{"class":900},[460,51065,3596],{"class":466},[460,51067,47236],{"class":900},[460,51069,10758],{"class":466},[460,51071,51072,51074,51077,51079],{"class":462,"line":518},[460,51073,47252],{"class":900},[460,51075,51076],{"class":466},".ReLu",[460,51078,894],{"class":887},[460,51080,51081],{"class":466},"nn.ReLU()\n",[460,51083,51084,51086,51088,51090,51092,51094,51096,51098,51100,51102,51104,51106,51108,51110,51112,51114,51116,51118,51120,51122],{"class":462,"line":525},[460,51085,47252],{"class":900},[460,51087,47255],{"class":466},[460,51089,894],{"class":887},[460,51091,47260],{"class":466},[460,51093,47263],{"class":3380},[460,51095,894],{"class":887},[460,51097,901],{"class":900},[460,51099,3986],{"class":466},[460,51101,47272],{"class":3380},[460,51103,894],{"class":887},[460,51105,16954],{"class":900},[460,51107,3986],{"class":466},[460,51109,47281],{"class":3380},[460,51111,894],{"class":887},[460,51113,12812],{"class":900},[460,51115,3986],{"class":466},[460,51117,47336],{"class":3380},[460,51119,894],{"class":887},[460,51121,918],{"class":900},[460,51123,3754],{"class":466},[460,51125,51126,51128,51130,51132,51135,51137,51139,51141,51143,51145,51147,51149],{"class":462,"line":531},[460,51127,47252],{"class":900},[460,51129,47320],{"class":466},[460,51131,894],{"class":887},[460,51133,51134],{"class":466},"nn.MaxPool2d(",[460,51136,47281],{"class":3380},[460,51138,894],{"class":887},[460,51140,913],{"class":900},[460,51142,3986],{"class":466},[460,51144,47336],{"class":3380},[460,51146,894],{"class":887},[460,51148,907],{"class":900},[460,51150,3754],{"class":466},[460,51152,51153,51155,51157,51159,51161,51163,51165,51167,51169,51171,51173,51176,51178,51180,51182,51184,51186,51188,51190,51192],{"class":462,"line":537},[460,51154,47252],{"class":900},[460,51156,47349],{"class":466},[460,51158,894],{"class":887},[460,51160,47260],{"class":466},[460,51162,47263],{"class":3380},[460,51164,894],{"class":887},[460,51166,16954],{"class":900},[460,51168,3986],{"class":466},[460,51170,47272],{"class":3380},[460,51172,894],{"class":887},[460,51174,51175],{"class":900},"256",[460,51177,3986],{"class":466},[460,51179,47281],{"class":3380},[460,51181,894],{"class":887},[460,51183,7290],{"class":900},[460,51185,3986],{"class":466},[460,51187,47290],{"class":3380},[460,51189,894],{"class":887},[460,51191,907],{"class":900},[460,51193,3754],{"class":466},[460,51195,51196,51198,51200,51202,51204,51206,51208,51210,51212,51214,51216,51218],{"class":462,"line":543},[460,51197,47252],{"class":900},[460,51199,47384],{"class":466},[460,51201,894],{"class":887},[460,51203,51134],{"class":466},[460,51205,47281],{"class":3380},[460,51207,894],{"class":887},[460,51209,913],{"class":900},[460,51211,3986],{"class":466},[460,51213,47336],{"class":3380},[460,51215,894],{"class":887},[460,51217,907],{"class":900},[460,51219,3754],{"class":466},[460,51221,51222,51224,51227,51229,51231,51233,51235,51237,51239,51241,51243,51246,51248,51250,51252,51254,51256,51258,51260,51262],{"class":462,"line":549},[460,51223,47252],{"class":900},[460,51225,51226],{"class":466},".c5",[460,51228,894],{"class":887},[460,51230,47260],{"class":466},[460,51232,47263],{"class":3380},[460,51234,894],{"class":887},[460,51236,51175],{"class":900},[460,51238,3986],{"class":466},[460,51240,47272],{"class":3380},[460,51242,894],{"class":887},[460,51244,51245],{"class":900},"384",[460,51247,3986],{"class":466},[460,51249,47281],{"class":3380},[460,51251,894],{"class":887},[460,51253,913],{"class":900},[460,51255,3986],{"class":466},[460,51257,47290],{"class":3380},[460,51259,894],{"class":887},[460,51261,901],{"class":900},[460,51263,3754],{"class":466},[460,51265,51266,51268,51271,51273,51275,51277,51279,51281,51283,51285,51287,51289,51291,51293,51295,51297,51299,51301,51303,51305],{"class":462,"line":555},[460,51267,47252],{"class":900},[460,51269,51270],{"class":466},".c6",[460,51272,894],{"class":887},[460,51274,47260],{"class":466},[460,51276,47263],{"class":3380},[460,51278,894],{"class":887},[460,51280,51245],{"class":900},[460,51282,3986],{"class":466},[460,51284,47272],{"class":3380},[460,51286,894],{"class":887},[460,51288,51245],{"class":900},[460,51290,3986],{"class":466},[460,51292,47281],{"class":3380},[460,51294,894],{"class":887},[460,51296,913],{"class":900},[460,51298,3986],{"class":466},[460,51300,47290],{"class":3380},[460,51302,894],{"class":887},[460,51304,901],{"class":900},[460,51306,3754],{"class":466},[460,51308,51309,51311,51314,51316,51318,51320,51322,51324,51326,51328,51330,51332,51334,51336,51338,51340,51342,51344,51346,51348],{"class":462,"line":560},[460,51310,47252],{"class":900},[460,51312,51313],{"class":466},".c7",[460,51315,894],{"class":887},[460,51317,47260],{"class":466},[460,51319,47263],{"class":3380},[460,51321,894],{"class":887},[460,51323,51245],{"class":900},[460,51325,3986],{"class":466},[460,51327,47272],{"class":3380},[460,51329,894],{"class":887},[460,51331,51175],{"class":900},[460,51333,3986],{"class":466},[460,51335,47281],{"class":3380},[460,51337,894],{"class":887},[460,51339,913],{"class":900},[460,51341,3986],{"class":466},[460,51343,47290],{"class":3380},[460,51345,894],{"class":887},[460,51347,901],{"class":900},[460,51349,3754],{"class":466},[460,51351,51352,51354,51357,51359,51361,51363,51365,51367,51369,51371,51373,51375],{"class":462,"line":566},[460,51353,47252],{"class":900},[460,51355,51356],{"class":466},".s8",[460,51358,894],{"class":887},[460,51360,51134],{"class":466},[460,51362,47281],{"class":3380},[460,51364,894],{"class":887},[460,51366,913],{"class":900},[460,51368,3986],{"class":466},[460,51370,47336],{"class":3380},[460,51372,894],{"class":887},[460,51374,907],{"class":900},[460,51376,3754],{"class":466},[460,51378,51379],{"class":462,"line":572},[460,51380,47409],{"class":942},[460,51382,51383,51385,51387,51389],{"class":462,"line":578},[460,51384,47252],{"class":900},[460,51386,47416],{"class":466},[460,51388,894],{"class":887},[460,51390,47421],{"class":466},[460,51392,51393],{"class":462,"line":812},[460,51394,51395],{"class":942},"       # 定义全连接层\n",[460,51397,51398,51400,51403,51405,51407,51409,51411,51413,51415,51417,51419,51422],{"class":462,"line":818},[460,51399,47252],{"class":900},[460,51401,51402],{"class":466},".f1",[460,51404,894],{"class":887},[460,51406,47438],{"class":466},[460,51408,4064],{"class":900},[460,51410,8320],{"class":887},[460,51412,4064],{"class":900},[460,51414,8320],{"class":887},[460,51416,51175],{"class":900},[460,51418,3986],{"class":466},[460,51420,51421],{"class":900},"4096",[460,51423,3754],{"class":466},[460,51425,51426,51428,51431,51433,51435,51437,51439,51441],{"class":462,"line":824},[460,51427,47252],{"class":900},[460,51429,51430],{"class":466},".f2",[460,51432,894],{"class":887},[460,51434,47438],{"class":466},[460,51436,51421],{"class":900},[460,51438,3986],{"class":466},[460,51440,51421],{"class":900},[460,51442,3754],{"class":466},[460,51444,51445,51447,51450,51452,51454,51456,51458,51460],{"class":462,"line":2074},[460,51446,47252],{"class":900},[460,51448,51449],{"class":466},".f3",[460,51451,894],{"class":887},[460,51453,47438],{"class":466},[460,51455,51421],{"class":900},[460,51457,3986],{"class":466},[460,51459,2096],{"class":900},[460,51461,3754],{"class":466},[460,51463,51464],{"class":462,"line":2088},[460,51465,522],{"emptyLinePlaceholder":521},[460,51467,51468],{"class":462,"line":2103},[460,51469,51470],{"class":942},"    # 定义前向传播\n",[460,51472,51473,51475,51477],{"class":462,"line":2122},[460,51474,47209],{"class":887},[460,51476,47500],{"class":929},[460,51478,47503],{"class":466},[460,51480,51481,51483,51485,51487,51490,51492],{"class":462,"line":2144},[460,51482,47508],{"class":466},[460,51484,894],{"class":887},[460,51486,47231],{"class":900},[460,51488,51489],{"class":466},".ReLu(",[460,51491,47231],{"class":900},[460,51493,47520],{"class":466},[460,51495,51496,51498,51500,51502],{"class":462,"line":2158},[460,51497,47508],{"class":466},[460,51499,894],{"class":887},[460,51501,47231],{"class":900},[460,51503,47531],{"class":466},[460,51505,51506,51508,51510,51512,51514,51516],{"class":462,"line":2163},[460,51507,47508],{"class":466},[460,51509,894],{"class":887},[460,51511,47231],{"class":900},[460,51513,51489],{"class":466},[460,51515,47231],{"class":900},[460,51517,47546],{"class":466},[460,51519,51520,51522,51524,51526],{"class":462,"line":2168},[460,51521,47508],{"class":466},[460,51523,894],{"class":887},[460,51525,47231],{"class":900},[460,51527,47557],{"class":466},[460,51529,51530,51532,51534,51536,51538,51540],{"class":462,"line":2183},[460,51531,47508],{"class":466},[460,51533,894],{"class":887},[460,51535,47231],{"class":900},[460,51537,51489],{"class":466},[460,51539,47231],{"class":900},[460,51541,51542],{"class":466},".c5(x))\n",[460,51544,51545,51547,51549,51551,51553,51555],{"class":462,"line":2194},[460,51546,47508],{"class":466},[460,51548,894],{"class":887},[460,51550,47231],{"class":900},[460,51552,51489],{"class":466},[460,51554,47231],{"class":900},[460,51556,51557],{"class":466},".c6(x))\n",[460,51559,51560,51562,51564,51566,51568,51570],{"class":462,"line":2199},[460,51561,47508],{"class":466},[460,51563,894],{"class":887},[460,51565,47231],{"class":900},[460,51567,51489],{"class":466},[460,51569,47231],{"class":900},[460,51571,51572],{"class":466},".c7(x))\n",[460,51574,51575,51577,51579,51581],{"class":462,"line":2204},[460,51576,47508],{"class":466},[460,51578,894],{"class":887},[460,51580,47231],{"class":900},[460,51582,51583],{"class":466},".s8(x)\n",[460,51585,51586],{"class":462,"line":2212},[460,51587,522],{"emptyLinePlaceholder":521},[460,51589,51590],{"class":462,"line":2257},[460,51591,51592],{"class":942},"        # 展平加线性全连接层\n",[460,51594,51595,51597,51599,51601],{"class":462,"line":2285},[460,51596,47508],{"class":466},[460,51598,894],{"class":887},[460,51600,47231],{"class":900},[460,51602,47568],{"class":466},[460,51604,51605,51607,51609,51611,51613,51615],{"class":462,"line":2298},[460,51606,47508],{"class":466},[460,51608,894],{"class":887},[460,51610,47231],{"class":900},[460,51612,51489],{"class":466},[460,51614,47231],{"class":900},[460,51616,51617],{"class":466},".f1(x))\n",[460,51619,51620],{"class":462,"line":2303},[460,51621,51622],{"class":942},"        # 还需要dropout对神经元随机进行失活\n",[460,51624,51625,51627,51629,51632,51635],{"class":462,"line":2308},[460,51626,47508],{"class":466},[460,51628,894],{"class":887},[460,51630,51631],{"class":466},"F.dropout(x,",[460,51633,51634],{"class":900},"0.5",[460,51636,3754],{"class":466},[460,51638,51639,51641,51643,51645,51647,51649],{"class":462,"line":2318},[460,51640,47508],{"class":466},[460,51642,894],{"class":887},[460,51644,47231],{"class":900},[460,51646,51489],{"class":466},[460,51648,47231],{"class":900},[460,51650,51651],{"class":466},".f2(x))\n",[460,51653,51654,51656,51658,51660,51662],{"class":462,"line":2333},[460,51655,47508],{"class":466},[460,51657,894],{"class":887},[460,51659,51631],{"class":466},[460,51661,51634],{"class":900},[460,51663,3754],{"class":466},[460,51665,51666],{"class":462,"line":2338},[460,51667,51668],{"class":942},"        # 直接输出\n",[460,51670,51671,51673,51675,51677],{"class":462,"line":2343},[460,51672,47508],{"class":466},[460,51674,894],{"class":887},[460,51676,47231],{"class":900},[460,51678,51679],{"class":466},".f3(x)\n",[460,51681,51682],{"class":462,"line":2353},[460,51683,51684],{"class":942},"        # 前向传播输出\n",[460,51686,51687,51689],{"class":462,"line":2368},[460,51688,31206],{"class":887},[460,51690,47616],{"class":466},[460,51692,51693],{"class":462,"line":2381},[460,51694,51695],{"class":942},"# 定义主函数，用于测试神经网络是否可以正常工作\n",[460,51697,51698,51700,51702,51704,51706],{"class":462,"line":2394},[460,51699,18100],{"class":887},[460,51701,47627],{"class":900},[460,51703,19471],{"class":887},[460,51705,47632],{"class":1353},[460,51707,20257],{"class":466},[460,51709,51710,51712,51714,51716,51718,51720,51722,51724,51726],{"class":462,"line":2399},[460,51711,47644],{"class":466},[460,51713,894],{"class":887},[460,51715,46860],{"class":466},[460,51717,47651],{"class":1353},[460,51719,3766],{"class":887},[460,51721,47656],{"class":466},[460,51723,3763],{"class":887},[460,51725,46885],{"class":1353},[460,51727,3754],{"class":466},[460,51729,51730],{"class":462,"line":2404},[460,51731,51732],{"class":942},"    # 模型实例化，然后将实例化的模型放到设备中\n",[460,51734,51735,51737,51739],{"class":462,"line":2414},[460,51736,47696],{"class":466},[460,51738,894],{"class":887},[460,51740,51741],{"class":466},"AlexNet().to(device)\n",[460,51743,51744,51746,51748,51750,51752,51755,51757,51759],{"class":462,"line":2428},[460,51745,47706],{"class":900},[460,51747,47709],{"class":466},[460,51749,901],{"class":900},[460,51751,3986],{"class":466},[460,51753,51754],{"class":900},"227",[460,51756,3986],{"class":466},[460,51758,51754],{"class":900},[460,51760,47722],{"class":466},[103,51762,51763],{"start":476},[43,51764,47735],{},[451,51766,51768],{"className":46787,"code":51767,"language":46789,"meta":32,"style":32},"import copy\nimport time\nimport pandas as pd\nimport torch\nfrom torch.utils.data import Dataset\nfrom torchvision.datasets import FashionMNIST\nfrom torchvision import transforms\nimport torch.utils.data as Data\nimport matplotlib.pyplot as plt\n# 导入模型\nfrom model import AlexNet\nfrom torch import nn\n\n\n# 处理训练集与验证集函数--->划分数据集\ndef train_val_data_process():\n    train_data=FashionMNIST('.\u002Fdata',\n                            train=True,\n                            transform=transforms.Compose([transforms.Resize(size=227),transforms.ToTensor()]),\n                            download=True)\n    train_data,val_data=Data.random_split(train_data,[round(0.8*len(train_data)),round(0.2*len(train_data))])\n    train_dataloader = Data.DataLoader(dataset=train_data,\n                                       batch_size=128,\n                                       shuffle=True,\n                                       # 规定8个进程\n                                       num_workers=8)\n    val_dataloader=Data.DataLoader(dataset=val_data,\n                                   batch_size=128,\n                                   shuffle=True,\n                                   num_workers=8)\n    return train_dataloader,val_dataloader\n\n# 验证是否出错\n# train_val_data_process()\n\n# 定义模型训练函数\ndef train_model_process(model,train_dataloader,val_dataloader,num_epochs):\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else 'cpu')\n\n\n    # 定义优化器\n    # model.parameters()表示把模型里所有可训练的参数（权重、偏置）传给优化器\n    # lr为学习率\n    optimizer=torch.optim.Adam(model.parameters(),lr=0.001)\n\n    # 定义损失函数使用交叉熵损失函数\n    criterion=nn.CrossEntropyLoss()\n\n    # 将模型放到GPU中进行训练\n    model=model.to(device)\n    # 复制当前模型的参数\n    # 把model（PyTorch的神经网络）的当前参数（权重 \u002F 偏置等）完整复制一份，放到best_model_wts变量里\n    # ，保证这份拷贝不会随着后续训练改变 —— 常用于保存“到目前为止表现最好的模型参数”\n    best_model_wts=copy.deepcopy(model.state_dict())\n\n\n    # 初始化参数\n    # 最高准确度\n    best_acc=0.0\n    # 训练集损失列表\n    train_loss_all=[]\n    # 验证集函数列表\n    val_loss_all=[]\n    # 训练集准确度列表\n    train_acc_all=[]\n    # 验证集准确度列表\n    val_acc_all=[]\n\n    # 保存当前时间--->方便看每轮训练的时间\n    since=time.time()\n\n\n    # 准备工作完成--->开始训练模型\n    for epoch in range(num_epochs):\n        print(\"Epoch {}\u002F{}\".format(epoch,num_epochs-1))\n        print(\"-\"*10)\n\n        # 初始化参数\n        # 训练集损失函数\n        train_loss=0.0\n        # 训练集准确度\n        train_corrects=0\n        # 验证集损失函数\n        val_loss=0.0\n        # 验证集准确度\n        val_corrects=0\n        # 训练集样本数量\n        train_num=0\n        # 验证集样本数量\n        val_num=0\n        # 将数据放到设备,并开始训练\n        for step,(b_x,b_y) in enumerate(train_dataloader):\n            # 将特征放入到训练设备\n            b_x=b_x.to(device)\n            # 将标签放入到训练设备当中\n            b_y=b_y.to(device)\n            # 设置模型为训练模式\n            model.train()\n            # 将数据放到模型当中,开始前向传播\n            # 前向传播过程,输入一个batch,输出为一个batch中对应的预测\n            output=model(b_x)\n            # 从网络输出 output 的每一行里，找出数值最大的下标（类别），作为模型预测的标签\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算每一个batch的损失函数\n            loss=criterion(output,b_y)\n            # 将梯度初始化为0\n            optimizer.zero_grad()\n            # 梯度置为0后再进行反向传播\n            loss.backward()\n            # 根据网络反向传播的梯度信息来更新网络的参数，以起到降低loss函数计算的作用\n            optimizer.step()\n            # loss.item()指的是batch的平均损失\n            train_loss+=loss.item()*b_x.size(0)\n            # 计算每个批次中正确预测的数量\n            train_corrects+=torch.sum(pre_lab==b_y.data)\n            # 计算目前为止一共处理了多少样本\n            train_num+=b_x.size(0)\n        # 验证数据\n        for step ,(b_x,b_y) in enumerate(val_dataloader):\n            # 将特征放到验证设备当中\n            b_x=b_x.to(device)\n            # 将标签放到放到训练设备当中\n            b_y=b_y.to(device)\n            # 开启验证模式，设置模型为评估模式\n            model.eval()\n            # 验证时不计算梯度以节省内存\u002F计算\n            with torch.no_grad():\n                # 前向传播过程，输入一个batch,输出为一个batch中对应的预测\n                output=model(b_x)\n                # 查找每一行中最大值对应的下标\n                pre_lab=torch.argmax(output,dim=1)\n                # 计算验证集上的当前 batch 损失\n                val_batch_loss=criterion(output,b_y)\n                # 对损失函数进行累加（按样本数加权）\n                val_loss+=val_batch_loss.item()*b_x.size(0)\n                val_corrects+=torch.sum(pre_lab==b_y.data)\n            # 当前用于验证的样本数量\n            val_num+=b_x.size(0)\n        # 计算并保存每一次迭代的loss值和准确率\n        # 计算并保存训练集的loss值\n        train_loss_all.append(train_loss\u002Ftrain_num)\n        # 取双精度\n        # 计算并保存训练集的准确率\n        train_acc_all.append(train_corrects.double().item()\u002Ftrain_num)\n        # 计算并保存验证集的loss值\n        val_loss_all.append(val_loss\u002Fval_num)\n        # 计算并保存验证集的准确率\n        val_acc_all.append(val_corrects.double().item()\u002Fval_num)\n\n        # 打印训练一轮的loss值和准确率\n        print('{}train loss:{:.4f} train acc:{:.4f}'.format(epoch,train_loss_all[-1],train_acc_all[-1]))\n        print('{}val loss:{:.4f} val acc:{:.4f}'.format(epoch,val_loss_all[-1],val_acc_all[-1]))\n\n        # 判断准确度--->保存最优模型\n        if val_acc_all[-1]>best_acc:\n            # 保存当前模型准确度\n            best_acc:float=val_acc_all[-1]\n            # 保存当前的准确度\n            # model.state_dict()是当前模型的所有参数（权重和偏置）\n            best_model_wts=copy.deepcopy(model.state_dict())\n\n        # 计算耗时\n        time_use=time.time()-since\n        print('训练和验证耗费的时间{:.0f}m{:.0f}s'.format(time_use\u002F\u002F60,time_use%60))\n    # 选择最优参数并保存\n    # 保存最佳模型权重字典\n    torch.save(best_model_wts,'.\u002Fbest_model.pth')\n    # 保存训练过程,可以使用pandas来进行保存,里边有个DataFrame()可以像列表一样保存数据\n    train_process=pd.DataFrame(data={\n        \"epoch\":range(num_epochs),\n        \"train_loss_all\":train_loss_all,\n        \"val_loss_all\":val_loss_all,\n        \"train_acc_all\":train_acc_all,\n        \"val_acc_all\":val_acc_all\n    })\n    # 返回训练保存的过程\n    return train_process\n\n# 将loss值和精度按照图片的形式展示出来\ndef matplot_acc_loss(train_process):\n    # 设置图的大小\n    plt.figure(figsize=(12,4))\n    # 设置图中有几张图\n    # 把当前画布分成1行2列的子图,当前位置是 第 1 个子图\n    # ①loss图\n    plt.subplot(1,2,1)\n    # 补充:\n    # plt.subplot(nrows, ncols, index)\n    # nrows：行数\n    # ncols：列数\n    # index：目前选中第几个子图（从1开始）\n    plt.plot(train_process[\"epoch\"],train_process.train_loss_all,'ro-',label='train loss')\n    plt.plot(train_process[\"epoch\"],train_process.val_loss_all,'bs--',label='val loss')\n    # 添加一个图例\n    plt.legend()\n    # 给轴添加标签\n    plt.xlabel('epoch')\n    plt.ylabel('loss')\n    # ②准确度图\n    plt.subplot(1,2,2)\n    plt.plot(train_process[\"epoch\"],train_process.train_acc_all,'ro-',label='train acc')\n    plt.plot(train_process[\"epoch\"],train_process.val_acc_all,'bs--',label='val acc')\n    # 添加图例\n    plt.legend()\n    plt.xlabel(\"epoch\")\n    plt.ylabel(\"acc\")\n    plt.show()\n\n# 正式开始训练:\nif __name__==\"__main__\":\n    # 将模型实例化\n    AlexNet=AlexNet()\n    train_dataloader,val_dataloader=train_val_data_process()\n    train_process=train_model_process(AlexNet,train_dataloader,val_dataloader,num_epochs=20)\n    matplot_acc_loss(train_process)\n",[457,51769,51770,51776,51782,51792,51798,51808,51818,51828,51838,51848,51852,51863,51873,51877,51881,51885,51893,51905,51915,51931,51941,51973,51987,51997,52007,52011,52021,52035,52045,52055,52065,52071,52075,52079,52083,52087,52091,52099,52119,52123,52127,52131,52135,52139,52155,52159,52163,52171,52175,52179,52187,52191,52195,52199,52207,52211,52215,52219,52223,52231,52235,52243,52247,52255,52259,52267,52271,52279,52283,52287,52295,52299,52303,52307,52319,52343,52357,52361,52365,52369,52377,52381,52389,52393,52401,52405,52413,52417,52425,52429,52437,52441,52453,52457,52465,52469,52477,52481,52485,52489,52493,52501,52505,52521,52525,52533,52537,52541,52545,52549,52553,52557,52561,52577,52581,52593,52597,52609,52613,52625,52629,52637,52641,52649,52653,52657,52662,52668,52672,52681,52685,52702,52706,52715,52719,52737,52750,52755,52768,52772,52776,52784,52788,52792,52800,52804,52812,52816,52824,52828,52832,52874,52916,52920,52924,52940,52944,52960,52964,52968,52976,52980,52984,52996,53034,53039,53044,53053,53057,53071,53081,53087,53093,53099,53105,53109,53113,53119,53123,53127,53135,53139,53157,53161,53165,53169,53185,53189,53193,53197,53201,53205,53225,53245,53249,53253,53257,53265,53273,53277,53293,53313,53333,53337,53341,53349,53357,53361,53365,53369,53381,53385,53395,53403,53420],{"__ignoreMap":32},[460,51771,51772,51774],{"class":462,"line":463},[460,51773,46801],{"class":887},[460,51775,48227],{"class":466},[460,51777,51778,51780],{"class":462,"line":476},[460,51779,46801],{"class":887},[460,51781,48234],{"class":466},[460,51783,51784,51786,51788,51790],{"class":462,"line":482},[460,51785,46801],{"class":887},[460,51787,48245],{"class":466},[460,51789,47790],{"class":887},[460,51791,48250],{"class":466},[460,51793,51794,51796],{"class":462,"line":488},[460,51795,46801],{"class":887},[460,51797,46804],{"class":466},[460,51799,51800,51802,51804,51806],{"class":462,"line":494},[460,51801,47145],{"class":887},[460,51803,47822],{"class":466},[460,51805,46801],{"class":887},[460,51807,48267],{"class":466},[460,51809,51810,51812,51814,51816],{"class":462,"line":500},[460,51811,47145],{"class":887},[460,51813,47775],{"class":466},[460,51815,46801],{"class":887},[460,51817,47780],{"class":466},[460,51819,51820,51822,51824,51826],{"class":462,"line":506},[460,51821,47145],{"class":887},[460,51823,47805],{"class":466},[460,51825,46801],{"class":887},[460,51827,47810],{"class":466},[460,51829,51830,51832,51834,51836],{"class":462,"line":512},[460,51831,46801],{"class":887},[460,51833,47822],{"class":466},[460,51835,47790],{"class":887},[460,51837,47827],{"class":466},[460,51839,51840,51842,51844,51846],{"class":462,"line":518},[460,51841,46801],{"class":887},[460,51843,47839],{"class":466},[460,51845,47790],{"class":887},[460,51847,47844],{"class":466},[460,51849,51850],{"class":462,"line":525},[460,51851,48312],{"class":942},[460,51853,51854,51856,51858,51860],{"class":462,"line":531},[460,51855,47145],{"class":887},[460,51857,48319],{"class":466},[460,51859,46801],{"class":887},[460,51861,51862],{"class":466}," AlexNet\n",[460,51864,51865,51867,51869,51871],{"class":462,"line":537},[460,51866,47145],{"class":887},[460,51868,47148],{"class":466},[460,51870,46801],{"class":887},[460,51872,47153],{"class":466},[460,51874,51875],{"class":462,"line":543},[460,51876,522],{"emptyLinePlaceholder":521},[460,51878,51879],{"class":462,"line":549},[460,51880,522],{"emptyLinePlaceholder":521},[460,51882,51883],{"class":462,"line":555},[460,51884,48347],{"class":942},[460,51886,51887,51889,51891],{"class":462,"line":560},[460,51888,48352],{"class":887},[460,51890,48355],{"class":929},[460,51892,48358],{"class":466},[460,51894,51895,51897,51899,51901,51903],{"class":462,"line":566},[460,51896,48363],{"class":466},[460,51898,894],{"class":887},[460,51900,47862],{"class":466},[460,51902,47870],{"class":1353},[460,51904,1363],{"class":466},[460,51906,51907,51909,51911,51913],{"class":462,"line":572},[460,51908,48376],{"class":3380},[460,51910,894],{"class":887},[460,51912,47882],{"class":900},[460,51914,1363],{"class":466},[460,51916,51917,51919,51921,51923,51925,51927,51929],{"class":462,"line":578},[460,51918,48387],{"class":3380},[460,51920,894],{"class":887},[460,51922,47899],{"class":466},[460,51924,47902],{"class":3380},[460,51926,894],{"class":887},[460,51928,51754],{"class":900},[460,51930,47910],{"class":466},[460,51932,51933,51935,51937,51939],{"class":462,"line":812},[460,51934,48404],{"class":3380},[460,51936,894],{"class":887},[460,51938,47882],{"class":900},[460,51940,3754],{"class":466},[460,51942,51943,51945,51947,51949,51951,51953,51955,51957,51959,51961,51963,51965,51967,51969,51971],{"class":462,"line":818},[460,51944,48415],{"class":466},[460,51946,894],{"class":887},[460,51948,48420],{"class":466},[460,51950,48423],{"class":900},[460,51952,2174],{"class":466},[460,51954,48428],{"class":900},[460,51956,8320],{"class":887},[460,51958,23856],{"class":900},[460,51960,48435],{"class":466},[460,51962,48423],{"class":900},[460,51964,2174],{"class":466},[460,51966,48442],{"class":900},[460,51968,8320],{"class":887},[460,51970,23856],{"class":900},[460,51972,48449],{"class":466},[460,51974,51975,51977,51979,51981,51983,51985],{"class":462,"line":824},[460,51976,48454],{"class":466},[460,51978,894],{"class":887},[460,51980,48459],{"class":466},[460,51982,3635],{"class":3380},[460,51984,894],{"class":887},[460,51986,47947],{"class":466},[460,51988,51989,51991,51993,51995],{"class":462,"line":2074},[460,51990,48470],{"class":3380},[460,51992,894],{"class":887},[460,51994,48475],{"class":900},[460,51996,1363],{"class":466},[460,51998,51999,52001,52003,52005],{"class":462,"line":2088},[460,52000,48482],{"class":3380},[460,52002,894],{"class":887},[460,52004,47882],{"class":900},[460,52006,1363],{"class":466},[460,52008,52009],{"class":462,"line":2103},[460,52010,48493],{"class":942},[460,52012,52013,52015,52017,52019],{"class":462,"line":2122},[460,52014,48498],{"class":3380},[460,52016,894],{"class":887},[460,52018,17130],{"class":900},[460,52020,3754],{"class":466},[460,52022,52023,52025,52027,52029,52031,52033],{"class":462,"line":2144},[460,52024,48509],{"class":466},[460,52026,894],{"class":887},[460,52028,47940],{"class":466},[460,52030,3635],{"class":3380},[460,52032,894],{"class":887},[460,52034,48520],{"class":466},[460,52036,52037,52039,52041,52043],{"class":462,"line":2158},[460,52038,48525],{"class":3380},[460,52040,894],{"class":887},[460,52042,48475],{"class":900},[460,52044,1363],{"class":466},[460,52046,52047,52049,52051,52053],{"class":462,"line":2163},[460,52048,48536],{"class":3380},[460,52050,894],{"class":887},[460,52052,47882],{"class":900},[460,52054,1363],{"class":466},[460,52056,52057,52059,52061,52063],{"class":462,"line":2168},[460,52058,48547],{"class":3380},[460,52060,894],{"class":887},[460,52062,17130],{"class":900},[460,52064,3754],{"class":466},[460,52066,52067,52069],{"class":462,"line":2183},[460,52068,20605],{"class":887},[460,52070,48560],{"class":466},[460,52072,52073],{"class":462,"line":2194},[460,52074,522],{"emptyLinePlaceholder":521},[460,52076,52077],{"class":462,"line":2199},[460,52078,48569],{"class":942},[460,52080,52081],{"class":462,"line":2204},[460,52082,48574],{"class":942},[460,52084,52085],{"class":462,"line":2212},[460,52086,522],{"emptyLinePlaceholder":521},[460,52088,52089],{"class":462,"line":2257},[460,52090,48583],{"class":942},[460,52092,52093,52095,52097],{"class":462,"line":2285},[460,52094,48352],{"class":887},[460,52096,48590],{"class":929},[460,52098,48593],{"class":466},[460,52100,52101,52103,52105,52107,52109,52111,52113,52115,52117],{"class":462,"line":2298},[460,52102,47644],{"class":466},[460,52104,894],{"class":887},[460,52106,46860],{"class":466},[460,52108,47651],{"class":1353},[460,52110,3766],{"class":887},[460,52112,47656],{"class":466},[460,52114,3763],{"class":887},[460,52116,48612],{"class":1353},[460,52118,3754],{"class":466},[460,52120,52121],{"class":462,"line":2303},[460,52122,522],{"emptyLinePlaceholder":521},[460,52124,52125],{"class":462,"line":2308},[460,52126,522],{"emptyLinePlaceholder":521},[460,52128,52129],{"class":462,"line":2318},[460,52130,48627],{"class":942},[460,52132,52133],{"class":462,"line":2333},[460,52134,48632],{"class":942},[460,52136,52137],{"class":462,"line":2338},[460,52138,48637],{"class":942},[460,52140,52141,52143,52145,52147,52149,52151,52153],{"class":462,"line":2343},[460,52142,48642],{"class":466},[460,52144,894],{"class":887},[460,52146,48647],{"class":466},[460,52148,48650],{"class":3380},[460,52150,894],{"class":887},[460,52152,48655],{"class":900},[460,52154,3754],{"class":466},[460,52156,52157],{"class":462,"line":2353},[460,52158,522],{"emptyLinePlaceholder":521},[460,52160,52161],{"class":462,"line":2368},[460,52162,48666],{"class":942},[460,52164,52165,52167,52169],{"class":462,"line":2381},[460,52166,48671],{"class":466},[460,52168,894],{"class":887},[460,52170,48676],{"class":466},[460,52172,52173],{"class":462,"line":2394},[460,52174,522],{"emptyLinePlaceholder":521},[460,52176,52177],{"class":462,"line":2399},[460,52178,48685],{"class":942},[460,52180,52181,52183,52185],{"class":462,"line":2404},[460,52182,47696],{"class":466},[460,52184,894],{"class":887},[460,52186,48694],{"class":466},[460,52188,52189],{"class":462,"line":2414},[460,52190,48699],{"class":942},[460,52192,52193],{"class":462,"line":2428},[460,52194,48704],{"class":942},[460,52196,52197],{"class":462,"line":2440},[460,52198,48709],{"class":942},[460,52200,52201,52203,52205],{"class":462,"line":2445},[460,52202,48714],{"class":466},[460,52204,894],{"class":887},[460,52206,48719],{"class":466},[460,52208,52209],{"class":462,"line":2450},[460,52210,522],{"emptyLinePlaceholder":521},[460,52212,52213],{"class":462,"line":2460},[460,52214,522],{"emptyLinePlaceholder":521},[460,52216,52217],{"class":462,"line":2473},[460,52218,48732],{"class":942},[460,52220,52221],{"class":462,"line":2487},[460,52222,48737],{"class":942},[460,52224,52225,52227,52229],{"class":462,"line":2492},[460,52226,48742],{"class":466},[460,52228,894],{"class":887},[460,52230,48747],{"class":900},[460,52232,52233],{"class":462,"line":2497},[460,52234,48752],{"class":942},[460,52236,52237,52239,52241],{"class":462,"line":2505},[460,52238,48757],{"class":466},[460,52240,894],{"class":887},[460,52242,48762],{"class":466},[460,52244,52245],{"class":462,"line":2516},[460,52246,48767],{"class":942},[460,52248,52249,52251,52253],{"class":462,"line":2529},[460,52250,48772],{"class":466},[460,52252,894],{"class":887},[460,52254,48762],{"class":466},[460,52256,52257],{"class":462,"line":2542},[460,52258,48781],{"class":942},[460,52260,52261,52263,52265],{"class":462,"line":2559},[460,52262,48786],{"class":466},[460,52264,894],{"class":887},[460,52266,48762],{"class":466},[460,52268,52269],{"class":462,"line":2564},[460,52270,48795],{"class":942},[460,52272,52273,52275,52277],{"class":462,"line":2569},[460,52274,48800],{"class":466},[460,52276,894],{"class":887},[460,52278,48762],{"class":466},[460,52280,52281],{"class":462,"line":2579},[460,52282,522],{"emptyLinePlaceholder":521},[460,52284,52285],{"class":462,"line":2597},[460,52286,48813],{"class":942},[460,52288,52289,52291,52293],{"class":462,"line":2610},[460,52290,48818],{"class":466},[460,52292,894],{"class":887},[460,52294,48823],{"class":466},[460,52296,52297],{"class":462,"line":2621},[460,52298,522],{"emptyLinePlaceholder":521},[460,52300,52301],{"class":462,"line":2634},[460,52302,522],{"emptyLinePlaceholder":521},[460,52304,52305],{"class":462,"line":2648},[460,52306,48836],{"class":942},[460,52308,52309,52311,52313,52315,52317],{"class":462,"line":2653},[460,52310,19722],{"class":887},[460,52312,48843],{"class":466},[460,52314,11713],{"class":887},[460,52316,48848],{"class":900},[460,52318,48851],{"class":466},[460,52320,52321,52323,52325,52327,52329,52331,52333,52335,52337,52339,52341],{"class":462,"line":2658},[460,52322,48856],{"class":900},[460,52324,2174],{"class":466},[460,52326,48861],{"class":1353},[460,52328,48864],{"class":900},[460,52330,8331],{"class":1353},[460,52332,48864],{"class":900},[460,52334,16993],{"class":1353},[460,52336,48873],{"class":466},[460,52338,17259],{"class":887},[460,52340,901],{"class":900},[460,52342,6311],{"class":466},[460,52344,52345,52347,52349,52351,52353,52355],{"class":462,"line":2670},[460,52346,48856],{"class":900},[460,52348,2174],{"class":466},[460,52350,48888],{"class":1353},[460,52352,8320],{"class":887},[460,52354,2096],{"class":900},[460,52356,3754],{"class":466},[460,52358,52359],{"class":462,"line":2683},[460,52360,522],{"emptyLinePlaceholder":521},[460,52362,52363],{"class":462,"line":2695},[460,52364,48903],{"class":942},[460,52366,52367],{"class":462,"line":2700},[460,52368,48908],{"class":942},[460,52370,52371,52373,52375],{"class":462,"line":2709},[460,52372,48913],{"class":466},[460,52374,894],{"class":887},[460,52376,48747],{"class":900},[460,52378,52379],{"class":462,"line":2718},[460,52380,48922],{"class":942},[460,52382,52383,52385,52387],{"class":462,"line":2723},[460,52384,48927],{"class":466},[460,52386,894],{"class":887},[460,52388,19606],{"class":900},[460,52390,52391],{"class":462,"line":2732},[460,52392,48936],{"class":942},[460,52394,52395,52397,52399],{"class":462,"line":2750},[460,52396,48941],{"class":466},[460,52398,894],{"class":887},[460,52400,48747],{"class":900},[460,52402,52403],{"class":462,"line":2782},[460,52404,48950],{"class":942},[460,52406,52407,52409,52411],{"class":462,"line":2809},[460,52408,48955],{"class":466},[460,52410,894],{"class":887},[460,52412,19606],{"class":900},[460,52414,52415],{"class":462,"line":2836},[460,52416,48964],{"class":942},[460,52418,52419,52421,52423],{"class":462,"line":2856},[460,52420,48969],{"class":466},[460,52422,894],{"class":887},[460,52424,19606],{"class":900},[460,52426,52427],{"class":462,"line":2865},[460,52428,48978],{"class":942},[460,52430,52431,52433,52435],{"class":462,"line":2881},[460,52432,48983],{"class":466},[460,52434,894],{"class":887},[460,52436,19606],{"class":900},[460,52438,52439],{"class":462,"line":2887},[460,52440,48992],{"class":942},[460,52442,52443,52445,52447,52449,52451],{"class":462,"line":2893},[460,52444,19924],{"class":887},[460,52446,48006],{"class":466},[460,52448,11713],{"class":887},[460,52450,48011],{"class":900},[460,52452,49005],{"class":466},[460,52454,52455],{"class":462,"line":2899},[460,52456,49010],{"class":942},[460,52458,52459,52461,52463],{"class":462,"line":2905},[460,52460,49015],{"class":466},[460,52462,894],{"class":887},[460,52464,49020],{"class":466},[460,52466,52467],{"class":462,"line":2911},[460,52468,49025],{"class":942},[460,52470,52471,52473,52475],{"class":462,"line":2920},[460,52472,49030],{"class":466},[460,52474,894],{"class":887},[460,52476,49035],{"class":466},[460,52478,52479],{"class":462,"line":2929},[460,52480,49040],{"class":942},[460,52482,52483],{"class":462,"line":2935},[460,52484,49045],{"class":466},[460,52486,52487],{"class":462,"line":2948},[460,52488,49050],{"class":942},[460,52490,52491],{"class":462,"line":2954},[460,52492,49055],{"class":942},[460,52494,52495,52497,52499],{"class":462,"line":2965},[460,52496,49060],{"class":466},[460,52498,894],{"class":887},[460,52500,49065],{"class":466},[460,52502,52503],{"class":462,"line":2976},[460,52504,49070],{"class":942},[460,52506,52507,52509,52511,52513,52515,52517,52519],{"class":462,"line":2987},[460,52508,49075],{"class":466},[460,52510,894],{"class":887},[460,52512,49080],{"class":466},[460,52514,49083],{"class":3380},[460,52516,894],{"class":887},[460,52518,901],{"class":900},[460,52520,3754],{"class":466},[460,52522,52523],{"class":462,"line":2998},[460,52524,49094],{"class":942},[460,52526,52527,52529,52531],{"class":462,"line":3003},[460,52528,49099],{"class":466},[460,52530,894],{"class":887},[460,52532,49104],{"class":466},[460,52534,52535],{"class":462,"line":3008},[460,52536,49109],{"class":942},[460,52538,52539],{"class":462,"line":3018},[460,52540,49114],{"class":466},[460,52542,52543],{"class":462,"line":3028},[460,52544,49119],{"class":942},[460,52546,52547],{"class":462,"line":3038},[460,52548,49124],{"class":466},[460,52550,52551],{"class":462,"line":3048},[460,52552,49129],{"class":942},[460,52554,52555],{"class":462,"line":3053},[460,52556,49134],{"class":466},[460,52558,52559],{"class":462,"line":3058},[460,52560,49139],{"class":942},[460,52562,52563,52565,52567,52569,52571,52573,52575],{"class":462,"line":3068},[460,52564,49144],{"class":466},[460,52566,3467],{"class":887},[460,52568,49149],{"class":466},[460,52570,8320],{"class":887},[460,52572,49154],{"class":466},[460,52574,936],{"class":900},[460,52576,3754],{"class":466},[460,52578,52579],{"class":462,"line":3078},[460,52580,49163],{"class":942},[460,52582,52583,52585,52587,52589,52591],{"class":462,"line":3088},[460,52584,49168],{"class":466},[460,52586,3467],{"class":887},[460,52588,49173],{"class":466},[460,52590,19471],{"class":887},[460,52592,49178],{"class":466},[460,52594,52595],{"class":462,"line":3098},[460,52596,49183],{"class":942},[460,52598,52599,52601,52603,52605,52607],{"class":462,"line":3103},[460,52600,49188],{"class":466},[460,52602,3467],{"class":887},[460,52604,49154],{"class":466},[460,52606,936],{"class":900},[460,52608,3754],{"class":466},[460,52610,52611],{"class":462,"line":3108},[460,52612,49201],{"class":942},[460,52614,52615,52617,52619,52621,52623],{"class":462,"line":3118},[460,52616,19924],{"class":887},[460,52618,49208],{"class":466},[460,52620,11713],{"class":887},[460,52622,48011],{"class":900},[460,52624,49215],{"class":466},[460,52626,52627],{"class":462,"line":3128},[460,52628,49220],{"class":942},[460,52630,52631,52633,52635],{"class":462,"line":3138},[460,52632,49015],{"class":466},[460,52634,894],{"class":887},[460,52636,49020],{"class":466},[460,52638,52639],{"class":462,"line":3148},[460,52640,49233],{"class":942},[460,52642,52643,52645,52647],{"class":462,"line":3153},[460,52644,49030],{"class":466},[460,52646,894],{"class":887},[460,52648,49035],{"class":466},[460,52650,52651],{"class":462,"line":3158},[460,52652,49246],{"class":942},[460,52654,52655],{"class":462,"line":3168},[460,52656,49251],{"class":466},[460,52658,52659],{"class":462,"line":3178},[460,52660,52661],{"class":942},"            # 验证时不计算梯度以节省内存\u002F计算\n",[460,52663,52664,52666],{"class":462,"line":3188},[460,52665,49256],{"class":887},[460,52667,49259],{"class":466},[460,52669,52670],{"class":462,"line":3198},[460,52671,49264],{"class":942},[460,52673,52674,52677,52679],{"class":462,"line":3203},[460,52675,52676],{"class":466},"                output",[460,52678,894],{"class":887},[460,52680,49065],{"class":466},[460,52682,52683],{"class":462,"line":3208},[460,52684,49279],{"class":942},[460,52686,52687,52690,52692,52694,52696,52698,52700],{"class":462,"line":3218},[460,52688,52689],{"class":466},"                pre_lab",[460,52691,894],{"class":887},[460,52693,49080],{"class":466},[460,52695,49083],{"class":3380},[460,52697,894],{"class":887},[460,52699,901],{"class":900},[460,52701,3754],{"class":466},[460,52703,52704],{"class":462,"line":3228},[460,52705,49302],{"class":942},[460,52707,52708,52711,52713],{"class":462,"line":3238},[460,52709,52710],{"class":466},"                val_batch_loss",[460,52712,894],{"class":887},[460,52714,49104],{"class":466},[460,52716,52717],{"class":462,"line":3248},[460,52718,49317],{"class":942},[460,52720,52721,52724,52726,52729,52731,52733,52735],{"class":462,"line":3253},[460,52722,52723],{"class":466},"                val_loss",[460,52725,3467],{"class":887},[460,52727,52728],{"class":466},"val_batch_loss.item()",[460,52730,8320],{"class":887},[460,52732,49154],{"class":466},[460,52734,936],{"class":900},[460,52736,3754],{"class":466},[460,52738,52739,52742,52744,52746,52748],{"class":462,"line":3258},[460,52740,52741],{"class":466},"                val_corrects",[460,52743,3467],{"class":887},[460,52745,49173],{"class":466},[460,52747,19471],{"class":887},[460,52749,49178],{"class":466},[460,52751,52752],{"class":462,"line":3268},[460,52753,52754],{"class":942},"            # 当前用于验证的样本数量\n",[460,52756,52757,52760,52762,52764,52766],{"class":462,"line":3278},[460,52758,52759],{"class":466},"            val_num",[460,52761,3467],{"class":887},[460,52763,49154],{"class":466},[460,52765,936],{"class":900},[460,52767,3754],{"class":466},[460,52769,52770],{"class":462,"line":3288},[460,52771,49374],{"class":942},[460,52773,52774],{"class":462,"line":3298},[460,52775,49379],{"class":942},[460,52777,52778,52780,52782],{"class":462,"line":3303},[460,52779,49384],{"class":466},[460,52781,8331],{"class":887},[460,52783,49389],{"class":466},[460,52785,52786],{"class":462,"line":3308},[460,52787,49394],{"class":942},[460,52789,52790],{"class":462,"line":3318},[460,52791,49399],{"class":942},[460,52793,52794,52796,52798],{"class":462,"line":3328},[460,52795,49404],{"class":466},[460,52797,8331],{"class":887},[460,52799,49389],{"class":466},[460,52801,52802],{"class":462,"line":3337},[460,52803,49413],{"class":942},[460,52805,52806,52808,52810],{"class":462,"line":3347},[460,52807,49418],{"class":466},[460,52809,8331],{"class":887},[460,52811,49423],{"class":466},[460,52813,52814],{"class":462,"line":3352},[460,52815,49428],{"class":942},[460,52817,52818,52820,52822],{"class":462,"line":3358},[460,52819,49433],{"class":466},[460,52821,8331],{"class":887},[460,52823,49423],{"class":466},[460,52825,52826],{"class":462,"line":3363},[460,52827,522],{"emptyLinePlaceholder":521},[460,52829,52830],{"class":462,"line":3369},[460,52831,49446],{"class":942},[460,52833,52834,52836,52838,52840,52842,52844,52846,52848,52850,52852,52854,52856,52858,52860,52862,52864,52866,52868,52870,52872],{"class":462,"line":3386},[460,52835,48856],{"class":900},[460,52837,2174],{"class":466},[460,52839,20113],{"class":1353},[460,52841,48864],{"class":900},[460,52843,49459],{"class":1353},[460,52845,17607],{"class":900},[460,52847,49464],{"class":887},[460,52849,612],{"class":900},[460,52851,49469],{"class":1353},[460,52853,17607],{"class":900},[460,52855,49464],{"class":887},[460,52857,612],{"class":900},[460,52859,20113],{"class":1353},[460,52861,49480],{"class":466},[460,52863,17259],{"class":887},[460,52865,901],{"class":900},[460,52867,49487],{"class":466},[460,52869,17259],{"class":887},[460,52871,901],{"class":900},[460,52873,49494],{"class":466},[460,52875,52876,52878,52880,52882,52884,52886,52888,52890,52892,52894,52896,52898,52900,52902,52904,52906,52908,52910,52912,52914],{"class":462,"line":3392},[460,52877,48856],{"class":900},[460,52879,2174],{"class":466},[460,52881,20113],{"class":1353},[460,52883,48864],{"class":900},[460,52885,49507],{"class":1353},[460,52887,17607],{"class":900},[460,52889,49464],{"class":887},[460,52891,612],{"class":900},[460,52893,49516],{"class":1353},[460,52895,17607],{"class":900},[460,52897,49464],{"class":887},[460,52899,612],{"class":900},[460,52901,20113],{"class":1353},[460,52903,49527],{"class":466},[460,52905,17259],{"class":887},[460,52907,901],{"class":900},[460,52909,49534],{"class":466},[460,52911,17259],{"class":887},[460,52913,901],{"class":900},[460,52915,49494],{"class":466},[460,52917,52918],{"class":462,"line":3406},[460,52919,522],{"emptyLinePlaceholder":521},[460,52921,52922],{"class":462,"line":3412},[460,52923,49549],{"class":942},[460,52925,52926,52928,52930,52932,52934,52936,52938],{"class":462,"line":3431},[460,52927,3702],{"class":887},[460,52929,49556],{"class":466},[460,52931,17259],{"class":887},[460,52933,901],{"class":900},[460,52935,17649],{"class":466},[460,52937,17668],{"class":887},[460,52939,49567],{"class":466},[460,52941,52942],{"class":462,"line":3461},[460,52943,49572],{"class":942},[460,52945,52946,52948,52950,52952,52954,52956,52958],{"class":462,"line":3473},[460,52947,49577],{"class":466},[460,52949,16793],{"class":900},[460,52951,894],{"class":887},[460,52953,49584],{"class":466},[460,52955,17259],{"class":887},[460,52957,901],{"class":900},[460,52959,13307],{"class":466},[460,52961,52962],{"class":462,"line":3479},[460,52963,49595],{"class":942},[460,52965,52966],{"class":462,"line":3490},[460,52967,49600],{"class":942},[460,52969,52970,52972,52974],{"class":462,"line":3501},[460,52971,49605],{"class":466},[460,52973,894],{"class":887},[460,52975,48719],{"class":466},[460,52977,52978],{"class":462,"line":3511},[460,52979,522],{"emptyLinePlaceholder":521},[460,52981,52982],{"class":462,"line":3517},[460,52983,49618],{"class":942},[460,52985,52986,52988,52990,52992,52994],{"class":462,"line":3523},[460,52987,49623],{"class":466},[460,52989,894],{"class":887},[460,52991,49628],{"class":466},[460,52993,17259],{"class":887},[460,52995,49633],{"class":466},[460,52997,52998,53000,53002,53004,53006,53008,53010,53012,53014,53016,53018,53020,53022,53024,53026,53028,53030,53032],{"class":462,"line":3529},[460,52999,48856],{"class":900},[460,53001,2174],{"class":466},[460,53003,49642],{"class":1353},[460,53005,17607],{"class":900},[460,53007,49647],{"class":887},[460,53009,612],{"class":900},[460,53011,17270],{"class":1353},[460,53013,17607],{"class":900},[460,53015,49647],{"class":887},[460,53017,612],{"class":900},[460,53019,49660],{"class":1353},[460,53021,49663],{"class":466},[460,53023,5245],{"class":887},[460,53025,16027],{"class":900},[460,53027,49670],{"class":466},[460,53029,2328],{"class":887},[460,53031,16027],{"class":900},[460,53033,6311],{"class":466},[460,53035,53036],{"class":462,"line":3535},[460,53037,53038],{"class":942},"    # 选择最优参数并保存\n",[460,53040,53041],{"class":462,"line":3557},[460,53042,53043],{"class":942},"    # 保存最佳模型权重字典\n",[460,53045,53046,53049,53051],{"class":462,"line":3562},[460,53047,53048],{"class":466},"    torch.save(best_model_wts,",[460,53050,49699],{"class":1353},[460,53052,3754],{"class":466},[460,53054,53055],{"class":462,"line":3568},[460,53056,49716],{"class":942},[460,53058,53059,53061,53063,53065,53067,53069],{"class":462,"line":3577},[460,53060,49721],{"class":466},[460,53062,894],{"class":887},[460,53064,49726],{"class":466},[460,53066,49729],{"class":3380},[460,53068,894],{"class":887},[460,53070,18115],{"class":466},[460,53072,53073,53075,53077,53079],{"class":462,"line":3583},[460,53074,49738],{"class":1353},[460,53076,1357],{"class":466},[460,53078,49743],{"class":900},[460,53080,49746],{"class":466},[460,53082,53083,53085],{"class":462,"line":3616},[460,53084,49751],{"class":1353},[460,53086,49754],{"class":466},[460,53088,53089,53091],{"class":462,"line":3622},[460,53090,49759],{"class":1353},[460,53092,49762],{"class":466},[460,53094,53095,53097],{"class":462,"line":3645},[460,53096,49767],{"class":1353},[460,53098,49770],{"class":466},[460,53100,53101,53103],{"class":462,"line":3651},[460,53102,49775],{"class":1353},[460,53104,49778],{"class":466},[460,53106,53107],{"class":462,"line":3668},[460,53108,1679],{"class":466},[460,53110,53111],{"class":462,"line":3674},[460,53112,49787],{"class":942},[460,53114,53115,53117],{"class":462,"line":3680},[460,53116,20605],{"class":887},[460,53118,49794],{"class":466},[460,53120,53121],{"class":462,"line":3686},[460,53122,522],{"emptyLinePlaceholder":521},[460,53124,53125],{"class":462,"line":3699},[460,53126,49803],{"class":942},[460,53128,53129,53131,53133],{"class":462,"line":3715},[460,53130,48352],{"class":887},[460,53132,49810],{"class":929},[460,53134,49813],{"class":466},[460,53136,53137],{"class":462,"line":3757},[460,53138,49818],{"class":942},[460,53140,53141,53143,53145,53147,53149,53151,53153,53155],{"class":462,"line":3778},[460,53142,49823],{"class":466},[460,53144,48098],{"class":3380},[460,53146,894],{"class":887},[460,53148,2174],{"class":466},[460,53150,5531],{"class":900},[460,53152,3986],{"class":466},[460,53154,918],{"class":900},[460,53156,6311],{"class":466},[460,53158,53159],{"class":462,"line":3812},[460,53160,49842],{"class":942},[460,53162,53163],{"class":462,"line":3830},[460,53164,49847],{"class":942},[460,53166,53167],{"class":462,"line":3855},[460,53168,49852],{"class":942},[460,53170,53171,53173,53175,53177,53179,53181,53183],{"class":462,"line":3861},[460,53172,48132],{"class":466},[460,53174,901],{"class":900},[460,53176,3986],{"class":466},[460,53178,907],{"class":900},[460,53180,3986],{"class":466},[460,53182,901],{"class":900},[460,53184,3754],{"class":466},[460,53186,53187],{"class":462,"line":3867},[460,53188,49873],{"class":942},[460,53190,53191],{"class":462,"line":3876},[460,53192,49878],{"class":942},[460,53194,53195],{"class":462,"line":3881},[460,53196,49883],{"class":942},[460,53198,53199],{"class":462,"line":3886},[460,53200,49888],{"class":942},[460,53202,53203],{"class":462,"line":3891},[460,53204,49893],{"class":942},[460,53206,53207,53209,53211,53213,53215,53217,53219,53221,53223],{"class":462,"line":3900},[460,53208,49899],{"class":466},[460,53210,49902],{"class":1353},[460,53212,49905],{"class":466},[460,53214,49908],{"class":1353},[460,53216,3986],{"class":466},[460,53218,49913],{"class":3380},[460,53220,894],{"class":887},[460,53222,49918],{"class":1353},[460,53224,3754],{"class":466},[460,53226,53227,53229,53231,53233,53235,53237,53239,53241,53243],{"class":462,"line":3909},[460,53228,49899],{"class":466},[460,53230,49902],{"class":1353},[460,53232,49930],{"class":466},[460,53234,49933],{"class":1353},[460,53236,3986],{"class":466},[460,53238,49913],{"class":3380},[460,53240,894],{"class":887},[460,53242,49942],{"class":1353},[460,53244,3754],{"class":466},[460,53246,53247],{"class":462,"line":3914},[460,53248,49950],{"class":942},[460,53250,53251],{"class":462,"line":49896},[460,53252,49956],{"class":466},[460,53254,53255],{"class":462,"line":49923},[460,53256,49962],{"class":942},[460,53258,53259,53261,53263],{"class":462,"line":49947},[460,53260,49968],{"class":466},[460,53262,49971],{"class":1353},[460,53264,3754],{"class":466},[460,53266,53267,53269,53271],{"class":462,"line":49953},[460,53268,49979],{"class":466},[460,53270,49982],{"class":1353},[460,53272,3754],{"class":466},[460,53274,53275],{"class":462,"line":49959},[460,53276,49990],{"class":942},[460,53278,53279,53281,53283,53285,53287,53289,53291],{"class":462,"line":49965},[460,53280,48132],{"class":466},[460,53282,901],{"class":900},[460,53284,3986],{"class":466},[460,53286,907],{"class":900},[460,53288,3986],{"class":466},[460,53290,907],{"class":900},[460,53292,3754],{"class":466},[460,53294,53295,53297,53299,53301,53303,53305,53307,53309,53311],{"class":462,"line":49976},[460,53296,49899],{"class":466},[460,53298,49902],{"class":1353},[460,53300,50017],{"class":466},[460,53302,49908],{"class":1353},[460,53304,3986],{"class":466},[460,53306,49913],{"class":3380},[460,53308,894],{"class":887},[460,53310,50028],{"class":1353},[460,53312,3754],{"class":466},[460,53314,53315,53317,53319,53321,53323,53325,53327,53329,53331],{"class":462,"line":49987},[460,53316,49899],{"class":466},[460,53318,49902],{"class":1353},[460,53320,50040],{"class":466},[460,53322,49933],{"class":1353},[460,53324,3986],{"class":466},[460,53326,49913],{"class":3380},[460,53328,894],{"class":887},[460,53330,50051],{"class":1353},[460,53332,3754],{"class":466},[460,53334,53335],{"class":462,"line":49993},[460,53336,50059],{"class":942},[460,53338,53339],{"class":462,"line":50010},[460,53340,49956],{"class":466},[460,53342,53343,53345,53347],{"class":462,"line":50033},[460,53344,49968],{"class":466},[460,53346,49902],{"class":1353},[460,53348,3754],{"class":466},[460,53350,53351,53353,53355],{"class":462,"line":50056},[460,53352,49979],{"class":466},[460,53354,50081],{"class":1353},[460,53356,3754],{"class":466},[460,53358,53359],{"class":462,"line":50062},[460,53360,50089],{"class":466},[460,53362,53363],{"class":462,"line":50067},[460,53364,522],{"emptyLinePlaceholder":521},[460,53366,53367],{"class":462,"line":50076},[460,53368,50100],{"class":942},[460,53370,53371,53373,53375,53377,53379],{"class":462,"line":50086},[460,53372,18100],{"class":887},[460,53374,47627],{"class":900},[460,53376,19471],{"class":887},[460,53378,47632],{"class":1353},[460,53380,20257],{"class":466},[460,53382,53383],{"class":462,"line":50092},[460,53384,50119],{"class":942},[460,53386,53387,53390,53392],{"class":462,"line":50097},[460,53388,53389],{"class":466},"    AlexNet",[460,53391,894],{"class":887},[460,53393,53394],{"class":466},"AlexNet()\n",[460,53396,53397,53399,53401],{"class":462,"line":50103},[460,53398,50136],{"class":466},[460,53400,894],{"class":887},[460,53402,50141],{"class":466},[460,53404,53405,53407,53409,53412,53414,53416,53418],{"class":462,"line":50116},[460,53406,49721],{"class":466},[460,53408,894],{"class":887},[460,53410,53411],{"class":466},"train_model_process(AlexNet,train_dataloader,val_dataloader,",[460,53413,50154],{"class":3380},[460,53415,894],{"class":887},[460,53417,2110],{"class":900},[460,53419,3754],{"class":466},[460,53421,53422],{"class":462,"line":50122},[460,53423,50166],{"class":466},[103,53425,53426],{"start":482},[43,53427,50179],{},[451,53429,53431],{"className":46787,"code":53430,"language":46789,"meta":32,"style":32},"import torch\nimport torch.utils.data as Data\nfrom jupyter_client.consoleapp import classes\nfrom torchvision import transforms\n# 导入数据集\nfrom torchvision.datasets import FashionMNIST\nfrom model import AlexNet\nfrom 练习.AlexNet.model import AlexNet\n\n\n# 测试数据处理\ndef test_data_process():\n    test_data=FashionMNIST(root='.\u002Fdata',\n                           train=False,\n                           transform=transforms.Compose([transforms.Resize(size=227),transforms.ToTensor()]),\n                           download=True)\n    test_dataloader=Data.DataLoader(dataset=test_data,\n                                    # 这里是一张一张进行测试\n                                    batch_size=1,\n                                    shuffle=True,\n                                    num_workers=0)\n    return test_dataloader\n\n# 定义模型测试函数\ndef test_model_process(model,test_dataloader):\n    # 将模型放到设备当中，先进行判断\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n\n    # 设置初始化参数\n    test_corrects=0.0\n    test_num=0\n\n    # 进行模型测试\n    # 模型在推理的时候只进行前向传播，不再进行反向传播更新梯度了\n    # 不进行梯度计算，可以节省内存，加快运行速度\n    with torch.no_grad():\n        # 从数据中进行\n        for test_data_x,test_data_y in test_dataloader:\n            test_data_x=test_data_x.to(device)\n            test_data_y=test_data_y.to(device)\n            # 设置为验证模式\n            model.eval()\n            # 前向传播过程，输入为测试数据集,输出为对每个样本的预测值\n            output=model(test_data_x)\n            # 查找每一行中最大值对应的下标\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算正确率\n            # .data表示是一个不带梯度信息的tensor\n            # 如果预测正确，则准确度test_corrects加1\n            test_corrects+=torch.sum(pre_lab==test_data_y.data)\n            # 将所有的测试样本进行累计\n            test_num+=test_data_x.size(0)\n\n        # 计算准确度\n        test_acc=test_corrects.double().item()\u002Ftest_num\n        # .item()的作用是：把只含1个数字的 Tensor 转成 Python 的数字\n        print(\"测试的准确率：\",test_acc)\n\n# 实现模型的测试功能\nif __name__==\"__main__\":\n    # 加载模型\n    model=AlexNet()\n    # 调用训练好的权重，把之前训练好、保存下来的模型参数重新装回模型里\n    # 使用torch中的load函数加载权重，利用model.load_state_dict将参数加回到模型当中\n    model.load_state_dict(torch.load('best_model.pth'))\n    # 数据加载\n    test_dataloader=test_data_process()\n    # 加载模型测试的函数\n    test_model_process(model,test_dataloader)\n\n    # 验证集推理实现：\n    # 加载数据加载的更详细一些\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n    # 设置类别，这样预测值就不展示数字，就直接展示这个种类了\n    # 顺序不可改变\n    classes=['T-shirt\u002Ftop','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']\n    with torch.no_grad():\n        # 将数据和标签都放到设备当中\n        for b_x,b_y in test_dataloader:\n            b_x=b_x.to(device)\n            b_y=b_y.to(device)\n\n            # 设置模型为验证模式\n            model.eval()\n            # 模型推理结果\n            output=model(b_x)\n            # 获取最大下标，最大下标就是类别号\n            pre_lab=torch.argmax(output,dim=1)\n            # 取出张量中的数值\n            result=pre_lab.item()\n            label=b_y.item()\n            print(\"预测值：\",classes[result],\"------\",\"真实值：\",classes[label])\n",[457,53432,53433,53439,53449,53459,53469,53473,53483,53493,53504,53508,53512,53516,53524,53540,53550,53566,53576,53590,53594,53604,53614,53624,53630,53634,53638,53646,53650,53666,53674,53678,53682,53690,53698,53702,53706,53710,53714,53720,53724,53734,53742,53750,53754,53758,53762,53770,53774,53790,53794,53798,53802,53814,53818,53830,53834,53838,53850,53854,53864,53868,53872,53884,53888,53896,53900,53904,53912,53916,53924,53928,53932,53936,53940,53944,53960,53968,53972,53976,54024,54030,54034,54044,54052,54060,54064,54068,54072,54076,54084,54088,54104,54108,54116,54124],{"__ignoreMap":32},[460,53434,53435,53437],{"class":462,"line":463},[460,53436,46801],{"class":887},[460,53438,46804],{"class":466},[460,53440,53441,53443,53445,53447],{"class":462,"line":476},[460,53442,46801],{"class":887},[460,53444,47822],{"class":466},[460,53446,47790],{"class":887},[460,53448,47827],{"class":466},[460,53450,53451,53453,53455,53457],{"class":462,"line":482},[460,53452,47145],{"class":887},[460,53454,50207],{"class":466},[460,53456,46801],{"class":887},[460,53458,50212],{"class":466},[460,53460,53461,53463,53465,53467],{"class":462,"line":488},[460,53462,47145],{"class":887},[460,53464,47805],{"class":466},[460,53466,46801],{"class":887},[460,53468,47810],{"class":466},[460,53470,53471],{"class":462,"line":494},[460,53472,50227],{"class":942},[460,53474,53475,53477,53479,53481],{"class":462,"line":500},[460,53476,47145],{"class":887},[460,53478,47775],{"class":466},[460,53480,46801],{"class":887},[460,53482,47780],{"class":466},[460,53484,53485,53487,53489,53491],{"class":462,"line":506},[460,53486,47145],{"class":887},[460,53488,48319],{"class":466},[460,53490,46801],{"class":887},[460,53492,51862],{"class":466},[460,53494,53495,53497,53500,53502],{"class":462,"line":512},[460,53496,47145],{"class":887},[460,53498,53499],{"class":466}," 练习.AlexNet.model ",[460,53501,46801],{"class":887},[460,53503,51862],{"class":466},[460,53505,53506],{"class":462,"line":518},[460,53507,522],{"emptyLinePlaceholder":521},[460,53509,53510],{"class":462,"line":525},[460,53511,522],{"emptyLinePlaceholder":521},[460,53513,53514],{"class":462,"line":531},[460,53515,50256],{"class":942},[460,53517,53518,53520,53522],{"class":462,"line":537},[460,53519,48352],{"class":887},[460,53521,50263],{"class":929},[460,53523,48358],{"class":466},[460,53525,53526,53528,53530,53532,53534,53536,53538],{"class":462,"line":543},[460,53527,50270],{"class":466},[460,53529,894],{"class":887},[460,53531,47862],{"class":466},[460,53533,47865],{"class":3380},[460,53535,894],{"class":887},[460,53537,47870],{"class":1353},[460,53539,1363],{"class":466},[460,53541,53542,53544,53546,53548],{"class":462,"line":549},[460,53543,50287],{"class":3380},[460,53545,894],{"class":887},[460,53547,50292],{"class":900},[460,53549,1363],{"class":466},[460,53551,53552,53554,53556,53558,53560,53562,53564],{"class":462,"line":555},[460,53553,50299],{"class":3380},[460,53555,894],{"class":887},[460,53557,47899],{"class":466},[460,53559,47902],{"class":3380},[460,53561,894],{"class":887},[460,53563,51754],{"class":900},[460,53565,47910],{"class":466},[460,53567,53568,53570,53572,53574],{"class":462,"line":560},[460,53569,50316],{"class":3380},[460,53571,894],{"class":887},[460,53573,47882],{"class":900},[460,53575,3754],{"class":466},[460,53577,53578,53580,53582,53584,53586,53588],{"class":462,"line":566},[460,53579,50327],{"class":466},[460,53581,894],{"class":887},[460,53583,47940],{"class":466},[460,53585,3635],{"class":3380},[460,53587,894],{"class":887},[460,53589,50338],{"class":466},[460,53591,53592],{"class":462,"line":572},[460,53593,50343],{"class":942},[460,53595,53596,53598,53600,53602],{"class":462,"line":578},[460,53597,50348],{"class":3380},[460,53599,894],{"class":887},[460,53601,901],{"class":900},[460,53603,1363],{"class":466},[460,53605,53606,53608,53610,53612],{"class":462,"line":812},[460,53607,50359],{"class":3380},[460,53609,894],{"class":887},[460,53611,47882],{"class":900},[460,53613,1363],{"class":466},[460,53615,53616,53618,53620,53622],{"class":462,"line":818},[460,53617,50370],{"class":3380},[460,53619,894],{"class":887},[460,53621,936],{"class":900},[460,53623,3754],{"class":466},[460,53625,53626,53628],{"class":462,"line":824},[460,53627,20605],{"class":887},[460,53629,50383],{"class":466},[460,53631,53632],{"class":462,"line":2074},[460,53633,522],{"emptyLinePlaceholder":521},[460,53635,53636],{"class":462,"line":2088},[460,53637,50392],{"class":942},[460,53639,53640,53642,53644],{"class":462,"line":2103},[460,53641,48352],{"class":887},[460,53643,50399],{"class":929},[460,53645,50402],{"class":466},[460,53647,53648],{"class":462,"line":2122},[460,53649,50407],{"class":942},[460,53651,53652,53654,53656,53658,53660,53662,53664],{"class":462,"line":2144},[460,53653,47644],{"class":466},[460,53655,894],{"class":887},[460,53657,47651],{"class":1353},[460,53659,3766],{"class":887},[460,53661,47656],{"class":466},[460,53663,3763],{"class":887},[460,53665,50424],{"class":1353},[460,53667,53668,53670,53672],{"class":462,"line":2158},[460,53669,47696],{"class":466},[460,53671,894],{"class":887},[460,53673,48694],{"class":466},[460,53675,53676],{"class":462,"line":2163},[460,53677,522],{"emptyLinePlaceholder":521},[460,53679,53680],{"class":462,"line":2168},[460,53681,50441],{"class":942},[460,53683,53684,53686,53688],{"class":462,"line":2183},[460,53685,50446],{"class":466},[460,53687,894],{"class":887},[460,53689,48747],{"class":900},[460,53691,53692,53694,53696],{"class":462,"line":2194},[460,53693,50455],{"class":466},[460,53695,894],{"class":887},[460,53697,19606],{"class":900},[460,53699,53700],{"class":462,"line":2199},[460,53701,522],{"emptyLinePlaceholder":521},[460,53703,53704],{"class":462,"line":2204},[460,53705,50468],{"class":942},[460,53707,53708],{"class":462,"line":2212},[460,53709,50473],{"class":942},[460,53711,53712],{"class":462,"line":2257},[460,53713,50478],{"class":942},[460,53715,53716,53718],{"class":462,"line":2285},[460,53717,50483],{"class":887},[460,53719,49259],{"class":466},[460,53721,53722],{"class":462,"line":2298},[460,53723,50490],{"class":942},[460,53725,53726,53728,53730,53732],{"class":462,"line":2303},[460,53727,19924],{"class":887},[460,53729,50497],{"class":466},[460,53731,11713],{"class":887},[460,53733,50502],{"class":466},[460,53735,53736,53738,53740],{"class":462,"line":2308},[460,53737,50507],{"class":466},[460,53739,894],{"class":887},[460,53741,50512],{"class":466},[460,53743,53744,53746,53748],{"class":462,"line":2318},[460,53745,50517],{"class":466},[460,53747,894],{"class":887},[460,53749,50522],{"class":466},[460,53751,53752],{"class":462,"line":2333},[460,53753,50527],{"class":942},[460,53755,53756],{"class":462,"line":2338},[460,53757,49251],{"class":466},[460,53759,53760],{"class":462,"line":2343},[460,53761,50536],{"class":942},[460,53763,53764,53766,53768],{"class":462,"line":2353},[460,53765,49060],{"class":466},[460,53767,894],{"class":887},[460,53769,50545],{"class":466},[460,53771,53772],{"class":462,"line":2368},[460,53773,50550],{"class":942},[460,53775,53776,53778,53780,53782,53784,53786,53788],{"class":462,"line":2381},[460,53777,49075],{"class":466},[460,53779,894],{"class":887},[460,53781,49080],{"class":466},[460,53783,49083],{"class":3380},[460,53785,894],{"class":887},[460,53787,901],{"class":900},[460,53789,3754],{"class":466},[460,53791,53792],{"class":462,"line":2394},[460,53793,50571],{"class":942},[460,53795,53796],{"class":462,"line":2399},[460,53797,50576],{"class":942},[460,53799,53800],{"class":462,"line":2404},[460,53801,50581],{"class":942},[460,53803,53804,53806,53808,53810,53812],{"class":462,"line":2414},[460,53805,50586],{"class":466},[460,53807,3467],{"class":887},[460,53809,49173],{"class":466},[460,53811,19471],{"class":887},[460,53813,50595],{"class":466},[460,53815,53816],{"class":462,"line":2428},[460,53817,50600],{"class":942},[460,53819,53820,53822,53824,53826,53828],{"class":462,"line":2440},[460,53821,50605],{"class":466},[460,53823,3467],{"class":887},[460,53825,50610],{"class":466},[460,53827,936],{"class":900},[460,53829,3754],{"class":466},[460,53831,53832],{"class":462,"line":2445},[460,53833,522],{"emptyLinePlaceholder":521},[460,53835,53836],{"class":462,"line":2450},[460,53837,50623],{"class":942},[460,53839,53840,53842,53844,53846,53848],{"class":462,"line":2460},[460,53841,50628],{"class":466},[460,53843,894],{"class":887},[460,53845,50633],{"class":466},[460,53847,8331],{"class":887},[460,53849,50638],{"class":466},[460,53851,53852],{"class":462,"line":2473},[460,53853,50643],{"class":942},[460,53855,53856,53858,53860,53862],{"class":462,"line":2487},[460,53857,48856],{"class":900},[460,53859,2174],{"class":466},[460,53861,50652],{"class":1353},[460,53863,50655],{"class":466},[460,53865,53866],{"class":462,"line":2492},[460,53867,522],{"emptyLinePlaceholder":521},[460,53869,53870],{"class":462,"line":2497},[460,53871,50664],{"class":942},[460,53873,53874,53876,53878,53880,53882],{"class":462,"line":2505},[460,53875,18100],{"class":887},[460,53877,47627],{"class":900},[460,53879,19471],{"class":887},[460,53881,47632],{"class":1353},[460,53883,20257],{"class":466},[460,53885,53886],{"class":462,"line":2516},[460,53887,50681],{"class":942},[460,53889,53890,53892,53894],{"class":462,"line":2529},[460,53891,47696],{"class":466},[460,53893,894],{"class":887},[460,53895,53394],{"class":466},[460,53897,53898],{"class":462,"line":2542},[460,53899,50694],{"class":942},[460,53901,53902],{"class":462,"line":2559},[460,53903,50699],{"class":942},[460,53905,53906,53908,53910],{"class":462,"line":2564},[460,53907,50704],{"class":466},[460,53909,50707],{"class":1353},[460,53911,6311],{"class":466},[460,53913,53914],{"class":462,"line":2569},[460,53915,50714],{"class":942},[460,53917,53918,53920,53922],{"class":462,"line":2579},[460,53919,50327],{"class":466},[460,53921,894],{"class":887},[460,53923,50723],{"class":466},[460,53925,53926],{"class":462,"line":2597},[460,53927,50728],{"class":942},[460,53929,53930],{"class":462,"line":2610},[460,53931,50733],{"class":466},[460,53933,53934],{"class":462,"line":2621},[460,53935,522],{"emptyLinePlaceholder":521},[460,53937,53938],{"class":462,"line":2634},[460,53939,50742],{"class":942},[460,53941,53942],{"class":462,"line":2648},[460,53943,50747],{"class":942},[460,53945,53946,53948,53950,53952,53954,53956,53958],{"class":462,"line":2653},[460,53947,47644],{"class":466},[460,53949,894],{"class":887},[460,53951,47651],{"class":1353},[460,53953,3766],{"class":887},[460,53955,47656],{"class":466},[460,53957,3763],{"class":887},[460,53959,50424],{"class":1353},[460,53961,53962,53964,53966],{"class":462,"line":2658},[460,53963,47696],{"class":466},[460,53965,894],{"class":887},[460,53967,48694],{"class":466},[460,53969,53970],{"class":462,"line":2670},[460,53971,50776],{"class":942},[460,53973,53974],{"class":462,"line":2683},[460,53975,50781],{"class":942},[460,53977,53978,53980,53982,53984,53986,53988,53990,53992,53994,53996,53998,54000,54002,54004,54006,54008,54010,54012,54014,54016,54018,54020,54022],{"class":462,"line":2695},[460,53979,50786],{"class":466},[460,53981,894],{"class":887},[460,53983,17601],{"class":466},[460,53985,50793],{"class":1353},[460,53987,3986],{"class":466},[460,53989,50798],{"class":1353},[460,53991,3986],{"class":466},[460,53993,50803],{"class":1353},[460,53995,3986],{"class":466},[460,53997,50808],{"class":1353},[460,53999,3986],{"class":466},[460,54001,50813],{"class":1353},[460,54003,3986],{"class":466},[460,54005,50818],{"class":1353},[460,54007,3986],{"class":466},[460,54009,50823],{"class":1353},[460,54011,3986],{"class":466},[460,54013,50828],{"class":1353},[460,54015,3986],{"class":466},[460,54017,50833],{"class":1353},[460,54019,3986],{"class":466},[460,54021,50838],{"class":1353},[460,54023,13307],{"class":466},[460,54025,54026,54028],{"class":462,"line":2700},[460,54027,50483],{"class":887},[460,54029,49259],{"class":466},[460,54031,54032],{"class":462,"line":2709},[460,54033,50851],{"class":942},[460,54035,54036,54038,54040,54042],{"class":462,"line":2718},[460,54037,19924],{"class":887},[460,54039,50858],{"class":466},[460,54041,11713],{"class":887},[460,54043,50502],{"class":466},[460,54045,54046,54048,54050],{"class":462,"line":2723},[460,54047,49015],{"class":466},[460,54049,894],{"class":887},[460,54051,49020],{"class":466},[460,54053,54054,54056,54058],{"class":462,"line":2732},[460,54055,49030],{"class":466},[460,54057,894],{"class":887},[460,54059,49035],{"class":466},[460,54061,54062],{"class":462,"line":2750},[460,54063,522],{"emptyLinePlaceholder":521},[460,54065,54066],{"class":462,"line":2782},[460,54067,50887],{"class":942},[460,54069,54070],{"class":462,"line":2809},[460,54071,49251],{"class":466},[460,54073,54074],{"class":462,"line":2836},[460,54075,50896],{"class":942},[460,54077,54078,54080,54082],{"class":462,"line":2856},[460,54079,49060],{"class":466},[460,54081,894],{"class":887},[460,54083,49065],{"class":466},[460,54085,54086],{"class":462,"line":2865},[460,54087,50909],{"class":942},[460,54089,54090,54092,54094,54096,54098,54100,54102],{"class":462,"line":2881},[460,54091,49075],{"class":466},[460,54093,894],{"class":887},[460,54095,49080],{"class":466},[460,54097,49083],{"class":3380},[460,54099,894],{"class":887},[460,54101,901],{"class":900},[460,54103,3754],{"class":466},[460,54105,54106],{"class":462,"line":2887},[460,54107,50930],{"class":942},[460,54109,54110,54112,54114],{"class":462,"line":2893},[460,54111,50935],{"class":466},[460,54113,894],{"class":887},[460,54115,50940],{"class":466},[460,54117,54118,54120,54122],{"class":462,"line":2899},[460,54119,50945],{"class":466},[460,54121,894],{"class":887},[460,54123,50950],{"class":466},[460,54125,54126,54128,54130,54132,54134,54136,54138,54140],{"class":462,"line":2905},[460,54127,50955],{"class":900},[460,54129,2174],{"class":466},[460,54131,50960],{"class":1353},[460,54133,50963],{"class":466},[460,54135,50966],{"class":1353},[460,54137,3986],{"class":466},[460,54139,50971],{"class":1353},[460,54141,50974],{"class":466},[23,54143,54145],{"id":54144},"_22vgg","2.2.VGG",[115,54147,54149],{"id":54148},"_221原理","2.2.1.原理",[14,54151,54152],{},[30,54153],{"alt":32,"src":54154},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-015.png",[14,54156,54157],{},[30,54158],{"alt":32,"src":54159},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-016.png",[14,54161,54162],{},[30,54163],{"alt":32,"src":54164},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-017.png",[14,54166,54167],{},"参数详细描述：",[14,54169,54170],{},[30,54171],{"alt":32,"src":54172},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-018.png",[14,54174,54175],{},[30,54176],{"alt":32,"src":54177},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-019.png",[14,54179,54180],{},[30,54181],{"alt":32,"src":54182},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-020.png",[14,54184,54185],{},[30,54186],{"alt":32,"src":54187},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-021.png",[14,54189,54190],{},[30,54191],{"alt":32,"src":54192},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-022.png",[115,54194,54196],{"id":54195},"_222代码实现","2.2.2.代码实现",[103,54198,54199],{},[43,54200,54201],{},"网络搭建",[451,54203,54205],{"className":46787,"code":54204,"language":46789,"meta":32,"style":32},"import torch\nfrom sympy.core.sympify import kernS\nfrom torch import nn\nfrom torchsummary import summary\n\nclass VGG16(nn.Module):\n    def __init__(self):\n        super(VGG16, self).__init__()\n        # 按照块来进行搭建神经网络层,按照序列来写\n        # 这里用的是灰度图\n        self.block1=nn.Sequential(\n            nn.Conv2d(in_channels=1,out_channels=64,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=64,out_channels=64,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=2,stride=2,padding=0)\n        )\n        # 第二层\n        self.block2=nn.Sequential(\n            nn.Conv2d(in_channels=64,out_channels=128,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=128,out_channels=128,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=2,stride=2,padding=0)\n        )\n        # 第三层\n        self.block3=nn.Sequential(\n            nn.Conv2d(in_channels=128,out_channels=256,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=256,out_channels=256,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=256,out_channels=256,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=2,stride=2,padding=0)\n        )\n        # 第四层\n        self.block4=nn.Sequential(\n            nn.Conv2d(in_channels=256,out_channels=512,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=512,out_channels=512,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=512,out_channels=512,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=2,stride=2,padding=0)\n        )\n        # 第五层\n        self.block5=nn.Sequential(\n            nn.Conv2d(in_channels=512,out_channels=512,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=512,out_channels=512,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=512,out_channels=512,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=2,stride=2,padding=0)\n        )\n        # 全连接层\n        self.block6=nn.Sequential(\n            # 平展操作\n            # 这里为了适应笔记本显存过低4g，然后不进行1000分类，而是进行10分类，将全连接层进行修改\n            nn.Flatten(),\n            nn.Linear(7*7*512,256),\n            nn.ReLU(),\n            nn.Linear(256,128),\n            nn.ReLU(),\n            nn.Linear(128,10)\n        )\n\n        # 权重初始化,保证w不会过大过小导致在训练的时候不收敛\n        # 循环遍历模型\n        for m in self.modules():\n            # print(m)\n            if isinstance(m,nn.Conv2d):\n                # 凯明初始化,初始化w,对应的激活函数是relu\n                nn.init.kaiming_normal_(m.weight,nonlinearity='relu')\n                # 判断b参数是否存在\n                if m.bias is not None:\n                    # 如果参数不存在的化初始化b=0\n                    nn.init.constant_(m.bias,0)\n            # 全连接层初始化\n            elif isinstance(m,nn.Linear):\n                # 这个初始化方法是利用的是正太分布的方式\n                # 均值为0，方差为0.01\n                nn.init.normal_(m.weight,0,0.01)\n                # 初始化b参数\n                if m.bias is not None:\n                    nn.init.constant_(m.bias,0)\n\n    # 定义前向传播\n    def forward(self,x):\n        x=self.block1(x)\n        x=self.block2(x)\n        x=self.block3(x)\n        x=self.block4(x)\n        x=self.block5(x)\n        x=self.block6(x)\n        return x\n\n# 验证模型\nif __name__=='__main__':\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n    print(device)\n    model=VGG16().to(device)\n    print(summary(model,(1,224,224)))\n",[457,54206,54207,54213,54225,54235,54245,54249,54266,54274,54293,54298,54303,54315,54353,54358,54394,54398,54427,54432,54437,54448,54484,54488,54524,54528,54556,54560,54565,54576,54612,54616,54652,54656,54692,54696,54724,54728,54733,54744,54781,54785,54821,54825,54861,54865,54893,54897,54902,54913,54949,54953,54989,54993,55029,55033,55061,55065,55070,55081,55086,55091,55096,55117,55121,55133,55137,55149,55153,55157,55162,55167,55182,55187,55197,55202,55217,55222,55241,55246,55255,55260,55270,55275,55280,55294,55299,55313,55321,55325,55329,55337,55348,55359,55370,55381,55392,55403,55409,55413,55418,55431,55451,55457,55466],{"__ignoreMap":32},[460,54208,54209,54211],{"class":462,"line":463},[460,54210,46801],{"class":887},[460,54212,46804],{"class":466},[460,54214,54215,54217,54220,54222],{"class":462,"line":476},[460,54216,47145],{"class":887},[460,54218,54219],{"class":466}," sympy.core.sympify ",[460,54221,46801],{"class":887},[460,54223,54224],{"class":466}," kernS\n",[460,54226,54227,54229,54231,54233],{"class":462,"line":482},[460,54228,47145],{"class":887},[460,54230,47148],{"class":466},[460,54232,46801],{"class":887},[460,54234,47153],{"class":466},[460,54236,54237,54239,54241,54243],{"class":462,"line":488},[460,54238,47145],{"class":887},[460,54240,47165],{"class":466},[460,54242,46801],{"class":887},[460,54244,47170],{"class":466},[460,54246,54247],{"class":462,"line":494},[460,54248,522],{"emptyLinePlaceholder":521},[460,54250,54251,54253,54256,54258,54260,54262,54264],{"class":462,"line":500},[460,54252,31148],{"class":887},[460,54254,54255],{"class":929}," VGG16",[460,54257,2174],{"class":466},[460,54259,47186],{"class":929},[460,54261,6000],{"class":466},[460,54263,47191],{"class":929},[460,54265,47194],{"class":466},[460,54267,54268,54270,54272],{"class":462,"line":506},[460,54269,47209],{"class":887},[460,54271,47212],{"class":900},[460,54273,47215],{"class":466},[460,54275,54276,54278,54280,54283,54285,54287,54289,54291],{"class":462,"line":512},[460,54277,47225],{"class":900},[460,54279,2174],{"class":466},[460,54281,54282],{"class":900},"VGG16",[460,54284,904],{"class":466},[460,54286,47231],{"class":900},[460,54288,3596],{"class":466},[460,54290,47236],{"class":900},[460,54292,10758],{"class":466},[460,54294,54295],{"class":462,"line":518},[460,54296,54297],{"class":942},"        # 按照块来进行搭建神经网络层,按照序列来写\n",[460,54299,54300],{"class":462,"line":525},[460,54301,54302],{"class":942},"        # 这里用的是灰度图\n",[460,54304,54305,54307,54310,54312],{"class":462,"line":531},[460,54306,47252],{"class":900},[460,54308,54309],{"class":466},".block1",[460,54311,894],{"class":887},[460,54313,54314],{"class":466},"nn.Sequential(\n",[460,54316,54317,54320,54322,54324,54326,54328,54330,54332,54334,54336,54338,54340,54342,54344,54346,54348,54350],{"class":462,"line":537},[460,54318,54319],{"class":466},"            nn.Conv2d(",[460,54321,47263],{"class":3380},[460,54323,894],{"class":887},[460,54325,901],{"class":900},[460,54327,3986],{"class":466},[460,54329,47272],{"class":3380},[460,54331,894],{"class":887},[460,54333,16948],{"class":900},[460,54335,3986],{"class":466},[460,54337,47281],{"class":3380},[460,54339,894],{"class":887},[460,54341,913],{"class":900},[460,54343,3986],{"class":466},[460,54345,47290],{"class":3380},[460,54347,894],{"class":887},[460,54349,901],{"class":900},[460,54351,54352],{"class":466},"),\n",[460,54354,54355],{"class":462,"line":543},[460,54356,54357],{"class":466},"            nn.ReLU(),\n",[460,54359,54360,54362,54364,54366,54368,54370,54372,54374,54376,54378,54380,54382,54384,54386,54388,54390,54392],{"class":462,"line":549},[460,54361,54319],{"class":466},[460,54363,47263],{"class":3380},[460,54365,894],{"class":887},[460,54367,16948],{"class":900},[460,54369,3986],{"class":466},[460,54371,47272],{"class":3380},[460,54373,894],{"class":887},[460,54375,16948],{"class":900},[460,54377,3986],{"class":466},[460,54379,47281],{"class":3380},[460,54381,894],{"class":887},[460,54383,913],{"class":900},[460,54385,3986],{"class":466},[460,54387,47290],{"class":3380},[460,54389,894],{"class":887},[460,54391,901],{"class":900},[460,54393,54352],{"class":466},[460,54395,54396],{"class":462,"line":555},[460,54397,54357],{"class":466},[460,54399,54400,54403,54405,54407,54409,54411,54413,54415,54417,54419,54421,54423,54425],{"class":462,"line":560},[460,54401,54402],{"class":466},"            nn.MaxPool2d(",[460,54404,47281],{"class":3380},[460,54406,894],{"class":887},[460,54408,907],{"class":900},[460,54410,3986],{"class":466},[460,54412,47336],{"class":3380},[460,54414,894],{"class":887},[460,54416,907],{"class":900},[460,54418,3986],{"class":466},[460,54420,47290],{"class":3380},[460,54422,894],{"class":887},[460,54424,936],{"class":900},[460,54426,3754],{"class":466},[460,54428,54429],{"class":462,"line":566},[460,54430,54431],{"class":466},"        )\n",[460,54433,54434],{"class":462,"line":572},[460,54435,54436],{"class":942},"        # 第二层\n",[460,54438,54439,54441,54444,54446],{"class":462,"line":578},[460,54440,47252],{"class":900},[460,54442,54443],{"class":466},".block2",[460,54445,894],{"class":887},[460,54447,54314],{"class":466},[460,54449,54450,54452,54454,54456,54458,54460,54462,54464,54466,54468,54470,54472,54474,54476,54478,54480,54482],{"class":462,"line":812},[460,54451,54319],{"class":466},[460,54453,47263],{"class":3380},[460,54455,894],{"class":887},[460,54457,16948],{"class":900},[460,54459,3986],{"class":466},[460,54461,47272],{"class":3380},[460,54463,894],{"class":887},[460,54465,48475],{"class":900},[460,54467,3986],{"class":466},[460,54469,47281],{"class":3380},[460,54471,894],{"class":887},[460,54473,913],{"class":900},[460,54475,3986],{"class":466},[460,54477,47290],{"class":3380},[460,54479,894],{"class":887},[460,54481,901],{"class":900},[460,54483,54352],{"class":466},[460,54485,54486],{"class":462,"line":818},[460,54487,54357],{"class":466},[460,54489,54490,54492,54494,54496,54498,54500,54502,54504,54506,54508,54510,54512,54514,54516,54518,54520,54522],{"class":462,"line":824},[460,54491,54319],{"class":466},[460,54493,47263],{"class":3380},[460,54495,894],{"class":887},[460,54497,48475],{"class":900},[460,54499,3986],{"class":466},[460,54501,47272],{"class":3380},[460,54503,894],{"class":887},[460,54505,48475],{"class":900},[460,54507,3986],{"class":466},[460,54509,47281],{"class":3380},[460,54511,894],{"class":887},[460,54513,913],{"class":900},[460,54515,3986],{"class":466},[460,54517,47290],{"class":3380},[460,54519,894],{"class":887},[460,54521,901],{"class":900},[460,54523,54352],{"class":466},[460,54525,54526],{"class":462,"line":2074},[460,54527,54357],{"class":466},[460,54529,54530,54532,54534,54536,54538,54540,54542,54544,54546,54548,54550,54552,54554],{"class":462,"line":2088},[460,54531,54402],{"class":466},[460,54533,47281],{"class":3380},[460,54535,894],{"class":887},[460,54537,907],{"class":900},[460,54539,3986],{"class":466},[460,54541,47336],{"class":3380},[460,54543,894],{"class":887},[460,54545,907],{"class":900},[460,54547,3986],{"class":466},[460,54549,47290],{"class":3380},[460,54551,894],{"class":887},[460,54553,936],{"class":900},[460,54555,3754],{"class":466},[460,54557,54558],{"class":462,"line":2103},[460,54559,54431],{"class":466},[460,54561,54562],{"class":462,"line":2122},[460,54563,54564],{"class":942},"        # 第三层\n",[460,54566,54567,54569,54572,54574],{"class":462,"line":2144},[460,54568,47252],{"class":900},[460,54570,54571],{"class":466},".block3",[460,54573,894],{"class":887},[460,54575,54314],{"class":466},[460,54577,54578,54580,54582,54584,54586,54588,54590,54592,54594,54596,54598,54600,54602,54604,54606,54608,54610],{"class":462,"line":2158},[460,54579,54319],{"class":466},[460,54581,47263],{"class":3380},[460,54583,894],{"class":887},[460,54585,48475],{"class":900},[460,54587,3986],{"class":466},[460,54589,47272],{"class":3380},[460,54591,894],{"class":887},[460,54593,51175],{"class":900},[460,54595,3986],{"class":466},[460,54597,47281],{"class":3380},[460,54599,894],{"class":887},[460,54601,913],{"class":900},[460,54603,3986],{"class":466},[460,54605,47290],{"class":3380},[460,54607,894],{"class":887},[460,54609,901],{"class":900},[460,54611,54352],{"class":466},[460,54613,54614],{"class":462,"line":2163},[460,54615,54357],{"class":466},[460,54617,54618,54620,54622,54624,54626,54628,54630,54632,54634,54636,54638,54640,54642,54644,54646,54648,54650],{"class":462,"line":2168},[460,54619,54319],{"class":466},[460,54621,47263],{"class":3380},[460,54623,894],{"class":887},[460,54625,51175],{"class":900},[460,54627,3986],{"class":466},[460,54629,47272],{"class":3380},[460,54631,894],{"class":887},[460,54633,51175],{"class":900},[460,54635,3986],{"class":466},[460,54637,47281],{"class":3380},[460,54639,894],{"class":887},[460,54641,913],{"class":900},[460,54643,3986],{"class":466},[460,54645,47290],{"class":3380},[460,54647,894],{"class":887},[460,54649,901],{"class":900},[460,54651,54352],{"class":466},[460,54653,54654],{"class":462,"line":2183},[460,54655,54357],{"class":466},[460,54657,54658,54660,54662,54664,54666,54668,54670,54672,54674,54676,54678,54680,54682,54684,54686,54688,54690],{"class":462,"line":2194},[460,54659,54319],{"class":466},[460,54661,47263],{"class":3380},[460,54663,894],{"class":887},[460,54665,51175],{"class":900},[460,54667,3986],{"class":466},[460,54669,47272],{"class":3380},[460,54671,894],{"class":887},[460,54673,51175],{"class":900},[460,54675,3986],{"class":466},[460,54677,47281],{"class":3380},[460,54679,894],{"class":887},[460,54681,913],{"class":900},[460,54683,3986],{"class":466},[460,54685,47290],{"class":3380},[460,54687,894],{"class":887},[460,54689,901],{"class":900},[460,54691,54352],{"class":466},[460,54693,54694],{"class":462,"line":2199},[460,54695,54357],{"class":466},[460,54697,54698,54700,54702,54704,54706,54708,54710,54712,54714,54716,54718,54720,54722],{"class":462,"line":2204},[460,54699,54402],{"class":466},[460,54701,47281],{"class":3380},[460,54703,894],{"class":887},[460,54705,907],{"class":900},[460,54707,3986],{"class":466},[460,54709,47336],{"class":3380},[460,54711,894],{"class":887},[460,54713,907],{"class":900},[460,54715,3986],{"class":466},[460,54717,47290],{"class":3380},[460,54719,894],{"class":887},[460,54721,936],{"class":900},[460,54723,3754],{"class":466},[460,54725,54726],{"class":462,"line":2212},[460,54727,54431],{"class":466},[460,54729,54730],{"class":462,"line":2257},[460,54731,54732],{"class":942},"        # 第四层\n",[460,54734,54735,54737,54740,54742],{"class":462,"line":2285},[460,54736,47252],{"class":900},[460,54738,54739],{"class":466},".block4",[460,54741,894],{"class":887},[460,54743,54314],{"class":466},[460,54745,54746,54748,54750,54752,54754,54756,54758,54760,54763,54765,54767,54769,54771,54773,54775,54777,54779],{"class":462,"line":2298},[460,54747,54319],{"class":466},[460,54749,47263],{"class":3380},[460,54751,894],{"class":887},[460,54753,51175],{"class":900},[460,54755,3986],{"class":466},[460,54757,47272],{"class":3380},[460,54759,894],{"class":887},[460,54761,54762],{"class":900},"512",[460,54764,3986],{"class":466},[460,54766,47281],{"class":3380},[460,54768,894],{"class":887},[460,54770,913],{"class":900},[460,54772,3986],{"class":466},[460,54774,47290],{"class":3380},[460,54776,894],{"class":887},[460,54778,901],{"class":900},[460,54780,54352],{"class":466},[460,54782,54783],{"class":462,"line":2303},[460,54784,54357],{"class":466},[460,54786,54787,54789,54791,54793,54795,54797,54799,54801,54803,54805,54807,54809,54811,54813,54815,54817,54819],{"class":462,"line":2308},[460,54788,54319],{"class":466},[460,54790,47263],{"class":3380},[460,54792,894],{"class":887},[460,54794,54762],{"class":900},[460,54796,3986],{"class":466},[460,54798,47272],{"class":3380},[460,54800,894],{"class":887},[460,54802,54762],{"class":900},[460,54804,3986],{"class":466},[460,54806,47281],{"class":3380},[460,54808,894],{"class":887},[460,54810,913],{"class":900},[460,54812,3986],{"class":466},[460,54814,47290],{"class":3380},[460,54816,894],{"class":887},[460,54818,901],{"class":900},[460,54820,54352],{"class":466},[460,54822,54823],{"class":462,"line":2318},[460,54824,54357],{"class":466},[460,54826,54827,54829,54831,54833,54835,54837,54839,54841,54843,54845,54847,54849,54851,54853,54855,54857,54859],{"class":462,"line":2333},[460,54828,54319],{"class":466},[460,54830,47263],{"class":3380},[460,54832,894],{"class":887},[460,54834,54762],{"class":900},[460,54836,3986],{"class":466},[460,54838,47272],{"class":3380},[460,54840,894],{"class":887},[460,54842,54762],{"class":900},[460,54844,3986],{"class":466},[460,54846,47281],{"class":3380},[460,54848,894],{"class":887},[460,54850,913],{"class":900},[460,54852,3986],{"class":466},[460,54854,47290],{"class":3380},[460,54856,894],{"class":887},[460,54858,901],{"class":900},[460,54860,54352],{"class":466},[460,54862,54863],{"class":462,"line":2338},[460,54864,54357],{"class":466},[460,54866,54867,54869,54871,54873,54875,54877,54879,54881,54883,54885,54887,54889,54891],{"class":462,"line":2343},[460,54868,54402],{"class":466},[460,54870,47281],{"class":3380},[460,54872,894],{"class":887},[460,54874,907],{"class":900},[460,54876,3986],{"class":466},[460,54878,47336],{"class":3380},[460,54880,894],{"class":887},[460,54882,907],{"class":900},[460,54884,3986],{"class":466},[460,54886,47290],{"class":3380},[460,54888,894],{"class":887},[460,54890,936],{"class":900},[460,54892,3754],{"class":466},[460,54894,54895],{"class":462,"line":2353},[460,54896,54431],{"class":466},[460,54898,54899],{"class":462,"line":2368},[460,54900,54901],{"class":942},"        # 第五层\n",[460,54903,54904,54906,54909,54911],{"class":462,"line":2381},[460,54905,47252],{"class":900},[460,54907,54908],{"class":466},".block5",[460,54910,894],{"class":887},[460,54912,54314],{"class":466},[460,54914,54915,54917,54919,54921,54923,54925,54927,54929,54931,54933,54935,54937,54939,54941,54943,54945,54947],{"class":462,"line":2394},[460,54916,54319],{"class":466},[460,54918,47263],{"class":3380},[460,54920,894],{"class":887},[460,54922,54762],{"class":900},[460,54924,3986],{"class":466},[460,54926,47272],{"class":3380},[460,54928,894],{"class":887},[460,54930,54762],{"class":900},[460,54932,3986],{"class":466},[460,54934,47281],{"class":3380},[460,54936,894],{"class":887},[460,54938,913],{"class":900},[460,54940,3986],{"class":466},[460,54942,47290],{"class":3380},[460,54944,894],{"class":887},[460,54946,901],{"class":900},[460,54948,54352],{"class":466},[460,54950,54951],{"class":462,"line":2399},[460,54952,54357],{"class":466},[460,54954,54955,54957,54959,54961,54963,54965,54967,54969,54971,54973,54975,54977,54979,54981,54983,54985,54987],{"class":462,"line":2404},[460,54956,54319],{"class":466},[460,54958,47263],{"class":3380},[460,54960,894],{"class":887},[460,54962,54762],{"class":900},[460,54964,3986],{"class":466},[460,54966,47272],{"class":3380},[460,54968,894],{"class":887},[460,54970,54762],{"class":900},[460,54972,3986],{"class":466},[460,54974,47281],{"class":3380},[460,54976,894],{"class":887},[460,54978,913],{"class":900},[460,54980,3986],{"class":466},[460,54982,47290],{"class":3380},[460,54984,894],{"class":887},[460,54986,901],{"class":900},[460,54988,54352],{"class":466},[460,54990,54991],{"class":462,"line":2414},[460,54992,54357],{"class":466},[460,54994,54995,54997,54999,55001,55003,55005,55007,55009,55011,55013,55015,55017,55019,55021,55023,55025,55027],{"class":462,"line":2428},[460,54996,54319],{"class":466},[460,54998,47263],{"class":3380},[460,55000,894],{"class":887},[460,55002,54762],{"class":900},[460,55004,3986],{"class":466},[460,55006,47272],{"class":3380},[460,55008,894],{"class":887},[460,55010,54762],{"class":900},[460,55012,3986],{"class":466},[460,55014,47281],{"class":3380},[460,55016,894],{"class":887},[460,55018,913],{"class":900},[460,55020,3986],{"class":466},[460,55022,47290],{"class":3380},[460,55024,894],{"class":887},[460,55026,901],{"class":900},[460,55028,54352],{"class":466},[460,55030,55031],{"class":462,"line":2440},[460,55032,54357],{"class":466},[460,55034,55035,55037,55039,55041,55043,55045,55047,55049,55051,55053,55055,55057,55059],{"class":462,"line":2445},[460,55036,54402],{"class":466},[460,55038,47281],{"class":3380},[460,55040,894],{"class":887},[460,55042,907],{"class":900},[460,55044,3986],{"class":466},[460,55046,47336],{"class":3380},[460,55048,894],{"class":887},[460,55050,907],{"class":900},[460,55052,3986],{"class":466},[460,55054,47290],{"class":3380},[460,55056,894],{"class":887},[460,55058,936],{"class":900},[460,55060,3754],{"class":466},[460,55062,55063],{"class":462,"line":2450},[460,55064,54431],{"class":466},[460,55066,55067],{"class":462,"line":2460},[460,55068,55069],{"class":942},"        # 全连接层\n",[460,55071,55072,55074,55077,55079],{"class":462,"line":2473},[460,55073,47252],{"class":900},[460,55075,55076],{"class":466},".block6",[460,55078,894],{"class":887},[460,55080,54314],{"class":466},[460,55082,55083],{"class":462,"line":2487},[460,55084,55085],{"class":942},"            # 平展操作\n",[460,55087,55088],{"class":462,"line":2492},[460,55089,55090],{"class":942},"            # 这里为了适应笔记本显存过低4g，然后不进行1000分类，而是进行10分类，将全连接层进行修改\n",[460,55092,55093],{"class":462,"line":2497},[460,55094,55095],{"class":466},"            nn.Flatten(),\n",[460,55097,55098,55101,55103,55105,55107,55109,55111,55113,55115],{"class":462,"line":2505},[460,55099,55100],{"class":466},"            nn.Linear(",[460,55102,6149],{"class":900},[460,55104,8320],{"class":887},[460,55106,6149],{"class":900},[460,55108,8320],{"class":887},[460,55110,54762],{"class":900},[460,55112,3986],{"class":466},[460,55114,51175],{"class":900},[460,55116,54352],{"class":466},[460,55118,55119],{"class":462,"line":2516},[460,55120,54357],{"class":466},[460,55122,55123,55125,55127,55129,55131],{"class":462,"line":2529},[460,55124,55100],{"class":466},[460,55126,51175],{"class":900},[460,55128,3986],{"class":466},[460,55130,48475],{"class":900},[460,55132,54352],{"class":466},[460,55134,55135],{"class":462,"line":2542},[460,55136,54357],{"class":466},[460,55138,55139,55141,55143,55145,55147],{"class":462,"line":2559},[460,55140,55100],{"class":466},[460,55142,48475],{"class":900},[460,55144,3986],{"class":466},[460,55146,2096],{"class":900},[460,55148,3754],{"class":466},[460,55150,55151],{"class":462,"line":2564},[460,55152,54431],{"class":466},[460,55154,55155],{"class":462,"line":2569},[460,55156,522],{"emptyLinePlaceholder":521},[460,55158,55159],{"class":462,"line":2579},[460,55160,55161],{"class":942},"        # 权重初始化,保证w不会过大过小导致在训练的时候不收敛\n",[460,55163,55164],{"class":462,"line":2597},[460,55165,55166],{"class":942},"        # 循环遍历模型\n",[460,55168,55169,55171,55174,55176,55179],{"class":462,"line":2610},[460,55170,19924],{"class":887},[460,55172,55173],{"class":466}," m ",[460,55175,11713],{"class":887},[460,55177,55178],{"class":900}," self",[460,55180,55181],{"class":466},".modules():\n",[460,55183,55184],{"class":462,"line":2621},[460,55185,55186],{"class":942},"            # print(m)\n",[460,55188,55189,55191,55194],{"class":462,"line":2634},[460,55190,21153],{"class":887},[460,55192,55193],{"class":900}," isinstance",[460,55195,55196],{"class":466},"(m,nn.Conv2d):\n",[460,55198,55199],{"class":462,"line":2648},[460,55200,55201],{"class":942},"                # 凯明初始化,初始化w,对应的激活函数是relu\n",[460,55203,55204,55207,55210,55212,55215],{"class":462,"line":2653},[460,55205,55206],{"class":466},"                nn.init.kaiming_normal_(m.weight,",[460,55208,55209],{"class":3380},"nonlinearity",[460,55211,894],{"class":887},[460,55213,55214],{"class":1353},"'relu'",[460,55216,3754],{"class":466},[460,55218,55219],{"class":462,"line":2658},[460,55220,55221],{"class":942},"                # 判断b参数是否存在\n",[460,55223,55224,55227,55230,55233,55236,55239],{"class":462,"line":2670},[460,55225,55226],{"class":887},"                if",[460,55228,55229],{"class":466}," m.bias ",[460,55231,55232],{"class":887},"is",[460,55234,55235],{"class":887}," not",[460,55237,55238],{"class":900}," None",[460,55240,20257],{"class":466},[460,55242,55243],{"class":462,"line":2683},[460,55244,55245],{"class":942},"                    # 如果参数不存在的化初始化b=0\n",[460,55247,55248,55251,55253],{"class":462,"line":2695},[460,55249,55250],{"class":466},"                    nn.init.constant_(m.bias,",[460,55252,936],{"class":900},[460,55254,3754],{"class":466},[460,55256,55257],{"class":462,"line":2700},[460,55258,55259],{"class":942},"            # 全连接层初始化\n",[460,55261,55262,55265,55267],{"class":462,"line":2709},[460,55263,55264],{"class":887},"            elif",[460,55266,55193],{"class":900},[460,55268,55269],{"class":466},"(m,nn.Linear):\n",[460,55271,55272],{"class":462,"line":2718},[460,55273,55274],{"class":942},"                # 这个初始化方法是利用的是正太分布的方式\n",[460,55276,55277],{"class":462,"line":2723},[460,55278,55279],{"class":942},"                # 均值为0，方差为0.01\n",[460,55281,55282,55285,55287,55289,55292],{"class":462,"line":2732},[460,55283,55284],{"class":466},"                nn.init.normal_(m.weight,",[460,55286,936],{"class":900},[460,55288,3986],{"class":466},[460,55290,55291],{"class":900},"0.01",[460,55293,3754],{"class":466},[460,55295,55296],{"class":462,"line":2750},[460,55297,55298],{"class":942},"                # 初始化b参数\n",[460,55300,55301,55303,55305,55307,55309,55311],{"class":462,"line":2782},[460,55302,55226],{"class":887},[460,55304,55229],{"class":466},[460,55306,55232],{"class":887},[460,55308,55235],{"class":887},[460,55310,55238],{"class":900},[460,55312,20257],{"class":466},[460,55314,55315,55317,55319],{"class":462,"line":2809},[460,55316,55250],{"class":466},[460,55318,936],{"class":900},[460,55320,3754],{"class":466},[460,55322,55323],{"class":462,"line":2836},[460,55324,522],{"emptyLinePlaceholder":521},[460,55326,55327],{"class":462,"line":2856},[460,55328,51470],{"class":942},[460,55330,55331,55333,55335],{"class":462,"line":2865},[460,55332,47209],{"class":887},[460,55334,47500],{"class":929},[460,55336,47503],{"class":466},[460,55338,55339,55341,55343,55345],{"class":462,"line":2881},[460,55340,47508],{"class":466},[460,55342,894],{"class":887},[460,55344,47231],{"class":900},[460,55346,55347],{"class":466},".block1(x)\n",[460,55349,55350,55352,55354,55356],{"class":462,"line":2887},[460,55351,47508],{"class":466},[460,55353,894],{"class":887},[460,55355,47231],{"class":900},[460,55357,55358],{"class":466},".block2(x)\n",[460,55360,55361,55363,55365,55367],{"class":462,"line":2893},[460,55362,47508],{"class":466},[460,55364,894],{"class":887},[460,55366,47231],{"class":900},[460,55368,55369],{"class":466},".block3(x)\n",[460,55371,55372,55374,55376,55378],{"class":462,"line":2899},[460,55373,47508],{"class":466},[460,55375,894],{"class":887},[460,55377,47231],{"class":900},[460,55379,55380],{"class":466},".block4(x)\n",[460,55382,55383,55385,55387,55389],{"class":462,"line":2905},[460,55384,47508],{"class":466},[460,55386,894],{"class":887},[460,55388,47231],{"class":900},[460,55390,55391],{"class":466},".block5(x)\n",[460,55393,55394,55396,55398,55400],{"class":462,"line":2911},[460,55395,47508],{"class":466},[460,55397,894],{"class":887},[460,55399,47231],{"class":900},[460,55401,55402],{"class":466},".block6(x)\n",[460,55404,55405,55407],{"class":462,"line":2920},[460,55406,31206],{"class":887},[460,55408,47616],{"class":466},[460,55410,55411],{"class":462,"line":2929},[460,55412,522],{"emptyLinePlaceholder":521},[460,55414,55415],{"class":462,"line":2935},[460,55416,55417],{"class":942},"# 验证模型\n",[460,55419,55420,55422,55424,55426,55429],{"class":462,"line":2948},[460,55421,18100],{"class":887},[460,55423,47627],{"class":900},[460,55425,19471],{"class":887},[460,55427,55428],{"class":1353},"'__main__'",[460,55430,20257],{"class":466},[460,55432,55433,55435,55437,55439,55441,55443,55445,55447,55449],{"class":462,"line":2954},[460,55434,47644],{"class":466},[460,55436,894],{"class":887},[460,55438,46860],{"class":466},[460,55440,47651],{"class":1353},[460,55442,3766],{"class":887},[460,55444,47656],{"class":466},[460,55446,3763],{"class":887},[460,55448,46885],{"class":1353},[460,55450,3754],{"class":466},[460,55452,55453,55455],{"class":462,"line":2965},[460,55454,47706],{"class":900},[460,55456,46894],{"class":466},[460,55458,55459,55461,55463],{"class":462,"line":2976},[460,55460,47696],{"class":466},[460,55462,894],{"class":887},[460,55464,55465],{"class":466},"VGG16().to(device)\n",[460,55467,55468,55470,55472,55474,55476,55478,55480,55482],{"class":462,"line":2987},[460,55469,47706],{"class":900},[460,55471,47709],{"class":466},[460,55473,901],{"class":900},[460,55475,3986],{"class":466},[460,55477,47907],{"class":900},[460,55479,3986],{"class":466},[460,55481,47907],{"class":900},[460,55483,47722],{"class":466},[103,55485,55486],{"start":476},[43,55487,55488],{},"训练代码",[14,55490,55491],{},"模型不收敛的原因:①批次过低；②w权重的初始值过大或过小",[14,55493,11473],{},[14,55495,55496],{},"①权重初始化",[451,55498,55500],{"className":46787,"code":55499,"language":46789,"meta":32,"style":32},"# 权重初始化,保证w不会过大过小导致在训练的时候不收敛\n# 循环遍历模型\nfor m in self.modules():\n    # print(m)\n    if isinstance(m,nn.Conv2d):\n        # 凯明初始化,初始化w,对应的激活函数是relu\n        nn.init.kaiming_normal_(m.weight,nonlinearity='relu')\n        # 判断b参数是否存在\n        if m.bias is not None:\n            # 如果参数不存在的化初始化b=0\n            nn.init.constant_(m.bias,0)\n    # 全连接层初始化\n    elif isinstance(m,nn.Linear):\n        # 这个初始化方法是利用的是正太分布的方式\n        # 均值为0，方差为0.01\n        nn.init.normal_(m.weight,0,0.01)\n        # 初始化b参数\n        if m.bias is not None:\n            nn.init.constant_(m.bias,0)\n",[457,55501,55502,55507,55512,55524,55529,55537,55542,55555,55560,55574,55579,55588,55593,55602,55607,55612,55625,55630,55644],{"__ignoreMap":32},[460,55503,55504],{"class":462,"line":463},[460,55505,55506],{"class":942},"# 权重初始化,保证w不会过大过小导致在训练的时候不收敛\n",[460,55508,55509],{"class":462,"line":476},[460,55510,55511],{"class":942},"# 循环遍历模型\n",[460,55513,55514,55516,55518,55520,55522],{"class":462,"line":482},[460,55515,19547],{"class":887},[460,55517,55173],{"class":466},[460,55519,11713],{"class":887},[460,55521,55178],{"class":900},[460,55523,55181],{"class":466},[460,55525,55526],{"class":462,"line":488},[460,55527,55528],{"class":942},"    # print(m)\n",[460,55530,55531,55533,55535],{"class":462,"line":494},[460,55532,19622],{"class":887},[460,55534,55193],{"class":900},[460,55536,55196],{"class":466},[460,55538,55539],{"class":462,"line":500},[460,55540,55541],{"class":942},"        # 凯明初始化,初始化w,对应的激活函数是relu\n",[460,55543,55544,55547,55549,55551,55553],{"class":462,"line":506},[460,55545,55546],{"class":466},"        nn.init.kaiming_normal_(m.weight,",[460,55548,55209],{"class":3380},[460,55550,894],{"class":887},[460,55552,55214],{"class":1353},[460,55554,3754],{"class":466},[460,55556,55557],{"class":462,"line":512},[460,55558,55559],{"class":942},"        # 判断b参数是否存在\n",[460,55561,55562,55564,55566,55568,55570,55572],{"class":462,"line":518},[460,55563,3702],{"class":887},[460,55565,55229],{"class":466},[460,55567,55232],{"class":887},[460,55569,55235],{"class":887},[460,55571,55238],{"class":900},[460,55573,20257],{"class":466},[460,55575,55576],{"class":462,"line":525},[460,55577,55578],{"class":942},"            # 如果参数不存在的化初始化b=0\n",[460,55580,55581,55584,55586],{"class":462,"line":531},[460,55582,55583],{"class":466},"            nn.init.constant_(m.bias,",[460,55585,936],{"class":900},[460,55587,3754],{"class":466},[460,55589,55590],{"class":462,"line":537},[460,55591,55592],{"class":942},"    # 全连接层初始化\n",[460,55594,55595,55598,55600],{"class":462,"line":543},[460,55596,55597],{"class":887},"    elif",[460,55599,55193],{"class":900},[460,55601,55269],{"class":466},[460,55603,55604],{"class":462,"line":549},[460,55605,55606],{"class":942},"        # 这个初始化方法是利用的是正太分布的方式\n",[460,55608,55609],{"class":462,"line":555},[460,55610,55611],{"class":942},"        # 均值为0，方差为0.01\n",[460,55613,55614,55617,55619,55621,55623],{"class":462,"line":560},[460,55615,55616],{"class":466},"        nn.init.normal_(m.weight,",[460,55618,936],{"class":900},[460,55620,3986],{"class":466},[460,55622,55291],{"class":900},[460,55624,3754],{"class":466},[460,55626,55627],{"class":462,"line":566},[460,55628,55629],{"class":942},"        # 初始化b参数\n",[460,55631,55632,55634,55636,55638,55640,55642],{"class":462,"line":572},[460,55633,3702],{"class":887},[460,55635,55229],{"class":466},[460,55637,55232],{"class":887},[460,55639,55235],{"class":887},[460,55641,55238],{"class":900},[460,55643,20257],{"class":466},[460,55645,55646,55648,55650],{"class":462,"line":578},[460,55647,55583],{"class":466},[460,55649,936],{"class":900},[460,55651,3754],{"class":466},[14,55653,55654],{},"②尽可能地增加批次",[14,55656,55657],{},"训练完整代码：",[451,55659,55660],{"className":46787,"code":54204,"language":46789,"meta":32,"style":32},[457,55661,55662,55668,55678,55688,55698,55702,55718,55726,55744,55748,55752,55762,55798,55802,55838,55842,55870,55874,55878,55888,55924,55928,55964,55968,55996,56000,56004,56014,56050,56054,56090,56094,56130,56134,56162,56166,56170,56180,56216,56220,56256,56260,56296,56300,56328,56332,56336,56346,56382,56386,56422,56426,56462,56466,56494,56498,56502,56512,56516,56520,56524,56544,56548,56560,56564,56576,56580,56584,56588,56592,56604,56608,56616,56620,56632,56636,56650,56654,56662,56666,56674,56678,56682,56694,56698,56712,56720,56724,56728,56736,56746,56756,56766,56776,56786,56796,56802,56806,56810,56822,56842,56848,56856],{"__ignoreMap":32},[460,55663,55664,55666],{"class":462,"line":463},[460,55665,46801],{"class":887},[460,55667,46804],{"class":466},[460,55669,55670,55672,55674,55676],{"class":462,"line":476},[460,55671,47145],{"class":887},[460,55673,54219],{"class":466},[460,55675,46801],{"class":887},[460,55677,54224],{"class":466},[460,55679,55680,55682,55684,55686],{"class":462,"line":482},[460,55681,47145],{"class":887},[460,55683,47148],{"class":466},[460,55685,46801],{"class":887},[460,55687,47153],{"class":466},[460,55689,55690,55692,55694,55696],{"class":462,"line":488},[460,55691,47145],{"class":887},[460,55693,47165],{"class":466},[460,55695,46801],{"class":887},[460,55697,47170],{"class":466},[460,55699,55700],{"class":462,"line":494},[460,55701,522],{"emptyLinePlaceholder":521},[460,55703,55704,55706,55708,55710,55712,55714,55716],{"class":462,"line":500},[460,55705,31148],{"class":887},[460,55707,54255],{"class":929},[460,55709,2174],{"class":466},[460,55711,47186],{"class":929},[460,55713,6000],{"class":466},[460,55715,47191],{"class":929},[460,55717,47194],{"class":466},[460,55719,55720,55722,55724],{"class":462,"line":506},[460,55721,47209],{"class":887},[460,55723,47212],{"class":900},[460,55725,47215],{"class":466},[460,55727,55728,55730,55732,55734,55736,55738,55740,55742],{"class":462,"line":512},[460,55729,47225],{"class":900},[460,55731,2174],{"class":466},[460,55733,54282],{"class":900},[460,55735,904],{"class":466},[460,55737,47231],{"class":900},[460,55739,3596],{"class":466},[460,55741,47236],{"class":900},[460,55743,10758],{"class":466},[460,55745,55746],{"class":462,"line":518},[460,55747,54297],{"class":942},[460,55749,55750],{"class":462,"line":525},[460,55751,54302],{"class":942},[460,55753,55754,55756,55758,55760],{"class":462,"line":531},[460,55755,47252],{"class":900},[460,55757,54309],{"class":466},[460,55759,894],{"class":887},[460,55761,54314],{"class":466},[460,55763,55764,55766,55768,55770,55772,55774,55776,55778,55780,55782,55784,55786,55788,55790,55792,55794,55796],{"class":462,"line":537},[460,55765,54319],{"class":466},[460,55767,47263],{"class":3380},[460,55769,894],{"class":887},[460,55771,901],{"class":900},[460,55773,3986],{"class":466},[460,55775,47272],{"class":3380},[460,55777,894],{"class":887},[460,55779,16948],{"class":900},[460,55781,3986],{"class":466},[460,55783,47281],{"class":3380},[460,55785,894],{"class":887},[460,55787,913],{"class":900},[460,55789,3986],{"class":466},[460,55791,47290],{"class":3380},[460,55793,894],{"class":887},[460,55795,901],{"class":900},[460,55797,54352],{"class":466},[460,55799,55800],{"class":462,"line":543},[460,55801,54357],{"class":466},[460,55803,55804,55806,55808,55810,55812,55814,55816,55818,55820,55822,55824,55826,55828,55830,55832,55834,55836],{"class":462,"line":549},[460,55805,54319],{"class":466},[460,55807,47263],{"class":3380},[460,55809,894],{"class":887},[460,55811,16948],{"class":900},[460,55813,3986],{"class":466},[460,55815,47272],{"class":3380},[460,55817,894],{"class":887},[460,55819,16948],{"class":900},[460,55821,3986],{"class":466},[460,55823,47281],{"class":3380},[460,55825,894],{"class":887},[460,55827,913],{"class":900},[460,55829,3986],{"class":466},[460,55831,47290],{"class":3380},[460,55833,894],{"class":887},[460,55835,901],{"class":900},[460,55837,54352],{"class":466},[460,55839,55840],{"class":462,"line":555},[460,55841,54357],{"class":466},[460,55843,55844,55846,55848,55850,55852,55854,55856,55858,55860,55862,55864,55866,55868],{"class":462,"line":560},[460,55845,54402],{"class":466},[460,55847,47281],{"class":3380},[460,55849,894],{"class":887},[460,55851,907],{"class":900},[460,55853,3986],{"class":466},[460,55855,47336],{"class":3380},[460,55857,894],{"class":887},[460,55859,907],{"class":900},[460,55861,3986],{"class":466},[460,55863,47290],{"class":3380},[460,55865,894],{"class":887},[460,55867,936],{"class":900},[460,55869,3754],{"class":466},[460,55871,55872],{"class":462,"line":566},[460,55873,54431],{"class":466},[460,55875,55876],{"class":462,"line":572},[460,55877,54436],{"class":942},[460,55879,55880,55882,55884,55886],{"class":462,"line":578},[460,55881,47252],{"class":900},[460,55883,54443],{"class":466},[460,55885,894],{"class":887},[460,55887,54314],{"class":466},[460,55889,55890,55892,55894,55896,55898,55900,55902,55904,55906,55908,55910,55912,55914,55916,55918,55920,55922],{"class":462,"line":812},[460,55891,54319],{"class":466},[460,55893,47263],{"class":3380},[460,55895,894],{"class":887},[460,55897,16948],{"class":900},[460,55899,3986],{"class":466},[460,55901,47272],{"class":3380},[460,55903,894],{"class":887},[460,55905,48475],{"class":900},[460,55907,3986],{"class":466},[460,55909,47281],{"class":3380},[460,55911,894],{"class":887},[460,55913,913],{"class":900},[460,55915,3986],{"class":466},[460,55917,47290],{"class":3380},[460,55919,894],{"class":887},[460,55921,901],{"class":900},[460,55923,54352],{"class":466},[460,55925,55926],{"class":462,"line":818},[460,55927,54357],{"class":466},[460,55929,55930,55932,55934,55936,55938,55940,55942,55944,55946,55948,55950,55952,55954,55956,55958,55960,55962],{"class":462,"line":824},[460,55931,54319],{"class":466},[460,55933,47263],{"class":3380},[460,55935,894],{"class":887},[460,55937,48475],{"class":900},[460,55939,3986],{"class":466},[460,55941,47272],{"class":3380},[460,55943,894],{"class":887},[460,55945,48475],{"class":900},[460,55947,3986],{"class":466},[460,55949,47281],{"class":3380},[460,55951,894],{"class":887},[460,55953,913],{"class":900},[460,55955,3986],{"class":466},[460,55957,47290],{"class":3380},[460,55959,894],{"class":887},[460,55961,901],{"class":900},[460,55963,54352],{"class":466},[460,55965,55966],{"class":462,"line":2074},[460,55967,54357],{"class":466},[460,55969,55970,55972,55974,55976,55978,55980,55982,55984,55986,55988,55990,55992,55994],{"class":462,"line":2088},[460,55971,54402],{"class":466},[460,55973,47281],{"class":3380},[460,55975,894],{"class":887},[460,55977,907],{"class":900},[460,55979,3986],{"class":466},[460,55981,47336],{"class":3380},[460,55983,894],{"class":887},[460,55985,907],{"class":900},[460,55987,3986],{"class":466},[460,55989,47290],{"class":3380},[460,55991,894],{"class":887},[460,55993,936],{"class":900},[460,55995,3754],{"class":466},[460,55997,55998],{"class":462,"line":2103},[460,55999,54431],{"class":466},[460,56001,56002],{"class":462,"line":2122},[460,56003,54564],{"class":942},[460,56005,56006,56008,56010,56012],{"class":462,"line":2144},[460,56007,47252],{"class":900},[460,56009,54571],{"class":466},[460,56011,894],{"class":887},[460,56013,54314],{"class":466},[460,56015,56016,56018,56020,56022,56024,56026,56028,56030,56032,56034,56036,56038,56040,56042,56044,56046,56048],{"class":462,"line":2158},[460,56017,54319],{"class":466},[460,56019,47263],{"class":3380},[460,56021,894],{"class":887},[460,56023,48475],{"class":900},[460,56025,3986],{"class":466},[460,56027,47272],{"class":3380},[460,56029,894],{"class":887},[460,56031,51175],{"class":900},[460,56033,3986],{"class":466},[460,56035,47281],{"class":3380},[460,56037,894],{"class":887},[460,56039,913],{"class":900},[460,56041,3986],{"class":466},[460,56043,47290],{"class":3380},[460,56045,894],{"class":887},[460,56047,901],{"class":900},[460,56049,54352],{"class":466},[460,56051,56052],{"class":462,"line":2163},[460,56053,54357],{"class":466},[460,56055,56056,56058,56060,56062,56064,56066,56068,56070,56072,56074,56076,56078,56080,56082,56084,56086,56088],{"class":462,"line":2168},[460,56057,54319],{"class":466},[460,56059,47263],{"class":3380},[460,56061,894],{"class":887},[460,56063,51175],{"class":900},[460,56065,3986],{"class":466},[460,56067,47272],{"class":3380},[460,56069,894],{"class":887},[460,56071,51175],{"class":900},[460,56073,3986],{"class":466},[460,56075,47281],{"class":3380},[460,56077,894],{"class":887},[460,56079,913],{"class":900},[460,56081,3986],{"class":466},[460,56083,47290],{"class":3380},[460,56085,894],{"class":887},[460,56087,901],{"class":900},[460,56089,54352],{"class":466},[460,56091,56092],{"class":462,"line":2183},[460,56093,54357],{"class":466},[460,56095,56096,56098,56100,56102,56104,56106,56108,56110,56112,56114,56116,56118,56120,56122,56124,56126,56128],{"class":462,"line":2194},[460,56097,54319],{"class":466},[460,56099,47263],{"class":3380},[460,56101,894],{"class":887},[460,56103,51175],{"class":900},[460,56105,3986],{"class":466},[460,56107,47272],{"class":3380},[460,56109,894],{"class":887},[460,56111,51175],{"class":900},[460,56113,3986],{"class":466},[460,56115,47281],{"class":3380},[460,56117,894],{"class":887},[460,56119,913],{"class":900},[460,56121,3986],{"class":466},[460,56123,47290],{"class":3380},[460,56125,894],{"class":887},[460,56127,901],{"class":900},[460,56129,54352],{"class":466},[460,56131,56132],{"class":462,"line":2199},[460,56133,54357],{"class":466},[460,56135,56136,56138,56140,56142,56144,56146,56148,56150,56152,56154,56156,56158,56160],{"class":462,"line":2204},[460,56137,54402],{"class":466},[460,56139,47281],{"class":3380},[460,56141,894],{"class":887},[460,56143,907],{"class":900},[460,56145,3986],{"class":466},[460,56147,47336],{"class":3380},[460,56149,894],{"class":887},[460,56151,907],{"class":900},[460,56153,3986],{"class":466},[460,56155,47290],{"class":3380},[460,56157,894],{"class":887},[460,56159,936],{"class":900},[460,56161,3754],{"class":466},[460,56163,56164],{"class":462,"line":2212},[460,56165,54431],{"class":466},[460,56167,56168],{"class":462,"line":2257},[460,56169,54732],{"class":942},[460,56171,56172,56174,56176,56178],{"class":462,"line":2285},[460,56173,47252],{"class":900},[460,56175,54739],{"class":466},[460,56177,894],{"class":887},[460,56179,54314],{"class":466},[460,56181,56182,56184,56186,56188,56190,56192,56194,56196,56198,56200,56202,56204,56206,56208,56210,56212,56214],{"class":462,"line":2298},[460,56183,54319],{"class":466},[460,56185,47263],{"class":3380},[460,56187,894],{"class":887},[460,56189,51175],{"class":900},[460,56191,3986],{"class":466},[460,56193,47272],{"class":3380},[460,56195,894],{"class":887},[460,56197,54762],{"class":900},[460,56199,3986],{"class":466},[460,56201,47281],{"class":3380},[460,56203,894],{"class":887},[460,56205,913],{"class":900},[460,56207,3986],{"class":466},[460,56209,47290],{"class":3380},[460,56211,894],{"class":887},[460,56213,901],{"class":900},[460,56215,54352],{"class":466},[460,56217,56218],{"class":462,"line":2303},[460,56219,54357],{"class":466},[460,56221,56222,56224,56226,56228,56230,56232,56234,56236,56238,56240,56242,56244,56246,56248,56250,56252,56254],{"class":462,"line":2308},[460,56223,54319],{"class":466},[460,56225,47263],{"class":3380},[460,56227,894],{"class":887},[460,56229,54762],{"class":900},[460,56231,3986],{"class":466},[460,56233,47272],{"class":3380},[460,56235,894],{"class":887},[460,56237,54762],{"class":900},[460,56239,3986],{"class":466},[460,56241,47281],{"class":3380},[460,56243,894],{"class":887},[460,56245,913],{"class":900},[460,56247,3986],{"class":466},[460,56249,47290],{"class":3380},[460,56251,894],{"class":887},[460,56253,901],{"class":900},[460,56255,54352],{"class":466},[460,56257,56258],{"class":462,"line":2318},[460,56259,54357],{"class":466},[460,56261,56262,56264,56266,56268,56270,56272,56274,56276,56278,56280,56282,56284,56286,56288,56290,56292,56294],{"class":462,"line":2333},[460,56263,54319],{"class":466},[460,56265,47263],{"class":3380},[460,56267,894],{"class":887},[460,56269,54762],{"class":900},[460,56271,3986],{"class":466},[460,56273,47272],{"class":3380},[460,56275,894],{"class":887},[460,56277,54762],{"class":900},[460,56279,3986],{"class":466},[460,56281,47281],{"class":3380},[460,56283,894],{"class":887},[460,56285,913],{"class":900},[460,56287,3986],{"class":466},[460,56289,47290],{"class":3380},[460,56291,894],{"class":887},[460,56293,901],{"class":900},[460,56295,54352],{"class":466},[460,56297,56298],{"class":462,"line":2338},[460,56299,54357],{"class":466},[460,56301,56302,56304,56306,56308,56310,56312,56314,56316,56318,56320,56322,56324,56326],{"class":462,"line":2343},[460,56303,54402],{"class":466},[460,56305,47281],{"class":3380},[460,56307,894],{"class":887},[460,56309,907],{"class":900},[460,56311,3986],{"class":466},[460,56313,47336],{"class":3380},[460,56315,894],{"class":887},[460,56317,907],{"class":900},[460,56319,3986],{"class":466},[460,56321,47290],{"class":3380},[460,56323,894],{"class":887},[460,56325,936],{"class":900},[460,56327,3754],{"class":466},[460,56329,56330],{"class":462,"line":2353},[460,56331,54431],{"class":466},[460,56333,56334],{"class":462,"line":2368},[460,56335,54901],{"class":942},[460,56337,56338,56340,56342,56344],{"class":462,"line":2381},[460,56339,47252],{"class":900},[460,56341,54908],{"class":466},[460,56343,894],{"class":887},[460,56345,54314],{"class":466},[460,56347,56348,56350,56352,56354,56356,56358,56360,56362,56364,56366,56368,56370,56372,56374,56376,56378,56380],{"class":462,"line":2394},[460,56349,54319],{"class":466},[460,56351,47263],{"class":3380},[460,56353,894],{"class":887},[460,56355,54762],{"class":900},[460,56357,3986],{"class":466},[460,56359,47272],{"class":3380},[460,56361,894],{"class":887},[460,56363,54762],{"class":900},[460,56365,3986],{"class":466},[460,56367,47281],{"class":3380},[460,56369,894],{"class":887},[460,56371,913],{"class":900},[460,56373,3986],{"class":466},[460,56375,47290],{"class":3380},[460,56377,894],{"class":887},[460,56379,901],{"class":900},[460,56381,54352],{"class":466},[460,56383,56384],{"class":462,"line":2399},[460,56385,54357],{"class":466},[460,56387,56388,56390,56392,56394,56396,56398,56400,56402,56404,56406,56408,56410,56412,56414,56416,56418,56420],{"class":462,"line":2404},[460,56389,54319],{"class":466},[460,56391,47263],{"class":3380},[460,56393,894],{"class":887},[460,56395,54762],{"class":900},[460,56397,3986],{"class":466},[460,56399,47272],{"class":3380},[460,56401,894],{"class":887},[460,56403,54762],{"class":900},[460,56405,3986],{"class":466},[460,56407,47281],{"class":3380},[460,56409,894],{"class":887},[460,56411,913],{"class":900},[460,56413,3986],{"class":466},[460,56415,47290],{"class":3380},[460,56417,894],{"class":887},[460,56419,901],{"class":900},[460,56421,54352],{"class":466},[460,56423,56424],{"class":462,"line":2414},[460,56425,54357],{"class":466},[460,56427,56428,56430,56432,56434,56436,56438,56440,56442,56444,56446,56448,56450,56452,56454,56456,56458,56460],{"class":462,"line":2428},[460,56429,54319],{"class":466},[460,56431,47263],{"class":3380},[460,56433,894],{"class":887},[460,56435,54762],{"class":900},[460,56437,3986],{"class":466},[460,56439,47272],{"class":3380},[460,56441,894],{"class":887},[460,56443,54762],{"class":900},[460,56445,3986],{"class":466},[460,56447,47281],{"class":3380},[460,56449,894],{"class":887},[460,56451,913],{"class":900},[460,56453,3986],{"class":466},[460,56455,47290],{"class":3380},[460,56457,894],{"class":887},[460,56459,901],{"class":900},[460,56461,54352],{"class":466},[460,56463,56464],{"class":462,"line":2440},[460,56465,54357],{"class":466},[460,56467,56468,56470,56472,56474,56476,56478,56480,56482,56484,56486,56488,56490,56492],{"class":462,"line":2445},[460,56469,54402],{"class":466},[460,56471,47281],{"class":3380},[460,56473,894],{"class":887},[460,56475,907],{"class":900},[460,56477,3986],{"class":466},[460,56479,47336],{"class":3380},[460,56481,894],{"class":887},[460,56483,907],{"class":900},[460,56485,3986],{"class":466},[460,56487,47290],{"class":3380},[460,56489,894],{"class":887},[460,56491,936],{"class":900},[460,56493,3754],{"class":466},[460,56495,56496],{"class":462,"line":2450},[460,56497,54431],{"class":466},[460,56499,56500],{"class":462,"line":2460},[460,56501,55069],{"class":942},[460,56503,56504,56506,56508,56510],{"class":462,"line":2473},[460,56505,47252],{"class":900},[460,56507,55076],{"class":466},[460,56509,894],{"class":887},[460,56511,54314],{"class":466},[460,56513,56514],{"class":462,"line":2487},[460,56515,55085],{"class":942},[460,56517,56518],{"class":462,"line":2492},[460,56519,55090],{"class":942},[460,56521,56522],{"class":462,"line":2497},[460,56523,55095],{"class":466},[460,56525,56526,56528,56530,56532,56534,56536,56538,56540,56542],{"class":462,"line":2505},[460,56527,55100],{"class":466},[460,56529,6149],{"class":900},[460,56531,8320],{"class":887},[460,56533,6149],{"class":900},[460,56535,8320],{"class":887},[460,56537,54762],{"class":900},[460,56539,3986],{"class":466},[460,56541,51175],{"class":900},[460,56543,54352],{"class":466},[460,56545,56546],{"class":462,"line":2516},[460,56547,54357],{"class":466},[460,56549,56550,56552,56554,56556,56558],{"class":462,"line":2529},[460,56551,55100],{"class":466},[460,56553,51175],{"class":900},[460,56555,3986],{"class":466},[460,56557,48475],{"class":900},[460,56559,54352],{"class":466},[460,56561,56562],{"class":462,"line":2542},[460,56563,54357],{"class":466},[460,56565,56566,56568,56570,56572,56574],{"class":462,"line":2559},[460,56567,55100],{"class":466},[460,56569,48475],{"class":900},[460,56571,3986],{"class":466},[460,56573,2096],{"class":900},[460,56575,3754],{"class":466},[460,56577,56578],{"class":462,"line":2564},[460,56579,54431],{"class":466},[460,56581,56582],{"class":462,"line":2569},[460,56583,522],{"emptyLinePlaceholder":521},[460,56585,56586],{"class":462,"line":2579},[460,56587,55161],{"class":942},[460,56589,56590],{"class":462,"line":2597},[460,56591,55166],{"class":942},[460,56593,56594,56596,56598,56600,56602],{"class":462,"line":2610},[460,56595,19924],{"class":887},[460,56597,55173],{"class":466},[460,56599,11713],{"class":887},[460,56601,55178],{"class":900},[460,56603,55181],{"class":466},[460,56605,56606],{"class":462,"line":2621},[460,56607,55186],{"class":942},[460,56609,56610,56612,56614],{"class":462,"line":2634},[460,56611,21153],{"class":887},[460,56613,55193],{"class":900},[460,56615,55196],{"class":466},[460,56617,56618],{"class":462,"line":2648},[460,56619,55201],{"class":942},[460,56621,56622,56624,56626,56628,56630],{"class":462,"line":2653},[460,56623,55206],{"class":466},[460,56625,55209],{"class":3380},[460,56627,894],{"class":887},[460,56629,55214],{"class":1353},[460,56631,3754],{"class":466},[460,56633,56634],{"class":462,"line":2658},[460,56635,55221],{"class":942},[460,56637,56638,56640,56642,56644,56646,56648],{"class":462,"line":2670},[460,56639,55226],{"class":887},[460,56641,55229],{"class":466},[460,56643,55232],{"class":887},[460,56645,55235],{"class":887},[460,56647,55238],{"class":900},[460,56649,20257],{"class":466},[460,56651,56652],{"class":462,"line":2683},[460,56653,55245],{"class":942},[460,56655,56656,56658,56660],{"class":462,"line":2695},[460,56657,55250],{"class":466},[460,56659,936],{"class":900},[460,56661,3754],{"class":466},[460,56663,56664],{"class":462,"line":2700},[460,56665,55259],{"class":942},[460,56667,56668,56670,56672],{"class":462,"line":2709},[460,56669,55264],{"class":887},[460,56671,55193],{"class":900},[460,56673,55269],{"class":466},[460,56675,56676],{"class":462,"line":2718},[460,56677,55274],{"class":942},[460,56679,56680],{"class":462,"line":2723},[460,56681,55279],{"class":942},[460,56683,56684,56686,56688,56690,56692],{"class":462,"line":2732},[460,56685,55284],{"class":466},[460,56687,936],{"class":900},[460,56689,3986],{"class":466},[460,56691,55291],{"class":900},[460,56693,3754],{"class":466},[460,56695,56696],{"class":462,"line":2750},[460,56697,55298],{"class":942},[460,56699,56700,56702,56704,56706,56708,56710],{"class":462,"line":2782},[460,56701,55226],{"class":887},[460,56703,55229],{"class":466},[460,56705,55232],{"class":887},[460,56707,55235],{"class":887},[460,56709,55238],{"class":900},[460,56711,20257],{"class":466},[460,56713,56714,56716,56718],{"class":462,"line":2809},[460,56715,55250],{"class":466},[460,56717,936],{"class":900},[460,56719,3754],{"class":466},[460,56721,56722],{"class":462,"line":2836},[460,56723,522],{"emptyLinePlaceholder":521},[460,56725,56726],{"class":462,"line":2856},[460,56727,51470],{"class":942},[460,56729,56730,56732,56734],{"class":462,"line":2865},[460,56731,47209],{"class":887},[460,56733,47500],{"class":929},[460,56735,47503],{"class":466},[460,56737,56738,56740,56742,56744],{"class":462,"line":2881},[460,56739,47508],{"class":466},[460,56741,894],{"class":887},[460,56743,47231],{"class":900},[460,56745,55347],{"class":466},[460,56747,56748,56750,56752,56754],{"class":462,"line":2887},[460,56749,47508],{"class":466},[460,56751,894],{"class":887},[460,56753,47231],{"class":900},[460,56755,55358],{"class":466},[460,56757,56758,56760,56762,56764],{"class":462,"line":2893},[460,56759,47508],{"class":466},[460,56761,894],{"class":887},[460,56763,47231],{"class":900},[460,56765,55369],{"class":466},[460,56767,56768,56770,56772,56774],{"class":462,"line":2899},[460,56769,47508],{"class":466},[460,56771,894],{"class":887},[460,56773,47231],{"class":900},[460,56775,55380],{"class":466},[460,56777,56778,56780,56782,56784],{"class":462,"line":2905},[460,56779,47508],{"class":466},[460,56781,894],{"class":887},[460,56783,47231],{"class":900},[460,56785,55391],{"class":466},[460,56787,56788,56790,56792,56794],{"class":462,"line":2911},[460,56789,47508],{"class":466},[460,56791,894],{"class":887},[460,56793,47231],{"class":900},[460,56795,55402],{"class":466},[460,56797,56798,56800],{"class":462,"line":2920},[460,56799,31206],{"class":887},[460,56801,47616],{"class":466},[460,56803,56804],{"class":462,"line":2929},[460,56805,522],{"emptyLinePlaceholder":521},[460,56807,56808],{"class":462,"line":2935},[460,56809,55417],{"class":942},[460,56811,56812,56814,56816,56818,56820],{"class":462,"line":2948},[460,56813,18100],{"class":887},[460,56815,47627],{"class":900},[460,56817,19471],{"class":887},[460,56819,55428],{"class":1353},[460,56821,20257],{"class":466},[460,56823,56824,56826,56828,56830,56832,56834,56836,56838,56840],{"class":462,"line":2954},[460,56825,47644],{"class":466},[460,56827,894],{"class":887},[460,56829,46860],{"class":466},[460,56831,47651],{"class":1353},[460,56833,3766],{"class":887},[460,56835,47656],{"class":466},[460,56837,3763],{"class":887},[460,56839,46885],{"class":1353},[460,56841,3754],{"class":466},[460,56843,56844,56846],{"class":462,"line":2965},[460,56845,47706],{"class":900},[460,56847,46894],{"class":466},[460,56849,56850,56852,56854],{"class":462,"line":2976},[460,56851,47696],{"class":466},[460,56853,894],{"class":887},[460,56855,55465],{"class":466},[460,56857,56858,56860,56862,56864,56866,56868,56870,56872],{"class":462,"line":2987},[460,56859,47706],{"class":900},[460,56861,47709],{"class":466},[460,56863,901],{"class":900},[460,56865,3986],{"class":466},[460,56867,47907],{"class":900},[460,56869,3986],{"class":466},[460,56871,47907],{"class":900},[460,56873,47722],{"class":466},[103,56875,56876],{"start":482},[43,56877,56878],{},"测试代码",[451,56880,56882],{"className":46787,"code":56881,"language":46789,"meta":32,"style":32},"import torch\nimport torch.utils.data as Data\nfrom torchvision import transforms\n# 导入数据集\nfrom torchvision.datasets import FashionMNIST\nfrom model import VGG16\n\n\n# 测试数据处理\ndef test_data_process():\n    test_data=FashionMNIST(root='.\u002Fdata',\n                           train=False,\n                           transform=transforms.Compose([transforms.Resize(size=224),transforms.ToTensor()]),\n                           download=True)\n    test_dataloader=Data.DataLoader(dataset=test_data,\n                                    # 这里是一张一张进行测试\n                                    batch_size=1,\n                                    shuffle=True,\n                                    num_workers=0)\n    return test_dataloader\n\n# 定义模型测试函数\ndef test_model_process(model,test_dataloader):\n    # 将模型放到设备当中，先进行判断\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n\n    # 设置初始化参数\n    test_corrects=0.0\n    test_num=0\n\n    # 进行模型测试\n    # 模型在推理的时候只进行前向传播，不再进行反向传播更新梯度了\n    # 不进行梯度计算，可以节省内存，加快运行速度\n    with torch.no_grad():\n        # 从数据中进行\n        for test_data_x,test_data_y in test_dataloader:\n            test_data_x=test_data_x.to(device)\n            test_data_y=test_data_y.to(device)\n            # 设置为验证模式\n            model.eval()\n            # 前向传播过程，输入为测试数据集,输出为对每个样本的预测值\n            output=model(test_data_x)\n            # 查找每一行中最大值对应的下标\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算正确率\n            # .data表示是一个不带梯度信息的tensor\n            # 如果预测正确，则准确度test_corrects加1\n            test_corrects+=torch.sum(pre_lab==test_data_y.data)\n            # 将所有的测试样本进行累计\n            test_num+=test_data_x.size(0)\n\n        # 计算准确度\n        test_acc=test_corrects.double().item()\u002Ftest_num\n        # .item()的作用是：把只含1个数字的 Tensor 转成 Python 的数字\n        print(\"测试的准确率：\",test_acc)\n\n# 实现模型的测试功能\nif __name__==\"__main__\":\n    # 加载模型\n    model=VGG16()\n    # 调用训练好的权重，把之前训练好、保存下来的模型参数重新装回模型里\n    # 使用torch中的load函数加载权重，利用model.load_state_dict将参数加回到模型当中\n    model.load_state_dict(torch.load('best_model.pth'))\n    # 数据加载\n    test_dataloader=test_data_process()\n    # 加载模型测试的函数\n    test_model_process(model,test_dataloader)\n\n    # 验证集推理实现：\n    # 加载数据加载的更详细一些\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n    # 设置类别，这样预测值就不展示数字，就直接展示这个种类了\n    # 顺序不可改变\n    classes=['T-shirt\u002Ftop','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']\n    with torch.no_grad():\n        # 将数据和标签都放到设备当中\n        for b_x,b_y in test_dataloader:\n            b_x=b_x.to(device)\n            b_y=b_y.to(device)\n\n            # 设置模型为验证模式\n            model.eval()\n            # 模型推理结果\n            output=model(b_x)\n            # 获取最大下标，最大下标就是类别号\n            pre_lab=torch.argmax(output,dim=1)\n            # 取出张量中的数值\n            result=pre_lab.item()\n            label=b_y.item()\n            print(\"预测值：\",classes[result],\"------\",\"真实值：\",classes[label])\n",[457,56883,56884,56890,56900,56910,56914,56924,56935,56939,56943,56947,56955,56971,56981,56997,57007,57021,57025,57035,57045,57055,57061,57065,57069,57077,57081,57097,57105,57109,57113,57121,57129,57133,57137,57141,57145,57151,57155,57165,57173,57181,57185,57189,57193,57201,57205,57221,57225,57229,57233,57245,57249,57261,57265,57269,57281,57285,57295,57299,57303,57315,57319,57328,57332,57336,57344,57348,57356,57360,57364,57368,57372,57376,57392,57400,57404,57408,57456,57462,57466,57476,57484,57492,57496,57500,57504,57508,57516,57520,57536,57540,57548,57556],{"__ignoreMap":32},[460,56885,56886,56888],{"class":462,"line":463},[460,56887,46801],{"class":887},[460,56889,46804],{"class":466},[460,56891,56892,56894,56896,56898],{"class":462,"line":476},[460,56893,46801],{"class":887},[460,56895,47822],{"class":466},[460,56897,47790],{"class":887},[460,56899,47827],{"class":466},[460,56901,56902,56904,56906,56908],{"class":462,"line":482},[460,56903,47145],{"class":887},[460,56905,47805],{"class":466},[460,56907,46801],{"class":887},[460,56909,47810],{"class":466},[460,56911,56912],{"class":462,"line":488},[460,56913,50227],{"class":942},[460,56915,56916,56918,56920,56922],{"class":462,"line":494},[460,56917,47145],{"class":887},[460,56919,47775],{"class":466},[460,56921,46801],{"class":887},[460,56923,47780],{"class":466},[460,56925,56926,56928,56930,56932],{"class":462,"line":500},[460,56927,47145],{"class":887},[460,56929,48319],{"class":466},[460,56931,46801],{"class":887},[460,56933,56934],{"class":900}," VGG16\n",[460,56936,56937],{"class":462,"line":506},[460,56938,522],{"emptyLinePlaceholder":521},[460,56940,56941],{"class":462,"line":512},[460,56942,522],{"emptyLinePlaceholder":521},[460,56944,56945],{"class":462,"line":518},[460,56946,50256],{"class":942},[460,56948,56949,56951,56953],{"class":462,"line":525},[460,56950,48352],{"class":887},[460,56952,50263],{"class":929},[460,56954,48358],{"class":466},[460,56956,56957,56959,56961,56963,56965,56967,56969],{"class":462,"line":531},[460,56958,50270],{"class":466},[460,56960,894],{"class":887},[460,56962,47862],{"class":466},[460,56964,47865],{"class":3380},[460,56966,894],{"class":887},[460,56968,47870],{"class":1353},[460,56970,1363],{"class":466},[460,56972,56973,56975,56977,56979],{"class":462,"line":537},[460,56974,50287],{"class":3380},[460,56976,894],{"class":887},[460,56978,50292],{"class":900},[460,56980,1363],{"class":466},[460,56982,56983,56985,56987,56989,56991,56993,56995],{"class":462,"line":543},[460,56984,50299],{"class":3380},[460,56986,894],{"class":887},[460,56988,47899],{"class":466},[460,56990,47902],{"class":3380},[460,56992,894],{"class":887},[460,56994,47907],{"class":900},[460,56996,47910],{"class":466},[460,56998,56999,57001,57003,57005],{"class":462,"line":549},[460,57000,50316],{"class":3380},[460,57002,894],{"class":887},[460,57004,47882],{"class":900},[460,57006,3754],{"class":466},[460,57008,57009,57011,57013,57015,57017,57019],{"class":462,"line":555},[460,57010,50327],{"class":466},[460,57012,894],{"class":887},[460,57014,47940],{"class":466},[460,57016,3635],{"class":3380},[460,57018,894],{"class":887},[460,57020,50338],{"class":466},[460,57022,57023],{"class":462,"line":560},[460,57024,50343],{"class":942},[460,57026,57027,57029,57031,57033],{"class":462,"line":566},[460,57028,50348],{"class":3380},[460,57030,894],{"class":887},[460,57032,901],{"class":900},[460,57034,1363],{"class":466},[460,57036,57037,57039,57041,57043],{"class":462,"line":572},[460,57038,50359],{"class":3380},[460,57040,894],{"class":887},[460,57042,47882],{"class":900},[460,57044,1363],{"class":466},[460,57046,57047,57049,57051,57053],{"class":462,"line":578},[460,57048,50370],{"class":3380},[460,57050,894],{"class":887},[460,57052,936],{"class":900},[460,57054,3754],{"class":466},[460,57056,57057,57059],{"class":462,"line":812},[460,57058,20605],{"class":887},[460,57060,50383],{"class":466},[460,57062,57063],{"class":462,"line":818},[460,57064,522],{"emptyLinePlaceholder":521},[460,57066,57067],{"class":462,"line":824},[460,57068,50392],{"class":942},[460,57070,57071,57073,57075],{"class":462,"line":2074},[460,57072,48352],{"class":887},[460,57074,50399],{"class":929},[460,57076,50402],{"class":466},[460,57078,57079],{"class":462,"line":2088},[460,57080,50407],{"class":942},[460,57082,57083,57085,57087,57089,57091,57093,57095],{"class":462,"line":2103},[460,57084,47644],{"class":466},[460,57086,894],{"class":887},[460,57088,47651],{"class":1353},[460,57090,3766],{"class":887},[460,57092,47656],{"class":466},[460,57094,3763],{"class":887},[460,57096,50424],{"class":1353},[460,57098,57099,57101,57103],{"class":462,"line":2122},[460,57100,47696],{"class":466},[460,57102,894],{"class":887},[460,57104,48694],{"class":466},[460,57106,57107],{"class":462,"line":2144},[460,57108,522],{"emptyLinePlaceholder":521},[460,57110,57111],{"class":462,"line":2158},[460,57112,50441],{"class":942},[460,57114,57115,57117,57119],{"class":462,"line":2163},[460,57116,50446],{"class":466},[460,57118,894],{"class":887},[460,57120,48747],{"class":900},[460,57122,57123,57125,57127],{"class":462,"line":2168},[460,57124,50455],{"class":466},[460,57126,894],{"class":887},[460,57128,19606],{"class":900},[460,57130,57131],{"class":462,"line":2183},[460,57132,522],{"emptyLinePlaceholder":521},[460,57134,57135],{"class":462,"line":2194},[460,57136,50468],{"class":942},[460,57138,57139],{"class":462,"line":2199},[460,57140,50473],{"class":942},[460,57142,57143],{"class":462,"line":2204},[460,57144,50478],{"class":942},[460,57146,57147,57149],{"class":462,"line":2212},[460,57148,50483],{"class":887},[460,57150,49259],{"class":466},[460,57152,57153],{"class":462,"line":2257},[460,57154,50490],{"class":942},[460,57156,57157,57159,57161,57163],{"class":462,"line":2285},[460,57158,19924],{"class":887},[460,57160,50497],{"class":466},[460,57162,11713],{"class":887},[460,57164,50502],{"class":466},[460,57166,57167,57169,57171],{"class":462,"line":2298},[460,57168,50507],{"class":466},[460,57170,894],{"class":887},[460,57172,50512],{"class":466},[460,57174,57175,57177,57179],{"class":462,"line":2303},[460,57176,50517],{"class":466},[460,57178,894],{"class":887},[460,57180,50522],{"class":466},[460,57182,57183],{"class":462,"line":2308},[460,57184,50527],{"class":942},[460,57186,57187],{"class":462,"line":2318},[460,57188,49251],{"class":466},[460,57190,57191],{"class":462,"line":2333},[460,57192,50536],{"class":942},[460,57194,57195,57197,57199],{"class":462,"line":2338},[460,57196,49060],{"class":466},[460,57198,894],{"class":887},[460,57200,50545],{"class":466},[460,57202,57203],{"class":462,"line":2343},[460,57204,50550],{"class":942},[460,57206,57207,57209,57211,57213,57215,57217,57219],{"class":462,"line":2353},[460,57208,49075],{"class":466},[460,57210,894],{"class":887},[460,57212,49080],{"class":466},[460,57214,49083],{"class":3380},[460,57216,894],{"class":887},[460,57218,901],{"class":900},[460,57220,3754],{"class":466},[460,57222,57223],{"class":462,"line":2368},[460,57224,50571],{"class":942},[460,57226,57227],{"class":462,"line":2381},[460,57228,50576],{"class":942},[460,57230,57231],{"class":462,"line":2394},[460,57232,50581],{"class":942},[460,57234,57235,57237,57239,57241,57243],{"class":462,"line":2399},[460,57236,50586],{"class":466},[460,57238,3467],{"class":887},[460,57240,49173],{"class":466},[460,57242,19471],{"class":887},[460,57244,50595],{"class":466},[460,57246,57247],{"class":462,"line":2404},[460,57248,50600],{"class":942},[460,57250,57251,57253,57255,57257,57259],{"class":462,"line":2414},[460,57252,50605],{"class":466},[460,57254,3467],{"class":887},[460,57256,50610],{"class":466},[460,57258,936],{"class":900},[460,57260,3754],{"class":466},[460,57262,57263],{"class":462,"line":2428},[460,57264,522],{"emptyLinePlaceholder":521},[460,57266,57267],{"class":462,"line":2440},[460,57268,50623],{"class":942},[460,57270,57271,57273,57275,57277,57279],{"class":462,"line":2445},[460,57272,50628],{"class":466},[460,57274,894],{"class":887},[460,57276,50633],{"class":466},[460,57278,8331],{"class":887},[460,57280,50638],{"class":466},[460,57282,57283],{"class":462,"line":2450},[460,57284,50643],{"class":942},[460,57286,57287,57289,57291,57293],{"class":462,"line":2460},[460,57288,48856],{"class":900},[460,57290,2174],{"class":466},[460,57292,50652],{"class":1353},[460,57294,50655],{"class":466},[460,57296,57297],{"class":462,"line":2473},[460,57298,522],{"emptyLinePlaceholder":521},[460,57300,57301],{"class":462,"line":2487},[460,57302,50664],{"class":942},[460,57304,57305,57307,57309,57311,57313],{"class":462,"line":2492},[460,57306,18100],{"class":887},[460,57308,47627],{"class":900},[460,57310,19471],{"class":887},[460,57312,47632],{"class":1353},[460,57314,20257],{"class":466},[460,57316,57317],{"class":462,"line":2497},[460,57318,50681],{"class":942},[460,57320,57321,57323,57325],{"class":462,"line":2505},[460,57322,47696],{"class":466},[460,57324,894],{"class":887},[460,57326,57327],{"class":466},"VGG16()\n",[460,57329,57330],{"class":462,"line":2516},[460,57331,50694],{"class":942},[460,57333,57334],{"class":462,"line":2529},[460,57335,50699],{"class":942},[460,57337,57338,57340,57342],{"class":462,"line":2542},[460,57339,50704],{"class":466},[460,57341,50707],{"class":1353},[460,57343,6311],{"class":466},[460,57345,57346],{"class":462,"line":2559},[460,57347,50714],{"class":942},[460,57349,57350,57352,57354],{"class":462,"line":2564},[460,57351,50327],{"class":466},[460,57353,894],{"class":887},[460,57355,50723],{"class":466},[460,57357,57358],{"class":462,"line":2569},[460,57359,50728],{"class":942},[460,57361,57362],{"class":462,"line":2579},[460,57363,50733],{"class":466},[460,57365,57366],{"class":462,"line":2597},[460,57367,522],{"emptyLinePlaceholder":521},[460,57369,57370],{"class":462,"line":2610},[460,57371,50742],{"class":942},[460,57373,57374],{"class":462,"line":2621},[460,57375,50747],{"class":942},[460,57377,57378,57380,57382,57384,57386,57388,57390],{"class":462,"line":2634},[460,57379,47644],{"class":466},[460,57381,894],{"class":887},[460,57383,47651],{"class":1353},[460,57385,3766],{"class":887},[460,57387,47656],{"class":466},[460,57389,3763],{"class":887},[460,57391,50424],{"class":1353},[460,57393,57394,57396,57398],{"class":462,"line":2648},[460,57395,47696],{"class":466},[460,57397,894],{"class":887},[460,57399,48694],{"class":466},[460,57401,57402],{"class":462,"line":2653},[460,57403,50776],{"class":942},[460,57405,57406],{"class":462,"line":2658},[460,57407,50781],{"class":942},[460,57409,57410,57412,57414,57416,57418,57420,57422,57424,57426,57428,57430,57432,57434,57436,57438,57440,57442,57444,57446,57448,57450,57452,57454],{"class":462,"line":2670},[460,57411,50786],{"class":466},[460,57413,894],{"class":887},[460,57415,17601],{"class":466},[460,57417,50793],{"class":1353},[460,57419,3986],{"class":466},[460,57421,50798],{"class":1353},[460,57423,3986],{"class":466},[460,57425,50803],{"class":1353},[460,57427,3986],{"class":466},[460,57429,50808],{"class":1353},[460,57431,3986],{"class":466},[460,57433,50813],{"class":1353},[460,57435,3986],{"class":466},[460,57437,50818],{"class":1353},[460,57439,3986],{"class":466},[460,57441,50823],{"class":1353},[460,57443,3986],{"class":466},[460,57445,50828],{"class":1353},[460,57447,3986],{"class":466},[460,57449,50833],{"class":1353},[460,57451,3986],{"class":466},[460,57453,50838],{"class":1353},[460,57455,13307],{"class":466},[460,57457,57458,57460],{"class":462,"line":2683},[460,57459,50483],{"class":887},[460,57461,49259],{"class":466},[460,57463,57464],{"class":462,"line":2695},[460,57465,50851],{"class":942},[460,57467,57468,57470,57472,57474],{"class":462,"line":2700},[460,57469,19924],{"class":887},[460,57471,50858],{"class":466},[460,57473,11713],{"class":887},[460,57475,50502],{"class":466},[460,57477,57478,57480,57482],{"class":462,"line":2709},[460,57479,49015],{"class":466},[460,57481,894],{"class":887},[460,57483,49020],{"class":466},[460,57485,57486,57488,57490],{"class":462,"line":2718},[460,57487,49030],{"class":466},[460,57489,894],{"class":887},[460,57491,49035],{"class":466},[460,57493,57494],{"class":462,"line":2723},[460,57495,522],{"emptyLinePlaceholder":521},[460,57497,57498],{"class":462,"line":2732},[460,57499,50887],{"class":942},[460,57501,57502],{"class":462,"line":2750},[460,57503,49251],{"class":466},[460,57505,57506],{"class":462,"line":2782},[460,57507,50896],{"class":942},[460,57509,57510,57512,57514],{"class":462,"line":2809},[460,57511,49060],{"class":466},[460,57513,894],{"class":887},[460,57515,49065],{"class":466},[460,57517,57518],{"class":462,"line":2836},[460,57519,50909],{"class":942},[460,57521,57522,57524,57526,57528,57530,57532,57534],{"class":462,"line":2856},[460,57523,49075],{"class":466},[460,57525,894],{"class":887},[460,57527,49080],{"class":466},[460,57529,49083],{"class":3380},[460,57531,894],{"class":887},[460,57533,901],{"class":900},[460,57535,3754],{"class":466},[460,57537,57538],{"class":462,"line":2865},[460,57539,50930],{"class":942},[460,57541,57542,57544,57546],{"class":462,"line":2881},[460,57543,50935],{"class":466},[460,57545,894],{"class":887},[460,57547,50940],{"class":466},[460,57549,57550,57552,57554],{"class":462,"line":2887},[460,57551,50945],{"class":466},[460,57553,894],{"class":887},[460,57555,50950],{"class":466},[460,57557,57558,57560,57562,57564,57566,57568,57570,57572],{"class":462,"line":2893},[460,57559,50955],{"class":900},[460,57561,2174],{"class":466},[460,57563,50960],{"class":1353},[460,57565,50963],{"class":466},[460,57567,50966],{"class":1353},[460,57569,3986],{"class":466},[460,57571,50971],{"class":1353},[460,57573,50974],{"class":466},[23,57575,57577],{"id":57576},"_23googlenet","2.3.GoogLeNet",[115,57579,57581],{"id":57580},"_231原理","2.3.1.原理",[103,57583,57584],{},[43,57585,57586],{},"网络结构",[14,57588,57589],{},[30,57590],{"alt":32,"src":57591},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-023.png",[14,57593,57594],{},"1x1卷积是为了减少通道数（通过填充和步幅来实现的）",[14,57596,57597],{},[30,57598],{"alt":32,"src":57599},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-024.png",[14,57601,57602],{},[30,57603],{"alt":32,"src":57604},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-025.png",[14,57606,57607],{},[30,57608],{"alt":32,"src":57609},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-026.png",[103,57611,57612],{"start":476},[43,57613,57614],{},"1x1卷积的优点",[14,57616,57617],{},[30,57618],{"alt":32,"src":57619},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-027.png",[103,57621,57622],{"start":482},[43,57623,57624],{},"全局平均池化层优点",[14,57626,57627],{},[30,57628],{"alt":32,"src":57629},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-028.png",[14,57631,57632],{},[30,57633],{"alt":32,"src":57634},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-029.png",[103,57636,57637],{"start":488},[43,57638,57639],{},"参数详细描述",[14,57641,57642],{},[30,57643],{"alt":32,"src":57644},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-030.png",[14,57646,57647],{},[30,57648],{"alt":32,"src":57649},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-031.png",[14,57651,57652],{},[30,57653],{"alt":32,"src":57654},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-032.png",[14,57656,57657],{},[30,57658],{"alt":32,"src":57659},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-033.png",[14,57661,57662],{},[30,57663],{"alt":32,"src":57664},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-034.png",[14,57666,57667],{},[30,57668],{"alt":32,"src":57669},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-035.png",[14,57671,57672],{},[30,57673],{"alt":32,"src":57674},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-036.png",[14,57676,57677],{},[30,57678],{"alt":32,"src":57679},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-037.png",[14,57681,57682],{},[30,57683],{"alt":32,"src":57684},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-038.png",[14,57686,57687],{},[30,57688],{"alt":32,"src":57689},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-039.png",[14,57691,57692],{},[30,57693],{"alt":32,"src":57694},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-040.png",[14,57696,57697],{},[30,57698],{"alt":32,"src":57699},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-041.png",[14,57701,57702],{},[30,57703],{"alt":32,"src":57704},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-042.png",[14,57706,57707],{},[30,57708],{"alt":32,"src":57709},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-043.png",[14,57711,57712],{},[30,57713],{"alt":32,"src":57714},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-044.png",[14,57716,57717],{},[30,57718],{"alt":32,"src":57719},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-045.png",[14,57721,57722],{},[30,57723],{"alt":32,"src":57724},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-046.png",[14,57726,57727],{},[30,57728],{"alt":32,"src":57729},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-047.png",[14,57731,57732],{},[30,57733],{"alt":32,"src":57734},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-048.png",[14,57736,57737],{},[30,57738],{"alt":32,"src":57739},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-049.png",[14,57741,57742],{},[30,57743],{"alt":32,"src":57744},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-11-03-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80-050.png",[115,57746,57748],{"id":57747},"_232代码实现","2.3.2.代码实现",[103,57750,57751],{},[43,57752,47119],{},[14,57754,57755],{},"根据原理一步一步搭建即可",[451,57757,57759],{"className":46787,"code":57758,"language":46789,"meta":32,"style":32},"import torch\nfrom torch import nn\nfrom torchsummary import summary\n\nclass Inception(nn.Module):\n    def __init__(self,in_channels,c1,c2,c3,c4):\n        super(Inception,self).__init__()\n        self.ReLu=nn.ReLU()\n        # 路线1：定义1*1卷积\n        self.p1_1=nn.Conv2d(in_channels=in_channels,out_channels=c1,kernel_size=1)\n        # 路线2：定义1*1卷积和3*3\n        self.p2_1=nn.Conv2d(in_channels=in_channels,out_channels=c2[0],kernel_size=1)\n        self.p2_2=nn.Conv2d(in_channels=c2[0],out_channels=c2[1],kernel_size=3,padding=1)\n        # 路线3：定义1*1卷积和5*5\n        self.p3_1=nn.Conv2d(in_channels=in_channels,out_channels=c3[0],kernel_size=1)\n        self.p3_2=nn.Conv2d(in_channels=c3[0],out_channels=c3[1],kernel_size=5,padding=2)\n        # 路线4：定义3*3最大池化和1*1卷积\n        # 最大池化如果不写步幅的话，默认步幅等于卷积核大小\n        self.p4_1=nn.MaxPool2d(kernel_size=3,stride=1,padding=1)\n        self.p4_2=nn.Conv2d(in_channels=in_channels,out_channels=c4,kernel_size=1)\n\n    def forward(self,x):\n        p1=self.ReLu(self.p1_1(x))\n        p2=self.ReLu(self.p2_2(self.ReLu(self.p2_1(x))))\n        p3=self.ReLu(self.p3_2(self.ReLu(self.p3_1(x))))\n        p4=self.ReLu(self.p4_2(self.p4_1(x)))\n        # 在通道维度上连结输出    .cat()函数用于将多个张量在指定维度上进行连接\n        return torch.cat((p1,p2,p3,p4),dim=1)\n\n\n# 搭建GoogLeNet网络\nclass GoogLeNet(nn.Module):\n    # 必须把Inception导入到里边\n    def __init__(self,Inception):\n        super(GoogLeNet,self).__init__()\n        self.b1=nn.Sequential(\n            nn.Conv2d(in_channels=1,out_channels=64,kernel_size=7,stride=2,padding=3),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=3,stride=2,padding=1)\n        )\n        self.b2=nn.Sequential(\n            nn.Conv2d(in_channels=64,out_channels=64,kernel_size=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=64,out_channels=192,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=3,stride=2,padding=1)\n        )\n        self.b3=nn.Sequential(\n            Inception(192,64,(96,128),(16,32),32),\n            Inception(256,128,(128,192),(32,96),64),\n            nn.MaxPool2d(kernel_size=3,stride=2,padding=1)\n        )\n        self.b4=nn.Sequential(\n            Inception(480,192,(96,208),(16,48),64),\n            Inception(512,160,(112,224),(24,64),64),\n            Inception(512,128,(128,256),(24,64),64),\n            Inception(512,112,(128,288),(32,64),64),\n            Inception(528,256,(160,320),(32,128),128),\n            nn.MaxPool2d(kernel_size=3,stride=2,padding=1)\n        )\n        self.b5=nn.Sequential(\n            Inception(832,256,(160,320),(32,128),128),\n            Inception(832,384,(192,384),(48,128),128),\n            nn.AdaptiveAvgPool2d((1,1)),\n            nn.Flatten(),\n            nn.Linear(1024,10)\n        )\n        # 对模型参数初始化\n        for m in self.modules():\n            if isinstance(m,nn.Conv2d):\n                nn.init.kaiming_normal_(m.weight,mode='fan_out',nonlinearity='relu')\n                # ① m.weight要初始化的权重（比如Conv2d或Linear的权重矩阵）。\n                # ② mode = 'fan_out'决定使用的fan值：\n                # fan_in：输入通道数 × kernel大小（用于保持前向传播稳定）\n                # fan_out：输出通道数 × kernel大小（用于保持反向传播稳定）\n                # fan_out常用于残差网络ResNet，因为让反向传播更平稳。\n                # ③ nonlinearity = 'relu'告诉PyTorch你后面用的是ReLU，它会自动使用ReLU对应的gain系数\n                if m.bias is not None:\n                    nn.init.constant_(m.bias,0)\n                elif isinstance(m,nn.Linear):\n                    nn.init.normal_(m.weight,0,0.01)\n                    if m.bias is not None:\n                        nn.init.constant_(m.bias,0)\n    # 定义前向传播\n    def forward(self,x):\n        x=self.b1(x)\n        x=self.b2(x)\n        x=self.b3(x)\n        x=self.b4(x)\n        x=self.b5(x)\n        return x\n\n# 模型展示\nif __name__==\"__main__\":\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n    model=GoogLeNet(Inception).to(device)\n    print(summary(model,(1,224,224)))\n",[457,57760,57761,57767,57777,57787,57791,57808,57817,57832,57842,57847,57880,57885,57922,57969,57974,58010,58057,58062,58067,58102,58134,58138,58146,58162,58186,58211,58232,58237,58252,58256,58260,58265,58282,58287,58296,58311,58322,58366,58370,58398,58402,58413,58441,58445,58482,58486,58514,58518,58529,58565,58597,58625,58629,58640,58674,58706,58738,58771,58805,58833,58837,58848,58881,58913,58927,58931,58944,58948,58953,58965,58973,58995,59000,59005,59010,59015,59020,59025,59039,59047,59056,59069,59084,59093,59097,59105,59116,59127,59138,59149,59160,59166,59170,59175,59187,59207,59216],{"__ignoreMap":32},[460,57762,57763,57765],{"class":462,"line":463},[460,57764,46801],{"class":887},[460,57766,46804],{"class":466},[460,57768,57769,57771,57773,57775],{"class":462,"line":476},[460,57770,47145],{"class":887},[460,57772,47148],{"class":466},[460,57774,46801],{"class":887},[460,57776,47153],{"class":466},[460,57778,57779,57781,57783,57785],{"class":462,"line":482},[460,57780,47145],{"class":887},[460,57782,47165],{"class":466},[460,57784,46801],{"class":887},[460,57786,47170],{"class":466},[460,57788,57789],{"class":462,"line":488},[460,57790,522],{"emptyLinePlaceholder":521},[460,57792,57793,57795,57798,57800,57802,57804,57806],{"class":462,"line":494},[460,57794,31148],{"class":887},[460,57796,57797],{"class":929}," Inception",[460,57799,2174],{"class":466},[460,57801,47186],{"class":929},[460,57803,6000],{"class":466},[460,57805,47191],{"class":929},[460,57807,47194],{"class":466},[460,57809,57810,57812,57814],{"class":462,"line":500},[460,57811,47209],{"class":887},[460,57813,47212],{"class":900},[460,57815,57816],{"class":466},"(self,in_channels,c1,c2,c3,c4):\n",[460,57818,57819,57821,57824,57826,57828,57830],{"class":462,"line":506},[460,57820,47225],{"class":900},[460,57822,57823],{"class":466},"(Inception,",[460,57825,47231],{"class":900},[460,57827,3596],{"class":466},[460,57829,47236],{"class":900},[460,57831,10758],{"class":466},[460,57833,57834,57836,57838,57840],{"class":462,"line":512},[460,57835,47252],{"class":900},[460,57837,51076],{"class":466},[460,57839,894],{"class":887},[460,57841,51081],{"class":466},[460,57843,57844],{"class":462,"line":518},[460,57845,57846],{"class":942},"        # 路线1：定义1*1卷积\n",[460,57848,57849,57851,57854,57856,57858,57860,57862,57865,57867,57869,57872,57874,57876,57878],{"class":462,"line":525},[460,57850,47252],{"class":900},[460,57852,57853],{"class":466},".p1_1",[460,57855,894],{"class":887},[460,57857,47260],{"class":466},[460,57859,47263],{"class":3380},[460,57861,894],{"class":887},[460,57863,57864],{"class":466},"in_channels,",[460,57866,47272],{"class":3380},[460,57868,894],{"class":887},[460,57870,57871],{"class":466},"c1,",[460,57873,47281],{"class":3380},[460,57875,894],{"class":887},[460,57877,901],{"class":900},[460,57879,3754],{"class":466},[460,57881,57882],{"class":462,"line":531},[460,57883,57884],{"class":942},"        # 路线2：定义1*1卷积和3*3\n",[460,57886,57887,57889,57892,57894,57896,57898,57900,57902,57904,57906,57909,57911,57914,57916,57918,57920],{"class":462,"line":537},[460,57888,47252],{"class":900},[460,57890,57891],{"class":466},".p2_1",[460,57893,894],{"class":887},[460,57895,47260],{"class":466},[460,57897,47263],{"class":3380},[460,57899,894],{"class":887},[460,57901,57864],{"class":466},[460,57903,47272],{"class":3380},[460,57905,894],{"class":887},[460,57907,57908],{"class":466},"c2[",[460,57910,936],{"class":900},[460,57912,57913],{"class":466},"],",[460,57915,47281],{"class":3380},[460,57917,894],{"class":887},[460,57919,901],{"class":900},[460,57921,3754],{"class":466},[460,57923,57924,57926,57929,57931,57933,57935,57937,57939,57941,57943,57945,57947,57949,57951,57953,57955,57957,57959,57961,57963,57965,57967],{"class":462,"line":543},[460,57925,47252],{"class":900},[460,57927,57928],{"class":466},".p2_2",[460,57930,894],{"class":887},[460,57932,47260],{"class":466},[460,57934,47263],{"class":3380},[460,57936,894],{"class":887},[460,57938,57908],{"class":466},[460,57940,936],{"class":900},[460,57942,57913],{"class":466},[460,57944,47272],{"class":3380},[460,57946,894],{"class":887},[460,57948,57908],{"class":466},[460,57950,901],{"class":900},[460,57952,57913],{"class":466},[460,57954,47281],{"class":3380},[460,57956,894],{"class":887},[460,57958,913],{"class":900},[460,57960,3986],{"class":466},[460,57962,47290],{"class":3380},[460,57964,894],{"class":887},[460,57966,901],{"class":900},[460,57968,3754],{"class":466},[460,57970,57971],{"class":462,"line":549},[460,57972,57973],{"class":942},"        # 路线3：定义1*1卷积和5*5\n",[460,57975,57976,57978,57981,57983,57985,57987,57989,57991,57993,57995,57998,58000,58002,58004,58006,58008],{"class":462,"line":555},[460,57977,47252],{"class":900},[460,57979,57980],{"class":466},".p3_1",[460,57982,894],{"class":887},[460,57984,47260],{"class":466},[460,57986,47263],{"class":3380},[460,57988,894],{"class":887},[460,57990,57864],{"class":466},[460,57992,47272],{"class":3380},[460,57994,894],{"class":887},[460,57996,57997],{"class":466},"c3[",[460,57999,936],{"class":900},[460,58001,57913],{"class":466},[460,58003,47281],{"class":3380},[460,58005,894],{"class":887},[460,58007,901],{"class":900},[460,58009,3754],{"class":466},[460,58011,58012,58014,58017,58019,58021,58023,58025,58027,58029,58031,58033,58035,58037,58039,58041,58043,58045,58047,58049,58051,58053,58055],{"class":462,"line":560},[460,58013,47252],{"class":900},[460,58015,58016],{"class":466},".p3_2",[460,58018,894],{"class":887},[460,58020,47260],{"class":466},[460,58022,47263],{"class":3380},[460,58024,894],{"class":887},[460,58026,57997],{"class":466},[460,58028,936],{"class":900},[460,58030,57913],{"class":466},[460,58032,47272],{"class":3380},[460,58034,894],{"class":887},[460,58036,57997],{"class":466},[460,58038,901],{"class":900},[460,58040,57913],{"class":466},[460,58042,47281],{"class":3380},[460,58044,894],{"class":887},[460,58046,7290],{"class":900},[460,58048,3986],{"class":466},[460,58050,47290],{"class":3380},[460,58052,894],{"class":887},[460,58054,907],{"class":900},[460,58056,3754],{"class":466},[460,58058,58059],{"class":462,"line":566},[460,58060,58061],{"class":942},"        # 路线4：定义3*3最大池化和1*1卷积\n",[460,58063,58064],{"class":462,"line":572},[460,58065,58066],{"class":942},"        # 最大池化如果不写步幅的话，默认步幅等于卷积核大小\n",[460,58068,58069,58071,58074,58076,58078,58080,58082,58084,58086,58088,58090,58092,58094,58096,58098,58100],{"class":462,"line":578},[460,58070,47252],{"class":900},[460,58072,58073],{"class":466},".p4_1",[460,58075,894],{"class":887},[460,58077,51134],{"class":466},[460,58079,47281],{"class":3380},[460,58081,894],{"class":887},[460,58083,913],{"class":900},[460,58085,3986],{"class":466},[460,58087,47336],{"class":3380},[460,58089,894],{"class":887},[460,58091,901],{"class":900},[460,58093,3986],{"class":466},[460,58095,47290],{"class":3380},[460,58097,894],{"class":887},[460,58099,901],{"class":900},[460,58101,3754],{"class":466},[460,58103,58104,58106,58109,58111,58113,58115,58117,58119,58121,58123,58126,58128,58130,58132],{"class":462,"line":812},[460,58105,47252],{"class":900},[460,58107,58108],{"class":466},".p4_2",[460,58110,894],{"class":887},[460,58112,47260],{"class":466},[460,58114,47263],{"class":3380},[460,58116,894],{"class":887},[460,58118,57864],{"class":466},[460,58120,47272],{"class":3380},[460,58122,894],{"class":887},[460,58124,58125],{"class":466},"c4,",[460,58127,47281],{"class":3380},[460,58129,894],{"class":887},[460,58131,901],{"class":900},[460,58133,3754],{"class":466},[460,58135,58136],{"class":462,"line":818},[460,58137,522],{"emptyLinePlaceholder":521},[460,58139,58140,58142,58144],{"class":462,"line":824},[460,58141,47209],{"class":887},[460,58143,47500],{"class":929},[460,58145,47503],{"class":466},[460,58147,58148,58151,58153,58155,58157,58159],{"class":462,"line":2074},[460,58149,58150],{"class":466},"        p1",[460,58152,894],{"class":887},[460,58154,47231],{"class":900},[460,58156,51489],{"class":466},[460,58158,47231],{"class":900},[460,58160,58161],{"class":466},".p1_1(x))\n",[460,58163,58164,58166,58168,58170,58172,58174,58177,58179,58181,58183],{"class":462,"line":2088},[460,58165,23583],{"class":466},[460,58167,894],{"class":887},[460,58169,47231],{"class":900},[460,58171,51489],{"class":466},[460,58173,47231],{"class":900},[460,58175,58176],{"class":466},".p2_2(",[460,58178,47231],{"class":900},[460,58180,51489],{"class":466},[460,58182,47231],{"class":900},[460,58184,58185],{"class":466},".p2_1(x))))\n",[460,58187,58188,58191,58193,58195,58197,58199,58202,58204,58206,58208],{"class":462,"line":2103},[460,58189,58190],{"class":466},"        p3",[460,58192,894],{"class":887},[460,58194,47231],{"class":900},[460,58196,51489],{"class":466},[460,58198,47231],{"class":900},[460,58200,58201],{"class":466},".p3_2(",[460,58203,47231],{"class":900},[460,58205,51489],{"class":466},[460,58207,47231],{"class":900},[460,58209,58210],{"class":466},".p3_1(x))))\n",[460,58212,58213,58216,58218,58220,58222,58224,58227,58229],{"class":462,"line":2122},[460,58214,58215],{"class":466},"        p4",[460,58217,894],{"class":887},[460,58219,47231],{"class":900},[460,58221,51489],{"class":466},[460,58223,47231],{"class":900},[460,58225,58226],{"class":466},".p4_2(",[460,58228,47231],{"class":900},[460,58230,58231],{"class":466},".p4_1(x)))\n",[460,58233,58234],{"class":462,"line":2144},[460,58235,58236],{"class":942},"        # 在通道维度上连结输出    .cat()函数用于将多个张量在指定维度上进行连接\n",[460,58238,58239,58241,58244,58246,58248,58250],{"class":462,"line":2158},[460,58240,31206],{"class":887},[460,58242,58243],{"class":466}," torch.cat((p1,p2,p3,p4),",[460,58245,49083],{"class":3380},[460,58247,894],{"class":887},[460,58249,901],{"class":900},[460,58251,3754],{"class":466},[460,58253,58254],{"class":462,"line":2163},[460,58255,522],{"emptyLinePlaceholder":521},[460,58257,58258],{"class":462,"line":2168},[460,58259,522],{"emptyLinePlaceholder":521},[460,58261,58262],{"class":462,"line":2183},[460,58263,58264],{"class":942},"# 搭建GoogLeNet网络\n",[460,58266,58267,58269,58272,58274,58276,58278,58280],{"class":462,"line":2194},[460,58268,31148],{"class":887},[460,58270,58271],{"class":929}," GoogLeNet",[460,58273,2174],{"class":466},[460,58275,47186],{"class":929},[460,58277,6000],{"class":466},[460,58279,47191],{"class":929},[460,58281,47194],{"class":466},[460,58283,58284],{"class":462,"line":2199},[460,58285,58286],{"class":942},"    # 必须把Inception导入到里边\n",[460,58288,58289,58291,58293],{"class":462,"line":2204},[460,58290,47209],{"class":887},[460,58292,47212],{"class":900},[460,58294,58295],{"class":466},"(self,Inception):\n",[460,58297,58298,58300,58303,58305,58307,58309],{"class":462,"line":2212},[460,58299,47225],{"class":900},[460,58301,58302],{"class":466},"(GoogLeNet,",[460,58304,47231],{"class":900},[460,58306,3596],{"class":466},[460,58308,47236],{"class":900},[460,58310,10758],{"class":466},[460,58312,58313,58315,58318,58320],{"class":462,"line":2257},[460,58314,47252],{"class":900},[460,58316,58317],{"class":466},".b1",[460,58319,894],{"class":887},[460,58321,54314],{"class":466},[460,58323,58324,58326,58328,58330,58332,58334,58336,58338,58340,58342,58344,58346,58348,58350,58352,58354,58356,58358,58360,58362,58364],{"class":462,"line":2285},[460,58325,54319],{"class":466},[460,58327,47263],{"class":3380},[460,58329,894],{"class":887},[460,58331,901],{"class":900},[460,58333,3986],{"class":466},[460,58335,47272],{"class":3380},[460,58337,894],{"class":887},[460,58339,16948],{"class":900},[460,58341,3986],{"class":466},[460,58343,47281],{"class":3380},[460,58345,894],{"class":887},[460,58347,6149],{"class":900},[460,58349,3986],{"class":466},[460,58351,47336],{"class":3380},[460,58353,894],{"class":887},[460,58355,907],{"class":900},[460,58357,3986],{"class":466},[460,58359,47290],{"class":3380},[460,58361,894],{"class":887},[460,58363,913],{"class":900},[460,58365,54352],{"class":466},[460,58367,58368],{"class":462,"line":2298},[460,58369,54357],{"class":466},[460,58371,58372,58374,58376,58378,58380,58382,58384,58386,58388,58390,58392,58394,58396],{"class":462,"line":2303},[460,58373,54402],{"class":466},[460,58375,47281],{"class":3380},[460,58377,894],{"class":887},[460,58379,913],{"class":900},[460,58381,3986],{"class":466},[460,58383,47336],{"class":3380},[460,58385,894],{"class":887},[460,58387,907],{"class":900},[460,58389,3986],{"class":466},[460,58391,47290],{"class":3380},[460,58393,894],{"class":887},[460,58395,901],{"class":900},[460,58397,3754],{"class":466},[460,58399,58400],{"class":462,"line":2308},[460,58401,54431],{"class":466},[460,58403,58404,58406,58409,58411],{"class":462,"line":2318},[460,58405,47252],{"class":900},[460,58407,58408],{"class":466},".b2",[460,58410,894],{"class":887},[460,58412,54314],{"class":466},[460,58414,58415,58417,58419,58421,58423,58425,58427,58429,58431,58433,58435,58437,58439],{"class":462,"line":2333},[460,58416,54319],{"class":466},[460,58418,47263],{"class":3380},[460,58420,894],{"class":887},[460,58422,16948],{"class":900},[460,58424,3986],{"class":466},[460,58426,47272],{"class":3380},[460,58428,894],{"class":887},[460,58430,16948],{"class":900},[460,58432,3986],{"class":466},[460,58434,47281],{"class":3380},[460,58436,894],{"class":887},[460,58438,901],{"class":900},[460,58440,54352],{"class":466},[460,58442,58443],{"class":462,"line":2338},[460,58444,54357],{"class":466},[460,58446,58447,58449,58451,58453,58455,58457,58459,58461,58464,58466,58468,58470,58472,58474,58476,58478,58480],{"class":462,"line":2343},[460,58448,54319],{"class":466},[460,58450,47263],{"class":3380},[460,58452,894],{"class":887},[460,58454,16948],{"class":900},[460,58456,3986],{"class":466},[460,58458,47272],{"class":3380},[460,58460,894],{"class":887},[460,58462,58463],{"class":900},"192",[460,58465,3986],{"class":466},[460,58467,47281],{"class":3380},[460,58469,894],{"class":887},[460,58471,913],{"class":900},[460,58473,3986],{"class":466},[460,58475,47290],{"class":3380},[460,58477,894],{"class":887},[460,58479,901],{"class":900},[460,58481,54352],{"class":466},[460,58483,58484],{"class":462,"line":2353},[460,58485,54357],{"class":466},[460,58487,58488,58490,58492,58494,58496,58498,58500,58502,58504,58506,58508,58510,58512],{"class":462,"line":2368},[460,58489,54402],{"class":466},[460,58491,47281],{"class":3380},[460,58493,894],{"class":887},[460,58495,913],{"class":900},[460,58497,3986],{"class":466},[460,58499,47336],{"class":3380},[460,58501,894],{"class":887},[460,58503,907],{"class":900},[460,58505,3986],{"class":466},[460,58507,47290],{"class":3380},[460,58509,894],{"class":887},[460,58511,901],{"class":900},[460,58513,3754],{"class":466},[460,58515,58516],{"class":462,"line":2381},[460,58517,54431],{"class":466},[460,58519,58520,58522,58525,58527],{"class":462,"line":2394},[460,58521,47252],{"class":900},[460,58523,58524],{"class":466},".b3",[460,58526,894],{"class":887},[460,58528,54314],{"class":466},[460,58530,58531,58534,58536,58538,58540,58543,58545,58547,58549,58552,58554,58556,58558,58561,58563],{"class":462,"line":2399},[460,58532,58533],{"class":466},"            Inception(",[460,58535,58463],{"class":900},[460,58537,3986],{"class":466},[460,58539,16948],{"class":900},[460,58541,58542],{"class":466},",(",[460,58544,16954],{"class":900},[460,58546,3986],{"class":466},[460,58548,48475],{"class":900},[460,58550,58551],{"class":466},"),(",[460,58553,17323],{"class":900},[460,58555,3986],{"class":466},[460,58557,16942],{"class":900},[460,58559,58560],{"class":466},"),",[460,58562,16942],{"class":900},[460,58564,54352],{"class":466},[460,58566,58567,58569,58571,58573,58575,58577,58579,58581,58583,58585,58587,58589,58591,58593,58595],{"class":462,"line":2404},[460,58568,58533],{"class":466},[460,58570,51175],{"class":900},[460,58572,3986],{"class":466},[460,58574,48475],{"class":900},[460,58576,58542],{"class":466},[460,58578,48475],{"class":900},[460,58580,3986],{"class":466},[460,58582,58463],{"class":900},[460,58584,58551],{"class":466},[460,58586,16942],{"class":900},[460,58588,3986],{"class":466},[460,58590,16954],{"class":900},[460,58592,58560],{"class":466},[460,58594,16948],{"class":900},[460,58596,54352],{"class":466},[460,58598,58599,58601,58603,58605,58607,58609,58611,58613,58615,58617,58619,58621,58623],{"class":462,"line":2414},[460,58600,54402],{"class":466},[460,58602,47281],{"class":3380},[460,58604,894],{"class":887},[460,58606,913],{"class":900},[460,58608,3986],{"class":466},[460,58610,47336],{"class":3380},[460,58612,894],{"class":887},[460,58614,907],{"class":900},[460,58616,3986],{"class":466},[460,58618,47290],{"class":3380},[460,58620,894],{"class":887},[460,58622,901],{"class":900},[460,58624,3754],{"class":466},[460,58626,58627],{"class":462,"line":2428},[460,58628,54431],{"class":466},[460,58630,58631,58633,58636,58638],{"class":462,"line":2440},[460,58632,47252],{"class":900},[460,58634,58635],{"class":466},".b4",[460,58637,894],{"class":887},[460,58639,54314],{"class":466},[460,58641,58642,58644,58647,58649,58651,58653,58655,58657,58660,58662,58664,58666,58668,58670,58672],{"class":462,"line":2445},[460,58643,58533],{"class":466},[460,58645,58646],{"class":900},"480",[460,58648,3986],{"class":466},[460,58650,58463],{"class":900},[460,58652,58542],{"class":466},[460,58654,16954],{"class":900},[460,58656,3986],{"class":466},[460,58658,58659],{"class":900},"208",[460,58661,58551],{"class":466},[460,58663,17323],{"class":900},[460,58665,3986],{"class":466},[460,58667,17329],{"class":900},[460,58669,58560],{"class":466},[460,58671,16948],{"class":900},[460,58673,54352],{"class":466},[460,58675,58676,58678,58680,58682,58684,58686,58688,58690,58692,58694,58696,58698,58700,58702,58704],{"class":462,"line":2450},[460,58677,58533],{"class":466},[460,58679,54762],{"class":900},[460,58681,3986],{"class":466},[460,58683,37465],{"class":900},[460,58685,58542],{"class":466},[460,58687,17339],{"class":900},[460,58689,3986],{"class":466},[460,58691,47907],{"class":900},[460,58693,58551],{"class":466},[460,58695,17515],{"class":900},[460,58697,3986],{"class":466},[460,58699,16948],{"class":900},[460,58701,58560],{"class":466},[460,58703,16948],{"class":900},[460,58705,54352],{"class":466},[460,58707,58708,58710,58712,58714,58716,58718,58720,58722,58724,58726,58728,58730,58732,58734,58736],{"class":462,"line":2460},[460,58709,58533],{"class":466},[460,58711,54762],{"class":900},[460,58713,3986],{"class":466},[460,58715,48475],{"class":900},[460,58717,58542],{"class":466},[460,58719,48475],{"class":900},[460,58721,3986],{"class":466},[460,58723,51175],{"class":900},[460,58725,58551],{"class":466},[460,58727,17515],{"class":900},[460,58729,3986],{"class":466},[460,58731,16948],{"class":900},[460,58733,58560],{"class":466},[460,58735,16948],{"class":900},[460,58737,54352],{"class":466},[460,58739,58740,58742,58744,58746,58748,58750,58752,58754,58757,58759,58761,58763,58765,58767,58769],{"class":462,"line":2473},[460,58741,58533],{"class":466},[460,58743,54762],{"class":900},[460,58745,3986],{"class":466},[460,58747,17339],{"class":900},[460,58749,58542],{"class":466},[460,58751,48475],{"class":900},[460,58753,3986],{"class":466},[460,58755,58756],{"class":900},"288",[460,58758,58551],{"class":466},[460,58760,16942],{"class":900},[460,58762,3986],{"class":466},[460,58764,16948],{"class":900},[460,58766,58560],{"class":466},[460,58768,16948],{"class":900},[460,58770,54352],{"class":466},[460,58772,58773,58775,58778,58780,58782,58784,58786,58788,58791,58793,58795,58797,58799,58801,58803],{"class":462,"line":2487},[460,58774,58533],{"class":466},[460,58776,58777],{"class":900},"528",[460,58779,3986],{"class":466},[460,58781,51175],{"class":900},[460,58783,58542],{"class":466},[460,58785,37465],{"class":900},[460,58787,3986],{"class":466},[460,58789,58790],{"class":900},"320",[460,58792,58551],{"class":466},[460,58794,16942],{"class":900},[460,58796,3986],{"class":466},[460,58798,48475],{"class":900},[460,58800,58560],{"class":466},[460,58802,48475],{"class":900},[460,58804,54352],{"class":466},[460,58806,58807,58809,58811,58813,58815,58817,58819,58821,58823,58825,58827,58829,58831],{"class":462,"line":2492},[460,58808,54402],{"class":466},[460,58810,47281],{"class":3380},[460,58812,894],{"class":887},[460,58814,913],{"class":900},[460,58816,3986],{"class":466},[460,58818,47336],{"class":3380},[460,58820,894],{"class":887},[460,58822,907],{"class":900},[460,58824,3986],{"class":466},[460,58826,47290],{"class":3380},[460,58828,894],{"class":887},[460,58830,901],{"class":900},[460,58832,3754],{"class":466},[460,58834,58835],{"class":462,"line":2497},[460,58836,54431],{"class":466},[460,58838,58839,58841,58844,58846],{"class":462,"line":2505},[460,58840,47252],{"class":900},[460,58842,58843],{"class":466},".b5",[460,58845,894],{"class":887},[460,58847,54314],{"class":466},[460,58849,58850,58852,58855,58857,58859,58861,58863,58865,58867,58869,58871,58873,58875,58877,58879],{"class":462,"line":2516},[460,58851,58533],{"class":466},[460,58853,58854],{"class":900},"832",[460,58856,3986],{"class":466},[460,58858,51175],{"class":900},[460,58860,58542],{"class":466},[460,58862,37465],{"class":900},[460,58864,3986],{"class":466},[460,58866,58790],{"class":900},[460,58868,58551],{"class":466},[460,58870,16942],{"class":900},[460,58872,3986],{"class":466},[460,58874,48475],{"class":900},[460,58876,58560],{"class":466},[460,58878,48475],{"class":900},[460,58880,54352],{"class":466},[460,58882,58883,58885,58887,58889,58891,58893,58895,58897,58899,58901,58903,58905,58907,58909,58911],{"class":462,"line":2529},[460,58884,58533],{"class":466},[460,58886,58854],{"class":900},[460,58888,3986],{"class":466},[460,58890,51245],{"class":900},[460,58892,58542],{"class":466},[460,58894,58463],{"class":900},[460,58896,3986],{"class":466},[460,58898,51245],{"class":900},[460,58900,58551],{"class":466},[460,58902,17329],{"class":900},[460,58904,3986],{"class":466},[460,58906,48475],{"class":900},[460,58908,58560],{"class":466},[460,58910,48475],{"class":900},[460,58912,54352],{"class":466},[460,58914,58915,58918,58920,58922,58924],{"class":462,"line":2542},[460,58916,58917],{"class":466},"            nn.AdaptiveAvgPool2d((",[460,58919,901],{"class":900},[460,58921,3986],{"class":466},[460,58923,901],{"class":900},[460,58925,58926],{"class":466},")),\n",[460,58928,58929],{"class":462,"line":2559},[460,58930,55095],{"class":466},[460,58932,58933,58935,58938,58940,58942],{"class":462,"line":2564},[460,58934,55100],{"class":466},[460,58936,58937],{"class":900},"1024",[460,58939,3986],{"class":466},[460,58941,2096],{"class":900},[460,58943,3754],{"class":466},[460,58945,58946],{"class":462,"line":2569},[460,58947,54431],{"class":466},[460,58949,58950],{"class":462,"line":2579},[460,58951,58952],{"class":942},"        # 对模型参数初始化\n",[460,58954,58955,58957,58959,58961,58963],{"class":462,"line":2597},[460,58956,19924],{"class":887},[460,58958,55173],{"class":466},[460,58960,11713],{"class":887},[460,58962,55178],{"class":900},[460,58964,55181],{"class":466},[460,58966,58967,58969,58971],{"class":462,"line":2610},[460,58968,21153],{"class":887},[460,58970,55193],{"class":900},[460,58972,55196],{"class":466},[460,58974,58975,58977,58980,58982,58985,58987,58989,58991,58993],{"class":462,"line":2621},[460,58976,55206],{"class":466},[460,58978,58979],{"class":3380},"mode",[460,58981,894],{"class":887},[460,58983,58984],{"class":1353},"'fan_out'",[460,58986,3986],{"class":466},[460,58988,55209],{"class":3380},[460,58990,894],{"class":887},[460,58992,55214],{"class":1353},[460,58994,3754],{"class":466},[460,58996,58997],{"class":462,"line":2634},[460,58998,58999],{"class":942},"                # ① m.weight要初始化的权重（比如Conv2d或Linear的权重矩阵）。\n",[460,59001,59002],{"class":462,"line":2648},[460,59003,59004],{"class":942},"                # ② mode = 'fan_out'决定使用的fan值：\n",[460,59006,59007],{"class":462,"line":2653},[460,59008,59009],{"class":942},"                # fan_in：输入通道数 × kernel大小（用于保持前向传播稳定）\n",[460,59011,59012],{"class":462,"line":2658},[460,59013,59014],{"class":942},"                # fan_out：输出通道数 × kernel大小（用于保持反向传播稳定）\n",[460,59016,59017],{"class":462,"line":2670},[460,59018,59019],{"class":942},"                # fan_out常用于残差网络ResNet，因为让反向传播更平稳。\n",[460,59021,59022],{"class":462,"line":2683},[460,59023,59024],{"class":942},"                # ③ nonlinearity = 'relu'告诉PyTorch你后面用的是ReLU，它会自动使用ReLU对应的gain系数\n",[460,59026,59027,59029,59031,59033,59035,59037],{"class":462,"line":2695},[460,59028,55226],{"class":887},[460,59030,55229],{"class":466},[460,59032,55232],{"class":887},[460,59034,55235],{"class":887},[460,59036,55238],{"class":900},[460,59038,20257],{"class":466},[460,59040,59041,59043,59045],{"class":462,"line":2700},[460,59042,55250],{"class":466},[460,59044,936],{"class":900},[460,59046,3754],{"class":466},[460,59048,59049,59052,59054],{"class":462,"line":2709},[460,59050,59051],{"class":887},"                elif",[460,59053,55193],{"class":900},[460,59055,55269],{"class":466},[460,59057,59058,59061,59063,59065,59067],{"class":462,"line":2718},[460,59059,59060],{"class":466},"                    nn.init.normal_(m.weight,",[460,59062,936],{"class":900},[460,59064,3986],{"class":466},[460,59066,55291],{"class":900},[460,59068,3754],{"class":466},[460,59070,59071,59074,59076,59078,59080,59082],{"class":462,"line":2723},[460,59072,59073],{"class":887},"                    if",[460,59075,55229],{"class":466},[460,59077,55232],{"class":887},[460,59079,55235],{"class":887},[460,59081,55238],{"class":900},[460,59083,20257],{"class":466},[460,59085,59086,59089,59091],{"class":462,"line":2732},[460,59087,59088],{"class":466},"                        nn.init.constant_(m.bias,",[460,59090,936],{"class":900},[460,59092,3754],{"class":466},[460,59094,59095],{"class":462,"line":2750},[460,59096,51470],{"class":942},[460,59098,59099,59101,59103],{"class":462,"line":2782},[460,59100,47209],{"class":887},[460,59102,47500],{"class":929},[460,59104,47503],{"class":466},[460,59106,59107,59109,59111,59113],{"class":462,"line":2809},[460,59108,47508],{"class":466},[460,59110,894],{"class":887},[460,59112,47231],{"class":900},[460,59114,59115],{"class":466},".b1(x)\n",[460,59117,59118,59120,59122,59124],{"class":462,"line":2836},[460,59119,47508],{"class":466},[460,59121,894],{"class":887},[460,59123,47231],{"class":900},[460,59125,59126],{"class":466},".b2(x)\n",[460,59128,59129,59131,59133,59135],{"class":462,"line":2856},[460,59130,47508],{"class":466},[460,59132,894],{"class":887},[460,59134,47231],{"class":900},[460,59136,59137],{"class":466},".b3(x)\n",[460,59139,59140,59142,59144,59146],{"class":462,"line":2865},[460,59141,47508],{"class":466},[460,59143,894],{"class":887},[460,59145,47231],{"class":900},[460,59147,59148],{"class":466},".b4(x)\n",[460,59150,59151,59153,59155,59157],{"class":462,"line":2881},[460,59152,47508],{"class":466},[460,59154,894],{"class":887},[460,59156,47231],{"class":900},[460,59158,59159],{"class":466},".b5(x)\n",[460,59161,59162,59164],{"class":462,"line":2887},[460,59163,31206],{"class":887},[460,59165,47616],{"class":466},[460,59167,59168],{"class":462,"line":2893},[460,59169,522],{"emptyLinePlaceholder":521},[460,59171,59172],{"class":462,"line":2899},[460,59173,59174],{"class":942},"# 模型展示\n",[460,59176,59177,59179,59181,59183,59185],{"class":462,"line":2905},[460,59178,18100],{"class":887},[460,59180,47627],{"class":900},[460,59182,19471],{"class":887},[460,59184,47632],{"class":1353},[460,59186,20257],{"class":466},[460,59188,59189,59191,59193,59195,59197,59199,59201,59203,59205],{"class":462,"line":2911},[460,59190,47644],{"class":466},[460,59192,894],{"class":887},[460,59194,46860],{"class":466},[460,59196,47651],{"class":1353},[460,59198,3766],{"class":887},[460,59200,47656],{"class":466},[460,59202,3763],{"class":887},[460,59204,46885],{"class":1353},[460,59206,3754],{"class":466},[460,59208,59209,59211,59213],{"class":462,"line":2920},[460,59210,47696],{"class":466},[460,59212,894],{"class":887},[460,59214,59215],{"class":466},"GoogLeNet(Inception).to(device)\n",[460,59217,59218,59220,59222,59224,59226,59228,59230,59232],{"class":462,"line":2929},[460,59219,47706],{"class":900},[460,59221,47709],{"class":466},[460,59223,901],{"class":900},[460,59225,3986],{"class":466},[460,59227,47907],{"class":900},[460,59229,3986],{"class":466},[460,59231,47907],{"class":900},[460,59233,47722],{"class":466},[103,59235,59236],{"start":476},[43,59237,55488],{},[451,59239,59241],{"className":46787,"code":59240,"language":46789,"meta":32,"style":32},"import copy\nimport time\nimport pandas as pd\nimport torch\nfrom torch.utils.data import Dataset\nfrom torchvision.datasets import FashionMNIST\nfrom torchvision import transforms\nimport torch.utils.data as Data\nimport matplotlib.pyplot as plt\n# 导入模型\nfrom model import GoogLeNet, Inception\nfrom torch import nn\n\n\n# 处理训练集与验证集函数--->划分数据集\ndef train_val_data_process():\n    train_data=FashionMNIST('.\u002Fdata',\n                            train=True,\n                            transform=transforms.Compose([transforms.Resize(size=227),transforms.ToTensor()]),\n                            download=True)\n    train_data,val_data=Data.random_split(train_data,[round(0.8*len(train_data)),round(0.2*len(train_data))])\n    train_dataloader = Data.DataLoader(dataset=train_data,\n                                       batch_size=32,\n                                       shuffle=True,\n                                       # 规定8个进程\n                                       num_workers=8)\n    val_dataloader=Data.DataLoader(dataset=val_data,\n                                   batch_size=32,\n                                   shuffle=True,\n                                   num_workers=8)\n    return train_dataloader,val_dataloader\n\n# 验证是否出错\n# train_val_data_process()\n\n# 定义模型训练函数\ndef train_model_process(model,train_dataloader,val_dataloader,num_epochs):\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else 'cpu')\n\n\n    # 定义优化器\n    # model.parameters()表示把模型里所有可训练的参数（权重、偏置）传给优化器\n    # lr为学习率\n    optimizer=torch.optim.Adam(model.parameters(),lr=0.001)\n\n    # 定义损失函数使用交叉熵损失函数\n    criterion=nn.CrossEntropyLoss()\n\n    # 将模型放到GPU中进行训练\n    model=model.to(device)\n    # 复制当前模型的参数\n    # 把model（PyTorch的神经网络）的当前参数（权重 \u002F 偏置等）完整复制一份，放到best_model_wts变量里\n    # ，保证这份拷贝不会随着后续训练改变 —— 常用于保存“到目前为止表现最好的模型参数”\n    best_model_wts=copy.deepcopy(model.state_dict())\n\n\n    # 初始化参数\n    # 最高准确度\n    best_acc=0.0\n    # 训练集损失列表\n    train_loss_all=[]\n    # 验证集函数列表\n    val_loss_all=[]\n    # 训练集准确度列表\n    train_acc_all=[]\n    # 验证集准确度列表\n    val_acc_all=[]\n\n    # 保存当前时间--->方便看每轮训练的时间\n    since=time.time()\n\n\n    # 准备工作完成--->开始训练模型\n    for epoch in range(num_epochs):\n        print(\"Epoch {}\u002F{}\".format(epoch,num_epochs-1))\n        print(\"-\"*10)\n\n        # 初始化参数\n        # 训练集损失函数\n        train_loss=0.0\n        # 训练集准确度\n        train_corrects=0\n        # 验证集损失函数\n        val_loss=0.0\n        # 验证集准确度\n        val_corrects=0\n        # 训练集样本数量\n        train_num=0\n        # 验证集样本数量\n        val_num=0\n        # 将数据放到设备,并开始训练\n        for step,(b_x,b_y) in enumerate(train_dataloader):\n            # 将特征放入到训练设备\n            b_x=b_x.to(device)\n            # 将标签放入到训练设备当中\n            b_y=b_y.to(device)\n            # 设置模型为训练模式\n            model.train()\n            # 将数据放到模型当中,开始前向传播\n            # 前向传播过程,输入一个batch,输出为一个batch中对应的预测\n            output=model(b_x)\n            # 从网络输出 output 的每一行里，找出数值最大的下标（类别），作为模型预测的标签\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算每一个batch的损失函数\n            loss=criterion(output,b_y)\n            # 将梯度初始化为0\n            optimizer.zero_grad()\n            # 梯度置为0后再进行反向传播\n            loss.backward()\n            # 根据网络反向传播的梯度信息来更新网络的参数，以起到降低loss函数计算的作用\n            optimizer.step()\n            # loss.item()指的是batch的平均损失\n            train_loss+=loss.item()*b_x.size(0)\n            # 计算每个批次中正确预测的数量\n            train_corrects+=torch.sum(pre_lab==b_y.data)\n            # 计算目前为止一共处理了多少样本\n            train_num+=b_x.size(0)\n        # 验证数据\n        for step ,(b_x,b_y) in enumerate(val_dataloader):\n            # 将特征放到验证设备当中\n            b_x=b_x.to(device)\n            # 将标签放到放到训练设备当中\n            b_y=b_y.to(device)\n            # 开启验证模式，设置模型为评估模式\n            model.eval()\n            # 验证时不计算梯度以节省内存\u002F计算\n            with torch.no_grad():\n                # 前向传播过程，输入一个batch,输出为一个batch中对应的预测\n                output=model(b_x)\n                # 查找每一行中最大值对应的下标\n                pre_lab=torch.argmax(output,dim=1)\n                # 计算验证集上的当前 batch 损失\n                val_batch_loss=criterion(output,b_y)\n                # 对损失函数进行累加（按样本数加权）\n                val_loss+=val_batch_loss.item()*b_x.size(0)\n                val_corrects+=torch.sum(pre_lab==b_y.data)\n            # 当前用于验证的样本数量\n            val_num+=b_x.size(0)\n        # 计算并保存每一次迭代的loss值和准确率\n        # 计算并保存训练集的loss值\n        train_loss_all.append(train_loss\u002Ftrain_num)\n        # 取双精度\n        # 计算并保存训练集的准确率\n        train_acc_all.append(train_corrects.double().item()\u002Ftrain_num)\n        # 计算并保存验证集的loss值\n        val_loss_all.append(val_loss\u002Fval_num)\n        # 计算并保存验证集的准确率\n        val_acc_all.append(val_corrects.double().item()\u002Fval_num)\n\n        # 打印训练一轮的loss值和准确率\n        print('{}train loss:{:.4f} train acc:{:.4f}'.format(epoch,train_loss_all[-1],train_acc_all[-1]))\n        print('{}val loss:{:.4f} val acc:{:.4f}'.format(epoch,val_loss_all[-1],val_acc_all[-1]))\n\n        # 判断准确度--->保存最优模型\n        if val_acc_all[-1]>best_acc:\n            # 保存当前模型准确度\n            best_acc:float=val_acc_all[-1]\n            # 保存当前的准确度\n            # model.state_dict()是当前模型的所有参数（权重和偏置）\n            best_model_wts=copy.deepcopy(model.state_dict())\n\n        # 计算耗时\n        time_use=time.time()-since\n        print('训练和验证耗费的时间{:.0f}m{:.0f}s'.format(time_use\u002F\u002F60,time_use%60))\n    # 选择最优参数并保存\n    # 保存最佳模型权重字典\n    torch.save(best_model_wts,'.\u002Fbest_model.pth')\n    # 保存训练过程,可以使用pandas来进行保存,里边有个DataFrame()可以像列表一样保存数据\n    train_process=pd.DataFrame(data={\n        \"epoch\":range(num_epochs),\n        \"train_loss_all\":train_loss_all,\n        \"val_loss_all\":val_loss_all,\n        \"train_acc_all\":train_acc_all,\n        \"val_acc_all\":val_acc_all\n    })\n    # 返回训练保存的过程\n    return train_process\n\n# 将loss值和精度按照图片的形式展示出来\ndef matplot_acc_loss(train_process):\n    # 设置图的大小\n    plt.figure(figsize=(12,4))\n    # 设置图中有几张图\n    # 把当前画布分成1行2列的子图,当前位置是 第 1 个子图\n    # ①loss图\n    plt.subplot(1,2,1)\n    # 补充:\n    # plt.subplot(nrows, ncols, index)\n    # nrows：行数\n    # ncols：列数\n    # index：目前选中第几个子图（从1开始）\n    plt.plot(train_process[\"epoch\"],train_process.train_loss_all,'ro-',label='train loss')\n    plt.plot(train_process[\"epoch\"],train_process.val_loss_all,'bs--',label='val loss')\n    # 添加一个图例\n    plt.legend()\n    # 给轴添加标签\n    plt.xlabel('epoch')\n    plt.ylabel('loss')\n    # ②准确度图\n    plt.subplot(1,2,2)\n    plt.plot(train_process[\"epoch\"],train_process.train_acc_all,'ro-',label='train acc')\n    plt.plot(train_process[\"epoch\"],train_process.val_acc_all,'bs--',label='val acc')\n    # 添加图例\n    plt.legend()\n    plt.xlabel(\"epoch\")\n    plt.ylabel(\"acc\")\n    plt.show()\n\n# 正式开始训练:\nif __name__==\"__main__\":\n    # 将模型实例化\n    GoogLeNet=GoogLeNet(Inception)\n    train_dataloader,val_dataloader=train_val_data_process()\n    train_process=train_model_process(GoogLeNet,train_dataloader,val_dataloader,num_epochs=30)\n    matplot_acc_loss(train_process)\n",[457,59242,59243,59249,59255,59265,59271,59281,59291,59301,59311,59321,59325,59336,59346,59350,59354,59358,59366,59378,59388,59404,59414,59446,59460,59470,59480,59484,59494,59508,59518,59528,59538,59544,59548,59552,59556,59560,59564,59572,59592,59596,59600,59604,59608,59612,59628,59632,59636,59644,59648,59652,59660,59664,59668,59672,59680,59684,59688,59692,59696,59704,59708,59716,59720,59728,59732,59740,59744,59752,59756,59760,59768,59772,59776,59780,59792,59816,59830,59834,59838,59842,59850,59854,59862,59866,59874,59878,59886,59890,59898,59902,59910,59914,59926,59930,59938,59942,59950,59954,59958,59962,59966,59974,59978,59994,59998,60006,60010,60014,60018,60022,60026,60030,60034,60050,60054,60066,60070,60082,60086,60098,60102,60110,60114,60122,60126,60130,60134,60140,60144,60152,60156,60172,60176,60184,60188,60204,60216,60220,60232,60236,60240,60248,60252,60256,60264,60268,60276,60280,60288,60292,60296,60338,60380,60384,60388,60404,60408,60424,60428,60432,60440,60444,60448,60460,60498,60502,60506,60514,60518,60532,60542,60548,60554,60560,60566,60570,60574,60580,60584,60588,60596,60600,60618,60622,60626,60630,60646,60650,60654,60658,60662,60666,60686,60706,60710,60714,60718,60726,60734,60738,60754,60774,60794,60798,60802,60810,60818,60822,60826,60830,60842,60846,60856,60864,60881],{"__ignoreMap":32},[460,59244,59245,59247],{"class":462,"line":463},[460,59246,46801],{"class":887},[460,59248,48227],{"class":466},[460,59250,59251,59253],{"class":462,"line":476},[460,59252,46801],{"class":887},[460,59254,48234],{"class":466},[460,59256,59257,59259,59261,59263],{"class":462,"line":482},[460,59258,46801],{"class":887},[460,59260,48245],{"class":466},[460,59262,47790],{"class":887},[460,59264,48250],{"class":466},[460,59266,59267,59269],{"class":462,"line":488},[460,59268,46801],{"class":887},[460,59270,46804],{"class":466},[460,59272,59273,59275,59277,59279],{"class":462,"line":494},[460,59274,47145],{"class":887},[460,59276,47822],{"class":466},[460,59278,46801],{"class":887},[460,59280,48267],{"class":466},[460,59282,59283,59285,59287,59289],{"class":462,"line":500},[460,59284,47145],{"class":887},[460,59286,47775],{"class":466},[460,59288,46801],{"class":887},[460,59290,47780],{"class":466},[460,59292,59293,59295,59297,59299],{"class":462,"line":506},[460,59294,47145],{"class":887},[460,59296,47805],{"class":466},[460,59298,46801],{"class":887},[460,59300,47810],{"class":466},[460,59302,59303,59305,59307,59309],{"class":462,"line":512},[460,59304,46801],{"class":887},[460,59306,47822],{"class":466},[460,59308,47790],{"class":887},[460,59310,47827],{"class":466},[460,59312,59313,59315,59317,59319],{"class":462,"line":518},[460,59314,46801],{"class":887},[460,59316,47839],{"class":466},[460,59318,47790],{"class":887},[460,59320,47844],{"class":466},[460,59322,59323],{"class":462,"line":525},[460,59324,48312],{"class":942},[460,59326,59327,59329,59331,59333],{"class":462,"line":531},[460,59328,47145],{"class":887},[460,59330,48319],{"class":466},[460,59332,46801],{"class":887},[460,59334,59335],{"class":466}," GoogLeNet, Inception\n",[460,59337,59338,59340,59342,59344],{"class":462,"line":537},[460,59339,47145],{"class":887},[460,59341,47148],{"class":466},[460,59343,46801],{"class":887},[460,59345,47153],{"class":466},[460,59347,59348],{"class":462,"line":543},[460,59349,522],{"emptyLinePlaceholder":521},[460,59351,59352],{"class":462,"line":549},[460,59353,522],{"emptyLinePlaceholder":521},[460,59355,59356],{"class":462,"line":555},[460,59357,48347],{"class":942},[460,59359,59360,59362,59364],{"class":462,"line":560},[460,59361,48352],{"class":887},[460,59363,48355],{"class":929},[460,59365,48358],{"class":466},[460,59367,59368,59370,59372,59374,59376],{"class":462,"line":566},[460,59369,48363],{"class":466},[460,59371,894],{"class":887},[460,59373,47862],{"class":466},[460,59375,47870],{"class":1353},[460,59377,1363],{"class":466},[460,59379,59380,59382,59384,59386],{"class":462,"line":572},[460,59381,48376],{"class":3380},[460,59383,894],{"class":887},[460,59385,47882],{"class":900},[460,59387,1363],{"class":466},[460,59389,59390,59392,59394,59396,59398,59400,59402],{"class":462,"line":578},[460,59391,48387],{"class":3380},[460,59393,894],{"class":887},[460,59395,47899],{"class":466},[460,59397,47902],{"class":3380},[460,59399,894],{"class":887},[460,59401,51754],{"class":900},[460,59403,47910],{"class":466},[460,59405,59406,59408,59410,59412],{"class":462,"line":812},[460,59407,48404],{"class":3380},[460,59409,894],{"class":887},[460,59411,47882],{"class":900},[460,59413,3754],{"class":466},[460,59415,59416,59418,59420,59422,59424,59426,59428,59430,59432,59434,59436,59438,59440,59442,59444],{"class":462,"line":818},[460,59417,48415],{"class":466},[460,59419,894],{"class":887},[460,59421,48420],{"class":466},[460,59423,48423],{"class":900},[460,59425,2174],{"class":466},[460,59427,48428],{"class":900},[460,59429,8320],{"class":887},[460,59431,23856],{"class":900},[460,59433,48435],{"class":466},[460,59435,48423],{"class":900},[460,59437,2174],{"class":466},[460,59439,48442],{"class":900},[460,59441,8320],{"class":887},[460,59443,23856],{"class":900},[460,59445,48449],{"class":466},[460,59447,59448,59450,59452,59454,59456,59458],{"class":462,"line":824},[460,59449,48454],{"class":466},[460,59451,894],{"class":887},[460,59453,48459],{"class":466},[460,59455,3635],{"class":3380},[460,59457,894],{"class":887},[460,59459,47947],{"class":466},[460,59461,59462,59464,59466,59468],{"class":462,"line":2074},[460,59463,48470],{"class":3380},[460,59465,894],{"class":887},[460,59467,16942],{"class":900},[460,59469,1363],{"class":466},[460,59471,59472,59474,59476,59478],{"class":462,"line":2088},[460,59473,48482],{"class":3380},[460,59475,894],{"class":887},[460,59477,47882],{"class":900},[460,59479,1363],{"class":466},[460,59481,59482],{"class":462,"line":2103},[460,59483,48493],{"class":942},[460,59485,59486,59488,59490,59492],{"class":462,"line":2122},[460,59487,48498],{"class":3380},[460,59489,894],{"class":887},[460,59491,17130],{"class":900},[460,59493,3754],{"class":466},[460,59495,59496,59498,59500,59502,59504,59506],{"class":462,"line":2144},[460,59497,48509],{"class":466},[460,59499,894],{"class":887},[460,59501,47940],{"class":466},[460,59503,3635],{"class":3380},[460,59505,894],{"class":887},[460,59507,48520],{"class":466},[460,59509,59510,59512,59514,59516],{"class":462,"line":2158},[460,59511,48525],{"class":3380},[460,59513,894],{"class":887},[460,59515,16942],{"class":900},[460,59517,1363],{"class":466},[460,59519,59520,59522,59524,59526],{"class":462,"line":2163},[460,59521,48536],{"class":3380},[460,59523,894],{"class":887},[460,59525,47882],{"class":900},[460,59527,1363],{"class":466},[460,59529,59530,59532,59534,59536],{"class":462,"line":2168},[460,59531,48547],{"class":3380},[460,59533,894],{"class":887},[460,59535,17130],{"class":900},[460,59537,3754],{"class":466},[460,59539,59540,59542],{"class":462,"line":2183},[460,59541,20605],{"class":887},[460,59543,48560],{"class":466},[460,59545,59546],{"class":462,"line":2194},[460,59547,522],{"emptyLinePlaceholder":521},[460,59549,59550],{"class":462,"line":2199},[460,59551,48569],{"class":942},[460,59553,59554],{"class":462,"line":2204},[460,59555,48574],{"class":942},[460,59557,59558],{"class":462,"line":2212},[460,59559,522],{"emptyLinePlaceholder":521},[460,59561,59562],{"class":462,"line":2257},[460,59563,48583],{"class":942},[460,59565,59566,59568,59570],{"class":462,"line":2285},[460,59567,48352],{"class":887},[460,59569,48590],{"class":929},[460,59571,48593],{"class":466},[460,59573,59574,59576,59578,59580,59582,59584,59586,59588,59590],{"class":462,"line":2298},[460,59575,47644],{"class":466},[460,59577,894],{"class":887},[460,59579,46860],{"class":466},[460,59581,47651],{"class":1353},[460,59583,3766],{"class":887},[460,59585,47656],{"class":466},[460,59587,3763],{"class":887},[460,59589,48612],{"class":1353},[460,59591,3754],{"class":466},[460,59593,59594],{"class":462,"line":2303},[460,59595,522],{"emptyLinePlaceholder":521},[460,59597,59598],{"class":462,"line":2308},[460,59599,522],{"emptyLinePlaceholder":521},[460,59601,59602],{"class":462,"line":2318},[460,59603,48627],{"class":942},[460,59605,59606],{"class":462,"line":2333},[460,59607,48632],{"class":942},[460,59609,59610],{"class":462,"line":2338},[460,59611,48637],{"class":942},[460,59613,59614,59616,59618,59620,59622,59624,59626],{"class":462,"line":2343},[460,59615,48642],{"class":466},[460,59617,894],{"class":887},[460,59619,48647],{"class":466},[460,59621,48650],{"class":3380},[460,59623,894],{"class":887},[460,59625,48655],{"class":900},[460,59627,3754],{"class":466},[460,59629,59630],{"class":462,"line":2353},[460,59631,522],{"emptyLinePlaceholder":521},[460,59633,59634],{"class":462,"line":2368},[460,59635,48666],{"class":942},[460,59637,59638,59640,59642],{"class":462,"line":2381},[460,59639,48671],{"class":466},[460,59641,894],{"class":887},[460,59643,48676],{"class":466},[460,59645,59646],{"class":462,"line":2394},[460,59647,522],{"emptyLinePlaceholder":521},[460,59649,59650],{"class":462,"line":2399},[460,59651,48685],{"class":942},[460,59653,59654,59656,59658],{"class":462,"line":2404},[460,59655,47696],{"class":466},[460,59657,894],{"class":887},[460,59659,48694],{"class":466},[460,59661,59662],{"class":462,"line":2414},[460,59663,48699],{"class":942},[460,59665,59666],{"class":462,"line":2428},[460,59667,48704],{"class":942},[460,59669,59670],{"class":462,"line":2440},[460,59671,48709],{"class":942},[460,59673,59674,59676,59678],{"class":462,"line":2445},[460,59675,48714],{"class":466},[460,59677,894],{"class":887},[460,59679,48719],{"class":466},[460,59681,59682],{"class":462,"line":2450},[460,59683,522],{"emptyLinePlaceholder":521},[460,59685,59686],{"class":462,"line":2460},[460,59687,522],{"emptyLinePlaceholder":521},[460,59689,59690],{"class":462,"line":2473},[460,59691,48732],{"class":942},[460,59693,59694],{"class":462,"line":2487},[460,59695,48737],{"class":942},[460,59697,59698,59700,59702],{"class":462,"line":2492},[460,59699,48742],{"class":466},[460,59701,894],{"class":887},[460,59703,48747],{"class":900},[460,59705,59706],{"class":462,"line":2497},[460,59707,48752],{"class":942},[460,59709,59710,59712,59714],{"class":462,"line":2505},[460,59711,48757],{"class":466},[460,59713,894],{"class":887},[460,59715,48762],{"class":466},[460,59717,59718],{"class":462,"line":2516},[460,59719,48767],{"class":942},[460,59721,59722,59724,59726],{"class":462,"line":2529},[460,59723,48772],{"class":466},[460,59725,894],{"class":887},[460,59727,48762],{"class":466},[460,59729,59730],{"class":462,"line":2542},[460,59731,48781],{"class":942},[460,59733,59734,59736,59738],{"class":462,"line":2559},[460,59735,48786],{"class":466},[460,59737,894],{"class":887},[460,59739,48762],{"class":466},[460,59741,59742],{"class":462,"line":2564},[460,59743,48795],{"class":942},[460,59745,59746,59748,59750],{"class":462,"line":2569},[460,59747,48800],{"class":466},[460,59749,894],{"class":887},[460,59751,48762],{"class":466},[460,59753,59754],{"class":462,"line":2579},[460,59755,522],{"emptyLinePlaceholder":521},[460,59757,59758],{"class":462,"line":2597},[460,59759,48813],{"class":942},[460,59761,59762,59764,59766],{"class":462,"line":2610},[460,59763,48818],{"class":466},[460,59765,894],{"class":887},[460,59767,48823],{"class":466},[460,59769,59770],{"class":462,"line":2621},[460,59771,522],{"emptyLinePlaceholder":521},[460,59773,59774],{"class":462,"line":2634},[460,59775,522],{"emptyLinePlaceholder":521},[460,59777,59778],{"class":462,"line":2648},[460,59779,48836],{"class":942},[460,59781,59782,59784,59786,59788,59790],{"class":462,"line":2653},[460,59783,19722],{"class":887},[460,59785,48843],{"class":466},[460,59787,11713],{"class":887},[460,59789,48848],{"class":900},[460,59791,48851],{"class":466},[460,59793,59794,59796,59798,59800,59802,59804,59806,59808,59810,59812,59814],{"class":462,"line":2658},[460,59795,48856],{"class":900},[460,59797,2174],{"class":466},[460,59799,48861],{"class":1353},[460,59801,48864],{"class":900},[460,59803,8331],{"class":1353},[460,59805,48864],{"class":900},[460,59807,16993],{"class":1353},[460,59809,48873],{"class":466},[460,59811,17259],{"class":887},[460,59813,901],{"class":900},[460,59815,6311],{"class":466},[460,59817,59818,59820,59822,59824,59826,59828],{"class":462,"line":2670},[460,59819,48856],{"class":900},[460,59821,2174],{"class":466},[460,59823,48888],{"class":1353},[460,59825,8320],{"class":887},[460,59827,2096],{"class":900},[460,59829,3754],{"class":466},[460,59831,59832],{"class":462,"line":2683},[460,59833,522],{"emptyLinePlaceholder":521},[460,59835,59836],{"class":462,"line":2695},[460,59837,48903],{"class":942},[460,59839,59840],{"class":462,"line":2700},[460,59841,48908],{"class":942},[460,59843,59844,59846,59848],{"class":462,"line":2709},[460,59845,48913],{"class":466},[460,59847,894],{"class":887},[460,59849,48747],{"class":900},[460,59851,59852],{"class":462,"line":2718},[460,59853,48922],{"class":942},[460,59855,59856,59858,59860],{"class":462,"line":2723},[460,59857,48927],{"class":466},[460,59859,894],{"class":887},[460,59861,19606],{"class":900},[460,59863,59864],{"class":462,"line":2732},[460,59865,48936],{"class":942},[460,59867,59868,59870,59872],{"class":462,"line":2750},[460,59869,48941],{"class":466},[460,59871,894],{"class":887},[460,59873,48747],{"class":900},[460,59875,59876],{"class":462,"line":2782},[460,59877,48950],{"class":942},[460,59879,59880,59882,59884],{"class":462,"line":2809},[460,59881,48955],{"class":466},[460,59883,894],{"class":887},[460,59885,19606],{"class":900},[460,59887,59888],{"class":462,"line":2836},[460,59889,48964],{"class":942},[460,59891,59892,59894,59896],{"class":462,"line":2856},[460,59893,48969],{"class":466},[460,59895,894],{"class":887},[460,59897,19606],{"class":900},[460,59899,59900],{"class":462,"line":2865},[460,59901,48978],{"class":942},[460,59903,59904,59906,59908],{"class":462,"line":2881},[460,59905,48983],{"class":466},[460,59907,894],{"class":887},[460,59909,19606],{"class":900},[460,59911,59912],{"class":462,"line":2887},[460,59913,48992],{"class":942},[460,59915,59916,59918,59920,59922,59924],{"class":462,"line":2893},[460,59917,19924],{"class":887},[460,59919,48006],{"class":466},[460,59921,11713],{"class":887},[460,59923,48011],{"class":900},[460,59925,49005],{"class":466},[460,59927,59928],{"class":462,"line":2899},[460,59929,49010],{"class":942},[460,59931,59932,59934,59936],{"class":462,"line":2905},[460,59933,49015],{"class":466},[460,59935,894],{"class":887},[460,59937,49020],{"class":466},[460,59939,59940],{"class":462,"line":2911},[460,59941,49025],{"class":942},[460,59943,59944,59946,59948],{"class":462,"line":2920},[460,59945,49030],{"class":466},[460,59947,894],{"class":887},[460,59949,49035],{"class":466},[460,59951,59952],{"class":462,"line":2929},[460,59953,49040],{"class":942},[460,59955,59956],{"class":462,"line":2935},[460,59957,49045],{"class":466},[460,59959,59960],{"class":462,"line":2948},[460,59961,49050],{"class":942},[460,59963,59964],{"class":462,"line":2954},[460,59965,49055],{"class":942},[460,59967,59968,59970,59972],{"class":462,"line":2965},[460,59969,49060],{"class":466},[460,59971,894],{"class":887},[460,59973,49065],{"class":466},[460,59975,59976],{"class":462,"line":2976},[460,59977,49070],{"class":942},[460,59979,59980,59982,59984,59986,59988,59990,59992],{"class":462,"line":2987},[460,59981,49075],{"class":466},[460,59983,894],{"class":887},[460,59985,49080],{"class":466},[460,59987,49083],{"class":3380},[460,59989,894],{"class":887},[460,59991,901],{"class":900},[460,59993,3754],{"class":466},[460,59995,59996],{"class":462,"line":2998},[460,59997,49094],{"class":942},[460,59999,60000,60002,60004],{"class":462,"line":3003},[460,60001,49099],{"class":466},[460,60003,894],{"class":887},[460,60005,49104],{"class":466},[460,60007,60008],{"class":462,"line":3008},[460,60009,49109],{"class":942},[460,60011,60012],{"class":462,"line":3018},[460,60013,49114],{"class":466},[460,60015,60016],{"class":462,"line":3028},[460,60017,49119],{"class":942},[460,60019,60020],{"class":462,"line":3038},[460,60021,49124],{"class":466},[460,60023,60024],{"class":462,"line":3048},[460,60025,49129],{"class":942},[460,60027,60028],{"class":462,"line":3053},[460,60029,49134],{"class":466},[460,60031,60032],{"class":462,"line":3058},[460,60033,49139],{"class":942},[460,60035,60036,60038,60040,60042,60044,60046,60048],{"class":462,"line":3068},[460,60037,49144],{"class":466},[460,60039,3467],{"class":887},[460,60041,49149],{"class":466},[460,60043,8320],{"class":887},[460,60045,49154],{"class":466},[460,60047,936],{"class":900},[460,60049,3754],{"class":466},[460,60051,60052],{"class":462,"line":3078},[460,60053,49163],{"class":942},[460,60055,60056,60058,60060,60062,60064],{"class":462,"line":3088},[460,60057,49168],{"class":466},[460,60059,3467],{"class":887},[460,60061,49173],{"class":466},[460,60063,19471],{"class":887},[460,60065,49178],{"class":466},[460,60067,60068],{"class":462,"line":3098},[460,60069,49183],{"class":942},[460,60071,60072,60074,60076,60078,60080],{"class":462,"line":3103},[460,60073,49188],{"class":466},[460,60075,3467],{"class":887},[460,60077,49154],{"class":466},[460,60079,936],{"class":900},[460,60081,3754],{"class":466},[460,60083,60084],{"class":462,"line":3108},[460,60085,49201],{"class":942},[460,60087,60088,60090,60092,60094,60096],{"class":462,"line":3118},[460,60089,19924],{"class":887},[460,60091,49208],{"class":466},[460,60093,11713],{"class":887},[460,60095,48011],{"class":900},[460,60097,49215],{"class":466},[460,60099,60100],{"class":462,"line":3128},[460,60101,49220],{"class":942},[460,60103,60104,60106,60108],{"class":462,"line":3138},[460,60105,49015],{"class":466},[460,60107,894],{"class":887},[460,60109,49020],{"class":466},[460,60111,60112],{"class":462,"line":3148},[460,60113,49233],{"class":942},[460,60115,60116,60118,60120],{"class":462,"line":3153},[460,60117,49030],{"class":466},[460,60119,894],{"class":887},[460,60121,49035],{"class":466},[460,60123,60124],{"class":462,"line":3158},[460,60125,49246],{"class":942},[460,60127,60128],{"class":462,"line":3168},[460,60129,49251],{"class":466},[460,60131,60132],{"class":462,"line":3178},[460,60133,52661],{"class":942},[460,60135,60136,60138],{"class":462,"line":3188},[460,60137,49256],{"class":887},[460,60139,49259],{"class":466},[460,60141,60142],{"class":462,"line":3198},[460,60143,49264],{"class":942},[460,60145,60146,60148,60150],{"class":462,"line":3203},[460,60147,52676],{"class":466},[460,60149,894],{"class":887},[460,60151,49065],{"class":466},[460,60153,60154],{"class":462,"line":3208},[460,60155,49279],{"class":942},[460,60157,60158,60160,60162,60164,60166,60168,60170],{"class":462,"line":3218},[460,60159,52689],{"class":466},[460,60161,894],{"class":887},[460,60163,49080],{"class":466},[460,60165,49083],{"class":3380},[460,60167,894],{"class":887},[460,60169,901],{"class":900},[460,60171,3754],{"class":466},[460,60173,60174],{"class":462,"line":3228},[460,60175,49302],{"class":942},[460,60177,60178,60180,60182],{"class":462,"line":3238},[460,60179,52710],{"class":466},[460,60181,894],{"class":887},[460,60183,49104],{"class":466},[460,60185,60186],{"class":462,"line":3248},[460,60187,49317],{"class":942},[460,60189,60190,60192,60194,60196,60198,60200,60202],{"class":462,"line":3253},[460,60191,52723],{"class":466},[460,60193,3467],{"class":887},[460,60195,52728],{"class":466},[460,60197,8320],{"class":887},[460,60199,49154],{"class":466},[460,60201,936],{"class":900},[460,60203,3754],{"class":466},[460,60205,60206,60208,60210,60212,60214],{"class":462,"line":3258},[460,60207,52741],{"class":466},[460,60209,3467],{"class":887},[460,60211,49173],{"class":466},[460,60213,19471],{"class":887},[460,60215,49178],{"class":466},[460,60217,60218],{"class":462,"line":3268},[460,60219,52754],{"class":942},[460,60221,60222,60224,60226,60228,60230],{"class":462,"line":3278},[460,60223,52759],{"class":466},[460,60225,3467],{"class":887},[460,60227,49154],{"class":466},[460,60229,936],{"class":900},[460,60231,3754],{"class":466},[460,60233,60234],{"class":462,"line":3288},[460,60235,49374],{"class":942},[460,60237,60238],{"class":462,"line":3298},[460,60239,49379],{"class":942},[460,60241,60242,60244,60246],{"class":462,"line":3303},[460,60243,49384],{"class":466},[460,60245,8331],{"class":887},[460,60247,49389],{"class":466},[460,60249,60250],{"class":462,"line":3308},[460,60251,49394],{"class":942},[460,60253,60254],{"class":462,"line":3318},[460,60255,49399],{"class":942},[460,60257,60258,60260,60262],{"class":462,"line":3328},[460,60259,49404],{"class":466},[460,60261,8331],{"class":887},[460,60263,49389],{"class":466},[460,60265,60266],{"class":462,"line":3337},[460,60267,49413],{"class":942},[460,60269,60270,60272,60274],{"class":462,"line":3347},[460,60271,49418],{"class":466},[460,60273,8331],{"class":887},[460,60275,49423],{"class":466},[460,60277,60278],{"class":462,"line":3352},[460,60279,49428],{"class":942},[460,60281,60282,60284,60286],{"class":462,"line":3358},[460,60283,49433],{"class":466},[460,60285,8331],{"class":887},[460,60287,49423],{"class":466},[460,60289,60290],{"class":462,"line":3363},[460,60291,522],{"emptyLinePlaceholder":521},[460,60293,60294],{"class":462,"line":3369},[460,60295,49446],{"class":942},[460,60297,60298,60300,60302,60304,60306,60308,60310,60312,60314,60316,60318,60320,60322,60324,60326,60328,60330,60332,60334,60336],{"class":462,"line":3386},[460,60299,48856],{"class":900},[460,60301,2174],{"class":466},[460,60303,20113],{"class":1353},[460,60305,48864],{"class":900},[460,60307,49459],{"class":1353},[460,60309,17607],{"class":900},[460,60311,49464],{"class":887},[460,60313,612],{"class":900},[460,60315,49469],{"class":1353},[460,60317,17607],{"class":900},[460,60319,49464],{"class":887},[460,60321,612],{"class":900},[460,60323,20113],{"class":1353},[460,60325,49480],{"class":466},[460,60327,17259],{"class":887},[460,60329,901],{"class":900},[460,60331,49487],{"class":466},[460,60333,17259],{"class":887},[460,60335,901],{"class":900},[460,60337,49494],{"class":466},[460,60339,60340,60342,60344,60346,60348,60350,60352,60354,60356,60358,60360,60362,60364,60366,60368,60370,60372,60374,60376,60378],{"class":462,"line":3392},[460,60341,48856],{"class":900},[460,60343,2174],{"class":466},[460,60345,20113],{"class":1353},[460,60347,48864],{"class":900},[460,60349,49507],{"class":1353},[460,60351,17607],{"class":900},[460,60353,49464],{"class":887},[460,60355,612],{"class":900},[460,60357,49516],{"class":1353},[460,60359,17607],{"class":900},[460,60361,49464],{"class":887},[460,60363,612],{"class":900},[460,60365,20113],{"class":1353},[460,60367,49527],{"class":466},[460,60369,17259],{"class":887},[460,60371,901],{"class":900},[460,60373,49534],{"class":466},[460,60375,17259],{"class":887},[460,60377,901],{"class":900},[460,60379,49494],{"class":466},[460,60381,60382],{"class":462,"line":3406},[460,60383,522],{"emptyLinePlaceholder":521},[460,60385,60386],{"class":462,"line":3412},[460,60387,49549],{"class":942},[460,60389,60390,60392,60394,60396,60398,60400,60402],{"class":462,"line":3431},[460,60391,3702],{"class":887},[460,60393,49556],{"class":466},[460,60395,17259],{"class":887},[460,60397,901],{"class":900},[460,60399,17649],{"class":466},[460,60401,17668],{"class":887},[460,60403,49567],{"class":466},[460,60405,60406],{"class":462,"line":3461},[460,60407,49572],{"class":942},[460,60409,60410,60412,60414,60416,60418,60420,60422],{"class":462,"line":3473},[460,60411,49577],{"class":466},[460,60413,16793],{"class":900},[460,60415,894],{"class":887},[460,60417,49584],{"class":466},[460,60419,17259],{"class":887},[460,60421,901],{"class":900},[460,60423,13307],{"class":466},[460,60425,60426],{"class":462,"line":3479},[460,60427,49595],{"class":942},[460,60429,60430],{"class":462,"line":3490},[460,60431,49600],{"class":942},[460,60433,60434,60436,60438],{"class":462,"line":3501},[460,60435,49605],{"class":466},[460,60437,894],{"class":887},[460,60439,48719],{"class":466},[460,60441,60442],{"class":462,"line":3511},[460,60443,522],{"emptyLinePlaceholder":521},[460,60445,60446],{"class":462,"line":3517},[460,60447,49618],{"class":942},[460,60449,60450,60452,60454,60456,60458],{"class":462,"line":3523},[460,60451,49623],{"class":466},[460,60453,894],{"class":887},[460,60455,49628],{"class":466},[460,60457,17259],{"class":887},[460,60459,49633],{"class":466},[460,60461,60462,60464,60466,60468,60470,60472,60474,60476,60478,60480,60482,60484,60486,60488,60490,60492,60494,60496],{"class":462,"line":3529},[460,60463,48856],{"class":900},[460,60465,2174],{"class":466},[460,60467,49642],{"class":1353},[460,60469,17607],{"class":900},[460,60471,49647],{"class":887},[460,60473,612],{"class":900},[460,60475,17270],{"class":1353},[460,60477,17607],{"class":900},[460,60479,49647],{"class":887},[460,60481,612],{"class":900},[460,60483,49660],{"class":1353},[460,60485,49663],{"class":466},[460,60487,5245],{"class":887},[460,60489,16027],{"class":900},[460,60491,49670],{"class":466},[460,60493,2328],{"class":887},[460,60495,16027],{"class":900},[460,60497,6311],{"class":466},[460,60499,60500],{"class":462,"line":3535},[460,60501,53038],{"class":942},[460,60503,60504],{"class":462,"line":3557},[460,60505,53043],{"class":942},[460,60507,60508,60510,60512],{"class":462,"line":3562},[460,60509,53048],{"class":466},[460,60511,49699],{"class":1353},[460,60513,3754],{"class":466},[460,60515,60516],{"class":462,"line":3568},[460,60517,49716],{"class":942},[460,60519,60520,60522,60524,60526,60528,60530],{"class":462,"line":3577},[460,60521,49721],{"class":466},[460,60523,894],{"class":887},[460,60525,49726],{"class":466},[460,60527,49729],{"class":3380},[460,60529,894],{"class":887},[460,60531,18115],{"class":466},[460,60533,60534,60536,60538,60540],{"class":462,"line":3583},[460,60535,49738],{"class":1353},[460,60537,1357],{"class":466},[460,60539,49743],{"class":900},[460,60541,49746],{"class":466},[460,60543,60544,60546],{"class":462,"line":3616},[460,60545,49751],{"class":1353},[460,60547,49754],{"class":466},[460,60549,60550,60552],{"class":462,"line":3622},[460,60551,49759],{"class":1353},[460,60553,49762],{"class":466},[460,60555,60556,60558],{"class":462,"line":3645},[460,60557,49767],{"class":1353},[460,60559,49770],{"class":466},[460,60561,60562,60564],{"class":462,"line":3651},[460,60563,49775],{"class":1353},[460,60565,49778],{"class":466},[460,60567,60568],{"class":462,"line":3668},[460,60569,1679],{"class":466},[460,60571,60572],{"class":462,"line":3674},[460,60573,49787],{"class":942},[460,60575,60576,60578],{"class":462,"line":3680},[460,60577,20605],{"class":887},[460,60579,49794],{"class":466},[460,60581,60582],{"class":462,"line":3686},[460,60583,522],{"emptyLinePlaceholder":521},[460,60585,60586],{"class":462,"line":3699},[460,60587,49803],{"class":942},[460,60589,60590,60592,60594],{"class":462,"line":3715},[460,60591,48352],{"class":887},[460,60593,49810],{"class":929},[460,60595,49813],{"class":466},[460,60597,60598],{"class":462,"line":3757},[460,60599,49818],{"class":942},[460,60601,60602,60604,60606,60608,60610,60612,60614,60616],{"class":462,"line":3778},[460,60603,49823],{"class":466},[460,60605,48098],{"class":3380},[460,60607,894],{"class":887},[460,60609,2174],{"class":466},[460,60611,5531],{"class":900},[460,60613,3986],{"class":466},[460,60615,918],{"class":900},[460,60617,6311],{"class":466},[460,60619,60620],{"class":462,"line":3812},[460,60621,49842],{"class":942},[460,60623,60624],{"class":462,"line":3830},[460,60625,49847],{"class":942},[460,60627,60628],{"class":462,"line":3855},[460,60629,49852],{"class":942},[460,60631,60632,60634,60636,60638,60640,60642,60644],{"class":462,"line":3861},[460,60633,48132],{"class":466},[460,60635,901],{"class":900},[460,60637,3986],{"class":466},[460,60639,907],{"class":900},[460,60641,3986],{"class":466},[460,60643,901],{"class":900},[460,60645,3754],{"class":466},[460,60647,60648],{"class":462,"line":3867},[460,60649,49873],{"class":942},[460,60651,60652],{"class":462,"line":3876},[460,60653,49878],{"class":942},[460,60655,60656],{"class":462,"line":3881},[460,60657,49883],{"class":942},[460,60659,60660],{"class":462,"line":3886},[460,60661,49888],{"class":942},[460,60663,60664],{"class":462,"line":3891},[460,60665,49893],{"class":942},[460,60667,60668,60670,60672,60674,60676,60678,60680,60682,60684],{"class":462,"line":3900},[460,60669,49899],{"class":466},[460,60671,49902],{"class":1353},[460,60673,49905],{"class":466},[460,60675,49908],{"class":1353},[460,60677,3986],{"class":466},[460,60679,49913],{"class":3380},[460,60681,894],{"class":887},[460,60683,49918],{"class":1353},[460,60685,3754],{"class":466},[460,60687,60688,60690,60692,60694,60696,60698,60700,60702,60704],{"class":462,"line":3909},[460,60689,49899],{"class":466},[460,60691,49902],{"class":1353},[460,60693,49930],{"class":466},[460,60695,49933],{"class":1353},[460,60697,3986],{"class":466},[460,60699,49913],{"class":3380},[460,60701,894],{"class":887},[460,60703,49942],{"class":1353},[460,60705,3754],{"class":466},[460,60707,60708],{"class":462,"line":3914},[460,60709,49950],{"class":942},[460,60711,60712],{"class":462,"line":49896},[460,60713,49956],{"class":466},[460,60715,60716],{"class":462,"line":49923},[460,60717,49962],{"class":942},[460,60719,60720,60722,60724],{"class":462,"line":49947},[460,60721,49968],{"class":466},[460,60723,49971],{"class":1353},[460,60725,3754],{"class":466},[460,60727,60728,60730,60732],{"class":462,"line":49953},[460,60729,49979],{"class":466},[460,60731,49982],{"class":1353},[460,60733,3754],{"class":466},[460,60735,60736],{"class":462,"line":49959},[460,60737,49990],{"class":942},[460,60739,60740,60742,60744,60746,60748,60750,60752],{"class":462,"line":49965},[460,60741,48132],{"class":466},[460,60743,901],{"class":900},[460,60745,3986],{"class":466},[460,60747,907],{"class":900},[460,60749,3986],{"class":466},[460,60751,907],{"class":900},[460,60753,3754],{"class":466},[460,60755,60756,60758,60760,60762,60764,60766,60768,60770,60772],{"class":462,"line":49976},[460,60757,49899],{"class":466},[460,60759,49902],{"class":1353},[460,60761,50017],{"class":466},[460,60763,49908],{"class":1353},[460,60765,3986],{"class":466},[460,60767,49913],{"class":3380},[460,60769,894],{"class":887},[460,60771,50028],{"class":1353},[460,60773,3754],{"class":466},[460,60775,60776,60778,60780,60782,60784,60786,60788,60790,60792],{"class":462,"line":49987},[460,60777,49899],{"class":466},[460,60779,49902],{"class":1353},[460,60781,50040],{"class":466},[460,60783,49933],{"class":1353},[460,60785,3986],{"class":466},[460,60787,49913],{"class":3380},[460,60789,894],{"class":887},[460,60791,50051],{"class":1353},[460,60793,3754],{"class":466},[460,60795,60796],{"class":462,"line":49993},[460,60797,50059],{"class":942},[460,60799,60800],{"class":462,"line":50010},[460,60801,49956],{"class":466},[460,60803,60804,60806,60808],{"class":462,"line":50033},[460,60805,49968],{"class":466},[460,60807,49902],{"class":1353},[460,60809,3754],{"class":466},[460,60811,60812,60814,60816],{"class":462,"line":50056},[460,60813,49979],{"class":466},[460,60815,50081],{"class":1353},[460,60817,3754],{"class":466},[460,60819,60820],{"class":462,"line":50062},[460,60821,50089],{"class":466},[460,60823,60824],{"class":462,"line":50067},[460,60825,522],{"emptyLinePlaceholder":521},[460,60827,60828],{"class":462,"line":50076},[460,60829,50100],{"class":942},[460,60831,60832,60834,60836,60838,60840],{"class":462,"line":50086},[460,60833,18100],{"class":887},[460,60835,47627],{"class":900},[460,60837,19471],{"class":887},[460,60839,47632],{"class":1353},[460,60841,20257],{"class":466},[460,60843,60844],{"class":462,"line":50092},[460,60845,50119],{"class":942},[460,60847,60848,60851,60853],{"class":462,"line":50097},[460,60849,60850],{"class":466},"    GoogLeNet",[460,60852,894],{"class":887},[460,60854,60855],{"class":466},"GoogLeNet(Inception)\n",[460,60857,60858,60860,60862],{"class":462,"line":50103},[460,60859,50136],{"class":466},[460,60861,894],{"class":887},[460,60863,50141],{"class":466},[460,60865,60866,60868,60870,60873,60875,60877,60879],{"class":462,"line":50116},[460,60867,49721],{"class":466},[460,60869,894],{"class":887},[460,60871,60872],{"class":466},"train_model_process(GoogLeNet,train_dataloader,val_dataloader,",[460,60874,50154],{"class":3380},[460,60876,894],{"class":887},[460,60878,17659],{"class":900},[460,60880,3754],{"class":466},[460,60882,60883],{"class":462,"line":50122},[460,60884,50166],{"class":466},[103,60886,60887],{"start":482},[43,60888,56878],{},[451,60890,60892],{"className":46787,"code":60891,"language":46789,"meta":32,"style":32},"import torch\nimport torch.utils.data as Data\nfrom torchvision import transforms\n# 导入数据集\nfrom torchvision.datasets import FashionMNIST\nfrom model import GoogLeNet,Inception\n\n\n# 测试数据处理\ndef test_data_process():\n    test_data=FashionMNIST(root='.\u002Fdata',\n                           train=False,\n                           transform=transforms.Compose([transforms.Resize(size=227),transforms.ToTensor()]),\n                           download=True)\n    test_dataloader=Data.DataLoader(dataset=test_data,\n                                    # 这里是一张一张进行测试\n                                    batch_size=1,\n                                    shuffle=True,\n                                    num_workers=0)\n    return test_dataloader\n\n# 定义模型测试函数\ndef test_model_process(model,test_dataloader):\n    # 将模型放到设备当中，先进行判断\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n\n    # 设置初始化参数\n    test_corrects=0.0\n    test_num=0\n\n    # 进行模型测试\n    # 模型在推理的时候只进行前向传播，不再进行反向传播更新梯度了\n    # 不进行梯度计算，可以节省内存，加快运行速度\n    with torch.no_grad():\n        # 从数据中进行\n        for test_data_x,test_data_y in test_dataloader:\n            test_data_x=test_data_x.to(device)\n            test_data_y=test_data_y.to(device)\n            # 设置为验证模式\n            model.eval()\n            # 前向传播过程，输入为测试数据集,输出为对每个样本的预测值\n            output=model(test_data_x)\n            # 查找每一行中最大值对应的下标\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算正确率\n            # .data表示是一个不带梯度信息的tensor\n            # 如果预测正确，则准确度test_corrects加1\n            test_corrects+=torch.sum(pre_lab==test_data_y.data)\n            # 将所有的测试样本进行累计\n            test_num+=test_data_x.size(0)\n\n        # 计算准确度\n        test_acc=test_corrects.double().item()\u002Ftest_num\n        # .item()的作用是：把只含1个数字的 Tensor 转成 Python 的数字\n        print(\"测试的准确率：\",test_acc)\n\n# 实现模型的测试功能\nif __name__==\"__main__\":\n    # 加载模型\n    model=GoogLeNet(Inception)\n    # 调用训练好的权重，把之前训练好、保存下来的模型参数重新装回模型里\n    # 使用torch中的load函数加载权重，利用model.load_state_dict将参数加回到模型当中\n    model.load_state_dict(torch.load('best_model.pth'))\n    # 数据加载\n    test_dataloader=test_data_process()\n    # 加载模型测试的函数\n    test_model_process(model,test_dataloader)\n\n    # 验证集推理实现：\n    # 加载数据加载的更详细一些\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n    # 设置类别，这样预测值就不展示数字，就直接展示这个种类了\n    # 顺序不可改变\n    classes=['T-shirt\u002Ftop','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']\n    with torch.no_grad():\n        # 将数据和标签都放到设备当中\n        for b_x,b_y in test_dataloader:\n            b_x=b_x.to(device)\n            b_y=b_y.to(device)\n\n            # 设置模型为验证模式\n            model.eval()\n            # 模型推理结果\n            output=model(b_x)\n            # 获取最大下标，最大下标就是类别号\n            pre_lab=torch.argmax(output,dim=1)\n            # 取出张量中的数值\n            result=pre_lab.item()\n            label=b_y.item()\n            print(\"预测值：\",classes[result],\"------\",\"真实值：\",classes[label])\n",[457,60893,60894,60900,60910,60920,60924,60934,60945,60949,60953,60957,60965,60981,60991,61007,61017,61031,61035,61045,61055,61065,61071,61075,61079,61087,61091,61107,61115,61119,61123,61131,61139,61143,61147,61151,61155,61161,61165,61175,61183,61191,61195,61199,61203,61211,61215,61231,61235,61239,61243,61255,61259,61271,61275,61279,61291,61295,61305,61309,61313,61325,61329,61337,61341,61345,61353,61357,61365,61369,61373,61377,61381,61385,61401,61409,61413,61417,61465,61471,61475,61485,61493,61501,61505,61509,61513,61517,61525,61529,61545,61549,61557,61565],{"__ignoreMap":32},[460,60895,60896,60898],{"class":462,"line":463},[460,60897,46801],{"class":887},[460,60899,46804],{"class":466},[460,60901,60902,60904,60906,60908],{"class":462,"line":476},[460,60903,46801],{"class":887},[460,60905,47822],{"class":466},[460,60907,47790],{"class":887},[460,60909,47827],{"class":466},[460,60911,60912,60914,60916,60918],{"class":462,"line":482},[460,60913,47145],{"class":887},[460,60915,47805],{"class":466},[460,60917,46801],{"class":887},[460,60919,47810],{"class":466},[460,60921,60922],{"class":462,"line":488},[460,60923,50227],{"class":942},[460,60925,60926,60928,60930,60932],{"class":462,"line":494},[460,60927,47145],{"class":887},[460,60929,47775],{"class":466},[460,60931,46801],{"class":887},[460,60933,47780],{"class":466},[460,60935,60936,60938,60940,60942],{"class":462,"line":500},[460,60937,47145],{"class":887},[460,60939,48319],{"class":466},[460,60941,46801],{"class":887},[460,60943,60944],{"class":466}," GoogLeNet,Inception\n",[460,60946,60947],{"class":462,"line":506},[460,60948,522],{"emptyLinePlaceholder":521},[460,60950,60951],{"class":462,"line":512},[460,60952,522],{"emptyLinePlaceholder":521},[460,60954,60955],{"class":462,"line":518},[460,60956,50256],{"class":942},[460,60958,60959,60961,60963],{"class":462,"line":525},[460,60960,48352],{"class":887},[460,60962,50263],{"class":929},[460,60964,48358],{"class":466},[460,60966,60967,60969,60971,60973,60975,60977,60979],{"class":462,"line":531},[460,60968,50270],{"class":466},[460,60970,894],{"class":887},[460,60972,47862],{"class":466},[460,60974,47865],{"class":3380},[460,60976,894],{"class":887},[460,60978,47870],{"class":1353},[460,60980,1363],{"class":466},[460,60982,60983,60985,60987,60989],{"class":462,"line":537},[460,60984,50287],{"class":3380},[460,60986,894],{"class":887},[460,60988,50292],{"class":900},[460,60990,1363],{"class":466},[460,60992,60993,60995,60997,60999,61001,61003,61005],{"class":462,"line":543},[460,60994,50299],{"class":3380},[460,60996,894],{"class":887},[460,60998,47899],{"class":466},[460,61000,47902],{"class":3380},[460,61002,894],{"class":887},[460,61004,51754],{"class":900},[460,61006,47910],{"class":466},[460,61008,61009,61011,61013,61015],{"class":462,"line":549},[460,61010,50316],{"class":3380},[460,61012,894],{"class":887},[460,61014,47882],{"class":900},[460,61016,3754],{"class":466},[460,61018,61019,61021,61023,61025,61027,61029],{"class":462,"line":555},[460,61020,50327],{"class":466},[460,61022,894],{"class":887},[460,61024,47940],{"class":466},[460,61026,3635],{"class":3380},[460,61028,894],{"class":887},[460,61030,50338],{"class":466},[460,61032,61033],{"class":462,"line":560},[460,61034,50343],{"class":942},[460,61036,61037,61039,61041,61043],{"class":462,"line":566},[460,61038,50348],{"class":3380},[460,61040,894],{"class":887},[460,61042,901],{"class":900},[460,61044,1363],{"class":466},[460,61046,61047,61049,61051,61053],{"class":462,"line":572},[460,61048,50359],{"class":3380},[460,61050,894],{"class":887},[460,61052,47882],{"class":900},[460,61054,1363],{"class":466},[460,61056,61057,61059,61061,61063],{"class":462,"line":578},[460,61058,50370],{"class":3380},[460,61060,894],{"class":887},[460,61062,936],{"class":900},[460,61064,3754],{"class":466},[460,61066,61067,61069],{"class":462,"line":812},[460,61068,20605],{"class":887},[460,61070,50383],{"class":466},[460,61072,61073],{"class":462,"line":818},[460,61074,522],{"emptyLinePlaceholder":521},[460,61076,61077],{"class":462,"line":824},[460,61078,50392],{"class":942},[460,61080,61081,61083,61085],{"class":462,"line":2074},[460,61082,48352],{"class":887},[460,61084,50399],{"class":929},[460,61086,50402],{"class":466},[460,61088,61089],{"class":462,"line":2088},[460,61090,50407],{"class":942},[460,61092,61093,61095,61097,61099,61101,61103,61105],{"class":462,"line":2103},[460,61094,47644],{"class":466},[460,61096,894],{"class":887},[460,61098,47651],{"class":1353},[460,61100,3766],{"class":887},[460,61102,47656],{"class":466},[460,61104,3763],{"class":887},[460,61106,50424],{"class":1353},[460,61108,61109,61111,61113],{"class":462,"line":2122},[460,61110,47696],{"class":466},[460,61112,894],{"class":887},[460,61114,48694],{"class":466},[460,61116,61117],{"class":462,"line":2144},[460,61118,522],{"emptyLinePlaceholder":521},[460,61120,61121],{"class":462,"line":2158},[460,61122,50441],{"class":942},[460,61124,61125,61127,61129],{"class":462,"line":2163},[460,61126,50446],{"class":466},[460,61128,894],{"class":887},[460,61130,48747],{"class":900},[460,61132,61133,61135,61137],{"class":462,"line":2168},[460,61134,50455],{"class":466},[460,61136,894],{"class":887},[460,61138,19606],{"class":900},[460,61140,61141],{"class":462,"line":2183},[460,61142,522],{"emptyLinePlaceholder":521},[460,61144,61145],{"class":462,"line":2194},[460,61146,50468],{"class":942},[460,61148,61149],{"class":462,"line":2199},[460,61150,50473],{"class":942},[460,61152,61153],{"class":462,"line":2204},[460,61154,50478],{"class":942},[460,61156,61157,61159],{"class":462,"line":2212},[460,61158,50483],{"class":887},[460,61160,49259],{"class":466},[460,61162,61163],{"class":462,"line":2257},[460,61164,50490],{"class":942},[460,61166,61167,61169,61171,61173],{"class":462,"line":2285},[460,61168,19924],{"class":887},[460,61170,50497],{"class":466},[460,61172,11713],{"class":887},[460,61174,50502],{"class":466},[460,61176,61177,61179,61181],{"class":462,"line":2298},[460,61178,50507],{"class":466},[460,61180,894],{"class":887},[460,61182,50512],{"class":466},[460,61184,61185,61187,61189],{"class":462,"line":2303},[460,61186,50517],{"class":466},[460,61188,894],{"class":887},[460,61190,50522],{"class":466},[460,61192,61193],{"class":462,"line":2308},[460,61194,50527],{"class":942},[460,61196,61197],{"class":462,"line":2318},[460,61198,49251],{"class":466},[460,61200,61201],{"class":462,"line":2333},[460,61202,50536],{"class":942},[460,61204,61205,61207,61209],{"class":462,"line":2338},[460,61206,49060],{"class":466},[460,61208,894],{"class":887},[460,61210,50545],{"class":466},[460,61212,61213],{"class":462,"line":2343},[460,61214,50550],{"class":942},[460,61216,61217,61219,61221,61223,61225,61227,61229],{"class":462,"line":2353},[460,61218,49075],{"class":466},[460,61220,894],{"class":887},[460,61222,49080],{"class":466},[460,61224,49083],{"class":3380},[460,61226,894],{"class":887},[460,61228,901],{"class":900},[460,61230,3754],{"class":466},[460,61232,61233],{"class":462,"line":2368},[460,61234,50571],{"class":942},[460,61236,61237],{"class":462,"line":2381},[460,61238,50576],{"class":942},[460,61240,61241],{"class":462,"line":2394},[460,61242,50581],{"class":942},[460,61244,61245,61247,61249,61251,61253],{"class":462,"line":2399},[460,61246,50586],{"class":466},[460,61248,3467],{"class":887},[460,61250,49173],{"class":466},[460,61252,19471],{"class":887},[460,61254,50595],{"class":466},[460,61256,61257],{"class":462,"line":2404},[460,61258,50600],{"class":942},[460,61260,61261,61263,61265,61267,61269],{"class":462,"line":2414},[460,61262,50605],{"class":466},[460,61264,3467],{"class":887},[460,61266,50610],{"class":466},[460,61268,936],{"class":900},[460,61270,3754],{"class":466},[460,61272,61273],{"class":462,"line":2428},[460,61274,522],{"emptyLinePlaceholder":521},[460,61276,61277],{"class":462,"line":2440},[460,61278,50623],{"class":942},[460,61280,61281,61283,61285,61287,61289],{"class":462,"line":2445},[460,61282,50628],{"class":466},[460,61284,894],{"class":887},[460,61286,50633],{"class":466},[460,61288,8331],{"class":887},[460,61290,50638],{"class":466},[460,61292,61293],{"class":462,"line":2450},[460,61294,50643],{"class":942},[460,61296,61297,61299,61301,61303],{"class":462,"line":2460},[460,61298,48856],{"class":900},[460,61300,2174],{"class":466},[460,61302,50652],{"class":1353},[460,61304,50655],{"class":466},[460,61306,61307],{"class":462,"line":2473},[460,61308,522],{"emptyLinePlaceholder":521},[460,61310,61311],{"class":462,"line":2487},[460,61312,50664],{"class":942},[460,61314,61315,61317,61319,61321,61323],{"class":462,"line":2492},[460,61316,18100],{"class":887},[460,61318,47627],{"class":900},[460,61320,19471],{"class":887},[460,61322,47632],{"class":1353},[460,61324,20257],{"class":466},[460,61326,61327],{"class":462,"line":2497},[460,61328,50681],{"class":942},[460,61330,61331,61333,61335],{"class":462,"line":2505},[460,61332,47696],{"class":466},[460,61334,894],{"class":887},[460,61336,60855],{"class":466},[460,61338,61339],{"class":462,"line":2516},[460,61340,50694],{"class":942},[460,61342,61343],{"class":462,"line":2529},[460,61344,50699],{"class":942},[460,61346,61347,61349,61351],{"class":462,"line":2542},[460,61348,50704],{"class":466},[460,61350,50707],{"class":1353},[460,61352,6311],{"class":466},[460,61354,61355],{"class":462,"line":2559},[460,61356,50714],{"class":942},[460,61358,61359,61361,61363],{"class":462,"line":2564},[460,61360,50327],{"class":466},[460,61362,894],{"class":887},[460,61364,50723],{"class":466},[460,61366,61367],{"class":462,"line":2569},[460,61368,50728],{"class":942},[460,61370,61371],{"class":462,"line":2579},[460,61372,50733],{"class":466},[460,61374,61375],{"class":462,"line":2597},[460,61376,522],{"emptyLinePlaceholder":521},[460,61378,61379],{"class":462,"line":2610},[460,61380,50742],{"class":942},[460,61382,61383],{"class":462,"line":2621},[460,61384,50747],{"class":942},[460,61386,61387,61389,61391,61393,61395,61397,61399],{"class":462,"line":2634},[460,61388,47644],{"class":466},[460,61390,894],{"class":887},[460,61392,47651],{"class":1353},[460,61394,3766],{"class":887},[460,61396,47656],{"class":466},[460,61398,3763],{"class":887},[460,61400,50424],{"class":1353},[460,61402,61403,61405,61407],{"class":462,"line":2648},[460,61404,47696],{"class":466},[460,61406,894],{"class":887},[460,61408,48694],{"class":466},[460,61410,61411],{"class":462,"line":2653},[460,61412,50776],{"class":942},[460,61414,61415],{"class":462,"line":2658},[460,61416,50781],{"class":942},[460,61418,61419,61421,61423,61425,61427,61429,61431,61433,61435,61437,61439,61441,61443,61445,61447,61449,61451,61453,61455,61457,61459,61461,61463],{"class":462,"line":2670},[460,61420,50786],{"class":466},[460,61422,894],{"class":887},[460,61424,17601],{"class":466},[460,61426,50793],{"class":1353},[460,61428,3986],{"class":466},[460,61430,50798],{"class":1353},[460,61432,3986],{"class":466},[460,61434,50803],{"class":1353},[460,61436,3986],{"class":466},[460,61438,50808],{"class":1353},[460,61440,3986],{"class":466},[460,61442,50813],{"class":1353},[460,61444,3986],{"class":466},[460,61446,50818],{"class":1353},[460,61448,3986],{"class":466},[460,61450,50823],{"class":1353},[460,61452,3986],{"class":466},[460,61454,50828],{"class":1353},[460,61456,3986],{"class":466},[460,61458,50833],{"class":1353},[460,61460,3986],{"class":466},[460,61462,50838],{"class":1353},[460,61464,13307],{"class":466},[460,61466,61467,61469],{"class":462,"line":2683},[460,61468,50483],{"class":887},[460,61470,49259],{"class":466},[460,61472,61473],{"class":462,"line":2695},[460,61474,50851],{"class":942},[460,61476,61477,61479,61481,61483],{"class":462,"line":2700},[460,61478,19924],{"class":887},[460,61480,50858],{"class":466},[460,61482,11713],{"class":887},[460,61484,50502],{"class":466},[460,61486,61487,61489,61491],{"class":462,"line":2709},[460,61488,49015],{"class":466},[460,61490,894],{"class":887},[460,61492,49020],{"class":466},[460,61494,61495,61497,61499],{"class":462,"line":2718},[460,61496,49030],{"class":466},[460,61498,894],{"class":887},[460,61500,49035],{"class":466},[460,61502,61503],{"class":462,"line":2723},[460,61504,522],{"emptyLinePlaceholder":521},[460,61506,61507],{"class":462,"line":2732},[460,61508,50887],{"class":942},[460,61510,61511],{"class":462,"line":2750},[460,61512,49251],{"class":466},[460,61514,61515],{"class":462,"line":2782},[460,61516,50896],{"class":942},[460,61518,61519,61521,61523],{"class":462,"line":2809},[460,61520,49060],{"class":466},[460,61522,894],{"class":887},[460,61524,49065],{"class":466},[460,61526,61527],{"class":462,"line":2836},[460,61528,50909],{"class":942},[460,61530,61531,61533,61535,61537,61539,61541,61543],{"class":462,"line":2856},[460,61532,49075],{"class":466},[460,61534,894],{"class":887},[460,61536,49080],{"class":466},[460,61538,49083],{"class":3380},[460,61540,894],{"class":887},[460,61542,901],{"class":900},[460,61544,3754],{"class":466},[460,61546,61547],{"class":462,"line":2865},[460,61548,50930],{"class":942},[460,61550,61551,61553,61555],{"class":462,"line":2881},[460,61552,50935],{"class":466},[460,61554,894],{"class":887},[460,61556,50940],{"class":466},[460,61558,61559,61561,61563],{"class":462,"line":2887},[460,61560,50945],{"class":466},[460,61562,894],{"class":887},[460,61564,50950],{"class":466},[460,61566,61567,61569,61571,61573,61575,61577,61579,61581],{"class":462,"line":2893},[460,61568,50955],{"class":900},[460,61570,2174],{"class":466},[460,61572,50960],{"class":1353},[460,61574,50963],{"class":466},[460,61576,50966],{"class":1353},[460,61578,3986],{"class":466},[460,61580,50971],{"class":1353},[460,61582,50974],{"class":466},[23,61584,61586],{"id":61585},"_24训练自己的数据集","2.4.训练自己的数据集",[14,61588,61589],{},"猫狗分类任务",[14,61591,61592],{},"划分数据集和验证集",[451,61594,61596],{"className":46787,"code":61595,"language":46789,"meta":32,"style":32},"# 创建脚本，用于划分数据集和验证集\nimport os\n# shutil 是 Python 标准库里的一个模块，主要用于高级文件操作，比如复制文件、移动文件、删除目录等\nfrom shutil import copy\nimport random\n\ndef mkfile(file):\n    if not os.path.exists(file):\n        os.makedirs(file)\n\n# 获取data文件夹下所有文件夹名（即需要分类的类名）\nfile_path='data_cat_dog'\nflower_class=[cla for cla in os.listdir(file_path)]\n\n# 创建训练集train文件夹\nmkfile('data\u002Ftrain')\nfor cla in flower_class:\n    mkfile('data\u002Ftrain\u002F'+cla)\n\n# 创建验证集val文件夹\nmkfile('data\u002Ftest')\nfor cla in flower_class:\n    mkfile('data\u002Ftest\u002F'+cla)\n\n# 划分比例，训练集：测试集=9：1\nsplit_rate=0.1\n\n# 遍历所有类别的全部图像并按比例分成训练集和验证集\n# cla_path：当前类别的原始图片路径\n# images：当前类别下所有图片的文件名列表\n# num：该类别图片总数\n# eval_index：从 images 随机抽取 10% 的图片作为验证集\n\nfor cla in flower_class:\n    cla_path = file_path + '\u002F' + cla + '\u002F'  # 某一类别的子目录\n    images = os.listdir(cla_path)  # iamges 列表存储了该目录下所有图像的名称\n    num = len(images)\n    eval_index = random.sample(images, k=int(num * split_rate))  # 从images列表中随机抽取 k 个图像名称\n    # 遍历该类别下的所有图片\n    # 如果图片在eval_index中，则复制到验证集对应目录，否则复制到训练集对应目录\n    for index, image in enumerate(images):\n        # eval_index 中保存验证集val的图像名称\n        if image in eval_index:\n            image_path = cla_path + image\n            new_path = 'data\u002Ftest\u002F' + cla\n            copy(image_path, new_path)  # 将选中的图像复制到新路径\n\n        # 其余的图像保存在训练集train中\n        else:\n            image_path = cla_path + image\n            new_path = 'data\u002Ftrain\u002F' + cla\n            copy(image_path, new_path)\n            # 打印进度条信息\n            # \\r用于在同一行刷新。end = \"\"避免换行，每次刷新同一行显示进度\n        print(\"\\r[{}] processing [{}\u002F{}]\".format(cla, index + 1, num), end=\"\")  # processing bar\n    print()\n\nprint(\"processing done!\")\n",[457,61597,61598,61603,61610,61615,61626,61633,61637,61647,61661,61670,61674,61679,61689,61709,61713,61718,61728,61739,61752,61756,61761,61770,61780,61791,61795,61800,61810,61814,61819,61824,61829,61834,61839,61843,61853,61880,61893,61905,61932,61937,61942,61956,61961,61973,61988,62003,62011,62015,62020,62026,62038,62051,62056,62061,62066,62116,62122,62126],{"__ignoreMap":32},[460,61599,61600],{"class":462,"line":463},[460,61601,61602],{"class":942},"# 创建脚本，用于划分数据集和验证集\n",[460,61604,61605,61607],{"class":462,"line":476},[460,61606,46801],{"class":887},[460,61608,61609],{"class":466}," os\n",[460,61611,61612],{"class":462,"line":482},[460,61613,61614],{"class":942},"# shutil 是 Python 标准库里的一个模块，主要用于高级文件操作，比如复制文件、移动文件、删除目录等\n",[460,61616,61617,61619,61622,61624],{"class":462,"line":488},[460,61618,47145],{"class":887},[460,61620,61621],{"class":466}," shutil ",[460,61623,46801],{"class":887},[460,61625,48227],{"class":466},[460,61627,61628,61630],{"class":462,"line":494},[460,61629,46801],{"class":887},[460,61631,61632],{"class":466}," random\n",[460,61634,61635],{"class":462,"line":500},[460,61636,522],{"emptyLinePlaceholder":521},[460,61638,61639,61641,61644],{"class":462,"line":506},[460,61640,48352],{"class":887},[460,61642,61643],{"class":929}," mkfile",[460,61645,61646],{"class":466},"(file):\n",[460,61648,61649,61651,61653,61656,61659],{"class":462,"line":512},[460,61650,19622],{"class":887},[460,61652,55235],{"class":887},[460,61654,61655],{"class":466}," os.path.exists(",[460,61657,61658],{"class":3380},"file",[460,61660,47194],{"class":466},[460,61662,61663,61666,61668],{"class":462,"line":518},[460,61664,61665],{"class":466},"        os.makedirs(",[460,61667,61658],{"class":3380},[460,61669,3754],{"class":466},[460,61671,61672],{"class":462,"line":525},[460,61673,522],{"emptyLinePlaceholder":521},[460,61675,61676],{"class":462,"line":531},[460,61677,61678],{"class":942},"# 获取data文件夹下所有文件夹名（即需要分类的类名）\n",[460,61680,61681,61684,61686],{"class":462,"line":537},[460,61682,61683],{"class":466},"file_path",[460,61685,894],{"class":887},[460,61687,61688],{"class":1353},"'data_cat_dog'\n",[460,61690,61691,61694,61696,61699,61701,61704,61706],{"class":462,"line":543},[460,61692,61693],{"class":466},"flower_class",[460,61695,894],{"class":887},[460,61697,61698],{"class":466},"[cla ",[460,61700,19547],{"class":887},[460,61702,61703],{"class":466}," cla ",[460,61705,11713],{"class":887},[460,61707,61708],{"class":466}," os.listdir(file_path)]\n",[460,61710,61711],{"class":462,"line":549},[460,61712,522],{"emptyLinePlaceholder":521},[460,61714,61715],{"class":462,"line":555},[460,61716,61717],{"class":942},"# 创建训练集train文件夹\n",[460,61719,61720,61723,61726],{"class":462,"line":560},[460,61721,61722],{"class":466},"mkfile(",[460,61724,61725],{"class":1353},"'data\u002Ftrain'",[460,61727,3754],{"class":466},[460,61729,61730,61732,61734,61736],{"class":462,"line":566},[460,61731,19547],{"class":887},[460,61733,61703],{"class":466},[460,61735,11713],{"class":887},[460,61737,61738],{"class":466}," flower_class:\n",[460,61740,61741,61744,61747,61749],{"class":462,"line":572},[460,61742,61743],{"class":466},"    mkfile(",[460,61745,61746],{"class":1353},"'data\u002Ftrain\u002F'",[460,61748,8495],{"class":887},[460,61750,61751],{"class":466},"cla)\n",[460,61753,61754],{"class":462,"line":578},[460,61755,522],{"emptyLinePlaceholder":521},[460,61757,61758],{"class":462,"line":812},[460,61759,61760],{"class":942},"# 创建验证集val文件夹\n",[460,61762,61763,61765,61768],{"class":462,"line":818},[460,61764,61722],{"class":466},[460,61766,61767],{"class":1353},"'data\u002Ftest'",[460,61769,3754],{"class":466},[460,61771,61772,61774,61776,61778],{"class":462,"line":824},[460,61773,19547],{"class":887},[460,61775,61703],{"class":466},[460,61777,11713],{"class":887},[460,61779,61738],{"class":466},[460,61781,61782,61784,61787,61789],{"class":462,"line":2074},[460,61783,61743],{"class":466},[460,61785,61786],{"class":1353},"'data\u002Ftest\u002F'",[460,61788,8495],{"class":887},[460,61790,61751],{"class":466},[460,61792,61793],{"class":462,"line":2088},[460,61794,522],{"emptyLinePlaceholder":521},[460,61796,61797],{"class":462,"line":2103},[460,61798,61799],{"class":942},"# 划分比例，训练集：测试集=9：1\n",[460,61801,61802,61805,61807],{"class":462,"line":2122},[460,61803,61804],{"class":466},"split_rate",[460,61806,894],{"class":887},[460,61808,61809],{"class":900},"0.1\n",[460,61811,61812],{"class":462,"line":2144},[460,61813,522],{"emptyLinePlaceholder":521},[460,61815,61816],{"class":462,"line":2158},[460,61817,61818],{"class":942},"# 遍历所有类别的全部图像并按比例分成训练集和验证集\n",[460,61820,61821],{"class":462,"line":2163},[460,61822,61823],{"class":942},"# cla_path：当前类别的原始图片路径\n",[460,61825,61826],{"class":462,"line":2168},[460,61827,61828],{"class":942},"# images：当前类别下所有图片的文件名列表\n",[460,61830,61831],{"class":462,"line":2183},[460,61832,61833],{"class":942},"# num：该类别图片总数\n",[460,61835,61836],{"class":462,"line":2194},[460,61837,61838],{"class":942},"# eval_index：从 images 随机抽取 10% 的图片作为验证集\n",[460,61840,61841],{"class":462,"line":2199},[460,61842,522],{"emptyLinePlaceholder":521},[460,61844,61845,61847,61849,61851],{"class":462,"line":2204},[460,61846,19547],{"class":887},[460,61848,61703],{"class":466},[460,61850,11713],{"class":887},[460,61852,61738],{"class":466},[460,61854,61855,61858,61860,61863,61865,61868,61871,61873,61875,61877],{"class":462,"line":2212},[460,61856,61857],{"class":466},"    cla_path ",[460,61859,894],{"class":887},[460,61861,61862],{"class":466}," file_path ",[460,61864,8495],{"class":887},[460,61866,61867],{"class":1353}," '\u002F'",[460,61869,61870],{"class":887}," +",[460,61872,61703],{"class":466},[460,61874,8495],{"class":887},[460,61876,61867],{"class":1353},[460,61878,61879],{"class":942},"  # 某一类别的子目录\n",[460,61881,61882,61885,61887,61890],{"class":462,"line":2257},[460,61883,61884],{"class":466},"    images ",[460,61886,894],{"class":887},[460,61888,61889],{"class":466}," os.listdir(cla_path)  ",[460,61891,61892],{"class":942},"# iamges 列表存储了该目录下所有图像的名称\n",[460,61894,61895,61898,61900,61902],{"class":462,"line":2285},[460,61896,61897],{"class":466},"    num ",[460,61899,894],{"class":887},[460,61901,23829],{"class":900},[460,61903,61904],{"class":466},"(images)\n",[460,61906,61907,61910,61912,61915,61917,61919,61921,61924,61926,61929],{"class":462,"line":2298},[460,61908,61909],{"class":466},"    eval_index ",[460,61911,894],{"class":887},[460,61913,61914],{"class":466}," random.sample(images, ",[460,61916,17222],{"class":3380},[460,61918,894],{"class":887},[460,61920,16759],{"class":900},[460,61922,61923],{"class":466},"(num ",[460,61925,8320],{"class":887},[460,61927,61928],{"class":466}," split_rate))  ",[460,61930,61931],{"class":942},"# 从images列表中随机抽取 k 个图像名称\n",[460,61933,61934],{"class":462,"line":2303},[460,61935,61936],{"class":942},"    # 遍历该类别下的所有图片\n",[460,61938,61939],{"class":462,"line":2308},[460,61940,61941],{"class":942},"    # 如果图片在eval_index中，则复制到验证集对应目录，否则复制到训练集对应目录\n",[460,61943,61944,61946,61949,61951,61953],{"class":462,"line":2318},[460,61945,19722],{"class":887},[460,61947,61948],{"class":466}," index, image ",[460,61950,11713],{"class":887},[460,61952,48011],{"class":900},[460,61954,61955],{"class":466},"(images):\n",[460,61957,61958],{"class":462,"line":2333},[460,61959,61960],{"class":942},"        # eval_index 中保存验证集val的图像名称\n",[460,61962,61963,61965,61968,61970],{"class":462,"line":2338},[460,61964,3702],{"class":887},[460,61966,61967],{"class":466}," image ",[460,61969,11713],{"class":887},[460,61971,61972],{"class":466}," eval_index:\n",[460,61974,61975,61978,61980,61983,61985],{"class":462,"line":2343},[460,61976,61977],{"class":466},"            image_path ",[460,61979,894],{"class":887},[460,61981,61982],{"class":466}," cla_path ",[460,61984,8495],{"class":887},[460,61986,61987],{"class":466}," image\n",[460,61989,61990,61993,61995,61998,62000],{"class":462,"line":2353},[460,61991,61992],{"class":466},"            new_path ",[460,61994,894],{"class":887},[460,61996,61997],{"class":1353}," 'data\u002Ftest\u002F'",[460,61999,61870],{"class":887},[460,62001,62002],{"class":466}," cla\n",[460,62004,62005,62008],{"class":462,"line":2368},[460,62006,62007],{"class":466},"            copy(image_path, new_path)  ",[460,62009,62010],{"class":942},"# 将选中的图像复制到新路径\n",[460,62012,62013],{"class":462,"line":2381},[460,62014,522],{"emptyLinePlaceholder":521},[460,62016,62017],{"class":462,"line":2394},[460,62018,62019],{"class":942},"        # 其余的图像保存在训练集train中\n",[460,62021,62022,62024],{"class":462,"line":2399},[460,62023,19065],{"class":887},[460,62025,20257],{"class":466},[460,62027,62028,62030,62032,62034,62036],{"class":462,"line":2404},[460,62029,61977],{"class":466},[460,62031,894],{"class":887},[460,62033,61982],{"class":466},[460,62035,8495],{"class":887},[460,62037,61987],{"class":466},[460,62039,62040,62042,62044,62047,62049],{"class":462,"line":2414},[460,62041,61992],{"class":466},[460,62043,894],{"class":887},[460,62045,62046],{"class":1353}," 'data\u002Ftrain\u002F'",[460,62048,61870],{"class":887},[460,62050,62002],{"class":466},[460,62052,62053],{"class":462,"line":2428},[460,62054,62055],{"class":466},"            copy(image_path, new_path)\n",[460,62057,62058],{"class":462,"line":2440},[460,62059,62060],{"class":942},"            # 打印进度条信息\n",[460,62062,62063],{"class":462,"line":2445},[460,62064,62065],{"class":942},"            # \\r用于在同一行刷新。end = \"\"避免换行，每次刷新同一行显示进度\n",[460,62067,62068,62070,62072,62074,62077,62079,62081,62084,62086,62088,62090,62093,62096,62098,62100,62103,62106,62108,62110,62113],{"class":462,"line":2450},[460,62069,48856],{"class":900},[460,62071,2174],{"class":466},[460,62073,16993],{"class":1353},[460,62075,62076],{"class":900},"\\r",[460,62078,17601],{"class":1353},[460,62080,48864],{"class":900},[460,62082,62083],{"class":1353},"] processing [",[460,62085,48864],{"class":900},[460,62087,8331],{"class":1353},[460,62089,48864],{"class":900},[460,62091,62092],{"class":1353},"]\"",[460,62094,62095],{"class":466},".format(cla, index ",[460,62097,8495],{"class":887},[460,62099,1400],{"class":900},[460,62101,62102],{"class":466},", num), ",[460,62104,62105],{"class":3380},"end",[460,62107,894],{"class":887},[460,62109,6606],{"class":1353},[460,62111,62112],{"class":466},")  ",[460,62114,62115],{"class":942},"# processing bar\n",[460,62117,62118,62120],{"class":462,"line":2460},[460,62119,47706],{"class":900},[460,62121,10758],{"class":466},[460,62123,62124],{"class":462,"line":2473},[460,62125,522],{"emptyLinePlaceholder":521},[460,62127,62128,62130,62132,62135],{"class":462,"line":2487},[460,62129,46824],{"class":900},[460,62131,2174],{"class":466},[460,62133,62134],{"class":1353},"\"processing done!\"",[460,62136,3754],{"class":466},[14,62138,62139],{},"这里使用的是GoogLeNet模型来实现猫狗分类的",[115,62141,62143],{"id":62142},"_242模型代码","2.4.2.模型代码",[14,62145,62146],{},"这里数据集中彩色图片，是三通道的数据，所以将模型中的输入通道改为3",[451,62148,62150],{"className":46787,"code":62149,"language":46789,"meta":32,"style":32},"import torch\nfrom torch import nn\nfrom torchsummary import summary\n\nclass Inception(nn.Module):\n    def __init__(self,in_channels,c1,c2,c3,c4):\n        super(Inception,self).__init__()\n        self.ReLu=nn.ReLU()\n        # 路线1：定义1*1卷积\n        self.p1_1=nn.Conv2d(in_channels=in_channels,out_channels=c1,kernel_size=1)\n        # 路线2：定义1*1卷积和3*3\n        self.p2_1=nn.Conv2d(in_channels=in_channels,out_channels=c2[0],kernel_size=1)\n        self.p2_2=nn.Conv2d(in_channels=c2[0],out_channels=c2[1],kernel_size=3,padding=1)\n        # 路线3：定义1*1卷积和5*5\n        self.p3_1=nn.Conv2d(in_channels=in_channels,out_channels=c3[0],kernel_size=1)\n        self.p3_2=nn.Conv2d(in_channels=c3[0],out_channels=c3[1],kernel_size=5,padding=2)\n        # 路线4：定义3*3最大池化和1*1卷积\n        # 最大池化如果不写步幅的话，默认步幅等于卷积核大小\n        self.p4_1=nn.MaxPool2d(kernel_size=3,stride=1,padding=1)\n        self.p4_2=nn.Conv2d(in_channels=in_channels,out_channels=c4,kernel_size=1)\n\n    def forward(self,x):\n        p1=self.ReLu(self.p1_1(x))\n        p2=self.ReLu(self.p2_2(self.ReLu(self.p2_1(x))))\n        p3=self.ReLu(self.p3_2(self.ReLu(self.p3_1(x))))\n        p4=self.ReLu(self.p4_2(self.p4_1(x)))\n        # 在通道维度上连结输出    .cat()函数用于将多个张量在指定维度上进行连接\n        return torch.cat((p1,p2,p3,p4),dim=1)\n\n# 搭建GoogLeNet网络\nclass GoogLeNet(nn.Module):\n    # 必须把Inception导入到里边\n    def __init__(self,Inception):\n        super(GoogLeNet,self).__init__()\n        self.b1=nn.Sequential(\n            nn.Conv2d(in_channels=3,out_channels=64,kernel_size=7,stride=2,padding=3),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=3,stride=2,padding=1)\n        )\n        self.b2=nn.Sequential(\n            nn.Conv2d(in_channels=64,out_channels=64,kernel_size=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=64,out_channels=192,kernel_size=3,padding=1),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=3,stride=2,padding=1)\n        )\n        self.b3=nn.Sequential(\n            Inception(192,64,(96,128),(16,32),32),\n            Inception(256,128,(128,192),(32,96),64),\n            nn.MaxPool2d(kernel_size=3,stride=2,padding=1)\n        )\n        self.b4=nn.Sequential(\n            Inception(480,192,(96,208),(16,48),64),\n            Inception(512,160,(112,224),(24,64),64),\n            Inception(512,128,(128,256),(24,64),64),\n            Inception(512,112,(128,288),(32,64),64),\n            Inception(528,256,(160,320),(32,128),128),\n            nn.MaxPool2d(kernel_size=3,stride=2,padding=1)\n        )\n        self.b5=nn.Sequential(\n            Inception(832,256,(160,320),(32,128),128),\n            Inception(832,384,(192,384),(48,128),128),\n            nn.AdaptiveAvgPool2d((1,1)),\n            nn.Flatten(),\n            nn.Linear(1024,2)\n        )\n        # 对模型参数初始化\n        for m in self.modules():\n            if isinstance(m,nn.Conv2d):\n                nn.init.kaiming_normal_(m.weight,mode='fan_out',nonlinearity='relu')\n                # ① m.weight要初始化的权重（比如Conv2d或Linear的权重矩阵）。\n                # ② mode = 'fan_out'决定使用的fan值：\n                # fan_in：输入通道数 × kernel大小（用于保持前向传播稳定）\n                # fan_out：输出通道数 × kernel大小（用于保持反向传播稳定）\n                # fan_out常用于残差网络ResNet，因为让反向传播更平稳。\n                # ③ nonlinearity = 'relu'告诉PyTorch你后面用的是ReLU，它会自动使用ReLU对应的gain系数\n                if m.bias is not None:\n                    nn.init.constant_(m.bias,0)\n                elif isinstance(m,nn.Linear):\n                    nn.init.normal_(m.weight,0,0.01)\n                    if m.bias is not None:\n                        nn.init.constant_(m.bias,0)\n    # 定义前向传播\n    def forward(self,x):\n        x=self.b1(x)\n        x=self.b2(x)\n        x=self.b3(x)\n        x=self.b4(x)\n        x=self.b5(x)\n        return x\n\n# 模型展示\nif __name__==\"__main__\":\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n    model=GoogLeNet(Inception).to(device)\n    print(summary(model,(1,224,224)))\n",[457,62151,62152,62158,62168,62178,62182,62198,62206,62220,62230,62234,62264,62268,62302,62348,62352,62386,62432,62436,62440,62474,62504,62508,62516,62530,62552,62574,62592,62596,62610,62614,62618,62634,62638,62646,62660,62670,62714,62718,62746,62750,62760,62788,62792,62828,62832,62860,62864,62874,62906,62938,62966,62970,62980,63012,63044,63076,63108,63140,63168,63172,63182,63214,63246,63258,63262,63274,63278,63282,63294,63302,63322,63326,63330,63334,63338,63342,63346,63360,63368,63376,63388,63402,63410,63414,63422,63432,63442,63452,63462,63472,63478,63482,63486,63498,63518,63526],{"__ignoreMap":32},[460,62153,62154,62156],{"class":462,"line":463},[460,62155,46801],{"class":887},[460,62157,46804],{"class":466},[460,62159,62160,62162,62164,62166],{"class":462,"line":476},[460,62161,47145],{"class":887},[460,62163,47148],{"class":466},[460,62165,46801],{"class":887},[460,62167,47153],{"class":466},[460,62169,62170,62172,62174,62176],{"class":462,"line":482},[460,62171,47145],{"class":887},[460,62173,47165],{"class":466},[460,62175,46801],{"class":887},[460,62177,47170],{"class":466},[460,62179,62180],{"class":462,"line":488},[460,62181,522],{"emptyLinePlaceholder":521},[460,62183,62184,62186,62188,62190,62192,62194,62196],{"class":462,"line":494},[460,62185,31148],{"class":887},[460,62187,57797],{"class":929},[460,62189,2174],{"class":466},[460,62191,47186],{"class":929},[460,62193,6000],{"class":466},[460,62195,47191],{"class":929},[460,62197,47194],{"class":466},[460,62199,62200,62202,62204],{"class":462,"line":500},[460,62201,47209],{"class":887},[460,62203,47212],{"class":900},[460,62205,57816],{"class":466},[460,62207,62208,62210,62212,62214,62216,62218],{"class":462,"line":506},[460,62209,47225],{"class":900},[460,62211,57823],{"class":466},[460,62213,47231],{"class":900},[460,62215,3596],{"class":466},[460,62217,47236],{"class":900},[460,62219,10758],{"class":466},[460,62221,62222,62224,62226,62228],{"class":462,"line":512},[460,62223,47252],{"class":900},[460,62225,51076],{"class":466},[460,62227,894],{"class":887},[460,62229,51081],{"class":466},[460,62231,62232],{"class":462,"line":518},[460,62233,57846],{"class":942},[460,62235,62236,62238,62240,62242,62244,62246,62248,62250,62252,62254,62256,62258,62260,62262],{"class":462,"line":525},[460,62237,47252],{"class":900},[460,62239,57853],{"class":466},[460,62241,894],{"class":887},[460,62243,47260],{"class":466},[460,62245,47263],{"class":3380},[460,62247,894],{"class":887},[460,62249,57864],{"class":466},[460,62251,47272],{"class":3380},[460,62253,894],{"class":887},[460,62255,57871],{"class":466},[460,62257,47281],{"class":3380},[460,62259,894],{"class":887},[460,62261,901],{"class":900},[460,62263,3754],{"class":466},[460,62265,62266],{"class":462,"line":531},[460,62267,57884],{"class":942},[460,62269,62270,62272,62274,62276,62278,62280,62282,62284,62286,62288,62290,62292,62294,62296,62298,62300],{"class":462,"line":537},[460,62271,47252],{"class":900},[460,62273,57891],{"class":466},[460,62275,894],{"class":887},[460,62277,47260],{"class":466},[460,62279,47263],{"class":3380},[460,62281,894],{"class":887},[460,62283,57864],{"class":466},[460,62285,47272],{"class":3380},[460,62287,894],{"class":887},[460,62289,57908],{"class":466},[460,62291,936],{"class":900},[460,62293,57913],{"class":466},[460,62295,47281],{"class":3380},[460,62297,894],{"class":887},[460,62299,901],{"class":900},[460,62301,3754],{"class":466},[460,62303,62304,62306,62308,62310,62312,62314,62316,62318,62320,62322,62324,62326,62328,62330,62332,62334,62336,62338,62340,62342,62344,62346],{"class":462,"line":543},[460,62305,47252],{"class":900},[460,62307,57928],{"class":466},[460,62309,894],{"class":887},[460,62311,47260],{"class":466},[460,62313,47263],{"class":3380},[460,62315,894],{"class":887},[460,62317,57908],{"class":466},[460,62319,936],{"class":900},[460,62321,57913],{"class":466},[460,62323,47272],{"class":3380},[460,62325,894],{"class":887},[460,62327,57908],{"class":466},[460,62329,901],{"class":900},[460,62331,57913],{"class":466},[460,62333,47281],{"class":3380},[460,62335,894],{"class":887},[460,62337,913],{"class":900},[460,62339,3986],{"class":466},[460,62341,47290],{"class":3380},[460,62343,894],{"class":887},[460,62345,901],{"class":900},[460,62347,3754],{"class":466},[460,62349,62350],{"class":462,"line":549},[460,62351,57973],{"class":942},[460,62353,62354,62356,62358,62360,62362,62364,62366,62368,62370,62372,62374,62376,62378,62380,62382,62384],{"class":462,"line":555},[460,62355,47252],{"class":900},[460,62357,57980],{"class":466},[460,62359,894],{"class":887},[460,62361,47260],{"class":466},[460,62363,47263],{"class":3380},[460,62365,894],{"class":887},[460,62367,57864],{"class":466},[460,62369,47272],{"class":3380},[460,62371,894],{"class":887},[460,62373,57997],{"class":466},[460,62375,936],{"class":900},[460,62377,57913],{"class":466},[460,62379,47281],{"class":3380},[460,62381,894],{"class":887},[460,62383,901],{"class":900},[460,62385,3754],{"class":466},[460,62387,62388,62390,62392,62394,62396,62398,62400,62402,62404,62406,62408,62410,62412,62414,62416,62418,62420,62422,62424,62426,62428,62430],{"class":462,"line":560},[460,62389,47252],{"class":900},[460,62391,58016],{"class":466},[460,62393,894],{"class":887},[460,62395,47260],{"class":466},[460,62397,47263],{"class":3380},[460,62399,894],{"class":887},[460,62401,57997],{"class":466},[460,62403,936],{"class":900},[460,62405,57913],{"class":466},[460,62407,47272],{"class":3380},[460,62409,894],{"class":887},[460,62411,57997],{"class":466},[460,62413,901],{"class":900},[460,62415,57913],{"class":466},[460,62417,47281],{"class":3380},[460,62419,894],{"class":887},[460,62421,7290],{"class":900},[460,62423,3986],{"class":466},[460,62425,47290],{"class":3380},[460,62427,894],{"class":887},[460,62429,907],{"class":900},[460,62431,3754],{"class":466},[460,62433,62434],{"class":462,"line":566},[460,62435,58061],{"class":942},[460,62437,62438],{"class":462,"line":572},[460,62439,58066],{"class":942},[460,62441,62442,62444,62446,62448,62450,62452,62454,62456,62458,62460,62462,62464,62466,62468,62470,62472],{"class":462,"line":578},[460,62443,47252],{"class":900},[460,62445,58073],{"class":466},[460,62447,894],{"class":887},[460,62449,51134],{"class":466},[460,62451,47281],{"class":3380},[460,62453,894],{"class":887},[460,62455,913],{"class":900},[460,62457,3986],{"class":466},[460,62459,47336],{"class":3380},[460,62461,894],{"class":887},[460,62463,901],{"class":900},[460,62465,3986],{"class":466},[460,62467,47290],{"class":3380},[460,62469,894],{"class":887},[460,62471,901],{"class":900},[460,62473,3754],{"class":466},[460,62475,62476,62478,62480,62482,62484,62486,62488,62490,62492,62494,62496,62498,62500,62502],{"class":462,"line":812},[460,62477,47252],{"class":900},[460,62479,58108],{"class":466},[460,62481,894],{"class":887},[460,62483,47260],{"class":466},[460,62485,47263],{"class":3380},[460,62487,894],{"class":887},[460,62489,57864],{"class":466},[460,62491,47272],{"class":3380},[460,62493,894],{"class":887},[460,62495,58125],{"class":466},[460,62497,47281],{"class":3380},[460,62499,894],{"class":887},[460,62501,901],{"class":900},[460,62503,3754],{"class":466},[460,62505,62506],{"class":462,"line":818},[460,62507,522],{"emptyLinePlaceholder":521},[460,62509,62510,62512,62514],{"class":462,"line":824},[460,62511,47209],{"class":887},[460,62513,47500],{"class":929},[460,62515,47503],{"class":466},[460,62517,62518,62520,62522,62524,62526,62528],{"class":462,"line":2074},[460,62519,58150],{"class":466},[460,62521,894],{"class":887},[460,62523,47231],{"class":900},[460,62525,51489],{"class":466},[460,62527,47231],{"class":900},[460,62529,58161],{"class":466},[460,62531,62532,62534,62536,62538,62540,62542,62544,62546,62548,62550],{"class":462,"line":2088},[460,62533,23583],{"class":466},[460,62535,894],{"class":887},[460,62537,47231],{"class":900},[460,62539,51489],{"class":466},[460,62541,47231],{"class":900},[460,62543,58176],{"class":466},[460,62545,47231],{"class":900},[460,62547,51489],{"class":466},[460,62549,47231],{"class":900},[460,62551,58185],{"class":466},[460,62553,62554,62556,62558,62560,62562,62564,62566,62568,62570,62572],{"class":462,"line":2103},[460,62555,58190],{"class":466},[460,62557,894],{"class":887},[460,62559,47231],{"class":900},[460,62561,51489],{"class":466},[460,62563,47231],{"class":900},[460,62565,58201],{"class":466},[460,62567,47231],{"class":900},[460,62569,51489],{"class":466},[460,62571,47231],{"class":900},[460,62573,58210],{"class":466},[460,62575,62576,62578,62580,62582,62584,62586,62588,62590],{"class":462,"line":2122},[460,62577,58215],{"class":466},[460,62579,894],{"class":887},[460,62581,47231],{"class":900},[460,62583,51489],{"class":466},[460,62585,47231],{"class":900},[460,62587,58226],{"class":466},[460,62589,47231],{"class":900},[460,62591,58231],{"class":466},[460,62593,62594],{"class":462,"line":2144},[460,62595,58236],{"class":942},[460,62597,62598,62600,62602,62604,62606,62608],{"class":462,"line":2158},[460,62599,31206],{"class":887},[460,62601,58243],{"class":466},[460,62603,49083],{"class":3380},[460,62605,894],{"class":887},[460,62607,901],{"class":900},[460,62609,3754],{"class":466},[460,62611,62612],{"class":462,"line":2163},[460,62613,522],{"emptyLinePlaceholder":521},[460,62615,62616],{"class":462,"line":2168},[460,62617,58264],{"class":942},[460,62619,62620,62622,62624,62626,62628,62630,62632],{"class":462,"line":2183},[460,62621,31148],{"class":887},[460,62623,58271],{"class":929},[460,62625,2174],{"class":466},[460,62627,47186],{"class":929},[460,62629,6000],{"class":466},[460,62631,47191],{"class":929},[460,62633,47194],{"class":466},[460,62635,62636],{"class":462,"line":2194},[460,62637,58286],{"class":942},[460,62639,62640,62642,62644],{"class":462,"line":2199},[460,62641,47209],{"class":887},[460,62643,47212],{"class":900},[460,62645,58295],{"class":466},[460,62647,62648,62650,62652,62654,62656,62658],{"class":462,"line":2204},[460,62649,47225],{"class":900},[460,62651,58302],{"class":466},[460,62653,47231],{"class":900},[460,62655,3596],{"class":466},[460,62657,47236],{"class":900},[460,62659,10758],{"class":466},[460,62661,62662,62664,62666,62668],{"class":462,"line":2212},[460,62663,47252],{"class":900},[460,62665,58317],{"class":466},[460,62667,894],{"class":887},[460,62669,54314],{"class":466},[460,62671,62672,62674,62676,62678,62680,62682,62684,62686,62688,62690,62692,62694,62696,62698,62700,62702,62704,62706,62708,62710,62712],{"class":462,"line":2257},[460,62673,54319],{"class":466},[460,62675,47263],{"class":3380},[460,62677,894],{"class":887},[460,62679,913],{"class":900},[460,62681,3986],{"class":466},[460,62683,47272],{"class":3380},[460,62685,894],{"class":887},[460,62687,16948],{"class":900},[460,62689,3986],{"class":466},[460,62691,47281],{"class":3380},[460,62693,894],{"class":887},[460,62695,6149],{"class":900},[460,62697,3986],{"class":466},[460,62699,47336],{"class":3380},[460,62701,894],{"class":887},[460,62703,907],{"class":900},[460,62705,3986],{"class":466},[460,62707,47290],{"class":3380},[460,62709,894],{"class":887},[460,62711,913],{"class":900},[460,62713,54352],{"class":466},[460,62715,62716],{"class":462,"line":2285},[460,62717,54357],{"class":466},[460,62719,62720,62722,62724,62726,62728,62730,62732,62734,62736,62738,62740,62742,62744],{"class":462,"line":2298},[460,62721,54402],{"class":466},[460,62723,47281],{"class":3380},[460,62725,894],{"class":887},[460,62727,913],{"class":900},[460,62729,3986],{"class":466},[460,62731,47336],{"class":3380},[460,62733,894],{"class":887},[460,62735,907],{"class":900},[460,62737,3986],{"class":466},[460,62739,47290],{"class":3380},[460,62741,894],{"class":887},[460,62743,901],{"class":900},[460,62745,3754],{"class":466},[460,62747,62748],{"class":462,"line":2303},[460,62749,54431],{"class":466},[460,62751,62752,62754,62756,62758],{"class":462,"line":2308},[460,62753,47252],{"class":900},[460,62755,58408],{"class":466},[460,62757,894],{"class":887},[460,62759,54314],{"class":466},[460,62761,62762,62764,62766,62768,62770,62772,62774,62776,62778,62780,62782,62784,62786],{"class":462,"line":2318},[460,62763,54319],{"class":466},[460,62765,47263],{"class":3380},[460,62767,894],{"class":887},[460,62769,16948],{"class":900},[460,62771,3986],{"class":466},[460,62773,47272],{"class":3380},[460,62775,894],{"class":887},[460,62777,16948],{"class":900},[460,62779,3986],{"class":466},[460,62781,47281],{"class":3380},[460,62783,894],{"class":887},[460,62785,901],{"class":900},[460,62787,54352],{"class":466},[460,62789,62790],{"class":462,"line":2333},[460,62791,54357],{"class":466},[460,62793,62794,62796,62798,62800,62802,62804,62806,62808,62810,62812,62814,62816,62818,62820,62822,62824,62826],{"class":462,"line":2338},[460,62795,54319],{"class":466},[460,62797,47263],{"class":3380},[460,62799,894],{"class":887},[460,62801,16948],{"class":900},[460,62803,3986],{"class":466},[460,62805,47272],{"class":3380},[460,62807,894],{"class":887},[460,62809,58463],{"class":900},[460,62811,3986],{"class":466},[460,62813,47281],{"class":3380},[460,62815,894],{"class":887},[460,62817,913],{"class":900},[460,62819,3986],{"class":466},[460,62821,47290],{"class":3380},[460,62823,894],{"class":887},[460,62825,901],{"class":900},[460,62827,54352],{"class":466},[460,62829,62830],{"class":462,"line":2343},[460,62831,54357],{"class":466},[460,62833,62834,62836,62838,62840,62842,62844,62846,62848,62850,62852,62854,62856,62858],{"class":462,"line":2353},[460,62835,54402],{"class":466},[460,62837,47281],{"class":3380},[460,62839,894],{"class":887},[460,62841,913],{"class":900},[460,62843,3986],{"class":466},[460,62845,47336],{"class":3380},[460,62847,894],{"class":887},[460,62849,907],{"class":900},[460,62851,3986],{"class":466},[460,62853,47290],{"class":3380},[460,62855,894],{"class":887},[460,62857,901],{"class":900},[460,62859,3754],{"class":466},[460,62861,62862],{"class":462,"line":2368},[460,62863,54431],{"class":466},[460,62865,62866,62868,62870,62872],{"class":462,"line":2381},[460,62867,47252],{"class":900},[460,62869,58524],{"class":466},[460,62871,894],{"class":887},[460,62873,54314],{"class":466},[460,62875,62876,62878,62880,62882,62884,62886,62888,62890,62892,62894,62896,62898,62900,62902,62904],{"class":462,"line":2394},[460,62877,58533],{"class":466},[460,62879,58463],{"class":900},[460,62881,3986],{"class":466},[460,62883,16948],{"class":900},[460,62885,58542],{"class":466},[460,62887,16954],{"class":900},[460,62889,3986],{"class":466},[460,62891,48475],{"class":900},[460,62893,58551],{"class":466},[460,62895,17323],{"class":900},[460,62897,3986],{"class":466},[460,62899,16942],{"class":900},[460,62901,58560],{"class":466},[460,62903,16942],{"class":900},[460,62905,54352],{"class":466},[460,62907,62908,62910,62912,62914,62916,62918,62920,62922,62924,62926,62928,62930,62932,62934,62936],{"class":462,"line":2399},[460,62909,58533],{"class":466},[460,62911,51175],{"class":900},[460,62913,3986],{"class":466},[460,62915,48475],{"class":900},[460,62917,58542],{"class":466},[460,62919,48475],{"class":900},[460,62921,3986],{"class":466},[460,62923,58463],{"class":900},[460,62925,58551],{"class":466},[460,62927,16942],{"class":900},[460,62929,3986],{"class":466},[460,62931,16954],{"class":900},[460,62933,58560],{"class":466},[460,62935,16948],{"class":900},[460,62937,54352],{"class":466},[460,62939,62940,62942,62944,62946,62948,62950,62952,62954,62956,62958,62960,62962,62964],{"class":462,"line":2404},[460,62941,54402],{"class":466},[460,62943,47281],{"class":3380},[460,62945,894],{"class":887},[460,62947,913],{"class":900},[460,62949,3986],{"class":466},[460,62951,47336],{"class":3380},[460,62953,894],{"class":887},[460,62955,907],{"class":900},[460,62957,3986],{"class":466},[460,62959,47290],{"class":3380},[460,62961,894],{"class":887},[460,62963,901],{"class":900},[460,62965,3754],{"class":466},[460,62967,62968],{"class":462,"line":2414},[460,62969,54431],{"class":466},[460,62971,62972,62974,62976,62978],{"class":462,"line":2428},[460,62973,47252],{"class":900},[460,62975,58635],{"class":466},[460,62977,894],{"class":887},[460,62979,54314],{"class":466},[460,62981,62982,62984,62986,62988,62990,62992,62994,62996,62998,63000,63002,63004,63006,63008,63010],{"class":462,"line":2440},[460,62983,58533],{"class":466},[460,62985,58646],{"class":900},[460,62987,3986],{"class":466},[460,62989,58463],{"class":900},[460,62991,58542],{"class":466},[460,62993,16954],{"class":900},[460,62995,3986],{"class":466},[460,62997,58659],{"class":900},[460,62999,58551],{"class":466},[460,63001,17323],{"class":900},[460,63003,3986],{"class":466},[460,63005,17329],{"class":900},[460,63007,58560],{"class":466},[460,63009,16948],{"class":900},[460,63011,54352],{"class":466},[460,63013,63014,63016,63018,63020,63022,63024,63026,63028,63030,63032,63034,63036,63038,63040,63042],{"class":462,"line":2445},[460,63015,58533],{"class":466},[460,63017,54762],{"class":900},[460,63019,3986],{"class":466},[460,63021,37465],{"class":900},[460,63023,58542],{"class":466},[460,63025,17339],{"class":900},[460,63027,3986],{"class":466},[460,63029,47907],{"class":900},[460,63031,58551],{"class":466},[460,63033,17515],{"class":900},[460,63035,3986],{"class":466},[460,63037,16948],{"class":900},[460,63039,58560],{"class":466},[460,63041,16948],{"class":900},[460,63043,54352],{"class":466},[460,63045,63046,63048,63050,63052,63054,63056,63058,63060,63062,63064,63066,63068,63070,63072,63074],{"class":462,"line":2450},[460,63047,58533],{"class":466},[460,63049,54762],{"class":900},[460,63051,3986],{"class":466},[460,63053,48475],{"class":900},[460,63055,58542],{"class":466},[460,63057,48475],{"class":900},[460,63059,3986],{"class":466},[460,63061,51175],{"class":900},[460,63063,58551],{"class":466},[460,63065,17515],{"class":900},[460,63067,3986],{"class":466},[460,63069,16948],{"class":900},[460,63071,58560],{"class":466},[460,63073,16948],{"class":900},[460,63075,54352],{"class":466},[460,63077,63078,63080,63082,63084,63086,63088,63090,63092,63094,63096,63098,63100,63102,63104,63106],{"class":462,"line":2460},[460,63079,58533],{"class":466},[460,63081,54762],{"class":900},[460,63083,3986],{"class":466},[460,63085,17339],{"class":900},[460,63087,58542],{"class":466},[460,63089,48475],{"class":900},[460,63091,3986],{"class":466},[460,63093,58756],{"class":900},[460,63095,58551],{"class":466},[460,63097,16942],{"class":900},[460,63099,3986],{"class":466},[460,63101,16948],{"class":900},[460,63103,58560],{"class":466},[460,63105,16948],{"class":900},[460,63107,54352],{"class":466},[460,63109,63110,63112,63114,63116,63118,63120,63122,63124,63126,63128,63130,63132,63134,63136,63138],{"class":462,"line":2473},[460,63111,58533],{"class":466},[460,63113,58777],{"class":900},[460,63115,3986],{"class":466},[460,63117,51175],{"class":900},[460,63119,58542],{"class":466},[460,63121,37465],{"class":900},[460,63123,3986],{"class":466},[460,63125,58790],{"class":900},[460,63127,58551],{"class":466},[460,63129,16942],{"class":900},[460,63131,3986],{"class":466},[460,63133,48475],{"class":900},[460,63135,58560],{"class":466},[460,63137,48475],{"class":900},[460,63139,54352],{"class":466},[460,63141,63142,63144,63146,63148,63150,63152,63154,63156,63158,63160,63162,63164,63166],{"class":462,"line":2487},[460,63143,54402],{"class":466},[460,63145,47281],{"class":3380},[460,63147,894],{"class":887},[460,63149,913],{"class":900},[460,63151,3986],{"class":466},[460,63153,47336],{"class":3380},[460,63155,894],{"class":887},[460,63157,907],{"class":900},[460,63159,3986],{"class":466},[460,63161,47290],{"class":3380},[460,63163,894],{"class":887},[460,63165,901],{"class":900},[460,63167,3754],{"class":466},[460,63169,63170],{"class":462,"line":2492},[460,63171,54431],{"class":466},[460,63173,63174,63176,63178,63180],{"class":462,"line":2497},[460,63175,47252],{"class":900},[460,63177,58843],{"class":466},[460,63179,894],{"class":887},[460,63181,54314],{"class":466},[460,63183,63184,63186,63188,63190,63192,63194,63196,63198,63200,63202,63204,63206,63208,63210,63212],{"class":462,"line":2505},[460,63185,58533],{"class":466},[460,63187,58854],{"class":900},[460,63189,3986],{"class":466},[460,63191,51175],{"class":900},[460,63193,58542],{"class":466},[460,63195,37465],{"class":900},[460,63197,3986],{"class":466},[460,63199,58790],{"class":900},[460,63201,58551],{"class":466},[460,63203,16942],{"class":900},[460,63205,3986],{"class":466},[460,63207,48475],{"class":900},[460,63209,58560],{"class":466},[460,63211,48475],{"class":900},[460,63213,54352],{"class":466},[460,63215,63216,63218,63220,63222,63224,63226,63228,63230,63232,63234,63236,63238,63240,63242,63244],{"class":462,"line":2516},[460,63217,58533],{"class":466},[460,63219,58854],{"class":900},[460,63221,3986],{"class":466},[460,63223,51245],{"class":900},[460,63225,58542],{"class":466},[460,63227,58463],{"class":900},[460,63229,3986],{"class":466},[460,63231,51245],{"class":900},[460,63233,58551],{"class":466},[460,63235,17329],{"class":900},[460,63237,3986],{"class":466},[460,63239,48475],{"class":900},[460,63241,58560],{"class":466},[460,63243,48475],{"class":900},[460,63245,54352],{"class":466},[460,63247,63248,63250,63252,63254,63256],{"class":462,"line":2529},[460,63249,58917],{"class":466},[460,63251,901],{"class":900},[460,63253,3986],{"class":466},[460,63255,901],{"class":900},[460,63257,58926],{"class":466},[460,63259,63260],{"class":462,"line":2542},[460,63261,55095],{"class":466},[460,63263,63264,63266,63268,63270,63272],{"class":462,"line":2559},[460,63265,55100],{"class":466},[460,63267,58937],{"class":900},[460,63269,3986],{"class":466},[460,63271,907],{"class":900},[460,63273,3754],{"class":466},[460,63275,63276],{"class":462,"line":2564},[460,63277,54431],{"class":466},[460,63279,63280],{"class":462,"line":2569},[460,63281,58952],{"class":942},[460,63283,63284,63286,63288,63290,63292],{"class":462,"line":2579},[460,63285,19924],{"class":887},[460,63287,55173],{"class":466},[460,63289,11713],{"class":887},[460,63291,55178],{"class":900},[460,63293,55181],{"class":466},[460,63295,63296,63298,63300],{"class":462,"line":2597},[460,63297,21153],{"class":887},[460,63299,55193],{"class":900},[460,63301,55196],{"class":466},[460,63303,63304,63306,63308,63310,63312,63314,63316,63318,63320],{"class":462,"line":2610},[460,63305,55206],{"class":466},[460,63307,58979],{"class":3380},[460,63309,894],{"class":887},[460,63311,58984],{"class":1353},[460,63313,3986],{"class":466},[460,63315,55209],{"class":3380},[460,63317,894],{"class":887},[460,63319,55214],{"class":1353},[460,63321,3754],{"class":466},[460,63323,63324],{"class":462,"line":2621},[460,63325,58999],{"class":942},[460,63327,63328],{"class":462,"line":2634},[460,63329,59004],{"class":942},[460,63331,63332],{"class":462,"line":2648},[460,63333,59009],{"class":942},[460,63335,63336],{"class":462,"line":2653},[460,63337,59014],{"class":942},[460,63339,63340],{"class":462,"line":2658},[460,63341,59019],{"class":942},[460,63343,63344],{"class":462,"line":2670},[460,63345,59024],{"class":942},[460,63347,63348,63350,63352,63354,63356,63358],{"class":462,"line":2683},[460,63349,55226],{"class":887},[460,63351,55229],{"class":466},[460,63353,55232],{"class":887},[460,63355,55235],{"class":887},[460,63357,55238],{"class":900},[460,63359,20257],{"class":466},[460,63361,63362,63364,63366],{"class":462,"line":2695},[460,63363,55250],{"class":466},[460,63365,936],{"class":900},[460,63367,3754],{"class":466},[460,63369,63370,63372,63374],{"class":462,"line":2700},[460,63371,59051],{"class":887},[460,63373,55193],{"class":900},[460,63375,55269],{"class":466},[460,63377,63378,63380,63382,63384,63386],{"class":462,"line":2709},[460,63379,59060],{"class":466},[460,63381,936],{"class":900},[460,63383,3986],{"class":466},[460,63385,55291],{"class":900},[460,63387,3754],{"class":466},[460,63389,63390,63392,63394,63396,63398,63400],{"class":462,"line":2718},[460,63391,59073],{"class":887},[460,63393,55229],{"class":466},[460,63395,55232],{"class":887},[460,63397,55235],{"class":887},[460,63399,55238],{"class":900},[460,63401,20257],{"class":466},[460,63403,63404,63406,63408],{"class":462,"line":2723},[460,63405,59088],{"class":466},[460,63407,936],{"class":900},[460,63409,3754],{"class":466},[460,63411,63412],{"class":462,"line":2732},[460,63413,51470],{"class":942},[460,63415,63416,63418,63420],{"class":462,"line":2750},[460,63417,47209],{"class":887},[460,63419,47500],{"class":929},[460,63421,47503],{"class":466},[460,63423,63424,63426,63428,63430],{"class":462,"line":2782},[460,63425,47508],{"class":466},[460,63427,894],{"class":887},[460,63429,47231],{"class":900},[460,63431,59115],{"class":466},[460,63433,63434,63436,63438,63440],{"class":462,"line":2809},[460,63435,47508],{"class":466},[460,63437,894],{"class":887},[460,63439,47231],{"class":900},[460,63441,59126],{"class":466},[460,63443,63444,63446,63448,63450],{"class":462,"line":2836},[460,63445,47508],{"class":466},[460,63447,894],{"class":887},[460,63449,47231],{"class":900},[460,63451,59137],{"class":466},[460,63453,63454,63456,63458,63460],{"class":462,"line":2856},[460,63455,47508],{"class":466},[460,63457,894],{"class":887},[460,63459,47231],{"class":900},[460,63461,59148],{"class":466},[460,63463,63464,63466,63468,63470],{"class":462,"line":2865},[460,63465,47508],{"class":466},[460,63467,894],{"class":887},[460,63469,47231],{"class":900},[460,63471,59159],{"class":466},[460,63473,63474,63476],{"class":462,"line":2881},[460,63475,31206],{"class":887},[460,63477,47616],{"class":466},[460,63479,63480],{"class":462,"line":2887},[460,63481,522],{"emptyLinePlaceholder":521},[460,63483,63484],{"class":462,"line":2893},[460,63485,59174],{"class":942},[460,63487,63488,63490,63492,63494,63496],{"class":462,"line":2899},[460,63489,18100],{"class":887},[460,63491,47627],{"class":900},[460,63493,19471],{"class":887},[460,63495,47632],{"class":1353},[460,63497,20257],{"class":466},[460,63499,63500,63502,63504,63506,63508,63510,63512,63514,63516],{"class":462,"line":2905},[460,63501,47644],{"class":466},[460,63503,894],{"class":887},[460,63505,46860],{"class":466},[460,63507,47651],{"class":1353},[460,63509,3766],{"class":887},[460,63511,47656],{"class":466},[460,63513,3763],{"class":887},[460,63515,46885],{"class":1353},[460,63517,3754],{"class":466},[460,63519,63520,63522,63524],{"class":462,"line":2911},[460,63521,47696],{"class":466},[460,63523,894],{"class":887},[460,63525,59215],{"class":466},[460,63527,63528,63530,63532,63534,63536,63538,63540,63542],{"class":462,"line":2920},[460,63529,47706],{"class":900},[460,63531,47709],{"class":466},[460,63533,901],{"class":900},[460,63535,3986],{"class":466},[460,63537,47907],{"class":900},[460,63539,3986],{"class":466},[460,63541,47907],{"class":900},[460,63543,47722],{"class":466},[115,63545,63547],{"id":63546},"_242训练代码包含预处理","2.4.2.训练代码（包含预处理）",[14,63549,63550],{},"计算图片的均值与方差，用于训练中归一化处理操作",[451,63552,63554],{"className":46787,"code":63553,"language":46789,"meta":32,"style":32},"# PIL（Python Imaging Library）里的 Image 用来读取图片\nfrom PIL import Image\n# os 用来处理文件夹和文件路径\nimport os\n# numpy 是科学计算库，用于做矩阵运算（这里用来处理图片像素）\nimport numpy as np\n\n# 文件夹路径，包含所有图片文件\nfolder_path = 'data_cat_dog'\n\n# 初始化累积变量\ntotal_pixels = 0\nsum_normalized_pixel_values = np.zeros(3)  # 如果是RGB图像，需要三个通道的均值和方差\n\n# 遍历文件夹中的图片文件\nfor root, dirs, files in os.walk(folder_path):\n    for filename in files:\n        if filename.endswith(('.jpg', '.jpeg', '.png', '.bmp')):  # 可根据实际情况添加其他格式\n            image_path = os.path.join(root, filename)\n            image = Image.open(image_path)\n            image_array = np.array(image)\n\n            # 归一化像素值到0-1之间\n            normalized_image_array = image_array \u002F 255.0\n\n            # print(image_path)\n            # print(normalized_image_array.shape)\n            # 累积归一化后的像素值和像素数量\n            total_pixels += normalized_image_array.size\n            # 是把图片在高度和宽度方向求和，得到每个通道的总和（RGB 三个通道分别求）\n            sum_normalized_pixel_values += np.sum(normalized_image_array, axis=(0, 1))\n\n# 用像素总和\u002F像素总数 就得到每个通道的均值\nmean = sum_normalized_pixel_values \u002F total_pixels\n\nsum_squared_diff = np.zeros(3)\n\n# os.walk(folder_path)：遍历文件夹里所有文件和子文件夹\n# filename.endswith(...)：只选择图片文件（jpg\u002Fpng\u002Fbmp）\n# os.path.join(root, filename)：得到每张图片的完整路径\n# Image.open(image_path)：打开图片\n# np.array(image)：把图片转成 numpy 数组，形状一般是 (高度, 宽度, 3)\nfor root, dirs, files in os.walk(folder_path):\n    for filename in files:\n        if filename.endswith(('.jpg', '.jpeg', '.png', '.bmp')):\n            image_path = os.path.join(root, filename)\n            image = Image.open(image_path)\n            image_array = np.array(image)\n            # 归一化像素值到0-1之间\n            normalized_image_array = image_array \u002F 255.0\n            # print(normalized_image_array.shape)\n            # print(mean.shape)\n            # print(image_path)\n\n            try:\n                diff = (normalized_image_array - mean) ** 2\n                sum_squared_diff += np.sum(diff, axis=(0, 1))\n            except:\n                print(f\"捕获到自定义异常\")\n            # diff = (normalized_image_array - mean) ** 2\n            # sum_squared_diff += np.sum(diff, axis=(0, 1))\n\nvariance = sum_squared_diff \u002F total_pixels\n\nprint(\"Mean:\", mean)\nprint(\"Variance:\", variance)\n\n",[457,63555,63556,63561,63574,63579,63585,63590,63600,63604,63609,63619,63623,63628,63637,63654,63658,63663,63675,63687,63718,63727,63737,63747,63751,63756,63771,63775,63780,63785,63790,63800,63805,63830,63834,63839,63854,63858,63871,63875,63880,63885,63890,63895,63900,63910,63920,63943,63951,63959,63967,63971,63983,63987,63992,63996,64000,64007,64027,64051,64058,64072,64077,64082,64086,64100,64104,64116],{"__ignoreMap":32},[460,63557,63558],{"class":462,"line":463},[460,63559,63560],{"class":942},"# PIL（Python Imaging Library）里的 Image 用来读取图片\n",[460,63562,63563,63565,63568,63571],{"class":462,"line":476},[460,63564,47145],{"class":887},[460,63566,63567],{"class":900}," PIL",[460,63569,63570],{"class":887}," import",[460,63572,63573],{"class":466}," Image\n",[460,63575,63576],{"class":462,"line":482},[460,63577,63578],{"class":942},"# os 用来处理文件夹和文件路径\n",[460,63580,63581,63583],{"class":462,"line":488},[460,63582,46801],{"class":887},[460,63584,61609],{"class":466},[460,63586,63587],{"class":462,"line":494},[460,63588,63589],{"class":942},"# numpy 是科学计算库，用于做矩阵运算（这里用来处理图片像素）\n",[460,63591,63592,63594,63596,63598],{"class":462,"line":500},[460,63593,46801],{"class":887},[460,63595,47787],{"class":466},[460,63597,47790],{"class":887},[460,63599,47793],{"class":466},[460,63601,63602],{"class":462,"line":506},[460,63603,522],{"emptyLinePlaceholder":521},[460,63605,63606],{"class":462,"line":512},[460,63607,63608],{"class":942},"# 文件夹路径，包含所有图片文件\n",[460,63610,63611,63614,63616],{"class":462,"line":518},[460,63612,63613],{"class":466},"folder_path ",[460,63615,894],{"class":887},[460,63617,63618],{"class":1353}," 'data_cat_dog'\n",[460,63620,63621],{"class":462,"line":525},[460,63622,522],{"emptyLinePlaceholder":521},[460,63624,63625],{"class":462,"line":531},[460,63626,63627],{"class":942},"# 初始化累积变量\n",[460,63629,63630,63633,63635],{"class":462,"line":537},[460,63631,63632],{"class":466},"total_pixels ",[460,63634,894],{"class":887},[460,63636,13996],{"class":900},[460,63638,63639,63642,63644,63647,63649,63651],{"class":462,"line":543},[460,63640,63641],{"class":466},"sum_normalized_pixel_values ",[460,63643,894],{"class":887},[460,63645,63646],{"class":466}," np.zeros(",[460,63648,913],{"class":900},[460,63650,62112],{"class":466},[460,63652,63653],{"class":942},"# 如果是RGB图像，需要三个通道的均值和方差\n",[460,63655,63656],{"class":462,"line":549},[460,63657,522],{"emptyLinePlaceholder":521},[460,63659,63660],{"class":462,"line":555},[460,63661,63662],{"class":942},"# 遍历文件夹中的图片文件\n",[460,63664,63665,63667,63670,63672],{"class":462,"line":560},[460,63666,19547],{"class":887},[460,63668,63669],{"class":466}," root, dirs, files ",[460,63671,11713],{"class":887},[460,63673,63674],{"class":466}," os.walk(folder_path):\n",[460,63676,63677,63679,63682,63684],{"class":462,"line":566},[460,63678,19722],{"class":887},[460,63680,63681],{"class":466}," filename ",[460,63683,11713],{"class":887},[460,63685,63686],{"class":466}," files:\n",[460,63688,63689,63691,63694,63697,63699,63702,63704,63707,63709,63712,63715],{"class":462,"line":572},[460,63690,3702],{"class":887},[460,63692,63693],{"class":466}," filename.endswith((",[460,63695,63696],{"class":1353},"'.jpg'",[460,63698,904],{"class":466},[460,63700,63701],{"class":1353},"'.jpeg'",[460,63703,904],{"class":466},[460,63705,63706],{"class":1353},"'.png'",[460,63708,904],{"class":466},[460,63710,63711],{"class":1353},"'.bmp'",[460,63713,63714],{"class":466},")):  ",[460,63716,63717],{"class":942},"# 可根据实际情况添加其他格式\n",[460,63719,63720,63722,63724],{"class":462,"line":578},[460,63721,61977],{"class":466},[460,63723,894],{"class":887},[460,63725,63726],{"class":466}," os.path.join(root, filename)\n",[460,63728,63729,63732,63734],{"class":462,"line":812},[460,63730,63731],{"class":466},"            image ",[460,63733,894],{"class":887},[460,63735,63736],{"class":466}," Image.open(image_path)\n",[460,63738,63739,63742,63744],{"class":462,"line":818},[460,63740,63741],{"class":466},"            image_array ",[460,63743,894],{"class":887},[460,63745,63746],{"class":466}," np.array(image)\n",[460,63748,63749],{"class":462,"line":824},[460,63750,522],{"emptyLinePlaceholder":521},[460,63752,63753],{"class":462,"line":2074},[460,63754,63755],{"class":942},"            # 归一化像素值到0-1之间\n",[460,63757,63758,63761,63763,63766,63768],{"class":462,"line":2088},[460,63759,63760],{"class":466},"            normalized_image_array ",[460,63762,894],{"class":887},[460,63764,63765],{"class":466}," image_array ",[460,63767,8331],{"class":887},[460,63769,63770],{"class":900}," 255.0\n",[460,63772,63773],{"class":462,"line":2103},[460,63774,522],{"emptyLinePlaceholder":521},[460,63776,63777],{"class":462,"line":2122},[460,63778,63779],{"class":942},"            # print(image_path)\n",[460,63781,63782],{"class":462,"line":2144},[460,63783,63784],{"class":942},"            # print(normalized_image_array.shape)\n",[460,63786,63787],{"class":462,"line":2158},[460,63788,63789],{"class":942},"            # 累积归一化后的像素值和像素数量\n",[460,63791,63792,63795,63797],{"class":462,"line":2163},[460,63793,63794],{"class":466},"            total_pixels ",[460,63796,3467],{"class":887},[460,63798,63799],{"class":466}," normalized_image_array.size\n",[460,63801,63802],{"class":462,"line":2168},[460,63803,63804],{"class":942},"            # 是把图片在高度和宽度方向求和，得到每个通道的总和（RGB 三个通道分别求）\n",[460,63806,63807,63810,63812,63815,63818,63820,63822,63824,63826,63828],{"class":462,"line":2183},[460,63808,63809],{"class":466},"            sum_normalized_pixel_values ",[460,63811,3467],{"class":887},[460,63813,63814],{"class":466}," np.sum(normalized_image_array, ",[460,63816,63817],{"class":3380},"axis",[460,63819,894],{"class":887},[460,63821,2174],{"class":466},[460,63823,936],{"class":900},[460,63825,904],{"class":466},[460,63827,901],{"class":900},[460,63829,6311],{"class":466},[460,63831,63832],{"class":462,"line":2194},[460,63833,522],{"emptyLinePlaceholder":521},[460,63835,63836],{"class":462,"line":2199},[460,63837,63838],{"class":942},"# 用像素总和\u002F像素总数 就得到每个通道的均值\n",[460,63840,63841,63844,63846,63849,63851],{"class":462,"line":2204},[460,63842,63843],{"class":466},"mean ",[460,63845,894],{"class":887},[460,63847,63848],{"class":466}," sum_normalized_pixel_values ",[460,63850,8331],{"class":887},[460,63852,63853],{"class":466}," total_pixels\n",[460,63855,63856],{"class":462,"line":2212},[460,63857,522],{"emptyLinePlaceholder":521},[460,63859,63860,63863,63865,63867,63869],{"class":462,"line":2257},[460,63861,63862],{"class":466},"sum_squared_diff ",[460,63864,894],{"class":887},[460,63866,63646],{"class":466},[460,63868,913],{"class":900},[460,63870,3754],{"class":466},[460,63872,63873],{"class":462,"line":2285},[460,63874,522],{"emptyLinePlaceholder":521},[460,63876,63877],{"class":462,"line":2298},[460,63878,63879],{"class":942},"# os.walk(folder_path)：遍历文件夹里所有文件和子文件夹\n",[460,63881,63882],{"class":462,"line":2303},[460,63883,63884],{"class":942},"# filename.endswith(...)：只选择图片文件（jpg\u002Fpng\u002Fbmp）\n",[460,63886,63887],{"class":462,"line":2308},[460,63888,63889],{"class":942},"# os.path.join(root, filename)：得到每张图片的完整路径\n",[460,63891,63892],{"class":462,"line":2318},[460,63893,63894],{"class":942},"# Image.open(image_path)：打开图片\n",[460,63896,63897],{"class":462,"line":2333},[460,63898,63899],{"class":942},"# np.array(image)：把图片转成 numpy 数组，形状一般是 (高度, 宽度, 3)\n",[460,63901,63902,63904,63906,63908],{"class":462,"line":2338},[460,63903,19547],{"class":887},[460,63905,63669],{"class":466},[460,63907,11713],{"class":887},[460,63909,63674],{"class":466},[460,63911,63912,63914,63916,63918],{"class":462,"line":2343},[460,63913,19722],{"class":887},[460,63915,63681],{"class":466},[460,63917,11713],{"class":887},[460,63919,63686],{"class":466},[460,63921,63922,63924,63926,63928,63930,63932,63934,63936,63938,63940],{"class":462,"line":2353},[460,63923,3702],{"class":887},[460,63925,63693],{"class":466},[460,63927,63696],{"class":1353},[460,63929,904],{"class":466},[460,63931,63701],{"class":1353},[460,63933,904],{"class":466},[460,63935,63706],{"class":1353},[460,63937,904],{"class":466},[460,63939,63711],{"class":1353},[460,63941,63942],{"class":466},")):\n",[460,63944,63945,63947,63949],{"class":462,"line":2368},[460,63946,61977],{"class":466},[460,63948,894],{"class":887},[460,63950,63726],{"class":466},[460,63952,63953,63955,63957],{"class":462,"line":2381},[460,63954,63731],{"class":466},[460,63956,894],{"class":887},[460,63958,63736],{"class":466},[460,63960,63961,63963,63965],{"class":462,"line":2394},[460,63962,63741],{"class":466},[460,63964,894],{"class":887},[460,63966,63746],{"class":466},[460,63968,63969],{"class":462,"line":2399},[460,63970,63755],{"class":942},[460,63972,63973,63975,63977,63979,63981],{"class":462,"line":2404},[460,63974,63760],{"class":466},[460,63976,894],{"class":887},[460,63978,63765],{"class":466},[460,63980,8331],{"class":887},[460,63982,63770],{"class":900},[460,63984,63985],{"class":462,"line":2414},[460,63986,63784],{"class":942},[460,63988,63989],{"class":462,"line":2428},[460,63990,63991],{"class":942},"            # print(mean.shape)\n",[460,63993,63994],{"class":462,"line":2440},[460,63995,63779],{"class":942},[460,63997,63998],{"class":462,"line":2445},[460,63999,522],{"emptyLinePlaceholder":521},[460,64001,64002,64005],{"class":462,"line":2450},[460,64003,64004],{"class":887},"            try",[460,64006,20257],{"class":466},[460,64008,64009,64012,64014,64017,64019,64022,64024],{"class":462,"line":2460},[460,64010,64011],{"class":466},"                diff ",[460,64013,894],{"class":887},[460,64015,64016],{"class":466}," (normalized_image_array ",[460,64018,17259],{"class":887},[460,64020,64021],{"class":466}," mean) ",[460,64023,27126],{"class":887},[460,64025,64026],{"class":900}," 2\n",[460,64028,64029,64032,64034,64037,64039,64041,64043,64045,64047,64049],{"class":462,"line":2473},[460,64030,64031],{"class":466},"                sum_squared_diff ",[460,64033,3467],{"class":887},[460,64035,64036],{"class":466}," np.sum(diff, ",[460,64038,63817],{"class":3380},[460,64040,894],{"class":887},[460,64042,2174],{"class":466},[460,64044,936],{"class":900},[460,64046,904],{"class":466},[460,64048,901],{"class":900},[460,64050,6311],{"class":466},[460,64052,64053,64056],{"class":462,"line":2487},[460,64054,64055],{"class":887},"            except",[460,64057,20257],{"class":466},[460,64059,64060,64063,64065,64067,64070],{"class":462,"line":2492},[460,64061,64062],{"class":900},"                print",[460,64064,2174],{"class":466},[460,64066,16804],{"class":887},[460,64068,64069],{"class":1353},"\"捕获到自定义异常\"",[460,64071,3754],{"class":466},[460,64073,64074],{"class":462,"line":2497},[460,64075,64076],{"class":942},"            # diff = (normalized_image_array - mean) ** 2\n",[460,64078,64079],{"class":462,"line":2505},[460,64080,64081],{"class":942},"            # sum_squared_diff += np.sum(diff, axis=(0, 1))\n",[460,64083,64084],{"class":462,"line":2516},[460,64085,522],{"emptyLinePlaceholder":521},[460,64087,64088,64091,64093,64096,64098],{"class":462,"line":2529},[460,64089,64090],{"class":466},"variance ",[460,64092,894],{"class":887},[460,64094,64095],{"class":466}," sum_squared_diff ",[460,64097,8331],{"class":887},[460,64099,63853],{"class":466},[460,64101,64102],{"class":462,"line":2542},[460,64103,522],{"emptyLinePlaceholder":521},[460,64105,64106,64108,64110,64113],{"class":462,"line":2559},[460,64107,46824],{"class":900},[460,64109,2174],{"class":466},[460,64111,64112],{"class":1353},"\"Mean:\"",[460,64114,64115],{"class":466},", mean)\n",[460,64117,64118,64120,64122,64125],{"class":462,"line":2564},[460,64119,46824],{"class":900},[460,64121,2174],{"class":466},[460,64123,64124],{"class":1353},"\"Variance:\"",[460,64126,64127],{"class":466},", variance)\n",[451,64129,64131],{"className":46787,"code":64130,"language":46789,"meta":32,"style":32},"import copy\nimport time\nimport pandas as pd\nimport torch\nfrom torch.utils.data import Dataset\nfrom torchvision.datasets import ImageFolder # 导入图像数据集,可以直接读取文件夹中的数据,并划分标签 \nfrom torchvision import transforms\nimport torch.utils.data as Data\nimport matplotlib.pyplot as plt\n# 导入模型\nfrom model import GoogLeNet, Inception\nfrom torch import nn\n\n# 处理训练集与验证集函数--->划分数据集\ndef train_val_data_process():\n    # 导入自己的数据集，并进行数据处理\n    # 定义数据集的路径\n    ROOT_PATH=r\".\u002Fdata\u002Ftrain\"\n\n    # 定义归一化方法\n    # 这里需要先计算一下数据集的均值和方差\n    #  mean_std.py 文件可以计算出均值和方差,然后把结果填入下面的 Normalize() 中\n    # 第一个参数是均值，第二个参数是方差\n    normalize=transforms.Normalize([0.162,0.151,0.138],[0.058,0.052,0.048])\n    # 定义数据集处理方法变量\n    train_transform=transforms.Compose([\n        # 调整图像大小为224*224\n        transforms.Resize((224,224)),\n        # 将图像转换为张量\n        transforms.ToTensor(),\n        normalize])\n    # 在进行转换tensor时,会将像素值归一化到[0,1]之间\n    # 但是没有进行均值方差归一化处理,需要进行均值方差归一化处理，使归一化后的数据符合标准正态分布\n\n    # 加载数据集\n    # 传入数据集路径与处理方法\n    train_data=ImageFolder(ROOT_PATH,transform=train_transform)\n\n    train_data,val_data=Data.random_split(train_data,[round(0.8*len(train_data)),round(0.2*len(train_data))])\n    train_dataloader = Data.DataLoader(dataset=train_data,\n                                       batch_size=32,\n                                       shuffle=True,\n                                       # 规定8个进程\n                                       num_workers=8)\n    val_dataloader=Data.DataLoader(dataset=val_data,\n                                   batch_size=32,\n                                   shuffle=True,\n                                   num_workers=8)\n    return train_dataloader,val_dataloader\n\n# 验证是否出错\n# train_val_data_process()\n\n# 定义模型训练函数\ndef train_model_process(model,train_dataloader,val_dataloader,num_epochs):\n    device=torch.device(\"cuda\" if torch.cuda.is_available() else 'cpu')\n\n    # 定义优化器\n    # model.parameters()表示把模型里所有可训练的参数（权重、偏置）传给优化器\n    # lr为学习率\n    optimizer=torch.optim.Adam(model.parameters(),lr=0.001)\n\n    # 定义损失函数使用交叉熵损失函数\n    criterion=nn.CrossEntropyLoss()\n\n    # 将模型放到GPU中进行训练\n    model=model.to(device)\n    # 复制当前模型的参数\n    # 把model（PyTorch的神经网络）的当前参数（权重 \u002F 偏置等）完整复制一份，放到best_model_wts变量里\n    # ，保证这份拷贝不会随着后续训练改变 —— 常用于保存“到目前为止表现最好的模型参数”\n    best_model_wts=copy.deepcopy(model.state_dict())\n\n    # 初始化参数\n    # 最高准确度\n    best_acc=0.0\n    # 训练集损失列表\n    train_loss_all=[]\n    # 验证集函数列表\n    val_loss_all=[]\n    # 训练集准确度列表\n    train_acc_all=[]\n    # 验证集准确度列表\n    val_acc_all=[]\n\n    # 保存当前时间--->方便看每轮训练的时间\n    since=time.time()\n\n    # 准备工作完成--->开始训练模型\n    for epoch in range(num_epochs):\n        print(\"Epoch {}\u002F{}\".format(epoch,num_epochs-1))\n        print(\"-\"*10)\n\n        # 初始化参数\n        # 训练集损失函数\n        train_loss=0.0\n        # 训练集准确度\n        train_corrects=0\n        # 验证集损失函数\n        val_loss=0.0\n        # 验证集准确度\n        val_corrects=0\n        # 训练集样本数量\n        train_num=0\n        # 验证集样本数量\n        val_num=0\n        # 将数据放到设备,并开始训练\n        for step,(b_x,b_y) in enumerate(train_dataloader):\n            # 将特征放入到训练设备\n            b_x=b_x.to(device)\n            # 将标签放入到训练设备当中\n            b_y=b_y.to(device)\n            # 设置模型为训练模式\n            model.train()\n            # 将数据放到模型当中,开始前向传播\n            # 前向传播过程,输入一个batch,输出为一个batch中对应的预测\n            output=model(b_x)\n            # 从网络输出 output 的每一行里，找出数值最大的下标（类别），作为模型预测的标签\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算每一个batch的损失函数\n            loss=criterion(output,b_y)\n            # 将梯度初始化为0\n            optimizer.zero_grad()\n            # 梯度置为0后再进行反向传播\n            loss.backward()\n            # 根据网络反向传播的梯度信息来更新网络的参数，以起到降低loss函数计算的作用\n            optimizer.step()\n            # loss.item()指的是batch的平均损失\n            train_loss+=loss.item()*b_x.size(0)\n            # 计算每个批次中正确预测的数量\n            train_corrects+=torch.sum(pre_lab==b_y.data)\n            # 计算目前为止一共处理了多少样本\n            train_num+=b_x.size(0)\n        # 验证数据\n        for step ,(b_x,b_y) in enumerate(val_dataloader):\n            # 将特征放到验证设备当中\n            b_x=b_x.to(device)\n            # 将标签放到放到训练设备当中\n            b_y=b_y.to(device)\n            # 开启验证模式，设置模型为评估模式\n            model.eval()\n            # 验证时不计算梯度以节省内存\u002F计算\n            with torch.no_grad():\n                # 前向传播过程，输入一个batch,输出为一个batch中对应的预测\n                output=model(b_x)\n                # 查找每一行中最大值对应的下标\n                pre_lab=torch.argmax(output,dim=1)\n                # 计算验证集上的当前 batch 损失\n                val_batch_loss=criterion(output,b_y)\n                # 对损失函数进行累加（按样本数加权）\n                val_loss+=val_batch_loss.item()*b_x.size(0)\n                val_corrects+=torch.sum(pre_lab==b_y.data)\n            # 当前用于验证的样本数量\n            val_num+=b_x.size(0)\n        # 计算并保存每一次迭代的loss值和准确率\n        # 计算并保存训练集的loss值\n        train_loss_all.append(train_loss\u002Ftrain_num)\n        # 取双精度\n        # 计算并保存训练集的准确率\n        train_acc_all.append(train_corrects.double().item()\u002Ftrain_num)\n        # 计算并保存验证集的loss值\n        val_loss_all.append(val_loss\u002Fval_num)\n        # 计算并保存验证集的准确率\n        val_acc_all.append(val_corrects.double().item()\u002Fval_num)\n\n        # 打印训练一轮的loss值和准确率\n        print('{}train loss:{:.4f} train acc:{:.4f}'.format(epoch,train_loss_all[-1],train_acc_all[-1]))\n        print('{}val loss:{:.4f} val acc:{:.4f}'.format(epoch,val_loss_all[-1],val_acc_all[-1]))\n\n        # 判断准确度--->保存最优模型\n        if val_acc_all[-1]>best_acc:\n            # 保存当前模型准确度\n            best_acc:float=val_acc_all[-1]\n            # 保存当前的准确度\n            # model.state_dict()是当前模型的所有参数（权重和偏置）\n            best_model_wts=copy.deepcopy(model.state_dict())\n\n        # 计算耗时\n        time_use=time.time()-since\n        print('训练和验证耗费的时间{:.0f}m{:.0f}s'.format(time_use\u002F\u002F60,time_use%60))\n    # 选择最优参数并保存\n    # 保存最佳模型权重字典\n    torch.save(best_model_wts,'.\u002Fbest_model.pth')\n    # 保存训练过程,可以使用pandas来进行保存,里边有个DataFrame()可以像列表一样保存数据\n    train_process=pd.DataFrame(data={\n        \"epoch\":range(num_epochs),\n        \"train_loss_all\":train_loss_all,\n        \"val_loss_all\":val_loss_all,\n        \"train_acc_all\":train_acc_all,\n        \"val_acc_all\":val_acc_all\n    })\n    # 返回训练保存的过程\n    return train_process\n\n# 将loss值和精度按照图片的形式展示出来\ndef matplot_acc_loss(train_process):\n    # 设置图的大小\n    plt.figure(figsize=(12,4))\n    # 设置图中有几张图\n    # 把当前画布分成1行2列的子图,当前位置是 第 1 个子图\n    # ①loss图\n    plt.subplot(1,2,1)\n    # 补充:\n    # plt.subplot(nrows, ncols, index)\n    # nrows：行数\n    # ncols：列数\n    # index：目前选中第几个子图（从1开始）\n    plt.plot(train_process[\"epoch\"],train_process.train_loss_all,'ro-',label='train loss')\n    plt.plot(train_process[\"epoch\"],train_process.val_loss_all,'bs--',label='val loss')\n    # 添加一个图例\n    plt.legend()\n    # 给轴添加标签\n    plt.xlabel('epoch')\n    plt.ylabel('loss')\n    # ②准确度图\n    plt.subplot(1,2,2)\n    plt.plot(train_process[\"epoch\"],train_process.train_acc_all,'ro-',label='train acc')\n    plt.plot(train_process[\"epoch\"],train_process.val_acc_all,'bs--',label='val acc')\n    # 添加图例\n    plt.legend()\n    plt.xlabel(\"epoch\")\n    plt.ylabel(\"acc\")\n    plt.show()\n\n# 正式开始训练:\nif __name__==\"__main__\":\n    # 将模型实例化\n    GoogLeNet=GoogLeNet(Inception)\n    train_dataloader,val_dataloader=train_val_data_process()\n    train_process=train_model_process(GoogLeNet,train_dataloader,val_dataloader,num_epochs=60)\n    matplot_acc_loss(train_process)\n",[457,64132,64133,64139,64145,64155,64161,64171,64185,64195,64205,64215,64219,64229,64239,64243,64247,64255,64260,64265,64284,64288,64293,64298,64303,64308,64349,64354,64364,64369,64382,64387,64392,64397,64402,64407,64411,64416,64421,64443,64447,64479,64493,64503,64513,64517,64527,64541,64551,64561,64571,64577,64581,64585,64589,64593,64597,64605,64625,64629,64633,64637,64641,64657,64661,64665,64673,64677,64681,64689,64693,64697,64701,64709,64713,64717,64721,64729,64733,64741,64745,64753,64757,64765,64769,64777,64781,64785,64793,64797,64801,64813,64837,64851,64855,64859,64863,64871,64875,64883,64887,64895,64899,64907,64911,64919,64923,64931,64935,64947,64951,64959,64963,64971,64975,64979,64983,64987,64995,64999,65015,65019,65027,65031,65035,65039,65043,65047,65051,65055,65071,65075,65087,65091,65103,65107,65119,65123,65131,65135,65143,65147,65151,65155,65161,65165,65173,65177,65193,65197,65205,65209,65225,65237,65241,65253,65257,65261,65269,65273,65277,65285,65289,65297,65301,65309,65313,65317,65359,65401,65405,65409,65425,65429,65445,65449,65453,65461,65465,65469,65481,65519,65523,65527,65535,65539,65553,65563,65569,65575,65581,65587,65591,65595,65601,65605,65609,65617,65621,65639,65643,65647,65651,65667,65671,65675,65679,65683,65687,65707,65727,65731,65735,65739,65747,65755,65759,65775,65795,65815,65819,65824,65833,65842,65847,65852,65857,65870,65875,65884,65893,65910],{"__ignoreMap":32},[460,64134,64135,64137],{"class":462,"line":463},[460,64136,46801],{"class":887},[460,64138,48227],{"class":466},[460,64140,64141,64143],{"class":462,"line":476},[460,64142,46801],{"class":887},[460,64144,48234],{"class":466},[460,64146,64147,64149,64151,64153],{"class":462,"line":482},[460,64148,46801],{"class":887},[460,64150,48245],{"class":466},[460,64152,47790],{"class":887},[460,64154,48250],{"class":466},[460,64156,64157,64159],{"class":462,"line":488},[460,64158,46801],{"class":887},[460,64160,46804],{"class":466},[460,64162,64163,64165,64167,64169],{"class":462,"line":494},[460,64164,47145],{"class":887},[460,64166,47822],{"class":466},[460,64168,46801],{"class":887},[460,64170,48267],{"class":466},[460,64172,64173,64175,64177,64179,64182],{"class":462,"line":500},[460,64174,47145],{"class":887},[460,64176,47775],{"class":466},[460,64178,46801],{"class":887},[460,64180,64181],{"class":466}," ImageFolder ",[460,64183,64184],{"class":942},"# 导入图像数据集,可以直接读取文件夹中的数据,并划分标签 \n",[460,64186,64187,64189,64191,64193],{"class":462,"line":506},[460,64188,47145],{"class":887},[460,64190,47805],{"class":466},[460,64192,46801],{"class":887},[460,64194,47810],{"class":466},[460,64196,64197,64199,64201,64203],{"class":462,"line":512},[460,64198,46801],{"class":887},[460,64200,47822],{"class":466},[460,64202,47790],{"class":887},[460,64204,47827],{"class":466},[460,64206,64207,64209,64211,64213],{"class":462,"line":518},[460,64208,46801],{"class":887},[460,64210,47839],{"class":466},[460,64212,47790],{"class":887},[460,64214,47844],{"class":466},[460,64216,64217],{"class":462,"line":525},[460,64218,48312],{"class":942},[460,64220,64221,64223,64225,64227],{"class":462,"line":531},[460,64222,47145],{"class":887},[460,64224,48319],{"class":466},[460,64226,46801],{"class":887},[460,64228,59335],{"class":466},[460,64230,64231,64233,64235,64237],{"class":462,"line":537},[460,64232,47145],{"class":887},[460,64234,47148],{"class":466},[460,64236,46801],{"class":887},[460,64238,47153],{"class":466},[460,64240,64241],{"class":462,"line":543},[460,64242,522],{"emptyLinePlaceholder":521},[460,64244,64245],{"class":462,"line":549},[460,64246,48347],{"class":942},[460,64248,64249,64251,64253],{"class":462,"line":555},[460,64250,48352],{"class":887},[460,64252,48355],{"class":929},[460,64254,48358],{"class":466},[460,64256,64257],{"class":462,"line":560},[460,64258,64259],{"class":942},"    # 导入自己的数据集，并进行数据处理\n",[460,64261,64262],{"class":462,"line":566},[460,64263,64264],{"class":942},"    # 定义数据集的路径\n",[460,64266,64267,64270,64272,64274,64276,64278,64282],{"class":462,"line":572},[460,64268,64269],{"class":900},"    ROOT_PATH",[460,64271,894],{"class":887},[460,64273,17389],{"class":887},[460,64275,16993],{"class":1353},[460,64277,6000],{"class":900},[460,64279,64281],{"class":64280},"sA_wV","\u002Fdata\u002Ftrain",[460,64283,41545],{"class":1353},[460,64285,64286],{"class":462,"line":578},[460,64287,522],{"emptyLinePlaceholder":521},[460,64289,64290],{"class":462,"line":812},[460,64291,64292],{"class":942},"    # 定义归一化方法\n",[460,64294,64295],{"class":462,"line":818},[460,64296,64297],{"class":942},"    # 这里需要先计算一下数据集的均值和方差\n",[460,64299,64300],{"class":462,"line":824},[460,64301,64302],{"class":942},"    #  mean_std.py 文件可以计算出均值和方差,然后把结果填入下面的 Normalize() 中\n",[460,64304,64305],{"class":462,"line":2074},[460,64306,64307],{"class":942},"    # 第一个参数是均值，第二个参数是方差\n",[460,64309,64310,64313,64315,64318,64321,64323,64326,64328,64331,64334,64337,64339,64342,64344,64347],{"class":462,"line":2088},[460,64311,64312],{"class":466},"    normalize",[460,64314,894],{"class":887},[460,64316,64317],{"class":466},"transforms.Normalize([",[460,64319,64320],{"class":900},"0.162",[460,64322,3986],{"class":466},[460,64324,64325],{"class":900},"0.151",[460,64327,3986],{"class":466},[460,64329,64330],{"class":900},"0.138",[460,64332,64333],{"class":466},"],[",[460,64335,64336],{"class":900},"0.058",[460,64338,3986],{"class":466},[460,64340,64341],{"class":900},"0.052",[460,64343,3986],{"class":466},[460,64345,64346],{"class":900},"0.048",[460,64348,13249],{"class":466},[460,64350,64351],{"class":462,"line":2103},[460,64352,64353],{"class":942},"    # 定义数据集处理方法变量\n",[460,64355,64356,64359,64361],{"class":462,"line":2122},[460,64357,64358],{"class":466},"    train_transform",[460,64360,894],{"class":887},[460,64362,64363],{"class":466},"transforms.Compose([\n",[460,64365,64366],{"class":462,"line":2144},[460,64367,64368],{"class":942},"        # 调整图像大小为224*224\n",[460,64370,64371,64374,64376,64378,64380],{"class":462,"line":2158},[460,64372,64373],{"class":466},"        transforms.Resize((",[460,64375,47907],{"class":900},[460,64377,3986],{"class":466},[460,64379,47907],{"class":900},[460,64381,58926],{"class":466},[460,64383,64384],{"class":462,"line":2163},[460,64385,64386],{"class":942},"        # 将图像转换为张量\n",[460,64388,64389],{"class":462,"line":2168},[460,64390,64391],{"class":466},"        transforms.ToTensor(),\n",[460,64393,64394],{"class":462,"line":2183},[460,64395,64396],{"class":466},"        normalize])\n",[460,64398,64399],{"class":462,"line":2194},[460,64400,64401],{"class":942},"    # 在进行转换tensor时,会将像素值归一化到[0,1]之间\n",[460,64403,64404],{"class":462,"line":2199},[460,64405,64406],{"class":942},"    # 但是没有进行均值方差归一化处理,需要进行均值方差归一化处理，使归一化后的数据符合标准正态分布\n",[460,64408,64409],{"class":462,"line":2204},[460,64410,522],{"emptyLinePlaceholder":521},[460,64412,64413],{"class":462,"line":2212},[460,64414,64415],{"class":942},"    # 加载数据集\n",[460,64417,64418],{"class":462,"line":2257},[460,64419,64420],{"class":942},"    # 传入数据集路径与处理方法\n",[460,64422,64423,64425,64427,64430,64433,64435,64438,64440],{"class":462,"line":2285},[460,64424,48363],{"class":466},[460,64426,894],{"class":887},[460,64428,64429],{"class":466},"ImageFolder(",[460,64431,64432],{"class":900},"ROOT_PATH",[460,64434,3986],{"class":466},[460,64436,64437],{"class":3380},"transform",[460,64439,894],{"class":887},[460,64441,64442],{"class":466},"train_transform)\n",[460,64444,64445],{"class":462,"line":2298},[460,64446,522],{"emptyLinePlaceholder":521},[460,64448,64449,64451,64453,64455,64457,64459,64461,64463,64465,64467,64469,64471,64473,64475,64477],{"class":462,"line":2303},[460,64450,48415],{"class":466},[460,64452,894],{"class":887},[460,64454,48420],{"class":466},[460,64456,48423],{"class":900},[460,64458,2174],{"class":466},[460,64460,48428],{"class":900},[460,64462,8320],{"class":887},[460,64464,23856],{"class":900},[460,64466,48435],{"class":466},[460,64468,48423],{"class":900},[460,64470,2174],{"class":466},[460,64472,48442],{"class":900},[460,64474,8320],{"class":887},[460,64476,23856],{"class":900},[460,64478,48449],{"class":466},[460,64480,64481,64483,64485,64487,64489,64491],{"class":462,"line":2308},[460,64482,48454],{"class":466},[460,64484,894],{"class":887},[460,64486,48459],{"class":466},[460,64488,3635],{"class":3380},[460,64490,894],{"class":887},[460,64492,47947],{"class":466},[460,64494,64495,64497,64499,64501],{"class":462,"line":2318},[460,64496,48470],{"class":3380},[460,64498,894],{"class":887},[460,64500,16942],{"class":900},[460,64502,1363],{"class":466},[460,64504,64505,64507,64509,64511],{"class":462,"line":2333},[460,64506,48482],{"class":3380},[460,64508,894],{"class":887},[460,64510,47882],{"class":900},[460,64512,1363],{"class":466},[460,64514,64515],{"class":462,"line":2338},[460,64516,48493],{"class":942},[460,64518,64519,64521,64523,64525],{"class":462,"line":2343},[460,64520,48498],{"class":3380},[460,64522,894],{"class":887},[460,64524,17130],{"class":900},[460,64526,3754],{"class":466},[460,64528,64529,64531,64533,64535,64537,64539],{"class":462,"line":2353},[460,64530,48509],{"class":466},[460,64532,894],{"class":887},[460,64534,47940],{"class":466},[460,64536,3635],{"class":3380},[460,64538,894],{"class":887},[460,64540,48520],{"class":466},[460,64542,64543,64545,64547,64549],{"class":462,"line":2368},[460,64544,48525],{"class":3380},[460,64546,894],{"class":887},[460,64548,16942],{"class":900},[460,64550,1363],{"class":466},[460,64552,64553,64555,64557,64559],{"class":462,"line":2381},[460,64554,48536],{"class":3380},[460,64556,894],{"class":887},[460,64558,47882],{"class":900},[460,64560,1363],{"class":466},[460,64562,64563,64565,64567,64569],{"class":462,"line":2394},[460,64564,48547],{"class":3380},[460,64566,894],{"class":887},[460,64568,17130],{"class":900},[460,64570,3754],{"class":466},[460,64572,64573,64575],{"class":462,"line":2399},[460,64574,20605],{"class":887},[460,64576,48560],{"class":466},[460,64578,64579],{"class":462,"line":2404},[460,64580,522],{"emptyLinePlaceholder":521},[460,64582,64583],{"class":462,"line":2414},[460,64584,48569],{"class":942},[460,64586,64587],{"class":462,"line":2428},[460,64588,48574],{"class":942},[460,64590,64591],{"class":462,"line":2440},[460,64592,522],{"emptyLinePlaceholder":521},[460,64594,64595],{"class":462,"line":2445},[460,64596,48583],{"class":942},[460,64598,64599,64601,64603],{"class":462,"line":2450},[460,64600,48352],{"class":887},[460,64602,48590],{"class":929},[460,64604,48593],{"class":466},[460,64606,64607,64609,64611,64613,64615,64617,64619,64621,64623],{"class":462,"line":2460},[460,64608,47644],{"class":466},[460,64610,894],{"class":887},[460,64612,46860],{"class":466},[460,64614,47651],{"class":1353},[460,64616,3766],{"class":887},[460,64618,47656],{"class":466},[460,64620,3763],{"class":887},[460,64622,48612],{"class":1353},[460,64624,3754],{"class":466},[460,64626,64627],{"class":462,"line":2473},[460,64628,522],{"emptyLinePlaceholder":521},[460,64630,64631],{"class":462,"line":2487},[460,64632,48627],{"class":942},[460,64634,64635],{"class":462,"line":2492},[460,64636,48632],{"class":942},[460,64638,64639],{"class":462,"line":2497},[460,64640,48637],{"class":942},[460,64642,64643,64645,64647,64649,64651,64653,64655],{"class":462,"line":2505},[460,64644,48642],{"class":466},[460,64646,894],{"class":887},[460,64648,48647],{"class":466},[460,64650,48650],{"class":3380},[460,64652,894],{"class":887},[460,64654,48655],{"class":900},[460,64656,3754],{"class":466},[460,64658,64659],{"class":462,"line":2516},[460,64660,522],{"emptyLinePlaceholder":521},[460,64662,64663],{"class":462,"line":2529},[460,64664,48666],{"class":942},[460,64666,64667,64669,64671],{"class":462,"line":2542},[460,64668,48671],{"class":466},[460,64670,894],{"class":887},[460,64672,48676],{"class":466},[460,64674,64675],{"class":462,"line":2559},[460,64676,522],{"emptyLinePlaceholder":521},[460,64678,64679],{"class":462,"line":2564},[460,64680,48685],{"class":942},[460,64682,64683,64685,64687],{"class":462,"line":2569},[460,64684,47696],{"class":466},[460,64686,894],{"class":887},[460,64688,48694],{"class":466},[460,64690,64691],{"class":462,"line":2579},[460,64692,48699],{"class":942},[460,64694,64695],{"class":462,"line":2597},[460,64696,48704],{"class":942},[460,64698,64699],{"class":462,"line":2610},[460,64700,48709],{"class":942},[460,64702,64703,64705,64707],{"class":462,"line":2621},[460,64704,48714],{"class":466},[460,64706,894],{"class":887},[460,64708,48719],{"class":466},[460,64710,64711],{"class":462,"line":2634},[460,64712,522],{"emptyLinePlaceholder":521},[460,64714,64715],{"class":462,"line":2648},[460,64716,48732],{"class":942},[460,64718,64719],{"class":462,"line":2653},[460,64720,48737],{"class":942},[460,64722,64723,64725,64727],{"class":462,"line":2658},[460,64724,48742],{"class":466},[460,64726,894],{"class":887},[460,64728,48747],{"class":900},[460,64730,64731],{"class":462,"line":2670},[460,64732,48752],{"class":942},[460,64734,64735,64737,64739],{"class":462,"line":2683},[460,64736,48757],{"class":466},[460,64738,894],{"class":887},[460,64740,48762],{"class":466},[460,64742,64743],{"class":462,"line":2695},[460,64744,48767],{"class":942},[460,64746,64747,64749,64751],{"class":462,"line":2700},[460,64748,48772],{"class":466},[460,64750,894],{"class":887},[460,64752,48762],{"class":466},[460,64754,64755],{"class":462,"line":2709},[460,64756,48781],{"class":942},[460,64758,64759,64761,64763],{"class":462,"line":2718},[460,64760,48786],{"class":466},[460,64762,894],{"class":887},[460,64764,48762],{"class":466},[460,64766,64767],{"class":462,"line":2723},[460,64768,48795],{"class":942},[460,64770,64771,64773,64775],{"class":462,"line":2732},[460,64772,48800],{"class":466},[460,64774,894],{"class":887},[460,64776,48762],{"class":466},[460,64778,64779],{"class":462,"line":2750},[460,64780,522],{"emptyLinePlaceholder":521},[460,64782,64783],{"class":462,"line":2782},[460,64784,48813],{"class":942},[460,64786,64787,64789,64791],{"class":462,"line":2809},[460,64788,48818],{"class":466},[460,64790,894],{"class":887},[460,64792,48823],{"class":466},[460,64794,64795],{"class":462,"line":2836},[460,64796,522],{"emptyLinePlaceholder":521},[460,64798,64799],{"class":462,"line":2856},[460,64800,48836],{"class":942},[460,64802,64803,64805,64807,64809,64811],{"class":462,"line":2865},[460,64804,19722],{"class":887},[460,64806,48843],{"class":466},[460,64808,11713],{"class":887},[460,64810,48848],{"class":900},[460,64812,48851],{"class":466},[460,64814,64815,64817,64819,64821,64823,64825,64827,64829,64831,64833,64835],{"class":462,"line":2881},[460,64816,48856],{"class":900},[460,64818,2174],{"class":466},[460,64820,48861],{"class":1353},[460,64822,48864],{"class":900},[460,64824,8331],{"class":1353},[460,64826,48864],{"class":900},[460,64828,16993],{"class":1353},[460,64830,48873],{"class":466},[460,64832,17259],{"class":887},[460,64834,901],{"class":900},[460,64836,6311],{"class":466},[460,64838,64839,64841,64843,64845,64847,64849],{"class":462,"line":2887},[460,64840,48856],{"class":900},[460,64842,2174],{"class":466},[460,64844,48888],{"class":1353},[460,64846,8320],{"class":887},[460,64848,2096],{"class":900},[460,64850,3754],{"class":466},[460,64852,64853],{"class":462,"line":2893},[460,64854,522],{"emptyLinePlaceholder":521},[460,64856,64857],{"class":462,"line":2899},[460,64858,48903],{"class":942},[460,64860,64861],{"class":462,"line":2905},[460,64862,48908],{"class":942},[460,64864,64865,64867,64869],{"class":462,"line":2911},[460,64866,48913],{"class":466},[460,64868,894],{"class":887},[460,64870,48747],{"class":900},[460,64872,64873],{"class":462,"line":2920},[460,64874,48922],{"class":942},[460,64876,64877,64879,64881],{"class":462,"line":2929},[460,64878,48927],{"class":466},[460,64880,894],{"class":887},[460,64882,19606],{"class":900},[460,64884,64885],{"class":462,"line":2935},[460,64886,48936],{"class":942},[460,64888,64889,64891,64893],{"class":462,"line":2948},[460,64890,48941],{"class":466},[460,64892,894],{"class":887},[460,64894,48747],{"class":900},[460,64896,64897],{"class":462,"line":2954},[460,64898,48950],{"class":942},[460,64900,64901,64903,64905],{"class":462,"line":2965},[460,64902,48955],{"class":466},[460,64904,894],{"class":887},[460,64906,19606],{"class":900},[460,64908,64909],{"class":462,"line":2976},[460,64910,48964],{"class":942},[460,64912,64913,64915,64917],{"class":462,"line":2987},[460,64914,48969],{"class":466},[460,64916,894],{"class":887},[460,64918,19606],{"class":900},[460,64920,64921],{"class":462,"line":2998},[460,64922,48978],{"class":942},[460,64924,64925,64927,64929],{"class":462,"line":3003},[460,64926,48983],{"class":466},[460,64928,894],{"class":887},[460,64930,19606],{"class":900},[460,64932,64933],{"class":462,"line":3008},[460,64934,48992],{"class":942},[460,64936,64937,64939,64941,64943,64945],{"class":462,"line":3018},[460,64938,19924],{"class":887},[460,64940,48006],{"class":466},[460,64942,11713],{"class":887},[460,64944,48011],{"class":900},[460,64946,49005],{"class":466},[460,64948,64949],{"class":462,"line":3028},[460,64950,49010],{"class":942},[460,64952,64953,64955,64957],{"class":462,"line":3038},[460,64954,49015],{"class":466},[460,64956,894],{"class":887},[460,64958,49020],{"class":466},[460,64960,64961],{"class":462,"line":3048},[460,64962,49025],{"class":942},[460,64964,64965,64967,64969],{"class":462,"line":3053},[460,64966,49030],{"class":466},[460,64968,894],{"class":887},[460,64970,49035],{"class":466},[460,64972,64973],{"class":462,"line":3058},[460,64974,49040],{"class":942},[460,64976,64977],{"class":462,"line":3068},[460,64978,49045],{"class":466},[460,64980,64981],{"class":462,"line":3078},[460,64982,49050],{"class":942},[460,64984,64985],{"class":462,"line":3088},[460,64986,49055],{"class":942},[460,64988,64989,64991,64993],{"class":462,"line":3098},[460,64990,49060],{"class":466},[460,64992,894],{"class":887},[460,64994,49065],{"class":466},[460,64996,64997],{"class":462,"line":3103},[460,64998,49070],{"class":942},[460,65000,65001,65003,65005,65007,65009,65011,65013],{"class":462,"line":3108},[460,65002,49075],{"class":466},[460,65004,894],{"class":887},[460,65006,49080],{"class":466},[460,65008,49083],{"class":3380},[460,65010,894],{"class":887},[460,65012,901],{"class":900},[460,65014,3754],{"class":466},[460,65016,65017],{"class":462,"line":3118},[460,65018,49094],{"class":942},[460,65020,65021,65023,65025],{"class":462,"line":3128},[460,65022,49099],{"class":466},[460,65024,894],{"class":887},[460,65026,49104],{"class":466},[460,65028,65029],{"class":462,"line":3138},[460,65030,49109],{"class":942},[460,65032,65033],{"class":462,"line":3148},[460,65034,49114],{"class":466},[460,65036,65037],{"class":462,"line":3153},[460,65038,49119],{"class":942},[460,65040,65041],{"class":462,"line":3158},[460,65042,49124],{"class":466},[460,65044,65045],{"class":462,"line":3168},[460,65046,49129],{"class":942},[460,65048,65049],{"class":462,"line":3178},[460,65050,49134],{"class":466},[460,65052,65053],{"class":462,"line":3188},[460,65054,49139],{"class":942},[460,65056,65057,65059,65061,65063,65065,65067,65069],{"class":462,"line":3198},[460,65058,49144],{"class":466},[460,65060,3467],{"class":887},[460,65062,49149],{"class":466},[460,65064,8320],{"class":887},[460,65066,49154],{"class":466},[460,65068,936],{"class":900},[460,65070,3754],{"class":466},[460,65072,65073],{"class":462,"line":3203},[460,65074,49163],{"class":942},[460,65076,65077,65079,65081,65083,65085],{"class":462,"line":3208},[460,65078,49168],{"class":466},[460,65080,3467],{"class":887},[460,65082,49173],{"class":466},[460,65084,19471],{"class":887},[460,65086,49178],{"class":466},[460,65088,65089],{"class":462,"line":3218},[460,65090,49183],{"class":942},[460,65092,65093,65095,65097,65099,65101],{"class":462,"line":3228},[460,65094,49188],{"class":466},[460,65096,3467],{"class":887},[460,65098,49154],{"class":466},[460,65100,936],{"class":900},[460,65102,3754],{"class":466},[460,65104,65105],{"class":462,"line":3238},[460,65106,49201],{"class":942},[460,65108,65109,65111,65113,65115,65117],{"class":462,"line":3248},[460,65110,19924],{"class":887},[460,65112,49208],{"class":466},[460,65114,11713],{"class":887},[460,65116,48011],{"class":900},[460,65118,49215],{"class":466},[460,65120,65121],{"class":462,"line":3253},[460,65122,49220],{"class":942},[460,65124,65125,65127,65129],{"class":462,"line":3258},[460,65126,49015],{"class":466},[460,65128,894],{"class":887},[460,65130,49020],{"class":466},[460,65132,65133],{"class":462,"line":3268},[460,65134,49233],{"class":942},[460,65136,65137,65139,65141],{"class":462,"line":3278},[460,65138,49030],{"class":466},[460,65140,894],{"class":887},[460,65142,49035],{"class":466},[460,65144,65145],{"class":462,"line":3288},[460,65146,49246],{"class":942},[460,65148,65149],{"class":462,"line":3298},[460,65150,49251],{"class":466},[460,65152,65153],{"class":462,"line":3303},[460,65154,52661],{"class":942},[460,65156,65157,65159],{"class":462,"line":3308},[460,65158,49256],{"class":887},[460,65160,49259],{"class":466},[460,65162,65163],{"class":462,"line":3318},[460,65164,49264],{"class":942},[460,65166,65167,65169,65171],{"class":462,"line":3328},[460,65168,52676],{"class":466},[460,65170,894],{"class":887},[460,65172,49065],{"class":466},[460,65174,65175],{"class":462,"line":3337},[460,65176,49279],{"class":942},[460,65178,65179,65181,65183,65185,65187,65189,65191],{"class":462,"line":3347},[460,65180,52689],{"class":466},[460,65182,894],{"class":887},[460,65184,49080],{"class":466},[460,65186,49083],{"class":3380},[460,65188,894],{"class":887},[460,65190,901],{"class":900},[460,65192,3754],{"class":466},[460,65194,65195],{"class":462,"line":3352},[460,65196,49302],{"class":942},[460,65198,65199,65201,65203],{"class":462,"line":3358},[460,65200,52710],{"class":466},[460,65202,894],{"class":887},[460,65204,49104],{"class":466},[460,65206,65207],{"class":462,"line":3363},[460,65208,49317],{"class":942},[460,65210,65211,65213,65215,65217,65219,65221,65223],{"class":462,"line":3369},[460,65212,52723],{"class":466},[460,65214,3467],{"class":887},[460,65216,52728],{"class":466},[460,65218,8320],{"class":887},[460,65220,49154],{"class":466},[460,65222,936],{"class":900},[460,65224,3754],{"class":466},[460,65226,65227,65229,65231,65233,65235],{"class":462,"line":3386},[460,65228,52741],{"class":466},[460,65230,3467],{"class":887},[460,65232,49173],{"class":466},[460,65234,19471],{"class":887},[460,65236,49178],{"class":466},[460,65238,65239],{"class":462,"line":3392},[460,65240,52754],{"class":942},[460,65242,65243,65245,65247,65249,65251],{"class":462,"line":3406},[460,65244,52759],{"class":466},[460,65246,3467],{"class":887},[460,65248,49154],{"class":466},[460,65250,936],{"class":900},[460,65252,3754],{"class":466},[460,65254,65255],{"class":462,"line":3412},[460,65256,49374],{"class":942},[460,65258,65259],{"class":462,"line":3431},[460,65260,49379],{"class":942},[460,65262,65263,65265,65267],{"class":462,"line":3461},[460,65264,49384],{"class":466},[460,65266,8331],{"class":887},[460,65268,49389],{"class":466},[460,65270,65271],{"class":462,"line":3473},[460,65272,49394],{"class":942},[460,65274,65275],{"class":462,"line":3479},[460,65276,49399],{"class":942},[460,65278,65279,65281,65283],{"class":462,"line":3490},[460,65280,49404],{"class":466},[460,65282,8331],{"class":887},[460,65284,49389],{"class":466},[460,65286,65287],{"class":462,"line":3501},[460,65288,49413],{"class":942},[460,65290,65291,65293,65295],{"class":462,"line":3511},[460,65292,49418],{"class":466},[460,65294,8331],{"class":887},[460,65296,49423],{"class":466},[460,65298,65299],{"class":462,"line":3517},[460,65300,49428],{"class":942},[460,65302,65303,65305,65307],{"class":462,"line":3523},[460,65304,49433],{"class":466},[460,65306,8331],{"class":887},[460,65308,49423],{"class":466},[460,65310,65311],{"class":462,"line":3529},[460,65312,522],{"emptyLinePlaceholder":521},[460,65314,65315],{"class":462,"line":3535},[460,65316,49446],{"class":942},[460,65318,65319,65321,65323,65325,65327,65329,65331,65333,65335,65337,65339,65341,65343,65345,65347,65349,65351,65353,65355,65357],{"class":462,"line":3557},[460,65320,48856],{"class":900},[460,65322,2174],{"class":466},[460,65324,20113],{"class":1353},[460,65326,48864],{"class":900},[460,65328,49459],{"class":1353},[460,65330,17607],{"class":900},[460,65332,49464],{"class":887},[460,65334,612],{"class":900},[460,65336,49469],{"class":1353},[460,65338,17607],{"class":900},[460,65340,49464],{"class":887},[460,65342,612],{"class":900},[460,65344,20113],{"class":1353},[460,65346,49480],{"class":466},[460,65348,17259],{"class":887},[460,65350,901],{"class":900},[460,65352,49487],{"class":466},[460,65354,17259],{"class":887},[460,65356,901],{"class":900},[460,65358,49494],{"class":466},[460,65360,65361,65363,65365,65367,65369,65371,65373,65375,65377,65379,65381,65383,65385,65387,65389,65391,65393,65395,65397,65399],{"class":462,"line":3562},[460,65362,48856],{"class":900},[460,65364,2174],{"class":466},[460,65366,20113],{"class":1353},[460,65368,48864],{"class":900},[460,65370,49507],{"class":1353},[460,65372,17607],{"class":900},[460,65374,49464],{"class":887},[460,65376,612],{"class":900},[460,65378,49516],{"class":1353},[460,65380,17607],{"class":900},[460,65382,49464],{"class":887},[460,65384,612],{"class":900},[460,65386,20113],{"class":1353},[460,65388,49527],{"class":466},[460,65390,17259],{"class":887},[460,65392,901],{"class":900},[460,65394,49534],{"class":466},[460,65396,17259],{"class":887},[460,65398,901],{"class":900},[460,65400,49494],{"class":466},[460,65402,65403],{"class":462,"line":3568},[460,65404,522],{"emptyLinePlaceholder":521},[460,65406,65407],{"class":462,"line":3577},[460,65408,49549],{"class":942},[460,65410,65411,65413,65415,65417,65419,65421,65423],{"class":462,"line":3583},[460,65412,3702],{"class":887},[460,65414,49556],{"class":466},[460,65416,17259],{"class":887},[460,65418,901],{"class":900},[460,65420,17649],{"class":466},[460,65422,17668],{"class":887},[460,65424,49567],{"class":466},[460,65426,65427],{"class":462,"line":3616},[460,65428,49572],{"class":942},[460,65430,65431,65433,65435,65437,65439,65441,65443],{"class":462,"line":3622},[460,65432,49577],{"class":466},[460,65434,16793],{"class":900},[460,65436,894],{"class":887},[460,65438,49584],{"class":466},[460,65440,17259],{"class":887},[460,65442,901],{"class":900},[460,65444,13307],{"class":466},[460,65446,65447],{"class":462,"line":3645},[460,65448,49595],{"class":942},[460,65450,65451],{"class":462,"line":3651},[460,65452,49600],{"class":942},[460,65454,65455,65457,65459],{"class":462,"line":3668},[460,65456,49605],{"class":466},[460,65458,894],{"class":887},[460,65460,48719],{"class":466},[460,65462,65463],{"class":462,"line":3674},[460,65464,522],{"emptyLinePlaceholder":521},[460,65466,65467],{"class":462,"line":3680},[460,65468,49618],{"class":942},[460,65470,65471,65473,65475,65477,65479],{"class":462,"line":3686},[460,65472,49623],{"class":466},[460,65474,894],{"class":887},[460,65476,49628],{"class":466},[460,65478,17259],{"class":887},[460,65480,49633],{"class":466},[460,65482,65483,65485,65487,65489,65491,65493,65495,65497,65499,65501,65503,65505,65507,65509,65511,65513,65515,65517],{"class":462,"line":3699},[460,65484,48856],{"class":900},[460,65486,2174],{"class":466},[460,65488,49642],{"class":1353},[460,65490,17607],{"class":900},[460,65492,49647],{"class":887},[460,65494,612],{"class":900},[460,65496,17270],{"class":1353},[460,65498,17607],{"class":900},[460,65500,49647],{"class":887},[460,65502,612],{"class":900},[460,65504,49660],{"class":1353},[460,65506,49663],{"class":466},[460,65508,5245],{"class":887},[460,65510,16027],{"class":900},[460,65512,49670],{"class":466},[460,65514,2328],{"class":887},[460,65516,16027],{"class":900},[460,65518,6311],{"class":466},[460,65520,65521],{"class":462,"line":3715},[460,65522,53038],{"class":942},[460,65524,65525],{"class":462,"line":3757},[460,65526,53043],{"class":942},[460,65528,65529,65531,65533],{"class":462,"line":3778},[460,65530,53048],{"class":466},[460,65532,49699],{"class":1353},[460,65534,3754],{"class":466},[460,65536,65537],{"class":462,"line":3812},[460,65538,49716],{"class":942},[460,65540,65541,65543,65545,65547,65549,65551],{"class":462,"line":3830},[460,65542,49721],{"class":466},[460,65544,894],{"class":887},[460,65546,49726],{"class":466},[460,65548,49729],{"class":3380},[460,65550,894],{"class":887},[460,65552,18115],{"class":466},[460,65554,65555,65557,65559,65561],{"class":462,"line":3855},[460,65556,49738],{"class":1353},[460,65558,1357],{"class":466},[460,65560,49743],{"class":900},[460,65562,49746],{"class":466},[460,65564,65565,65567],{"class":462,"line":3861},[460,65566,49751],{"class":1353},[460,65568,49754],{"class":466},[460,65570,65571,65573],{"class":462,"line":3867},[460,65572,49759],{"class":1353},[460,65574,49762],{"class":466},[460,65576,65577,65579],{"class":462,"line":3876},[460,65578,49767],{"class":1353},[460,65580,49770],{"class":466},[460,65582,65583,65585],{"class":462,"line":3881},[460,65584,49775],{"class":1353},[460,65586,49778],{"class":466},[460,65588,65589],{"class":462,"line":3886},[460,65590,1679],{"class":466},[460,65592,65593],{"class":462,"line":3891},[460,65594,49787],{"class":942},[460,65596,65597,65599],{"class":462,"line":3900},[460,65598,20605],{"class":887},[460,65600,49794],{"class":466},[460,65602,65603],{"class":462,"line":3909},[460,65604,522],{"emptyLinePlaceholder":521},[460,65606,65607],{"class":462,"line":3914},[460,65608,49803],{"class":942},[460,65610,65611,65613,65615],{"class":462,"line":49896},[460,65612,48352],{"class":887},[460,65614,49810],{"class":929},[460,65616,49813],{"class":466},[460,65618,65619],{"class":462,"line":49923},[460,65620,49818],{"class":942},[460,65622,65623,65625,65627,65629,65631,65633,65635,65637],{"class":462,"line":49947},[460,65624,49823],{"class":466},[460,65626,48098],{"class":3380},[460,65628,894],{"class":887},[460,65630,2174],{"class":466},[460,65632,5531],{"class":900},[460,65634,3986],{"class":466},[460,65636,918],{"class":900},[460,65638,6311],{"class":466},[460,65640,65641],{"class":462,"line":49953},[460,65642,49842],{"class":942},[460,65644,65645],{"class":462,"line":49959},[460,65646,49847],{"class":942},[460,65648,65649],{"class":462,"line":49965},[460,65650,49852],{"class":942},[460,65652,65653,65655,65657,65659,65661,65663,65665],{"class":462,"line":49976},[460,65654,48132],{"class":466},[460,65656,901],{"class":900},[460,65658,3986],{"class":466},[460,65660,907],{"class":900},[460,65662,3986],{"class":466},[460,65664,901],{"class":900},[460,65666,3754],{"class":466},[460,65668,65669],{"class":462,"line":49987},[460,65670,49873],{"class":942},[460,65672,65673],{"class":462,"line":49993},[460,65674,49878],{"class":942},[460,65676,65677],{"class":462,"line":50010},[460,65678,49883],{"class":942},[460,65680,65681],{"class":462,"line":50033},[460,65682,49888],{"class":942},[460,65684,65685],{"class":462,"line":50056},[460,65686,49893],{"class":942},[460,65688,65689,65691,65693,65695,65697,65699,65701,65703,65705],{"class":462,"line":50062},[460,65690,49899],{"class":466},[460,65692,49902],{"class":1353},[460,65694,49905],{"class":466},[460,65696,49908],{"class":1353},[460,65698,3986],{"class":466},[460,65700,49913],{"class":3380},[460,65702,894],{"class":887},[460,65704,49918],{"class":1353},[460,65706,3754],{"class":466},[460,65708,65709,65711,65713,65715,65717,65719,65721,65723,65725],{"class":462,"line":50067},[460,65710,49899],{"class":466},[460,65712,49902],{"class":1353},[460,65714,49930],{"class":466},[460,65716,49933],{"class":1353},[460,65718,3986],{"class":466},[460,65720,49913],{"class":3380},[460,65722,894],{"class":887},[460,65724,49942],{"class":1353},[460,65726,3754],{"class":466},[460,65728,65729],{"class":462,"line":50076},[460,65730,49950],{"class":942},[460,65732,65733],{"class":462,"line":50086},[460,65734,49956],{"class":466},[460,65736,65737],{"class":462,"line":50092},[460,65738,49962],{"class":942},[460,65740,65741,65743,65745],{"class":462,"line":50097},[460,65742,49968],{"class":466},[460,65744,49971],{"class":1353},[460,65746,3754],{"class":466},[460,65748,65749,65751,65753],{"class":462,"line":50103},[460,65750,49979],{"class":466},[460,65752,49982],{"class":1353},[460,65754,3754],{"class":466},[460,65756,65757],{"class":462,"line":50116},[460,65758,49990],{"class":942},[460,65760,65761,65763,65765,65767,65769,65771,65773],{"class":462,"line":50122},[460,65762,48132],{"class":466},[460,65764,901],{"class":900},[460,65766,3986],{"class":466},[460,65768,907],{"class":900},[460,65770,3986],{"class":466},[460,65772,907],{"class":900},[460,65774,3754],{"class":466},[460,65776,65777,65779,65781,65783,65785,65787,65789,65791,65793],{"class":462,"line":50133},[460,65778,49899],{"class":466},[460,65780,49902],{"class":1353},[460,65782,50017],{"class":466},[460,65784,49908],{"class":1353},[460,65786,3986],{"class":466},[460,65788,49913],{"class":3380},[460,65790,894],{"class":887},[460,65792,50028],{"class":1353},[460,65794,3754],{"class":466},[460,65796,65797,65799,65801,65803,65805,65807,65809,65811,65813],{"class":462,"line":50144},[460,65798,49899],{"class":466},[460,65800,49902],{"class":1353},[460,65802,50040],{"class":466},[460,65804,49933],{"class":1353},[460,65806,3986],{"class":466},[460,65808,49913],{"class":3380},[460,65810,894],{"class":887},[460,65812,50051],{"class":1353},[460,65814,3754],{"class":466},[460,65816,65817],{"class":462,"line":50163},[460,65818,50059],{"class":942},[460,65820,65822],{"class":462,"line":65821},219,[460,65823,49956],{"class":466},[460,65825,65827,65829,65831],{"class":462,"line":65826},220,[460,65828,49968],{"class":466},[460,65830,49902],{"class":1353},[460,65832,3754],{"class":466},[460,65834,65836,65838,65840],{"class":462,"line":65835},221,[460,65837,49979],{"class":466},[460,65839,50081],{"class":1353},[460,65841,3754],{"class":466},[460,65843,65845],{"class":462,"line":65844},222,[460,65846,50089],{"class":466},[460,65848,65850],{"class":462,"line":65849},223,[460,65851,522],{"emptyLinePlaceholder":521},[460,65853,65855],{"class":462,"line":65854},224,[460,65856,50100],{"class":942},[460,65858,65860,65862,65864,65866,65868],{"class":462,"line":65859},225,[460,65861,18100],{"class":887},[460,65863,47627],{"class":900},[460,65865,19471],{"class":887},[460,65867,47632],{"class":1353},[460,65869,20257],{"class":466},[460,65871,65873],{"class":462,"line":65872},226,[460,65874,50119],{"class":942},[460,65876,65878,65880,65882],{"class":462,"line":65877},227,[460,65879,60850],{"class":466},[460,65881,894],{"class":887},[460,65883,60855],{"class":466},[460,65885,65887,65889,65891],{"class":462,"line":65886},228,[460,65888,50136],{"class":466},[460,65890,894],{"class":887},[460,65892,50141],{"class":466},[460,65894,65896,65898,65900,65902,65904,65906,65908],{"class":462,"line":65895},229,[460,65897,49721],{"class":466},[460,65899,894],{"class":887},[460,65901,60872],{"class":466},[460,65903,50154],{"class":3380},[460,65905,894],{"class":887},[460,65907,16027],{"class":900},[460,65909,3754],{"class":466},[460,65911,65913],{"class":462,"line":65912},230,[460,65914,50166],{"class":466},[115,65916,65918],{"id":65917},"_242测试代码","2.4.2.测试代码",[14,65920,65921],{},"使用测试集进行测试与推理",[451,65923,65925],{"className":46787,"code":65924,"language":46789,"meta":32,"style":32},"import torch\nimport torch.utils.data as Data\nfrom torchvision import transforms\nfrom torchvision.datasets import ImageFolder\nfrom model import GoogLeNet,Inception\n\n# 测试数据处理\ndef test_data_process():\n   # 导入自己的数据集，并进行数据处理\n    # 定义数据集的路径\n    ROOT_PATH=r\".\u002Fdata\u002Ftest\"\n\n    # 定义归一化方法\n    # 这里需要先计算一下数据集的均值和方差\n    #  mean_std.py 文件可以计算出均值和方差,然后把结果填入下面的 Normalize() 中\n    # 第一个参数是均值，第二个参数是方差\n    normalize=transforms.Normalize([0.162,0.151,0.138],[0.058,0.052,0.048])\n    # 定义数据集处理方法变量\n    train_transform=transforms.Compose([\n        # 调整图像大小为224*224\n        transforms.Resize((224,224)),\n        # 将图像转换为张量\n        transforms.ToTensor(),\n        normalize])\n    # 在进行转换tensor时,会将像素值归一化到[0,1]之间\n    # 但是没有进行均值方差归一化处理,需要进行均值方差归一化处理，使归一化后的数据符合标准正态分布\n\n    # 加载数据集\n    # 传入数据集路径与处理方法\n    test_data=ImageFolder(ROOT_PATH,transform=train_transform)\n    test_dataloader=Data.DataLoader(dataset=test_data,\n                                    # 这里是一张一张进行测试\n                                    batch_size=1,\n                                    shuffle=True,\n                                    num_workers=0)\n    return test_dataloader\n\n# 定义模型测试函数\ndef test_model_process(model,test_dataloader):\n    # 将模型放到设备当中，先进行判断\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n\n    # 设置初始化参数\n    test_corrects=0.0\n    test_num=0\n\n    # 进行模型测试\n    # 模型在推理的时候只进行前向传播，不再进行反向传播更新梯度了\n    # 不进行梯度计算，可以节省内存，加快运行速度\n    with torch.no_grad():\n        # 从数据中进行\n        for test_data_x,test_data_y in test_dataloader:\n            test_data_x=test_data_x.to(device)\n            test_data_y=test_data_y.to(device)\n            # 设置为验证模式\n            model.eval()\n            # 前向传播过程，输入为测试数据集,输出为对每个样本的预测值\n            output=model(test_data_x)\n            # 查找每一行中最大值对应的下标\n            pre_lab=torch.argmax(output,dim=1)\n            # 计算正确率\n            # .data表示是一个不带梯度信息的tensor\n            # 如果预测正确，则准确度test_corrects加1\n            test_corrects+=torch.sum(pre_lab==test_data_y.data)\n            # 将所有的测试样本进行累计\n            test_num+=test_data_x.size(0)\n\n        # 计算准确度\n        test_acc=test_corrects.double().item()\u002Ftest_num\n        # .item()的作用是：把只含1个数字的 Tensor 转成 Python 的数字\n        print(\"测试的准确率：\",test_acc)\n\n# 实现模型的测试功能\nif __name__==\"__main__\":\n    # 加载模型\n    model=GoogLeNet(Inception)\n    # 调用训练好的权重，把之前训练好、保存下来的模型参数重新装回模型里\n    # 使用torch中的load函数加载权重，利用model.load_state_dict将参数加回到模型当中\n    model.load_state_dict(torch.load('best_model.pth'))\n    # 数据加载\n    test_dataloader=test_data_process()\n    # 加载模型测试的函数\n    test_model_process(model,test_dataloader)\n\n    # 验证集推理实现：\n    # 加载数据加载的更详细一些\n    device=\"cuda\" if torch.cuda.is_available() else \"cpu\"\n    model=model.to(device)\n    # 设置类别，这样预测值就不展示数字，就直接展示这个种类了\n    # 顺序不可改变\n    classes=['猫','狗']\n    with torch.no_grad():\n        # 将数据和标签都放到设备当中\n        for b_x,b_y in test_dataloader:\n            b_x=b_x.to(device)\n            b_y=b_y.to(device)\n\n            # 设置模型为验证模式\n            model.eval()\n            # 模型推理结果\n            output=model(b_x)\n            # 获取最大下标，最大下标就是类别号\n            pre_lab=torch.argmax(output,dim=1)\n            # 取出张量中的数值\n            result=pre_lab.item()\n            label=b_y.item()\n            print(\"预测值：\",classes[result],\"------\",\"真实值：\",classes[label])\n",[457,65926,65927,65933,65943,65953,65964,65974,65978,65982,65990,65995,65999,66016,66020,66024,66028,66032,66036,66068,66072,66080,66084,66096,66100,66104,66108,66112,66116,66120,66124,66128,66146,66160,66164,66174,66184,66194,66200,66204,66208,66216,66220,66236,66244,66248,66252,66260,66268,66272,66276,66280,66284,66290,66294,66304,66312,66320,66324,66328,66332,66340,66344,66360,66364,66368,66372,66384,66388,66400,66404,66408,66420,66424,66434,66438,66442,66454,66458,66466,66470,66474,66482,66486,66494,66498,66502,66506,66510,66514,66530,66538,66542,66546,66564,66570,66574,66584,66592,66600,66604,66608,66612,66616,66624,66628,66644,66648,66656,66664],{"__ignoreMap":32},[460,65928,65929,65931],{"class":462,"line":463},[460,65930,46801],{"class":887},[460,65932,46804],{"class":466},[460,65934,65935,65937,65939,65941],{"class":462,"line":476},[460,65936,46801],{"class":887},[460,65938,47822],{"class":466},[460,65940,47790],{"class":887},[460,65942,47827],{"class":466},[460,65944,65945,65947,65949,65951],{"class":462,"line":482},[460,65946,47145],{"class":887},[460,65948,47805],{"class":466},[460,65950,46801],{"class":887},[460,65952,47810],{"class":466},[460,65954,65955,65957,65959,65961],{"class":462,"line":488},[460,65956,47145],{"class":887},[460,65958,47775],{"class":466},[460,65960,46801],{"class":887},[460,65962,65963],{"class":466}," ImageFolder\n",[460,65965,65966,65968,65970,65972],{"class":462,"line":494},[460,65967,47145],{"class":887},[460,65969,48319],{"class":466},[460,65971,46801],{"class":887},[460,65973,60944],{"class":466},[460,65975,65976],{"class":462,"line":500},[460,65977,522],{"emptyLinePlaceholder":521},[460,65979,65980],{"class":462,"line":506},[460,65981,50256],{"class":942},[460,65983,65984,65986,65988],{"class":462,"line":512},[460,65985,48352],{"class":887},[460,65987,50263],{"class":929},[460,65989,48358],{"class":466},[460,65991,65992],{"class":462,"line":518},[460,65993,65994],{"class":942},"   # 导入自己的数据集，并进行数据处理\n",[460,65996,65997],{"class":462,"line":525},[460,65998,64264],{"class":942},[460,66000,66001,66003,66005,66007,66009,66011,66014],{"class":462,"line":531},[460,66002,64269],{"class":900},[460,66004,894],{"class":887},[460,66006,17389],{"class":887},[460,66008,16993],{"class":1353},[460,66010,6000],{"class":900},[460,66012,66013],{"class":64280},"\u002Fdata\u002Ftest",[460,66015,41545],{"class":1353},[460,66017,66018],{"class":462,"line":537},[460,66019,522],{"emptyLinePlaceholder":521},[460,66021,66022],{"class":462,"line":543},[460,66023,64292],{"class":942},[460,66025,66026],{"class":462,"line":549},[460,66027,64297],{"class":942},[460,66029,66030],{"class":462,"line":555},[460,66031,64302],{"class":942},[460,66033,66034],{"class":462,"line":560},[460,66035,64307],{"class":942},[460,66037,66038,66040,66042,66044,66046,66048,66050,66052,66054,66056,66058,66060,66062,66064,66066],{"class":462,"line":566},[460,66039,64312],{"class":466},[460,66041,894],{"class":887},[460,66043,64317],{"class":466},[460,66045,64320],{"class":900},[460,66047,3986],{"class":466},[460,66049,64325],{"class":900},[460,66051,3986],{"class":466},[460,66053,64330],{"class":900},[460,66055,64333],{"class":466},[460,66057,64336],{"class":900},[460,66059,3986],{"class":466},[460,66061,64341],{"class":900},[460,66063,3986],{"class":466},[460,66065,64346],{"class":900},[460,66067,13249],{"class":466},[460,66069,66070],{"class":462,"line":572},[460,66071,64353],{"class":942},[460,66073,66074,66076,66078],{"class":462,"line":578},[460,66075,64358],{"class":466},[460,66077,894],{"class":887},[460,66079,64363],{"class":466},[460,66081,66082],{"class":462,"line":812},[460,66083,64368],{"class":942},[460,66085,66086,66088,66090,66092,66094],{"class":462,"line":818},[460,66087,64373],{"class":466},[460,66089,47907],{"class":900},[460,66091,3986],{"class":466},[460,66093,47907],{"class":900},[460,66095,58926],{"class":466},[460,66097,66098],{"class":462,"line":824},[460,66099,64386],{"class":942},[460,66101,66102],{"class":462,"line":2074},[460,66103,64391],{"class":466},[460,66105,66106],{"class":462,"line":2088},[460,66107,64396],{"class":466},[460,66109,66110],{"class":462,"line":2103},[460,66111,64401],{"class":942},[460,66113,66114],{"class":462,"line":2122},[460,66115,64406],{"class":942},[460,66117,66118],{"class":462,"line":2144},[460,66119,522],{"emptyLinePlaceholder":521},[460,66121,66122],{"class":462,"line":2158},[460,66123,64415],{"class":942},[460,66125,66126],{"class":462,"line":2163},[460,66127,64420],{"class":942},[460,66129,66130,66132,66134,66136,66138,66140,66142,66144],{"class":462,"line":2168},[460,66131,50270],{"class":466},[460,66133,894],{"class":887},[460,66135,64429],{"class":466},[460,66137,64432],{"class":900},[460,66139,3986],{"class":466},[460,66141,64437],{"class":3380},[460,66143,894],{"class":887},[460,66145,64442],{"class":466},[460,66147,66148,66150,66152,66154,66156,66158],{"class":462,"line":2183},[460,66149,50327],{"class":466},[460,66151,894],{"class":887},[460,66153,47940],{"class":466},[460,66155,3635],{"class":3380},[460,66157,894],{"class":887},[460,66159,50338],{"class":466},[460,66161,66162],{"class":462,"line":2194},[460,66163,50343],{"class":942},[460,66165,66166,66168,66170,66172],{"class":462,"line":2199},[460,66167,50348],{"class":3380},[460,66169,894],{"class":887},[460,66171,901],{"class":900},[460,66173,1363],{"class":466},[460,66175,66176,66178,66180,66182],{"class":462,"line":2204},[460,66177,50359],{"class":3380},[460,66179,894],{"class":887},[460,66181,47882],{"class":900},[460,66183,1363],{"class":466},[460,66185,66186,66188,66190,66192],{"class":462,"line":2212},[460,66187,50370],{"class":3380},[460,66189,894],{"class":887},[460,66191,936],{"class":900},[460,66193,3754],{"class":466},[460,66195,66196,66198],{"class":462,"line":2257},[460,66197,20605],{"class":887},[460,66199,50383],{"class":466},[460,66201,66202],{"class":462,"line":2285},[460,66203,522],{"emptyLinePlaceholder":521},[460,66205,66206],{"class":462,"line":2298},[460,66207,50392],{"class":942},[460,66209,66210,66212,66214],{"class":462,"line":2303},[460,66211,48352],{"class":887},[460,66213,50399],{"class":929},[460,66215,50402],{"class":466},[460,66217,66218],{"class":462,"line":2308},[460,66219,50407],{"class":942},[460,66221,66222,66224,66226,66228,66230,66232,66234],{"class":462,"line":2318},[460,66223,47644],{"class":466},[460,66225,894],{"class":887},[460,66227,47651],{"class":1353},[460,66229,3766],{"class":887},[460,66231,47656],{"class":466},[460,66233,3763],{"class":887},[460,66235,50424],{"class":1353},[460,66237,66238,66240,66242],{"class":462,"line":2333},[460,66239,47696],{"class":466},[460,66241,894],{"class":887},[460,66243,48694],{"class":466},[460,66245,66246],{"class":462,"line":2338},[460,66247,522],{"emptyLinePlaceholder":521},[460,66249,66250],{"class":462,"line":2343},[460,66251,50441],{"class":942},[460,66253,66254,66256,66258],{"class":462,"line":2353},[460,66255,50446],{"class":466},[460,66257,894],{"class":887},[460,66259,48747],{"class":900},[460,66261,66262,66264,66266],{"class":462,"line":2368},[460,66263,50455],{"class":466},[460,66265,894],{"class":887},[460,66267,19606],{"class":900},[460,66269,66270],{"class":462,"line":2381},[460,66271,522],{"emptyLinePlaceholder":521},[460,66273,66274],{"class":462,"line":2394},[460,66275,50468],{"class":942},[460,66277,66278],{"class":462,"line":2399},[460,66279,50473],{"class":942},[460,66281,66282],{"class":462,"line":2404},[460,66283,50478],{"class":942},[460,66285,66286,66288],{"class":462,"line":2414},[460,66287,50483],{"class":887},[460,66289,49259],{"class":466},[460,66291,66292],{"class":462,"line":2428},[460,66293,50490],{"class":942},[460,66295,66296,66298,66300,66302],{"class":462,"line":2440},[460,66297,19924],{"class":887},[460,66299,50497],{"class":466},[460,66301,11713],{"class":887},[460,66303,50502],{"class":466},[460,66305,66306,66308,66310],{"class":462,"line":2445},[460,66307,50507],{"class":466},[460,66309,894],{"class":887},[460,66311,50512],{"class":466},[460,66313,66314,66316,66318],{"class":462,"line":2450},[460,66315,50517],{"class":466},[460,66317,894],{"class":887},[460,66319,50522],{"class":466},[460,66321,66322],{"class":462,"line":2460},[460,66323,50527],{"class":942},[460,66325,66326],{"class":462,"line":2473},[460,66327,49251],{"class":466},[460,66329,66330],{"class":462,"line":2487},[460,66331,50536],{"class":942},[460,66333,66334,66336,66338],{"class":462,"line":2492},[460,66335,49060],{"class":466},[460,66337,894],{"class":887},[460,66339,50545],{"class":466},[460,66341,66342],{"class":462,"line":2497},[460,66343,50550],{"class":942},[460,66345,66346,66348,66350,66352,66354,66356,66358],{"class":462,"line":2505},[460,66347,49075],{"class":466},[460,66349,894],{"class":887},[460,66351,49080],{"class":466},[460,66353,49083],{"class":3380},[460,66355,894],{"class":887},[460,66357,901],{"class":900},[460,66359,3754],{"class":466},[460,66361,66362],{"class":462,"line":2516},[460,66363,50571],{"class":942},[460,66365,66366],{"class":462,"line":2529},[460,66367,50576],{"class":942},[460,66369,66370],{"class":462,"line":2542},[460,66371,50581],{"class":942},[460,66373,66374,66376,66378,66380,66382],{"class":462,"line":2559},[460,66375,50586],{"class":466},[460,66377,3467],{"class":887},[460,66379,49173],{"class":466},[460,66381,19471],{"class":887},[460,66383,50595],{"class":466},[460,66385,66386],{"class":462,"line":2564},[460,66387,50600],{"class":942},[460,66389,66390,66392,66394,66396,66398],{"class":462,"line":2569},[460,66391,50605],{"class":466},[460,66393,3467],{"class":887},[460,66395,50610],{"class":466},[460,66397,936],{"class":900},[460,66399,3754],{"class":466},[460,66401,66402],{"class":462,"line":2579},[460,66403,522],{"emptyLinePlaceholder":521},[460,66405,66406],{"class":462,"line":2597},[460,66407,50623],{"class":942},[460,66409,66410,66412,66414,66416,66418],{"class":462,"line":2610},[460,66411,50628],{"class":466},[460,66413,894],{"class":887},[460,66415,50633],{"class":466},[460,66417,8331],{"class":887},[460,66419,50638],{"class":466},[460,66421,66422],{"class":462,"line":2621},[460,66423,50643],{"class":942},[460,66425,66426,66428,66430,66432],{"class":462,"line":2634},[460,66427,48856],{"class":900},[460,66429,2174],{"class":466},[460,66431,50652],{"class":1353},[460,66433,50655],{"class":466},[460,66435,66436],{"class":462,"line":2648},[460,66437,522],{"emptyLinePlaceholder":521},[460,66439,66440],{"class":462,"line":2653},[460,66441,50664],{"class":942},[460,66443,66444,66446,66448,66450,66452],{"class":462,"line":2658},[460,66445,18100],{"class":887},[460,66447,47627],{"class":900},[460,66449,19471],{"class":887},[460,66451,47632],{"class":1353},[460,66453,20257],{"class":466},[460,66455,66456],{"class":462,"line":2670},[460,66457,50681],{"class":942},[460,66459,66460,66462,66464],{"class":462,"line":2683},[460,66461,47696],{"class":466},[460,66463,894],{"class":887},[460,66465,60855],{"class":466},[460,66467,66468],{"class":462,"line":2695},[460,66469,50694],{"class":942},[460,66471,66472],{"class":462,"line":2700},[460,66473,50699],{"class":942},[460,66475,66476,66478,66480],{"class":462,"line":2709},[460,66477,50704],{"class":466},[460,66479,50707],{"class":1353},[460,66481,6311],{"class":466},[460,66483,66484],{"class":462,"line":2718},[460,66485,50714],{"class":942},[460,66487,66488,66490,66492],{"class":462,"line":2723},[460,66489,50327],{"class":466},[460,66491,894],{"class":887},[460,66493,50723],{"class":466},[460,66495,66496],{"class":462,"line":2732},[460,66497,50728],{"class":942},[460,66499,66500],{"class":462,"line":2750},[460,66501,50733],{"class":466},[460,66503,66504],{"class":462,"line":2782},[460,66505,522],{"emptyLinePlaceholder":521},[460,66507,66508],{"class":462,"line":2809},[460,66509,50742],{"class":942},[460,66511,66512],{"class":462,"line":2836},[460,66513,50747],{"class":942},[460,66515,66516,66518,66520,66522,66524,66526,66528],{"class":462,"line":2856},[460,66517,47644],{"class":466},[460,66519,894],{"class":887},[460,66521,47651],{"class":1353},[460,66523,3766],{"class":887},[460,66525,47656],{"class":466},[460,66527,3763],{"class":887},[460,66529,50424],{"class":1353},[460,66531,66532,66534,66536],{"class":462,"line":2865},[460,66533,47696],{"class":466},[460,66535,894],{"class":887},[460,66537,48694],{"class":466},[460,66539,66540],{"class":462,"line":2881},[460,66541,50776],{"class":942},[460,66543,66544],{"class":462,"line":2887},[460,66545,50781],{"class":942},[460,66547,66548,66550,66552,66554,66557,66559,66562],{"class":462,"line":2893},[460,66549,50786],{"class":466},[460,66551,894],{"class":887},[460,66553,17601],{"class":466},[460,66555,66556],{"class":1353},"'猫'",[460,66558,3986],{"class":466},[460,66560,66561],{"class":1353},"'狗'",[460,66563,13307],{"class":466},[460,66565,66566,66568],{"class":462,"line":2899},[460,66567,50483],{"class":887},[460,66569,49259],{"class":466},[460,66571,66572],{"class":462,"line":2905},[460,66573,50851],{"class":942},[460,66575,66576,66578,66580,66582],{"class":462,"line":2911},[460,66577,19924],{"class":887},[460,66579,50858],{"class":466},[460,66581,11713],{"class":887},[460,66583,50502],{"class":466},[460,66585,66586,66588,66590],{"class":462,"line":2920},[460,66587,49015],{"class":466},[460,66589,894],{"class":887},[460,66591,49020],{"class":466},[460,66593,66594,66596,66598],{"class":462,"line":2929},[460,66595,49030],{"class":466},[460,66597,894],{"class":887},[460,66599,49035],{"class":466},[460,66601,66602],{"class":462,"line":2935},[460,66603,522],{"emptyLinePlaceholder":521},[460,66605,66606],{"class":462,"line":2948},[460,66607,50887],{"class":942},[460,66609,66610],{"class":462,"line":2954},[460,66611,49251],{"class":466},[460,66613,66614],{"class":462,"line":2965},[460,66615,50896],{"class":942},[460,66617,66618,66620,66622],{"class":462,"line":2976},[460,66619,49060],{"class":466},[460,66621,894],{"class":887},[460,66623,49065],{"class":466},[460,66625,66626],{"class":462,"line":2987},[460,66627,50909],{"class":942},[460,66629,66630,66632,66634,66636,66638,66640,66642],{"class":462,"line":2998},[460,66631,49075],{"class":466},[460,66633,894],{"class":887},[460,66635,49080],{"class":466},[460,66637,49083],{"class":3380},[460,66639,894],{"class":887},[460,66641,901],{"class":900},[460,66643,3754],{"class":466},[460,66645,66646],{"class":462,"line":3003},[460,66647,50930],{"class":942},[460,66649,66650,66652,66654],{"class":462,"line":3008},[460,66651,50935],{"class":466},[460,66653,894],{"class":887},[460,66655,50940],{"class":466},[460,66657,66658,66660,66662],{"class":462,"line":3018},[460,66659,50945],{"class":466},[460,66661,894],{"class":887},[460,66663,50950],{"class":466},[460,66665,66666,66668,66670,66672,66674,66676,66678,66680],{"class":462,"line":3028},[460,66667,50955],{"class":900},[460,66669,2174],{"class":466},[460,66671,50960],{"class":1353},[460,66673,50963],{"class":466},[460,66675,50966],{"class":1353},[460,66677,3986],{"class":466},[460,66679,50971],{"class":1353},[460,66681,50974],{"class":466},[1944,66683,66684],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}",{"title":32,"searchDepth":476,"depth":476,"links":66686},[66687,66688,66689,66690],{"id":46999,"depth":482,"text":47000},{"id":54144,"depth":482,"text":54145},{"id":57576,"depth":482,"text":57577},{"id":61585,"depth":482,"text":61586},{},"\u002Fwiki\u002F2025-11-03-cnn\u002Fch2",{"title":46991,"description":16682},"wiki\u002F2025-11-03-cnn基础\u002Fch2-经典神经网络","Bxs5UQ86zdlE-CO6G4Yv0d8SCjaTflxjZXwosV5BYw0",{"id":66697,"title":66698,"body":66699,"description":16682,"extension":16683,"meta":66706,"navigation":521,"path":66707,"seo":66708,"stem":66709,"__hash__":66710},"wiki\u002Fwiki\u002F2025-11-03-cnn基础\u002Fch3-yolo模型学习.md","3.yolo模型学习",{"type":7,"value":66700,"toc":66704},[66701],[10,66702,66698],{"id":66703},"_3yolo模型学习",{"title":32,"searchDepth":476,"depth":476,"links":66705},[],{},"\u002Fwiki\u002F2025-11-03-cnn\u002Fch3-yolo",{"title":66698,"description":16682},"wiki\u002F2025-11-03-cnn基础\u002Fch3-yolo模型学习","up9SfBhaIIBLUfBuXgY3nFD9vRIUbWF1AanknFvugPQ",{"id":66712,"title":66713,"body":66714,"description":66721,"extension":16683,"meta":66722,"navigation":521,"path":66724,"seo":66725,"stem":66726,"__hash__":66727},"wiki\u002Fwiki\u002F2025-11-03-cnn基础\u002Findex.md","CNN基础",{"type":7,"value":66715,"toc":66719},[66716],[14,66717,66718],{},"yolo模型还未补充",{"title":32,"searchDepth":476,"depth":476,"links":66720},[],"深度学习学习",{"category":66723},"深度学习","\u002Fwiki\u002F2025-11-03-cnn",{"title":66713,"description":66721},"wiki\u002F2025-11-03-cnn基础\u002Findex","jomiRepUEk1d2yEd-72Mm5lgO1UAsmOClqiKKJLBiIE",{"id":66729,"title":66730,"body":66731,"description":16682,"extension":16683,"meta":66756,"navigation":521,"path":66757,"seo":66758,"stem":66759,"__hash__":66760},"wiki\u002Fwiki\u002F2025-09-02-JS学习\u002Fch1-工具.md","1.工具",{"type":7,"value":66732,"toc":66754},[66733,66736,66739,66744,66751],[10,66734,66730],{"id":66735},"_1工具",[14,66737,66738],{},"提示错误插件：有问题会提前报错",[14,66740,66741],{},[30,66742],{"alt":32,"src":66743},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-001.png",[14,66745,66746],{},[2756,66747,66750],{"href":66748,"rel":66749},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002F%E5%89%8D%E7%AB%AF%E8%B5%84%E6%96%99%E6%90%9C%E9%9B%86%E5%BF%85%E5%A4%87%E7%BD%91%E7%AB%99",[4943],"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002F前端资料搜集必备网站",[14,66752,66753],{},"alt键加上下箭头可以实现语句的移动",{"title":32,"searchDepth":476,"depth":476,"links":66755},[],{},"\u002Fwiki\u002F2025-09-02-js\u002Fch1",{"title":66730,"description":16682},"wiki\u002F2025-09-02-JS学习\u002Fch1-工具","ahoJ9ydgi0wuLgmhEUjAoGpyZKNS_IeMsqe-jPF9xx4",{"id":66762,"title":66763,"body":66764,"description":16682,"extension":16683,"meta":69575,"navigation":521,"path":69576,"seo":69577,"stem":69578,"__hash__":69579},"wiki\u002Fwiki\u002F2025-09-02-JS学习\u002Fch2-基础语法.md","2.基础语法",{"type":7,"value":66765,"toc":69526},[66766,66769,66773,66777,66782,66785,66790,66794,66801,66806,66813,66818,66825,66830,66834,66839,66842,66846,66851,66855,66860,66863,66866,66869,66872,66875,66878,66881,66884,66889,66894,66899,66903,66906,66909,66913,66918,66921,66929,66934,66949,66957,66962,66967,66972,66977,66982,66985,66990,66995,66999,67008,67013,67018,67022,67027,67030,67034,67039,67047,67052,67057,67060,67065,67070,67075,67078,67081,67084,67089,67094,67097,67102,67105,67110,67113,67116,67119,67124,67127,67130,67145,67150,67155,67160,67163,67166,67169,67183,67186,67191,67196,67199,67202,67205,67208,67211,67214,67217,67221,67225,67230,67234,67237,67242,67247,67250,67255,67258,67262,67267,67270,67273,67276,67279,67282,67285,67288,67291,67294,67298,67303,67308,67313,67316,67319,67323,67328,67331,67335,67338,67341,67346,67349,67352,67356,67360,67363,67368,67373,67376,67405,67410,67415,67420,67425,67429,67434,67438,67443,67446,67450,67454,67459,67463,67468,67473,67477,67482,67485,67487,67490,67495,67499,67504,67508,67512,67517,67522,67527,67532,67536,67541,67546,67551,67554,67557,67562,67565,67570,67575,67580,67585,67589,68358,68362,68697,68702,68705,68708,68711,68714,68717,68719,68722,68725,68727,68730,68732,68735,68739,68744,68747,68750,68753,68757,68762,68767,68787,68790,68794,68799,68804,68821,68825,68854,68858,68880,68882,68920,68928,68934,68938,68941,68944,68949,68954,68957,68960,68963,68968,68973,68976,68979,68982,68985,68988,68991,68994,68997,69000,69003,69006,69008,69011,69014,69017,69020,69023,69026,69029,69032,69036,69041,69044,69049,69052,69055,69058,69061,69064,69067,69070,69072,69075,69078,69081,69084,69087,69090,69094,69097,69106,69109,69114,69117,69122,69125,69128,69131,69134,69137,69140,69143,69147,69151,69154,69157,69162,69167,69172,69176,69181,69186,69189,69192,69195,69198,69201,69206,69209,69214,69216,69221,69224,69228,69233,69236,69239,69244,69248,69251,69256,69259,69262,69291,69296,69299,69302,69305,69308,69311,69315,69318,69401,69405,69408,69413,69418,69425,69428,69431,69434,69437,69440,69445,69450,69453,69456,69459,69462,69465,69468,69471,69474,69477,69479,69482,69486,69491,69496,69501,69504,69509,69514,69517,69520,69523],[10,66767,66763],{"id":66768},"_2基础语法",[18,66770,66772],{"id":66771},"_21-js的使用基本介绍","2.1 js的使用基本介绍",[23,66774,66776],{"id":66775},"_211-js组成","2.1.1 js组成",[103,66778,66779],{},[43,66780,66781],{},"js是编程语言，html和css不是编程语言，是标记语言",[14,66783,66784],{},"js组成：ECMAScript(JavaScript语言基础)和Web APIs(由DOM页面文档对象模型和BOM浏览器对象模型)",[103,66786,66787],{"start":476},[43,66788,66789],{},"JavaScript 程序不能独立运行，它需要被嵌入 HTML 中，然后浏览器才能执行 JavaScript 代码",[23,66791,66793],{"id":66792},"_212-js书写位置","2.1.2 js书写位置",[103,66795,66796],{},[43,66797,66798],{},[3944,66799,66800],{},"内部 JavaScript",[14,66802,66803],{},[30,66804],{"alt":32,"src":66805},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-002.png",[103,66807,66808],{"start":476},[43,66809,66810],{},[3944,66811,66812],{},"外部 JavaScript",[14,66814,66815],{},[30,66816],{"alt":32,"src":66817},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-003.png",[103,66819,66820],{"start":482},[43,66821,66822],{},[3944,66823,66824],{},"内联 JavaScript",[14,66826,66827],{},[30,66828],{"alt":32,"src":66829},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-004.png",[23,66831,66833],{"id":66832},"_213-javascript注释","2.1.3 JavaScript注释",[14,66835,66836],{},[30,66837],{"alt":32,"src":66838},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-005.png",[14,66840,66841],{},"alt+shift+a一定要记住！",[23,66843,66845],{"id":66844},"_214-javascript结束符","2.1.4 JavaScript结束符",[14,66847,66848],{},[30,66849],{"alt":32,"src":66850},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-006.png",[23,66852,66854],{"id":66853},"_2115-javascript-输入输出语法","21.1.5 JavaScript 输入输出语法",[103,66856,66857],{},[43,66858,66859],{},"输出语法：",[14,66861,66862],{},"①document.write('要出的内容')",[14,66864,66865],{},"向body内输出内容；",[14,66867,66868],{},"如果输出的内容写的是标签，也会被解析cheng",[14,66870,66871],{},"②alert('要出的内容')",[14,66873,66874],{},"页面弹出警告对话框",[14,66876,66877],{},"③console.log('控制台打印')",[14,66879,66880],{},"控制台输出语法，程序员调试使用",[14,66882,66883],{},"输入log就行，自动生成：",[14,66885,66886],{},[30,66887],{"alt":32,"src":66888},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-007.png",[103,66890,66891],{"start":476},[43,66892,66893],{},"输入语法：",[14,66895,66896],{},[30,66897],{"alt":32,"src":66898},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-008.png",[23,66900,66902],{"id":66901},"_2116-字面量","21.1.6 字面量",[14,66904,66905],{},"在计算机科学中，字面量（literal）是在计算机中描述 事\u002F物",[14,66907,66908],{},"例如：18 是一个数字字面量；'pink' 是一个字符串字面量",[18,66910,66912],{"id":66911},"_22-变量","2.2 变量",[103,66914,66915],{},[43,66916,66917],{},"变量声明",[14,66919,66920],{},"let 变量名",[40,66922,66923,66926],{},[43,66924,66925],{},"声明变量有两部分组成：声明关键字 变量名（也叫标识符）",[43,66927,66928],{},"let 即关键字 (let: 允许、许可、让、要)，所谓关键字是系统提供的专门用来声明（定义）变量的词语",[103,66930,66931],{"start":476},[43,66932,66933],{},"变量赋值",[451,66935,66937],{"className":702,"code":66936,"language":704,"meta":32,"style":32},"let age\nage=18 \n",[457,66938,66939,66944],{"__ignoreMap":32},[460,66940,66941],{"class":462,"line":463},[460,66942,66943],{"class":466},"let age\n",[460,66945,66946],{"class":462,"line":476},[460,66947,66948],{"class":466},"age=18\n",[103,66950,66951,66954],{"start":482},[43,66952,66953],{},"连这些（变量的初始化）：let age=18",[43,66955,66956],{},"更新变量",[14,66958,66959],{},[30,66960],{"alt":32,"src":66961},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-009.png",[103,66963,66964],{"start":494},[43,66965,66966],{},"声明多个变量",[14,66968,66969],{},[30,66970],{"alt":32,"src":66971},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-010.png",[103,66973,66974],{"start":500},[43,66975,66976],{},"变量命名规则与规范",[14,66978,66979],{},[30,66980],{"alt":32,"src":66981},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-011.png",[14,66983,66984],{},"遵守小驼峰！",[103,66986,66987],{"start":506},[43,66988,66989],{},"变量拓展-let和var的区别",[14,66991,66992],{},[30,66993],{"alt":32,"src":66994},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-012.png",[18,66996,66998],{"id":66997},"_23-数组","2.3 数组",[451,67000,67002],{"className":702,"code":67001,"language":704,"meta":32,"style":32},"let arr = []\n",[457,67003,67004],{"__ignoreMap":32},[460,67005,67006],{"class":462,"line":463},[460,67007,67001],{"class":466},[14,67009,67010],{},[30,67011],{"alt":32,"src":67012},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-013.png",[14,67014,67015],{},[30,67016],{"alt":32,"src":67017},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-014.png",[18,67019,67021],{"id":67020},"_24-常量","2.4 常量",[14,67023,67024],{},[30,67025],{"alt":32,"src":67026},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-015.png",[14,67028,67029],{},"const — 类似于 let ，但是变量的值无法被修改",[18,67031,67033],{"id":67032},"_25-数据类型","2.5 数据类型",[14,67035,67036],{},[30,67037],{"alt":32,"src":67038},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-016.png",[103,67040,67041,67044],{},[43,67042,67043],{},"js是一门弱数据类型的语言，只要是数字就是数字型语言",[43,67045,67046],{},"算数运算符：",[14,67048,67049],{},[30,67050],{"alt":32,"src":67051},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-017.png",[103,67053,67054],{"start":482},[43,67055,67056],{},"数字类型（Number）",[14,67058,67059],{},"JavaScript 中的正数、负数、小数等 统一称为 数字类型",[14,67061,67062],{},[30,67063],{"alt":32,"src":67064},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-018.png",[103,67066,67067],{"start":488},[43,67068,67069],{},"字符串类型（string）",[14,67071,67072],{},[30,67073],{"alt":32,"src":67074},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-019.png",[14,67076,67077],{},"反引号也是可以使用的",[14,67079,67080],{},"➕：数字相加，字符相连，只要有字符串就可以与其他进行相加",[14,67082,67083],{},"例如：document.write(\"我今年\"+age+\"岁\")",[103,67085,67086],{"start":494},[43,67087,67088],{},"模板字符串",[14,67090,67091],{},[30,67092],{"alt":32,"src":67093},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-020.png",[14,67095,67096],{},"类似于python的字符串格式化",[103,67098,67099],{"start":500},[43,67100,67101],{},"布尔类型",[14,67103,67104],{},"true 和 false",[103,67106,67107],{"start":506},[43,67108,67109],{},"未定义类型（underfined）",[14,67111,67112],{},"表示没有赋值",[14,67114,67115],{},"未定义类型是比较特殊的类型，只有一个值undefined",[14,67117,67118],{},"只声明变量，不赋值的情况下，变量的默认值为 undefined，一般很少【直接】为某个变量赋值为 undefined",[103,67120,67121],{"start":512},[43,67122,67123],{},"null（空类型）",[14,67125,67126],{},"JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值",[14,67128,67129],{},"赋值了，但是内容为空",[451,67131,67133],{"className":702,"code":67132,"language":704,"meta":32,"style":32},"typeof null\n输出的是'object'，是一个对象数据类型\n",[457,67134,67135,67140],{"__ignoreMap":32},[460,67136,67137],{"class":462,"line":463},[460,67138,67139],{"class":466},"typeof null\n",[460,67141,67142],{"class":462,"line":476},[460,67143,67144],{"class":466},"输出的是'object'，是一个对象数据类型\n",[103,67146,67147],{"start":518},[43,67148,67149],{},"控制台检测数据类型",[14,67151,67152],{},[30,67153],{"alt":32,"src":67154},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-021.png",[103,67156,67157],{"start":525},[43,67158,67159],{},"类型转换",[14,67161,67162],{},"prompt输入的内容都是字符串字面量，还有html时的表单（input啥的输入的也是字符串字面量）",[14,67164,67165],{},"转换方式：隐式转换和显示转换",[14,67167,67168],{},"①隐式转换",[40,67170,67171,67174,67177,67180],{},[43,67172,67173],{},"号两边只要有一个是字符串，都会把另外一个转成字符串",[43,67175,67176],{},"除了+以外的算术运算符 比如 - * \u002F 等都会把数据转成数字类型（只要有数字就会把另一个转化成数字字面变量）",[43,67178,67179],{},"加号作为正号解析可以转换成数字型：console.log(+'123')不再是字符串类型，是数字类型为123",[43,67181,67182],{},"任何数据和字符串相加结果都是字符串",[14,67184,67185],{},"②显示转换",[14,67187,67188],{},[30,67189],{"alt":32,"src":67190},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-022.png",[14,67192,67193],{},[30,67194],{"alt":32,"src":67195},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-023.png",[14,67197,67198],{},"在输入的时候要用好隐式转换，简单写起来",[14,67200,67201],{},"let num = +prompt(’请输入数字：‘)",[14,67203,67204],{},"  parseInt与parseFloat是只取前边的数字，如果前边有字母，是无法进行识别后边的数字的，会显示NaN，表示错误",[14,67206,67207],{},"console.log(parseInt('12.333px'))",[14,67209,67210],{},"输出为：12",[14,67212,67213],{},"console.log(parseInt('a'a'a12.333px'))",[14,67215,67216],{},"输出：NaN",[18,67218,67220],{"id":67219},"_26-运算符","2.6 运算符",[23,67222,67224],{"id":67223},"_261-赋值运算符","2.6.1 赋值运算符",[14,67226,67227],{},[30,67228],{"alt":32,"src":67229},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-024.png",[23,67231,67233],{"id":67232},"_262-一元运算符","2.6.2 一元运算符",[14,67235,67236],{},"众多的 JavaScript 的运算符可以根据所需表达式的个数，分为一元运算符、二元运算符、三元运算符，就看需要几个数来操作，例如+需要两个数才能相加，所以叫做二元运算符，正负号的话就是一元运算符",[14,67238,67239],{},[30,67240],{"alt":32,"src":67241},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-025.png",[14,67243,67244],{},[30,67245],{"alt":32,"src":67246},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-026.png",[14,67248,67249],{},"两者的区别：",[14,67251,67252],{},[30,67253],{"alt":32,"src":67254},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-027.png",[14,67256,67257],{},"前置先自加；后置后加，代码执行完之后再加",[23,67259,67261],{"id":67260},"_263-比较运算符","2.6.3 比较运算符",[14,67263,67264],{},[30,67265],{"alt":32,"src":67266},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-028.png",[14,67268,67269],{},"比较运算符也有隐式转换",[14,67271,67272],{},"console.log(2 == '2')输出为true，只判断值，==含有隐式转换，前边是数字字面量的情况下，会将字符串转化为数字字面量",[14,67274,67275],{},"console.log(2==='2')输出false，===全等，会判断值和数据类型，需要全部一样才为true",[14,67277,67278],{},"要使用三等，开发的时候",[14,67280,67281],{},"NaN不等于任何人，包括它自己",[14,67283,67284],{},"小数在进行运算的时候它会先把自己转化为整数，然后最后再除以放大的数变回原来：例如：0.5+0.2：它是0.5*10+0.2*10=7",[14,67286,67287],{},"7\u002F10=0.7",[14,67289,67290],{},"最后：0.5+0.2=0.7",[14,67292,67293],{},"字符串比较，比较的是字符对应的ASCII码",[23,67295,67297],{"id":67296},"_264-逻辑运算符","2.6.4 逻辑运算符",[14,67299,67300],{},[30,67301],{"alt":32,"src":67302},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-029.png",[14,67304,67305],{},[30,67306],{"alt":32,"src":67307},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-030.png",[14,67309,67310],{},[30,67311],{"alt":32,"src":67312},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-031.png",[14,67314,67315],{},"上述题目选D",[14,67317,67318],{},"与真2假1；或真1假2",[23,67320,67322],{"id":67321},"_265-运算符优先级","2.6.5 运算符优先级",[14,67324,67325],{},[30,67326],{"alt":32,"src":67327},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-032.png",[14,67329,67330],{},"先算逻辑与，后算逻辑或",[18,67332,67334],{"id":67333},"_27-语句","2.7 语句",[14,67336,67337],{},"表达式：是可以被求值的代码，会有结果给我们",[14,67339,67340],{},"语句：语句是可以被执行的代码，例如prompt()",[14,67342,67343],{},[30,67344],{"alt":32,"src":67345},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-033.png",[14,67347,67348],{},"因为表达式可被求值，所以它可以写在赋值语句的右侧。",[14,67350,67351],{},"而语句不一定有值，所以比如 alert() for和break 等语句就不能被用于赋值。",[23,67353,67355],{"id":67354},"_271-分支语句","2.7.1 分支语句",[115,67357,67359],{"id":67358},"_2711-if分支语句","2.7.1.1 if分支语句",[14,67361,67362],{},"if语句单行简单的话，可以不写{}，写在一行就行",[103,67364,67365],{},[43,67366,67367],{},"单分支语句",[14,67369,67370],{},[30,67371],{"alt":32,"src":67372},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-034.png",[14,67374,67375],{},"除了0，所有数字都为真",[451,67377,67379],{"className":702,"code":67378,"language":704,"meta":32,"style":32},"if（0) {\n    let a=1\n    alert(typeof a)\n}\n不输出，括号为假\n",[457,67380,67381,67386,67391,67396,67400],{"__ignoreMap":32},[460,67382,67383],{"class":462,"line":463},[460,67384,67385],{"class":466},"if（0) {\n",[460,67387,67388],{"class":462,"line":476},[460,67389,67390],{"class":466},"    let a=1\n",[460,67392,67393],{"class":462,"line":482},[460,67394,67395],{"class":466},"    alert(typeof a)\n",[460,67397,67398],{"class":462,"line":488},[460,67399,821],{"class":466},[460,67401,67402],{"class":462,"line":494},[460,67403,67404],{"class":466},"不输出，括号为假\n",[103,67406,67407],{"start":476},[43,67408,67409],{},"双分支语句",[14,67411,67412],{},[30,67413],{"alt":32,"src":67414},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-035.png",[103,67416,67417],{"start":482},[43,67418,67419],{},"多分支语句",[14,67421,67422],{},[30,67423],{"alt":32,"src":67424},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-036.png",[115,67426,67428],{"id":67427},"_2712-三元运算符","2.7.1.2 三元运算符",[14,67430,67431],{},[30,67432],{"alt":32,"src":67433},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-037.png",[115,67435,67437],{"id":67436},"_2713-switch语句","2.7.1.3 switch语句",[14,67439,67440],{},[30,67441],{"alt":32,"src":67442},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-038.png",[14,67444,67445],{},"如果不写break，在匹配成功之后，输出完这个匹配内容后，switch语句就失效了，他会把后边的内容也全部输出",[23,67447,67449],{"id":67448},"_272-循环语句","2.7.2 循环语句",[115,67451,67453],{"id":67452},"_2721-断点演示","2.7.2.1 断点演示",[14,67455,67456],{},[30,67457],{"alt":32,"src":67458},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-039.png",[115,67460,67462],{"id":67461},"_2722-while循环","2.7.2.2 while循环",[14,67464,67465],{},[30,67466],{"alt":32,"src":67467},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-040.png",[14,67469,67470],{},[30,67471],{"alt":32,"src":67472},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-041.png",[115,67474,67476],{"id":67475},"_2723-for循环","2.7.2.3 for循环",[14,67478,67479],{},[30,67480],{"alt":32,"src":67481},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-042.png",[14,67483,67484],{},"for(;;) {",[14,67486,612],{},[14,67488,67489],{},"表示无限循环",[14,67491,67492],{},[30,67493],{"alt":32,"src":67494},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-043.png",[115,67496,67498],{"id":67497},"_2724-循环的退出","2.7.2.4 循环的退出",[14,67500,67501],{},[30,67502],{"alt":32,"src":67503},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-044.png",[18,67505,67507],{"id":67506},"_28-数组","2.8 数组",[23,67509,67511],{"id":67510},"_281-基础认识","2.8.1 基础认识",[14,67513,67514],{},[30,67515],{"alt":32,"src":67516},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-045.png",[14,67518,67519],{},[30,67520],{"alt":32,"src":67521},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-046.png",[14,67523,67524],{},[30,67525],{"alt":32,"src":67526},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-047.png",[14,67528,67529],{},[30,67530],{"alt":32,"src":67531},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-048.png",[23,67533,67535],{"id":67534},"_282-操作数组","2.8.2 操作数组",[14,67537,67538],{},[30,67539],{"alt":32,"src":67540},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-049.png",[103,67542,67543],{},[43,67544,67545],{},"添加元素",[14,67547,67548],{},[30,67549],{"alt":32,"src":67550},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-050.png",[14,67552,67553],{},"console.log(arr.push('green'))",[14,67555,67556],{},"输出结果：为新数组的长度",[14,67558,67559],{},[30,67560],{"alt":32,"src":67561},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-051.png",[14,67563,67564],{},"push用的非常多，一定要记住",[103,67566,67567],{},[43,67568,67569],{},"删除元素",[14,67571,67572],{},[30,67573],{"alt":32,"src":67574},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-052.png",[14,67576,67577],{},[30,67578],{"alt":32,"src":67579},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-053.png",[14,67581,67582],{},[30,67583],{"alt":32,"src":67584},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-054.png",[23,67586,67588],{"id":67587},"_283-根据数据生成柱形图","2.8.3 根据数据生成柱形图",[451,67590,67592],{"className":702,"code":67591,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n    \u003Cmeta charset=\"UTF-8\">\n    \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    \u003Ctitle>Document\u003C\u002Ftitle>\n    \u003Cstyle>\n        * {\n            margin: 0;\n            padding: 0;\n        }\n\n        .box {\n            display: flex;\n            width: 700px;\n            height: 300px;\n            border-left: 1px solid pink;\n            border-bottom: 1px solid pink;\n            margin: 50px auto;\n            justify-content: space-around;\n            align-items: flex-end;\n            text-align: center;\n        }\n\n        .box>div {\n            display: flex;\n            width: 50px;\n            background-color: pink;\n            flex-direction: column;\n            justify-content: space-between;\n        }\n\n        .box div span {\n\n            margin-top: -20px;\n        }\n\n        .box div h4 {\n            margin-bottom: -35px;\n            width: 70px;\n            margin-left: -10px;\n        }\n    \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n\n    \u003Cscript>\n        \u002F\u002F 1. 四次弹框效果\n        \u002F\u002F 声明一个新的数组\n        let arr = []\n        for (let i = 1; i \u003C= 4; i++) {\n            \u002F\u002F let num = prompt(`请输入第${i}季度的数据:`)\n            \u002F\u002F arr.push(num)\n            arr.push(prompt(`请输入第${i}季度的数据:`))\n            \u002F\u002F push记得加小括号，不是等号赋值的形式\n        }\n        \u002F\u002F console.log(arr)  ['123','135','345','234']\n        \u002F\u002F 盒子开头\n        document.write(` \u003Cdiv class=\"box\">`)\n\n        \u002F\u002F 盒子中间 利用循环的形式  跟数组有关系\n        for (let i = 0; i \u003C arr.length; i++) {\n            document.write(`\n              \u003Cdiv style=\"height: ${arr[i]}px;\">\n                \u003Cspan>${arr[i]}\u003C\u002Fspan>\n                \u003Ch4>第${i + 1}季度\u003C\u002Fh4>\n              \u003C\u002Fdiv>          \n            `)\n        }\n        \u002F\u002F 盒子结尾\n        document.write(` \u003C\u002Fdiv>`)\n    \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,67593,67594,67604,67618,67622,67630,67644,67664,67684,67696,67704,67711,67722,67733,67737,67741,67748,67759,67772,67785,67803,67820,67834,67846,67857,67868,67872,67876,67886,67896,67908,67919,67931,67942,67946,67950,67962,67966,67980,67984,67988,67999,68013,68025,68039,68043,68051,68059,68063,68071,68075,68083,68088,68093,68103,68130,68135,68140,68165,68170,68174,68179,68184,68199,68203,68208,68238,68250,68266,68282,68296,68301,68308,68312,68317,68330,68338,68346,68350],{"__ignoreMap":32},[460,67595,67596,67598,67600,67602],{"class":462,"line":463},[460,67597,1845],{"class":466},[460,67599,1848],{"class":470},[460,67601,1851],{"class":929},[460,67603,473],{"class":466},[460,67605,67606,67608,67610,67612,67614,67616],{"class":462,"line":476},[460,67607,781],{"class":466},[460,67609,704],{"class":470},[460,67611,1862],{"class":929},[460,67613,894],{"class":466},[460,67615,1867],{"class":1353},[460,67617,473],{"class":466},[460,67619,67620],{"class":462,"line":482},[460,67621,522],{"emptyLinePlaceholder":521},[460,67623,67624,67626,67628],{"class":462,"line":488},[460,67625,781],{"class":466},[460,67627,1880],{"class":470},[460,67629,473],{"class":466},[460,67631,67632,67634,67636,67638,67640,67642],{"class":462,"line":494},[460,67633,2753],{"class":466},[460,67635,1889],{"class":470},[460,67637,1892],{"class":929},[460,67639,894],{"class":466},[460,67641,1897],{"class":1353},[460,67643,473],{"class":466},[460,67645,67646,67648,67650,67652,67654,67656,67658,67660,67662],{"class":462,"line":500},[460,67647,2753],{"class":466},[460,67649,1889],{"class":470},[460,67651,15735],{"class":929},[460,67653,894],{"class":466},[460,67655,15740],{"class":1353},[460,67657,1916],{"class":929},[460,67659,894],{"class":466},[460,67661,15747],{"class":1353},[460,67663,473],{"class":466},[460,67665,67666,67668,67670,67672,67674,67676,67678,67680,67682],{"class":462,"line":506},[460,67667,2753],{"class":466},[460,67669,1889],{"class":470},[460,67671,1908],{"class":929},[460,67673,894],{"class":466},[460,67675,1913],{"class":1353},[460,67677,1916],{"class":929},[460,67679,894],{"class":466},[460,67681,1921],{"class":1353},[460,67683,473],{"class":466},[460,67685,67686,67688,67690,67692,67694],{"class":462,"line":512},[460,67687,2753],{"class":466},[460,67689,1930],{"class":470},[460,67691,1933],{"class":466},[460,67693,1930],{"class":470},[460,67695,473],{"class":466},[460,67697,67698,67700,67702],{"class":462,"line":518},[460,67699,2753],{"class":466},[460,67701,1944],{"class":470},[460,67703,473],{"class":466},[460,67705,67706,67709],{"class":462,"line":525},[460,67707,67708],{"class":470},"        *",[460,67710,1348],{"class":466},[460,67712,67713,67716,67718,67720],{"class":462,"line":531},[460,67714,67715],{"class":900},"            margin",[460,67717,1961],{"class":466},[460,67719,936],{"class":900},[460,67721,1966],{"class":466},[460,67723,67724,67727,67729,67731],{"class":462,"line":537},[460,67725,67726],{"class":900},"            padding",[460,67728,1961],{"class":466},[460,67730,936],{"class":900},[460,67732,1966],{"class":466},[460,67734,67735],{"class":462,"line":543},[460,67736,3858],{"class":466},[460,67738,67739],{"class":462,"line":549},[460,67740,522],{"emptyLinePlaceholder":521},[460,67742,67743,67746],{"class":462,"line":555},[460,67744,67745],{"class":929},"        .box",[460,67747,1348],{"class":466},[460,67749,67750,67753,67755,67757],{"class":462,"line":560},[460,67751,67752],{"class":900},"            display",[460,67754,1961],{"class":466},[460,67756,2042],{"class":900},[460,67758,1966],{"class":466},[460,67760,67761,67764,67766,67768,67770],{"class":462,"line":566},[460,67762,67763],{"class":900},"            width",[460,67765,1961],{"class":466},[460,67767,7739],{"class":900},[460,67769,2017],{"class":887},[460,67771,1966],{"class":466},[460,67773,67774,67777,67779,67781,67783],{"class":462,"line":572},[460,67775,67776],{"class":900},"            height",[460,67778,1961],{"class":466},[460,67780,9934],{"class":900},[460,67782,2017],{"class":887},[460,67784,1966],{"class":466},[460,67786,67787,67790,67792,67794,67796,67798,67801],{"class":462,"line":578},[460,67788,67789],{"class":900},"            border-left",[460,67791,1961],{"class":466},[460,67793,901],{"class":900},[460,67795,2017],{"class":887},[460,67797,7201],{"class":900},[460,67799,67800],{"class":900}," pink",[460,67802,1966],{"class":466},[460,67804,67805,67808,67810,67812,67814,67816,67818],{"class":462,"line":812},[460,67806,67807],{"class":900},"            border-bottom",[460,67809,1961],{"class":466},[460,67811,901],{"class":900},[460,67813,2017],{"class":887},[460,67815,7201],{"class":900},[460,67817,67800],{"class":900},[460,67819,1966],{"class":466},[460,67821,67822,67824,67826,67828,67830,67832],{"class":462,"line":818},[460,67823,67715],{"class":900},[460,67825,1961],{"class":466},[460,67827,2549],{"class":900},[460,67829,2017],{"class":887},[460,67831,2030],{"class":900},[460,67833,1966],{"class":466},[460,67835,67836,67839,67841,67844],{"class":462,"line":824},[460,67837,67838],{"class":900},"            justify-content",[460,67840,1961],{"class":466},[460,67842,67843],{"class":900},"space-around",[460,67845,1966],{"class":466},[460,67847,67848,67851,67853,67855],{"class":462,"line":2074},[460,67849,67850],{"class":900},"            align-items",[460,67852,1961],{"class":466},[460,67854,7658],{"class":900},[460,67856,1966],{"class":466},[460,67858,67859,67862,67864,67866],{"class":462,"line":2088},[460,67860,67861],{"class":900},"            text-align",[460,67863,1961],{"class":466},[460,67865,5545],{"class":900},[460,67867,1966],{"class":466},[460,67869,67870],{"class":462,"line":2103},[460,67871,3858],{"class":466},[460,67873,67874],{"class":462,"line":2122},[460,67875,522],{"emptyLinePlaceholder":521},[460,67877,67878,67880,67882,67884],{"class":462,"line":2144},[460,67879,67745],{"class":929},[460,67881,17668],{"class":887},[460,67883,2737],{"class":470},[460,67885,1348],{"class":466},[460,67887,67888,67890,67892,67894],{"class":462,"line":2158},[460,67889,67752],{"class":900},[460,67891,1961],{"class":466},[460,67893,2042],{"class":900},[460,67895,1966],{"class":466},[460,67897,67898,67900,67902,67904,67906],{"class":462,"line":2163},[460,67899,67763],{"class":900},[460,67901,1961],{"class":466},[460,67903,2549],{"class":900},[460,67905,2017],{"class":887},[460,67907,1966],{"class":466},[460,67909,67910,67913,67915,67917],{"class":462,"line":2168},[460,67911,67912],{"class":900},"            background-color",[460,67914,1961],{"class":466},[460,67916,5556],{"class":900},[460,67918,1966],{"class":466},[460,67920,67921,67924,67926,67929],{"class":462,"line":2183},[460,67922,67923],{"class":900},"            flex-direction",[460,67925,1961],{"class":466},[460,67927,67928],{"class":900},"column",[460,67930,1966],{"class":466},[460,67932,67933,67935,67937,67940],{"class":462,"line":2194},[460,67934,67838],{"class":900},[460,67936,1961],{"class":466},[460,67938,67939],{"class":900},"space-between",[460,67941,1966],{"class":466},[460,67943,67944],{"class":462,"line":2199},[460,67945,3858],{"class":466},[460,67947,67948],{"class":462,"line":2204},[460,67949,522],{"emptyLinePlaceholder":521},[460,67951,67952,67954,67957,67960],{"class":462,"line":2212},[460,67953,67745],{"class":929},[460,67955,67956],{"class":470}," div",[460,67958,67959],{"class":470}," span",[460,67961,1348],{"class":466},[460,67963,67964],{"class":462,"line":2257},[460,67965,522],{"emptyLinePlaceholder":521},[460,67967,67968,67971,67973,67976,67978],{"class":462,"line":2285},[460,67969,67970],{"class":900},"            margin-top",[460,67972,1961],{"class":466},[460,67974,67975],{"class":900},"-20",[460,67977,2017],{"class":887},[460,67979,1966],{"class":466},[460,67981,67982],{"class":462,"line":2298},[460,67983,3858],{"class":466},[460,67985,67986],{"class":462,"line":2303},[460,67987,522],{"emptyLinePlaceholder":521},[460,67989,67990,67992,67994,67997],{"class":462,"line":2308},[460,67991,67745],{"class":929},[460,67993,67956],{"class":470},[460,67995,67996],{"class":470}," h4",[460,67998,1348],{"class":466},[460,68000,68001,68004,68006,68009,68011],{"class":462,"line":2318},[460,68002,68003],{"class":900},"            margin-bottom",[460,68005,1961],{"class":466},[460,68007,68008],{"class":900},"-35",[460,68010,2017],{"class":887},[460,68012,1966],{"class":466},[460,68014,68015,68017,68019,68021,68023],{"class":462,"line":2333},[460,68016,67763],{"class":900},[460,68018,1961],{"class":466},[460,68020,17093],{"class":900},[460,68022,2017],{"class":887},[460,68024,1966],{"class":466},[460,68026,68027,68030,68032,68035,68037],{"class":462,"line":2338},[460,68028,68029],{"class":900},"            margin-left",[460,68031,1961],{"class":466},[460,68033,68034],{"class":900},"-10",[460,68036,2017],{"class":887},[460,68038,1966],{"class":466},[460,68040,68041],{"class":462,"line":2343},[460,68042,3858],{"class":466},[460,68044,68045,68047,68049],{"class":462,"line":2353},[460,68046,16244],{"class":466},[460,68048,1944],{"class":470},[460,68050,473],{"class":466},[460,68052,68053,68055,68057],{"class":462,"line":2368},[460,68054,1776],{"class":466},[460,68056,1880],{"class":470},[460,68058,473],{"class":466},[460,68060,68061],{"class":462,"line":2381},[460,68062,522],{"emptyLinePlaceholder":521},[460,68064,68065,68067,68069],{"class":462,"line":2394},[460,68066,781],{"class":466},[460,68068,1721],{"class":470},[460,68070,473],{"class":466},[460,68072,68073],{"class":462,"line":2399},[460,68074,522],{"emptyLinePlaceholder":521},[460,68076,68077,68079,68081],{"class":462,"line":2404},[460,68078,2753],{"class":466},[460,68080,225],{"class":470},[460,68082,473],{"class":466},[460,68084,68085],{"class":462,"line":2414},[460,68086,68087],{"class":942},"        \u002F\u002F 1. 四次弹框效果\n",[460,68089,68090],{"class":462,"line":2428},[460,68091,68092],{"class":942},"        \u002F\u002F 声明一个新的数组\n",[460,68094,68095,68097,68099,68101],{"class":462,"line":2440},[460,68096,3689],{"class":887},[460,68098,891],{"class":466},[460,68100,894],{"class":887},[460,68102,11766],{"class":466},[460,68104,68105,68107,68109,68111,68113,68115,68117,68119,68121,68124,68126,68128],{"class":462,"line":2445},[460,68106,19924],{"class":887},[460,68108,11704],{"class":466},[460,68110,11707],{"class":887},[460,68112,13991],{"class":466},[460,68114,894],{"class":887},[460,68116,1400],{"class":900},[460,68118,25930],{"class":466},[460,68120,3748],{"class":887},[460,68122,68123],{"class":900}," 4",[460,68125,19735],{"class":466},[460,68127,18828],{"class":887},[460,68129,2180],{"class":466},[460,68131,68132],{"class":462,"line":2450},[460,68133,68134],{"class":942},"            \u002F\u002F let num = prompt(`请输入第${i}季度的数据:`)\n",[460,68136,68137],{"class":462,"line":2460},[460,68138,68139],{"class":942},"            \u002F\u002F arr.push(num)\n",[460,68141,68142,68145,68148,68150,68153,68155,68158,68160,68163],{"class":462,"line":2473},[460,68143,68144],{"class":466},"            arr.",[460,68146,68147],{"class":929},"push",[460,68149,2174],{"class":466},[460,68151,68152],{"class":929},"prompt",[460,68154,2174],{"class":466},[460,68156,68157],{"class":1353},"`请输入第${",[460,68159,17174],{"class":466},[460,68161,68162],{"class":1353},"}季度的数据:`",[460,68164,6311],{"class":466},[460,68166,68167],{"class":462,"line":2487},[460,68168,68169],{"class":942},"            \u002F\u002F push记得加小括号，不是等号赋值的形式\n",[460,68171,68172],{"class":462,"line":2492},[460,68173,3858],{"class":466},[460,68175,68176],{"class":462,"line":2497},[460,68177,68178],{"class":942},"        \u002F\u002F console.log(arr)  ['123','135','345','234']\n",[460,68180,68181],{"class":462,"line":2505},[460,68182,68183],{"class":942},"        \u002F\u002F 盒子开头\n",[460,68185,68186,68189,68192,68194,68197],{"class":462,"line":2516},[460,68187,68188],{"class":466},"        document.",[460,68190,68191],{"class":929},"write",[460,68193,2174],{"class":466},[460,68195,68196],{"class":1353},"` \u003Cdiv class=\"box\">`",[460,68198,3754],{"class":466},[460,68200,68201],{"class":462,"line":2529},[460,68202,522],{"emptyLinePlaceholder":521},[460,68204,68205],{"class":462,"line":2542},[460,68206,68207],{"class":942},"        \u002F\u002F 盒子中间 利用循环的形式  跟数组有关系\n",[460,68209,68210,68212,68214,68216,68218,68220,68222,68224,68226,68229,68232,68234,68236],{"class":462,"line":2559},[460,68211,19924],{"class":887},[460,68213,11704],{"class":466},[460,68215,11707],{"class":887},[460,68217,13991],{"class":466},[460,68219,894],{"class":887},[460,68221,2224],{"class":900},[460,68223,25930],{"class":466},[460,68225,781],{"class":887},[460,68227,68228],{"class":466}," arr.",[460,68230,68231],{"class":900},"length",[460,68233,19735],{"class":466},[460,68235,18828],{"class":887},[460,68237,2180],{"class":466},[460,68239,68240,68243,68245,68247],{"class":462,"line":2564},[460,68241,68242],{"class":466},"            document.",[460,68244,68191],{"class":929},[460,68246,2174],{"class":466},[460,68248,68249],{"class":1353},"`\n",[460,68251,68252,68255,68257,68259,68261,68263],{"class":462,"line":2569},[460,68253,68254],{"class":1353},"              \u003Cdiv style=\"height: ${",[460,68256,3381],{"class":466},[460,68258,17601],{"class":1353},[460,68260,17174],{"class":466},[460,68262,17649],{"class":1353},[460,68264,68265],{"class":1353},"}px;\">\n",[460,68267,68268,68271,68273,68275,68277,68279],{"class":462,"line":2579},[460,68269,68270],{"class":1353},"                \u003Cspan>${",[460,68272,3381],{"class":466},[460,68274,17601],{"class":1353},[460,68276,17174],{"class":466},[460,68278,17649],{"class":1353},[460,68280,68281],{"class":1353},"}\u003C\u002Fspan>\n",[460,68283,68284,68287,68289,68291,68293],{"class":462,"line":2597},[460,68285,68286],{"class":1353},"                \u003Ch4>第${",[460,68288,17174],{"class":466},[460,68290,61870],{"class":887},[460,68292,1400],{"class":900},[460,68294,68295],{"class":1353},"}季度\u003C\u002Fh4>\n",[460,68297,68298],{"class":462,"line":2610},[460,68299,68300],{"class":1353},"              \u003C\u002Fdiv>          \n",[460,68302,68303,68306],{"class":462,"line":2621},[460,68304,68305],{"class":1353},"            `",[460,68307,3754],{"class":466},[460,68309,68310],{"class":462,"line":2634},[460,68311,3858],{"class":466},[460,68313,68314],{"class":462,"line":2648},[460,68315,68316],{"class":942},"        \u002F\u002F 盒子结尾\n",[460,68318,68319,68321,68323,68325,68328],{"class":462,"line":2653},[460,68320,68188],{"class":466},[460,68322,68191],{"class":929},[460,68324,2174],{"class":466},[460,68326,68327],{"class":1353},"` \u003C\u002Fdiv>`",[460,68329,3754],{"class":466},[460,68331,68332,68334,68336],{"class":462,"line":2658},[460,68333,16244],{"class":466},[460,68335,225],{"class":470},[460,68337,473],{"class":466},[460,68339,68340,68342,68344],{"class":462,"line":2670},[460,68341,1776],{"class":466},[460,68343,1721],{"class":470},[460,68345,473],{"class":466},[460,68347,68348],{"class":462,"line":2683},[460,68349,522],{"emptyLinePlaceholder":521},[460,68351,68352,68354,68356],{"class":462,"line":2695},[460,68353,1776],{"class":466},[460,68355,704],{"class":470},[460,68357,473],{"class":466},[23,68359,68361],{"id":68360},"_284-冒泡排序","2.8.4 冒泡排序",[451,68363,68365],{"className":702,"code":68364,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cscript>\n    let arr = [5, 4, 3, 2, 1]\n    for (let i = 0; i \u003C arr.length - 1; i++) {\n      for (let j = 0; j \u003C arr.length - i - 1; j++) {\n        \u002F\u002F 开始交换,但是前提 第一个数大于第二个数才会进行交换\n        if (arr[j] > arr[j + 1]) {\n          \u002F\u002F 交换两个变量\n          let tmp = arr[j]\n          arr[j] = arr[j + 1]\n          arr[j + 1] = tmp\n        }\n      }\n    }\n    document.write(arr)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,68366,68367,68377,68391,68395,68403,68417,68437,68449,68457,68461,68469,68477,68507,68540,68576,68581,68600,68605,68618,68633,68649,68653,68657,68661,68669,68677,68685,68689],{"__ignoreMap":32},[460,68368,68369,68371,68373,68375],{"class":462,"line":463},[460,68370,1845],{"class":466},[460,68372,1848],{"class":470},[460,68374,1851],{"class":929},[460,68376,473],{"class":466},[460,68378,68379,68381,68383,68385,68387,68389],{"class":462,"line":476},[460,68380,781],{"class":466},[460,68382,704],{"class":470},[460,68384,1862],{"class":929},[460,68386,894],{"class":466},[460,68388,1867],{"class":1353},[460,68390,473],{"class":466},[460,68392,68393],{"class":462,"line":482},[460,68394,522],{"emptyLinePlaceholder":521},[460,68396,68397,68399,68401],{"class":462,"line":488},[460,68398,781],{"class":466},[460,68400,1880],{"class":470},[460,68402,473],{"class":466},[460,68404,68405,68407,68409,68411,68413,68415],{"class":462,"line":494},[460,68406,467],{"class":466},[460,68408,1889],{"class":470},[460,68410,1892],{"class":929},[460,68412,894],{"class":466},[460,68414,1897],{"class":1353},[460,68416,473],{"class":466},[460,68418,68419,68421,68423,68425,68427,68429,68431,68433,68435],{"class":462,"line":500},[460,68420,467],{"class":466},[460,68422,1889],{"class":470},[460,68424,1908],{"class":929},[460,68426,894],{"class":466},[460,68428,1913],{"class":1353},[460,68430,1916],{"class":929},[460,68432,894],{"class":466},[460,68434,1921],{"class":1353},[460,68436,473],{"class":466},[460,68438,68439,68441,68443,68445,68447],{"class":462,"line":506},[460,68440,467],{"class":466},[460,68442,1930],{"class":470},[460,68444,1933],{"class":466},[460,68446,1930],{"class":470},[460,68448,473],{"class":466},[460,68450,68451,68453,68455],{"class":462,"line":512},[460,68452,1776],{"class":466},[460,68454,1880],{"class":470},[460,68456,473],{"class":466},[460,68458,68459],{"class":462,"line":518},[460,68460,522],{"emptyLinePlaceholder":521},[460,68462,68463,68465,68467],{"class":462,"line":525},[460,68464,781],{"class":466},[460,68466,1721],{"class":470},[460,68468,473],{"class":466},[460,68470,68471,68473,68475],{"class":462,"line":531},[460,68472,467],{"class":466},[460,68474,225],{"class":470},[460,68476,473],{"class":466},[460,68478,68479,68481,68483,68485,68487,68489,68491,68493,68495,68497,68499,68501,68503,68505],{"class":462,"line":537},[460,68480,13988],{"class":887},[460,68482,891],{"class":466},[460,68484,894],{"class":887},[460,68486,897],{"class":466},[460,68488,7290],{"class":900},[460,68490,904],{"class":466},[460,68492,918],{"class":900},[460,68494,904],{"class":466},[460,68496,913],{"class":900},[460,68498,904],{"class":466},[460,68500,907],{"class":900},[460,68502,904],{"class":466},[460,68504,901],{"class":900},[460,68506,13307],{"class":466},[460,68508,68509,68511,68513,68515,68517,68519,68521,68523,68525,68527,68529,68532,68534,68536,68538],{"class":462,"line":543},[460,68510,19722],{"class":887},[460,68512,11704],{"class":466},[460,68514,11707],{"class":887},[460,68516,13991],{"class":466},[460,68518,894],{"class":887},[460,68520,2224],{"class":900},[460,68522,25930],{"class":466},[460,68524,781],{"class":887},[460,68526,68228],{"class":466},[460,68528,68231],{"class":900},[460,68530,68531],{"class":887}," -",[460,68533,1400],{"class":900},[460,68535,19735],{"class":466},[460,68537,18828],{"class":887},[460,68539,2180],{"class":466},[460,68541,68542,68544,68546,68548,68550,68552,68554,68556,68558,68560,68562,68564,68566,68568,68570,68572,68574],{"class":462,"line":549},[460,68543,11701],{"class":887},[460,68545,11704],{"class":466},[460,68547,11707],{"class":887},[460,68549,25984],{"class":466},[460,68551,894],{"class":887},[460,68553,2224],{"class":900},[460,68555,25991],{"class":466},[460,68557,781],{"class":887},[460,68559,68228],{"class":466},[460,68561,68231],{"class":900},[460,68563,68531],{"class":887},[460,68565,13991],{"class":466},[460,68567,17259],{"class":887},[460,68569,1400],{"class":900},[460,68571,25998],{"class":466},[460,68573,18828],{"class":887},[460,68575,2180],{"class":466},[460,68577,68578],{"class":462,"line":555},[460,68579,68580],{"class":942},"        \u002F\u002F 开始交换,但是前提 第一个数大于第二个数才会进行交换\n",[460,68582,68583,68585,68588,68590,68593,68595,68597],{"class":462,"line":560},[460,68584,3702],{"class":887},[460,68586,68587],{"class":466}," (arr[j] ",[460,68589,17668],{"class":887},[460,68591,68592],{"class":466}," arr[j ",[460,68594,8495],{"class":887},[460,68596,1400],{"class":900},[460,68598,68599],{"class":466},"]) {\n",[460,68601,68602],{"class":462,"line":566},[460,68603,68604],{"class":942},"          \u002F\u002F 交换两个变量\n",[460,68606,68607,68610,68613,68615],{"class":462,"line":572},[460,68608,68609],{"class":887},"          let",[460,68611,68612],{"class":466}," tmp ",[460,68614,894],{"class":887},[460,68616,68617],{"class":466}," arr[j]\n",[460,68619,68620,68623,68625,68627,68629,68631],{"class":462,"line":578},[460,68621,68622],{"class":466},"          arr[j] ",[460,68624,894],{"class":887},[460,68626,68592],{"class":466},[460,68628,8495],{"class":887},[460,68630,1400],{"class":900},[460,68632,13307],{"class":466},[460,68634,68635,68638,68640,68642,68644,68646],{"class":462,"line":812},[460,68636,68637],{"class":466},"          arr[j ",[460,68639,8495],{"class":887},[460,68641,1400],{"class":900},[460,68643,11884],{"class":466},[460,68645,894],{"class":887},[460,68647,68648],{"class":466}," tmp\n",[460,68650,68651],{"class":462,"line":818},[460,68652,3858],{"class":466},[460,68654,68655],{"class":462,"line":824},[460,68656,552],{"class":466},[460,68658,68659],{"class":462,"line":2074},[460,68660,509],{"class":466},[460,68662,68663,68665,68667],{"class":462,"line":2088},[460,68664,3586],{"class":466},[460,68666,68191],{"class":929},[460,68668,3873],{"class":466},[460,68670,68671,68673,68675],{"class":462,"line":2103},[460,68672,581],{"class":466},[460,68674,225],{"class":470},[460,68676,473],{"class":466},[460,68678,68679,68681,68683],{"class":462,"line":2122},[460,68680,1776],{"class":466},[460,68682,1721],{"class":470},[460,68684,473],{"class":466},[460,68686,68687],{"class":462,"line":2144},[460,68688,522],{"emptyLinePlaceholder":521},[460,68690,68691,68693,68695],{"class":462,"line":2158},[460,68692,1776],{"class":466},[460,68694,704],{"class":470},[460,68696,473],{"class":466},[14,68698,68699],{},[30,68700],{"alt":32,"src":68701},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-055.png",[14,68703,68704],{},"实际开发中我们使用的是函数：sort()，默认按照升序",[14,68706,68707],{},"let arr = [4, 2, 5, 1, 3]",[14,68709,68710],{},"\u002F\u002F 1.升序排列写法",[14,68712,68713],{},"arr.sort(function (a, b) {",[14,68715,68716],{},"return a - b",[14,68718,1580],{},[14,68720,68721],{},"console.log(arr) \u002F\u002F [1, 2, 3, 4, 5]",[14,68723,68724],{},"\u002F\u002F 降序排列写法",[14,68726,68713],{},[14,68728,68729],{},"return b - a",[14,68731,1580],{},[14,68733,68734],{},"console.log(arr) \u002F\u002F [5, 4, 3, 2, 1]",[18,68736,68738],{"id":68737},"_29-函数","2.9 函数",[14,68740,68741],{},[30,68742],{"alt":32,"src":68743},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-056.png",[14,68745,68746],{},"（）是调用的意思，为了区分哪个函数，所以前边加上函数名，因此函数的调用：函数名()",[14,68748,68749],{},"函数的声明用function",[14,68751,68752],{},"函数里边可以嵌套函数",[23,68754,68756],{"id":68755},"_291-函数传参","2.9.1 函数传参",[14,68758,68759],{},[30,68760],{"alt":32,"src":68761},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-057.png",[14,68763,68764],{},[30,68765],{"alt":32,"src":68766},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-058.png",[40,68768,68769,68772,68775,68778,68781,68784],{},[43,68770,68771],{},"形参：声明函数时写在函数名右边小括号里的叫形参（形式上的参数）",[43,68773,68774],{},"实参：调用函数时写在函数名右边小括号里的叫实参（实际上的参数）",[43,68776,68777],{},"形参可以理解为是在这个函数内声明的变量（比如 num1 = 10）实参可以理解为是给这个变量赋值",[43,68779,68780],{},"开发中尽量保持形参和实参个数一致",[43,68782,68783],{},"我们曾经使用过的 alert('打印'), parseInt('11'), Number('11') 本质上都是函数调用的传参",[43,68785,68786],{},"形参只在函数中有用，所以不需要进行声明这个变量",[14,68788,68789],{},"可以给形参初始值，此时函数调用的时候，不放实参这个函数也可以使用，不会报错；默认值只会在缺少实参参数传递时 才会被执行，所以有参数会优先执行传递过来的实参, 否则默认为undefined",[23,68791,68793],{"id":68792},"_292-函数的返回值","2.9.2 函数的返回值",[14,68795,68796],{},[30,68797],{"alt":32,"src":68798},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-059.png",[14,68800,68801],{},[30,68802],{"alt":32,"src":68803},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-060.png",[40,68805,68806,68809,68812,68815,68818],{},[43,68807,68808],{},"在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用",[43,68810,68811],{},"return 后面代码不会再被执行，会立即结束当前函数，所以 return 后面的数据不要换行写，return要写在函数的最下边",[43,68813,68814],{},"return函数可以没有 return，这种情况函数默认返回值为 undefined",[43,68816,68817],{},"返回多个值时使用数组，让它返回数组，就能将多个值返回",[43,68819,68820],{},"断点调试:进入函数内部看执行过程F11",[23,68822,68824],{"id":68823},"_293-参数个数不同情况","2.9.3 参数个数不同情况",[451,68826,68828],{"className":702,"code":68827,"language":704,"meta":32,"style":32},"    function fn(a, b) {\n      console.log(a + b);\n    }\n    fn(1, 2, 3)输出3，最后一个参数没人接，不要\n    fn(1)输出NaN，第二个值undefined,1+undefined=NaN,计算错误\n",[457,68829,68830,68835,68840,68844,68849],{"__ignoreMap":32},[460,68831,68832],{"class":462,"line":463},[460,68833,68834],{"class":466},"    function fn(a, b) {\n",[460,68836,68837],{"class":462,"line":476},[460,68838,68839],{"class":466},"      console.log(a + b);\n",[460,68841,68842],{"class":462,"line":482},[460,68843,509],{"class":466},[460,68845,68846],{"class":462,"line":488},[460,68847,68848],{"class":466},"    fn(1, 2, 3)输出3，最后一个参数没人接，不要\n",[460,68850,68851],{"class":462,"line":494},[460,68852,68853],{"class":466},"    fn(1)输出NaN，第二个值undefined,1+undefined=NaN,计算错误\n",[23,68855,68857],{"id":68856},"_294-作用域","2.9.4 作用域",[40,68859,68860,68866,68871,68874,68877],{},[43,68861,68862,68863],{},"一段程序代码中所用到的名字并不总是有效和可用的，而限定这个名字的可用性的代码范围就是这个名字的 ",[3944,68864,68865],{},"作用域",[43,68867,68868],{},[3944,68869,68870],{},"作用域的使用提高了程序逻辑的局部性，增强了程序的可靠性，减少了名字冲突",[43,68872,68873],{},"分为全局作用域和局部作用域；全局作用域的变量叫作全局变量，局部作用域的变量叫作局部变量，也称为函数作用域，函数内部有效",[43,68875,68876],{},"函数内部可以直接所使用全局变量",[43,68878,68879],{},"如果函数内部，变量没有声明，直接赋值，也当全局变量看，但是强烈不推荐，但是需要先调用函数才可以输出函数内部的变量",[14,68881,31087],{},[451,68883,68885],{"className":702,"code":68884,"language":704,"meta":32,"style":32},"    function fun() {\n      num = 10\n    }\n    fun()\n    console.log(num)\n   会输出10，如果不调用函数，直接就报错，尽量不要用这种方法，如果此时我在函数的上方写了\n   let num=20,则num的值会被覆盖，这样值就乱了，这样是不对的！\n",[457,68886,68887,68892,68897,68901,68905,68910,68915],{"__ignoreMap":32},[460,68888,68889],{"class":462,"line":463},[460,68890,68891],{"class":466},"    function fun() {\n",[460,68893,68894],{"class":462,"line":476},[460,68895,68896],{"class":466},"      num = 10\n",[460,68898,68899],{"class":462,"line":482},[460,68900,509],{"class":466},[460,68902,68903],{"class":462,"line":488},[460,68904,13522],{"class":466},[460,68906,68907],{"class":462,"line":494},[460,68908,68909],{"class":466},"    console.log(num)\n",[460,68911,68912],{"class":462,"line":500},[460,68913,68914],{"class":466},"   会输出10，如果不调用函数，直接就报错，尽量不要用这种方法，如果此时我在函数的上方写了\n",[460,68916,68917],{"class":462,"line":506},[460,68918,68919],{"class":466},"   let num=20,则num的值会被覆盖，这样值就乱了，这样是不对的！\n",[40,68921,68922,68925],{},[43,68923,68924],{},"函数内部的形参可以看做是局部变量",[43,68926,68927],{},"不同作用域变量可以重名；相同作用域变量不可以重名",[14,68929,68930,68931],{},"变量访问原则： ",[3944,68932,68933],{},"在能够访问到的情况下 先局部， 局部没有在找全局",[23,68935,68937],{"id":68936},"_295-匿名函数","2.9.5 匿名函数",[14,68939,68940],{},"函数可以分为具名函数和匿名函数",[14,68942,68943],{},"匿名函数是指没有名字的函数，它是无法直接使用的，使用的两种方式：",[103,68945,68946],{},[43,68947,68948],{},"函数表达式",[14,68950,68951],{},[30,68952],{"alt":32,"src":68953},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-061.png",[14,68955,68956],{},"里边也可以写参数",[14,68958,68959],{},"具名函数调用位置可以随意调整；",[14,68961,68962],{},"匿名函数函数表达式形式只能在声明后才可以使用",[103,68964,68965],{"start":476},[43,68966,68967],{},"立即执行函数",[14,68969,68970],{},[30,68971],{"alt":32,"src":68972},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-062.png",[14,68974,68975],{},"直接执行函数，不需要再调用！！！本质它已经调用了",[14,68977,68978],{},"写法：两个小括号，然后在第一个小括号中写function",[14,68980,68981],{},"(function () {})();",[14,68983,68984],{},"不要落下最后的;",[14,68986,68987],{},"立即执行函数必须要加;",[14,68989,68990],{},"分号写前写后都没问题",[14,68992,68993],{},"写前：",[14,68995,68996],{},"(function() {})()",[14,68998,68999],{},";(function () {})();",[14,69001,69002],{},"写后:",[14,69004,69005],{},"(function() {})();",[14,69007,68981],{},[14,69009,69010],{},"可以这样理解：最后一个小括号实质是调用前边的函数，为了保证前边的函数正常进行又给其套了一层括号，最后括号里边的数为实参，function后面的参数为形参",[14,69012,69013],{},"还有一种写法：",[14,69015,69016],{},"(function(){}());",[14,69018,69019],{},"或者:",[14,69021,69022],{},"!function(){}();",[14,69024,69025],{},"立即执行函数有时候也是可以加名字的：",[14,69027,69028],{},"(function flexible(window,document) {}(window,document));",[14,69030,69031],{},"省一些调用方法",[23,69033,69035],{"id":69034},"_296-逻辑中断","2.9.6 逻辑中断!!!",[14,69037,69038],{},[30,69039],{"alt":32,"src":69040},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-063.png",[14,69042,69043],{},"这样就不用非得给x,y初始化了",[14,69045,69046],{},[30,69047],{"alt":32,"src":69048},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-064.png",[14,69050,69051],{},"代码执行时先看左边",[14,69053,69054],{},"例如：console.log(false && 3+5)",[14,69056,69057],{},"&&逻辑与遇假则假，当执行左边为假时就不执行右边了，所以输出false",[14,69059,69060],{},"&&都是真时，就返回最后一个真值",[14,69062,69063],{},"console.log(11 && 22)",[14,69065,69066],{},"输出22",[14,69068,69069],{},"逻辑与：遇真则真",[14,69071,31087],{},[14,69073,69074],{},"let age=1",[14,69076,69077],{},"console.log(11 || age++)",[14,69079,69080],{},"不执行后边的age++，先执行左边11为真，就是真，就直接结束语句了，输出11",[14,69082,69083],{},"console.log(11 || 22)",[14,69085,69086],{},"||逻辑或遇到真就直接输出，输出结果为11",[14,69088,69089],{},"||如果都是假的话，就取最后一个假的值了",[23,69091,69093],{"id":69092},"_297-转换为boolean型","2.9.7 转换为Boolean型",[14,69095,69096],{},"显示转换：",[14,69098,69099,69102,69103],{},[3944,69100,69101],{},"记忆","： ",[3944,69104,69105],{},"‘’ 、0、undefined、null、false、NaN 转换为布尔值后都是false, 其余则为 true",[14,69107,69108],{},"空字符串为假，其他字符串全为真",[14,69110,69111],{},[30,69112],{"alt":32,"src":69113},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-065.png",[14,69115,69116],{},"隐式转换：",[14,69118,69119],{},[30,69120],{"alt":32,"src":69121},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-066.png",[14,69123,69124],{},"隐式转换:",[14,69126,69127],{},"null+3=3",[14,69129,69130],{},"undefined+3=NaN",[14,69132,69133],{},"null==undefined 输出true,他两个都当0看",[14,69135,69136],{},"null===undefined 输出false",[14,69138,69139],{},"undefined做任何操作都是NaN",[14,69141,69142],{},"NaN不等于NaN，NaN表示计算错误",[18,69144,69146],{"id":69145},"_210-对象","2.10 对象",[23,69148,69150],{"id":69149},"_2101-对象的介绍","2.10.1 对象的介绍",[14,69152,69153],{},"对象也是一种数据类型，里边的数据是无序的",[14,69155,69156],{},"对象由属性和方法组成",[14,69158,69159],{},[30,69160],{"alt":32,"src":69161},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-067.png",[14,69163,69164],{},[30,69165],{"alt":32,"src":69166},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-068.png",[14,69168,69169],{},[30,69170],{"alt":32,"src":69171},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-069.png",[23,69173,69175],{"id":69174},"_2102-对象属性","2.10.2 对象属性",[14,69177,69178],{},[30,69179],{"alt":32,"src":69180},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-070.png",[103,69182,69183],{},[43,69184,69185],{},"查询对象",[14,69187,69188],{},"对象名.属性 goods.uname",[14,69190,69191],{},"属性名中带有字符串时采用：对象名['属性名'] goods['uname']",[14,69193,69194],{},"不带字符串的属性名也可以使用 对象名['属性名']",[14,69196,69197],{},"[]语法里面的值如果不添加引号 默认会当成变量解析",[14,69199,69200],{},"总结：点后面的属性名一定不要加引号；[] 里面的属性名一定加引号(单引双引都🆗)",[103,69202,69203],{"start":476},[43,69204,69205],{},"重新赋值",[14,69207,69208],{},"对象名.属性=新值",[103,69210,69211],{"start":482},[43,69212,69213],{},"增加新数据",[14,69215,69208],{},[103,69217,69218],{"start":488},[43,69219,69220],{},"删除对象中的属性",[14,69222,69223],{},"delete 对象名.属性",[23,69225,69227],{"id":69226},"_2103-对象方法","2.10.3 对象方法",[14,69229,69230],{},[30,69231],{"alt":32,"src":69232},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-071.png",[14,69234,69235],{},"后边跟的是匿名函数",[14,69237,69238],{},"对象外面的叫函数；对象内部的叫方法",[14,69240,69241],{},[30,69242],{"alt":32,"src":69243},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-072.png",[23,69245,69247],{"id":69246},"_2104-遍历对象","2.10.4 遍历对象",[14,69249,69250],{},"理解为加括号的python字典遍历",[14,69252,69253],{},[30,69254],{"alt":32,"src":69255},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-073.png",[14,69257,69258],{},"k是字符串类型",[14,69260,69261],{},"用for in可以实现对数组的遍历工作，但是k为字符串，我们在遍历的时候需要用到数组的下标，下表是数组字面量，不应该为字符串，所以我们不要使用for in来遍历字典，正常for循环遍历就可以",[451,69263,69265],{"className":702,"code":69264,"language":704,"meta":32,"style":32},"   let arr = [1, 2, 3]\n    for (let k in arr) {\n      console.log(k)\n      console.log(arr[k])\n    }\n",[457,69266,69267,69272,69277,69282,69287],{"__ignoreMap":32},[460,69268,69269],{"class":462,"line":463},[460,69270,69271],{"class":466},"   let arr = [1, 2, 3]\n",[460,69273,69274],{"class":462,"line":476},[460,69275,69276],{"class":466},"    for (let k in arr) {\n",[460,69278,69279],{"class":462,"line":482},[460,69280,69281],{"class":466},"      console.log(k)\n",[460,69283,69284],{"class":462,"line":488},[460,69285,69286],{"class":466},"      console.log(arr[k])\n",[460,69288,69289],{"class":462,"line":494},[460,69290,509],{"class":466},[14,69292,69293],{},[30,69294],{"alt":32,"src":69295},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-074.png",[14,69297,69298],{},"数字型控制台输出颜色偏蓝，字符串型控制台打印是黑色的",[14,69300,69301],{},"for in 用来遍历对象 k这个写啥也行，习惯使用key或k",[14,69303,69304],{},"for in 得到的k是属性名",[225,69306,69307],{},"\n\nlet pink = {\n\nuname: 'pink老师',\n\nage: 18,\n\ngender: '男',\n\nsing: function () {\n\ndocument.write('唱歌')\n\n}\n\n}\n\n\u002F\u002F 遍历对象\n\nfor (let k in pink) {\n\nconsole.log(k)\n\nconsole.log(pink\\[k\\])\n\n}\n\n",[14,69309,69310],{},"k是字符串，不可以进行pink.k，这是不对的，k是带引号的属性名，点k的话，对象中就没有这个属性名了，所以得到的是undefined，无法准确遍历",[23,69312,69314],{"id":69313},"_2105-遍历数组对象","2.10.5 遍历数组对象、",[14,69316,69317],{},"数组中放对象信息",[451,69319,69321],{"className":453,"code":69320,"language":455,"meta":32,"style":32},"\u003Cscript>\n    let students = [\n      { name: '小明', age: 18, gender: '男', hometown: '河北省' },\n      { name: '小红', age: 19, gender: '女', hometown: '河南省' },\n      { name: '小刚', age: 17, gender: '男', hometown: '山西省' },\n      { name: '小丽', age: 18, gender: '女', hometown: '山东省' }\n    ]\n    for (let i = 0; i \u003C students.length; i++) {\n      for (let k in students[i]) {\n        console.log(`输出第${i + 1}个同学的${k}:${students[i][k]}`)\n        \u002F\u002F输出每个人的名字：\n        \u002F\u002Fconsole.log(students[i].name)\n      }\n    }\n  \u003C\u002Fscript>\n",[457,69322,69323,69331,69336,69341,69346,69351,69356,69360,69365,69370,69375,69380,69385,69389,69393],{"__ignoreMap":32},[460,69324,69325,69327,69329],{"class":462,"line":463},[460,69326,781],{"class":466},[460,69328,225],{"class":470},[460,69330,473],{"class":466},[460,69332,69333],{"class":462,"line":476},[460,69334,69335],{"class":466},"    let students = [\n",[460,69337,69338],{"class":462,"line":482},[460,69339,69340],{"class":466},"      { name: '小明', age: 18, gender: '男', hometown: '河北省' },\n",[460,69342,69343],{"class":462,"line":488},[460,69344,69345],{"class":466},"      { name: '小红', age: 19, gender: '女', hometown: '河南省' },\n",[460,69347,69348],{"class":462,"line":494},[460,69349,69350],{"class":466},"      { name: '小刚', age: 17, gender: '男', hometown: '山西省' },\n",[460,69352,69353],{"class":462,"line":500},[460,69354,69355],{"class":466},"      { name: '小丽', age: 18, gender: '女', hometown: '山东省' }\n",[460,69357,69358],{"class":462,"line":506},[460,69359,3355],{"class":466},[460,69361,69362],{"class":462,"line":512},[460,69363,69364],{"class":466},"    for (let i = 0; i \u003C students.length; i++) {\n",[460,69366,69367],{"class":462,"line":518},[460,69368,69369],{"class":466},"      for (let k in students[i]) {\n",[460,69371,69372],{"class":462,"line":525},[460,69373,69374],{"class":466},"        console.log(`输出第${i + 1}个同学的${k}:${students[i][k]}`)\n",[460,69376,69377],{"class":462,"line":531},[460,69378,69379],{"class":466},"        \u002F\u002F输出每个人的名字：\n",[460,69381,69382],{"class":462,"line":537},[460,69383,69384],{"class":466},"        \u002F\u002Fconsole.log(students[i].name)\n",[460,69386,69387],{"class":462,"line":543},[460,69388,552],{"class":466},[460,69390,69391],{"class":462,"line":549},[460,69392,509],{"class":466},[460,69394,69395,69397,69399],{"class":462,"line":555},[460,69396,581],{"class":466},[460,69398,225],{"class":470},[460,69400,473],{"class":466},[23,69402,69404],{"id":69403},"_2106-内置对象","2.10.6 内置对象",[14,69406,69407],{},"JavaScript内部提供的对象，包含各种属性和方法给开发者调用，例如document.write()",[103,69409,69410],{},[43,69411,69412],{},"数学对象Math",[14,69414,69415],{},[30,69416],{"alt":32,"src":69417},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-075.png",[14,69419,69420],{},[2756,69421,69424],{"href":69422,"rel":69423},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal%5C_Objects\u002FMath",[4943],"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal\\_Objects\u002FMath",[14,69426,69427],{},"联想：parseInt转换为整数型，与floor相似，输入小数的数字，只取最小值",[14,69429,69430],{},"两者区别是parseInt可以传入字符串，会去掉后边的字符串，只留前边的数字",[14,69432,69433],{},"数组不可以使用Math中的max,min来求最大值与最小值",[14,69435,69436],{},"null是一个空对象，可以认为：null类似于let obj={}",[14,69438,69439],{},"null属于对象数据类型",[103,69441,69442],{"start":476},[43,69443,69444],{},"生成任意范围随机数",[14,69446,69447],{},[30,69448],{"alt":32,"src":69449},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-076.png",[14,69451,69452],{},"这里加1是想取到右边的部分，因为它是左闭右开，第一个是[0,11），永远取不到11",[14,69454,69455],{},"乘以几就取不到几",[14,69457,69458],{},"取数组中的随机元素：",[14,69460,69461],{},"let arr = ['red', 'green', 'blue']",[14,69463,69464],{},"let random = Math.floor(Math.random() * arr.length)",[14,69466,69467],{},"console.log(arr[random])",[14,69469,69470],{},"这个函数得到的是全闭区间",[14,69472,69473],{},"function getRandom(N, M) {",[14,69475,69476],{},"return Math.floor(Math.random() * (M - N + 1)) + N",[14,69478,612],{},[14,69480,69481],{},"console.log(getRandom(4, 8))",[23,69483,69485],{"id":69484},"_2107-基本数据类型和引用数据类型","2.10.7 基本数据类型和引用数据类型",[14,69487,69488],{},[30,69489],{"alt":32,"src":69490},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-077.png",[14,69492,69493],{},[30,69494],{"alt":32,"src":69495},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-078.png",[14,69497,69498],{},[30,69499],{"alt":32,"src":69500},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-079.png",[14,69502,69503],{},"简单数据类型是直接把值放在了栈中，复杂数据类型是将值的地址放在栈中，值放在堆中，通过地址得到存放的内容",[14,69505,69506],{},[30,69507],{"alt":32,"src":69508},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-080.png",[14,69510,69511],{},[30,69512],{"alt":32,"src":69513},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-081.png",[14,69515,69516],{},"所有复杂数据类型都存放在堆中，将它内容的地址存放在栈中",[14,69518,69519],{},"简单数据类型是深拷贝，复杂数据类型是浅拷贝",[14,69521,69522],{},"js实际是没有堆栈的，这里是为了方便理解，在ts中有堆栈，ts与js百分之80是相同的",[1944,69524,69525],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":32,"searchDepth":476,"depth":476,"links":69527},[69528,69536,69537,69538,69539,69540,69547,69551,69557,69566],{"id":66771,"depth":476,"text":66772,"children":69529},[69530,69531,69532,69533,69534,69535],{"id":66775,"depth":482,"text":66776},{"id":66792,"depth":482,"text":66793},{"id":66832,"depth":482,"text":66833},{"id":66844,"depth":482,"text":66845},{"id":66853,"depth":482,"text":66854},{"id":66901,"depth":482,"text":66902},{"id":66911,"depth":476,"text":66912},{"id":66997,"depth":476,"text":66998},{"id":67020,"depth":476,"text":67021},{"id":67032,"depth":476,"text":67033},{"id":67219,"depth":476,"text":67220,"children":69541},[69542,69543,69544,69545,69546],{"id":67223,"depth":482,"text":67224},{"id":67232,"depth":482,"text":67233},{"id":67260,"depth":482,"text":67261},{"id":67296,"depth":482,"text":67297},{"id":67321,"depth":482,"text":67322},{"id":67333,"depth":476,"text":67334,"children":69548},[69549,69550],{"id":67354,"depth":482,"text":67355},{"id":67448,"depth":482,"text":67449},{"id":67506,"depth":476,"text":67507,"children":69552},[69553,69554,69555,69556],{"id":67510,"depth":482,"text":67511},{"id":67534,"depth":482,"text":67535},{"id":67587,"depth":482,"text":67588},{"id":68360,"depth":482,"text":68361},{"id":68737,"depth":476,"text":68738,"children":69558},[69559,69560,69561,69562,69563,69564,69565],{"id":68755,"depth":482,"text":68756},{"id":68792,"depth":482,"text":68793},{"id":68823,"depth":482,"text":68824},{"id":68856,"depth":482,"text":68857},{"id":68936,"depth":482,"text":68937},{"id":69034,"depth":482,"text":69035},{"id":69092,"depth":482,"text":69093},{"id":69145,"depth":476,"text":69146,"children":69567},[69568,69569,69570,69571,69572,69573,69574],{"id":69149,"depth":482,"text":69150},{"id":69174,"depth":482,"text":69175},{"id":69226,"depth":482,"text":69227},{"id":69246,"depth":482,"text":69247},{"id":69313,"depth":482,"text":69314},{"id":69403,"depth":482,"text":69404},{"id":69484,"depth":482,"text":69485},{},"\u002Fwiki\u002F2025-09-02-js\u002Fch2",{"title":66763,"description":16682},"wiki\u002F2025-09-02-JS学习\u002Fch2-基础语法","rK6tHUmvUvisqc9Yrr_XipbUmuD7o7U3t6tcvliyB7c",{"id":69581,"title":69582,"body":69583,"description":16682,"extension":16683,"meta":92786,"navigation":521,"path":92787,"seo":92788,"stem":92789,"__hash__":92790},"wiki\u002Fwiki\u002F2025-09-02-JS学习\u002Fch3-Web-APIs.md","3.Web APIs",{"type":7,"value":69584,"toc":92726},[69585,69588,69591,69594,69599,69602,69605,69608,69612,69616,69622,69627,69635,69642,69645,69649,69654,69659,69664,69667,69670,69681,69684,69688,69691,69694,69699,69704,69709,69712,69715,69804,69807,69812,69815,69820,69823,69826,69831,69834,69839,69843,69846,69860,69864,69869,69872,69875,69879,69884,69887,69891,69895,69900,69904,69909,69912,69915,69918,69921,69924,69927,69932,69937,69965,69968,69971,69974,69979,69982,69985,69988,69991,69995,70024,70028,70033,70038,70041,70044,70047,70052,70166,70171,70176,70337,70342,70345,70349,70354,70359,70362,70365,70368,70371,70374,70377,70380,70383,70386,70389,70392,70395,70398,70401,70403,70406,70409,70412,70417,70421,70810,70813,70819,70823,70828,72082,72087,72090,72093,72096,72101,73296,73300,73306,73311,73314,73319,73324,73328,73332,73337,73340,73345,73348,73351,73355,74255,74258,74262,74480,74483,74486,74489,74715,74718,74942,74945,74949,74954,74957,74960,75187,75190,75222,75225,75229,75234,75238,75241,75244,75247,75250,75253,75256,75259,75264,76540,76544,76547,77634,77638,77641,77644,77647,77650,77654,77657,77660,77662,77670,79133,79137,79140,79143,79146,79355,79358,79362,79366,79371,79376,79379,79382,79387,79391,79396,79399,79507,79511,79516,79521,79524,79527,79531,79536,79541,79546,79549,79552,79563,79566,79571,79576,79579,79582,79655,79659,79664,79667,79669,79680,79684,79689,81009,81012,81015,81018,81020,81023,81026,81029,81032,81035,81038,81041,81044,81047,81050,81053,81056,81058,81060,81063,81067,82159,82162,82165,82180,82194,82197,82202,82208,82213,82217,82221,82226,82230,82235,82677,82682,82685,82689,82694,82697,82700,82704,82709,82713,82718,82723,82727,82732,82737,82740,82745,82750,82754,82759,82764,82868,82871,82875,82880,83244,83247,83250,83253,83256,83259,83262,83265,83268,84563,84567,84572,84577,84580,84583,84586,84589,84591,84596,84601,84604,84608,84613,84618,84623,84626,84629,84632,84635,84638,84643,84646,84650,84655,84660,84664,84669,84672,84677,84680,84683,84686,84689,84692,84697,84700,84703,84706,84709,84713,84718,84721,84725,84730,84733,84736,84740,84769,84772,84776,84780,84785,84789,84794,84797,84800,84803,84806,84809,84812,84815,84818,84821,84824,84827,84830,84833,84836,84840,84845,84850,84853,84857,84861,84866,84869,84873,84876,84879,84884,84889,84894,84899,84904,84907,84910,84915,84920,84924,84929,84932,84937,84940,84943,84946,84949,84954,84957,84966,84970,84975,84978,84981,84985,84988,84993,84997,85000,85006,85012,85016,85042,85045,86593,86596,87092,87094,87099,87104,87109,87113,87118,87123,87128,87132,87137,87140,87143,87146,87149,87153,87156,87161,87164,87169,87173,87178,87181,87186,87191,87196,87199,87202,87207,87212,87215,87218,87222,87225,87230,87233,87238,87241,87246,87251,87256,87259,87264,87329,87332,87343,87347,87352,87521,87525,87530,87533,87536,87539,87543,87554,87558,87561,87566,87571,87574,87577,87580,87583,87586,87588,87591,87594,87597,87602,87605,87610,87613,87617,87620,87623,87637,87641,87644,87698,87703,87706,87709,87714,87717,87721,87726,87849,87853,87858,87863,87944,87949,87953,87956,87961,87966,87972,87975,87978,87981,87985,87990,87993,88004,88008,88025,91058,91062,91065,91068,91071,91092,91096,91099,91107,91110,91115,91118,91121,91126,91131,91135,91156,91160,91165,91168,91171,91174,91177,91181,91186,91189,91193,91198,91201,91206,91209,91214,91217,91222,92423,92427,92432,92435,92440,92723],[10,69586,69582],{"id":69587},"_3web-apis",[14,69589,69590],{},"尽量使用const，因为绝大多数定义的变量基本上它的值都不会再改变",[14,69592,69593],{},"实际开发中的思路：有了变量先给const，如果发现它后面是要被修改的，再改为let",[14,69595,69596],{},[30,69597],{"alt":32,"src":69598},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-082.png",[14,69600,69601],{},"此时arr.push(3),给数组添加新的元素，这个元素加添加到堆中了，地址还是那个地址，因此这里的使用const来声明是没有问题的。如果此时接着写arr=[4,5,6]，此时这个就是一个新的数组，存到堆中的位置与之前那个是不同的，在栈中存了新地址，所以此时就会报错，就是不对的，如果想这样干，只能使用let来声明变量。const声明的是常量",[14,69603,69604],{},"建议数组和对象使用 const 来声明",[14,69606,69607],{},"Web APIs分为DoM(页面文档对象模型)和BoM(浏览器对象模型)",[18,69609,69611],{"id":69610},"_31-dom文档对象模型","3.1 Dom(文档对象模型)",[23,69613,69615],{"id":69614},"非常重要window是整个窗口html是dom树的根节点document代表了整个html中所有内容代表整个html页面dom树","非常重要：window是整个窗口；html是DOM树的根节点；document代表了整个html中所有内容，代表整个HTML页面（DOM树）",[14,69617,69618,69621],{},[457,69619,69620],{},"document"," = HTML 文件解析后的对象化表示；",[14,69623,69624,69626],{},[457,69625,69620],{}," ≠ HTML 文件本身",[14,69628,69629,69634],{},[3944,69630,69631],{},[457,69632,69633],{},"window"," = 窗口对象，代表浏览器的这个标签页\u002F容器",[14,69636,69637,69641],{},[3944,69638,69639],{},[457,69640,69620],{}," ：容器里的内容，代表当前加载的网页（DOM）",[14,69643,69644],{},"document实际上为window.document的简写",[23,69646,69648],{"id":69647},"_311-关于dom的基础知识","3.1.1 关于DoM的基础知识",[14,69650,69651],{},[30,69652],{"alt":32,"src":69653},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-083.png",[14,69655,69656],{},[30,69657],{"alt":32,"src":69658},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-084.png",[14,69660,69661],{},[30,69662],{"alt":32,"src":69663},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-085.png",[14,69665,69666],{},"console.dir()",[14,69668,69669],{},"dir用来打印对象",[40,69671,69672,69675,69678],{},[43,69673,69674],{},"任何一个标签，都是一个对象",[43,69676,69677],{},"也就是说这些标签在HTML中就是一个标签，但是在js的DoM中从HTML获取过来就是对象，叫作DoM对象",[43,69679,69680],{},"在DoM中最大的对象是document对象，它提供的方法是用来访问和操作网页内容的，document是整个网页中最大的对象，它存放了页面的所有元素！",[14,69682,69683],{},"DoM对象可以理解为就是标签元素，在html中就是标签，修饰的时候使用的是css，在js中就是对象，通过对对象的属性进行修改来实现对标签的修饰",[23,69685,69687],{"id":69686},"_312-获取dom对象","3.1.2 获取DoM对象",[14,69689,69690],{},"css是通过选择器的方式来获取标签，对标签的样式进行修饰的",[14,69692,69693],{},"获取DoM元素现在主要是通过css选择器的方式来获取，必须牢记这一方法！！！",[14,69695,69696],{},[3944,69697,69698],{},"查找元素DOM元素就是利用 JS 选择页面中标签元素",[103,69700,69701],{},[43,69702,69703],{},"利用CSS选择器来获取标签元素",[14,69705,69706],{},[30,69707],{"alt":32,"src":69708},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-086.png",[14,69710,69711],{},"里边的选择器必须必须加引号！！！",[14,69713,69714],{},"只选择第一个元素",[451,69716,69718],{"className":453,"code":69717,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cdiv class=\"box\">123\u003C\u002Fdiv>\n  \u003Cdiv class=\"box\">456\u003C\u002Fdiv>\n  \u003Cscript>\n    \u002F\u002F 1.获取匹配的第一个元素\n    const box = document.querySelector('div')\n    console.dir(box)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,69719,69720,69728,69746,69765,69773,69778,69783,69788,69796],{"__ignoreMap":32},[460,69721,69722,69724,69726],{"class":462,"line":463},[460,69723,781],{"class":466},[460,69725,1721],{"class":470},[460,69727,473],{"class":466},[460,69729,69730,69732,69734,69736,69738,69740,69742,69744],{"class":462,"line":476},[460,69731,467],{"class":466},[460,69733,2737],{"class":470},[460,69735,2740],{"class":929},[460,69737,894],{"class":466},[460,69739,13932],{"class":1353},[460,69741,12647],{"class":466},[460,69743,2737],{"class":470},[460,69745,473],{"class":466},[460,69747,69748,69750,69752,69754,69756,69758,69761,69763],{"class":462,"line":482},[460,69749,467],{"class":466},[460,69751,2737],{"class":470},[460,69753,2740],{"class":929},[460,69755,894],{"class":466},[460,69757,13932],{"class":1353},[460,69759,69760],{"class":466},">456\u003C\u002F",[460,69762,2737],{"class":470},[460,69764,473],{"class":466},[460,69766,69767,69769,69771],{"class":462,"line":488},[460,69768,467],{"class":466},[460,69770,225],{"class":470},[460,69772,473],{"class":466},[460,69774,69775],{"class":462,"line":494},[460,69776,69777],{"class":466},"    \u002F\u002F 1.获取匹配的第一个元素\n",[460,69779,69780],{"class":462,"line":500},[460,69781,69782],{"class":466},"    const box = document.querySelector('div')\n",[460,69784,69785],{"class":462,"line":506},[460,69786,69787],{"class":466},"    console.dir(box)\n",[460,69789,69790,69792,69794],{"class":462,"line":512},[460,69791,581],{"class":466},[460,69793,225],{"class":470},[460,69795,473],{"class":466},[460,69797,69798,69800,69802],{"class":462,"line":518},[460,69799,1776],{"class":466},[460,69801,1721],{"class":470},[460,69803,473],{"class":466},[14,69805,69806],{},"只选123，不选456",[14,69808,69809],{},[30,69810],{"alt":32,"src":69811},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-087.png",[14,69813,69814],{},"返回的是一个数组的集合，不能对其进行直接修改",[14,69816,69817],{},[30,69818],{"alt":32,"src":69819},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-088.png",[14,69821,69822],{},"单个标签也可以使用querySelectAll()来获取，直接通过索引号就可以使用这个元素",[14,69824,69825],{},"querySelect()的调用对象是它的父亲，并不一定用document来进行调用",[103,69827,69828],{"start":476},[43,69829,69830],{},"其他方法来获取标签元素",[14,69832,69833],{},"不要使用，还是使用css法获取DoM的元素的方法就行，下面的方法认识就ok",[14,69835,69836],{},[30,69837],{"alt":32,"src":69838},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-089.png",[23,69840,69842],{"id":69841},"_313-操作元素的内容","3.1.3 操作元素的内容",[14,69844,69845],{},"设置修改DOM元素内容有两种方式：",[40,69847,69848,69851,69854,69857],{},[43,69849,69850],{},"元素.innerText=''",[43,69852,69853],{},"元素.innerHTML=''",[43,69855,69856],{},"不写字符串输出数字也是可以的",[43,69858,69859],{},"元素.innerHtml=1",[115,69861,69863],{"id":69862},"_3131-innertext","3.1.3.1 innerText",[14,69865,69866],{},[30,69867],{"alt":32,"src":69868},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-090.png",[14,69870,69871],{},"思路：实现了修改盒子中的内容！",[14,69873,69874],{},"它只显示纯文本，不解析标签",[115,69876,69878],{"id":69877},"_3132-innerhtml","3.1.3.2 innerHTML",[14,69880,69881],{},[30,69882],{"alt":32,"src":69883},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-091.png",[14,69885,69886],{},"相比于innerText，他的强大之处在于可以解析标签",[23,69888,69890],{"id":69889},"_314-操作元素属性","3.1.4 操作元素属性",[115,69892,69894],{"id":69893},"_3141-操作元素常用属性","3.1.4.1 操作元素常用属性",[14,69896,69897],{},[30,69898],{"alt":32,"src":69899},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-092.png",[115,69901,69903],{"id":69902},"_3142-操作元素样式属性","3.1.4.2 操作元素样式属性",[14,69905,69906],{},[30,69907],{"alt":32,"src":69908},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-093.png",[14,69910,69911],{},"后边跟的是字符串，必须加引号，然后单位也不要忘记",[14,69913,69914],{},"div.style.backgroundColor = 'hotpink'",[14,69916,69917],{},"如果按照css的写法，-表示减，就会出错",[14,69919,69920],{},"body元素不需要再获取，直接用就行！！！！！！",[14,69922,69923],{},"如果使用的是body标签，它是网页写标签部分的唯一标签，所以对body来说可以不用获取他的DOM对象，直接使用document.body.style来进行修改样式",[14,69925,69926],{},"通过该方式来修改css样式，解析之后生成的是行内样式，行内样式的权重高于内部样式，权重非常高，所以可以覆盖原有样式",[14,69928,69929],{},[30,69930],{"alt":32,"src":69931},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-094.png",[14,69933,69934],{},[30,69935],{"alt":32,"src":69936},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-095.png",[103,69938,69939,69942,69945,69948,69951,69954],{},[43,69940,69941],{},"className这个方式就是修改很多样式的时候来使用的！",[43,69943,69944],{},"常常用于一个动作特效，比如轮播图点下边按钮才动",[43,69946,69947],{},"这个只能添加类名，前边已经有classNmae，就不需要加点了，只写类名就ok!",[43,69949,69950],{},"className为属性名，如果还用class的话就导致与关键字冲突",[43,69952,69953],{},"通过操作类名来修改css时，一定要看看这个标签是否原本就有类名，如果不要之前的样式，写上div.classNmae=‘box’后会覆盖之前的nav，就是给对象中的属性改值了，就是如果要的话就写成div.className='nav box'",[43,69955,69956,69957,69962],{},"解析标签的时候就变为了",[2737,69958],{"className":69959},[69960,69961],"nav","box",[69963,69964],"br",{},[14,69966,69967],{},"例子：",[2737,69969],{"className":69970},[69960],[225,69972,69973],{},"\n\nconst div = document.querySelector('div')\n\ndiv.className = 'box'\n\n",[14,69975,69976],{},[30,69977],{"alt":32,"src":69978},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-096.png",[14,69980,69981],{},"追加和删除类名用classList",[14,69983,69984],{},"常用于类似于开关的操作",[14,69986,69987],{},"toggle,切换一个类名意思就是：有就删掉，没有就加上（指的是盒子中是否有这个类名，不是说css中有没有这个类名，css中肯定得写类名的，不写那还要操作类控制css干嘛）",[14,69989,69990],{},"4.classList.contains()看看有没有包含某个类，如果有则返回true，没有则返回false",[115,69992,69994],{"id":69993},"_3143-牢记点","3.1.4.3 牢记点",[103,69996,69997,70000,70003,70006,70009,70012,70015,70018,70021],{},[43,69998,69999],{},"获取对象时在不忘记双引号的同时加上类选择器前的.；id选择器前的#",[43,70001,70002],{},"使用style属性操作css时不要忘记引号",[43,70004,70005],{},"使用className或者classList时也不要忘记引号",[43,70007,70008],{},"修改标签内容，也就是获取后的对象（浏览器根据html生成的js对象），通过innerText和innerHTML来实现，只不过innerText不能识别标签，innerHTML可以识别标签",[43,70010,70011],{},"获取后的标签就是一个对象，其中包含了非常多的属性值和方法，const xxx=document.querySelector('.nav')，这个xxx就是一个常量，起啥名也行，一般写成这个盒子的名或者原有类名，赋值给这个常量后，就变成对象，className等就是这个类（元素）下的方法",[43,70013,70014],{},"body就这么一个元素，所以可以对它不获取，来xiu'ga",[43,70016,70017],{},"若： let arr=['1','2',3] arr[0]=1",[43,70019,70020],{},"如果一个对象第一个属性值为‘1’，则获取该对象的属性值就是这个1",[43,70022,70023],{},"上述说明了输出对象和数组中字符串的时候是不带引号的，在修改对象属性值的时候必须加字符串必须加引号，不然中文会报错，计算机不会认为这是字符串，但是将这个字符串对应的数组加下标的方式给他，就不要加字符串了，它本身就是字符串呀这个元素",[23,70025,70027],{"id":70026},"_315-操作表单元素","3.1.5 操作表单元素",[103,70029,70030],{},[43,70031,70032],{},"天生的属性",[14,70034,70035],{},[30,70036],{"alt":32,"src":70037},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-097.png",[14,70039,70040],{},"innerHTML可以得到元素的内容 username.innerHTML,但是仅限于普通元素，表单不是通过它来进行获取的，得到表单内容用value,但是button比较特殊,它是双标签,要使用.innerHTML来获取,使用.value是无法获取的",[14,70042,70043],{},"console.log(username.innerHTML) 获取一般元素的值，对表单元素来说输出的是空，啥也没有，无法读取内容，修改内容是 username.innerHTML='修改的值'",[14,70045,70046],{},"console.log(username.value) 获取表单值 修改表单元素的值：username.value='修改的值'",[14,70048,70049],{},[30,70050],{"alt":32,"src":70051},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-098.png",[451,70053,70055],{"className":702,"code":70054,"language":704,"meta":32,"style":32},"在复选框中如果checked='checked',则可以在表单元素中只写一个checked\n\u003Cinput type=\"checkbox\" name=\"\" id=\"\" checked>\n不选的话：\nconst input = document.querySelector('input')\ninput.checked=false\n这里写'true'也对，但是不要这样写，字符串只有空时为假，这里有隐式转换，就正常写布尔值就行\n\n禁用按钮：\n它的属性值disabled='disabled'这样可以进行，属性与值相等，就只写一个属性值就行\n\u003Cbutton disabled>点击\u003C\u002Fbutton>\n\u003Cbutton>点击\u003C\u002Fbutton>\nconst bt = document.querySelector('button')\nbt.disabled = false\n",[457,70056,70057,70062,70094,70099,70104,70109,70114,70118,70123,70128,70144,70156,70161],{"__ignoreMap":32},[460,70058,70059],{"class":462,"line":463},[460,70060,70061],{"class":466},"在复选框中如果checked='checked',则可以在表单元素中只写一个checked\n",[460,70063,70064,70066,70069,70072,70074,70077,70079,70081,70083,70085,70087,70089,70092],{"class":462,"line":476},[460,70065,781],{"class":466},[460,70067,70068],{"class":470},"input",[460,70070,70071],{"class":929}," type",[460,70073,894],{"class":466},[460,70075,70076],{"class":1353},"\"checkbox\"",[460,70078,1908],{"class":929},[460,70080,894],{"class":466},[460,70082,6606],{"class":1353},[460,70084,10504],{"class":929},[460,70086,894],{"class":466},[460,70088,6606],{"class":1353},[460,70090,70091],{"class":929}," checked",[460,70093,473],{"class":466},[460,70095,70096],{"class":462,"line":482},[460,70097,70098],{"class":466},"不选的话：\n",[460,70100,70101],{"class":462,"line":488},[460,70102,70103],{"class":466},"const input = document.querySelector('input')\n",[460,70105,70106],{"class":462,"line":494},[460,70107,70108],{"class":466},"input.checked=false\n",[460,70110,70111],{"class":462,"line":500},[460,70112,70113],{"class":466},"这里写'true'也对，但是不要这样写，字符串只有空时为假，这里有隐式转换，就正常写布尔值就行\n",[460,70115,70116],{"class":462,"line":506},[460,70117,522],{"emptyLinePlaceholder":521},[460,70119,70120],{"class":462,"line":512},[460,70121,70122],{"class":466},"禁用按钮：\n",[460,70124,70125],{"class":462,"line":518},[460,70126,70127],{"class":466},"它的属性值disabled='disabled'这样可以进行，属性与值相等，就只写一个属性值就行\n",[460,70129,70130,70132,70134,70137,70140,70142],{"class":462,"line":525},[460,70131,781],{"class":466},[460,70133,10501],{"class":470},[460,70135,70136],{"class":929}," disabled",[460,70138,70139],{"class":466},">点击\u003C\u002F",[460,70141,10501],{"class":470},[460,70143,473],{"class":466},[460,70145,70146,70148,70150,70152,70154],{"class":462,"line":531},[460,70147,781],{"class":466},[460,70149,10501],{"class":470},[460,70151,70139],{"class":466},[460,70153,10501],{"class":470},[460,70155,473],{"class":466},[460,70157,70158],{"class":462,"line":537},[460,70159,70160],{"class":466},"const bt = document.querySelector('button')\n",[460,70162,70163],{"class":462,"line":543},[460,70164,70165],{"class":466},"bt.disabled = false\n",[103,70167,70168],{"start":476},[43,70169,70170],{},"自定义属性",[14,70172,70173],{},[30,70174],{"alt":32,"src":70175},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-099.png",[451,70177,70179],{"className":453,"code":70178,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cdiv data-id=\"1\" data-spm=\"我不知道\">1\u003C\u002Fdiv>\n  \u003Cdiv data-id=\"2\">2\u003C\u002Fdiv>\n  \u003Cdiv data-id=\"3\">3\u003C\u002Fdiv>\n  \u003Cdiv data-id=\"4\">4\u003C\u002Fdiv>\n  \u003Cdiv data-id=\"5\">5\u003C\u002Fdiv>\n  \u003Cscript>\n    const one = document.querySelector('div')\n    console.log(one.dataset)\n    console.log(one.dataset.id)\n    console.log(one.dataset.spm)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,70180,70181,70189,70217,70236,70255,70274,70293,70301,70306,70311,70316,70321,70329],{"__ignoreMap":32},[460,70182,70183,70185,70187],{"class":462,"line":463},[460,70184,781],{"class":466},[460,70186,1721],{"class":470},[460,70188,473],{"class":466},[460,70190,70191,70193,70195,70198,70200,70202,70205,70207,70210,70213,70215],{"class":462,"line":476},[460,70192,467],{"class":466},[460,70194,2737],{"class":470},[460,70196,70197],{"class":929}," data-id",[460,70199,894],{"class":466},[460,70201,2772],{"class":1353},[460,70203,70204],{"class":929}," data-spm",[460,70206,894],{"class":466},[460,70208,70209],{"class":1353},"\"我不知道\"",[460,70211,70212],{"class":466},">1\u003C\u002F",[460,70214,2737],{"class":470},[460,70216,473],{"class":466},[460,70218,70219,70221,70223,70225,70227,70229,70232,70234],{"class":462,"line":482},[460,70220,467],{"class":466},[460,70222,2737],{"class":470},[460,70224,70197],{"class":929},[460,70226,894],{"class":466},[460,70228,2799],{"class":1353},[460,70230,70231],{"class":466},">2\u003C\u002F",[460,70233,2737],{"class":470},[460,70235,473],{"class":466},[460,70237,70238,70240,70242,70244,70246,70248,70251,70253],{"class":462,"line":488},[460,70239,467],{"class":466},[460,70241,2737],{"class":470},[460,70243,70197],{"class":929},[460,70245,894],{"class":466},[460,70247,2826],{"class":1353},[460,70249,70250],{"class":466},">3\u003C\u002F",[460,70252,2737],{"class":470},[460,70254,473],{"class":466},[460,70256,70257,70259,70261,70263,70265,70267,70270,70272],{"class":462,"line":494},[460,70258,467],{"class":466},[460,70260,2737],{"class":470},[460,70262,70197],{"class":929},[460,70264,894],{"class":466},[460,70266,20245],{"class":1353},[460,70268,70269],{"class":466},">4\u003C\u002F",[460,70271,2737],{"class":470},[460,70273,473],{"class":466},[460,70275,70276,70278,70280,70282,70284,70286,70289,70291],{"class":462,"line":500},[460,70277,467],{"class":466},[460,70279,2737],{"class":470},[460,70281,70197],{"class":929},[460,70283,894],{"class":466},[460,70285,20266],{"class":1353},[460,70287,70288],{"class":466},">5\u003C\u002F",[460,70290,2737],{"class":470},[460,70292,473],{"class":466},[460,70294,70295,70297,70299],{"class":462,"line":506},[460,70296,467],{"class":466},[460,70298,225],{"class":470},[460,70300,473],{"class":466},[460,70302,70303],{"class":462,"line":512},[460,70304,70305],{"class":466},"    const one = document.querySelector('div')\n",[460,70307,70308],{"class":462,"line":518},[460,70309,70310],{"class":466},"    console.log(one.dataset)\n",[460,70312,70313],{"class":462,"line":525},[460,70314,70315],{"class":466},"    console.log(one.dataset.id)\n",[460,70317,70318],{"class":462,"line":531},[460,70319,70320],{"class":466},"    console.log(one.dataset.spm)\n",[460,70322,70323,70325,70327],{"class":462,"line":537},[460,70324,581],{"class":466},[460,70326,225],{"class":470},[460,70328,473],{"class":466},[460,70330,70331,70333,70335],{"class":462,"line":543},[460,70332,1776],{"class":466},[460,70334,1721],{"class":470},[460,70336,473],{"class":466},[14,70338,70339],{},[30,70340],{"alt":32,"src":70341},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-100.png",[14,70343,70344],{},"document.querySelector选择的是第一个对象（元素）",[23,70346,70348],{"id":70347},"_316-定时器-间歇函数","3.1.6 定时器-间歇函数",[14,70350,70351],{},[30,70352],{"alt":32,"src":70353},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-101.png",[14,70355,70356],{},[30,70357],{"alt":32,"src":70358},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-102.png",[14,70360,70361],{},"定时器返回的是数字，表示第几个定时器，每个定时器的都是独一无二的，表示的是第几个定时器：",[225,70363,70364],{},"\n\nfunction fn() {\n\n   document.write(1)\n\n   }\n\nlet n = setInterval(fn, 1000)\n\n   console.log(n)\n\n",[14,70366,70367],{},"此时输出结果为1，每1000毫秒输出一个1，若：",[225,70369,70370],{},"\n\nfunction fn() {\n\n   document.write(1)\n\n   }\n\nlet n = setInterval(fn, 1000)\n\n   let n1 = setInterval(fn, 1000)\n\n   console.log(n1)\n\n",[14,70372,70373],{},"此时输出结果就是2，每1秒输出两个1（因为前边还有一个执行输出1的定时器，两个一起作用在浏览器就每秒输出11）",[14,70375,70376],{},"当个执行时输出前有一秒的空窗期，当经过setInterval时，如果间隔时间为1000，它就是过了一秒钟才去调用函数，他不是立即执行的函数，跟后边的间隔时间有关",[14,70378,70379],{},"单位为毫秒！！！",[14,70381,70382],{},"可以搭配匿名函数来用！！！",[14,70384,70385],{},"setInterval(function () {",[14,70387,70388],{},"alert('两秒执行一次')",[14,70390,70391],{},"}, 2000)",[14,70393,70394],{},"如果有名函数的话，就不要在函数名的后边加小括号，小括号表示调用这个函数",[14,70396,70397],{},"function fn() {",[14,70399,70400],{},"document.write(1)",[14,70402,612],{},[14,70404,70405],{},"setInterval(fn, 1000)",[14,70407,70408],{},"如果函数名后边非得加括号的话，就将这个函数再加个引号，但是尽量不要用这种方式",[14,70410,70411],{},"setInterval('fn()', 1000)",[14,70413,70414],{},[30,70415],{"alt":32,"src":70416},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-103.png",[115,70418,70420],{"id":70419},"_3161-阅读注册协议","3.1.6.1 阅读注册协议",[451,70422,70424],{"className":702,"code":70423,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Ctextarea name=\"\" id=\"\" cols=\"30\" rows=\"10\">\n        用户注册协议\n        欢迎注册成为京东用户！在您注册过程中，您需要完成我们的注册流程并通过点击同意的形式在线签署以下协议，请您务必仔细阅读、充分理解协议中的条款内容后再点击同意（尤其是以粗体或下划线标识的条款，因为这些条款可能会明确您应履行的义务或对您的权利有所限制）。\n        【请您注意】如果您不同意以下协议全部或任何条款约定，请您停止注册。您停止注册后将仅可以浏览我们的商品信息但无法享受我们的产品或服务。如您按照注册流程提示填写信息，阅读并点击同意上述协议且完成全部注册流程后，即表示您已充分阅读、理解并接受协议的全部内容，并表明您同意我们可以依据协议内容来处理您的个人信息，并同意我们将您的订单信息共享给为完成此订单所必须的第三方合作方（详情查看\n    \u003C\u002Ftextarea>\n  \u003Cbr>\n  \u003Cbutton class=\"btn\" disabled>我已经阅读用户协议(5)\u003C\u002Fbutton>\n  \u003Cscript>\n    \u002F\u002F 1. 获取元素\n    const btn = document.querySelector('.btn')\n    \u002F\u002F console.log(btn.innerHTML)  butto按钮特殊用innerHTML\n    \u002F\u002F 2. 倒计时\n    let i = 5\n    \u002F\u002F 2.1 开启定时器\n    let n = setInterval(function () {\n      i--\n      btn.innerHTML = `我已经阅读用户协议(${i})`\n      if (i === 0) {\n        clearInterval(n)  \u002F\u002F 关闭定时器\n        \u002F\u002F 定时器停了，我就可以开按钮\n        btn.disabled = false\n        btn.innerHTML = '同意'\n      }\n    }, 1000)\n\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,70425,70426,70436,70450,70454,70462,70476,70496,70508,70516,70520,70528,70565,70570,70575,70580,70588,70596,70618,70626,70631,70651,70656,70661,70672,70677,70695,70703,70718,70731,70742,70747,70756,70766,70770,70778,70782,70790,70798,70802],{"__ignoreMap":32},[460,70427,70428,70430,70432,70434],{"class":462,"line":463},[460,70429,1845],{"class":466},[460,70431,1848],{"class":470},[460,70433,1851],{"class":929},[460,70435,473],{"class":466},[460,70437,70438,70440,70442,70444,70446,70448],{"class":462,"line":476},[460,70439,781],{"class":466},[460,70441,704],{"class":470},[460,70443,1862],{"class":929},[460,70445,894],{"class":466},[460,70447,1867],{"class":1353},[460,70449,473],{"class":466},[460,70451,70452],{"class":462,"line":482},[460,70453,522],{"emptyLinePlaceholder":521},[460,70455,70456,70458,70460],{"class":462,"line":488},[460,70457,781],{"class":466},[460,70459,1880],{"class":470},[460,70461,473],{"class":466},[460,70463,70464,70466,70468,70470,70472,70474],{"class":462,"line":494},[460,70465,467],{"class":466},[460,70467,1889],{"class":470},[460,70469,1892],{"class":929},[460,70471,894],{"class":466},[460,70473,1897],{"class":1353},[460,70475,473],{"class":466},[460,70477,70478,70480,70482,70484,70486,70488,70490,70492,70494],{"class":462,"line":500},[460,70479,467],{"class":466},[460,70481,1889],{"class":470},[460,70483,1908],{"class":929},[460,70485,894],{"class":466},[460,70487,1913],{"class":1353},[460,70489,1916],{"class":929},[460,70491,894],{"class":466},[460,70493,1921],{"class":1353},[460,70495,473],{"class":466},[460,70497,70498,70500,70502,70504,70506],{"class":462,"line":506},[460,70499,467],{"class":466},[460,70501,1930],{"class":470},[460,70503,1933],{"class":466},[460,70505,1930],{"class":470},[460,70507,473],{"class":466},[460,70509,70510,70512,70514],{"class":462,"line":512},[460,70511,1776],{"class":466},[460,70513,1880],{"class":470},[460,70515,473],{"class":466},[460,70517,70518],{"class":462,"line":518},[460,70519,522],{"emptyLinePlaceholder":521},[460,70521,70522,70524,70526],{"class":462,"line":525},[460,70523,781],{"class":466},[460,70525,1721],{"class":470},[460,70527,473],{"class":466},[460,70529,70530,70532,70535,70537,70539,70541,70543,70545,70547,70550,70552,70555,70558,70560,70563],{"class":462,"line":531},[460,70531,467],{"class":466},[460,70533,70534],{"class":470},"textarea",[460,70536,1908],{"class":929},[460,70538,894],{"class":466},[460,70540,6606],{"class":1353},[460,70542,10504],{"class":929},[460,70544,894],{"class":466},[460,70546,6606],{"class":1353},[460,70548,70549],{"class":929}," cols",[460,70551,894],{"class":466},[460,70553,70554],{"class":1353},"\"30\"",[460,70556,70557],{"class":929}," rows",[460,70559,894],{"class":466},[460,70561,70562],{"class":1353},"\"10\"",[460,70564,473],{"class":466},[460,70566,70567],{"class":462,"line":537},[460,70568,70569],{"class":466},"        用户注册协议\n",[460,70571,70572],{"class":462,"line":543},[460,70573,70574],{"class":466},"        欢迎注册成为京东用户！在您注册过程中，您需要完成我们的注册流程并通过点击同意的形式在线签署以下协议，请您务必仔细阅读、充分理解协议中的条款内容后再点击同意（尤其是以粗体或下划线标识的条款，因为这些条款可能会明确您应履行的义务或对您的权利有所限制）。\n",[460,70576,70577],{"class":462,"line":549},[460,70578,70579],{"class":466},"        【请您注意】如果您不同意以下协议全部或任何条款约定，请您停止注册。您停止注册后将仅可以浏览我们的商品信息但无法享受我们的产品或服务。如您按照注册流程提示填写信息，阅读并点击同意上述协议且完成全部注册流程后，即表示您已充分阅读、理解并接受协议的全部内容，并表明您同意我们可以依据协议内容来处理您的个人信息，并同意我们将您的订单信息共享给为完成此订单所必须的第三方合作方（详情查看\n",[460,70581,70582,70584,70586],{"class":462,"line":555},[460,70583,16244],{"class":466},[460,70585,70534],{"class":470},[460,70587,473],{"class":466},[460,70589,70590,70592,70594],{"class":462,"line":560},[460,70591,467],{"class":466},[460,70593,69963],{"class":470},[460,70595,473],{"class":466},[460,70597,70598,70600,70602,70604,70606,70609,70611,70614,70616],{"class":462,"line":566},[460,70599,467],{"class":466},[460,70601,10501],{"class":470},[460,70603,2740],{"class":929},[460,70605,894],{"class":466},[460,70607,70608],{"class":1353},"\"btn\"",[460,70610,70136],{"class":929},[460,70612,70613],{"class":466},">我已经阅读用户协议(5)\u003C\u002F",[460,70615,10501],{"class":470},[460,70617,473],{"class":466},[460,70619,70620,70622,70624],{"class":462,"line":572},[460,70621,467],{"class":466},[460,70623,225],{"class":470},[460,70625,473],{"class":466},[460,70627,70628],{"class":462,"line":578},[460,70629,70630],{"class":942},"    \u002F\u002F 1. 获取元素\n",[460,70632,70633,70635,70638,70640,70642,70644,70646,70649],{"class":462,"line":812},[460,70634,1340],{"class":887},[460,70636,70637],{"class":900}," btn",[460,70639,2943],{"class":887},[460,70641,10599],{"class":466},[460,70643,3541],{"class":929},[460,70645,2174],{"class":466},[460,70647,70648],{"class":1353},"'.btn'",[460,70650,3754],{"class":466},[460,70652,70653],{"class":462,"line":818},[460,70654,70655],{"class":942},"    \u002F\u002F console.log(btn.innerHTML)  butto按钮特殊用innerHTML\n",[460,70657,70658],{"class":462,"line":824},[460,70659,70660],{"class":942},"    \u002F\u002F 2. 倒计时\n",[460,70662,70663,70665,70667,70669],{"class":462,"line":2074},[460,70664,13988],{"class":887},[460,70666,13991],{"class":466},[460,70668,894],{"class":887},[460,70670,70671],{"class":900}," 5\n",[460,70673,70674],{"class":462,"line":2088},[460,70675,70676],{"class":942},"    \u002F\u002F 2.1 开启定时器\n",[460,70678,70679,70681,70684,70686,70689,70691,70693],{"class":462,"line":2103},[460,70680,13988],{"class":887},[460,70682,70683],{"class":466}," n ",[460,70685,894],{"class":887},[460,70687,70688],{"class":929}," setInterval",[460,70690,2174],{"class":466},[460,70692,3976],{"class":887},[460,70694,9376],{"class":466},[460,70696,70697,70700],{"class":462,"line":2122},[460,70698,70699],{"class":466},"      i",[460,70701,70702],{"class":887},"--\n",[460,70704,70705,70708,70710,70713,70715],{"class":462,"line":2144},[460,70706,70707],{"class":466},"      btn.innerHTML ",[460,70709,894],{"class":887},[460,70711,70712],{"class":1353}," `我已经阅读用户协议(${",[460,70714,17174],{"class":466},[460,70716,70717],{"class":1353},"})`\n",[460,70719,70720,70722,70725,70727,70729],{"class":462,"line":2158},[460,70721,3654],{"class":887},[460,70723,70724],{"class":466}," (i ",[460,70726,3660],{"class":887},[460,70728,2224],{"class":900},[460,70730,2180],{"class":466},[460,70732,70733,70736,70739],{"class":462,"line":2163},[460,70734,70735],{"class":929},"        clearInterval",[460,70737,70738],{"class":466},"(n)  ",[460,70740,70741],{"class":942},"\u002F\u002F 关闭定时器\n",[460,70743,70744],{"class":462,"line":2168},[460,70745,70746],{"class":942},"        \u002F\u002F 定时器停了，我就可以开按钮\n",[460,70748,70749,70752,70754],{"class":462,"line":2183},[460,70750,70751],{"class":466},"        btn.disabled ",[460,70753,894],{"class":887},[460,70755,5248],{"class":900},[460,70757,70758,70761,70763],{"class":462,"line":2194},[460,70759,70760],{"class":466},"        btn.innerHTML ",[460,70762,894],{"class":887},[460,70764,70765],{"class":1353}," '同意'\n",[460,70767,70768],{"class":462,"line":2199},[460,70769,552],{"class":466},[460,70771,70772,70774,70776],{"class":462,"line":2204},[460,70773,16522],{"class":466},[460,70775,11412],{"class":900},[460,70777,3754],{"class":466},[460,70779,70780],{"class":462,"line":2212},[460,70781,522],{"emptyLinePlaceholder":521},[460,70783,70784,70786,70788],{"class":462,"line":2257},[460,70785,581],{"class":466},[460,70787,225],{"class":470},[460,70789,473],{"class":466},[460,70791,70792,70794,70796],{"class":462,"line":2285},[460,70793,1776],{"class":466},[460,70795,1721],{"class":470},[460,70797,473],{"class":466},[460,70799,70800],{"class":462,"line":2298},[460,70801,522],{"emptyLinePlaceholder":521},[460,70803,70804,70806,70808],{"class":462,"line":2303},[460,70805,1776],{"class":466},[460,70807,704],{"class":470},[460,70809,473],{"class":466},[14,70811,70812],{},"不要一直想着用死循环,避免死循环",[14,70814,70815,70818],{},[457,70816,70817],{},"定时器本身就是循环",",就直接在匿名函数中写就欧克了,不要再去写循环了,尤其死循环!!!",[115,70820,70822],{"id":70821},"_3162-轮播图定时版","3.1.6.2 轮播图定时版",[103,70824,70825],{},[43,70826,70827],{},"法1",[451,70829,70831],{"className":702,"code":70830,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      padding: 0;\n      margin: 0;\n    }\n\n    li {\n      list-style: none;\n    }\n\n    .box {\n      position: relative;\n      width: 976px;\n      height: 600px;\n      margin: 100px auto;\n    }\n\n    .slider-footer {\n      position: absolute;\n      left: 0;\n      bottom: 0;\n      width: 100%;\n      height: 15%;\n      background-color: skyblue;\n    }\n\n    .slider-footer p {\n      position: absolute;\n      font-size: 28px;\n      left: 20px;\n      top: 5px;\n    }\n\n    ul {\n      position: absolute;\n      top: 55px;\n      left: 20px;\n      display: flex;\n      justify-content: space-between;\n      position: absolute;\n      width: 250px;\n      height: 20px;\n    }\n\n    ul li {\n      width: 20px;\n      height: 20px;\n      background-color: rgba(0, 0, 0, .4);\n      border-radius: 10px;\n    }\n\n    .activate {\n      background-color: #f7f7f7;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"box\">\n    \u003Cdiv class=\"slider-wrapper\">\n      \u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg\" alt=\"\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"slider-footer\">\n      \u003Cp>对人类来说会不会太超前了?\u003C\u002Fp>\n      \u003Cul>\n        \u003Cli class=\"activate\">\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n      \u003C\u002Ful>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    const arrImage = [\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgba(100,67,68)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgba(43,35,26)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider03.jpg', title: '真正的jo厨出现了!', color: 'rgba(36,31,33)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider04.jpg', title: '李玉刚:让世界通过b站看到东方大国文化', color: 'rgba(139,98,66)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider05.jpg', title: '快来分享你的寒假日常吧', color: 'rgba(67,90,92)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider06.jpg', title: '哔哩哔哩小年YEAR', color: 'rgba(166,131,143)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider07.jpg', title: '一站式解决你的电脑配置问题', color: 'rgba(53,29,25)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider08.jpg', title: '谁不想和小猫咪贴贴呢?', color: 'rgba(99,72,114)' }\n    ]\n    const img = document.querySelector('.slider-wrapper img')\n    const p = document.querySelector('.slider-footer p')\n    const color = document.querySelector('.slider-footer')\n    const lis = document.querySelectorAll('.slider-footer ul li')\n    let i = 1\n    let timer = setInterval(function () {\n      img.src = arrImage[i].url\n      p.innerHTML = arrImage[i].title\n      color.style.backgroundColor = arrImage[i].color\n      \u002F\u002F let li = document.querySelector(`.slider-footer ul li:nth-child(${i + 1})`)\n      \u002F\u002F li.classList.add('activate')\n      \u002F\u002F lis[i + 1].classList.add('activate')\n      \u002F\u002F lis[i].classList.remove('activate')\n      document.querySelector('.activate')?.classList.toggle('activate')\n      lis[i].classList.add('activate')\n\n      i = (i + 1) % arrImage.length\n\n    }, 1000)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,70832,70833,70843,70857,70861,70869,70883,70903,70915,70923,70929,70939,70949,70953,70957,70964,70975,70979,70983,70989,70999,71012,71024,71038,71042,71046,71053,71063,71073,71084,71096,71108,71119,71123,71127,71135,71145,71157,71169,71181,71185,71189,71196,71206,71218,71230,71240,71250,71260,71272,71284,71288,71292,71301,71313,71325,71353,71365,71369,71373,71380,71391,71395,71403,71411,71415,71423,71437,71452,71473,71481,71496,71509,71517,71536,71548,71560,71572,71584,71596,71608,71620,71628,71636,71644,71652,71663,71684,71703,71722,71741,71760,71779,71798,71817,71821,71840,71859,71879,71900,71911,71928,71938,71948,71958,71963,71968,71973,71978,72002,72015,72019,72042,72046,72054,72062,72070,72074],{"__ignoreMap":32},[460,70834,70835,70837,70839,70841],{"class":462,"line":463},[460,70836,1845],{"class":466},[460,70838,1848],{"class":470},[460,70840,1851],{"class":929},[460,70842,473],{"class":466},[460,70844,70845,70847,70849,70851,70853,70855],{"class":462,"line":476},[460,70846,781],{"class":466},[460,70848,704],{"class":470},[460,70850,1862],{"class":929},[460,70852,894],{"class":466},[460,70854,1867],{"class":1353},[460,70856,473],{"class":466},[460,70858,70859],{"class":462,"line":482},[460,70860,522],{"emptyLinePlaceholder":521},[460,70862,70863,70865,70867],{"class":462,"line":488},[460,70864,781],{"class":466},[460,70866,1880],{"class":470},[460,70868,473],{"class":466},[460,70870,70871,70873,70875,70877,70879,70881],{"class":462,"line":494},[460,70872,467],{"class":466},[460,70874,1889],{"class":470},[460,70876,1892],{"class":929},[460,70878,894],{"class":466},[460,70880,1897],{"class":1353},[460,70882,473],{"class":466},[460,70884,70885,70887,70889,70891,70893,70895,70897,70899,70901],{"class":462,"line":500},[460,70886,467],{"class":466},[460,70888,1889],{"class":470},[460,70890,1908],{"class":929},[460,70892,894],{"class":466},[460,70894,1913],{"class":1353},[460,70896,1916],{"class":929},[460,70898,894],{"class":466},[460,70900,1921],{"class":1353},[460,70902,473],{"class":466},[460,70904,70905,70907,70909,70911,70913],{"class":462,"line":506},[460,70906,467],{"class":466},[460,70908,1930],{"class":470},[460,70910,1933],{"class":466},[460,70912,1930],{"class":470},[460,70914,473],{"class":466},[460,70916,70917,70919,70921],{"class":462,"line":512},[460,70918,467],{"class":466},[460,70920,1944],{"class":470},[460,70922,473],{"class":466},[460,70924,70925,70927],{"class":462,"line":518},[460,70926,1951],{"class":470},[460,70928,1348],{"class":466},[460,70930,70931,70933,70935,70937],{"class":462,"line":525},[460,70932,1958],{"class":900},[460,70934,1961],{"class":466},[460,70936,936],{"class":900},[460,70938,1966],{"class":466},[460,70940,70941,70943,70945,70947],{"class":462,"line":531},[460,70942,1971],{"class":900},[460,70944,1961],{"class":466},[460,70946,936],{"class":900},[460,70948,1966],{"class":466},[460,70950,70951],{"class":462,"line":537},[460,70952,509],{"class":466},[460,70954,70955],{"class":462,"line":543},[460,70956,522],{"emptyLinePlaceholder":521},[460,70958,70959,70962],{"class":462,"line":549},[460,70960,70961],{"class":470},"    li",[460,70963,1348],{"class":466},[460,70965,70966,70969,70971,70973],{"class":462,"line":555},[460,70967,70968],{"class":900},"      list-style",[460,70970,1961],{"class":466},[460,70972,2629],{"class":900},[460,70974,1966],{"class":466},[460,70976,70977],{"class":462,"line":560},[460,70978,509],{"class":466},[460,70980,70981],{"class":462,"line":566},[460,70982,522],{"emptyLinePlaceholder":521},[460,70984,70985,70987],{"class":462,"line":572},[460,70986,13794],{"class":929},[460,70988,1348],{"class":466},[460,70990,70991,70993,70995,70997],{"class":462,"line":578},[460,70992,10004],{"class":900},[460,70994,1961],{"class":466},[460,70996,10138],{"class":900},[460,70998,1966],{"class":466},[460,71000,71001,71003,71005,71008,71010],{"class":462,"line":812},[460,71002,2009],{"class":900},[460,71004,1961],{"class":466},[460,71006,71007],{"class":900},"976",[460,71009,2017],{"class":887},[460,71011,1966],{"class":466},[460,71013,71014,71016,71018,71020,71022],{"class":462,"line":818},[460,71015,5499],{"class":900},[460,71017,1961],{"class":466},[460,71019,18108],{"class":900},[460,71021,2017],{"class":887},[460,71023,1966],{"class":466},[460,71025,71026,71028,71030,71032,71034,71036],{"class":462,"line":824},[460,71027,1971],{"class":900},[460,71029,1961],{"class":466},[460,71031,2325],{"class":900},[460,71033,2017],{"class":887},[460,71035,2030],{"class":900},[460,71037,1966],{"class":466},[460,71039,71040],{"class":462,"line":2074},[460,71041,509],{"class":466},[460,71043,71044],{"class":462,"line":2088},[460,71045,522],{"emptyLinePlaceholder":521},[460,71047,71048,71051],{"class":462,"line":2103},[460,71049,71050],{"class":929},"    .slider-footer",[460,71052,1348],{"class":466},[460,71054,71055,71057,71059,71061],{"class":462,"line":2122},[460,71056,10004],{"class":900},[460,71058,1961],{"class":466},[460,71060,10202],{"class":900},[460,71062,1966],{"class":466},[460,71064,71065,71067,71069,71071],{"class":462,"line":2144},[460,71066,10028],{"class":900},[460,71068,1961],{"class":466},[460,71070,936],{"class":900},[460,71072,1966],{"class":466},[460,71074,71075,71078,71080,71082],{"class":462,"line":2158},[460,71076,71077],{"class":900},"      bottom",[460,71079,1961],{"class":466},[460,71081,936],{"class":900},[460,71083,1966],{"class":466},[460,71085,71086,71088,71090,71092,71094],{"class":462,"line":2163},[460,71087,2009],{"class":900},[460,71089,1961],{"class":466},[460,71091,2325],{"class":900},[460,71093,2328],{"class":887},[460,71095,1966],{"class":466},[460,71097,71098,71100,71102,71104,71106],{"class":462,"line":2168},[460,71099,5499],{"class":900},[460,71101,1961],{"class":466},[460,71103,7157],{"class":900},[460,71105,2328],{"class":887},[460,71107,1966],{"class":466},[460,71109,71110,71112,71114,71117],{"class":462,"line":2183},[460,71111,2673],{"class":900},[460,71113,1961],{"class":466},[460,71115,71116],{"class":900},"skyblue",[460,71118,1966],{"class":466},[460,71120,71121],{"class":462,"line":2194},[460,71122,509],{"class":466},[460,71124,71125],{"class":462,"line":2199},[460,71126,522],{"emptyLinePlaceholder":521},[460,71128,71129,71131,71133],{"class":462,"line":2204},[460,71130,71050],{"class":929},[460,71132,12687],{"class":470},[460,71134,1348],{"class":466},[460,71136,71137,71139,71141,71143],{"class":462,"line":2212},[460,71138,10004],{"class":900},[460,71140,1961],{"class":466},[460,71142,10202],{"class":900},[460,71144,1966],{"class":466},[460,71146,71147,71149,71151,71153,71155],{"class":462,"line":2257},[460,71148,2356],{"class":900},[460,71150,1961],{"class":466},[460,71152,17612],{"class":900},[460,71154,2017],{"class":887},[460,71156,1966],{"class":466},[460,71158,71159,71161,71163,71165,71167],{"class":462,"line":2285},[460,71160,10028],{"class":900},[460,71162,1961],{"class":466},[460,71164,2110],{"class":900},[460,71166,2017],{"class":887},[460,71168,1966],{"class":466},[460,71170,71171,71173,71175,71177,71179],{"class":462,"line":2298},[460,71172,10041],{"class":900},[460,71174,1961],{"class":466},[460,71176,7290],{"class":900},[460,71178,2017],{"class":887},[460,71180,1966],{"class":466},[460,71182,71183],{"class":462,"line":2303},[460,71184,509],{"class":466},[460,71186,71187],{"class":462,"line":2308},[460,71188,522],{"emptyLinePlaceholder":521},[460,71190,71191,71194],{"class":462,"line":2318},[460,71192,71193],{"class":470},"    ul",[460,71195,1348],{"class":466},[460,71197,71198,71200,71202,71204],{"class":462,"line":2333},[460,71199,10004],{"class":900},[460,71201,1961],{"class":466},[460,71203,10202],{"class":900},[460,71205,1966],{"class":466},[460,71207,71208,71210,71212,71214,71216],{"class":462,"line":2338},[460,71209,10041],{"class":900},[460,71211,1961],{"class":466},[460,71213,17496],{"class":900},[460,71215,2017],{"class":887},[460,71217,1966],{"class":466},[460,71219,71220,71222,71224,71226,71228],{"class":462,"line":2343},[460,71221,10028],{"class":900},[460,71223,1961],{"class":466},[460,71225,2110],{"class":900},[460,71227,2017],{"class":887},[460,71229,1966],{"class":466},[460,71231,71232,71234,71236,71238],{"class":462,"line":2353},[460,71233,2037],{"class":900},[460,71235,1961],{"class":466},[460,71237,2042],{"class":900},[460,71239,1966],{"class":466},[460,71241,71242,71244,71246,71248],{"class":462,"line":2368},[460,71243,7653],{"class":900},[460,71245,1961],{"class":466},[460,71247,67939],{"class":900},[460,71249,1966],{"class":466},[460,71251,71252,71254,71256,71258],{"class":462,"line":2381},[460,71253,10004],{"class":900},[460,71255,1961],{"class":466},[460,71257,10202],{"class":900},[460,71259,1966],{"class":466},[460,71261,71262,71264,71266,71268,71270],{"class":462,"line":2394},[460,71263,2009],{"class":900},[460,71265,1961],{"class":466},[460,71267,20507],{"class":900},[460,71269,2017],{"class":887},[460,71271,1966],{"class":466},[460,71273,71274,71276,71278,71280,71282],{"class":462,"line":2399},[460,71275,5499],{"class":900},[460,71277,1961],{"class":466},[460,71279,2110],{"class":900},[460,71281,2017],{"class":887},[460,71283,1966],{"class":466},[460,71285,71286],{"class":462,"line":2404},[460,71287,509],{"class":466},[460,71289,71290],{"class":462,"line":2414},[460,71291,522],{"emptyLinePlaceholder":521},[460,71293,71294,71296,71299],{"class":462,"line":2428},[460,71295,71193],{"class":470},[460,71297,71298],{"class":470}," li",[460,71300,1348],{"class":466},[460,71302,71303,71305,71307,71309,71311],{"class":462,"line":2440},[460,71304,2009],{"class":900},[460,71306,1961],{"class":466},[460,71308,2110],{"class":900},[460,71310,2017],{"class":887},[460,71312,1966],{"class":466},[460,71314,71315,71317,71319,71321,71323],{"class":462,"line":2445},[460,71316,5499],{"class":900},[460,71318,1961],{"class":466},[460,71320,2110],{"class":900},[460,71322,2017],{"class":887},[460,71324,1966],{"class":466},[460,71326,71327,71329,71331,71334,71336,71338,71340,71342,71344,71346,71348,71351],{"class":462,"line":2450},[460,71328,2673],{"class":900},[460,71330,1961],{"class":466},[460,71332,71333],{"class":900},"rgba",[460,71335,2174],{"class":466},[460,71337,936],{"class":900},[460,71339,904],{"class":466},[460,71341,936],{"class":900},[460,71343,904],{"class":466},[460,71345,936],{"class":900},[460,71347,904],{"class":466},[460,71349,71350],{"class":900},".4",[460,71352,2254],{"class":466},[460,71354,71355,71357,71359,71361,71363],{"class":462,"line":2460},[460,71356,9991],{"class":900},[460,71358,1961],{"class":466},[460,71360,2096],{"class":900},[460,71362,2017],{"class":887},[460,71364,1966],{"class":466},[460,71366,71367],{"class":462,"line":2473},[460,71368,509],{"class":466},[460,71370,71371],{"class":462,"line":2487},[460,71372,522],{"emptyLinePlaceholder":521},[460,71374,71375,71378],{"class":462,"line":2492},[460,71376,71377],{"class":929},"    .activate",[460,71379,1348],{"class":466},[460,71381,71382,71384,71386,71389],{"class":462,"line":2497},[460,71383,2673],{"class":900},[460,71385,1961],{"class":466},[460,71387,71388],{"class":900},"#f7f7f7",[460,71390,1966],{"class":466},[460,71392,71393],{"class":462,"line":2505},[460,71394,509],{"class":466},[460,71396,71397,71399,71401],{"class":462,"line":2516},[460,71398,581],{"class":466},[460,71400,1944],{"class":470},[460,71402,473],{"class":466},[460,71404,71405,71407,71409],{"class":462,"line":2529},[460,71406,1776],{"class":466},[460,71408,1880],{"class":470},[460,71410,473],{"class":466},[460,71412,71413],{"class":462,"line":2542},[460,71414,522],{"emptyLinePlaceholder":521},[460,71416,71417,71419,71421],{"class":462,"line":2559},[460,71418,781],{"class":466},[460,71420,1721],{"class":470},[460,71422,473],{"class":466},[460,71424,71425,71427,71429,71431,71433,71435],{"class":462,"line":2564},[460,71426,467],{"class":466},[460,71428,2737],{"class":470},[460,71430,2740],{"class":929},[460,71432,894],{"class":466},[460,71434,13932],{"class":1353},[460,71436,473],{"class":466},[460,71438,71439,71441,71443,71445,71447,71450],{"class":462,"line":2569},[460,71440,2753],{"class":466},[460,71442,2737],{"class":470},[460,71444,2740],{"class":929},[460,71446,894],{"class":466},[460,71448,71449],{"class":1353},"\"slider-wrapper\"",[460,71451,473],{"class":466},[460,71453,71454,71456,71458,71460,71462,71465,71467,71469,71471],{"class":462,"line":2579},[460,71455,16196],{"class":466},[460,71457,30],{"class":470},[460,71459,12081],{"class":929},[460,71461,894],{"class":466},[460,71463,71464],{"class":1353},"\"....\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg\"",[460,71466,16224],{"class":929},[460,71468,894],{"class":466},[460,71470,6606],{"class":1353},[460,71472,473],{"class":466},[460,71474,71475,71477,71479],{"class":462,"line":2597},[460,71476,16244],{"class":466},[460,71478,2737],{"class":470},[460,71480,473],{"class":466},[460,71482,71483,71485,71487,71489,71491,71494],{"class":462,"line":2610},[460,71484,2753],{"class":466},[460,71486,2737],{"class":470},[460,71488,2740],{"class":929},[460,71490,894],{"class":466},[460,71492,71493],{"class":1353},"\"slider-footer\"",[460,71495,473],{"class":466},[460,71497,71498,71500,71502,71505,71507],{"class":462,"line":2621},[460,71499,16196],{"class":466},[460,71501,14],{"class":470},[460,71503,71504],{"class":466},">对人类来说会不会太超前了?\u003C\u002F",[460,71506,14],{"class":470},[460,71508,473],{"class":466},[460,71510,71511,71513,71515],{"class":462,"line":2634},[460,71512,16196],{"class":466},[460,71514,40],{"class":470},[460,71516,473],{"class":466},[460,71518,71519,71521,71523,71525,71527,71530,71532,71534],{"class":462,"line":2648},[460,71520,16212],{"class":466},[460,71522,43],{"class":470},[460,71524,2740],{"class":929},[460,71526,894],{"class":466},[460,71528,71529],{"class":1353},"\"activate\"",[460,71531,5599],{"class":466},[460,71533,43],{"class":470},[460,71535,473],{"class":466},[460,71537,71538,71540,71542,71544,71546],{"class":462,"line":2653},[460,71539,16212],{"class":466},[460,71541,43],{"class":470},[460,71543,5599],{"class":466},[460,71545,43],{"class":470},[460,71547,473],{"class":466},[460,71549,71550,71552,71554,71556,71558],{"class":462,"line":2658},[460,71551,16212],{"class":466},[460,71553,43],{"class":470},[460,71555,5599],{"class":466},[460,71557,43],{"class":470},[460,71559,473],{"class":466},[460,71561,71562,71564,71566,71568,71570],{"class":462,"line":2670},[460,71563,16212],{"class":466},[460,71565,43],{"class":470},[460,71567,5599],{"class":466},[460,71569,43],{"class":470},[460,71571,473],{"class":466},[460,71573,71574,71576,71578,71580,71582],{"class":462,"line":2683},[460,71575,16212],{"class":466},[460,71577,43],{"class":470},[460,71579,5599],{"class":466},[460,71581,43],{"class":470},[460,71583,473],{"class":466},[460,71585,71586,71588,71590,71592,71594],{"class":462,"line":2695},[460,71587,16212],{"class":466},[460,71589,43],{"class":470},[460,71591,5599],{"class":466},[460,71593,43],{"class":470},[460,71595,473],{"class":466},[460,71597,71598,71600,71602,71604,71606],{"class":462,"line":2700},[460,71599,16212],{"class":466},[460,71601,43],{"class":470},[460,71603,5599],{"class":466},[460,71605,43],{"class":470},[460,71607,473],{"class":466},[460,71609,71610,71612,71614,71616,71618],{"class":462,"line":2709},[460,71611,16212],{"class":466},[460,71613,43],{"class":470},[460,71615,5599],{"class":466},[460,71617,43],{"class":470},[460,71619,473],{"class":466},[460,71621,71622,71624,71626],{"class":462,"line":2718},[460,71623,16235],{"class":466},[460,71625,40],{"class":470},[460,71627,473],{"class":466},[460,71629,71630,71632,71634],{"class":462,"line":2723},[460,71631,16244],{"class":466},[460,71633,2737],{"class":470},[460,71635,473],{"class":466},[460,71637,71638,71640,71642],{"class":462,"line":2732},[460,71639,581],{"class":466},[460,71641,2737],{"class":470},[460,71643,473],{"class":466},[460,71645,71646,71648,71650],{"class":462,"line":2750},[460,71647,467],{"class":466},[460,71649,225],{"class":470},[460,71651,473],{"class":466},[460,71653,71654,71656,71659,71661],{"class":462,"line":2782},[460,71655,1340],{"class":887},[460,71657,71658],{"class":900}," arrImage",[460,71660,2943],{"class":887},[460,71662,1385],{"class":466},[460,71664,71665,71668,71671,71674,71677,71679,71682],{"class":462,"line":2809},[460,71666,71667],{"class":466},"      { url: ",[460,71669,71670],{"class":1353},"'....\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg'",[460,71672,71673],{"class":466},", title: ",[460,71675,71676],{"class":1353},"'对人类来说会不会太超前了?'",[460,71678,5629],{"class":466},[460,71680,71681],{"class":1353},"'rgba(100,67,68)'",[460,71683,8122],{"class":466},[460,71685,71686,71688,71691,71693,71696,71698,71701],{"class":462,"line":2836},[460,71687,71667],{"class":466},[460,71689,71690],{"class":1353},"'....\u002F..\u002Fpublic\u002Fimages\u002Fslider02.jpg'",[460,71692,71673],{"class":466},[460,71694,71695],{"class":1353},"'开启剑与雪的黑暗传说!'",[460,71697,5629],{"class":466},[460,71699,71700],{"class":1353},"'rgba(43,35,26)'",[460,71702,8122],{"class":466},[460,71704,71705,71707,71710,71712,71715,71717,71720],{"class":462,"line":2856},[460,71706,71667],{"class":466},[460,71708,71709],{"class":1353},"'....\u002F..\u002Fpublic\u002Fimages\u002Fslider03.jpg'",[460,71711,71673],{"class":466},[460,71713,71714],{"class":1353},"'真正的jo厨出现了!'",[460,71716,5629],{"class":466},[460,71718,71719],{"class":1353},"'rgba(36,31,33)'",[460,71721,8122],{"class":466},[460,71723,71724,71726,71729,71731,71734,71736,71739],{"class":462,"line":2865},[460,71725,71667],{"class":466},[460,71727,71728],{"class":1353},"'....\u002F..\u002Fpublic\u002Fimages\u002Fslider04.jpg'",[460,71730,71673],{"class":466},[460,71732,71733],{"class":1353},"'李玉刚:让世界通过b站看到东方大国文化'",[460,71735,5629],{"class":466},[460,71737,71738],{"class":1353},"'rgba(139,98,66)'",[460,71740,8122],{"class":466},[460,71742,71743,71745,71748,71750,71753,71755,71758],{"class":462,"line":2881},[460,71744,71667],{"class":466},[460,71746,71747],{"class":1353},"'....\u002F..\u002Fpublic\u002Fimages\u002Fslider05.jpg'",[460,71749,71673],{"class":466},[460,71751,71752],{"class":1353},"'快来分享你的寒假日常吧'",[460,71754,5629],{"class":466},[460,71756,71757],{"class":1353},"'rgba(67,90,92)'",[460,71759,8122],{"class":466},[460,71761,71762,71764,71767,71769,71772,71774,71777],{"class":462,"line":2887},[460,71763,71667],{"class":466},[460,71765,71766],{"class":1353},"'....\u002F..\u002Fpublic\u002Fimages\u002Fslider06.jpg'",[460,71768,71673],{"class":466},[460,71770,71771],{"class":1353},"'哔哩哔哩小年YEAR'",[460,71773,5629],{"class":466},[460,71775,71776],{"class":1353},"'rgba(166,131,143)'",[460,71778,8122],{"class":466},[460,71780,71781,71783,71786,71788,71791,71793,71796],{"class":462,"line":2893},[460,71782,71667],{"class":466},[460,71784,71785],{"class":1353},"'....\u002F..\u002Fpublic\u002Fimages\u002Fslider07.jpg'",[460,71787,71673],{"class":466},[460,71789,71790],{"class":1353},"'一站式解决你的电脑配置问题'",[460,71792,5629],{"class":466},[460,71794,71795],{"class":1353},"'rgba(53,29,25)'",[460,71797,8122],{"class":466},[460,71799,71800,71802,71805,71807,71810,71812,71815],{"class":462,"line":2899},[460,71801,71667],{"class":466},[460,71803,71804],{"class":1353},"'....\u002F..\u002Fpublic\u002Fimages\u002Fslider08.jpg'",[460,71806,71673],{"class":466},[460,71808,71809],{"class":1353},"'谁不想和小猫咪贴贴呢?'",[460,71811,5629],{"class":466},[460,71813,71814],{"class":1353},"'rgba(99,72,114)'",[460,71816,5635],{"class":466},[460,71818,71819],{"class":462,"line":2905},[460,71820,3355],{"class":466},[460,71822,71823,71825,71827,71829,71831,71833,71835,71838],{"class":462,"line":2911},[460,71824,1340],{"class":887},[460,71826,2313],{"class":900},[460,71828,2943],{"class":887},[460,71830,10599],{"class":466},[460,71832,3541],{"class":929},[460,71834,2174],{"class":466},[460,71836,71837],{"class":1353},"'.slider-wrapper img'",[460,71839,3754],{"class":466},[460,71841,71842,71844,71846,71848,71850,71852,71854,71857],{"class":462,"line":2920},[460,71843,1340],{"class":887},[460,71845,12687],{"class":900},[460,71847,2943],{"class":887},[460,71849,10599],{"class":466},[460,71851,3541],{"class":929},[460,71853,2174],{"class":466},[460,71855,71856],{"class":1353},"'.slider-footer p'",[460,71858,3754],{"class":466},[460,71860,71861,71863,71866,71868,71870,71872,71874,71877],{"class":462,"line":2929},[460,71862,1340],{"class":887},[460,71864,71865],{"class":900}," color",[460,71867,2943],{"class":887},[460,71869,10599],{"class":466},[460,71871,3541],{"class":929},[460,71873,2174],{"class":466},[460,71875,71876],{"class":1353},"'.slider-footer'",[460,71878,3754],{"class":466},[460,71880,71881,71883,71886,71888,71890,71893,71895,71898],{"class":462,"line":2935},[460,71882,1340],{"class":887},[460,71884,71885],{"class":900}," lis",[460,71887,2943],{"class":887},[460,71889,10599],{"class":466},[460,71891,71892],{"class":929},"querySelectorAll",[460,71894,2174],{"class":466},[460,71896,71897],{"class":1353},"'.slider-footer ul li'",[460,71899,3754],{"class":466},[460,71901,71902,71904,71906,71908],{"class":462,"line":2948},[460,71903,13988],{"class":887},[460,71905,13991],{"class":466},[460,71907,894],{"class":887},[460,71909,71910],{"class":900}," 1\n",[460,71912,71913,71915,71918,71920,71922,71924,71926],{"class":462,"line":2954},[460,71914,13988],{"class":887},[460,71916,71917],{"class":466}," timer ",[460,71919,894],{"class":887},[460,71921,70688],{"class":929},[460,71923,2174],{"class":466},[460,71925,3976],{"class":887},[460,71927,9376],{"class":466},[460,71929,71930,71933,71935],{"class":462,"line":2965},[460,71931,71932],{"class":466},"      img.src ",[460,71934,894],{"class":887},[460,71936,71937],{"class":466}," arrImage[i].url\n",[460,71939,71940,71943,71945],{"class":462,"line":2976},[460,71941,71942],{"class":466},"      p.innerHTML ",[460,71944,894],{"class":887},[460,71946,71947],{"class":466}," arrImage[i].title\n",[460,71949,71950,71953,71955],{"class":462,"line":2987},[460,71951,71952],{"class":466},"      color.style.backgroundColor ",[460,71954,894],{"class":887},[460,71956,71957],{"class":466}," arrImage[i].color\n",[460,71959,71960],{"class":462,"line":2998},[460,71961,71962],{"class":942},"      \u002F\u002F let li = document.querySelector(`.slider-footer ul li:nth-child(${i + 1})`)\n",[460,71964,71965],{"class":462,"line":3003},[460,71966,71967],{"class":942},"      \u002F\u002F li.classList.add('activate')\n",[460,71969,71970],{"class":462,"line":3008},[460,71971,71972],{"class":942},"      \u002F\u002F lis[i + 1].classList.add('activate')\n",[460,71974,71975],{"class":462,"line":3018},[460,71976,71977],{"class":942},"      \u002F\u002F lis[i].classList.remove('activate')\n",[460,71979,71980,71982,71984,71986,71989,71992,71995,71997,72000],{"class":462,"line":3028},[460,71981,3538],{"class":466},[460,71983,3541],{"class":929},[460,71985,2174],{"class":466},[460,71987,71988],{"class":1353},"'.activate'",[460,71990,71991],{"class":466},")?.classList.",[460,71993,71994],{"class":929},"toggle",[460,71996,2174],{"class":466},[460,71998,71999],{"class":1353},"'activate'",[460,72001,3754],{"class":466},[460,72003,72004,72007,72009,72011,72013],{"class":462,"line":3038},[460,72005,72006],{"class":466},"      lis[i].classList.",[460,72008,21840],{"class":929},[460,72010,2174],{"class":466},[460,72012,71999],{"class":1353},[460,72014,3754],{"class":466},[460,72016,72017],{"class":462,"line":3048},[460,72018,522],{"emptyLinePlaceholder":521},[460,72020,72021,72024,72026,72028,72030,72032,72034,72036,72039],{"class":462,"line":3053},[460,72022,72023],{"class":466},"      i ",[460,72025,894],{"class":887},[460,72027,70724],{"class":466},[460,72029,8495],{"class":887},[460,72031,1400],{"class":900},[460,72033,8296],{"class":466},[460,72035,2328],{"class":887},[460,72037,72038],{"class":466}," arrImage.",[460,72040,72041],{"class":900},"length\n",[460,72043,72044],{"class":462,"line":3058},[460,72045,522],{"emptyLinePlaceholder":521},[460,72047,72048,72050,72052],{"class":462,"line":3068},[460,72049,16522],{"class":466},[460,72051,11412],{"class":900},[460,72053,3754],{"class":466},[460,72055,72056,72058,72060],{"class":462,"line":3078},[460,72057,581],{"class":466},[460,72059,225],{"class":470},[460,72061,473],{"class":466},[460,72063,72064,72066,72068],{"class":462,"line":3088},[460,72065,1776],{"class":466},[460,72067,1721],{"class":470},[460,72069,473],{"class":466},[460,72071,72072],{"class":462,"line":3098},[460,72073,522],{"emptyLinePlaceholder":521},[460,72075,72076,72078,72080],{"class":462,"line":3103},[460,72077,1776],{"class":466},[460,72079,704],{"class":470},[460,72081,473],{"class":466},[14,72083,72084],{},[30,72085],{"alt":32,"src":72086},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-104.png",[14,72088,72089],{},"?.就是短路保护,确保输出正常进行",[14,72091,72092],{},"不要忘记取余%,有时候可以用",[14,72094,72095],{},"相同部分可以封装成函数,然后调用这部分就可以!!!",[103,72097,72098],{"start":476},[43,72099,72100],{},"法2",[451,72102,72104],{"className":702,"code":72103,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      padding: 0;\n      margin: 0;\n    }\n\n    li {\n      list-style: none;\n    }\n\n    .box {\n      position: relative;\n      width: 976px;\n      height: 600px;\n      margin: 100px auto;\n    }\n\n    .slider-footer {\n      position: absolute;\n      left: 0;\n      bottom: 0;\n      width: 100%;\n      height: 15%;\n      background-color: skyblue;\n    }\n\n    .slider-footer p {\n      position: absolute;\n      font-size: 28px;\n      left: 20px;\n      top: 5px;\n    }\n\n    ul {\n      position: absolute;\n      top: 55px;\n      left: 20px;\n      display: flex;\n      justify-content: space-between;\n      position: absolute;\n      width: 250px;\n      height: 20px;\n    }\n\n    ul li {\n      width: 20px;\n      height: 20px;\n      background-color: rgba(0, 0, 0, .4);\n      border-radius: 10px;\n    }\n\n    .activate {\n      background-color: #f7f7f7;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"box\">\n    \u003Cdiv class=\"slider-wrapper\">\n      \u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg\" alt=\"\">\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"slider-footer\">\n      \u003Cp>对人类来说会不会太超前了?\u003C\u002Fp>\n      \u003Cul>\n        \u003Cli class=\"activate\">\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n      \u003C\u002Ful>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    const sliderData = [\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgba(100,67,68)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgba(43,35,26)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider03.jpg', title: '真正的jo厨出现了!', color: 'rgba(36,31,33)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider04.jpg', title: '李玉刚:让世界通过b站看到东方大国文化', color: 'rgba(139,98,66)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider05.jpg', title: '快来分享你的寒假日常吧', color: 'rgba(67,90,92)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider06.jpg', title: '哔哩哔哩小年YEAR', color: 'rgba(166,131,143)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider07.jpg', title: '一站式解决你的电脑配置问题', color: 'rgba(53,29,25)' },\n      { url: '....\u002F..\u002Fpublic\u002Fimages\u002Fslider08.jpg', title: '谁不想和小猫咪贴贴呢?', color: 'rgba(99,72,114)' }\n    ]\n    \u002F\u002F 1.获取元素\n    const img = document.querySelector('.slider-wrapper img')\n    const p = document.querySelector('.slider-footer p')\n    let i = 0\n    \u002F\u002F 2.开启定时器\n    \u002F\u002F console.log(sliderData[i]) 拿到对应对象了\n    setInterval(function () {\n      i++\n      if (i >= sliderData.length) {\n        i = 0\n      }\n      \u002F\u002F 更换图片路径\n      img.src = sliderData[i].url\n      \u002F\u002F 把文字写到p里面\n      p.innerHTML = sliderData[i].title\n      \u002F\u002F 小圆点\n      \u002F\u002F 先删除以前的active\n      \u002F\u002F 只让当前li添加active\n      document.querySelector('.slider-footer .activate').classList.remove('activate')\n      document.querySelector(`.slider-footer ul li:nth-child(${i + 1})`).classList.add('activate')\n\n    }, 1000)\n\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,72105,72106,72116,72130,72134,72142,72156,72176,72188,72196,72202,72212,72222,72226,72230,72236,72246,72250,72254,72260,72270,72282,72294,72308,72312,72316,72322,72332,72342,72352,72364,72376,72386,72390,72394,72402,72412,72424,72436,72448,72452,72456,72462,72472,72484,72496,72506,72516,72526,72538,72550,72554,72558,72566,72578,72590,72616,72628,72632,72636,72642,72652,72656,72664,72672,72676,72684,72698,72712,72732,72740,72754,72766,72774,72792,72804,72816,72828,72840,72852,72864,72876,72884,72892,72900,72908,72919,72935,72951,72967,72983,72999,73015,73031,73047,73051,73056,73074,73092,73102,73107,73112,73123,73129,73144,73153,73157,73162,73171,73176,73185,73190,73195,73200,73222,73252,73256,73264,73268,73276,73284,73288],{"__ignoreMap":32},[460,72107,72108,72110,72112,72114],{"class":462,"line":463},[460,72109,1845],{"class":466},[460,72111,1848],{"class":470},[460,72113,1851],{"class":929},[460,72115,473],{"class":466},[460,72117,72118,72120,72122,72124,72126,72128],{"class":462,"line":476},[460,72119,781],{"class":466},[460,72121,704],{"class":470},[460,72123,1862],{"class":929},[460,72125,894],{"class":466},[460,72127,1867],{"class":1353},[460,72129,473],{"class":466},[460,72131,72132],{"class":462,"line":482},[460,72133,522],{"emptyLinePlaceholder":521},[460,72135,72136,72138,72140],{"class":462,"line":488},[460,72137,781],{"class":466},[460,72139,1880],{"class":470},[460,72141,473],{"class":466},[460,72143,72144,72146,72148,72150,72152,72154],{"class":462,"line":494},[460,72145,467],{"class":466},[460,72147,1889],{"class":470},[460,72149,1892],{"class":929},[460,72151,894],{"class":466},[460,72153,1897],{"class":1353},[460,72155,473],{"class":466},[460,72157,72158,72160,72162,72164,72166,72168,72170,72172,72174],{"class":462,"line":500},[460,72159,467],{"class":466},[460,72161,1889],{"class":470},[460,72163,1908],{"class":929},[460,72165,894],{"class":466},[460,72167,1913],{"class":1353},[460,72169,1916],{"class":929},[460,72171,894],{"class":466},[460,72173,1921],{"class":1353},[460,72175,473],{"class":466},[460,72177,72178,72180,72182,72184,72186],{"class":462,"line":506},[460,72179,467],{"class":466},[460,72181,1930],{"class":470},[460,72183,1933],{"class":466},[460,72185,1930],{"class":470},[460,72187,473],{"class":466},[460,72189,72190,72192,72194],{"class":462,"line":512},[460,72191,467],{"class":466},[460,72193,1944],{"class":470},[460,72195,473],{"class":466},[460,72197,72198,72200],{"class":462,"line":518},[460,72199,1951],{"class":470},[460,72201,1348],{"class":466},[460,72203,72204,72206,72208,72210],{"class":462,"line":525},[460,72205,1958],{"class":900},[460,72207,1961],{"class":466},[460,72209,936],{"class":900},[460,72211,1966],{"class":466},[460,72213,72214,72216,72218,72220],{"class":462,"line":531},[460,72215,1971],{"class":900},[460,72217,1961],{"class":466},[460,72219,936],{"class":900},[460,72221,1966],{"class":466},[460,72223,72224],{"class":462,"line":537},[460,72225,509],{"class":466},[460,72227,72228],{"class":462,"line":543},[460,72229,522],{"emptyLinePlaceholder":521},[460,72231,72232,72234],{"class":462,"line":549},[460,72233,70961],{"class":470},[460,72235,1348],{"class":466},[460,72237,72238,72240,72242,72244],{"class":462,"line":555},[460,72239,70968],{"class":900},[460,72241,1961],{"class":466},[460,72243,2629],{"class":900},[460,72245,1966],{"class":466},[460,72247,72248],{"class":462,"line":560},[460,72249,509],{"class":466},[460,72251,72252],{"class":462,"line":566},[460,72253,522],{"emptyLinePlaceholder":521},[460,72255,72256,72258],{"class":462,"line":572},[460,72257,13794],{"class":929},[460,72259,1348],{"class":466},[460,72261,72262,72264,72266,72268],{"class":462,"line":578},[460,72263,10004],{"class":900},[460,72265,1961],{"class":466},[460,72267,10138],{"class":900},[460,72269,1966],{"class":466},[460,72271,72272,72274,72276,72278,72280],{"class":462,"line":812},[460,72273,2009],{"class":900},[460,72275,1961],{"class":466},[460,72277,71007],{"class":900},[460,72279,2017],{"class":887},[460,72281,1966],{"class":466},[460,72283,72284,72286,72288,72290,72292],{"class":462,"line":818},[460,72285,5499],{"class":900},[460,72287,1961],{"class":466},[460,72289,18108],{"class":900},[460,72291,2017],{"class":887},[460,72293,1966],{"class":466},[460,72295,72296,72298,72300,72302,72304,72306],{"class":462,"line":824},[460,72297,1971],{"class":900},[460,72299,1961],{"class":466},[460,72301,2325],{"class":900},[460,72303,2017],{"class":887},[460,72305,2030],{"class":900},[460,72307,1966],{"class":466},[460,72309,72310],{"class":462,"line":2074},[460,72311,509],{"class":466},[460,72313,72314],{"class":462,"line":2088},[460,72315,522],{"emptyLinePlaceholder":521},[460,72317,72318,72320],{"class":462,"line":2103},[460,72319,71050],{"class":929},[460,72321,1348],{"class":466},[460,72323,72324,72326,72328,72330],{"class":462,"line":2122},[460,72325,10004],{"class":900},[460,72327,1961],{"class":466},[460,72329,10202],{"class":900},[460,72331,1966],{"class":466},[460,72333,72334,72336,72338,72340],{"class":462,"line":2144},[460,72335,10028],{"class":900},[460,72337,1961],{"class":466},[460,72339,936],{"class":900},[460,72341,1966],{"class":466},[460,72343,72344,72346,72348,72350],{"class":462,"line":2158},[460,72345,71077],{"class":900},[460,72347,1961],{"class":466},[460,72349,936],{"class":900},[460,72351,1966],{"class":466},[460,72353,72354,72356,72358,72360,72362],{"class":462,"line":2163},[460,72355,2009],{"class":900},[460,72357,1961],{"class":466},[460,72359,2325],{"class":900},[460,72361,2328],{"class":887},[460,72363,1966],{"class":466},[460,72365,72366,72368,72370,72372,72374],{"class":462,"line":2168},[460,72367,5499],{"class":900},[460,72369,1961],{"class":466},[460,72371,7157],{"class":900},[460,72373,2328],{"class":887},[460,72375,1966],{"class":466},[460,72377,72378,72380,72382,72384],{"class":462,"line":2183},[460,72379,2673],{"class":900},[460,72381,1961],{"class":466},[460,72383,71116],{"class":900},[460,72385,1966],{"class":466},[460,72387,72388],{"class":462,"line":2194},[460,72389,509],{"class":466},[460,72391,72392],{"class":462,"line":2199},[460,72393,522],{"emptyLinePlaceholder":521},[460,72395,72396,72398,72400],{"class":462,"line":2204},[460,72397,71050],{"class":929},[460,72399,12687],{"class":470},[460,72401,1348],{"class":466},[460,72403,72404,72406,72408,72410],{"class":462,"line":2212},[460,72405,10004],{"class":900},[460,72407,1961],{"class":466},[460,72409,10202],{"class":900},[460,72411,1966],{"class":466},[460,72413,72414,72416,72418,72420,72422],{"class":462,"line":2257},[460,72415,2356],{"class":900},[460,72417,1961],{"class":466},[460,72419,17612],{"class":900},[460,72421,2017],{"class":887},[460,72423,1966],{"class":466},[460,72425,72426,72428,72430,72432,72434],{"class":462,"line":2285},[460,72427,10028],{"class":900},[460,72429,1961],{"class":466},[460,72431,2110],{"class":900},[460,72433,2017],{"class":887},[460,72435,1966],{"class":466},[460,72437,72438,72440,72442,72444,72446],{"class":462,"line":2298},[460,72439,10041],{"class":900},[460,72441,1961],{"class":466},[460,72443,7290],{"class":900},[460,72445,2017],{"class":887},[460,72447,1966],{"class":466},[460,72449,72450],{"class":462,"line":2303},[460,72451,509],{"class":466},[460,72453,72454],{"class":462,"line":2308},[460,72455,522],{"emptyLinePlaceholder":521},[460,72457,72458,72460],{"class":462,"line":2318},[460,72459,71193],{"class":470},[460,72461,1348],{"class":466},[460,72463,72464,72466,72468,72470],{"class":462,"line":2333},[460,72465,10004],{"class":900},[460,72467,1961],{"class":466},[460,72469,10202],{"class":900},[460,72471,1966],{"class":466},[460,72473,72474,72476,72478,72480,72482],{"class":462,"line":2338},[460,72475,10041],{"class":900},[460,72477,1961],{"class":466},[460,72479,17496],{"class":900},[460,72481,2017],{"class":887},[460,72483,1966],{"class":466},[460,72485,72486,72488,72490,72492,72494],{"class":462,"line":2343},[460,72487,10028],{"class":900},[460,72489,1961],{"class":466},[460,72491,2110],{"class":900},[460,72493,2017],{"class":887},[460,72495,1966],{"class":466},[460,72497,72498,72500,72502,72504],{"class":462,"line":2353},[460,72499,2037],{"class":900},[460,72501,1961],{"class":466},[460,72503,2042],{"class":900},[460,72505,1966],{"class":466},[460,72507,72508,72510,72512,72514],{"class":462,"line":2368},[460,72509,7653],{"class":900},[460,72511,1961],{"class":466},[460,72513,67939],{"class":900},[460,72515,1966],{"class":466},[460,72517,72518,72520,72522,72524],{"class":462,"line":2381},[460,72519,10004],{"class":900},[460,72521,1961],{"class":466},[460,72523,10202],{"class":900},[460,72525,1966],{"class":466},[460,72527,72528,72530,72532,72534,72536],{"class":462,"line":2394},[460,72529,2009],{"class":900},[460,72531,1961],{"class":466},[460,72533,20507],{"class":900},[460,72535,2017],{"class":887},[460,72537,1966],{"class":466},[460,72539,72540,72542,72544,72546,72548],{"class":462,"line":2399},[460,72541,5499],{"class":900},[460,72543,1961],{"class":466},[460,72545,2110],{"class":900},[460,72547,2017],{"class":887},[460,72549,1966],{"class":466},[460,72551,72552],{"class":462,"line":2404},[460,72553,509],{"class":466},[460,72555,72556],{"class":462,"line":2414},[460,72557,522],{"emptyLinePlaceholder":521},[460,72559,72560,72562,72564],{"class":462,"line":2428},[460,72561,71193],{"class":470},[460,72563,71298],{"class":470},[460,72565,1348],{"class":466},[460,72567,72568,72570,72572,72574,72576],{"class":462,"line":2440},[460,72569,2009],{"class":900},[460,72571,1961],{"class":466},[460,72573,2110],{"class":900},[460,72575,2017],{"class":887},[460,72577,1966],{"class":466},[460,72579,72580,72582,72584,72586,72588],{"class":462,"line":2445},[460,72581,5499],{"class":900},[460,72583,1961],{"class":466},[460,72585,2110],{"class":900},[460,72587,2017],{"class":887},[460,72589,1966],{"class":466},[460,72591,72592,72594,72596,72598,72600,72602,72604,72606,72608,72610,72612,72614],{"class":462,"line":2450},[460,72593,2673],{"class":900},[460,72595,1961],{"class":466},[460,72597,71333],{"class":900},[460,72599,2174],{"class":466},[460,72601,936],{"class":900},[460,72603,904],{"class":466},[460,72605,936],{"class":900},[460,72607,904],{"class":466},[460,72609,936],{"class":900},[460,72611,904],{"class":466},[460,72613,71350],{"class":900},[460,72615,2254],{"class":466},[460,72617,72618,72620,72622,72624,72626],{"class":462,"line":2460},[460,72619,9991],{"class":900},[460,72621,1961],{"class":466},[460,72623,2096],{"class":900},[460,72625,2017],{"class":887},[460,72627,1966],{"class":466},[460,72629,72630],{"class":462,"line":2473},[460,72631,509],{"class":466},[460,72633,72634],{"class":462,"line":2487},[460,72635,522],{"emptyLinePlaceholder":521},[460,72637,72638,72640],{"class":462,"line":2492},[460,72639,71377],{"class":929},[460,72641,1348],{"class":466},[460,72643,72644,72646,72648,72650],{"class":462,"line":2497},[460,72645,2673],{"class":900},[460,72647,1961],{"class":466},[460,72649,71388],{"class":900},[460,72651,1966],{"class":466},[460,72653,72654],{"class":462,"line":2505},[460,72655,509],{"class":466},[460,72657,72658,72660,72662],{"class":462,"line":2516},[460,72659,581],{"class":466},[460,72661,1944],{"class":470},[460,72663,473],{"class":466},[460,72665,72666,72668,72670],{"class":462,"line":2529},[460,72667,1776],{"class":466},[460,72669,1880],{"class":470},[460,72671,473],{"class":466},[460,72673,72674],{"class":462,"line":2542},[460,72675,522],{"emptyLinePlaceholder":521},[460,72677,72678,72680,72682],{"class":462,"line":2559},[460,72679,781],{"class":466},[460,72681,1721],{"class":470},[460,72683,473],{"class":466},[460,72685,72686,72688,72690,72692,72694,72696],{"class":462,"line":2564},[460,72687,467],{"class":466},[460,72689,2737],{"class":470},[460,72691,2740],{"class":929},[460,72693,894],{"class":466},[460,72695,13932],{"class":1353},[460,72697,473],{"class":466},[460,72699,72700,72702,72704,72706,72708,72710],{"class":462,"line":2569},[460,72701,2753],{"class":466},[460,72703,2737],{"class":470},[460,72705,2740],{"class":929},[460,72707,894],{"class":466},[460,72709,71449],{"class":1353},[460,72711,473],{"class":466},[460,72713,72714,72716,72718,72720,72722,72724,72726,72728,72730],{"class":462,"line":2579},[460,72715,16196],{"class":466},[460,72717,30],{"class":470},[460,72719,12081],{"class":929},[460,72721,894],{"class":466},[460,72723,71464],{"class":1353},[460,72725,16224],{"class":929},[460,72727,894],{"class":466},[460,72729,6606],{"class":1353},[460,72731,473],{"class":466},[460,72733,72734,72736,72738],{"class":462,"line":2597},[460,72735,16244],{"class":466},[460,72737,2737],{"class":470},[460,72739,473],{"class":466},[460,72741,72742,72744,72746,72748,72750,72752],{"class":462,"line":2610},[460,72743,2753],{"class":466},[460,72745,2737],{"class":470},[460,72747,2740],{"class":929},[460,72749,894],{"class":466},[460,72751,71493],{"class":1353},[460,72753,473],{"class":466},[460,72755,72756,72758,72760,72762,72764],{"class":462,"line":2621},[460,72757,16196],{"class":466},[460,72759,14],{"class":470},[460,72761,71504],{"class":466},[460,72763,14],{"class":470},[460,72765,473],{"class":466},[460,72767,72768,72770,72772],{"class":462,"line":2634},[460,72769,16196],{"class":466},[460,72771,40],{"class":470},[460,72773,473],{"class":466},[460,72775,72776,72778,72780,72782,72784,72786,72788,72790],{"class":462,"line":2648},[460,72777,16212],{"class":466},[460,72779,43],{"class":470},[460,72781,2740],{"class":929},[460,72783,894],{"class":466},[460,72785,71529],{"class":1353},[460,72787,5599],{"class":466},[460,72789,43],{"class":470},[460,72791,473],{"class":466},[460,72793,72794,72796,72798,72800,72802],{"class":462,"line":2653},[460,72795,16212],{"class":466},[460,72797,43],{"class":470},[460,72799,5599],{"class":466},[460,72801,43],{"class":470},[460,72803,473],{"class":466},[460,72805,72806,72808,72810,72812,72814],{"class":462,"line":2658},[460,72807,16212],{"class":466},[460,72809,43],{"class":470},[460,72811,5599],{"class":466},[460,72813,43],{"class":470},[460,72815,473],{"class":466},[460,72817,72818,72820,72822,72824,72826],{"class":462,"line":2670},[460,72819,16212],{"class":466},[460,72821,43],{"class":470},[460,72823,5599],{"class":466},[460,72825,43],{"class":470},[460,72827,473],{"class":466},[460,72829,72830,72832,72834,72836,72838],{"class":462,"line":2683},[460,72831,16212],{"class":466},[460,72833,43],{"class":470},[460,72835,5599],{"class":466},[460,72837,43],{"class":470},[460,72839,473],{"class":466},[460,72841,72842,72844,72846,72848,72850],{"class":462,"line":2695},[460,72843,16212],{"class":466},[460,72845,43],{"class":470},[460,72847,5599],{"class":466},[460,72849,43],{"class":470},[460,72851,473],{"class":466},[460,72853,72854,72856,72858,72860,72862],{"class":462,"line":2700},[460,72855,16212],{"class":466},[460,72857,43],{"class":470},[460,72859,5599],{"class":466},[460,72861,43],{"class":470},[460,72863,473],{"class":466},[460,72865,72866,72868,72870,72872,72874],{"class":462,"line":2709},[460,72867,16212],{"class":466},[460,72869,43],{"class":470},[460,72871,5599],{"class":466},[460,72873,43],{"class":470},[460,72875,473],{"class":466},[460,72877,72878,72880,72882],{"class":462,"line":2718},[460,72879,16235],{"class":466},[460,72881,40],{"class":470},[460,72883,473],{"class":466},[460,72885,72886,72888,72890],{"class":462,"line":2723},[460,72887,16244],{"class":466},[460,72889,2737],{"class":470},[460,72891,473],{"class":466},[460,72893,72894,72896,72898],{"class":462,"line":2732},[460,72895,581],{"class":466},[460,72897,2737],{"class":470},[460,72899,473],{"class":466},[460,72901,72902,72904,72906],{"class":462,"line":2750},[460,72903,467],{"class":466},[460,72905,225],{"class":470},[460,72907,473],{"class":466},[460,72909,72910,72912,72915,72917],{"class":462,"line":2782},[460,72911,1340],{"class":887},[460,72913,72914],{"class":900}," sliderData",[460,72916,2943],{"class":887},[460,72918,1385],{"class":466},[460,72920,72921,72923,72925,72927,72929,72931,72933],{"class":462,"line":2809},[460,72922,71667],{"class":466},[460,72924,71670],{"class":1353},[460,72926,71673],{"class":466},[460,72928,71676],{"class":1353},[460,72930,5629],{"class":466},[460,72932,71681],{"class":1353},[460,72934,8122],{"class":466},[460,72936,72937,72939,72941,72943,72945,72947,72949],{"class":462,"line":2836},[460,72938,71667],{"class":466},[460,72940,71690],{"class":1353},[460,72942,71673],{"class":466},[460,72944,71695],{"class":1353},[460,72946,5629],{"class":466},[460,72948,71700],{"class":1353},[460,72950,8122],{"class":466},[460,72952,72953,72955,72957,72959,72961,72963,72965],{"class":462,"line":2856},[460,72954,71667],{"class":466},[460,72956,71709],{"class":1353},[460,72958,71673],{"class":466},[460,72960,71714],{"class":1353},[460,72962,5629],{"class":466},[460,72964,71719],{"class":1353},[460,72966,8122],{"class":466},[460,72968,72969,72971,72973,72975,72977,72979,72981],{"class":462,"line":2865},[460,72970,71667],{"class":466},[460,72972,71728],{"class":1353},[460,72974,71673],{"class":466},[460,72976,71733],{"class":1353},[460,72978,5629],{"class":466},[460,72980,71738],{"class":1353},[460,72982,8122],{"class":466},[460,72984,72985,72987,72989,72991,72993,72995,72997],{"class":462,"line":2881},[460,72986,71667],{"class":466},[460,72988,71747],{"class":1353},[460,72990,71673],{"class":466},[460,72992,71752],{"class":1353},[460,72994,5629],{"class":466},[460,72996,71757],{"class":1353},[460,72998,8122],{"class":466},[460,73000,73001,73003,73005,73007,73009,73011,73013],{"class":462,"line":2887},[460,73002,71667],{"class":466},[460,73004,71766],{"class":1353},[460,73006,71673],{"class":466},[460,73008,71771],{"class":1353},[460,73010,5629],{"class":466},[460,73012,71776],{"class":1353},[460,73014,8122],{"class":466},[460,73016,73017,73019,73021,73023,73025,73027,73029],{"class":462,"line":2893},[460,73018,71667],{"class":466},[460,73020,71785],{"class":1353},[460,73022,71673],{"class":466},[460,73024,71790],{"class":1353},[460,73026,5629],{"class":466},[460,73028,71795],{"class":1353},[460,73030,8122],{"class":466},[460,73032,73033,73035,73037,73039,73041,73043,73045],{"class":462,"line":2899},[460,73034,71667],{"class":466},[460,73036,71804],{"class":1353},[460,73038,71673],{"class":466},[460,73040,71809],{"class":1353},[460,73042,5629],{"class":466},[460,73044,71814],{"class":1353},[460,73046,5635],{"class":466},[460,73048,73049],{"class":462,"line":2905},[460,73050,3355],{"class":466},[460,73052,73053],{"class":462,"line":2911},[460,73054,73055],{"class":942},"    \u002F\u002F 1.获取元素\n",[460,73057,73058,73060,73062,73064,73066,73068,73070,73072],{"class":462,"line":2920},[460,73059,1340],{"class":887},[460,73061,2313],{"class":900},[460,73063,2943],{"class":887},[460,73065,10599],{"class":466},[460,73067,3541],{"class":929},[460,73069,2174],{"class":466},[460,73071,71837],{"class":1353},[460,73073,3754],{"class":466},[460,73075,73076,73078,73080,73082,73084,73086,73088,73090],{"class":462,"line":2929},[460,73077,1340],{"class":887},[460,73079,12687],{"class":900},[460,73081,2943],{"class":887},[460,73083,10599],{"class":466},[460,73085,3541],{"class":929},[460,73087,2174],{"class":466},[460,73089,71856],{"class":1353},[460,73091,3754],{"class":466},[460,73093,73094,73096,73098,73100],{"class":462,"line":2935},[460,73095,13988],{"class":887},[460,73097,13991],{"class":466},[460,73099,894],{"class":887},[460,73101,13996],{"class":900},[460,73103,73104],{"class":462,"line":2948},[460,73105,73106],{"class":942},"    \u002F\u002F 2.开启定时器\n",[460,73108,73109],{"class":462,"line":2954},[460,73110,73111],{"class":942},"    \u002F\u002F console.log(sliderData[i]) 拿到对应对象了\n",[460,73113,73114,73117,73119,73121],{"class":462,"line":2965},[460,73115,73116],{"class":929},"    setInterval",[460,73118,2174],{"class":466},[460,73120,3976],{"class":887},[460,73122,9376],{"class":466},[460,73124,73125,73127],{"class":462,"line":2976},[460,73126,70699],{"class":466},[460,73128,14017],{"class":887},[460,73130,73131,73133,73135,73137,73140,73142],{"class":462,"line":2987},[460,73132,3654],{"class":887},[460,73134,70724],{"class":466},[460,73136,3738],{"class":887},[460,73138,73139],{"class":466}," sliderData.",[460,73141,68231],{"class":900},[460,73143,2180],{"class":466},[460,73145,73146,73149,73151],{"class":462,"line":2998},[460,73147,73148],{"class":466},"        i ",[460,73150,894],{"class":887},[460,73152,13996],{"class":900},[460,73154,73155],{"class":462,"line":3003},[460,73156,552],{"class":466},[460,73158,73159],{"class":462,"line":3008},[460,73160,73161],{"class":942},"      \u002F\u002F 更换图片路径\n",[460,73163,73164,73166,73168],{"class":462,"line":3018},[460,73165,71932],{"class":466},[460,73167,894],{"class":887},[460,73169,73170],{"class":466}," sliderData[i].url\n",[460,73172,73173],{"class":462,"line":3028},[460,73174,73175],{"class":942},"      \u002F\u002F 把文字写到p里面\n",[460,73177,73178,73180,73182],{"class":462,"line":3038},[460,73179,71942],{"class":466},[460,73181,894],{"class":887},[460,73183,73184],{"class":466}," sliderData[i].title\n",[460,73186,73187],{"class":462,"line":3048},[460,73188,73189],{"class":942},"      \u002F\u002F 小圆点\n",[460,73191,73192],{"class":462,"line":3053},[460,73193,73194],{"class":942},"      \u002F\u002F 先删除以前的active\n",[460,73196,73197],{"class":462,"line":3058},[460,73198,73199],{"class":942},"      \u002F\u002F 只让当前li添加active\n",[460,73201,73202,73204,73206,73208,73211,73214,73216,73218,73220],{"class":462,"line":3068},[460,73203,3538],{"class":466},[460,73205,3541],{"class":929},[460,73207,2174],{"class":466},[460,73209,73210],{"class":1353},"'.slider-footer .activate'",[460,73212,73213],{"class":466},").classList.",[460,73215,10755],{"class":929},[460,73217,2174],{"class":466},[460,73219,71999],{"class":1353},[460,73221,3754],{"class":466},[460,73223,73224,73226,73228,73230,73233,73235,73237,73239,73242,73244,73246,73248,73250],{"class":462,"line":3078},[460,73225,3538],{"class":466},[460,73227,3541],{"class":929},[460,73229,2174],{"class":466},[460,73231,73232],{"class":1353},"`.slider-footer ul li:nth-child(${",[460,73234,17174],{"class":466},[460,73236,61870],{"class":887},[460,73238,1400],{"class":900},[460,73240,73241],{"class":1353},"})`",[460,73243,73213],{"class":466},[460,73245,21840],{"class":929},[460,73247,2174],{"class":466},[460,73249,71999],{"class":1353},[460,73251,3754],{"class":466},[460,73253,73254],{"class":462,"line":3088},[460,73255,522],{"emptyLinePlaceholder":521},[460,73257,73258,73260,73262],{"class":462,"line":3098},[460,73259,16522],{"class":466},[460,73261,11412],{"class":900},[460,73263,3754],{"class":466},[460,73265,73266],{"class":462,"line":3103},[460,73267,522],{"emptyLinePlaceholder":521},[460,73269,73270,73272,73274],{"class":462,"line":3108},[460,73271,581],{"class":466},[460,73273,225],{"class":470},[460,73275,473],{"class":466},[460,73277,73278,73280,73282],{"class":462,"line":3118},[460,73279,1776],{"class":466},[460,73281,1721],{"class":470},[460,73283,473],{"class":466},[460,73285,73286],{"class":462,"line":3128},[460,73287,522],{"emptyLinePlaceholder":521},[460,73289,73290,73292,73294],{"class":462,"line":3138},[460,73291,1776],{"class":466},[460,73293,704],{"class":470},[460,73295,473],{"class":466},[23,73297,73299],{"id":73298},"_317-重要知识点","3.1.7 重要知识点",[14,73301,73302,73303],{},"浏览器在渲染文本时， ",[3944,73304,73305],{},"没有空格或换行符就没有“断行点”",[14,73307,73308],{},[30,73309],{"alt":32,"src":73310},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-105.png",[14,73312,73313],{},"让一些文字一直在浏览器打印输出的话，如果没有空格，就一直在浏览器一行内打印；当加上空格后，在浏览器一行内打印不开时就自动换行",[14,73315,73316],{},[30,73317],{"alt":32,"src":73318},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-106.png",[14,73320,73321],{},[30,73322],{"alt":32,"src":73323},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-107.png",[18,73325,73327],{"id":73326},"_32-dom事件基础","3.2 DOM事件基础",[23,73329,73331],{"id":73330},"_321-事件监听","3.2.1 事件监听",[14,73333,73334],{},[30,73335],{"alt":32,"src":73336},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-108.png",[14,73338,73339],{},"事件监听有响应的发生",[14,73341,73342],{},[30,73343],{"alt":32,"src":73344},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-109.png",[14,73346,73347],{},"不会立即执行,跟定时器差不多,定时器是经过了间隔时间再输出;定时器是当经历事件触发之后才会执行",[14,73349,73350],{},"对于有名函数,要执行的函数名后边不要加()",[23,73352,73354],{"id":73353},"_322-随机点名案例","3.2.2 随机点名案例",[451,73356,73358],{"className":702,"code":73357,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      margin: 0;\n      padding: 0;\n    }\n\n    h2 {\n      text-align: center;\n    }\n\n    .box {\n      width: 600px;\n      margin: 50px auto;\n      display: flex;\n      font-size: 25px;\n      line-height: 40px;\n    }\n\n    .qs {\n\n      width: 450px;\n      height: 40px;\n      color: red;\n\n    }\n\n    .btns {\n      text-align: center;\n    }\n\n    .btns button {\n      width: 120px;\n      height: 35px;\n      margin: 0 50px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Ch2>随机点名\u003C\u002Fh2>\n  \u003Cdiv class=\"box\">\n    \u003Cspan>名字是：\u003C\u002Fspan>\n    \u003Cdiv class=\"qs\">这里显示姓名\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"btns\">\n    \u003Cbutton class=\"start\">开始\u003C\u002Fbutton>\n    \u003Cbutton class=\"end\">结束\u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\n  \u003Cscript>\n    \u002F\u002F 数据数组\n    const arr = ['马超', '黄忠', '赵云', '关羽', '张飞']\n    const qs = document.querySelector('.qs')\n    \u002F\u002F 1.业务1.开始按钮模块\n    const start = document.querySelector('.start')\n    \u002F\u002F 定义全局变量, 如果在函数里边的话就是局部变量, 另一个函数无法使用\n    let timerId = 0\n    \u002F\u002F 随机号要全局变量\n    let random = 0\n    \u002F\u002F 1.1 添加点击事件\n    start.addEventListener('click', function () {\n      timerId = setInterval(function () {\n        \u002F\u002F 随机数\n        random = parseInt(Math.random() * arr.length)\n        qs.innerHTML = arr[random]\n      }, 35)\n      \u002F\u002F 如果数组里面只有一个值了, 不需要抽取了, 让两个按钮禁用就可以\n      if (arr.length === 1) {\n        \u002F\u002F start.disabled = true\n        \u002F\u002F end.disabled = true\n        \u002F\u002F 可以合起来写\n        start.disabled = end.disabled = true\n      }\n    })\n    \u002F\u002F 1.2 关闭按钮模块\n    const end = document.querySelector('.end')\n    end.addEventListener('click', function () {\n      clearInterval(timerId)\n      \u002F\u002F 结束了.可以删除掉当前抽取的那个数组元素\n      arr.splice(random, 1)\n    })\n\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,73359,73360,73370,73384,73388,73396,73410,73430,73442,73450,73456,73466,73476,73480,73484,73491,73501,73505,73509,73515,73527,73541,73551,73563,73575,73579,73583,73590,73594,73607,73619,73630,73634,73638,73642,73649,73659,73663,73667,73676,73688,73700,73715,73719,73727,73735,73739,73747,73760,73774,73787,73807,73815,73830,73850,73870,73878,73882,73890,73895,73930,73950,73955,73974,73979,73990,73995,74006,74011,74028,74043,74048,74074,74084,74093,74098,74114,74119,74124,74129,74143,74147,74151,74156,74175,74192,74200,74205,74219,74223,74227,74235,74243,74247],{"__ignoreMap":32},[460,73361,73362,73364,73366,73368],{"class":462,"line":463},[460,73363,1845],{"class":466},[460,73365,1848],{"class":470},[460,73367,1851],{"class":929},[460,73369,473],{"class":466},[460,73371,73372,73374,73376,73378,73380,73382],{"class":462,"line":476},[460,73373,781],{"class":466},[460,73375,704],{"class":470},[460,73377,1862],{"class":929},[460,73379,894],{"class":466},[460,73381,1867],{"class":1353},[460,73383,473],{"class":466},[460,73385,73386],{"class":462,"line":482},[460,73387,522],{"emptyLinePlaceholder":521},[460,73389,73390,73392,73394],{"class":462,"line":488},[460,73391,781],{"class":466},[460,73393,1880],{"class":470},[460,73395,473],{"class":466},[460,73397,73398,73400,73402,73404,73406,73408],{"class":462,"line":494},[460,73399,467],{"class":466},[460,73401,1889],{"class":470},[460,73403,1892],{"class":929},[460,73405,894],{"class":466},[460,73407,1897],{"class":1353},[460,73409,473],{"class":466},[460,73411,73412,73414,73416,73418,73420,73422,73424,73426,73428],{"class":462,"line":500},[460,73413,467],{"class":466},[460,73415,1889],{"class":470},[460,73417,1908],{"class":929},[460,73419,894],{"class":466},[460,73421,1913],{"class":1353},[460,73423,1916],{"class":929},[460,73425,894],{"class":466},[460,73427,1921],{"class":1353},[460,73429,473],{"class":466},[460,73431,73432,73434,73436,73438,73440],{"class":462,"line":506},[460,73433,467],{"class":466},[460,73435,1930],{"class":470},[460,73437,1933],{"class":466},[460,73439,1930],{"class":470},[460,73441,473],{"class":466},[460,73443,73444,73446,73448],{"class":462,"line":512},[460,73445,467],{"class":466},[460,73447,1944],{"class":470},[460,73449,473],{"class":466},[460,73451,73452,73454],{"class":462,"line":518},[460,73453,1951],{"class":470},[460,73455,1348],{"class":466},[460,73457,73458,73460,73462,73464],{"class":462,"line":525},[460,73459,1971],{"class":900},[460,73461,1961],{"class":466},[460,73463,936],{"class":900},[460,73465,1966],{"class":466},[460,73467,73468,73470,73472,73474],{"class":462,"line":531},[460,73469,1958],{"class":900},[460,73471,1961],{"class":466},[460,73473,936],{"class":900},[460,73475,1966],{"class":466},[460,73477,73478],{"class":462,"line":537},[460,73479,509],{"class":466},[460,73481,73482],{"class":462,"line":543},[460,73483,522],{"emptyLinePlaceholder":521},[460,73485,73486,73489],{"class":462,"line":549},[460,73487,73488],{"class":470},"    h2",[460,73490,1348],{"class":466},[460,73492,73493,73495,73497,73499],{"class":462,"line":555},[460,73494,5540],{"class":900},[460,73496,1961],{"class":466},[460,73498,5545],{"class":900},[460,73500,1966],{"class":466},[460,73502,73503],{"class":462,"line":560},[460,73504,509],{"class":466},[460,73506,73507],{"class":462,"line":566},[460,73508,522],{"emptyLinePlaceholder":521},[460,73510,73511,73513],{"class":462,"line":572},[460,73512,13794],{"class":929},[460,73514,1348],{"class":466},[460,73516,73517,73519,73521,73523,73525],{"class":462,"line":578},[460,73518,2009],{"class":900},[460,73520,1961],{"class":466},[460,73522,18108],{"class":900},[460,73524,2017],{"class":887},[460,73526,1966],{"class":466},[460,73528,73529,73531,73533,73535,73537,73539],{"class":462,"line":812},[460,73530,1971],{"class":900},[460,73532,1961],{"class":466},[460,73534,2549],{"class":900},[460,73536,2017],{"class":887},[460,73538,2030],{"class":900},[460,73540,1966],{"class":466},[460,73542,73543,73545,73547,73549],{"class":462,"line":818},[460,73544,2037],{"class":900},[460,73546,1961],{"class":466},[460,73548,2042],{"class":900},[460,73550,1966],{"class":466},[460,73552,73553,73555,73557,73559,73561],{"class":462,"line":824},[460,73554,2356],{"class":900},[460,73556,1961],{"class":466},[460,73558,13850],{"class":900},[460,73560,2017],{"class":887},[460,73562,1966],{"class":466},[460,73564,73565,73567,73569,73571,73573],{"class":462,"line":2074},[460,73566,5513],{"class":900},[460,73568,1961],{"class":466},[460,73570,5504],{"class":900},[460,73572,2017],{"class":887},[460,73574,1966],{"class":466},[460,73576,73577],{"class":462,"line":2088},[460,73578,509],{"class":466},[460,73580,73581],{"class":462,"line":2103},[460,73582,522],{"emptyLinePlaceholder":521},[460,73584,73585,73588],{"class":462,"line":2122},[460,73586,73587],{"class":929},"    .qs",[460,73589,1348],{"class":466},[460,73591,73592],{"class":462,"line":2144},[460,73593,522],{"emptyLinePlaceholder":521},[460,73595,73596,73598,73600,73603,73605],{"class":462,"line":2158},[460,73597,2009],{"class":900},[460,73599,1961],{"class":466},[460,73601,73602],{"class":900},"450",[460,73604,2017],{"class":887},[460,73606,1966],{"class":466},[460,73608,73609,73611,73613,73615,73617],{"class":462,"line":2163},[460,73610,5499],{"class":900},[460,73612,1961],{"class":466},[460,73614,5504],{"class":900},[460,73616,2017],{"class":887},[460,73618,1966],{"class":466},[460,73620,73621,73623,73625,73628],{"class":462,"line":2168},[460,73622,2384],{"class":900},[460,73624,1961],{"class":466},[460,73626,73627],{"class":900},"red",[460,73629,1966],{"class":466},[460,73631,73632],{"class":462,"line":2183},[460,73633,522],{"emptyLinePlaceholder":521},[460,73635,73636],{"class":462,"line":2194},[460,73637,509],{"class":466},[460,73639,73640],{"class":462,"line":2199},[460,73641,522],{"emptyLinePlaceholder":521},[460,73643,73644,73647],{"class":462,"line":2204},[460,73645,73646],{"class":929},"    .btns",[460,73648,1348],{"class":466},[460,73650,73651,73653,73655,73657],{"class":462,"line":2212},[460,73652,5540],{"class":900},[460,73654,1961],{"class":466},[460,73656,5545],{"class":900},[460,73658,1966],{"class":466},[460,73660,73661],{"class":462,"line":2257},[460,73662,509],{"class":466},[460,73664,73665],{"class":462,"line":2285},[460,73666,522],{"emptyLinePlaceholder":521},[460,73668,73669,73671,73674],{"class":462,"line":2298},[460,73670,73646],{"class":929},[460,73672,73673],{"class":470}," button",[460,73675,1348],{"class":466},[460,73677,73678,73680,73682,73684,73686],{"class":462,"line":2303},[460,73679,2009],{"class":900},[460,73681,1961],{"class":466},[460,73683,17532],{"class":900},[460,73685,2017],{"class":887},[460,73687,1966],{"class":466},[460,73689,73690,73692,73694,73696,73698],{"class":462,"line":2308},[460,73691,5499],{"class":900},[460,73693,1961],{"class":466},[460,73695,17015],{"class":900},[460,73697,2017],{"class":887},[460,73699,1966],{"class":466},[460,73701,73702,73704,73706,73708,73711,73713],{"class":462,"line":2318},[460,73703,1971],{"class":900},[460,73705,1961],{"class":466},[460,73707,936],{"class":900},[460,73709,73710],{"class":900}," 50",[460,73712,2017],{"class":887},[460,73714,1966],{"class":466},[460,73716,73717],{"class":462,"line":2333},[460,73718,509],{"class":466},[460,73720,73721,73723,73725],{"class":462,"line":2338},[460,73722,581],{"class":466},[460,73724,1944],{"class":470},[460,73726,473],{"class":466},[460,73728,73729,73731,73733],{"class":462,"line":2343},[460,73730,1776],{"class":466},[460,73732,1880],{"class":470},[460,73734,473],{"class":466},[460,73736,73737],{"class":462,"line":2353},[460,73738,522],{"emptyLinePlaceholder":521},[460,73740,73741,73743,73745],{"class":462,"line":2368},[460,73742,781],{"class":466},[460,73744,1721],{"class":470},[460,73746,473],{"class":466},[460,73748,73749,73751,73753,73756,73758],{"class":462,"line":2381},[460,73750,467],{"class":466},[460,73752,18],{"class":470},[460,73754,73755],{"class":466},">随机点名\u003C\u002F",[460,73757,18],{"class":470},[460,73759,473],{"class":466},[460,73761,73762,73764,73766,73768,73770,73772],{"class":462,"line":2394},[460,73763,467],{"class":466},[460,73765,2737],{"class":470},[460,73767,2740],{"class":929},[460,73769,894],{"class":466},[460,73771,13932],{"class":1353},[460,73773,473],{"class":466},[460,73775,73776,73778,73780,73783,73785],{"class":462,"line":2399},[460,73777,2753],{"class":466},[460,73779,460],{"class":470},[460,73781,73782],{"class":466},">名字是：\u003C\u002F",[460,73784,460],{"class":470},[460,73786,473],{"class":466},[460,73788,73789,73791,73793,73795,73797,73800,73803,73805],{"class":462,"line":2404},[460,73790,2753],{"class":466},[460,73792,2737],{"class":470},[460,73794,2740],{"class":929},[460,73796,894],{"class":466},[460,73798,73799],{"class":1353},"\"qs\"",[460,73801,73802],{"class":466},">这里显示姓名\u003C\u002F",[460,73804,2737],{"class":470},[460,73806,473],{"class":466},[460,73808,73809,73811,73813],{"class":462,"line":2414},[460,73810,581],{"class":466},[460,73812,2737],{"class":470},[460,73814,473],{"class":466},[460,73816,73817,73819,73821,73823,73825,73828],{"class":462,"line":2428},[460,73818,467],{"class":466},[460,73820,2737],{"class":470},[460,73822,2740],{"class":929},[460,73824,894],{"class":466},[460,73826,73827],{"class":1353},"\"btns\"",[460,73829,473],{"class":466},[460,73831,73832,73834,73836,73838,73840,73843,73846,73848],{"class":462,"line":2440},[460,73833,2753],{"class":466},[460,73835,10501],{"class":470},[460,73837,2740],{"class":929},[460,73839,894],{"class":466},[460,73841,73842],{"class":1353},"\"start\"",[460,73844,73845],{"class":466},">开始\u003C\u002F",[460,73847,10501],{"class":470},[460,73849,473],{"class":466},[460,73851,73852,73854,73856,73858,73860,73863,73866,73868],{"class":462,"line":2445},[460,73853,2753],{"class":466},[460,73855,10501],{"class":470},[460,73857,2740],{"class":929},[460,73859,894],{"class":466},[460,73861,73862],{"class":1353},"\"end\"",[460,73864,73865],{"class":466},">结束\u003C\u002F",[460,73867,10501],{"class":470},[460,73869,473],{"class":466},[460,73871,73872,73874,73876],{"class":462,"line":2450},[460,73873,581],{"class":466},[460,73875,2737],{"class":470},[460,73877,473],{"class":466},[460,73879,73880],{"class":462,"line":2460},[460,73881,522],{"emptyLinePlaceholder":521},[460,73883,73884,73886,73888],{"class":462,"line":2473},[460,73885,467],{"class":466},[460,73887,225],{"class":470},[460,73889,473],{"class":466},[460,73891,73892],{"class":462,"line":2487},[460,73893,73894],{"class":942},"    \u002F\u002F 数据数组\n",[460,73896,73897,73899,73901,73903,73905,73908,73910,73913,73915,73918,73920,73923,73925,73928],{"class":462,"line":2492},[460,73898,1340],{"class":887},[460,73900,13288],{"class":900},[460,73902,2943],{"class":887},[460,73904,897],{"class":466},[460,73906,73907],{"class":1353},"'马超'",[460,73909,904],{"class":466},[460,73911,73912],{"class":1353},"'黄忠'",[460,73914,904],{"class":466},[460,73916,73917],{"class":1353},"'赵云'",[460,73919,904],{"class":466},[460,73921,73922],{"class":1353},"'关羽'",[460,73924,904],{"class":466},[460,73926,73927],{"class":1353},"'张飞'",[460,73929,13307],{"class":466},[460,73931,73932,73934,73937,73939,73941,73943,73945,73948],{"class":462,"line":2497},[460,73933,1340],{"class":887},[460,73935,73936],{"class":900}," qs",[460,73938,2943],{"class":887},[460,73940,10599],{"class":466},[460,73942,3541],{"class":929},[460,73944,2174],{"class":466},[460,73946,73947],{"class":1353},"'.qs'",[460,73949,3754],{"class":466},[460,73951,73952],{"class":462,"line":2505},[460,73953,73954],{"class":942},"    \u002F\u002F 1.业务1.开始按钮模块\n",[460,73956,73957,73959,73961,73963,73965,73967,73969,73972],{"class":462,"line":2516},[460,73958,1340],{"class":887},[460,73960,20698],{"class":900},[460,73962,2943],{"class":887},[460,73964,10599],{"class":466},[460,73966,3541],{"class":929},[460,73968,2174],{"class":466},[460,73970,73971],{"class":1353},"'.start'",[460,73973,3754],{"class":466},[460,73975,73976],{"class":462,"line":2529},[460,73977,73978],{"class":942},"    \u002F\u002F 定义全局变量, 如果在函数里边的话就是局部变量, 另一个函数无法使用\n",[460,73980,73981,73983,73986,73988],{"class":462,"line":2542},[460,73982,13988],{"class":887},[460,73984,73985],{"class":466}," timerId ",[460,73987,894],{"class":887},[460,73989,13996],{"class":900},[460,73991,73992],{"class":462,"line":2559},[460,73993,73994],{"class":942},"    \u002F\u002F 随机号要全局变量\n",[460,73996,73997,73999,74002,74004],{"class":462,"line":2564},[460,73998,13988],{"class":887},[460,74000,74001],{"class":466}," random ",[460,74003,894],{"class":887},[460,74005,13996],{"class":900},[460,74007,74008],{"class":462,"line":2569},[460,74009,74010],{"class":942},"    \u002F\u002F 1.1 添加点击事件\n",[460,74012,74013,74016,74018,74020,74022,74024,74026],{"class":462,"line":2579},[460,74014,74015],{"class":466},"    start.",[460,74017,3599],{"class":929},[460,74019,2174],{"class":466},[460,74021,3604],{"class":1353},[460,74023,904],{"class":466},[460,74025,3976],{"class":887},[460,74027,9376],{"class":466},[460,74029,74030,74033,74035,74037,74039,74041],{"class":462,"line":2597},[460,74031,74032],{"class":466},"      timerId ",[460,74034,894],{"class":887},[460,74036,70688],{"class":929},[460,74038,2174],{"class":466},[460,74040,3976],{"class":887},[460,74042,9376],{"class":466},[460,74044,74045],{"class":462,"line":2610},[460,74046,74047],{"class":942},"        \u002F\u002F 随机数\n",[460,74049,74050,74053,74055,74058,74061,74064,74066,74068,74070,74072],{"class":462,"line":2621},[460,74051,74052],{"class":466},"        random ",[460,74054,894],{"class":887},[460,74056,74057],{"class":929}," parseInt",[460,74059,74060],{"class":466},"(Math.",[460,74062,74063],{"class":929},"random",[460,74065,14546],{"class":466},[460,74067,8320],{"class":887},[460,74069,68228],{"class":466},[460,74071,68231],{"class":900},[460,74073,3754],{"class":466},[460,74075,74076,74079,74081],{"class":462,"line":2634},[460,74077,74078],{"class":466},"        qs.innerHTML ",[460,74080,894],{"class":887},[460,74082,74083],{"class":466}," arr[random]\n",[460,74085,74086,74089,74091],{"class":462,"line":2648},[460,74087,74088],{"class":466},"      }, ",[460,74090,17015],{"class":900},[460,74092,3754],{"class":466},[460,74094,74095],{"class":462,"line":2653},[460,74096,74097],{"class":942},"      \u002F\u002F 如果数组里面只有一个值了, 不需要抽取了, 让两个按钮禁用就可以\n",[460,74099,74100,74102,74105,74107,74110,74112],{"class":462,"line":2658},[460,74101,3654],{"class":887},[460,74103,74104],{"class":466}," (arr.",[460,74106,68231],{"class":900},[460,74108,74109],{"class":887}," ===",[460,74111,1400],{"class":900},[460,74113,2180],{"class":466},[460,74115,74116],{"class":462,"line":2670},[460,74117,74118],{"class":942},"        \u002F\u002F start.disabled = true\n",[460,74120,74121],{"class":462,"line":2683},[460,74122,74123],{"class":942},"        \u002F\u002F end.disabled = true\n",[460,74125,74126],{"class":462,"line":2695},[460,74127,74128],{"class":942},"        \u002F\u002F 可以合起来写\n",[460,74130,74131,74134,74136,74139,74141],{"class":462,"line":2700},[460,74132,74133],{"class":466},"        start.disabled ",[460,74135,894],{"class":887},[460,74137,74138],{"class":466}," end.disabled ",[460,74140,894],{"class":887},[460,74142,5258],{"class":900},[460,74144,74145],{"class":462,"line":2709},[460,74146,552],{"class":466},[460,74148,74149],{"class":462,"line":2718},[460,74150,1679],{"class":466},[460,74152,74153],{"class":462,"line":2723},[460,74154,74155],{"class":942},"    \u002F\u002F 1.2 关闭按钮模块\n",[460,74157,74158,74160,74162,74164,74166,74168,74170,74173],{"class":462,"line":2732},[460,74159,1340],{"class":887},[460,74161,20714],{"class":900},[460,74163,2943],{"class":887},[460,74165,10599],{"class":466},[460,74167,3541],{"class":929},[460,74169,2174],{"class":466},[460,74171,74172],{"class":1353},"'.end'",[460,74174,3754],{"class":466},[460,74176,74177,74180,74182,74184,74186,74188,74190],{"class":462,"line":2750},[460,74178,74179],{"class":466},"    end.",[460,74181,3599],{"class":929},[460,74183,2174],{"class":466},[460,74185,3604],{"class":1353},[460,74187,904],{"class":466},[460,74189,3976],{"class":887},[460,74191,9376],{"class":466},[460,74193,74194,74197],{"class":462,"line":2782},[460,74195,74196],{"class":929},"      clearInterval",[460,74198,74199],{"class":466},"(timerId)\n",[460,74201,74202],{"class":462,"line":2809},[460,74203,74204],{"class":942},"      \u002F\u002F 结束了.可以删除掉当前抽取的那个数组元素\n",[460,74206,74207,74209,74212,74215,74217],{"class":462,"line":2836},[460,74208,3415],{"class":466},[460,74210,74211],{"class":929},"splice",[460,74213,74214],{"class":466},"(random, ",[460,74216,901],{"class":900},[460,74218,3754],{"class":466},[460,74220,74221],{"class":462,"line":2856},[460,74222,1679],{"class":466},[460,74224,74225],{"class":462,"line":2865},[460,74226,522],{"emptyLinePlaceholder":521},[460,74228,74229,74231,74233],{"class":462,"line":2881},[460,74230,581],{"class":466},[460,74232,225],{"class":470},[460,74234,473],{"class":466},[460,74236,74237,74239,74241],{"class":462,"line":2887},[460,74238,1776],{"class":466},[460,74240,1721],{"class":470},[460,74242,473],{"class":466},[460,74244,74245],{"class":462,"line":2893},[460,74246,522],{"emptyLinePlaceholder":521},[460,74248,74249,74251,74253],{"class":462,"line":2899},[460,74250,1776],{"class":466},[460,74252,704],{"class":470},[460,74254,473],{"class":466},[14,74256,74257],{},"函数中声明的变量是局部作用变量,另一个函数是无法使用的,想使用的话,就将这个变量改为全局变量",[23,74259,74261],{"id":74260},"_323-垃圾回收机制","3.2.3 垃圾回收机制",[451,74263,74265],{"className":702,"code":74264,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cbutton>点击\u003C\u002Fbutton>\n  \u003Cscript>\n    const btn = document.querySelector('button')\n    btn.addEventListener('click', function () {\n      const num = Math.random()\n      console.log(num)\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,74266,74267,74277,74291,74295,74303,74317,74337,74349,74357,74361,74369,74381,74389,74408,74425,74440,74448,74452,74460,74468,74472],{"__ignoreMap":32},[460,74268,74269,74271,74273,74275],{"class":462,"line":463},[460,74270,1845],{"class":466},[460,74272,1848],{"class":470},[460,74274,1851],{"class":929},[460,74276,473],{"class":466},[460,74278,74279,74281,74283,74285,74287,74289],{"class":462,"line":476},[460,74280,781],{"class":466},[460,74282,704],{"class":470},[460,74284,1862],{"class":929},[460,74286,894],{"class":466},[460,74288,1867],{"class":1353},[460,74290,473],{"class":466},[460,74292,74293],{"class":462,"line":482},[460,74294,522],{"emptyLinePlaceholder":521},[460,74296,74297,74299,74301],{"class":462,"line":488},[460,74298,781],{"class":466},[460,74300,1880],{"class":470},[460,74302,473],{"class":466},[460,74304,74305,74307,74309,74311,74313,74315],{"class":462,"line":494},[460,74306,467],{"class":466},[460,74308,1889],{"class":470},[460,74310,1892],{"class":929},[460,74312,894],{"class":466},[460,74314,1897],{"class":1353},[460,74316,473],{"class":466},[460,74318,74319,74321,74323,74325,74327,74329,74331,74333,74335],{"class":462,"line":500},[460,74320,467],{"class":466},[460,74322,1889],{"class":470},[460,74324,1908],{"class":929},[460,74326,894],{"class":466},[460,74328,1913],{"class":1353},[460,74330,1916],{"class":929},[460,74332,894],{"class":466},[460,74334,1921],{"class":1353},[460,74336,473],{"class":466},[460,74338,74339,74341,74343,74345,74347],{"class":462,"line":506},[460,74340,467],{"class":466},[460,74342,1930],{"class":470},[460,74344,1933],{"class":466},[460,74346,1930],{"class":470},[460,74348,473],{"class":466},[460,74350,74351,74353,74355],{"class":462,"line":512},[460,74352,1776],{"class":466},[460,74354,1880],{"class":470},[460,74356,473],{"class":466},[460,74358,74359],{"class":462,"line":518},[460,74360,522],{"emptyLinePlaceholder":521},[460,74362,74363,74365,74367],{"class":462,"line":525},[460,74364,781],{"class":466},[460,74366,1721],{"class":470},[460,74368,473],{"class":466},[460,74370,74371,74373,74375,74377,74379],{"class":462,"line":531},[460,74372,467],{"class":466},[460,74374,10501],{"class":470},[460,74376,70139],{"class":466},[460,74378,10501],{"class":470},[460,74380,473],{"class":466},[460,74382,74383,74385,74387],{"class":462,"line":537},[460,74384,467],{"class":466},[460,74386,225],{"class":470},[460,74388,473],{"class":466},[460,74390,74391,74393,74395,74397,74399,74401,74403,74406],{"class":462,"line":543},[460,74392,1340],{"class":887},[460,74394,70637],{"class":900},[460,74396,2943],{"class":887},[460,74398,10599],{"class":466},[460,74400,3541],{"class":929},[460,74402,2174],{"class":466},[460,74404,74405],{"class":1353},"'button'",[460,74407,3754],{"class":466},[460,74409,74410,74413,74415,74417,74419,74421,74423],{"class":462,"line":549},[460,74411,74412],{"class":466},"    btn.",[460,74414,3599],{"class":929},[460,74416,2174],{"class":466},[460,74418,3604],{"class":1353},[460,74420,904],{"class":466},[460,74422,3976],{"class":887},[460,74424,9376],{"class":466},[460,74426,74427,74429,74431,74433,74436,74438],{"class":462,"line":555},[460,74428,3625],{"class":887},[460,74430,18776],{"class":900},[460,74432,2943],{"class":887},[460,74434,74435],{"class":466}," Math.",[460,74437,74063],{"class":929},[460,74439,10758],{"class":466},[460,74441,74442,74444,74446],{"class":462,"line":560},[460,74443,12805],{"class":466},[460,74445,930],{"class":929},[460,74447,16768],{"class":466},[460,74449,74450],{"class":462,"line":566},[460,74451,1679],{"class":466},[460,74453,74454,74456,74458],{"class":462,"line":572},[460,74455,581],{"class":466},[460,74457,225],{"class":470},[460,74459,473],{"class":466},[460,74461,74462,74464,74466],{"class":462,"line":578},[460,74463,1776],{"class":466},[460,74465,1721],{"class":470},[460,74467,473],{"class":466},[460,74469,74470],{"class":462,"line":812},[460,74471,522],{"emptyLinePlaceholder":521},[460,74473,74474,74476,74478],{"class":462,"line":818},[460,74475,1776],{"class":466},[460,74477,704],{"class":470},[460,74479,473],{"class":466},[14,74481,74482],{},"当对按钮进行点击事件,就会执行函数,执行完之后这个变量就没用了,js有自动回收机制,相当于把这两行代码给删除了,当再次点击时,会创立一个新的变量出来,这个新变量与之前的那个是不同的,之前那个压根就没了,被回了,所以写const没事",[14,74484,74485],{},"常量不可以重新赋值",[14,74487,74488],{},"函数内部的变量和定义的常量在函数执行之后会有垃圾回收机制",[451,74490,74492],{"className":702,"code":74491,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cbutton>点击\u003C\u002Fbutton>\n  \u003Cscript>\n    const num = 10\n    const btn = document.querySelector('button')\n    btn.addEventListener('click', function () {\n      const num = Math.random()\n      console.log(num)\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,74493,74494,74504,74518,74522,74530,74544,74564,74576,74584,74588,74596,74608,74616,74627,74645,74661,74675,74683,74687,74695,74703,74707],{"__ignoreMap":32},[460,74495,74496,74498,74500,74502],{"class":462,"line":463},[460,74497,1845],{"class":466},[460,74499,1848],{"class":470},[460,74501,1851],{"class":929},[460,74503,473],{"class":466},[460,74505,74506,74508,74510,74512,74514,74516],{"class":462,"line":476},[460,74507,781],{"class":466},[460,74509,704],{"class":470},[460,74511,1862],{"class":929},[460,74513,894],{"class":466},[460,74515,1867],{"class":1353},[460,74517,473],{"class":466},[460,74519,74520],{"class":462,"line":482},[460,74521,522],{"emptyLinePlaceholder":521},[460,74523,74524,74526,74528],{"class":462,"line":488},[460,74525,781],{"class":466},[460,74527,1880],{"class":470},[460,74529,473],{"class":466},[460,74531,74532,74534,74536,74538,74540,74542],{"class":462,"line":494},[460,74533,467],{"class":466},[460,74535,1889],{"class":470},[460,74537,1892],{"class":929},[460,74539,894],{"class":466},[460,74541,1897],{"class":1353},[460,74543,473],{"class":466},[460,74545,74546,74548,74550,74552,74554,74556,74558,74560,74562],{"class":462,"line":500},[460,74547,467],{"class":466},[460,74549,1889],{"class":470},[460,74551,1908],{"class":929},[460,74553,894],{"class":466},[460,74555,1913],{"class":1353},[460,74557,1916],{"class":929},[460,74559,894],{"class":466},[460,74561,1921],{"class":1353},[460,74563,473],{"class":466},[460,74565,74566,74568,74570,74572,74574],{"class":462,"line":506},[460,74567,467],{"class":466},[460,74569,1930],{"class":470},[460,74571,1933],{"class":466},[460,74573,1930],{"class":470},[460,74575,473],{"class":466},[460,74577,74578,74580,74582],{"class":462,"line":512},[460,74579,1776],{"class":466},[460,74581,1880],{"class":470},[460,74583,473],{"class":466},[460,74585,74586],{"class":462,"line":518},[460,74587,522],{"emptyLinePlaceholder":521},[460,74589,74590,74592,74594],{"class":462,"line":525},[460,74591,781],{"class":466},[460,74593,1721],{"class":470},[460,74595,473],{"class":466},[460,74597,74598,74600,74602,74604,74606],{"class":462,"line":531},[460,74599,467],{"class":466},[460,74601,10501],{"class":470},[460,74603,70139],{"class":466},[460,74605,10501],{"class":470},[460,74607,473],{"class":466},[460,74609,74610,74612,74614],{"class":462,"line":537},[460,74611,467],{"class":466},[460,74613,225],{"class":470},[460,74615,473],{"class":466},[460,74617,74618,74620,74622,74624],{"class":462,"line":543},[460,74619,1340],{"class":887},[460,74621,18776],{"class":900},[460,74623,2943],{"class":887},[460,74625,74626],{"class":900}," 10\n",[460,74628,74629,74631,74633,74635,74637,74639,74641,74643],{"class":462,"line":549},[460,74630,1340],{"class":887},[460,74632,70637],{"class":900},[460,74634,2943],{"class":887},[460,74636,10599],{"class":466},[460,74638,3541],{"class":929},[460,74640,2174],{"class":466},[460,74642,74405],{"class":1353},[460,74644,3754],{"class":466},[460,74646,74647,74649,74651,74653,74655,74657,74659],{"class":462,"line":555},[460,74648,74412],{"class":466},[460,74650,3599],{"class":929},[460,74652,2174],{"class":466},[460,74654,3604],{"class":1353},[460,74656,904],{"class":466},[460,74658,3976],{"class":887},[460,74660,9376],{"class":466},[460,74662,74663,74665,74667,74669,74671,74673],{"class":462,"line":560},[460,74664,3625],{"class":887},[460,74666,18776],{"class":900},[460,74668,2943],{"class":887},[460,74670,74435],{"class":466},[460,74672,74063],{"class":929},[460,74674,10758],{"class":466},[460,74676,74677,74679,74681],{"class":462,"line":566},[460,74678,12805],{"class":466},[460,74680,930],{"class":929},[460,74682,16768],{"class":466},[460,74684,74685],{"class":462,"line":572},[460,74686,1679],{"class":466},[460,74688,74689,74691,74693],{"class":462,"line":578},[460,74690,581],{"class":466},[460,74692,225],{"class":470},[460,74694,473],{"class":466},[460,74696,74697,74699,74701],{"class":462,"line":812},[460,74698,1776],{"class":466},[460,74700,1721],{"class":470},[460,74702,473],{"class":466},[460,74704,74705],{"class":462,"line":818},[460,74706,522],{"emptyLinePlaceholder":521},[460,74708,74709,74711,74713],{"class":462,"line":824},[460,74710,1776],{"class":466},[460,74712,704],{"class":470},[460,74714,473],{"class":466},[14,74716,74717],{},"不会报错,num所述的作用域不同,一个在全局作用域,一个在局部作用域",[451,74719,74721],{"className":702,"code":74720,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cbutton>点击\u003C\u002Fbutton>\n  \u003Cscript>\n    const num = 10\n    const btn = document.querySelector('button')\n    btn.addEventListener('click', function () {\n      num = Math.random()\n      console.log(num)\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,74722,74723,74733,74747,74751,74759,74773,74793,74805,74813,74817,74825,74837,74845,74855,74873,74889,74902,74910,74914,74922,74930,74934],{"__ignoreMap":32},[460,74724,74725,74727,74729,74731],{"class":462,"line":463},[460,74726,1845],{"class":466},[460,74728,1848],{"class":470},[460,74730,1851],{"class":929},[460,74732,473],{"class":466},[460,74734,74735,74737,74739,74741,74743,74745],{"class":462,"line":476},[460,74736,781],{"class":466},[460,74738,704],{"class":470},[460,74740,1862],{"class":929},[460,74742,894],{"class":466},[460,74744,1867],{"class":1353},[460,74746,473],{"class":466},[460,74748,74749],{"class":462,"line":482},[460,74750,522],{"emptyLinePlaceholder":521},[460,74752,74753,74755,74757],{"class":462,"line":488},[460,74754,781],{"class":466},[460,74756,1880],{"class":470},[460,74758,473],{"class":466},[460,74760,74761,74763,74765,74767,74769,74771],{"class":462,"line":494},[460,74762,467],{"class":466},[460,74764,1889],{"class":470},[460,74766,1892],{"class":929},[460,74768,894],{"class":466},[460,74770,1897],{"class":1353},[460,74772,473],{"class":466},[460,74774,74775,74777,74779,74781,74783,74785,74787,74789,74791],{"class":462,"line":500},[460,74776,467],{"class":466},[460,74778,1889],{"class":470},[460,74780,1908],{"class":929},[460,74782,894],{"class":466},[460,74784,1913],{"class":1353},[460,74786,1916],{"class":929},[460,74788,894],{"class":466},[460,74790,1921],{"class":1353},[460,74792,473],{"class":466},[460,74794,74795,74797,74799,74801,74803],{"class":462,"line":506},[460,74796,467],{"class":466},[460,74798,1930],{"class":470},[460,74800,1933],{"class":466},[460,74802,1930],{"class":470},[460,74804,473],{"class":466},[460,74806,74807,74809,74811],{"class":462,"line":512},[460,74808,1776],{"class":466},[460,74810,1880],{"class":470},[460,74812,473],{"class":466},[460,74814,74815],{"class":462,"line":518},[460,74816,522],{"emptyLinePlaceholder":521},[460,74818,74819,74821,74823],{"class":462,"line":525},[460,74820,781],{"class":466},[460,74822,1721],{"class":470},[460,74824,473],{"class":466},[460,74826,74827,74829,74831,74833,74835],{"class":462,"line":531},[460,74828,467],{"class":466},[460,74830,10501],{"class":470},[460,74832,70139],{"class":466},[460,74834,10501],{"class":470},[460,74836,473],{"class":466},[460,74838,74839,74841,74843],{"class":462,"line":537},[460,74840,467],{"class":466},[460,74842,225],{"class":470},[460,74844,473],{"class":466},[460,74846,74847,74849,74851,74853],{"class":462,"line":543},[460,74848,1340],{"class":887},[460,74850,18776],{"class":900},[460,74852,2943],{"class":887},[460,74854,74626],{"class":900},[460,74856,74857,74859,74861,74863,74865,74867,74869,74871],{"class":462,"line":549},[460,74858,1340],{"class":887},[460,74860,70637],{"class":900},[460,74862,2943],{"class":887},[460,74864,10599],{"class":466},[460,74866,3541],{"class":929},[460,74868,2174],{"class":466},[460,74870,74405],{"class":1353},[460,74872,3754],{"class":466},[460,74874,74875,74877,74879,74881,74883,74885,74887],{"class":462,"line":555},[460,74876,74412],{"class":466},[460,74878,3599],{"class":929},[460,74880,2174],{"class":466},[460,74882,3604],{"class":1353},[460,74884,904],{"class":466},[460,74886,3976],{"class":887},[460,74888,9376],{"class":466},[460,74890,74891,74894,74896,74898,74900],{"class":462,"line":560},[460,74892,74893],{"class":466},"      num ",[460,74895,894],{"class":887},[460,74897,74435],{"class":466},[460,74899,74063],{"class":929},[460,74901,10758],{"class":466},[460,74903,74904,74906,74908],{"class":462,"line":566},[460,74905,12805],{"class":466},[460,74907,930],{"class":929},[460,74909,16768],{"class":466},[460,74911,74912],{"class":462,"line":572},[460,74913,1679],{"class":466},[460,74915,74916,74918,74920],{"class":462,"line":578},[460,74917,581],{"class":466},[460,74919,225],{"class":470},[460,74921,473],{"class":466},[460,74923,74924,74926,74928],{"class":462,"line":812},[460,74925,1776],{"class":466},[460,74927,1721],{"class":470},[460,74929,473],{"class":466},[460,74931,74932],{"class":462,"line":818},[460,74933,522],{"emptyLinePlaceholder":521},[460,74935,74936,74938,74940],{"class":462,"line":824},[460,74937,1776],{"class":466},[460,74939,704],{"class":470},[460,74941,473],{"class":466},[14,74943,74944],{},"此时报错,对全局重新赋值,肯定不对,出错!!!",[23,74946,74948],{"id":74947},"_324-事件监听版本","3.2.4 事件监听版本",[14,74950,74951],{},[30,74952],{"alt":32,"src":74953},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-110.png",[14,74955,74956],{},"DOM L0和DOM L1都是用的:事件源.on事件=function(){}",[14,74958,74959],{},"这种方式会覆盖前边的事件监听:",[451,74961,74963],{"className":702,"code":74962,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cbutton>点击\u003C\u002Fbutton>\n  \u003Cscript>\n    const btn = document.querySelector('button')\n    btn.onclick = function () {\n      alert(11)\n    }\n    btn.onclick = function () {\n      alert(22)\n    }\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,74964,74965,74975,74989,74993,75001,75015,75035,75047,75055,75059,75067,75079,75087,75105,75118,75129,75133,75145,75155,75159,75167,75175,75179],{"__ignoreMap":32},[460,74966,74967,74969,74971,74973],{"class":462,"line":463},[460,74968,1845],{"class":466},[460,74970,1848],{"class":470},[460,74972,1851],{"class":929},[460,74974,473],{"class":466},[460,74976,74977,74979,74981,74983,74985,74987],{"class":462,"line":476},[460,74978,781],{"class":466},[460,74980,704],{"class":470},[460,74982,1862],{"class":929},[460,74984,894],{"class":466},[460,74986,1867],{"class":1353},[460,74988,473],{"class":466},[460,74990,74991],{"class":462,"line":482},[460,74992,522],{"emptyLinePlaceholder":521},[460,74994,74995,74997,74999],{"class":462,"line":488},[460,74996,781],{"class":466},[460,74998,1880],{"class":470},[460,75000,473],{"class":466},[460,75002,75003,75005,75007,75009,75011,75013],{"class":462,"line":494},[460,75004,467],{"class":466},[460,75006,1889],{"class":470},[460,75008,1892],{"class":929},[460,75010,894],{"class":466},[460,75012,1897],{"class":1353},[460,75014,473],{"class":466},[460,75016,75017,75019,75021,75023,75025,75027,75029,75031,75033],{"class":462,"line":500},[460,75018,467],{"class":466},[460,75020,1889],{"class":470},[460,75022,1908],{"class":929},[460,75024,894],{"class":466},[460,75026,1913],{"class":1353},[460,75028,1916],{"class":929},[460,75030,894],{"class":466},[460,75032,1921],{"class":1353},[460,75034,473],{"class":466},[460,75036,75037,75039,75041,75043,75045],{"class":462,"line":506},[460,75038,467],{"class":466},[460,75040,1930],{"class":470},[460,75042,1933],{"class":466},[460,75044,1930],{"class":470},[460,75046,473],{"class":466},[460,75048,75049,75051,75053],{"class":462,"line":512},[460,75050,1776],{"class":466},[460,75052,1880],{"class":470},[460,75054,473],{"class":466},[460,75056,75057],{"class":462,"line":518},[460,75058,522],{"emptyLinePlaceholder":521},[460,75060,75061,75063,75065],{"class":462,"line":525},[460,75062,781],{"class":466},[460,75064,1721],{"class":470},[460,75066,473],{"class":466},[460,75068,75069,75071,75073,75075,75077],{"class":462,"line":531},[460,75070,467],{"class":466},[460,75072,10501],{"class":470},[460,75074,70139],{"class":466},[460,75076,10501],{"class":470},[460,75078,473],{"class":466},[460,75080,75081,75083,75085],{"class":462,"line":537},[460,75082,467],{"class":466},[460,75084,225],{"class":470},[460,75086,473],{"class":466},[460,75088,75089,75091,75093,75095,75097,75099,75101,75103],{"class":462,"line":543},[460,75090,1340],{"class":887},[460,75092,70637],{"class":900},[460,75094,2943],{"class":887},[460,75096,10599],{"class":466},[460,75098,3541],{"class":929},[460,75100,2174],{"class":466},[460,75102,74405],{"class":1353},[460,75104,3754],{"class":466},[460,75106,75107,75109,75112,75114,75116],{"class":462,"line":549},[460,75108,74412],{"class":466},[460,75110,75111],{"class":929},"onclick",[460,75113,2943],{"class":887},[460,75115,10709],{"class":887},[460,75117,9376],{"class":466},[460,75119,75120,75123,75125,75127],{"class":462,"line":555},[460,75121,75122],{"class":929},"      alert",[460,75124,2174],{"class":466},[460,75126,12812],{"class":900},[460,75128,3754],{"class":466},[460,75130,75131],{"class":462,"line":560},[460,75132,509],{"class":466},[460,75134,75135,75137,75139,75141,75143],{"class":462,"line":566},[460,75136,74412],{"class":466},[460,75138,75111],{"class":929},[460,75140,2943],{"class":887},[460,75142,10709],{"class":887},[460,75144,9376],{"class":466},[460,75146,75147,75149,75151,75153],{"class":462,"line":572},[460,75148,75122],{"class":929},[460,75150,2174],{"class":466},[460,75152,2421],{"class":900},[460,75154,3754],{"class":466},[460,75156,75157],{"class":462,"line":578},[460,75158,509],{"class":466},[460,75160,75161,75163,75165],{"class":462,"line":812},[460,75162,581],{"class":466},[460,75164,225],{"class":470},[460,75166,473],{"class":466},[460,75168,75169,75171,75173],{"class":462,"line":818},[460,75170,1776],{"class":466},[460,75172,1721],{"class":470},[460,75174,473],{"class":466},[460,75176,75177],{"class":462,"line":824},[460,75178,522],{"emptyLinePlaceholder":521},[460,75180,75181,75183,75185],{"class":462,"line":2074},[460,75182,1776],{"class":466},[460,75184,704],{"class":470},[460,75186,473],{"class":466},[14,75188,75189],{},"只要点击就输出结果为22,前边11被覆盖了",[451,75191,75193],{"className":702,"code":75192,"language":704,"meta":32,"style":32},"  btn.addEventListener('click', function () {\n      alert(11)\n    })\n    btn.addEventListener('click', function () {\n      alert(22)\n    })\n",[457,75194,75195,75200,75205,75209,75213,75218],{"__ignoreMap":32},[460,75196,75197],{"class":462,"line":463},[460,75198,75199],{"class":466},"  btn.addEventListener('click', function () {\n",[460,75201,75202],{"class":462,"line":476},[460,75203,75204],{"class":466},"      alert(11)\n",[460,75206,75207],{"class":462,"line":482},[460,75208,1679],{"class":466},[460,75210,75211],{"class":462,"line":488},[460,75212,13592],{"class":466},[460,75214,75215],{"class":462,"line":494},[460,75216,75217],{"class":466},"      alert(22)\n",[460,75219,75220],{"class":462,"line":500},[460,75221,1679],{"class":466},[14,75223,75224],{},"点击第一次输出11,第二次点击为22",[23,75226,75228],{"id":75227},"_325-事件类型","3.2.5 事件类型",[14,75230,75231],{},[30,75232],{"alt":32,"src":75233},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-111.png",[115,75235,75237],{"id":75236},"_3251-鼠标事件","3.2.5.1 鼠标事件",[14,75239,75240],{},"补充知识:",[14,75242,75243],{},"轮播图自动播放模块,可以使用",[14,75245,75246],{},"let timerId = setInterval(function () {",[14,75248,75249],{},"\u002F\u002F 利用js自动调用点击事件 click() 一定加小括号调用函数",[14,75251,75252],{},"用js方法模拟进行点击事件,click必须加()",[14,75254,75255],{},"next.click()",[14,75257,75258],{},"}, 1000)",[14,75260,75261],{},[30,75262],{"alt":32,"src":75263},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-112.png",[451,75265,75267],{"className":453,"code":75266,"language":455,"meta":32,"style":32},"\n\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\" \u002F>\n  \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \u002F>\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\n  \u003Ctitle>轮播图点击切换\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      box-sizing: border-box;\n    }\n\n    .slider {\n      width: 560px;\n      height: 400px;\n      overflow: hidden;\n    }\n\n    .slider-wrapper {\n      width: 100%;\n      height: 320px;\n    }\n\n    .slider-wrapper img {\n      width: 100%;\n      height: 100%;\n      display: block;\n    }\n\n    .slider-footer {\n      height: 80px;\n      background-color: rgb(100, 67, 68);\n      padding: 12px 12px 0 12px;\n      position: relative;\n    }\n\n    .slider-footer .toggle {\n      position: absolute;\n      right: 0;\n      top: 12px;\n      display: flex;\n    }\n\n    .slider-footer .toggle button {\n      margin-right: 12px;\n      width: 28px;\n      height: 28px;\n      appearance: none;\n      border: none;\n      background: rgba(255, 255, 255, 0.1);\n      color: #fff;\n      border-radius: 4px;\n      cursor: pointer;\n    }\n\n    .slider-footer .toggle button:hover {\n      background: rgba(255, 255, 255, 0.2);\n    }\n\n    .slider-footer p {\n      margin: 0;\n      color: #fff;\n      font-size: 18px;\n      margin-bottom: 10px;\n    }\n\n    .slider-indicator {\n      margin: 0;\n      padding: 0;\n      list-style: none;\n      display: flex;\n      align-items: center;\n    }\n\n    .slider-indicator li {\n      width: 8px;\n      height: 8px;\n      margin: 4px;\n      border-radius: 50%;\n      background: #fff;\n      opacity: 0.4;\n      cursor: pointer;\n    }\n\n    .slider-indicator li.active {\n      width: 12px;\n      height: 12px;\n      opacity: 1;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"slider\">\n    \u003Cdiv class=\"slider-wrapper\">\n      \u003Cimg src=\"...\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg\" alt=\"\" \u002F>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"slider-footer\">\n      \u003Cp>对人类来说会不会太超前了？\u003C\u002Fp>\n      \u003Cul class=\"slider-indicator\">\n        \u003Cli class=\"active\">\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n        \u003Cli>\u003C\u002Fli>\n      \u003C\u002Ful>\n      \u003Cdiv class=\"toggle\">\n        \u003Cbutton class=\"prev\">&lt;\u003C\u002Fbutton>\n        \u003Cbutton class=\"next\">&gt;\u003C\u002Fbutton>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    \u002F\u002F 1. 初始数据\n    const data = [\n      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg', title: '对人类来说会不会太超前了？', color: 'rgb(100, 67, 68)' },\n      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider02.jpg', title: '开启剑与雪的黑暗传说！', color: 'rgb(43, 35, 26)' },\n      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider03.jpg', title: '真正的jo厨出现了！', color: 'rgb(36, 31, 33)' },\n      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider04.jpg', title: '李玉刚：让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },\n      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },\n      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },\n      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider07.jpg', title: '一站式解决你的电脑配置问题！！！', color: 'rgb(53, 29, 25)' },\n      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider08.jpg', title: '谁不想和小猫咪贴贴呢！', color: 'rgb(99, 72, 114)' },\n    ]\n    \u002F\u002F 获取元素\n    const img = document.querySelector('.slider-wrapper img')\n    const p = document.querySelector('.slider-footer p')\n    const footer = document.querySelector('.slider-footer')\n    \u002F\u002F 1. 右按钮业务\n    \u002F\u002F 1.1 获取右侧按钮 \n    const next = document.querySelector('.next')\n    let i = 0  \u002F\u002F 信号量 控制播放图片张数\n    \u002F\u002F 1.2 注册点击事件\n\n    next.addEventListener('click', function () {\n      \u002F\u002F console.log(11)\n      i++\n      \u002F\u002F 1.6判断条件  如果大于8 就复原为 0\n      \u002F\u002F if (i >= 8) {\n      \u002F\u002F   i = 0\n      \u002F\u002F }\n      i = i >= data.length ? 0 : i\n      \u002F\u002F 1.3 得到对应的对象\n      \u002F\u002F console.log(data[i])\n      \u002F\u002F 调用函数\n      toggle()\n    })\n\n    \u002F\u002F 2. 左侧按钮业务\n    \u002F\u002F 2.1 获取左侧按钮 \n    const prev = document.querySelector('.prev')\n    \u002F\u002F 1.2 注册点击事件\n    prev.addEventListener('click', function () {\n      i--\n      \u002F\u002F 判断条件  如果小于0  则爬到最后一张图片索引号是 7\n      \u002F\u002F if (i \u003C 0) {\n      \u002F\u002F   i = 7\n      \u002F\u002F }\n      i = i \u003C 0 ? data.length - 1 : i\n      \u002F\u002F 1.3 得到对应的对象\n      \u002F\u002F console.log(data[i])\n      \u002F\u002F 调用函数\n      toggle()\n    })\n\n    \u002F\u002F 声明一个渲染的函数作为复用\n    function toggle() {\n      \u002F\u002F 1.4 渲染对应的数据\n      img.src = data[i].url\n      p.innerHTML = data[i].title\n      footer.style.backgroundColor = data[i].color\n      \u002F\u002F 1.5 更换小圆点    先移除原来的类名， 当前li再添加 这个 类名\n      document.querySelector('.slider-indicator .active').classList.remove('active')\n      document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')\n    }\n\n    \u002F\u002F 3. 自动播放模块\n    let timerId = setInterval(function () {\n      \u002F\u002F 利用js自动调用点击事件  click()  一定加小括号调用函数\n      next.click()\n    }, 1000)\n\n    \u002F\u002F 4. 鼠标经过大盒子，停止定时器\n    const slider = document.querySelector('.slider')\n    \u002F\u002F 注册事件\n    slider.addEventListener('mouseenter', function () {\n      \u002F\u002F 停止定时器\n      clearInterval(timerId)\n    })\n\n    \u002F\u002F 5. 鼠标离开大盒子，开启定时器\n    \u002F\u002F 注册事件\n    slider.addEventListener('mouseleave', function () {\n      \u002F\u002F 停止定时器\n      if (timerId) clearInterval(timerId)\n      \u002F\u002F 开启定时器\n      timerId = setInterval(function () {\n        \u002F\u002F 利用js自动调用点击事件  click()  一定加小括号调用函数\n        next.click()\n      }, 1000)\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,75268,75269,75273,75283,75297,75301,75309,75323,75343,75363,75376,75384,75389,75394,75398,75402,75407,75412,75417,75422,75426,75430,75435,75440,75445,75449,75453,75458,75462,75467,75472,75476,75480,75485,75490,75495,75500,75505,75509,75513,75518,75523,75528,75533,75538,75542,75546,75551,75556,75561,75566,75571,75576,75581,75586,75591,75596,75600,75604,75609,75614,75618,75622,75627,75632,75636,75641,75646,75650,75654,75659,75663,75668,75673,75677,75682,75686,75690,75695,75700,75705,75710,75715,75720,75725,75729,75733,75737,75742,75747,75752,75757,75761,75769,75777,75781,75789,75804,75818,75839,75847,75861,75874,75889,75908,75920,75932,75944,75956,75968,75980,75992,76000,76015,76039,76063,76071,76079,76087,76095,76100,76105,76110,76115,76120,76125,76130,76135,76140,76145,76149,76154,76159,76164,76169,76174,76179,76184,76189,76194,76198,76203,76207,76212,76217,76222,76227,76231,76236,76241,76246,76251,76256,76260,76264,76269,76274,76279,76283,76288,76293,76298,76303,76308,76312,76317,76321,76325,76329,76333,76337,76341,76346,76351,76356,76361,76366,76371,76376,76381,76386,76390,76394,76399,76404,76409,76414,76418,76422,76427,76432,76437,76442,76447,76452,76456,76460,76465,76469,76474,76478,76483,76488,76493,76498,76503,76508,76512,76520,76528,76532],{"__ignoreMap":32},[460,75270,75271],{"class":462,"line":463},[460,75272,522],{"emptyLinePlaceholder":521},[460,75274,75275,75277,75279,75281],{"class":462,"line":476},[460,75276,1845],{"class":466},[460,75278,1848],{"class":887},[460,75280,1851],{"class":900},[460,75282,473],{"class":466},[460,75284,75285,75287,75289,75291,75293,75295],{"class":462,"line":482},[460,75286,781],{"class":466},[460,75288,704],{"class":470},[460,75290,1862],{"class":929},[460,75292,894],{"class":466},[460,75294,1867],{"class":1353},[460,75296,473],{"class":466},[460,75298,75299],{"class":462,"line":488},[460,75300,522],{"emptyLinePlaceholder":521},[460,75302,75303,75305,75307],{"class":462,"line":494},[460,75304,781],{"class":466},[460,75306,1880],{"class":470},[460,75308,473],{"class":466},[460,75310,75311,75313,75315,75317,75319,75321],{"class":462,"line":500},[460,75312,467],{"class":466},[460,75314,1889],{"class":470},[460,75316,1892],{"class":929},[460,75318,894],{"class":466},[460,75320,1897],{"class":1353},[460,75322,15726],{"class":466},[460,75324,75325,75327,75329,75331,75333,75335,75337,75339,75341],{"class":462,"line":506},[460,75326,467],{"class":466},[460,75328,1889],{"class":470},[460,75330,15735],{"class":929},[460,75332,894],{"class":466},[460,75334,15740],{"class":1353},[460,75336,1916],{"class":929},[460,75338,894],{"class":466},[460,75340,15747],{"class":1353},[460,75342,15726],{"class":466},[460,75344,75345,75347,75349,75351,75353,75355,75357,75359,75361],{"class":462,"line":512},[460,75346,467],{"class":466},[460,75348,1889],{"class":470},[460,75350,1908],{"class":929},[460,75352,894],{"class":466},[460,75354,1913],{"class":1353},[460,75356,1916],{"class":929},[460,75358,894],{"class":466},[460,75360,1921],{"class":1353},[460,75362,15726],{"class":466},[460,75364,75365,75367,75369,75372,75374],{"class":462,"line":518},[460,75366,467],{"class":466},[460,75368,1930],{"class":470},[460,75370,75371],{"class":466},">轮播图点击切换\u003C\u002F",[460,75373,1930],{"class":470},[460,75375,473],{"class":466},[460,75377,75378,75380,75382],{"class":462,"line":525},[460,75379,467],{"class":466},[460,75381,1944],{"class":470},[460,75383,473],{"class":466},[460,75385,75386],{"class":462,"line":531},[460,75387,75388],{"class":466},"    * {\n",[460,75390,75391],{"class":462,"line":537},[460,75392,75393],{"class":466},"      box-sizing: border-box;\n",[460,75395,75396],{"class":462,"line":543},[460,75397,509],{"class":466},[460,75399,75400],{"class":462,"line":549},[460,75401,522],{"emptyLinePlaceholder":521},[460,75403,75404],{"class":462,"line":555},[460,75405,75406],{"class":466},"    .slider {\n",[460,75408,75409],{"class":462,"line":560},[460,75410,75411],{"class":466},"      width: 560px;\n",[460,75413,75414],{"class":462,"line":566},[460,75415,75416],{"class":466},"      height: 400px;\n",[460,75418,75419],{"class":462,"line":572},[460,75420,75421],{"class":466},"      overflow: hidden;\n",[460,75423,75424],{"class":462,"line":578},[460,75425,509],{"class":466},[460,75427,75428],{"class":462,"line":812},[460,75429,522],{"emptyLinePlaceholder":521},[460,75431,75432],{"class":462,"line":818},[460,75433,75434],{"class":466},"    .slider-wrapper {\n",[460,75436,75437],{"class":462,"line":824},[460,75438,75439],{"class":466},"      width: 100%;\n",[460,75441,75442],{"class":462,"line":2074},[460,75443,75444],{"class":466},"      height: 320px;\n",[460,75446,75447],{"class":462,"line":2088},[460,75448,509],{"class":466},[460,75450,75451],{"class":462,"line":2103},[460,75452,522],{"emptyLinePlaceholder":521},[460,75454,75455],{"class":462,"line":2122},[460,75456,75457],{"class":466},"    .slider-wrapper img {\n",[460,75459,75460],{"class":462,"line":2144},[460,75461,75439],{"class":466},[460,75463,75464],{"class":462,"line":2158},[460,75465,75466],{"class":466},"      height: 100%;\n",[460,75468,75469],{"class":462,"line":2163},[460,75470,75471],{"class":466},"      display: block;\n",[460,75473,75474],{"class":462,"line":2168},[460,75475,509],{"class":466},[460,75477,75478],{"class":462,"line":2183},[460,75479,522],{"emptyLinePlaceholder":521},[460,75481,75482],{"class":462,"line":2194},[460,75483,75484],{"class":466},"    .slider-footer {\n",[460,75486,75487],{"class":462,"line":2199},[460,75488,75489],{"class":466},"      height: 80px;\n",[460,75491,75492],{"class":462,"line":2204},[460,75493,75494],{"class":466},"      background-color: rgb(100, 67, 68);\n",[460,75496,75497],{"class":462,"line":2212},[460,75498,75499],{"class":466},"      padding: 12px 12px 0 12px;\n",[460,75501,75502],{"class":462,"line":2257},[460,75503,75504],{"class":466},"      position: relative;\n",[460,75506,75507],{"class":462,"line":2285},[460,75508,509],{"class":466},[460,75510,75511],{"class":462,"line":2298},[460,75512,522],{"emptyLinePlaceholder":521},[460,75514,75515],{"class":462,"line":2303},[460,75516,75517],{"class":466},"    .slider-footer .toggle {\n",[460,75519,75520],{"class":462,"line":2308},[460,75521,75522],{"class":466},"      position: absolute;\n",[460,75524,75525],{"class":462,"line":2318},[460,75526,75527],{"class":466},"      right: 0;\n",[460,75529,75530],{"class":462,"line":2333},[460,75531,75532],{"class":466},"      top: 12px;\n",[460,75534,75535],{"class":462,"line":2338},[460,75536,75537],{"class":466},"      display: flex;\n",[460,75539,75540],{"class":462,"line":2343},[460,75541,509],{"class":466},[460,75543,75544],{"class":462,"line":2353},[460,75545,522],{"emptyLinePlaceholder":521},[460,75547,75548],{"class":462,"line":2368},[460,75549,75550],{"class":466},"    .slider-footer .toggle button {\n",[460,75552,75553],{"class":462,"line":2381},[460,75554,75555],{"class":466},"      margin-right: 12px;\n",[460,75557,75558],{"class":462,"line":2394},[460,75559,75560],{"class":466},"      width: 28px;\n",[460,75562,75563],{"class":462,"line":2399},[460,75564,75565],{"class":466},"      height: 28px;\n",[460,75567,75568],{"class":462,"line":2404},[460,75569,75570],{"class":466},"      appearance: none;\n",[460,75572,75573],{"class":462,"line":2414},[460,75574,75575],{"class":466},"      border: none;\n",[460,75577,75578],{"class":462,"line":2428},[460,75579,75580],{"class":466},"      background: rgba(255, 255, 255, 0.1);\n",[460,75582,75583],{"class":462,"line":2440},[460,75584,75585],{"class":466},"      color: #fff;\n",[460,75587,75588],{"class":462,"line":2445},[460,75589,75590],{"class":466},"      border-radius: 4px;\n",[460,75592,75593],{"class":462,"line":2450},[460,75594,75595],{"class":466},"      cursor: pointer;\n",[460,75597,75598],{"class":462,"line":2460},[460,75599,509],{"class":466},[460,75601,75602],{"class":462,"line":2473},[460,75603,522],{"emptyLinePlaceholder":521},[460,75605,75606],{"class":462,"line":2487},[460,75607,75608],{"class":466},"    .slider-footer .toggle button:hover {\n",[460,75610,75611],{"class":462,"line":2492},[460,75612,75613],{"class":466},"      background: rgba(255, 255, 255, 0.2);\n",[460,75615,75616],{"class":462,"line":2497},[460,75617,509],{"class":466},[460,75619,75620],{"class":462,"line":2505},[460,75621,522],{"emptyLinePlaceholder":521},[460,75623,75624],{"class":462,"line":2516},[460,75625,75626],{"class":466},"    .slider-footer p {\n",[460,75628,75629],{"class":462,"line":2529},[460,75630,75631],{"class":466},"      margin: 0;\n",[460,75633,75634],{"class":462,"line":2542},[460,75635,75585],{"class":466},[460,75637,75638],{"class":462,"line":2559},[460,75639,75640],{"class":466},"      font-size: 18px;\n",[460,75642,75643],{"class":462,"line":2564},[460,75644,75645],{"class":466},"      margin-bottom: 10px;\n",[460,75647,75648],{"class":462,"line":2569},[460,75649,509],{"class":466},[460,75651,75652],{"class":462,"line":2579},[460,75653,522],{"emptyLinePlaceholder":521},[460,75655,75656],{"class":462,"line":2597},[460,75657,75658],{"class":466},"    .slider-indicator {\n",[460,75660,75661],{"class":462,"line":2610},[460,75662,75631],{"class":466},[460,75664,75665],{"class":462,"line":2621},[460,75666,75667],{"class":466},"      padding: 0;\n",[460,75669,75670],{"class":462,"line":2634},[460,75671,75672],{"class":466},"      list-style: none;\n",[460,75674,75675],{"class":462,"line":2648},[460,75676,75537],{"class":466},[460,75678,75679],{"class":462,"line":2653},[460,75680,75681],{"class":466},"      align-items: center;\n",[460,75683,75684],{"class":462,"line":2658},[460,75685,509],{"class":466},[460,75687,75688],{"class":462,"line":2670},[460,75689,522],{"emptyLinePlaceholder":521},[460,75691,75692],{"class":462,"line":2683},[460,75693,75694],{"class":466},"    .slider-indicator li {\n",[460,75696,75697],{"class":462,"line":2695},[460,75698,75699],{"class":466},"      width: 8px;\n",[460,75701,75702],{"class":462,"line":2700},[460,75703,75704],{"class":466},"      height: 8px;\n",[460,75706,75707],{"class":462,"line":2709},[460,75708,75709],{"class":466},"      margin: 4px;\n",[460,75711,75712],{"class":462,"line":2718},[460,75713,75714],{"class":466},"      border-radius: 50%;\n",[460,75716,75717],{"class":462,"line":2723},[460,75718,75719],{"class":466},"      background: #fff;\n",[460,75721,75722],{"class":462,"line":2732},[460,75723,75724],{"class":466},"      opacity: 0.4;\n",[460,75726,75727],{"class":462,"line":2750},[460,75728,75595],{"class":466},[460,75730,75731],{"class":462,"line":2782},[460,75732,509],{"class":466},[460,75734,75735],{"class":462,"line":2809},[460,75736,522],{"emptyLinePlaceholder":521},[460,75738,75739],{"class":462,"line":2836},[460,75740,75741],{"class":466},"    .slider-indicator li.active {\n",[460,75743,75744],{"class":462,"line":2856},[460,75745,75746],{"class":466},"      width: 12px;\n",[460,75748,75749],{"class":462,"line":2865},[460,75750,75751],{"class":466},"      height: 12px;\n",[460,75753,75754],{"class":462,"line":2881},[460,75755,75756],{"class":466},"      opacity: 1;\n",[460,75758,75759],{"class":462,"line":2887},[460,75760,509],{"class":466},[460,75762,75763,75765,75767],{"class":462,"line":2893},[460,75764,581],{"class":466},[460,75766,1944],{"class":470},[460,75768,473],{"class":466},[460,75770,75771,75773,75775],{"class":462,"line":2899},[460,75772,1776],{"class":466},[460,75774,1880],{"class":470},[460,75776,473],{"class":466},[460,75778,75779],{"class":462,"line":2905},[460,75780,522],{"emptyLinePlaceholder":521},[460,75782,75783,75785,75787],{"class":462,"line":2911},[460,75784,781],{"class":466},[460,75786,1721],{"class":470},[460,75788,473],{"class":466},[460,75790,75791,75793,75795,75797,75799,75802],{"class":462,"line":2920},[460,75792,467],{"class":466},[460,75794,2737],{"class":470},[460,75796,2740],{"class":929},[460,75798,894],{"class":466},[460,75800,75801],{"class":1353},"\"slider\"",[460,75803,473],{"class":466},[460,75805,75806,75808,75810,75812,75814,75816],{"class":462,"line":2929},[460,75807,2753],{"class":466},[460,75809,2737],{"class":470},[460,75811,2740],{"class":929},[460,75813,894],{"class":466},[460,75815,71449],{"class":1353},[460,75817,473],{"class":466},[460,75819,75820,75822,75824,75826,75828,75831,75833,75835,75837],{"class":462,"line":2935},[460,75821,16196],{"class":466},[460,75823,30],{"class":470},[460,75825,12081],{"class":929},[460,75827,894],{"class":466},[460,75829,75830],{"class":1353},"\"...\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg\"",[460,75832,16224],{"class":929},[460,75834,894],{"class":466},[460,75836,6606],{"class":1353},[460,75838,15726],{"class":466},[460,75840,75841,75843,75845],{"class":462,"line":2948},[460,75842,16244],{"class":466},[460,75844,2737],{"class":470},[460,75846,473],{"class":466},[460,75848,75849,75851,75853,75855,75857,75859],{"class":462,"line":2954},[460,75850,2753],{"class":466},[460,75852,2737],{"class":470},[460,75854,2740],{"class":929},[460,75856,894],{"class":466},[460,75858,71493],{"class":1353},[460,75860,473],{"class":466},[460,75862,75863,75865,75867,75870,75872],{"class":462,"line":2965},[460,75864,16196],{"class":466},[460,75866,14],{"class":470},[460,75868,75869],{"class":466},">对人类来说会不会太超前了？\u003C\u002F",[460,75871,14],{"class":470},[460,75873,473],{"class":466},[460,75875,75876,75878,75880,75882,75884,75887],{"class":462,"line":2976},[460,75877,16196],{"class":466},[460,75879,40],{"class":470},[460,75881,2740],{"class":929},[460,75883,894],{"class":466},[460,75885,75886],{"class":1353},"\"slider-indicator\"",[460,75888,473],{"class":466},[460,75890,75891,75893,75895,75897,75899,75902,75904,75906],{"class":462,"line":2987},[460,75892,16212],{"class":466},[460,75894,43],{"class":470},[460,75896,2740],{"class":929},[460,75898,894],{"class":466},[460,75900,75901],{"class":1353},"\"active\"",[460,75903,5599],{"class":466},[460,75905,43],{"class":470},[460,75907,473],{"class":466},[460,75909,75910,75912,75914,75916,75918],{"class":462,"line":2998},[460,75911,16212],{"class":466},[460,75913,43],{"class":470},[460,75915,5599],{"class":466},[460,75917,43],{"class":470},[460,75919,473],{"class":466},[460,75921,75922,75924,75926,75928,75930],{"class":462,"line":3003},[460,75923,16212],{"class":466},[460,75925,43],{"class":470},[460,75927,5599],{"class":466},[460,75929,43],{"class":470},[460,75931,473],{"class":466},[460,75933,75934,75936,75938,75940,75942],{"class":462,"line":3008},[460,75935,16212],{"class":466},[460,75937,43],{"class":470},[460,75939,5599],{"class":466},[460,75941,43],{"class":470},[460,75943,473],{"class":466},[460,75945,75946,75948,75950,75952,75954],{"class":462,"line":3018},[460,75947,16212],{"class":466},[460,75949,43],{"class":470},[460,75951,5599],{"class":466},[460,75953,43],{"class":470},[460,75955,473],{"class":466},[460,75957,75958,75960,75962,75964,75966],{"class":462,"line":3028},[460,75959,16212],{"class":466},[460,75961,43],{"class":470},[460,75963,5599],{"class":466},[460,75965,43],{"class":470},[460,75967,473],{"class":466},[460,75969,75970,75972,75974,75976,75978],{"class":462,"line":3038},[460,75971,16212],{"class":466},[460,75973,43],{"class":470},[460,75975,5599],{"class":466},[460,75977,43],{"class":470},[460,75979,473],{"class":466},[460,75981,75982,75984,75986,75988,75990],{"class":462,"line":3048},[460,75983,16212],{"class":466},[460,75985,43],{"class":470},[460,75987,5599],{"class":466},[460,75989,43],{"class":470},[460,75991,473],{"class":466},[460,75993,75994,75996,75998],{"class":462,"line":3053},[460,75995,16235],{"class":466},[460,75997,40],{"class":470},[460,75999,473],{"class":466},[460,76001,76002,76004,76006,76008,76010,76013],{"class":462,"line":3058},[460,76003,16196],{"class":466},[460,76005,2737],{"class":470},[460,76007,2740],{"class":929},[460,76009,894],{"class":466},[460,76011,76012],{"class":1353},"\"toggle\"",[460,76014,473],{"class":466},[460,76016,76017,76019,76021,76023,76025,76028,76030,76033,76035,76037],{"class":462,"line":3068},[460,76018,16212],{"class":466},[460,76020,10501],{"class":470},[460,76022,2740],{"class":929},[460,76024,894],{"class":466},[460,76026,76027],{"class":1353},"\"prev\"",[460,76029,17668],{"class":466},[460,76031,76032],{"class":900},"&lt;",[460,76034,1776],{"class":466},[460,76036,10501],{"class":470},[460,76038,473],{"class":466},[460,76040,76041,76043,76045,76047,76049,76052,76054,76057,76059,76061],{"class":462,"line":3078},[460,76042,16212],{"class":466},[460,76044,10501],{"class":470},[460,76046,2740],{"class":929},[460,76048,894],{"class":466},[460,76050,76051],{"class":1353},"\"next\"",[460,76053,17668],{"class":466},[460,76055,76056],{"class":900},"&gt;",[460,76058,1776],{"class":466},[460,76060,10501],{"class":470},[460,76062,473],{"class":466},[460,76064,76065,76067,76069],{"class":462,"line":3088},[460,76066,16235],{"class":466},[460,76068,2737],{"class":470},[460,76070,473],{"class":466},[460,76072,76073,76075,76077],{"class":462,"line":3098},[460,76074,16244],{"class":466},[460,76076,2737],{"class":470},[460,76078,473],{"class":466},[460,76080,76081,76083,76085],{"class":462,"line":3103},[460,76082,581],{"class":466},[460,76084,2737],{"class":470},[460,76086,473],{"class":466},[460,76088,76089,76091,76093],{"class":462,"line":3108},[460,76090,467],{"class":466},[460,76092,225],{"class":470},[460,76094,473],{"class":466},[460,76096,76097],{"class":462,"line":3118},[460,76098,76099],{"class":466},"    \u002F\u002F 1. 初始数据\n",[460,76101,76102],{"class":462,"line":3128},[460,76103,76104],{"class":466},"    const data = [\n",[460,76106,76107],{"class":462,"line":3138},[460,76108,76109],{"class":466},"      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider01.jpg', title: '对人类来说会不会太超前了？', color: 'rgb(100, 67, 68)' },\n",[460,76111,76112],{"class":462,"line":3148},[460,76113,76114],{"class":466},"      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider02.jpg', title: '开启剑与雪的黑暗传说！', color: 'rgb(43, 35, 26)' },\n",[460,76116,76117],{"class":462,"line":3153},[460,76118,76119],{"class":466},"      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider03.jpg', title: '真正的jo厨出现了！', color: 'rgb(36, 31, 33)' },\n",[460,76121,76122],{"class":462,"line":3158},[460,76123,76124],{"class":466},"      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider04.jpg', title: '李玉刚：让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },\n",[460,76126,76127],{"class":462,"line":3168},[460,76128,76129],{"class":466},"      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },\n",[460,76131,76132],{"class":462,"line":3178},[460,76133,76134],{"class":466},"      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },\n",[460,76136,76137],{"class":462,"line":3188},[460,76138,76139],{"class":466},"      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider07.jpg', title: '一站式解决你的电脑配置问题！！！', color: 'rgb(53, 29, 25)' },\n",[460,76141,76142],{"class":462,"line":3198},[460,76143,76144],{"class":466},"      { url: '...\u002F..\u002Fpublic\u002Fimages\u002Fslider08.jpg', title: '谁不想和小猫咪贴贴呢！', color: 'rgb(99, 72, 114)' },\n",[460,76146,76147],{"class":462,"line":3203},[460,76148,3355],{"class":466},[460,76150,76151],{"class":462,"line":3208},[460,76152,76153],{"class":466},"    \u002F\u002F 获取元素\n",[460,76155,76156],{"class":462,"line":3218},[460,76157,76158],{"class":466},"    const img = document.querySelector('.slider-wrapper img')\n",[460,76160,76161],{"class":462,"line":3228},[460,76162,76163],{"class":466},"    const p = document.querySelector('.slider-footer p')\n",[460,76165,76166],{"class":462,"line":3238},[460,76167,76168],{"class":466},"    const footer = document.querySelector('.slider-footer')\n",[460,76170,76171],{"class":462,"line":3248},[460,76172,76173],{"class":466},"    \u002F\u002F 1. 右按钮业务\n",[460,76175,76176],{"class":462,"line":3253},[460,76177,76178],{"class":466},"    \u002F\u002F 1.1 获取右侧按钮 \n",[460,76180,76181],{"class":462,"line":3258},[460,76182,76183],{"class":466},"    const next = document.querySelector('.next')\n",[460,76185,76186],{"class":462,"line":3268},[460,76187,76188],{"class":466},"    let i = 0  \u002F\u002F 信号量 控制播放图片张数\n",[460,76190,76191],{"class":462,"line":3278},[460,76192,76193],{"class":466},"    \u002F\u002F 1.2 注册点击事件\n",[460,76195,76196],{"class":462,"line":3288},[460,76197,522],{"emptyLinePlaceholder":521},[460,76199,76200],{"class":462,"line":3298},[460,76201,76202],{"class":466},"    next.addEventListener('click', function () {\n",[460,76204,76205],{"class":462,"line":3303},[460,76206,16553],{"class":466},[460,76208,76209],{"class":462,"line":3308},[460,76210,76211],{"class":466},"      i++\n",[460,76213,76214],{"class":462,"line":3318},[460,76215,76216],{"class":466},"      \u002F\u002F 1.6判断条件  如果大于8 就复原为 0\n",[460,76218,76219],{"class":462,"line":3328},[460,76220,76221],{"class":466},"      \u002F\u002F if (i >= 8) {\n",[460,76223,76224],{"class":462,"line":3337},[460,76225,76226],{"class":466},"      \u002F\u002F   i = 0\n",[460,76228,76229],{"class":462,"line":3347},[460,76230,8740],{"class":466},[460,76232,76233],{"class":462,"line":3352},[460,76234,76235],{"class":466},"      i = i >= data.length ? 0 : i\n",[460,76237,76238],{"class":462,"line":3358},[460,76239,76240],{"class":466},"      \u002F\u002F 1.3 得到对应的对象\n",[460,76242,76243],{"class":462,"line":3363},[460,76244,76245],{"class":466},"      \u002F\u002F console.log(data[i])\n",[460,76247,76248],{"class":462,"line":3369},[460,76249,76250],{"class":466},"      \u002F\u002F 调用函数\n",[460,76252,76253],{"class":462,"line":3386},[460,76254,76255],{"class":466},"      toggle()\n",[460,76257,76258],{"class":462,"line":3392},[460,76259,1679],{"class":466},[460,76261,76262],{"class":462,"line":3406},[460,76263,522],{"emptyLinePlaceholder":521},[460,76265,76266],{"class":462,"line":3412},[460,76267,76268],{"class":466},"    \u002F\u002F 2. 左侧按钮业务\n",[460,76270,76271],{"class":462,"line":3431},[460,76272,76273],{"class":466},"    \u002F\u002F 2.1 获取左侧按钮 \n",[460,76275,76276],{"class":462,"line":3461},[460,76277,76278],{"class":466},"    const prev = document.querySelector('.prev')\n",[460,76280,76281],{"class":462,"line":3473},[460,76282,76193],{"class":466},[460,76284,76285],{"class":462,"line":3479},[460,76286,76287],{"class":466},"    prev.addEventListener('click', function () {\n",[460,76289,76290],{"class":462,"line":3490},[460,76291,76292],{"class":466},"      i--\n",[460,76294,76295],{"class":462,"line":3501},[460,76296,76297],{"class":466},"      \u002F\u002F 判断条件  如果小于0  则爬到最后一张图片索引号是 7\n",[460,76299,76300],{"class":462,"line":3511},[460,76301,76302],{"class":466},"      \u002F\u002F if (i \u003C 0) {\n",[460,76304,76305],{"class":462,"line":3517},[460,76306,76307],{"class":466},"      \u002F\u002F   i = 7\n",[460,76309,76310],{"class":462,"line":3523},[460,76311,8740],{"class":466},[460,76313,76314],{"class":462,"line":3529},[460,76315,76316],{"class":466},"      i = i \u003C 0 ? data.length - 1 : i\n",[460,76318,76319],{"class":462,"line":3535},[460,76320,76240],{"class":466},[460,76322,76323],{"class":462,"line":3557},[460,76324,76245],{"class":466},[460,76326,76327],{"class":462,"line":3562},[460,76328,76250],{"class":466},[460,76330,76331],{"class":462,"line":3568},[460,76332,76255],{"class":466},[460,76334,76335],{"class":462,"line":3577},[460,76336,1679],{"class":466},[460,76338,76339],{"class":462,"line":3583},[460,76340,522],{"emptyLinePlaceholder":521},[460,76342,76343],{"class":462,"line":3616},[460,76344,76345],{"class":466},"    \u002F\u002F 声明一个渲染的函数作为复用\n",[460,76347,76348],{"class":462,"line":3622},[460,76349,76350],{"class":466},"    function toggle() {\n",[460,76352,76353],{"class":462,"line":3645},[460,76354,76355],{"class":466},"      \u002F\u002F 1.4 渲染对应的数据\n",[460,76357,76358],{"class":462,"line":3651},[460,76359,76360],{"class":466},"      img.src = data[i].url\n",[460,76362,76363],{"class":462,"line":3668},[460,76364,76365],{"class":466},"      p.innerHTML = data[i].title\n",[460,76367,76368],{"class":462,"line":3674},[460,76369,76370],{"class":466},"      footer.style.backgroundColor = data[i].color\n",[460,76372,76373],{"class":462,"line":3680},[460,76374,76375],{"class":466},"      \u002F\u002F 1.5 更换小圆点    先移除原来的类名， 当前li再添加 这个 类名\n",[460,76377,76378],{"class":462,"line":3686},[460,76379,76380],{"class":466},"      document.querySelector('.slider-indicator .active').classList.remove('active')\n",[460,76382,76383],{"class":462,"line":3699},[460,76384,76385],{"class":466},"      document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')\n",[460,76387,76388],{"class":462,"line":3715},[460,76389,509],{"class":466},[460,76391,76392],{"class":462,"line":3757},[460,76393,522],{"emptyLinePlaceholder":521},[460,76395,76396],{"class":462,"line":3778},[460,76397,76398],{"class":466},"    \u002F\u002F 3. 自动播放模块\n",[460,76400,76401],{"class":462,"line":3812},[460,76402,76403],{"class":466},"    let timerId = setInterval(function () {\n",[460,76405,76406],{"class":462,"line":3830},[460,76407,76408],{"class":466},"      \u002F\u002F 利用js自动调用点击事件  click()  一定加小括号调用函数\n",[460,76410,76411],{"class":462,"line":3855},[460,76412,76413],{"class":466},"      next.click()\n",[460,76415,76416],{"class":462,"line":3861},[460,76417,15628],{"class":466},[460,76419,76420],{"class":462,"line":3867},[460,76421,522],{"emptyLinePlaceholder":521},[460,76423,76424],{"class":462,"line":3876},[460,76425,76426],{"class":466},"    \u002F\u002F 4. 鼠标经过大盒子，停止定时器\n",[460,76428,76429],{"class":462,"line":3881},[460,76430,76431],{"class":466},"    const slider = document.querySelector('.slider')\n",[460,76433,76434],{"class":462,"line":3886},[460,76435,76436],{"class":466},"    \u002F\u002F 注册事件\n",[460,76438,76439],{"class":462,"line":3891},[460,76440,76441],{"class":466},"    slider.addEventListener('mouseenter', function () {\n",[460,76443,76444],{"class":462,"line":3900},[460,76445,76446],{"class":466},"      \u002F\u002F 停止定时器\n",[460,76448,76449],{"class":462,"line":3909},[460,76450,76451],{"class":466},"      clearInterval(timerId)\n",[460,76453,76454],{"class":462,"line":3914},[460,76455,1679],{"class":466},[460,76457,76458],{"class":462,"line":49896},[460,76459,522],{"emptyLinePlaceholder":521},[460,76461,76462],{"class":462,"line":49923},[460,76463,76464],{"class":466},"    \u002F\u002F 5. 鼠标离开大盒子，开启定时器\n",[460,76466,76467],{"class":462,"line":49947},[460,76468,76436],{"class":466},[460,76470,76471],{"class":462,"line":49953},[460,76472,76473],{"class":466},"    slider.addEventListener('mouseleave', function () {\n",[460,76475,76476],{"class":462,"line":49959},[460,76477,76446],{"class":466},[460,76479,76480],{"class":462,"line":49965},[460,76481,76482],{"class":466},"      if (timerId) clearInterval(timerId)\n",[460,76484,76485],{"class":462,"line":49976},[460,76486,76487],{"class":466},"      \u002F\u002F 开启定时器\n",[460,76489,76490],{"class":462,"line":49987},[460,76491,76492],{"class":466},"      timerId = setInterval(function () {\n",[460,76494,76495],{"class":462,"line":49993},[460,76496,76497],{"class":466},"        \u002F\u002F 利用js自动调用点击事件  click()  一定加小括号调用函数\n",[460,76499,76500],{"class":462,"line":50010},[460,76501,76502],{"class":466},"        next.click()\n",[460,76504,76505],{"class":462,"line":50033},[460,76506,76507],{"class":466},"      }, 1000)\n",[460,76509,76510],{"class":462,"line":50056},[460,76511,1679],{"class":466},[460,76513,76514,76516,76518],{"class":462,"line":50062},[460,76515,581],{"class":466},[460,76517,225],{"class":470},[460,76519,473],{"class":466},[460,76521,76522,76524,76526],{"class":462,"line":50067},[460,76523,1776],{"class":466},[460,76525,1721],{"class":470},[460,76527,473],{"class":466},[460,76529,76530],{"class":462,"line":50076},[460,76531,522],{"emptyLinePlaceholder":521},[460,76533,76534,76536,76538],{"class":462,"line":50086},[460,76535,1776],{"class":466},[460,76537,704],{"class":470},[460,76539,473],{"class":466},[115,76541,76543],{"id":76542},"_3252-焦点事件","3.2.5.2 焦点事件",[14,76545,76546],{},"小米搜索框案例：",[451,76548,76550],{"className":702,"code":76549,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n    \u003Cmeta charset=\"UTF-8\">\n    \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    \u003Ctitle>Document\u003C\u002Ftitle>\n    \u003Cstyle>\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        ul {\n\n            list-style: none;\n        }\n\n        .mi {\n            position: relative;\n            width: 223px;\n            margin: 100px auto;\n        }\n\n        .mi input {\n            width: 223px;\n            height: 48px;\n            padding: 0 10px;\n            font-size: 14px;\n            line-height: 48px;\n            border: 1px solid #e0e0e0;\n            outline: none;\n        }\n\n        .mi .search {\n            border: 1px solid #ff6700;\n        }\n\n        .result-list {\n            display: none;\n            position: absolute;\n            left: 0;\n            top: 48px;\n            width: 223px;\n            border: 1px solid #ff6700;\n            border-top: 0;\n            background: #fff;\n        }\n\n        .result-list a {\n            display: block;\n            padding: 6px 15px;\n            font-size: 12px;\n            color: #424242;\n            text-decoration: none;\n        }\n\n        .result-list a:hover {\n            background-color: #eee;\n        }\n    \u003C\u002Fstyle>\n\n\u003C\u002Fhead>\n\n\u003Cbody>\n    \u003Cdiv class=\"mi\">\n        \u003Cinput type=\"search\" placeholder=\"小米笔记本\">\n        \u003Cul class=\"result-list\">\n            \u003Cli>\u003Ca href=\"#\">全部商品\u003C\u002Fa>\u003C\u002Fli>\n            \u003Cli>\u003Ca href=\"#\">小米11\u003C\u002Fa>\u003C\u002Fli>\n            \u003Cli>\u003Ca href=\"#\">小米10S\u003C\u002Fa>\u003C\u002Fli>\n            \u003Cli>\u003Ca href=\"#\">小米笔记本\u003C\u002Fa>\u003C\u002Fli>\n            \u003Cli>\u003Ca href=\"#\">小米手机\u003C\u002Fa>\u003C\u002Fli>\n            \u003Cli>\u003Ca href=\"#\">黑鲨4\u003C\u002Fa>\u003C\u002Fli>\n            \u003Cli>\u003Ca href=\"#\">空调\u003C\u002Fa>\u003C\u002Fli>\n        \u003C\u002Ful>\n    \u003C\u002Fdiv>\n    \u003Cscript>\n        \u002F\u002F 1. 获取元素\n        const input = document.querySelector('[type=search]')\n        const ul = document.querySelector('.result-list')\n        \u002F\u002F console.log(input)\n        \u002F\u002F 2. 监听事件 获得焦点\n        input.addEventListener('focus', function () {\n            \u002F\u002F ul显示\n            ul.style.display = 'block'\n            \u002F\u002F 添加一个带有颜色边框的类名\n            input.classList.add('search')\n        })\n        \u002F\u002F 3. 监听事件 失去焦点\n        input.addEventListener('blur', function () {\n            ul.style.display = 'none'\n            input.classList.remove('search')\n        })\n    \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,76551,76552,76562,76576,76580,76588,76602,76622,76642,76654,76662,76668,76678,76688,76699,76703,76707,76714,76718,76729,76733,76737,76744,76755,76768,76782,76786,76790,76799,76811,76823,76837,76850,76863,76881,76892,76896,76900,76909,76926,76930,76934,76941,76951,76961,76972,76985,76997,77013,77024,77035,77039,77043,77051,77061,77078,77090,77102,77113,77117,77121,77132,77143,77147,77155,77159,77167,77171,77179,77194,77217,77232,77261,77288,77315,77342,77369,77396,77423,77432,77440,77448,77453,77472,77492,77497,77502,77520,77525,77535,77540,77554,77559,77564,77581,77590,77602,77606,77614,77622,77626],{"__ignoreMap":32},[460,76553,76554,76556,76558,76560],{"class":462,"line":463},[460,76555,1845],{"class":466},[460,76557,1848],{"class":470},[460,76559,1851],{"class":929},[460,76561,473],{"class":466},[460,76563,76564,76566,76568,76570,76572,76574],{"class":462,"line":476},[460,76565,781],{"class":466},[460,76567,704],{"class":470},[460,76569,1862],{"class":929},[460,76571,894],{"class":466},[460,76573,1867],{"class":1353},[460,76575,473],{"class":466},[460,76577,76578],{"class":462,"line":482},[460,76579,522],{"emptyLinePlaceholder":521},[460,76581,76582,76584,76586],{"class":462,"line":488},[460,76583,781],{"class":466},[460,76585,1880],{"class":470},[460,76587,473],{"class":466},[460,76589,76590,76592,76594,76596,76598,76600],{"class":462,"line":494},[460,76591,2753],{"class":466},[460,76593,1889],{"class":470},[460,76595,1892],{"class":929},[460,76597,894],{"class":466},[460,76599,1897],{"class":1353},[460,76601,473],{"class":466},[460,76603,76604,76606,76608,76610,76612,76614,76616,76618,76620],{"class":462,"line":500},[460,76605,2753],{"class":466},[460,76607,1889],{"class":470},[460,76609,15735],{"class":929},[460,76611,894],{"class":466},[460,76613,15740],{"class":1353},[460,76615,1916],{"class":929},[460,76617,894],{"class":466},[460,76619,15747],{"class":1353},[460,76621,473],{"class":466},[460,76623,76624,76626,76628,76630,76632,76634,76636,76638,76640],{"class":462,"line":506},[460,76625,2753],{"class":466},[460,76627,1889],{"class":470},[460,76629,1908],{"class":929},[460,76631,894],{"class":466},[460,76633,1913],{"class":1353},[460,76635,1916],{"class":929},[460,76637,894],{"class":466},[460,76639,1921],{"class":1353},[460,76641,473],{"class":466},[460,76643,76644,76646,76648,76650,76652],{"class":462,"line":512},[460,76645,2753],{"class":466},[460,76647,1930],{"class":470},[460,76649,1933],{"class":466},[460,76651,1930],{"class":470},[460,76653,473],{"class":466},[460,76655,76656,76658,76660],{"class":462,"line":518},[460,76657,2753],{"class":466},[460,76659,1944],{"class":470},[460,76661,473],{"class":466},[460,76663,76664,76666],{"class":462,"line":525},[460,76665,67708],{"class":470},[460,76667,1348],{"class":466},[460,76669,76670,76672,76674,76676],{"class":462,"line":531},[460,76671,67715],{"class":900},[460,76673,1961],{"class":466},[460,76675,936],{"class":900},[460,76677,1966],{"class":466},[460,76679,76680,76682,76684,76686],{"class":462,"line":537},[460,76681,67726],{"class":900},[460,76683,1961],{"class":466},[460,76685,936],{"class":900},[460,76687,1966],{"class":466},[460,76689,76690,76693,76695,76697],{"class":462,"line":543},[460,76691,76692],{"class":900},"            box-sizing",[460,76694,1961],{"class":466},[460,76696,1987],{"class":900},[460,76698,1966],{"class":466},[460,76700,76701],{"class":462,"line":549},[460,76702,3858],{"class":466},[460,76704,76705],{"class":462,"line":555},[460,76706,522],{"emptyLinePlaceholder":521},[460,76708,76709,76712],{"class":462,"line":560},[460,76710,76711],{"class":470},"        ul",[460,76713,1348],{"class":466},[460,76715,76716],{"class":462,"line":566},[460,76717,522],{"emptyLinePlaceholder":521},[460,76719,76720,76723,76725,76727],{"class":462,"line":572},[460,76721,76722],{"class":900},"            list-style",[460,76724,1961],{"class":466},[460,76726,2629],{"class":900},[460,76728,1966],{"class":466},[460,76730,76731],{"class":462,"line":578},[460,76732,3858],{"class":466},[460,76734,76735],{"class":462,"line":812},[460,76736,522],{"emptyLinePlaceholder":521},[460,76738,76739,76742],{"class":462,"line":818},[460,76740,76741],{"class":929},"        .mi",[460,76743,1348],{"class":466},[460,76745,76746,76749,76751,76753],{"class":462,"line":824},[460,76747,76748],{"class":900},"            position",[460,76750,1961],{"class":466},[460,76752,10138],{"class":900},[460,76754,1966],{"class":466},[460,76756,76757,76759,76761,76764,76766],{"class":462,"line":2074},[460,76758,67763],{"class":900},[460,76760,1961],{"class":466},[460,76762,76763],{"class":900},"223",[460,76765,2017],{"class":887},[460,76767,1966],{"class":466},[460,76769,76770,76772,76774,76776,76778,76780],{"class":462,"line":2088},[460,76771,67715],{"class":900},[460,76773,1961],{"class":466},[460,76775,2325],{"class":900},[460,76777,2017],{"class":887},[460,76779,2030],{"class":900},[460,76781,1966],{"class":466},[460,76783,76784],{"class":462,"line":2103},[460,76785,3858],{"class":466},[460,76787,76788],{"class":462,"line":2122},[460,76789,522],{"emptyLinePlaceholder":521},[460,76791,76792,76794,76797],{"class":462,"line":2144},[460,76793,76741],{"class":929},[460,76795,76796],{"class":470}," input",[460,76798,1348],{"class":466},[460,76800,76801,76803,76805,76807,76809],{"class":462,"line":2158},[460,76802,67763],{"class":900},[460,76804,1961],{"class":466},[460,76806,76763],{"class":900},[460,76808,2017],{"class":887},[460,76810,1966],{"class":466},[460,76812,76813,76815,76817,76819,76821],{"class":462,"line":2163},[460,76814,67776],{"class":900},[460,76816,1961],{"class":466},[460,76818,17329],{"class":900},[460,76820,2017],{"class":887},[460,76822,1966],{"class":466},[460,76824,76825,76827,76829,76831,76833,76835],{"class":462,"line":2168},[460,76826,67726],{"class":900},[460,76828,1961],{"class":466},[460,76830,936],{"class":900},[460,76832,5231],{"class":900},[460,76834,2017],{"class":887},[460,76836,1966],{"class":466},[460,76838,76839,76842,76844,76846,76848],{"class":462,"line":2183},[460,76840,76841],{"class":900},"            font-size",[460,76843,1961],{"class":466},[460,76845,2480],{"class":900},[460,76847,2017],{"class":887},[460,76849,1966],{"class":466},[460,76851,76852,76855,76857,76859,76861],{"class":462,"line":2194},[460,76853,76854],{"class":900},"            line-height",[460,76856,1961],{"class":466},[460,76858,17329],{"class":900},[460,76860,2017],{"class":887},[460,76862,1966],{"class":466},[460,76864,76865,76868,76870,76872,76874,76876,76879],{"class":462,"line":2199},[460,76866,76867],{"class":900},"            border",[460,76869,1961],{"class":466},[460,76871,901],{"class":900},[460,76873,2017],{"class":887},[460,76875,7201],{"class":900},[460,76877,76878],{"class":900}," #e0e0e0",[460,76880,1966],{"class":466},[460,76882,76883,76886,76888,76890],{"class":462,"line":2204},[460,76884,76885],{"class":900},"            outline",[460,76887,1961],{"class":466},[460,76889,2629],{"class":900},[460,76891,1966],{"class":466},[460,76893,76894],{"class":462,"line":2212},[460,76895,3858],{"class":466},[460,76897,76898],{"class":462,"line":2257},[460,76899,522],{"emptyLinePlaceholder":521},[460,76901,76902,76904,76907],{"class":462,"line":2285},[460,76903,76741],{"class":929},[460,76905,76906],{"class":929}," .search",[460,76908,1348],{"class":466},[460,76910,76911,76913,76915,76917,76919,76921,76924],{"class":462,"line":2298},[460,76912,76867],{"class":900},[460,76914,1961],{"class":466},[460,76916,901],{"class":900},[460,76918,2017],{"class":887},[460,76920,7201],{"class":900},[460,76922,76923],{"class":900}," #ff6700",[460,76925,1966],{"class":466},[460,76927,76928],{"class":462,"line":2303},[460,76929,3858],{"class":466},[460,76931,76932],{"class":462,"line":2308},[460,76933,522],{"emptyLinePlaceholder":521},[460,76935,76936,76939],{"class":462,"line":2318},[460,76937,76938],{"class":929},"        .result-list",[460,76940,1348],{"class":466},[460,76942,76943,76945,76947,76949],{"class":462,"line":2333},[460,76944,67752],{"class":900},[460,76946,1961],{"class":466},[460,76948,2629],{"class":900},[460,76950,1966],{"class":466},[460,76952,76953,76955,76957,76959],{"class":462,"line":2338},[460,76954,76748],{"class":900},[460,76956,1961],{"class":466},[460,76958,10202],{"class":900},[460,76960,1966],{"class":466},[460,76962,76963,76966,76968,76970],{"class":462,"line":2343},[460,76964,76965],{"class":900},"            left",[460,76967,1961],{"class":466},[460,76969,936],{"class":900},[460,76971,1966],{"class":466},[460,76973,76974,76977,76979,76981,76983],{"class":462,"line":2353},[460,76975,76976],{"class":900},"            top",[460,76978,1961],{"class":466},[460,76980,17329],{"class":900},[460,76982,2017],{"class":887},[460,76984,1966],{"class":466},[460,76986,76987,76989,76991,76993,76995],{"class":462,"line":2368},[460,76988,67763],{"class":900},[460,76990,1961],{"class":466},[460,76992,76763],{"class":900},[460,76994,2017],{"class":887},[460,76996,1966],{"class":466},[460,76998,76999,77001,77003,77005,77007,77009,77011],{"class":462,"line":2381},[460,77000,76867],{"class":900},[460,77002,1961],{"class":466},[460,77004,901],{"class":900},[460,77006,2017],{"class":887},[460,77008,7201],{"class":900},[460,77010,76923],{"class":900},[460,77012,1966],{"class":466},[460,77014,77015,77018,77020,77022],{"class":462,"line":2394},[460,77016,77017],{"class":900},"            border-top",[460,77019,1961],{"class":466},[460,77021,936],{"class":900},[460,77023,1966],{"class":466},[460,77025,77026,77029,77031,77033],{"class":462,"line":2399},[460,77027,77028],{"class":900},"            background",[460,77030,1961],{"class":466},[460,77032,2690],{"class":900},[460,77034,1966],{"class":466},[460,77036,77037],{"class":462,"line":2404},[460,77038,3858],{"class":466},[460,77040,77041],{"class":462,"line":2414},[460,77042,522],{"emptyLinePlaceholder":521},[460,77044,77045,77047,77049],{"class":462,"line":2428},[460,77046,76938],{"class":929},[460,77048,2574],{"class":470},[460,77050,1348],{"class":466},[460,77052,77053,77055,77057,77059],{"class":462,"line":2440},[460,77054,67752],{"class":900},[460,77056,1961],{"class":466},[460,77058,7350],{"class":900},[460,77060,1966],{"class":466},[460,77062,77063,77065,77067,77069,77071,77074,77076],{"class":462,"line":2445},[460,77064,67726],{"class":900},[460,77066,1961],{"class":466},[460,77068,4064],{"class":900},[460,77070,2017],{"class":887},[460,77072,77073],{"class":900}," 15",[460,77075,2017],{"class":887},[460,77077,1966],{"class":466},[460,77079,77080,77082,77084,77086,77088],{"class":462,"line":2450},[460,77081,76841],{"class":900},[460,77083,1961],{"class":466},[460,77085,5531],{"class":900},[460,77087,2017],{"class":887},[460,77089,1966],{"class":466},[460,77091,77092,77095,77097,77100],{"class":462,"line":2460},[460,77093,77094],{"class":900},"            color",[460,77096,1961],{"class":466},[460,77098,77099],{"class":900},"#424242",[460,77101,1966],{"class":466},[460,77103,77104,77107,77109,77111],{"class":462,"line":2473},[460,77105,77106],{"class":900},"            text-decoration",[460,77108,1961],{"class":466},[460,77110,2629],{"class":900},[460,77112,1966],{"class":466},[460,77114,77115],{"class":462,"line":2487},[460,77116,3858],{"class":466},[460,77118,77119],{"class":462,"line":2492},[460,77120,522],{"emptyLinePlaceholder":521},[460,77122,77123,77125,77127,77130],{"class":462,"line":2497},[460,77124,76938],{"class":929},[460,77126,2574],{"class":470},[460,77128,77129],{"class":929},":hover",[460,77131,1348],{"class":466},[460,77133,77134,77136,77138,77141],{"class":462,"line":2505},[460,77135,67912],{"class":900},[460,77137,1961],{"class":466},[460,77139,77140],{"class":900},"#eee",[460,77142,1966],{"class":466},[460,77144,77145],{"class":462,"line":2516},[460,77146,3858],{"class":466},[460,77148,77149,77151,77153],{"class":462,"line":2529},[460,77150,16244],{"class":466},[460,77152,1944],{"class":470},[460,77154,473],{"class":466},[460,77156,77157],{"class":462,"line":2542},[460,77158,522],{"emptyLinePlaceholder":521},[460,77160,77161,77163,77165],{"class":462,"line":2559},[460,77162,1776],{"class":466},[460,77164,1880],{"class":470},[460,77166,473],{"class":466},[460,77168,77169],{"class":462,"line":2564},[460,77170,522],{"emptyLinePlaceholder":521},[460,77172,77173,77175,77177],{"class":462,"line":2569},[460,77174,781],{"class":466},[460,77176,1721],{"class":470},[460,77178,473],{"class":466},[460,77180,77181,77183,77185,77187,77189,77192],{"class":462,"line":2579},[460,77182,2753],{"class":466},[460,77184,2737],{"class":470},[460,77186,2740],{"class":929},[460,77188,894],{"class":466},[460,77190,77191],{"class":1353},"\"mi\"",[460,77193,473],{"class":466},[460,77195,77196,77198,77200,77202,77204,77207,77210,77212,77215],{"class":462,"line":2597},[460,77197,16212],{"class":466},[460,77199,70068],{"class":470},[460,77201,70071],{"class":929},[460,77203,894],{"class":466},[460,77205,77206],{"class":1353},"\"search\"",[460,77208,77209],{"class":929}," placeholder",[460,77211,894],{"class":466},[460,77213,77214],{"class":1353},"\"小米笔记本\"",[460,77216,473],{"class":466},[460,77218,77219,77221,77223,77225,77227,77230],{"class":462,"line":2610},[460,77220,16212],{"class":466},[460,77222,40],{"class":470},[460,77224,2740],{"class":929},[460,77226,894],{"class":466},[460,77228,77229],{"class":1353},"\"result-list\"",[460,77231,473],{"class":466},[460,77233,77234,77237,77239,77242,77244,77246,77248,77250,77253,77255,77257,77259],{"class":462,"line":2621},[460,77235,77236],{"class":466},"            \u003C",[460,77238,43],{"class":470},[460,77240,77241],{"class":466},">\u003C",[460,77243,2756],{"class":470},[460,77245,2759],{"class":929},[460,77247,894],{"class":466},[460,77249,2764],{"class":1353},[460,77251,77252],{"class":466},">全部商品\u003C\u002F",[460,77254,2756],{"class":470},[460,77256,5599],{"class":466},[460,77258,43],{"class":470},[460,77260,473],{"class":466},[460,77262,77263,77265,77267,77269,77271,77273,77275,77277,77280,77282,77284,77286],{"class":462,"line":2634},[460,77264,77236],{"class":466},[460,77266,43],{"class":470},[460,77268,77241],{"class":466},[460,77270,2756],{"class":470},[460,77272,2759],{"class":929},[460,77274,894],{"class":466},[460,77276,2764],{"class":1353},[460,77278,77279],{"class":466},">小米11\u003C\u002F",[460,77281,2756],{"class":470},[460,77283,5599],{"class":466},[460,77285,43],{"class":470},[460,77287,473],{"class":466},[460,77289,77290,77292,77294,77296,77298,77300,77302,77304,77307,77309,77311,77313],{"class":462,"line":2648},[460,77291,77236],{"class":466},[460,77293,43],{"class":470},[460,77295,77241],{"class":466},[460,77297,2756],{"class":470},[460,77299,2759],{"class":929},[460,77301,894],{"class":466},[460,77303,2764],{"class":1353},[460,77305,77306],{"class":466},">小米10S\u003C\u002F",[460,77308,2756],{"class":470},[460,77310,5599],{"class":466},[460,77312,43],{"class":470},[460,77314,473],{"class":466},[460,77316,77317,77319,77321,77323,77325,77327,77329,77331,77334,77336,77338,77340],{"class":462,"line":2653},[460,77318,77236],{"class":466},[460,77320,43],{"class":470},[460,77322,77241],{"class":466},[460,77324,2756],{"class":470},[460,77326,2759],{"class":929},[460,77328,894],{"class":466},[460,77330,2764],{"class":1353},[460,77332,77333],{"class":466},">小米笔记本\u003C\u002F",[460,77335,2756],{"class":470},[460,77337,5599],{"class":466},[460,77339,43],{"class":470},[460,77341,473],{"class":466},[460,77343,77344,77346,77348,77350,77352,77354,77356,77358,77361,77363,77365,77367],{"class":462,"line":2658},[460,77345,77236],{"class":466},[460,77347,43],{"class":470},[460,77349,77241],{"class":466},[460,77351,2756],{"class":470},[460,77353,2759],{"class":929},[460,77355,894],{"class":466},[460,77357,2764],{"class":1353},[460,77359,77360],{"class":466},">小米手机\u003C\u002F",[460,77362,2756],{"class":470},[460,77364,5599],{"class":466},[460,77366,43],{"class":470},[460,77368,473],{"class":466},[460,77370,77371,77373,77375,77377,77379,77381,77383,77385,77388,77390,77392,77394],{"class":462,"line":2670},[460,77372,77236],{"class":466},[460,77374,43],{"class":470},[460,77376,77241],{"class":466},[460,77378,2756],{"class":470},[460,77380,2759],{"class":929},[460,77382,894],{"class":466},[460,77384,2764],{"class":1353},[460,77386,77387],{"class":466},">黑鲨4\u003C\u002F",[460,77389,2756],{"class":470},[460,77391,5599],{"class":466},[460,77393,43],{"class":470},[460,77395,473],{"class":466},[460,77397,77398,77400,77402,77404,77406,77408,77410,77412,77415,77417,77419,77421],{"class":462,"line":2683},[460,77399,77236],{"class":466},[460,77401,43],{"class":470},[460,77403,77241],{"class":466},[460,77405,2756],{"class":470},[460,77407,2759],{"class":929},[460,77409,894],{"class":466},[460,77411,2764],{"class":1353},[460,77413,77414],{"class":466},">空调\u003C\u002F",[460,77416,2756],{"class":470},[460,77418,5599],{"class":466},[460,77420,43],{"class":470},[460,77422,473],{"class":466},[460,77424,77425,77428,77430],{"class":462,"line":2695},[460,77426,77427],{"class":466},"        \u003C\u002F",[460,77429,40],{"class":470},[460,77431,473],{"class":466},[460,77433,77434,77436,77438],{"class":462,"line":2700},[460,77435,16244],{"class":466},[460,77437,2737],{"class":470},[460,77439,473],{"class":466},[460,77441,77442,77444,77446],{"class":462,"line":2709},[460,77443,2753],{"class":466},[460,77445,225],{"class":470},[460,77447,473],{"class":466},[460,77449,77450],{"class":462,"line":2718},[460,77451,77452],{"class":942},"        \u002F\u002F 1. 获取元素\n",[460,77454,77455,77457,77459,77461,77463,77465,77467,77470],{"class":462,"line":2723},[460,77456,3434],{"class":887},[460,77458,76796],{"class":900},[460,77460,2943],{"class":887},[460,77462,10599],{"class":466},[460,77464,3541],{"class":929},[460,77466,2174],{"class":466},[460,77468,77469],{"class":1353},"'[type=search]'",[460,77471,3754],{"class":466},[460,77473,77474,77476,77479,77481,77483,77485,77487,77490],{"class":462,"line":2732},[460,77475,3434],{"class":887},[460,77477,77478],{"class":900}," ul",[460,77480,2943],{"class":887},[460,77482,10599],{"class":466},[460,77484,3541],{"class":929},[460,77486,2174],{"class":466},[460,77488,77489],{"class":1353},"'.result-list'",[460,77491,3754],{"class":466},[460,77493,77494],{"class":462,"line":2750},[460,77495,77496],{"class":942},"        \u002F\u002F console.log(input)\n",[460,77498,77499],{"class":462,"line":2782},[460,77500,77501],{"class":942},"        \u002F\u002F 2. 监听事件 获得焦点\n",[460,77503,77504,77507,77509,77511,77514,77516,77518],{"class":462,"line":2809},[460,77505,77506],{"class":466},"        input.",[460,77508,3599],{"class":929},[460,77510,2174],{"class":466},[460,77512,77513],{"class":1353},"'focus'",[460,77515,904],{"class":466},[460,77517,3976],{"class":887},[460,77519,9376],{"class":466},[460,77521,77522],{"class":462,"line":2836},[460,77523,77524],{"class":942},"            \u002F\u002F ul显示\n",[460,77526,77527,77530,77532],{"class":462,"line":2856},[460,77528,77529],{"class":466},"            ul.style.display ",[460,77531,894],{"class":887},[460,77533,77534],{"class":1353}," 'block'\n",[460,77536,77537],{"class":462,"line":2865},[460,77538,77539],{"class":942},"            \u002F\u002F 添加一个带有颜色边框的类名\n",[460,77541,77542,77545,77547,77549,77552],{"class":462,"line":2881},[460,77543,77544],{"class":466},"            input.classList.",[460,77546,21840],{"class":929},[460,77548,2174],{"class":466},[460,77550,77551],{"class":1353},"'search'",[460,77553,3754],{"class":466},[460,77555,77556],{"class":462,"line":2887},[460,77557,77558],{"class":466},"        })\n",[460,77560,77561],{"class":462,"line":2893},[460,77562,77563],{"class":942},"        \u002F\u002F 3. 监听事件 失去焦点\n",[460,77565,77566,77568,77570,77572,77575,77577,77579],{"class":462,"line":2899},[460,77567,77506],{"class":466},[460,77569,3599],{"class":929},[460,77571,2174],{"class":466},[460,77573,77574],{"class":1353},"'blur'",[460,77576,904],{"class":466},[460,77578,3976],{"class":887},[460,77580,9376],{"class":466},[460,77582,77583,77585,77587],{"class":462,"line":2905},[460,77584,77529],{"class":466},[460,77586,894],{"class":887},[460,77588,77589],{"class":1353}," 'none'\n",[460,77591,77592,77594,77596,77598,77600],{"class":462,"line":2911},[460,77593,77544],{"class":466},[460,77595,10755],{"class":929},[460,77597,2174],{"class":466},[460,77599,77551],{"class":1353},[460,77601,3754],{"class":466},[460,77603,77604],{"class":462,"line":2920},[460,77605,77558],{"class":466},[460,77607,77608,77610,77612],{"class":462,"line":2929},[460,77609,16244],{"class":466},[460,77611,225],{"class":470},[460,77613,473],{"class":466},[460,77615,77616,77618,77620],{"class":462,"line":2935},[460,77617,1776],{"class":466},[460,77619,1721],{"class":470},[460,77621,473],{"class":466},[460,77623,77624],{"class":462,"line":2948},[460,77625,522],{"emptyLinePlaceholder":521},[460,77627,77628,77630,77632],{"class":462,"line":2954},[460,77629,1776],{"class":466},[460,77631,704],{"class":470},[460,77633,473],{"class":466},[115,77635,77637],{"id":77636},"_3253-键盘事件","3.2.5.3 键盘事件",[14,77639,77640],{},"评论字数统计案例",[14,77642,77643],{},"补充知识点：点击表单元素，获得焦点时盒子变大，可以使用focus伪类选择器",[14,77645,77646],{},"牢记focus伪类选择器",[1889,77648],{"charSet":77649},"UTF-8",[1889,77651],{"name":77652,"content":77653},"viewport","width=device-width, initial-scale=1.0",[1930,77655,77656],{},"Document",[1944,77658,77659],{},"\n\ninput {\n\nwidth: 200px;\n\ntransition: all .3;\n\n}\n\n\u002F\\* 获得了光标 \\*\u002F\n\ninput:focus {\n\nwidth: 300px;\n\n}\n\n",[70068,77661],{"type":8391},[40,77663,77664,77667],{},[43,77665,77666],{},"键盘事件代码，显示可以使用opacity样式属性，通过透明度的形式实现盒子或者文字显示和隐藏，相比于disabled来说显示效果更好一些，一定要学会使用",[43,77668,77669],{},"一定要用好placeholder，它是表单元素的属性值，表示提示文本",[451,77671,77673],{"className":702,"code":77672,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>评论回车发布\u003C\u002Ftitle>\n  \u003Cstyle>\n    .wrapper {\n      min-width: 400px;\n      max-width: 800px;\n      display: flex;\n      justify-content: flex-end;\n    }\n\n    .avatar {\n      width: 48px;\n      height: 48px;\n      border-radius: 50%;\n      overflow: hidden;\n      background: url(...\u002F..\u002Fpublic\u002Fimages\u002Favatar.jpg) no-repeat center \u002F cover;\n      margin-right: 20px;\n    }\n\n    .wrapper textarea {\n      outline: none;\n      border-color: transparent;\n      resize: none;\n      background: #f5f5f5;\n      border-radius: 4px;\n      flex: 1;\n      padding: 10px;\n      transition: all 0.5s;\n      height: 30px;\n    }\n\n    .wrapper textarea:focus {\n      border-color: #e4e4e4;\n      background: #fff;\n      height: 50px;\n    }\n\n    .wrapper button {\n      background: #00aeec;\n      color: #fff;\n      border: none;\n      border-radius: 4px;\n      margin-left: 10px;\n      width: 70px;\n      cursor: pointer;\n    }\n\n    .wrapper .total {\n      margin-right: 80px;\n      color: #999;\n      margin-top: 5px;\n      opacity: 0;\n      transition: all 0.5s;\n    }\n\n    .list {\n      min-width: 400px;\n      max-width: 800px;\n      display: flex;\n    }\n\n    .list .item {\n      width: 100%;\n      display: flex;\n    }\n\n    .list .item .info {\n      flex: 1;\n      border-bottom: 1px dashed #e4e4e4;\n      padding-bottom: 10px;\n    }\n\n    .list .item p {\n      margin: 0;\n    }\n\n    .list .item .name {\n      color: #FB7299;\n      font-size: 14px;\n      font-weight: bold;\n    }\n\n    .list .item .text {\n      color: #333;\n      padding: 10px 0;\n    }\n\n    .list .item .time {\n      color: #999;\n      font-size: 12px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"wrapper\">\n    \u003Ci class=\"avatar\">\u003C\u002Fi>\n    \u003Ctextarea id=\"tx\" placeholder=\"发一条友善的评论\" rows=\"2\" maxlength=\"200\">\u003C\u002Ftextarea>\n    \u003Cbutton>发布\u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"wrapper\">\n    \u003Cspan class=\"total\">0\u002F200字\u003C\u002Fspan>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"list\">\n    \u003Cdiv class=\"item\" style=\"display: none;\">\n      \u003Ci class=\"avatar\">\u003C\u002Fi>\n      \u003Cdiv class=\"info\">\n        \u003Cp class=\"name\">清风徐来\u003C\u002Fp>\n        \u003Cp class=\"text\">大家都辛苦啦，感谢各位大大的努力，能圆满完成真是太好了[笑哭][支持]\u003C\u002Fp>\n        \u003Cp class=\"time\">2022-10-10 20:29:21\u003C\u002Fp>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    const tx = document.querySelector('#tx')\n    const total = document.querySelector('.total')\n    \u002F\u002F 1. 当我们文本域获得了焦点，就让 total 显示出来\n    tx.addEventListener('focus', function () {\n      total.style.opacity = 1\n    })\n    \u002F\u002F 2. 当我们文本域失去了焦点，就让 total 隐藏出来\n    tx.addEventListener('blur', function () {\n      total.style.opacity = 0\n    })\n    \u002F\u002F 3. 检测用户输入\n    tx.addEventListener('input', function () {\n      \u002F\u002F console.log(tx.value.length)  得到输入的长度\n      total.innerHTML = `${tx.value.length}\u002F200字`\n    })\n\n    \u002F\u002F const str = 'andy'\n    \u002F\u002F console.log(str.length)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,77674,77675,77685,77699,77703,77711,77725,77745,77765,77778,77786,77793,77806,77820,77830,77840,77844,77848,77855,77867,77879,77891,77903,77931,77943,77947,77951,77960,77971,77983,77994,78004,78016,78026,78038,78053,78065,78069,78073,78083,78094,78104,78116,78120,78124,78132,78143,78153,78163,78175,78187,78199,78209,78213,78217,78226,78238,78248,78261,78272,78286,78290,78294,78300,78312,78324,78334,78338,78342,78351,78363,78373,78377,78381,78392,78402,78420,78433,78437,78441,78451,78461,78465,78469,78479,78490,78502,78513,78517,78521,78532,78543,78557,78561,78565,78576,78586,78598,78602,78610,78618,78622,78630,78645,78664,78704,78717,78725,78739,78758,78766,78780,78803,78821,78836,78856,78876,78896,78904,78912,78920,78928,78948,78967,78972,78989,78998,79002,79007,79023,79031,79035,79040,79057,79062,79087,79091,79095,79100,79105,79113,79121,79125],{"__ignoreMap":32},[460,77676,77677,77679,77681,77683],{"class":462,"line":463},[460,77678,1845],{"class":466},[460,77680,1848],{"class":470},[460,77682,1851],{"class":929},[460,77684,473],{"class":466},[460,77686,77687,77689,77691,77693,77695,77697],{"class":462,"line":476},[460,77688,781],{"class":466},[460,77690,704],{"class":470},[460,77692,1862],{"class":929},[460,77694,894],{"class":466},[460,77696,1867],{"class":1353},[460,77698,473],{"class":466},[460,77700,77701],{"class":462,"line":482},[460,77702,522],{"emptyLinePlaceholder":521},[460,77704,77705,77707,77709],{"class":462,"line":488},[460,77706,781],{"class":466},[460,77708,1880],{"class":470},[460,77710,473],{"class":466},[460,77712,77713,77715,77717,77719,77721,77723],{"class":462,"line":494},[460,77714,467],{"class":466},[460,77716,1889],{"class":470},[460,77718,1892],{"class":929},[460,77720,894],{"class":466},[460,77722,1897],{"class":1353},[460,77724,473],{"class":466},[460,77726,77727,77729,77731,77733,77735,77737,77739,77741,77743],{"class":462,"line":500},[460,77728,467],{"class":466},[460,77730,1889],{"class":470},[460,77732,15735],{"class":929},[460,77734,894],{"class":466},[460,77736,15740],{"class":1353},[460,77738,1916],{"class":929},[460,77740,894],{"class":466},[460,77742,15747],{"class":1353},[460,77744,473],{"class":466},[460,77746,77747,77749,77751,77753,77755,77757,77759,77761,77763],{"class":462,"line":506},[460,77748,467],{"class":466},[460,77750,1889],{"class":470},[460,77752,1908],{"class":929},[460,77754,894],{"class":466},[460,77756,1913],{"class":1353},[460,77758,1916],{"class":929},[460,77760,894],{"class":466},[460,77762,1921],{"class":1353},[460,77764,473],{"class":466},[460,77766,77767,77769,77771,77774,77776],{"class":462,"line":512},[460,77768,467],{"class":466},[460,77770,1930],{"class":470},[460,77772,77773],{"class":466},">评论回车发布\u003C\u002F",[460,77775,1930],{"class":470},[460,77777,473],{"class":466},[460,77779,77780,77782,77784],{"class":462,"line":518},[460,77781,467],{"class":466},[460,77783,1944],{"class":470},[460,77785,473],{"class":466},[460,77787,77788,77791],{"class":462,"line":525},[460,77789,77790],{"class":929},"    .wrapper",[460,77792,1348],{"class":466},[460,77794,77795,77798,77800,77802,77804],{"class":462,"line":531},[460,77796,77797],{"class":900},"      min-width",[460,77799,1961],{"class":466},[460,77801,20502],{"class":900},[460,77803,2017],{"class":887},[460,77805,1966],{"class":466},[460,77807,77808,77811,77813,77816,77818],{"class":462,"line":537},[460,77809,77810],{"class":900},"      max-width",[460,77812,1961],{"class":466},[460,77814,77815],{"class":900},"800",[460,77817,2017],{"class":887},[460,77819,1966],{"class":466},[460,77821,77822,77824,77826,77828],{"class":462,"line":543},[460,77823,2037],{"class":900},[460,77825,1961],{"class":466},[460,77827,2042],{"class":900},[460,77829,1966],{"class":466},[460,77831,77832,77834,77836,77838],{"class":462,"line":549},[460,77833,7653],{"class":900},[460,77835,1961],{"class":466},[460,77837,7658],{"class":900},[460,77839,1966],{"class":466},[460,77841,77842],{"class":462,"line":555},[460,77843,509],{"class":466},[460,77845,77846],{"class":462,"line":560},[460,77847,522],{"emptyLinePlaceholder":521},[460,77849,77850,77853],{"class":462,"line":566},[460,77851,77852],{"class":929},"    .avatar",[460,77854,1348],{"class":466},[460,77856,77857,77859,77861,77863,77865],{"class":462,"line":572},[460,77858,2009],{"class":900},[460,77860,1961],{"class":466},[460,77862,17329],{"class":900},[460,77864,2017],{"class":887},[460,77866,1966],{"class":466},[460,77868,77869,77871,77873,77875,77877],{"class":462,"line":578},[460,77870,5499],{"class":900},[460,77872,1961],{"class":466},[460,77874,17329],{"class":900},[460,77876,2017],{"class":887},[460,77878,1966],{"class":466},[460,77880,77881,77883,77885,77887,77889],{"class":462,"line":812},[460,77882,9991],{"class":900},[460,77884,1961],{"class":466},[460,77886,2549],{"class":900},[460,77888,2328],{"class":887},[460,77890,1966],{"class":466},[460,77892,77893,77896,77898,77901],{"class":462,"line":818},[460,77894,77895],{"class":900},"      overflow",[460,77897,1961],{"class":466},[460,77899,77900],{"class":900},"hidden",[460,77902,1966],{"class":466},[460,77904,77905,77907,77909,77912,77914,77917,77919,77922,77924,77926,77929],{"class":462,"line":824},[460,77906,2600],{"class":900},[460,77908,1961],{"class":466},[460,77910,77911],{"class":900},"url",[460,77913,2174],{"class":466},[460,77915,77916],{"class":3380},"...\u002F..\u002Fpublic\u002Fimages\u002Favatar.jpg",[460,77918,8296],{"class":466},[460,77920,77921],{"class":900},"no-repeat",[460,77923,33562],{"class":900},[460,77925,41391],{"class":466},[460,77927,77928],{"class":900},"cover",[460,77930,1966],{"class":466},[460,77932,77933,77935,77937,77939,77941],{"class":462,"line":2074},[460,77934,2637],{"class":900},[460,77936,1961],{"class":466},[460,77938,2110],{"class":900},[460,77940,2017],{"class":887},[460,77942,1966],{"class":466},[460,77944,77945],{"class":462,"line":2088},[460,77946,509],{"class":466},[460,77948,77949],{"class":462,"line":2103},[460,77950,522],{"emptyLinePlaceholder":521},[460,77952,77953,77955,77958],{"class":462,"line":2122},[460,77954,77790],{"class":929},[460,77956,77957],{"class":470}," textarea",[460,77959,1348],{"class":466},[460,77961,77962,77965,77967,77969],{"class":462,"line":2144},[460,77963,77964],{"class":900},"      outline",[460,77966,1961],{"class":466},[460,77968,2629],{"class":900},[460,77970,1966],{"class":466},[460,77972,77973,77976,77978,77981],{"class":462,"line":2158},[460,77974,77975],{"class":900},"      border-color",[460,77977,1961],{"class":466},[460,77979,77980],{"class":900},"transparent",[460,77982,1966],{"class":466},[460,77984,77985,77988,77990,77992],{"class":462,"line":2163},[460,77986,77987],{"class":900},"      resize",[460,77989,1961],{"class":466},[460,77991,2629],{"class":900},[460,77993,1966],{"class":466},[460,77995,77996,77998,78000,78002],{"class":462,"line":2168},[460,77997,2600],{"class":900},[460,77999,1961],{"class":466},[460,78001,2605],{"class":900},[460,78003,1966],{"class":466},[460,78005,78006,78008,78010,78012,78014],{"class":462,"line":2183},[460,78007,9991],{"class":900},[460,78009,1961],{"class":466},[460,78011,918],{"class":900},[460,78013,2017],{"class":887},[460,78015,1966],{"class":466},[460,78017,78018,78020,78022,78024],{"class":462,"line":2194},[460,78019,7439],{"class":900},[460,78021,1961],{"class":466},[460,78023,901],{"class":900},[460,78025,1966],{"class":466},[460,78027,78028,78030,78032,78034,78036],{"class":462,"line":2199},[460,78029,1958],{"class":900},[460,78031,1961],{"class":466},[460,78033,2096],{"class":900},[460,78035,2017],{"class":887},[460,78037,1966],{"class":466},[460,78039,78040,78042,78044,78046,78049,78051],{"class":462,"line":2204},[460,78041,2125],{"class":900},[460,78043,1961],{"class":466},[460,78045,2130],{"class":900},[460,78047,78048],{"class":900}," 0.5",[460,78050,2139],{"class":887},[460,78052,1966],{"class":466},[460,78054,78055,78057,78059,78061,78063],{"class":462,"line":2212},[460,78056,5499],{"class":900},[460,78058,1961],{"class":466},[460,78060,17659],{"class":900},[460,78062,2017],{"class":887},[460,78064,1966],{"class":466},[460,78066,78067],{"class":462,"line":2257},[460,78068,509],{"class":466},[460,78070,78071],{"class":462,"line":2285},[460,78072,522],{"emptyLinePlaceholder":521},[460,78074,78075,78077,78079,78081],{"class":462,"line":2298},[460,78076,77790],{"class":929},[460,78078,77957],{"class":470},[460,78080,2665],{"class":929},[460,78082,1348],{"class":466},[460,78084,78085,78087,78089,78092],{"class":462,"line":2303},[460,78086,77975],{"class":900},[460,78088,1961],{"class":466},[460,78090,78091],{"class":900},"#e4e4e4",[460,78093,1966],{"class":466},[460,78095,78096,78098,78100,78102],{"class":462,"line":2308},[460,78097,2600],{"class":900},[460,78099,1961],{"class":466},[460,78101,2690],{"class":900},[460,78103,1966],{"class":466},[460,78105,78106,78108,78110,78112,78114],{"class":462,"line":2318},[460,78107,5499],{"class":900},[460,78109,1961],{"class":466},[460,78111,2549],{"class":900},[460,78113,2017],{"class":887},[460,78115,1966],{"class":466},[460,78117,78118],{"class":462,"line":2333},[460,78119,509],{"class":466},[460,78121,78122],{"class":462,"line":2338},[460,78123,522],{"emptyLinePlaceholder":521},[460,78125,78126,78128,78130],{"class":462,"line":2343},[460,78127,77790],{"class":929},[460,78129,73673],{"class":470},[460,78131,1348],{"class":466},[460,78133,78134,78136,78138,78141],{"class":462,"line":2353},[460,78135,2600],{"class":900},[460,78137,1961],{"class":466},[460,78139,78140],{"class":900},"#00aeec",[460,78142,1966],{"class":466},[460,78144,78145,78147,78149,78151],{"class":462,"line":2368},[460,78146,2384],{"class":900},[460,78148,1961],{"class":466},[460,78150,2690],{"class":900},[460,78152,1966],{"class":466},[460,78154,78155,78157,78159,78161],{"class":462,"line":2381},[460,78156,7192],{"class":900},[460,78158,1961],{"class":466},[460,78160,2629],{"class":900},[460,78162,1966],{"class":466},[460,78164,78165,78167,78169,78171,78173],{"class":462,"line":2394},[460,78166,9991],{"class":900},[460,78168,1961],{"class":466},[460,78170,918],{"class":900},[460,78172,2017],{"class":887},[460,78174,1966],{"class":466},[460,78176,78177,78179,78181,78183,78185],{"class":462,"line":2399},[460,78178,2091],{"class":900},[460,78180,1961],{"class":466},[460,78182,2096],{"class":900},[460,78184,2017],{"class":887},[460,78186,1966],{"class":466},[460,78188,78189,78191,78193,78195,78197],{"class":462,"line":2404},[460,78190,2009],{"class":900},[460,78192,1961],{"class":466},[460,78194,17093],{"class":900},[460,78196,2017],{"class":887},[460,78198,1966],{"class":466},[460,78200,78201,78203,78205,78207],{"class":462,"line":2414},[460,78202,2288],{"class":900},[460,78204,1961],{"class":466},[460,78206,2293],{"class":900},[460,78208,1966],{"class":466},[460,78210,78211],{"class":462,"line":2428},[460,78212,509],{"class":466},[460,78214,78215],{"class":462,"line":2440},[460,78216,522],{"emptyLinePlaceholder":521},[460,78218,78219,78221,78224],{"class":462,"line":2445},[460,78220,77790],{"class":929},[460,78222,78223],{"class":929}," .total",[460,78225,1348],{"class":466},[460,78227,78228,78230,78232,78234,78236],{"class":462,"line":2450},[460,78229,2637],{"class":900},[460,78231,1961],{"class":466},[460,78233,7265],{"class":900},[460,78235,2017],{"class":887},[460,78237,1966],{"class":466},[460,78239,78240,78242,78244,78246],{"class":462,"line":2460},[460,78241,2384],{"class":900},[460,78243,1961],{"class":466},[460,78245,7385],{"class":900},[460,78247,1966],{"class":466},[460,78249,78250,78253,78255,78257,78259],{"class":462,"line":2473},[460,78251,78252],{"class":900},"      margin-top",[460,78254,1961],{"class":466},[460,78256,7290],{"class":900},[460,78258,2017],{"class":887},[460,78260,1966],{"class":466},[460,78262,78263,78266,78268,78270],{"class":462,"line":2487},[460,78264,78265],{"class":900},"      opacity",[460,78267,1961],{"class":466},[460,78269,936],{"class":900},[460,78271,1966],{"class":466},[460,78273,78274,78276,78278,78280,78282,78284],{"class":462,"line":2492},[460,78275,2125],{"class":900},[460,78277,1961],{"class":466},[460,78279,2130],{"class":900},[460,78281,78048],{"class":900},[460,78283,2139],{"class":887},[460,78285,1966],{"class":466},[460,78287,78288],{"class":462,"line":2497},[460,78289,509],{"class":466},[460,78291,78292],{"class":462,"line":2505},[460,78293,522],{"emptyLinePlaceholder":521},[460,78295,78296,78298],{"class":462,"line":2516},[460,78297,2002],{"class":929},[460,78299,1348],{"class":466},[460,78301,78302,78304,78306,78308,78310],{"class":462,"line":2529},[460,78303,77797],{"class":900},[460,78305,1961],{"class":466},[460,78307,20502],{"class":900},[460,78309,2017],{"class":887},[460,78311,1966],{"class":466},[460,78313,78314,78316,78318,78320,78322],{"class":462,"line":2542},[460,78315,77810],{"class":900},[460,78317,1961],{"class":466},[460,78319,77815],{"class":900},[460,78321,2017],{"class":887},[460,78323,1966],{"class":466},[460,78325,78326,78328,78330,78332],{"class":462,"line":2559},[460,78327,2037],{"class":900},[460,78329,1961],{"class":466},[460,78331,2042],{"class":900},[460,78333,1966],{"class":466},[460,78335,78336],{"class":462,"line":2564},[460,78337,509],{"class":466},[460,78339,78340],{"class":462,"line":2569},[460,78341,522],{"emptyLinePlaceholder":521},[460,78343,78344,78346,78349],{"class":462,"line":2579},[460,78345,2002],{"class":929},[460,78347,78348],{"class":929}," .item",[460,78350,1348],{"class":466},[460,78352,78353,78355,78357,78359,78361],{"class":462,"line":2597},[460,78354,2009],{"class":900},[460,78356,1961],{"class":466},[460,78358,2325],{"class":900},[460,78360,2328],{"class":887},[460,78362,1966],{"class":466},[460,78364,78365,78367,78369,78371],{"class":462,"line":2610},[460,78366,2037],{"class":900},[460,78368,1961],{"class":466},[460,78370,2042],{"class":900},[460,78372,1966],{"class":466},[460,78374,78375],{"class":462,"line":2621},[460,78376,509],{"class":466},[460,78378,78379],{"class":462,"line":2634},[460,78380,522],{"emptyLinePlaceholder":521},[460,78382,78383,78385,78387,78390],{"class":462,"line":2648},[460,78384,2002],{"class":929},[460,78386,78348],{"class":929},[460,78388,78389],{"class":929}," .info",[460,78391,1348],{"class":466},[460,78393,78394,78396,78398,78400],{"class":462,"line":2653},[460,78395,7439],{"class":900},[460,78397,1961],{"class":466},[460,78399,901],{"class":900},[460,78401,1966],{"class":466},[460,78403,78404,78407,78409,78411,78413,78416,78418],{"class":462,"line":2658},[460,78405,78406],{"class":900},"      border-bottom",[460,78408,1961],{"class":466},[460,78410,901],{"class":900},[460,78412,2017],{"class":887},[460,78414,78415],{"class":900}," dashed",[460,78417,7204],{"class":900},[460,78419,1966],{"class":466},[460,78421,78422,78425,78427,78429,78431],{"class":462,"line":2670},[460,78423,78424],{"class":900},"      padding-bottom",[460,78426,1961],{"class":466},[460,78428,2096],{"class":900},[460,78430,2017],{"class":887},[460,78432,1966],{"class":466},[460,78434,78435],{"class":462,"line":2683},[460,78436,509],{"class":466},[460,78438,78439],{"class":462,"line":2695},[460,78440,522],{"emptyLinePlaceholder":521},[460,78442,78443,78445,78447,78449],{"class":462,"line":2700},[460,78444,2002],{"class":929},[460,78446,78348],{"class":929},[460,78448,12687],{"class":470},[460,78450,1348],{"class":466},[460,78452,78453,78455,78457,78459],{"class":462,"line":2709},[460,78454,1971],{"class":900},[460,78456,1961],{"class":466},[460,78458,936],{"class":900},[460,78460,1966],{"class":466},[460,78462,78463],{"class":462,"line":2718},[460,78464,509],{"class":466},[460,78466,78467],{"class":462,"line":2723},[460,78468,522],{"emptyLinePlaceholder":521},[460,78470,78471,78473,78475,78477],{"class":462,"line":2732},[460,78472,2002],{"class":929},[460,78474,78348],{"class":929},[460,78476,2348],{"class":929},[460,78478,1348],{"class":466},[460,78480,78481,78483,78485,78488],{"class":462,"line":2750},[460,78482,2384],{"class":900},[460,78484,1961],{"class":466},[460,78486,78487],{"class":900},"#FB7299",[460,78489,1966],{"class":466},[460,78491,78492,78494,78496,78498,78500],{"class":462,"line":2782},[460,78493,2356],{"class":900},[460,78495,1961],{"class":466},[460,78497,2480],{"class":900},[460,78499,2017],{"class":887},[460,78501,1966],{"class":466},[460,78503,78504,78506,78508,78511],{"class":462,"line":2809},[460,78505,7734],{"class":900},[460,78507,1961],{"class":466},[460,78509,78510],{"class":900},"bold",[460,78512,1966],{"class":466},[460,78514,78515],{"class":462,"line":2836},[460,78516,509],{"class":466},[460,78518,78519],{"class":462,"line":2856},[460,78520,522],{"emptyLinePlaceholder":521},[460,78522,78523,78525,78527,78530],{"class":462,"line":2865},[460,78524,2002],{"class":929},[460,78526,78348],{"class":929},[460,78528,78529],{"class":929}," .text",[460,78531,1348],{"class":466},[460,78533,78534,78536,78538,78541],{"class":462,"line":2881},[460,78535,2384],{"class":900},[460,78537,1961],{"class":466},[460,78539,78540],{"class":900},"#333",[460,78542,1966],{"class":466},[460,78544,78545,78547,78549,78551,78553,78555],{"class":462,"line":2887},[460,78546,1958],{"class":900},[460,78548,1961],{"class":466},[460,78550,2096],{"class":900},[460,78552,2017],{"class":887},[460,78554,2224],{"class":900},[460,78556,1966],{"class":466},[460,78558,78559],{"class":462,"line":2893},[460,78560,509],{"class":466},[460,78562,78563],{"class":462,"line":2899},[460,78564,522],{"emptyLinePlaceholder":521},[460,78566,78567,78569,78571,78574],{"class":462,"line":2905},[460,78568,2002],{"class":929},[460,78570,78348],{"class":929},[460,78572,78573],{"class":929}," .time",[460,78575,1348],{"class":466},[460,78577,78578,78580,78582,78584],{"class":462,"line":2911},[460,78579,2384],{"class":900},[460,78581,1961],{"class":466},[460,78583,7385],{"class":900},[460,78585,1966],{"class":466},[460,78587,78588,78590,78592,78594,78596],{"class":462,"line":2920},[460,78589,2356],{"class":900},[460,78591,1961],{"class":466},[460,78593,5531],{"class":900},[460,78595,2017],{"class":887},[460,78597,1966],{"class":466},[460,78599,78600],{"class":462,"line":2929},[460,78601,509],{"class":466},[460,78603,78604,78606,78608],{"class":462,"line":2935},[460,78605,581],{"class":466},[460,78607,1944],{"class":470},[460,78609,473],{"class":466},[460,78611,78612,78614,78616],{"class":462,"line":2948},[460,78613,1776],{"class":466},[460,78615,1880],{"class":470},[460,78617,473],{"class":466},[460,78619,78620],{"class":462,"line":2954},[460,78621,522],{"emptyLinePlaceholder":521},[460,78623,78624,78626,78628],{"class":462,"line":2965},[460,78625,781],{"class":466},[460,78627,1721],{"class":470},[460,78629,473],{"class":466},[460,78631,78632,78634,78636,78638,78640,78643],{"class":462,"line":2976},[460,78633,467],{"class":466},[460,78635,2737],{"class":470},[460,78637,2740],{"class":929},[460,78639,894],{"class":466},[460,78641,78642],{"class":1353},"\"wrapper\"",[460,78644,473],{"class":466},[460,78646,78647,78649,78651,78653,78655,78658,78660,78662],{"class":462,"line":2987},[460,78648,2753],{"class":466},[460,78650,17174],{"class":470},[460,78652,2740],{"class":929},[460,78654,894],{"class":466},[460,78656,78657],{"class":1353},"\"avatar\"",[460,78659,5599],{"class":466},[460,78661,17174],{"class":470},[460,78663,473],{"class":466},[460,78665,78666,78668,78670,78672,78674,78677,78679,78681,78684,78686,78688,78690,78693,78695,78698,78700,78702],{"class":462,"line":2998},[460,78667,2753],{"class":466},[460,78669,70534],{"class":470},[460,78671,10504],{"class":929},[460,78673,894],{"class":466},[460,78675,78676],{"class":1353},"\"tx\"",[460,78678,77209],{"class":929},[460,78680,894],{"class":466},[460,78682,78683],{"class":1353},"\"发一条友善的评论\"",[460,78685,70557],{"class":929},[460,78687,894],{"class":466},[460,78689,2799],{"class":1353},[460,78691,78692],{"class":929}," maxlength",[460,78694,894],{"class":466},[460,78696,78697],{"class":1353},"\"200\"",[460,78699,5599],{"class":466},[460,78701,70534],{"class":470},[460,78703,473],{"class":466},[460,78705,78706,78708,78710,78713,78715],{"class":462,"line":3003},[460,78707,2753],{"class":466},[460,78709,10501],{"class":470},[460,78711,78712],{"class":466},">发布\u003C\u002F",[460,78714,10501],{"class":470},[460,78716,473],{"class":466},[460,78718,78719,78721,78723],{"class":462,"line":3008},[460,78720,581],{"class":466},[460,78722,2737],{"class":470},[460,78724,473],{"class":466},[460,78726,78727,78729,78731,78733,78735,78737],{"class":462,"line":3018},[460,78728,467],{"class":466},[460,78730,2737],{"class":470},[460,78732,2740],{"class":929},[460,78734,894],{"class":466},[460,78736,78642],{"class":1353},[460,78738,473],{"class":466},[460,78740,78741,78743,78745,78747,78749,78751,78754,78756],{"class":462,"line":3028},[460,78742,2753],{"class":466},[460,78744,460],{"class":470},[460,78746,2740],{"class":929},[460,78748,894],{"class":466},[460,78750,7820],{"class":1353},[460,78752,78753],{"class":466},">0\u002F200字\u003C\u002F",[460,78755,460],{"class":470},[460,78757,473],{"class":466},[460,78759,78760,78762,78764],{"class":462,"line":3038},[460,78761,581],{"class":466},[460,78763,2737],{"class":470},[460,78765,473],{"class":466},[460,78767,78768,78770,78772,78774,78776,78778],{"class":462,"line":3048},[460,78769,467],{"class":466},[460,78771,2737],{"class":470},[460,78773,2740],{"class":929},[460,78775,894],{"class":466},[460,78777,2876],{"class":1353},[460,78779,473],{"class":466},[460,78781,78782,78784,78786,78788,78790,78793,78796,78798,78801],{"class":462,"line":3053},[460,78783,2753],{"class":466},[460,78785,2737],{"class":470},[460,78787,2740],{"class":929},[460,78789,894],{"class":466},[460,78791,78792],{"class":1353},"\"item\"",[460,78794,78795],{"class":929}," style",[460,78797,894],{"class":466},[460,78799,78800],{"class":1353},"\"display: none;\"",[460,78802,473],{"class":466},[460,78804,78805,78807,78809,78811,78813,78815,78817,78819],{"class":462,"line":3058},[460,78806,16196],{"class":466},[460,78808,17174],{"class":470},[460,78810,2740],{"class":929},[460,78812,894],{"class":466},[460,78814,78657],{"class":1353},[460,78816,5599],{"class":466},[460,78818,17174],{"class":470},[460,78820,473],{"class":466},[460,78822,78823,78825,78827,78829,78831,78834],{"class":462,"line":3068},[460,78824,16196],{"class":466},[460,78826,2737],{"class":470},[460,78828,2740],{"class":929},[460,78830,894],{"class":466},[460,78832,78833],{"class":1353},"\"info\"",[460,78835,473],{"class":466},[460,78837,78838,78840,78842,78844,78846,78849,78852,78854],{"class":462,"line":3078},[460,78839,16212],{"class":466},[460,78841,14],{"class":470},[460,78843,2740],{"class":929},[460,78845,894],{"class":466},[460,78847,78848],{"class":1353},"\"name\"",[460,78850,78851],{"class":466},">清风徐来\u003C\u002F",[460,78853,14],{"class":470},[460,78855,473],{"class":466},[460,78857,78858,78860,78862,78864,78866,78869,78872,78874],{"class":462,"line":3088},[460,78859,16212],{"class":466},[460,78861,14],{"class":470},[460,78863,2740],{"class":929},[460,78865,894],{"class":466},[460,78867,78868],{"class":1353},"\"text\"",[460,78870,78871],{"class":466},">大家都辛苦啦，感谢各位大大的努力，能圆满完成真是太好了[笑哭][支持]\u003C\u002F",[460,78873,14],{"class":470},[460,78875,473],{"class":466},[460,78877,78878,78880,78882,78884,78886,78889,78892,78894],{"class":462,"line":3098},[460,78879,16212],{"class":466},[460,78881,14],{"class":470},[460,78883,2740],{"class":929},[460,78885,894],{"class":466},[460,78887,78888],{"class":1353},"\"time\"",[460,78890,78891],{"class":466},">2022-10-10 20:29:21\u003C\u002F",[460,78893,14],{"class":470},[460,78895,473],{"class":466},[460,78897,78898,78900,78902],{"class":462,"line":3103},[460,78899,16235],{"class":466},[460,78901,2737],{"class":470},[460,78903,473],{"class":466},[460,78905,78906,78908,78910],{"class":462,"line":3108},[460,78907,16244],{"class":466},[460,78909,2737],{"class":470},[460,78911,473],{"class":466},[460,78913,78914,78916,78918],{"class":462,"line":3118},[460,78915,581],{"class":466},[460,78917,2737],{"class":470},[460,78919,473],{"class":466},[460,78921,78922,78924,78926],{"class":462,"line":3128},[460,78923,467],{"class":466},[460,78925,225],{"class":470},[460,78927,473],{"class":466},[460,78929,78930,78932,78935,78937,78939,78941,78943,78946],{"class":462,"line":3138},[460,78931,1340],{"class":887},[460,78933,78934],{"class":900}," tx",[460,78936,2943],{"class":887},[460,78938,10599],{"class":466},[460,78940,3541],{"class":929},[460,78942,2174],{"class":466},[460,78944,78945],{"class":1353},"'#tx'",[460,78947,3754],{"class":466},[460,78949,78950,78952,78954,78956,78958,78960,78962,78965],{"class":462,"line":3148},[460,78951,1340],{"class":887},[460,78953,8467],{"class":900},[460,78955,2943],{"class":887},[460,78957,10599],{"class":466},[460,78959,3541],{"class":929},[460,78961,2174],{"class":466},[460,78963,78964],{"class":1353},"'.total'",[460,78966,3754],{"class":466},[460,78968,78969],{"class":462,"line":3153},[460,78970,78971],{"class":942},"    \u002F\u002F 1. 当我们文本域获得了焦点，就让 total 显示出来\n",[460,78973,78974,78977,78979,78981,78983,78985,78987],{"class":462,"line":3158},[460,78975,78976],{"class":466},"    tx.",[460,78978,3599],{"class":929},[460,78980,2174],{"class":466},[460,78982,77513],{"class":1353},[460,78984,904],{"class":466},[460,78986,3976],{"class":887},[460,78988,9376],{"class":466},[460,78990,78991,78994,78996],{"class":462,"line":3168},[460,78992,78993],{"class":466},"      total.style.opacity ",[460,78995,894],{"class":887},[460,78997,71910],{"class":900},[460,78999,79000],{"class":462,"line":3178},[460,79001,1679],{"class":466},[460,79003,79004],{"class":462,"line":3188},[460,79005,79006],{"class":942},"    \u002F\u002F 2. 当我们文本域失去了焦点，就让 total 隐藏出来\n",[460,79008,79009,79011,79013,79015,79017,79019,79021],{"class":462,"line":3198},[460,79010,78976],{"class":466},[460,79012,3599],{"class":929},[460,79014,2174],{"class":466},[460,79016,77574],{"class":1353},[460,79018,904],{"class":466},[460,79020,3976],{"class":887},[460,79022,9376],{"class":466},[460,79024,79025,79027,79029],{"class":462,"line":3203},[460,79026,78993],{"class":466},[460,79028,894],{"class":887},[460,79030,13996],{"class":900},[460,79032,79033],{"class":462,"line":3208},[460,79034,1679],{"class":466},[460,79036,79037],{"class":462,"line":3218},[460,79038,79039],{"class":942},"    \u002F\u002F 3. 检测用户输入\n",[460,79041,79042,79044,79046,79048,79051,79053,79055],{"class":462,"line":3228},[460,79043,78976],{"class":466},[460,79045,3599],{"class":929},[460,79047,2174],{"class":466},[460,79049,79050],{"class":1353},"'input'",[460,79052,904],{"class":466},[460,79054,3976],{"class":887},[460,79056,9376],{"class":466},[460,79058,79059],{"class":462,"line":3238},[460,79060,79061],{"class":942},"      \u002F\u002F console.log(tx.value.length)  得到输入的长度\n",[460,79063,79064,79067,79069,79072,79075,79077,79080,79082,79084],{"class":462,"line":3248},[460,79065,79066],{"class":466},"      total.innerHTML ",[460,79068,894],{"class":887},[460,79070,79071],{"class":1353}," `${",[460,79073,79074],{"class":466},"tx",[460,79076,6000],{"class":1353},[460,79078,79079],{"class":466},"value",[460,79081,6000],{"class":1353},[460,79083,68231],{"class":900},[460,79085,79086],{"class":1353},"}\u002F200字`\n",[460,79088,79089],{"class":462,"line":3253},[460,79090,1679],{"class":466},[460,79092,79093],{"class":462,"line":3258},[460,79094,522],{"emptyLinePlaceholder":521},[460,79096,79097],{"class":462,"line":3268},[460,79098,79099],{"class":942},"    \u002F\u002F const str = 'andy'\n",[460,79101,79102],{"class":462,"line":3278},[460,79103,79104],{"class":942},"    \u002F\u002F console.log(str.length)\n",[460,79106,79107,79109,79111],{"class":462,"line":3288},[460,79108,581],{"class":466},[460,79110,225],{"class":470},[460,79112,473],{"class":466},[460,79114,79115,79117,79119],{"class":462,"line":3298},[460,79116,1776],{"class":466},[460,79118,1721],{"class":470},[460,79120,473],{"class":466},[460,79122,79123],{"class":462,"line":3303},[460,79124,522],{"emptyLinePlaceholder":521},[460,79126,79127,79129,79131],{"class":462,"line":3308},[460,79128,1776],{"class":466},[460,79130,704],{"class":470},[460,79132,473],{"class":466},[115,79134,79136],{"id":79135},"_3254-change事件","3.2.5.4 change事件",[14,79138,79139],{},"在输入框中，获得焦点，不输入任何内容，再失去焦点，则会不会触发事件，函数不会执行",[14,79141,79142],{},"第一次要输入内容时，获得焦点，输入内容，失去焦点，函数执行",[14,79144,79145],{},"后边如果获得焦点不输入任何内容，表单里的内容只要不变，函数就不会去执行",[451,79147,79149],{"className":702,"code":79148,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cinput type=\"text\">\n  \u003Cscript>\n    const input = document.querySelector('input')\n    input.addEventListener('change', function () {\n      console.log(111)\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,79150,79151,79161,79175,79179,79187,79201,79221,79233,79241,79245,79253,79267,79275,79293,79311,79323,79327,79335,79343,79347],{"__ignoreMap":32},[460,79152,79153,79155,79157,79159],{"class":462,"line":463},[460,79154,1845],{"class":466},[460,79156,1848],{"class":470},[460,79158,1851],{"class":929},[460,79160,473],{"class":466},[460,79162,79163,79165,79167,79169,79171,79173],{"class":462,"line":476},[460,79164,781],{"class":466},[460,79166,704],{"class":470},[460,79168,1862],{"class":929},[460,79170,894],{"class":466},[460,79172,1867],{"class":1353},[460,79174,473],{"class":466},[460,79176,79177],{"class":462,"line":482},[460,79178,522],{"emptyLinePlaceholder":521},[460,79180,79181,79183,79185],{"class":462,"line":488},[460,79182,781],{"class":466},[460,79184,1880],{"class":470},[460,79186,473],{"class":466},[460,79188,79189,79191,79193,79195,79197,79199],{"class":462,"line":494},[460,79190,467],{"class":466},[460,79192,1889],{"class":470},[460,79194,1892],{"class":929},[460,79196,894],{"class":466},[460,79198,1897],{"class":1353},[460,79200,473],{"class":466},[460,79202,79203,79205,79207,79209,79211,79213,79215,79217,79219],{"class":462,"line":500},[460,79204,467],{"class":466},[460,79206,1889],{"class":470},[460,79208,1908],{"class":929},[460,79210,894],{"class":466},[460,79212,1913],{"class":1353},[460,79214,1916],{"class":929},[460,79216,894],{"class":466},[460,79218,1921],{"class":1353},[460,79220,473],{"class":466},[460,79222,79223,79225,79227,79229,79231],{"class":462,"line":506},[460,79224,467],{"class":466},[460,79226,1930],{"class":470},[460,79228,1933],{"class":466},[460,79230,1930],{"class":470},[460,79232,473],{"class":466},[460,79234,79235,79237,79239],{"class":462,"line":512},[460,79236,1776],{"class":466},[460,79238,1880],{"class":470},[460,79240,473],{"class":466},[460,79242,79243],{"class":462,"line":518},[460,79244,522],{"emptyLinePlaceholder":521},[460,79246,79247,79249,79251],{"class":462,"line":525},[460,79248,781],{"class":466},[460,79250,1721],{"class":470},[460,79252,473],{"class":466},[460,79254,79255,79257,79259,79261,79263,79265],{"class":462,"line":531},[460,79256,467],{"class":466},[460,79258,70068],{"class":470},[460,79260,70071],{"class":929},[460,79262,894],{"class":466},[460,79264,78868],{"class":1353},[460,79266,473],{"class":466},[460,79268,79269,79271,79273],{"class":462,"line":537},[460,79270,467],{"class":466},[460,79272,225],{"class":470},[460,79274,473],{"class":466},[460,79276,79277,79279,79281,79283,79285,79287,79289,79291],{"class":462,"line":543},[460,79278,1340],{"class":887},[460,79280,76796],{"class":900},[460,79282,2943],{"class":887},[460,79284,10599],{"class":466},[460,79286,3541],{"class":929},[460,79288,2174],{"class":466},[460,79290,79050],{"class":1353},[460,79292,3754],{"class":466},[460,79294,79295,79298,79300,79302,79305,79307,79309],{"class":462,"line":549},[460,79296,79297],{"class":466},"    input.",[460,79299,3599],{"class":929},[460,79301,2174],{"class":466},[460,79303,79304],{"class":1353},"'change'",[460,79306,904],{"class":466},[460,79308,3976],{"class":887},[460,79310,9376],{"class":466},[460,79312,79313,79315,79317,79319,79321],{"class":462,"line":555},[460,79314,12805],{"class":466},[460,79316,930],{"class":929},[460,79318,2174],{"class":466},[460,79320,17315],{"class":900},[460,79322,3754],{"class":466},[460,79324,79325],{"class":462,"line":560},[460,79326,1679],{"class":466},[460,79328,79329,79331,79333],{"class":462,"line":566},[460,79330,581],{"class":466},[460,79332,225],{"class":470},[460,79334,473],{"class":466},[460,79336,79337,79339,79341],{"class":462,"line":572},[460,79338,1776],{"class":466},[460,79340,1721],{"class":470},[460,79342,473],{"class":466},[460,79344,79345],{"class":462,"line":578},[460,79346,522],{"emptyLinePlaceholder":521},[460,79348,79349,79351,79353],{"class":462,"line":812},[460,79350,1776],{"class":466},[460,79352,704],{"class":470},[460,79354,473],{"class":466},[14,79356,79357],{},"总结：内容发生改变才回去触发",[23,79359,79361],{"id":79360},"_326-事件对象","3.2.6 事件对象",[115,79363,79365],{"id":79364},"_3261-事件对象的介绍","3.2.6.1 事件对象的介绍",[14,79367,79368],{},[30,79369],{"alt":32,"src":79370},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-113.png",[14,79372,79373],{},[30,79374],{"alt":32,"src":79375},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-114.png",[14,79377,79378],{},"点击一次，就输出了事件对象，它是个对象",[14,79380,79381],{},"只有事件监听中里边的执行函数括号里边的内容才是事件对象，其他的函数后边括号中的变量是一个形参",[14,79383,79384],{},[30,79385],{"alt":32,"src":79386},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-115.png",[115,79388,79390],{"id":79389},"_3262-事件对象的属性","3.2.6.2 事件对象的属性",[14,79392,79393],{},[30,79394],{"alt":32,"src":79395},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-116.png",[14,79397,79398],{},"实现按特殊字符才是实现打印输出效果：",[451,79400,79402],{"className":453,"code":79401,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003C!-- \u003Cbutton>点击\u003C\u002Fbutton> -->\n  \u003Cinput type=\"text\">\n  \u003Cscript>\n    \u002F\u002F const btn = document.querySelector('button')\n    \u002F\u002F btn.addEventListener('click', function (e) {\n    \u002F\u002F   console.log(e);\n    \u002F\u002F })\n    \u002F\u002F 按回车键才进行触发这个事件的话一定要使用事件对象\n    const input = document.querySelector('input')\n    input.addEventListener('keyup', function (e) {\n      if (e.key === 'Enter') {\n        console.log('我按下了回车键')\n      }\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,79403,79404,79412,79417,79431,79439,79444,79449,79454,79458,79463,79468,79473,79478,79483,79487,79491,79499],{"__ignoreMap":32},[460,79405,79406,79408,79410],{"class":462,"line":463},[460,79407,781],{"class":466},[460,79409,1721],{"class":470},[460,79411,473],{"class":466},[460,79413,79414],{"class":462,"line":476},[460,79415,79416],{"class":942},"  \u003C!-- \u003Cbutton>点击\u003C\u002Fbutton> -->\n",[460,79418,79419,79421,79423,79425,79427,79429],{"class":462,"line":482},[460,79420,467],{"class":466},[460,79422,70068],{"class":470},[460,79424,70071],{"class":929},[460,79426,894],{"class":466},[460,79428,78868],{"class":1353},[460,79430,473],{"class":466},[460,79432,79433,79435,79437],{"class":462,"line":488},[460,79434,467],{"class":466},[460,79436,225],{"class":470},[460,79438,473],{"class":466},[460,79440,79441],{"class":462,"line":494},[460,79442,79443],{"class":466},"    \u002F\u002F const btn = document.querySelector('button')\n",[460,79445,79446],{"class":462,"line":500},[460,79447,79448],{"class":466},"    \u002F\u002F btn.addEventListener('click', function (e) {\n",[460,79450,79451],{"class":462,"line":506},[460,79452,79453],{"class":466},"    \u002F\u002F   console.log(e);\n",[460,79455,79456],{"class":462,"line":512},[460,79457,5120],{"class":466},[460,79459,79460],{"class":462,"line":518},[460,79461,79462],{"class":466},"    \u002F\u002F 按回车键才进行触发这个事件的话一定要使用事件对象\n",[460,79464,79465],{"class":462,"line":525},[460,79466,79467],{"class":466},"    const input = document.querySelector('input')\n",[460,79469,79470],{"class":462,"line":531},[460,79471,79472],{"class":466},"    input.addEventListener('keyup', function (e) {\n",[460,79474,79475],{"class":462,"line":537},[460,79476,79477],{"class":466},"      if (e.key === 'Enter') {\n",[460,79479,79480],{"class":462,"line":543},[460,79481,79482],{"class":466},"        console.log('我按下了回车键')\n",[460,79484,79485],{"class":462,"line":549},[460,79486,552],{"class":466},[460,79488,79489],{"class":462,"line":555},[460,79490,1679],{"class":466},[460,79492,79493,79495,79497],{"class":462,"line":560},[460,79494,581],{"class":466},[460,79496,225],{"class":470},[460,79498,473],{"class":466},[460,79500,79501,79503,79505],{"class":462,"line":566},[460,79502,1776],{"class":466},[460,79504,1721],{"class":470},[460,79506,473],{"class":466},[115,79508,79510],{"id":79509},"_3263-trim方法","3.2.6.3 trim方法",[14,79512,79513],{},[30,79514],{"alt":32,"src":79515},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-117.png",[14,79517,79518],{},[30,79519],{"alt":32,"src":79520},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-118.png",[14,79522,79523],{},"打印输出出现了空格，可以去除两侧的空格，不会去除左右的空格",[14,79525,79526],{},"str.trim()",[23,79528,79530],{"id":79529},"_327-环境对象","3.2.7 环境对象",[14,79532,79533],{},[30,79534],{"alt":32,"src":79535},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-119.png",[14,79537,79538],{},[30,79539],{"alt":32,"src":79540},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-120.png",[14,79542,79543],{},[30,79544],{"alt":32,"src":79545},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-121.png",[14,79547,79548],{},"实际函数调用是window.fn()",[14,79550,79551],{},"普通函数里面this指向的是window",[40,79553,79554,79557,79560],{},[43,79555,79556],{},"在普通函数下，this指向的是window",[43,79558,79559],{},"在事件监听中this指向的是调用者，例如下面的开关，this指向的是button",[43,79561,79562],{},"箭头函数没有this",[14,79564,79565],{},"粗略记法就是：谁调用，this就指向谁",[14,79567,79568],{},[30,79569],{"alt":32,"src":79570},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-122.png",[14,79572,79573],{},[30,79574],{"alt":32,"src":79575},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-123.png",[14,79577,79578],{},"这里button调用的这个执行函数，所以this就是button，this就表示它自己",[14,79580,79581],{},"this的用处，点击按钮，按钮自己的字变为粉色：",[451,79583,79585],{"className":453,"code":79584,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cbutton>点击\u003C\u002Fbutton>\n  \u003Cscript>\n    const button = document.querySelector('button')\n    button.addEventListener('click', function () {\n      \u002F\u002F console.log(this);\n      this.style.color = 'pink'\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n",[457,79586,79587,79595,79607,79615,79620,79625,79630,79635,79639,79647],{"__ignoreMap":32},[460,79588,79589,79591,79593],{"class":462,"line":463},[460,79590,781],{"class":466},[460,79592,1721],{"class":470},[460,79594,473],{"class":466},[460,79596,79597,79599,79601,79603,79605],{"class":462,"line":476},[460,79598,467],{"class":466},[460,79600,10501],{"class":470},[460,79602,70139],{"class":466},[460,79604,10501],{"class":470},[460,79606,473],{"class":466},[460,79608,79609,79611,79613],{"class":462,"line":482},[460,79610,467],{"class":466},[460,79612,225],{"class":470},[460,79614,473],{"class":466},[460,79616,79617],{"class":462,"line":488},[460,79618,79619],{"class":466},"    const button = document.querySelector('button')\n",[460,79621,79622],{"class":462,"line":494},[460,79623,79624],{"class":466},"    button.addEventListener('click', function () {\n",[460,79626,79627],{"class":462,"line":500},[460,79628,79629],{"class":466},"      \u002F\u002F console.log(this);\n",[460,79631,79632],{"class":462,"line":506},[460,79633,79634],{"class":466},"      this.style.color = 'pink'\n",[460,79636,79637],{"class":462,"line":512},[460,79638,1679],{"class":466},[460,79640,79641,79643,79645],{"class":462,"line":518},[460,79642,581],{"class":466},[460,79644,225],{"class":470},[460,79646,473],{"class":466},[460,79648,79649,79651,79653],{"class":462,"line":525},[460,79650,1776],{"class":466},[460,79652,1721],{"class":470},[460,79654,473],{"class":466},[23,79656,79658],{"id":79657},"_328-回调函数","3.2.8 回调函数",[14,79660,79661],{},[30,79662],{"alt":32,"src":79663},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-124.png",[14,79665,79666],{},"定时器本身就是个函数，fn函数作为参数传递给了这个定时器这个函数，过了一秒钟就调用这个函数，fn就是回调函数",[14,79668,433],{},[40,79670,79671,79674,79677],{},[43,79672,79673],{},"把函数当做另外一个函数的参数传递，这个函数就叫回调函数",[43,79675,79676],{},"回调函数本质还是函数，只不过把它当成参数使用",[43,79678,79679],{},"使用匿名函数做为回调函数比较常见",[23,79681,79683],{"id":79682},"_329-tab栏切换","3.2.9 tab栏切换",[14,79685,79686],{},[30,79687],{"alt":32,"src":79688},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-125.png",[451,79690,79692],{"className":702,"code":79691,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\" \u002F>\n  \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \u002F>\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\n  \u003Ctitle>tab栏切换\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      margin: 0;\n      padding: 0;\n    }\n\n    .tab {\n      width: 590px;\n      height: 340px;\n      margin: 20px;\n      border: 1px solid #e4e4e4;\n    }\n\n    .tab-nav {\n      width: 100%;\n      height: 60px;\n      line-height: 60px;\n      display: flex;\n      justify-content: space-between;\n    }\n\n    .tab-nav h3 {\n      font-size: 24px;\n      font-weight: normal;\n      margin-left: 20px;\n    }\n\n    .tab-nav ul {\n      list-style: none;\n      display: flex;\n      justify-content: flex-end;\n    }\n\n    .tab-nav ul li {\n      margin: 0 20px;\n      font-size: 14px;\n    }\n\n    .tab-nav ul li a {\n      text-decoration: none;\n      border-bottom: 2px solid transparent;\n      color: #333;\n    }\n\n    .tab-nav ul li a.active {\n      border-color: #e1251b;\n      color: #e1251b;\n    }\n\n    .tab-content {\n      padding: 0 16px;\n    }\n\n    .tab-content .item {\n      display: none;\n    }\n\n    .tab-content .item.active {\n      display: block;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"tab\">\n    \u003Cdiv class=\"tab-nav\">\n      \u003Ch3>每日特价\u003C\u002Fh3>\n      \u003Cul>\n        \u003Cli>\u003Ca class=\"active\" href=\"javascript:;\">精选\u003C\u002Fa>\u003C\u002Fli>\n        \u003Cli>\u003Ca href=\"javascript:;\">美食\u003C\u002Fa>\u003C\u002Fli>\n        \u003Cli>\u003Ca href=\"javascript:;\">百货\u003C\u002Fa>\u003C\u002Fli>\n        \u003Cli>\u003Ca href=\"javascript:;\">个护\u003C\u002Fa>\u003C\u002Fli>\n        \u003Cli>\u003Ca href=\"javascript:;\">预告\u003C\u002Fa>\u003C\u002Fli>\n      \u003C\u002Ful>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"tab-content\">\n      \u003Cdiv class=\"item active\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab00.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n      \u003Cdiv class=\"item\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab01.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n      \u003Cdiv class=\"item\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab02.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n      \u003Cdiv class=\"item\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab03.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n      \u003Cdiv class=\"item\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab04.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    \u002F\u002F 1. a 模块制作 要给 5个链接绑定鼠标经过事件\n    \u002F\u002F 1.1 获取 a 元素 \n    const as = document.querySelectorAll('.tab-nav a')\n    \u002F\u002F console.log(as) \n    for (let i = 0; i \u003C as.length; i++) {\n      \u002F\u002F console.log(as[i])\n      \u002F\u002F 要给 5个链接绑定鼠标经过事件\n      as[i].addEventListener('mouseenter', function () {\n        \u002F\u002F console.log('鼠标经过')\n        \u002F\u002F 排他思想  \n        \u002F\u002F 干掉别人 移除类active\n        document.querySelector('.tab-nav .active').classList.remove('active')\n        \u002F\u002F 我登基 我添加类 active  this 当前的那个 a \n        this.classList.add('active')\n\n        \u002F\u002F 下面5个大盒子 一一对应  .item \n        \u002F\u002F 干掉别人\n        document.querySelector('.tab-content .active').classList.remove('active')\n        \u002F\u002F 对应序号的那个 item 显示 添加 active 类\n        document.querySelector(`.tab-content .item:nth-child(${i + 1})`).classList.add('active')\n\n      })\n    }\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,79693,79694,79704,79718,79722,79730,79744,79764,79784,79797,79805,79811,79821,79831,79835,79839,79846,79859,79872,79884,79900,79904,79908,79915,79927,79939,79951,79961,79971,79975,79979,79988,80000,80010,80022,80026,80030,80038,80048,80058,80068,80072,80076,80086,80100,80112,80116,80120,80132,80142,80159,80169,80173,80177,80191,80202,80212,80216,80220,80227,80242,80246,80250,80258,80268,80272,80276,80285,80295,80299,80307,80315,80319,80327,80342,80357,80370,80378,80411,80438,80465,80492,80519,80527,80535,80550,80587,80622,80657,80692,80727,80735,80743,80751,80756,80761,80781,80786,80815,80820,80825,80843,80848,80853,80858,80880,80885,80900,80904,80909,80914,80935,80940,80969,80973,80977,80981,80989,80997,81001],{"__ignoreMap":32},[460,79695,79696,79698,79700,79702],{"class":462,"line":463},[460,79697,1845],{"class":466},[460,79699,1848],{"class":470},[460,79701,1851],{"class":929},[460,79703,473],{"class":466},[460,79705,79706,79708,79710,79712,79714,79716],{"class":462,"line":476},[460,79707,781],{"class":466},[460,79709,704],{"class":470},[460,79711,1862],{"class":929},[460,79713,894],{"class":466},[460,79715,1867],{"class":1353},[460,79717,473],{"class":466},[460,79719,79720],{"class":462,"line":482},[460,79721,522],{"emptyLinePlaceholder":521},[460,79723,79724,79726,79728],{"class":462,"line":488},[460,79725,781],{"class":466},[460,79727,1880],{"class":470},[460,79729,473],{"class":466},[460,79731,79732,79734,79736,79738,79740,79742],{"class":462,"line":494},[460,79733,467],{"class":466},[460,79735,1889],{"class":470},[460,79737,1892],{"class":929},[460,79739,894],{"class":466},[460,79741,1897],{"class":1353},[460,79743,15726],{"class":466},[460,79745,79746,79748,79750,79752,79754,79756,79758,79760,79762],{"class":462,"line":500},[460,79747,467],{"class":466},[460,79749,1889],{"class":470},[460,79751,15735],{"class":929},[460,79753,894],{"class":466},[460,79755,15740],{"class":1353},[460,79757,1916],{"class":929},[460,79759,894],{"class":466},[460,79761,15747],{"class":1353},[460,79763,15726],{"class":466},[460,79765,79766,79768,79770,79772,79774,79776,79778,79780,79782],{"class":462,"line":506},[460,79767,467],{"class":466},[460,79769,1889],{"class":470},[460,79771,1908],{"class":929},[460,79773,894],{"class":466},[460,79775,1913],{"class":1353},[460,79777,1916],{"class":929},[460,79779,894],{"class":466},[460,79781,1921],{"class":1353},[460,79783,15726],{"class":466},[460,79785,79786,79788,79790,79793,79795],{"class":462,"line":512},[460,79787,467],{"class":466},[460,79789,1930],{"class":470},[460,79791,79792],{"class":466},">tab栏切换\u003C\u002F",[460,79794,1930],{"class":470},[460,79796,473],{"class":466},[460,79798,79799,79801,79803],{"class":462,"line":518},[460,79800,467],{"class":466},[460,79802,1944],{"class":470},[460,79804,473],{"class":466},[460,79806,79807,79809],{"class":462,"line":525},[460,79808,1951],{"class":470},[460,79810,1348],{"class":466},[460,79812,79813,79815,79817,79819],{"class":462,"line":531},[460,79814,1971],{"class":900},[460,79816,1961],{"class":466},[460,79818,936],{"class":900},[460,79820,1966],{"class":466},[460,79822,79823,79825,79827,79829],{"class":462,"line":537},[460,79824,1958],{"class":900},[460,79826,1961],{"class":466},[460,79828,936],{"class":900},[460,79830,1966],{"class":466},[460,79832,79833],{"class":462,"line":543},[460,79834,509],{"class":466},[460,79836,79837],{"class":462,"line":549},[460,79838,522],{"emptyLinePlaceholder":521},[460,79840,79841,79844],{"class":462,"line":555},[460,79842,79843],{"class":929},"    .tab",[460,79845,1348],{"class":466},[460,79847,79848,79850,79852,79855,79857],{"class":462,"line":560},[460,79849,2009],{"class":900},[460,79851,1961],{"class":466},[460,79853,79854],{"class":900},"590",[460,79856,2017],{"class":887},[460,79858,1966],{"class":466},[460,79860,79861,79863,79865,79868,79870],{"class":462,"line":566},[460,79862,5499],{"class":900},[460,79864,1961],{"class":466},[460,79866,79867],{"class":900},"340",[460,79869,2017],{"class":887},[460,79871,1966],{"class":466},[460,79873,79874,79876,79878,79880,79882],{"class":462,"line":572},[460,79875,1971],{"class":900},[460,79877,1961],{"class":466},[460,79879,2110],{"class":900},[460,79881,2017],{"class":887},[460,79883,1966],{"class":466},[460,79885,79886,79888,79890,79892,79894,79896,79898],{"class":462,"line":578},[460,79887,7192],{"class":900},[460,79889,1961],{"class":466},[460,79891,901],{"class":900},[460,79893,2017],{"class":887},[460,79895,7201],{"class":900},[460,79897,7204],{"class":900},[460,79899,1966],{"class":466},[460,79901,79902],{"class":462,"line":812},[460,79903,509],{"class":466},[460,79905,79906],{"class":462,"line":818},[460,79907,522],{"emptyLinePlaceholder":521},[460,79909,79910,79913],{"class":462,"line":824},[460,79911,79912],{"class":929},"    .tab-nav",[460,79914,1348],{"class":466},[460,79916,79917,79919,79921,79923,79925],{"class":462,"line":2074},[460,79918,2009],{"class":900},[460,79920,1961],{"class":466},[460,79922,2325],{"class":900},[460,79924,2328],{"class":887},[460,79926,1966],{"class":466},[460,79928,79929,79931,79933,79935,79937],{"class":462,"line":2088},[460,79930,5499],{"class":900},[460,79932,1961],{"class":466},[460,79934,16027],{"class":900},[460,79936,2017],{"class":887},[460,79938,1966],{"class":466},[460,79940,79941,79943,79945,79947,79949],{"class":462,"line":2103},[460,79942,5513],{"class":900},[460,79944,1961],{"class":466},[460,79946,16027],{"class":900},[460,79948,2017],{"class":887},[460,79950,1966],{"class":466},[460,79952,79953,79955,79957,79959],{"class":462,"line":2122},[460,79954,2037],{"class":900},[460,79956,1961],{"class":466},[460,79958,2042],{"class":900},[460,79960,1966],{"class":466},[460,79962,79963,79965,79967,79969],{"class":462,"line":2144},[460,79964,7653],{"class":900},[460,79966,1961],{"class":466},[460,79968,67939],{"class":900},[460,79970,1966],{"class":466},[460,79972,79973],{"class":462,"line":2158},[460,79974,509],{"class":466},[460,79976,79977],{"class":462,"line":2163},[460,79978,522],{"emptyLinePlaceholder":521},[460,79980,79981,79983,79986],{"class":462,"line":2168},[460,79982,79912],{"class":929},[460,79984,79985],{"class":470}," h3",[460,79987,1348],{"class":466},[460,79989,79990,79992,79994,79996,79998],{"class":462,"line":2183},[460,79991,2356],{"class":900},[460,79993,1961],{"class":466},[460,79995,17515],{"class":900},[460,79997,2017],{"class":887},[460,79999,1966],{"class":466},[460,80001,80002,80004,80006,80008],{"class":462,"line":2194},[460,80003,7734],{"class":900},[460,80005,1961],{"class":466},[460,80007,10181],{"class":900},[460,80009,1966],{"class":466},[460,80011,80012,80014,80016,80018,80020],{"class":462,"line":2199},[460,80013,2091],{"class":900},[460,80015,1961],{"class":466},[460,80017,2110],{"class":900},[460,80019,2017],{"class":887},[460,80021,1966],{"class":466},[460,80023,80024],{"class":462,"line":2204},[460,80025,509],{"class":466},[460,80027,80028],{"class":462,"line":2212},[460,80029,522],{"emptyLinePlaceholder":521},[460,80031,80032,80034,80036],{"class":462,"line":2257},[460,80033,79912],{"class":929},[460,80035,77478],{"class":470},[460,80037,1348],{"class":466},[460,80039,80040,80042,80044,80046],{"class":462,"line":2285},[460,80041,70968],{"class":900},[460,80043,1961],{"class":466},[460,80045,2629],{"class":900},[460,80047,1966],{"class":466},[460,80049,80050,80052,80054,80056],{"class":462,"line":2298},[460,80051,2037],{"class":900},[460,80053,1961],{"class":466},[460,80055,2042],{"class":900},[460,80057,1966],{"class":466},[460,80059,80060,80062,80064,80066],{"class":462,"line":2303},[460,80061,7653],{"class":900},[460,80063,1961],{"class":466},[460,80065,7658],{"class":900},[460,80067,1966],{"class":466},[460,80069,80070],{"class":462,"line":2308},[460,80071,509],{"class":466},[460,80073,80074],{"class":462,"line":2318},[460,80075,522],{"emptyLinePlaceholder":521},[460,80077,80078,80080,80082,80084],{"class":462,"line":2333},[460,80079,79912],{"class":929},[460,80081,77478],{"class":470},[460,80083,71298],{"class":470},[460,80085,1348],{"class":466},[460,80087,80088,80090,80092,80094,80096,80098],{"class":462,"line":2338},[460,80089,1971],{"class":900},[460,80091,1961],{"class":466},[460,80093,936],{"class":900},[460,80095,2590],{"class":900},[460,80097,2017],{"class":887},[460,80099,1966],{"class":466},[460,80101,80102,80104,80106,80108,80110],{"class":462,"line":2343},[460,80103,2356],{"class":900},[460,80105,1961],{"class":466},[460,80107,2480],{"class":900},[460,80109,2017],{"class":887},[460,80111,1966],{"class":466},[460,80113,80114],{"class":462,"line":2353},[460,80115,509],{"class":466},[460,80117,80118],{"class":462,"line":2368},[460,80119,522],{"emptyLinePlaceholder":521},[460,80121,80122,80124,80126,80128,80130],{"class":462,"line":2381},[460,80123,79912],{"class":929},[460,80125,77478],{"class":470},[460,80127,71298],{"class":470},[460,80129,2574],{"class":470},[460,80131,1348],{"class":466},[460,80133,80134,80136,80138,80140],{"class":462,"line":2394},[460,80135,2624],{"class":900},[460,80137,1961],{"class":466},[460,80139,2629],{"class":900},[460,80141,1966],{"class":466},[460,80143,80144,80146,80148,80150,80152,80154,80157],{"class":462,"line":2399},[460,80145,78406],{"class":900},[460,80147,1961],{"class":466},[460,80149,907],{"class":900},[460,80151,2017],{"class":887},[460,80153,7201],{"class":900},[460,80155,80156],{"class":900}," transparent",[460,80158,1966],{"class":466},[460,80160,80161,80163,80165,80167],{"class":462,"line":2404},[460,80162,2384],{"class":900},[460,80164,1961],{"class":466},[460,80166,78540],{"class":900},[460,80168,1966],{"class":466},[460,80170,80171],{"class":462,"line":2414},[460,80172,509],{"class":466},[460,80174,80175],{"class":462,"line":2428},[460,80176,522],{"emptyLinePlaceholder":521},[460,80178,80179,80181,80183,80185,80187,80189],{"class":462,"line":2440},[460,80180,79912],{"class":929},[460,80182,77478],{"class":470},[460,80184,71298],{"class":470},[460,80186,2574],{"class":470},[460,80188,16116],{"class":929},[460,80190,1348],{"class":466},[460,80192,80193,80195,80197,80200],{"class":462,"line":2445},[460,80194,77975],{"class":900},[460,80196,1961],{"class":466},[460,80198,80199],{"class":900},"#e1251b",[460,80201,1966],{"class":466},[460,80203,80204,80206,80208,80210],{"class":462,"line":2450},[460,80205,2384],{"class":900},[460,80207,1961],{"class":466},[460,80209,80199],{"class":900},[460,80211,1966],{"class":466},[460,80213,80214],{"class":462,"line":2460},[460,80215,509],{"class":466},[460,80217,80218],{"class":462,"line":2473},[460,80219,522],{"emptyLinePlaceholder":521},[460,80221,80222,80225],{"class":462,"line":2487},[460,80223,80224],{"class":929},"    .tab-content",[460,80226,1348],{"class":466},[460,80228,80229,80231,80233,80235,80238,80240],{"class":462,"line":2492},[460,80230,1958],{"class":900},[460,80232,1961],{"class":466},[460,80234,936],{"class":900},[460,80236,80237],{"class":900}," 16",[460,80239,2017],{"class":887},[460,80241,1966],{"class":466},[460,80243,80244],{"class":462,"line":2497},[460,80245,509],{"class":466},[460,80247,80248],{"class":462,"line":2505},[460,80249,522],{"emptyLinePlaceholder":521},[460,80251,80252,80254,80256],{"class":462,"line":2516},[460,80253,80224],{"class":929},[460,80255,78348],{"class":929},[460,80257,1348],{"class":466},[460,80259,80260,80262,80264,80266],{"class":462,"line":2529},[460,80261,2037],{"class":900},[460,80263,1961],{"class":466},[460,80265,2629],{"class":900},[460,80267,1966],{"class":466},[460,80269,80270],{"class":462,"line":2542},[460,80271,509],{"class":466},[460,80273,80274],{"class":462,"line":2559},[460,80275,522],{"emptyLinePlaceholder":521},[460,80277,80278,80280,80283],{"class":462,"line":2564},[460,80279,80224],{"class":929},[460,80281,80282],{"class":929}," .item.active",[460,80284,1348],{"class":466},[460,80286,80287,80289,80291,80293],{"class":462,"line":2569},[460,80288,2037],{"class":900},[460,80290,1961],{"class":466},[460,80292,7350],{"class":900},[460,80294,1966],{"class":466},[460,80296,80297],{"class":462,"line":2579},[460,80298,509],{"class":466},[460,80300,80301,80303,80305],{"class":462,"line":2597},[460,80302,581],{"class":466},[460,80304,1944],{"class":470},[460,80306,473],{"class":466},[460,80308,80309,80311,80313],{"class":462,"line":2610},[460,80310,1776],{"class":466},[460,80312,1880],{"class":470},[460,80314,473],{"class":466},[460,80316,80317],{"class":462,"line":2621},[460,80318,522],{"emptyLinePlaceholder":521},[460,80320,80321,80323,80325],{"class":462,"line":2634},[460,80322,781],{"class":466},[460,80324,1721],{"class":470},[460,80326,473],{"class":466},[460,80328,80329,80331,80333,80335,80337,80340],{"class":462,"line":2648},[460,80330,467],{"class":466},[460,80332,2737],{"class":470},[460,80334,2740],{"class":929},[460,80336,894],{"class":466},[460,80338,80339],{"class":1353},"\"tab\"",[460,80341,473],{"class":466},[460,80343,80344,80346,80348,80350,80352,80355],{"class":462,"line":2653},[460,80345,2753],{"class":466},[460,80347,2737],{"class":470},[460,80349,2740],{"class":929},[460,80351,894],{"class":466},[460,80353,80354],{"class":1353},"\"tab-nav\"",[460,80356,473],{"class":466},[460,80358,80359,80361,80363,80366,80368],{"class":462,"line":2658},[460,80360,16196],{"class":466},[460,80362,23],{"class":470},[460,80364,80365],{"class":466},">每日特价\u003C\u002F",[460,80367,23],{"class":470},[460,80369,473],{"class":466},[460,80371,80372,80374,80376],{"class":462,"line":2670},[460,80373,16196],{"class":466},[460,80375,40],{"class":470},[460,80377,473],{"class":466},[460,80379,80380,80382,80384,80386,80388,80390,80392,80394,80396,80398,80400,80403,80405,80407,80409],{"class":462,"line":2683},[460,80381,16212],{"class":466},[460,80383,43],{"class":470},[460,80385,77241],{"class":466},[460,80387,2756],{"class":470},[460,80389,2740],{"class":929},[460,80391,894],{"class":466},[460,80393,75901],{"class":1353},[460,80395,2759],{"class":929},[460,80397,894],{"class":466},[460,80399,16322],{"class":1353},[460,80401,80402],{"class":466},">精选\u003C\u002F",[460,80404,2756],{"class":470},[460,80406,5599],{"class":466},[460,80408,43],{"class":470},[460,80410,473],{"class":466},[460,80412,80413,80415,80417,80419,80421,80423,80425,80427,80430,80432,80434,80436],{"class":462,"line":2695},[460,80414,16212],{"class":466},[460,80416,43],{"class":470},[460,80418,77241],{"class":466},[460,80420,2756],{"class":470},[460,80422,2759],{"class":929},[460,80424,894],{"class":466},[460,80426,16322],{"class":1353},[460,80428,80429],{"class":466},">美食\u003C\u002F",[460,80431,2756],{"class":470},[460,80433,5599],{"class":466},[460,80435,43],{"class":470},[460,80437,473],{"class":466},[460,80439,80440,80442,80444,80446,80448,80450,80452,80454,80457,80459,80461,80463],{"class":462,"line":2700},[460,80441,16212],{"class":466},[460,80443,43],{"class":470},[460,80445,77241],{"class":466},[460,80447,2756],{"class":470},[460,80449,2759],{"class":929},[460,80451,894],{"class":466},[460,80453,16322],{"class":1353},[460,80455,80456],{"class":466},">百货\u003C\u002F",[460,80458,2756],{"class":470},[460,80460,5599],{"class":466},[460,80462,43],{"class":470},[460,80464,473],{"class":466},[460,80466,80467,80469,80471,80473,80475,80477,80479,80481,80484,80486,80488,80490],{"class":462,"line":2709},[460,80468,16212],{"class":466},[460,80470,43],{"class":470},[460,80472,77241],{"class":466},[460,80474,2756],{"class":470},[460,80476,2759],{"class":929},[460,80478,894],{"class":466},[460,80480,16322],{"class":1353},[460,80482,80483],{"class":466},">个护\u003C\u002F",[460,80485,2756],{"class":470},[460,80487,5599],{"class":466},[460,80489,43],{"class":470},[460,80491,473],{"class":466},[460,80493,80494,80496,80498,80500,80502,80504,80506,80508,80511,80513,80515,80517],{"class":462,"line":2718},[460,80495,16212],{"class":466},[460,80497,43],{"class":470},[460,80499,77241],{"class":466},[460,80501,2756],{"class":470},[460,80503,2759],{"class":929},[460,80505,894],{"class":466},[460,80507,16322],{"class":1353},[460,80509,80510],{"class":466},">预告\u003C\u002F",[460,80512,2756],{"class":470},[460,80514,5599],{"class":466},[460,80516,43],{"class":470},[460,80518,473],{"class":466},[460,80520,80521,80523,80525],{"class":462,"line":2723},[460,80522,16235],{"class":466},[460,80524,40],{"class":470},[460,80526,473],{"class":466},[460,80528,80529,80531,80533],{"class":462,"line":2732},[460,80530,16244],{"class":466},[460,80532,2737],{"class":470},[460,80534,473],{"class":466},[460,80536,80537,80539,80541,80543,80545,80548],{"class":462,"line":2750},[460,80538,2753],{"class":466},[460,80540,2737],{"class":470},[460,80542,2740],{"class":929},[460,80544,894],{"class":466},[460,80546,80547],{"class":1353},"\"tab-content\"",[460,80549,473],{"class":466},[460,80551,80552,80554,80556,80558,80560,80563,80565,80567,80569,80571,80574,80576,80578,80580,80583,80585],{"class":462,"line":2782},[460,80553,16196],{"class":466},[460,80555,2737],{"class":470},[460,80557,2740],{"class":929},[460,80559,894],{"class":466},[460,80561,80562],{"class":1353},"\"item active\"",[460,80564,77241],{"class":466},[460,80566,30],{"class":470},[460,80568,12081],{"class":929},[460,80570,894],{"class":466},[460,80572,80573],{"class":1353},"\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab00.png\"",[460,80575,16224],{"class":929},[460,80577,894],{"class":466},[460,80579,6606],{"class":1353},[460,80581,80582],{"class":466}," \u002F>\u003C\u002F",[460,80584,2737],{"class":470},[460,80586,473],{"class":466},[460,80588,80589,80591,80593,80595,80597,80599,80601,80603,80605,80607,80610,80612,80614,80616,80618,80620],{"class":462,"line":2809},[460,80590,16196],{"class":466},[460,80592,2737],{"class":470},[460,80594,2740],{"class":929},[460,80596,894],{"class":466},[460,80598,78792],{"class":1353},[460,80600,77241],{"class":466},[460,80602,30],{"class":470},[460,80604,12081],{"class":929},[460,80606,894],{"class":466},[460,80608,80609],{"class":1353},"\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab01.png\"",[460,80611,16224],{"class":929},[460,80613,894],{"class":466},[460,80615,6606],{"class":1353},[460,80617,80582],{"class":466},[460,80619,2737],{"class":470},[460,80621,473],{"class":466},[460,80623,80624,80626,80628,80630,80632,80634,80636,80638,80640,80642,80645,80647,80649,80651,80653,80655],{"class":462,"line":2836},[460,80625,16196],{"class":466},[460,80627,2737],{"class":470},[460,80629,2740],{"class":929},[460,80631,894],{"class":466},[460,80633,78792],{"class":1353},[460,80635,77241],{"class":466},[460,80637,30],{"class":470},[460,80639,12081],{"class":929},[460,80641,894],{"class":466},[460,80643,80644],{"class":1353},"\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab02.png\"",[460,80646,16224],{"class":929},[460,80648,894],{"class":466},[460,80650,6606],{"class":1353},[460,80652,80582],{"class":466},[460,80654,2737],{"class":470},[460,80656,473],{"class":466},[460,80658,80659,80661,80663,80665,80667,80669,80671,80673,80675,80677,80680,80682,80684,80686,80688,80690],{"class":462,"line":2856},[460,80660,16196],{"class":466},[460,80662,2737],{"class":470},[460,80664,2740],{"class":929},[460,80666,894],{"class":466},[460,80668,78792],{"class":1353},[460,80670,77241],{"class":466},[460,80672,30],{"class":470},[460,80674,12081],{"class":929},[460,80676,894],{"class":466},[460,80678,80679],{"class":1353},"\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab03.png\"",[460,80681,16224],{"class":929},[460,80683,894],{"class":466},[460,80685,6606],{"class":1353},[460,80687,80582],{"class":466},[460,80689,2737],{"class":470},[460,80691,473],{"class":466},[460,80693,80694,80696,80698,80700,80702,80704,80706,80708,80710,80712,80715,80717,80719,80721,80723,80725],{"class":462,"line":2865},[460,80695,16196],{"class":466},[460,80697,2737],{"class":470},[460,80699,2740],{"class":929},[460,80701,894],{"class":466},[460,80703,78792],{"class":1353},[460,80705,77241],{"class":466},[460,80707,30],{"class":470},[460,80709,12081],{"class":929},[460,80711,894],{"class":466},[460,80713,80714],{"class":1353},"\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab04.png\"",[460,80716,16224],{"class":929},[460,80718,894],{"class":466},[460,80720,6606],{"class":1353},[460,80722,80582],{"class":466},[460,80724,2737],{"class":470},[460,80726,473],{"class":466},[460,80728,80729,80731,80733],{"class":462,"line":2881},[460,80730,16244],{"class":466},[460,80732,2737],{"class":470},[460,80734,473],{"class":466},[460,80736,80737,80739,80741],{"class":462,"line":2887},[460,80738,581],{"class":466},[460,80740,2737],{"class":470},[460,80742,473],{"class":466},[460,80744,80745,80747,80749],{"class":462,"line":2893},[460,80746,467],{"class":466},[460,80748,225],{"class":470},[460,80750,473],{"class":466},[460,80752,80753],{"class":462,"line":2899},[460,80754,80755],{"class":942},"    \u002F\u002F 1. a 模块制作 要给 5个链接绑定鼠标经过事件\n",[460,80757,80758],{"class":462,"line":2905},[460,80759,80760],{"class":942},"    \u002F\u002F 1.1 获取 a 元素 \n",[460,80762,80763,80765,80768,80770,80772,80774,80776,80779],{"class":462,"line":2911},[460,80764,1340],{"class":887},[460,80766,80767],{"class":900}," as",[460,80769,2943],{"class":887},[460,80771,10599],{"class":466},[460,80773,71892],{"class":929},[460,80775,2174],{"class":466},[460,80777,80778],{"class":1353},"'.tab-nav a'",[460,80780,3754],{"class":466},[460,80782,80783],{"class":462,"line":2920},[460,80784,80785],{"class":942},"    \u002F\u002F console.log(as) \n",[460,80787,80788,80790,80792,80794,80796,80798,80800,80802,80804,80807,80809,80811,80813],{"class":462,"line":2929},[460,80789,19722],{"class":887},[460,80791,11704],{"class":466},[460,80793,11707],{"class":887},[460,80795,13991],{"class":466},[460,80797,894],{"class":887},[460,80799,2224],{"class":900},[460,80801,25930],{"class":466},[460,80803,781],{"class":887},[460,80805,80806],{"class":466}," as.",[460,80808,68231],{"class":900},[460,80810,19735],{"class":466},[460,80812,18828],{"class":887},[460,80814,2180],{"class":466},[460,80816,80817],{"class":462,"line":2935},[460,80818,80819],{"class":942},"      \u002F\u002F console.log(as[i])\n",[460,80821,80822],{"class":462,"line":2948},[460,80823,80824],{"class":942},"      \u002F\u002F 要给 5个链接绑定鼠标经过事件\n",[460,80826,80827,80830,80832,80834,80837,80839,80841],{"class":462,"line":2954},[460,80828,80829],{"class":466},"      as[i].",[460,80831,3599],{"class":929},[460,80833,2174],{"class":466},[460,80835,80836],{"class":1353},"'mouseenter'",[460,80838,904],{"class":466},[460,80840,3976],{"class":887},[460,80842,9376],{"class":466},[460,80844,80845],{"class":462,"line":2965},[460,80846,80847],{"class":942},"        \u002F\u002F console.log('鼠标经过')\n",[460,80849,80850],{"class":462,"line":2976},[460,80851,80852],{"class":942},"        \u002F\u002F 排他思想  \n",[460,80854,80855],{"class":462,"line":2987},[460,80856,80857],{"class":942},"        \u002F\u002F 干掉别人 移除类active\n",[460,80859,80860,80862,80864,80866,80869,80871,80873,80875,80878],{"class":462,"line":2998},[460,80861,68188],{"class":466},[460,80863,3541],{"class":929},[460,80865,2174],{"class":466},[460,80867,80868],{"class":1353},"'.tab-nav .active'",[460,80870,73213],{"class":466},[460,80872,10755],{"class":929},[460,80874,2174],{"class":466},[460,80876,80877],{"class":1353},"'active'",[460,80879,3754],{"class":466},[460,80881,80882],{"class":462,"line":3003},[460,80883,80884],{"class":942},"        \u002F\u002F 我登基 我添加类 active  this 当前的那个 a \n",[460,80886,80887,80889,80892,80894,80896,80898],{"class":462,"line":3008},[460,80888,10847],{"class":900},[460,80890,80891],{"class":466},".classList.",[460,80893,21840],{"class":929},[460,80895,2174],{"class":466},[460,80897,80877],{"class":1353},[460,80899,3754],{"class":466},[460,80901,80902],{"class":462,"line":3018},[460,80903,522],{"emptyLinePlaceholder":521},[460,80905,80906],{"class":462,"line":3028},[460,80907,80908],{"class":942},"        \u002F\u002F 下面5个大盒子 一一对应  .item \n",[460,80910,80911],{"class":462,"line":3038},[460,80912,80913],{"class":942},"        \u002F\u002F 干掉别人\n",[460,80915,80916,80918,80920,80922,80925,80927,80929,80931,80933],{"class":462,"line":3048},[460,80917,68188],{"class":466},[460,80919,3541],{"class":929},[460,80921,2174],{"class":466},[460,80923,80924],{"class":1353},"'.tab-content .active'",[460,80926,73213],{"class":466},[460,80928,10755],{"class":929},[460,80930,2174],{"class":466},[460,80932,80877],{"class":1353},[460,80934,3754],{"class":466},[460,80936,80937],{"class":462,"line":3053},[460,80938,80939],{"class":942},"        \u002F\u002F 对应序号的那个 item 显示 添加 active 类\n",[460,80941,80942,80944,80946,80948,80951,80953,80955,80957,80959,80961,80963,80965,80967],{"class":462,"line":3058},[460,80943,68188],{"class":466},[460,80945,3541],{"class":929},[460,80947,2174],{"class":466},[460,80949,80950],{"class":1353},"`.tab-content .item:nth-child(${",[460,80952,17174],{"class":466},[460,80954,61870],{"class":887},[460,80956,1400],{"class":900},[460,80958,73241],{"class":1353},[460,80960,73213],{"class":466},[460,80962,21840],{"class":929},[460,80964,2174],{"class":466},[460,80966,80877],{"class":1353},[460,80968,3754],{"class":466},[460,80970,80971],{"class":462,"line":3068},[460,80972,522],{"emptyLinePlaceholder":521},[460,80974,80975],{"class":462,"line":3078},[460,80976,3526],{"class":466},[460,80978,80979],{"class":462,"line":3088},[460,80980,509],{"class":466},[460,80982,80983,80985,80987],{"class":462,"line":3098},[460,80984,581],{"class":466},[460,80986,225],{"class":470},[460,80988,473],{"class":466},[460,80990,80991,80993,80995],{"class":462,"line":3103},[460,80992,1776],{"class":466},[460,80994,1721],{"class":470},[460,80996,473],{"class":466},[460,80998,80999],{"class":462,"line":3108},[460,81000,522],{"emptyLinePlaceholder":521},[460,81002,81003,81005,81007],{"class":462,"line":3118},[460,81004,1776],{"class":466},[460,81006,704],{"class":470},[460,81008,473],{"class":466},[14,81010,81011],{},"总结：不要忘记this，还有tab栏优先考虑使用循环！！！",[14,81013,81014],{},"在监听事件中，this指向的就是他的调用者",[14,81016,81017],{},"补充：如果刚开始是没有active选中的，可以进行.active(使用这个类)的对象元素的获取，如果没有就是null，空为假，然后就可以进行if语句的判断，如果假的话就不用执行删除，真的话就删除，然后再添加active这个类就可以！",[14,81019,69967],{},[14,81021,81022],{},"(function () {",[14,81024,81025],{},"const list = document.querySelector('.xtx-elevator-list')",[14,81027,81028],{},"list.addEventListener('click', function (e) {",[14,81030,81031],{},"if (e.target.tagName === 'A') {",[14,81033,81034],{},"\u002F\u002F 排他思想",[14,81036,81037],{},"\u002F\u002F 在不知道有么有active这个类的情况下不能上来就删除",[14,81039,81040],{},"const old = document.querySelector('.xtx-elevator-list .active')",[14,81042,81043],{},"\u002F\u002F console.log(old);",[14,81045,81046],{},"\u002F\u002F 判断",[14,81048,81049],{},"\u002F\u002F 没有的话old=null，空为假，就不执行后边的操作",[14,81051,81052],{},"if (old) old.classList.remove('active')",[14,81054,81055],{},"e.target.classList.add('active')",[14,81057,612],{},[14,81059,1580],{},[14,81061,81062],{},"})();",[23,81064,81066],{"id":81065},"_3210-按钮全选或反选案例","3.2.10 按钮全选或反选案例",[451,81068,81070],{"className":702,"code":81069,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\n\u003Chtml>\n\n\u003Chead lang=\"en\">\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Ctitle>\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      margin: 0;\n      padding: 0;\n    }\n\n    table {\n      border-collapse: collapse;\n      border-spacing: 0;\n      border: 1px solid #c0c0c0;\n      width: 500px;\n      margin: 100px auto;\n      text-align: center;\n    }\n\n    th {\n      background-color: #09c;\n      font: bold 16px \"微软雅黑\";\n      color: #fff;\n      height: 24px;\n    }\n\n    td {\n      border: 1px solid #d0d0d0;\n      color: #404060;\n      padding: 10px;\n    }\n\n    .allCheck {\n      width: 80px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Ctable>\n    \u003Ctr>\n      \u003Cth class=\"allCheck\">\n        \u003Cinput type=\"checkbox\" name=\"\" id=\"checkAll\"> \u003Cspan class=\"all\">全选\u003C\u002Fspan>\n      \u003C\u002Fth>\n      \u003Cth>商品\u003C\u002Fth>\n      \u003Cth>商家\u003C\u002Fth>\n      \u003Cth>价格\u003C\u002Fth>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cinput type=\"checkbox\" name=\"check\" class=\"ck\">\n      \u003C\u002Ftd>\n      \u003Ctd>小米手机\u003C\u002Ftd>\n      \u003Ctd>小米\u003C\u002Ftd>\n      \u003Ctd>￥1999\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cinput type=\"checkbox\" name=\"check\" class=\"ck\">\n      \u003C\u002Ftd>\n      \u003Ctd>小米净水器\u003C\u002Ftd>\n      \u003Ctd>小米\u003C\u002Ftd>\n      \u003Ctd>￥4999\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cinput type=\"checkbox\" name=\"check\" class=\"ck\">\n      \u003C\u002Ftd>\n      \u003Ctd>小米电视\u003C\u002Ftd>\n      \u003Ctd>小米\u003C\u002Ftd>\n      \u003Ctd>￥5999\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftable>\n  \u003Cscript>\n    \u002F\u002F 1. 获取大复选框\n    const checkAll = document.querySelector('#checkAll')\n    \u002F\u002F 2. 获取所有的小复选框\n    const cks = document.querySelectorAll('.ck')\n    \u002F\u002F 3. 点击大复选框  注册事件\n    checkAll.addEventListener('click', function () {\n      \u002F\u002F 得到当前大复选框的选中状态\n      \u002F\u002F console.log(checkAll.checked)  \u002F\u002F 得到 是 true 或者是 false\n      \u002F\u002F 4. 遍历所有的小复选框 让小复选框的checked  =  大复选框的 checked\n      for (let i = 0; i \u003C cks.length; i++) {\n        cks[i].checked = this.checked\n      }\n    })\n    \u002F\u002F 5. 小复选框控制大复选框\n\n    for (let i = 0; i \u003C cks.length; i++) {\n      \u002F\u002F 5.1 给所有的小复选框添加点击事件\n      cks[i].addEventListener('click', function () {\n        \u002F\u002F 判断选中的小复选框个数 是不是等于  总的小复选框个数\n        \u002F\u002F 一定要写到点击里面，因为每次要获得最新的个数\n        \u002F\u002F console.log(document.querySelectorAll('.ck:checked').length)\n        \u002F\u002F console.log(document.querySelectorAll('.ck:checked').length === cks.length)\n        checkAll.checked = document.querySelectorAll('.ck:checked').length === cks.length\n      })\n    }\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,81071,81072,81082,81086,81094,81098,81112,81126,81138,81146,81152,81162,81172,81176,81180,81187,81199,81210,81227,81239,81253,81263,81267,81271,81278,81289,81306,81316,81328,81332,81336,81343,81360,81371,81383,81387,81391,81398,81410,81414,81422,81430,81434,81442,81450,81458,81473,81517,81525,81538,81551,81564,81572,81580,81588,81616,81624,81636,81649,81662,81670,81678,81686,81712,81720,81733,81745,81758,81766,81774,81782,81808,81816,81829,81841,81854,81862,81870,81878,81883,81903,81908,81928,81933,81950,81955,81963,81968,81997,82010,82014,82018,82023,82027,82055,82060,82077,82082,82087,82092,82097,82123,82127,82131,82139,82147,82151],{"__ignoreMap":32},[460,81073,81074,81076,81078,81080],{"class":462,"line":463},[460,81075,1845],{"class":466},[460,81077,1848],{"class":470},[460,81079,1851],{"class":929},[460,81081,473],{"class":466},[460,81083,81084],{"class":462,"line":476},[460,81085,522],{"emptyLinePlaceholder":521},[460,81087,81088,81090,81092],{"class":462,"line":482},[460,81089,781],{"class":466},[460,81091,704],{"class":470},[460,81093,473],{"class":466},[460,81095,81096],{"class":462,"line":488},[460,81097,522],{"emptyLinePlaceholder":521},[460,81099,81100,81102,81104,81106,81108,81110],{"class":462,"line":494},[460,81101,781],{"class":466},[460,81103,1880],{"class":470},[460,81105,1862],{"class":929},[460,81107,894],{"class":466},[460,81109,1867],{"class":1353},[460,81111,473],{"class":466},[460,81113,81114,81116,81118,81120,81122,81124],{"class":462,"line":500},[460,81115,467],{"class":466},[460,81117,1889],{"class":470},[460,81119,1892],{"class":929},[460,81121,894],{"class":466},[460,81123,1897],{"class":1353},[460,81125,473],{"class":466},[460,81127,81128,81130,81132,81134,81136],{"class":462,"line":506},[460,81129,467],{"class":466},[460,81131,1930],{"class":470},[460,81133,5599],{"class":466},[460,81135,1930],{"class":470},[460,81137,473],{"class":466},[460,81139,81140,81142,81144],{"class":462,"line":512},[460,81141,467],{"class":466},[460,81143,1944],{"class":470},[460,81145,473],{"class":466},[460,81147,81148,81150],{"class":462,"line":518},[460,81149,1951],{"class":470},[460,81151,1348],{"class":466},[460,81153,81154,81156,81158,81160],{"class":462,"line":525},[460,81155,1971],{"class":900},[460,81157,1961],{"class":466},[460,81159,936],{"class":900},[460,81161,1966],{"class":466},[460,81163,81164,81166,81168,81170],{"class":462,"line":531},[460,81165,1958],{"class":900},[460,81167,1961],{"class":466},[460,81169,936],{"class":900},[460,81171,1966],{"class":466},[460,81173,81174],{"class":462,"line":537},[460,81175,509],{"class":466},[460,81177,81178],{"class":462,"line":543},[460,81179,522],{"emptyLinePlaceholder":521},[460,81181,81182,81185],{"class":462,"line":549},[460,81183,81184],{"class":470},"    table",[460,81186,1348],{"class":466},[460,81188,81189,81192,81194,81197],{"class":462,"line":555},[460,81190,81191],{"class":900},"      border-collapse",[460,81193,1961],{"class":466},[460,81195,81196],{"class":900},"collapse",[460,81198,1966],{"class":466},[460,81200,81201,81204,81206,81208],{"class":462,"line":560},[460,81202,81203],{"class":900},"      border-spacing",[460,81205,1961],{"class":466},[460,81207,936],{"class":900},[460,81209,1966],{"class":466},[460,81211,81212,81214,81216,81218,81220,81222,81225],{"class":462,"line":566},[460,81213,7192],{"class":900},[460,81215,1961],{"class":466},[460,81217,901],{"class":900},[460,81219,2017],{"class":887},[460,81221,7201],{"class":900},[460,81223,81224],{"class":900}," #c0c0c0",[460,81226,1966],{"class":466},[460,81228,81229,81231,81233,81235,81237],{"class":462,"line":572},[460,81230,2009],{"class":900},[460,81232,1961],{"class":466},[460,81234,14065],{"class":900},[460,81236,2017],{"class":887},[460,81238,1966],{"class":466},[460,81240,81241,81243,81245,81247,81249,81251],{"class":462,"line":578},[460,81242,1971],{"class":900},[460,81244,1961],{"class":466},[460,81246,2325],{"class":900},[460,81248,2017],{"class":887},[460,81250,2030],{"class":900},[460,81252,1966],{"class":466},[460,81254,81255,81257,81259,81261],{"class":462,"line":812},[460,81256,5540],{"class":900},[460,81258,1961],{"class":466},[460,81260,5545],{"class":900},[460,81262,1966],{"class":466},[460,81264,81265],{"class":462,"line":818},[460,81266,509],{"class":466},[460,81268,81269],{"class":462,"line":824},[460,81270,522],{"emptyLinePlaceholder":521},[460,81272,81273,81276],{"class":462,"line":2074},[460,81274,81275],{"class":470},"    th",[460,81277,1348],{"class":466},[460,81279,81280,81282,81284,81287],{"class":462,"line":2088},[460,81281,2673],{"class":900},[460,81283,1961],{"class":466},[460,81285,81286],{"class":900},"#09c",[460,81288,1966],{"class":466},[460,81290,81291,81293,81295,81297,81299,81301,81304],{"class":462,"line":2103},[460,81292,5526],{"class":900},[460,81294,1961],{"class":466},[460,81296,78510],{"class":900},[460,81298,80237],{"class":900},[460,81300,2017],{"class":887},[460,81302,81303],{"class":1353}," \"微软雅黑\"",[460,81305,1966],{"class":466},[460,81307,81308,81310,81312,81314],{"class":462,"line":2122},[460,81309,2384],{"class":900},[460,81311,1961],{"class":466},[460,81313,2690],{"class":900},[460,81315,1966],{"class":466},[460,81317,81318,81320,81322,81324,81326],{"class":462,"line":2144},[460,81319,5499],{"class":900},[460,81321,1961],{"class":466},[460,81323,17515],{"class":900},[460,81325,2017],{"class":887},[460,81327,1966],{"class":466},[460,81329,81330],{"class":462,"line":2158},[460,81331,509],{"class":466},[460,81333,81334],{"class":462,"line":2163},[460,81335,522],{"emptyLinePlaceholder":521},[460,81337,81338,81341],{"class":462,"line":2168},[460,81339,81340],{"class":470},"    td",[460,81342,1348],{"class":466},[460,81344,81345,81347,81349,81351,81353,81355,81358],{"class":462,"line":2183},[460,81346,7192],{"class":900},[460,81348,1961],{"class":466},[460,81350,901],{"class":900},[460,81352,2017],{"class":887},[460,81354,7201],{"class":900},[460,81356,81357],{"class":900}," #d0d0d0",[460,81359,1966],{"class":466},[460,81361,81362,81364,81366,81369],{"class":462,"line":2194},[460,81363,2384],{"class":900},[460,81365,1961],{"class":466},[460,81367,81368],{"class":900},"#404060",[460,81370,1966],{"class":466},[460,81372,81373,81375,81377,81379,81381],{"class":462,"line":2199},[460,81374,1958],{"class":900},[460,81376,1961],{"class":466},[460,81378,2096],{"class":900},[460,81380,2017],{"class":887},[460,81382,1966],{"class":466},[460,81384,81385],{"class":462,"line":2204},[460,81386,509],{"class":466},[460,81388,81389],{"class":462,"line":2212},[460,81390,522],{"emptyLinePlaceholder":521},[460,81392,81393,81396],{"class":462,"line":2257},[460,81394,81395],{"class":929},"    .allCheck",[460,81397,1348],{"class":466},[460,81399,81400,81402,81404,81406,81408],{"class":462,"line":2285},[460,81401,2009],{"class":900},[460,81403,1961],{"class":466},[460,81405,7265],{"class":900},[460,81407,2017],{"class":887},[460,81409,1966],{"class":466},[460,81411,81412],{"class":462,"line":2298},[460,81413,509],{"class":466},[460,81415,81416,81418,81420],{"class":462,"line":2303},[460,81417,581],{"class":466},[460,81419,1944],{"class":470},[460,81421,473],{"class":466},[460,81423,81424,81426,81428],{"class":462,"line":2308},[460,81425,1776],{"class":466},[460,81427,1880],{"class":470},[460,81429,473],{"class":466},[460,81431,81432],{"class":462,"line":2318},[460,81433,522],{"emptyLinePlaceholder":521},[460,81435,81436,81438,81440],{"class":462,"line":2333},[460,81437,781],{"class":466},[460,81439,1721],{"class":470},[460,81441,473],{"class":466},[460,81443,81444,81446,81448],{"class":462,"line":2338},[460,81445,467],{"class":466},[460,81447,16884],{"class":470},[460,81449,473],{"class":466},[460,81451,81452,81454,81456],{"class":462,"line":2343},[460,81453,2753],{"class":466},[460,81455,16890],{"class":470},[460,81457,473],{"class":466},[460,81459,81460,81462,81464,81466,81468,81471],{"class":462,"line":2353},[460,81461,16196],{"class":466},[460,81463,16893],{"class":470},[460,81465,2740],{"class":929},[460,81467,894],{"class":466},[460,81469,81470],{"class":1353},"\"allCheck\"",[460,81472,473],{"class":466},[460,81474,81475,81477,81479,81481,81483,81485,81487,81489,81491,81493,81495,81498,81501,81503,81505,81507,81510,81513,81515],{"class":462,"line":2368},[460,81476,16212],{"class":466},[460,81478,70068],{"class":470},[460,81480,70071],{"class":929},[460,81482,894],{"class":466},[460,81484,70076],{"class":1353},[460,81486,1908],{"class":929},[460,81488,894],{"class":466},[460,81490,6606],{"class":1353},[460,81492,10504],{"class":929},[460,81494,894],{"class":466},[460,81496,81497],{"class":1353},"\"checkAll\"",[460,81499,81500],{"class":466},"> \u003C",[460,81502,460],{"class":470},[460,81504,2740],{"class":929},[460,81506,894],{"class":466},[460,81508,81509],{"class":1353},"\"all\"",[460,81511,81512],{"class":466},">全选\u003C\u002F",[460,81514,460],{"class":470},[460,81516,473],{"class":466},[460,81518,81519,81521,81523],{"class":462,"line":2381},[460,81520,16235],{"class":466},[460,81522,16893],{"class":470},[460,81524,473],{"class":466},[460,81526,81527,81529,81531,81534,81536],{"class":462,"line":2394},[460,81528,16196],{"class":466},[460,81530,16893],{"class":470},[460,81532,81533],{"class":466},">商品\u003C\u002F",[460,81535,16893],{"class":470},[460,81537,473],{"class":466},[460,81539,81540,81542,81544,81547,81549],{"class":462,"line":2399},[460,81541,16196],{"class":466},[460,81543,16893],{"class":470},[460,81545,81546],{"class":466},">商家\u003C\u002F",[460,81548,16893],{"class":470},[460,81550,473],{"class":466},[460,81552,81553,81555,81557,81560,81562],{"class":462,"line":2404},[460,81554,16196],{"class":466},[460,81556,16893],{"class":470},[460,81558,81559],{"class":466},">价格\u003C\u002F",[460,81561,16893],{"class":470},[460,81563,473],{"class":466},[460,81565,81566,81568,81570],{"class":462,"line":2414},[460,81567,16244],{"class":466},[460,81569,16890],{"class":470},[460,81571,473],{"class":466},[460,81573,81574,81576,81578],{"class":462,"line":2428},[460,81575,2753],{"class":466},[460,81577,16890],{"class":470},[460,81579,473],{"class":466},[460,81581,81582,81584,81586],{"class":462,"line":2440},[460,81583,16196],{"class":466},[460,81585,16935],{"class":470},[460,81587,473],{"class":466},[460,81589,81590,81592,81594,81596,81598,81600,81602,81604,81607,81609,81611,81614],{"class":462,"line":2445},[460,81591,16212],{"class":466},[460,81593,70068],{"class":470},[460,81595,70071],{"class":929},[460,81597,894],{"class":466},[460,81599,70076],{"class":1353},[460,81601,1908],{"class":929},[460,81603,894],{"class":466},[460,81605,81606],{"class":1353},"\"check\"",[460,81608,2740],{"class":929},[460,81610,894],{"class":466},[460,81612,81613],{"class":1353},"\"ck\"",[460,81615,473],{"class":466},[460,81617,81618,81620,81622],{"class":462,"line":2450},[460,81619,16235],{"class":466},[460,81621,16935],{"class":470},[460,81623,473],{"class":466},[460,81625,81626,81628,81630,81632,81634],{"class":462,"line":2460},[460,81627,16196],{"class":466},[460,81629,16935],{"class":470},[460,81631,77360],{"class":466},[460,81633,16935],{"class":470},[460,81635,473],{"class":466},[460,81637,81638,81640,81642,81645,81647],{"class":462,"line":2473},[460,81639,16196],{"class":466},[460,81641,16935],{"class":470},[460,81643,81644],{"class":466},">小米\u003C\u002F",[460,81646,16935],{"class":470},[460,81648,473],{"class":466},[460,81650,81651,81653,81655,81658,81660],{"class":462,"line":2487},[460,81652,16196],{"class":466},[460,81654,16935],{"class":470},[460,81656,81657],{"class":466},">￥1999\u003C\u002F",[460,81659,16935],{"class":470},[460,81661,473],{"class":466},[460,81663,81664,81666,81668],{"class":462,"line":2492},[460,81665,16244],{"class":466},[460,81667,16890],{"class":470},[460,81669,473],{"class":466},[460,81671,81672,81674,81676],{"class":462,"line":2497},[460,81673,2753],{"class":466},[460,81675,16890],{"class":470},[460,81677,473],{"class":466},[460,81679,81680,81682,81684],{"class":462,"line":2505},[460,81681,16196],{"class":466},[460,81683,16935],{"class":470},[460,81685,473],{"class":466},[460,81687,81688,81690,81692,81694,81696,81698,81700,81702,81704,81706,81708,81710],{"class":462,"line":2516},[460,81689,16212],{"class":466},[460,81691,70068],{"class":470},[460,81693,70071],{"class":929},[460,81695,894],{"class":466},[460,81697,70076],{"class":1353},[460,81699,1908],{"class":929},[460,81701,894],{"class":466},[460,81703,81606],{"class":1353},[460,81705,2740],{"class":929},[460,81707,894],{"class":466},[460,81709,81613],{"class":1353},[460,81711,473],{"class":466},[460,81713,81714,81716,81718],{"class":462,"line":2529},[460,81715,16235],{"class":466},[460,81717,16935],{"class":470},[460,81719,473],{"class":466},[460,81721,81722,81724,81726,81729,81731],{"class":462,"line":2542},[460,81723,16196],{"class":466},[460,81725,16935],{"class":470},[460,81727,81728],{"class":466},">小米净水器\u003C\u002F",[460,81730,16935],{"class":470},[460,81732,473],{"class":466},[460,81734,81735,81737,81739,81741,81743],{"class":462,"line":2559},[460,81736,16196],{"class":466},[460,81738,16935],{"class":470},[460,81740,81644],{"class":466},[460,81742,16935],{"class":470},[460,81744,473],{"class":466},[460,81746,81747,81749,81751,81754,81756],{"class":462,"line":2564},[460,81748,16196],{"class":466},[460,81750,16935],{"class":470},[460,81752,81753],{"class":466},">￥4999\u003C\u002F",[460,81755,16935],{"class":470},[460,81757,473],{"class":466},[460,81759,81760,81762,81764],{"class":462,"line":2569},[460,81761,16244],{"class":466},[460,81763,16890],{"class":470},[460,81765,473],{"class":466},[460,81767,81768,81770,81772],{"class":462,"line":2579},[460,81769,2753],{"class":466},[460,81771,16890],{"class":470},[460,81773,473],{"class":466},[460,81775,81776,81778,81780],{"class":462,"line":2597},[460,81777,16196],{"class":466},[460,81779,16935],{"class":470},[460,81781,473],{"class":466},[460,81783,81784,81786,81788,81790,81792,81794,81796,81798,81800,81802,81804,81806],{"class":462,"line":2610},[460,81785,16212],{"class":466},[460,81787,70068],{"class":470},[460,81789,70071],{"class":929},[460,81791,894],{"class":466},[460,81793,70076],{"class":1353},[460,81795,1908],{"class":929},[460,81797,894],{"class":466},[460,81799,81606],{"class":1353},[460,81801,2740],{"class":929},[460,81803,894],{"class":466},[460,81805,81613],{"class":1353},[460,81807,473],{"class":466},[460,81809,81810,81812,81814],{"class":462,"line":2621},[460,81811,16235],{"class":466},[460,81813,16935],{"class":470},[460,81815,473],{"class":466},[460,81817,81818,81820,81822,81825,81827],{"class":462,"line":2634},[460,81819,16196],{"class":466},[460,81821,16935],{"class":470},[460,81823,81824],{"class":466},">小米电视\u003C\u002F",[460,81826,16935],{"class":470},[460,81828,473],{"class":466},[460,81830,81831,81833,81835,81837,81839],{"class":462,"line":2648},[460,81832,16196],{"class":466},[460,81834,16935],{"class":470},[460,81836,81644],{"class":466},[460,81838,16935],{"class":470},[460,81840,473],{"class":466},[460,81842,81843,81845,81847,81850,81852],{"class":462,"line":2653},[460,81844,16196],{"class":466},[460,81846,16935],{"class":470},[460,81848,81849],{"class":466},">￥5999\u003C\u002F",[460,81851,16935],{"class":470},[460,81853,473],{"class":466},[460,81855,81856,81858,81860],{"class":462,"line":2658},[460,81857,16244],{"class":466},[460,81859,16890],{"class":470},[460,81861,473],{"class":466},[460,81863,81864,81866,81868],{"class":462,"line":2670},[460,81865,581],{"class":466},[460,81867,16884],{"class":470},[460,81869,473],{"class":466},[460,81871,81872,81874,81876],{"class":462,"line":2683},[460,81873,467],{"class":466},[460,81875,225],{"class":470},[460,81877,473],{"class":466},[460,81879,81880],{"class":462,"line":2695},[460,81881,81882],{"class":942},"    \u002F\u002F 1. 获取大复选框\n",[460,81884,81885,81887,81890,81892,81894,81896,81898,81901],{"class":462,"line":2700},[460,81886,1340],{"class":887},[460,81888,81889],{"class":900}," checkAll",[460,81891,2943],{"class":887},[460,81893,10599],{"class":466},[460,81895,3541],{"class":929},[460,81897,2174],{"class":466},[460,81899,81900],{"class":1353},"'#checkAll'",[460,81902,3754],{"class":466},[460,81904,81905],{"class":462,"line":2709},[460,81906,81907],{"class":942},"    \u002F\u002F 2. 获取所有的小复选框\n",[460,81909,81910,81912,81915,81917,81919,81921,81923,81926],{"class":462,"line":2718},[460,81911,1340],{"class":887},[460,81913,81914],{"class":900}," cks",[460,81916,2943],{"class":887},[460,81918,10599],{"class":466},[460,81920,71892],{"class":929},[460,81922,2174],{"class":466},[460,81924,81925],{"class":1353},"'.ck'",[460,81927,3754],{"class":466},[460,81929,81930],{"class":462,"line":2723},[460,81931,81932],{"class":942},"    \u002F\u002F 3. 点击大复选框  注册事件\n",[460,81934,81935,81938,81940,81942,81944,81946,81948],{"class":462,"line":2732},[460,81936,81937],{"class":466},"    checkAll.",[460,81939,3599],{"class":929},[460,81941,2174],{"class":466},[460,81943,3604],{"class":1353},[460,81945,904],{"class":466},[460,81947,3976],{"class":887},[460,81949,9376],{"class":466},[460,81951,81952],{"class":462,"line":2750},[460,81953,81954],{"class":942},"      \u002F\u002F 得到当前大复选框的选中状态\n",[460,81956,81957,81960],{"class":462,"line":2782},[460,81958,81959],{"class":942},"      \u002F\u002F console.log(checkAll.checked)",[460,81961,81962],{"class":942},"  \u002F\u002F 得到 是 true 或者是 false\n",[460,81964,81965],{"class":462,"line":2809},[460,81966,81967],{"class":942},"      \u002F\u002F 4. 遍历所有的小复选框 让小复选框的checked  =  大复选框的 checked\n",[460,81969,81970,81972,81974,81976,81978,81980,81982,81984,81986,81989,81991,81993,81995],{"class":462,"line":2836},[460,81971,11701],{"class":887},[460,81973,11704],{"class":466},[460,81975,11707],{"class":887},[460,81977,13991],{"class":466},[460,81979,894],{"class":887},[460,81981,2224],{"class":900},[460,81983,25930],{"class":466},[460,81985,781],{"class":887},[460,81987,81988],{"class":466}," cks.",[460,81990,68231],{"class":900},[460,81992,19735],{"class":466},[460,81994,18828],{"class":887},[460,81996,2180],{"class":466},[460,81998,81999,82002,82004,82007],{"class":462,"line":2856},[460,82000,82001],{"class":466},"        cks[i].checked ",[460,82003,894],{"class":887},[460,82005,82006],{"class":900}," this",[460,82008,82009],{"class":466},".checked\n",[460,82011,82012],{"class":462,"line":2865},[460,82013,552],{"class":466},[460,82015,82016],{"class":462,"line":2881},[460,82017,1679],{"class":466},[460,82019,82020],{"class":462,"line":2887},[460,82021,82022],{"class":942},"    \u002F\u002F 5. 小复选框控制大复选框\n",[460,82024,82025],{"class":462,"line":2893},[460,82026,522],{"emptyLinePlaceholder":521},[460,82028,82029,82031,82033,82035,82037,82039,82041,82043,82045,82047,82049,82051,82053],{"class":462,"line":2899},[460,82030,19722],{"class":887},[460,82032,11704],{"class":466},[460,82034,11707],{"class":887},[460,82036,13991],{"class":466},[460,82038,894],{"class":887},[460,82040,2224],{"class":900},[460,82042,25930],{"class":466},[460,82044,781],{"class":887},[460,82046,81988],{"class":466},[460,82048,68231],{"class":900},[460,82050,19735],{"class":466},[460,82052,18828],{"class":887},[460,82054,2180],{"class":466},[460,82056,82057],{"class":462,"line":2905},[460,82058,82059],{"class":942},"      \u002F\u002F 5.1 给所有的小复选框添加点击事件\n",[460,82061,82062,82065,82067,82069,82071,82073,82075],{"class":462,"line":2911},[460,82063,82064],{"class":466},"      cks[i].",[460,82066,3599],{"class":929},[460,82068,2174],{"class":466},[460,82070,3604],{"class":1353},[460,82072,904],{"class":466},[460,82074,3976],{"class":887},[460,82076,9376],{"class":466},[460,82078,82079],{"class":462,"line":2920},[460,82080,82081],{"class":942},"        \u002F\u002F 判断选中的小复选框个数 是不是等于  总的小复选框个数\n",[460,82083,82084],{"class":462,"line":2929},[460,82085,82086],{"class":942},"        \u002F\u002F 一定要写到点击里面，因为每次要获得最新的个数\n",[460,82088,82089],{"class":462,"line":2935},[460,82090,82091],{"class":942},"        \u002F\u002F console.log(document.querySelectorAll('.ck:checked').length)\n",[460,82093,82094],{"class":462,"line":2948},[460,82095,82096],{"class":942},"        \u002F\u002F console.log(document.querySelectorAll('.ck:checked').length === cks.length)\n",[460,82098,82099,82102,82104,82106,82108,82110,82113,82115,82117,82119,82121],{"class":462,"line":2954},[460,82100,82101],{"class":466},"        checkAll.checked ",[460,82103,894],{"class":887},[460,82105,10599],{"class":466},[460,82107,71892],{"class":929},[460,82109,2174],{"class":466},[460,82111,82112],{"class":1353},"'.ck:checked'",[460,82114,3596],{"class":466},[460,82116,68231],{"class":900},[460,82118,74109],{"class":887},[460,82120,81988],{"class":466},[460,82122,72041],{"class":900},[460,82124,82125],{"class":462,"line":2965},[460,82126,3526],{"class":466},[460,82128,82129],{"class":462,"line":2976},[460,82130,509],{"class":466},[460,82132,82133,82135,82137],{"class":462,"line":2987},[460,82134,581],{"class":466},[460,82136,225],{"class":470},[460,82138,473],{"class":466},[460,82140,82141,82143,82145],{"class":462,"line":2998},[460,82142,1776],{"class":466},[460,82144,1721],{"class":470},[460,82146,473],{"class":466},[460,82148,82149],{"class":462,"line":3003},[460,82150,522],{"emptyLinePlaceholder":521},[460,82152,82153,82155,82157],{"class":462,"line":3008},[460,82154,1776],{"class":466},[460,82156,704],{"class":470},[460,82158,473],{"class":466},[14,82160,82161],{},"一定要懂思路，反选做不出来去了解布尔值！！！",[14,82163,82164],{},"用好之间比较得到的布尔值！！！",[14,82166,82167,82168,82171,82172,11704,82175,8331,82177,82179],{},"在 JS 里访问的时候，",[457,82169,82170],{},"checkbox.checked"," 是一个 ",[3944,82173,82174],{},"布尔值",[457,82176,6270],{},[457,82178,6274],{},")，不是字符串，也就是说js通过这个属性值可以实现对复选按钮选择与否的控制",[14,82181,82182,82183,82186,82187],{},"HTML 的 ",[457,82184,82185],{},"checked=\"checked\""," 只是 ",[3944,82188,82189,82190,82193],{},"初始值；JS 的 ",[457,82191,82192],{},".checked"," 表示当前实时状态，值是个布尔值，是true和false",[14,82195,82196],{},"：checked是一个伪类选择器",[14,82198,82199],{},[30,82200],{"alt":32,"src":82201},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-126.png",[14,82203,82204,82207],{},[82205,82206],"checked",{},"是一个伪类选择器，这个伪类选择器是对被勾选的复选框的样式进行处理",[14,82209,82210],{},[30,82211],{"alt":32,"src":82212},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-127.png",[18,82214,82216],{"id":82215},"_33-dom事件进阶","3.3 DOM事件进阶",[23,82218,82220],{"id":82219},"_331-事件流","3.3.1 事件流",[14,82222,82223],{},[30,82224],{"alt":32,"src":82225},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-128.png",[115,82227,82229],{"id":82228},"_3311-事件捕获","3.3.1.1 事件捕获",[14,82231,82232],{},[30,82233],{"alt":32,"src":82234},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-129.png",[451,82236,82238],{"className":702,"code":82237,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    .father {\n      width: 500px;\n      height: 500px;\n      background-color: pink;\n    }\n\n    .son {\n      width: 200px;\n      height: 200px;\n      background-color: skyblue;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"father\">\n    \u003Cdiv class=\"son\">\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    const fa = document.querySelector('.father')\n    const son = document.querySelector('.son')\n    document.addEventListener('click', function () {\n      alert('woshiu1')\n    }, true)\n    fa.addEventListener('click', function () {\n      alert('1')\n    }, true)\n    son.addEventListener('click', function () {\n      alert('2')\n    }, true)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,82239,82240,82250,82264,82268,82276,82290,82310,82322,82330,82337,82349,82361,82371,82375,82379,82386,82398,82410,82420,82424,82432,82440,82444,82452,82467,82486,82494,82502,82522,82542,82558,82569,82577,82594,82605,82613,82630,82641,82649,82657,82665,82669],{"__ignoreMap":32},[460,82241,82242,82244,82246,82248],{"class":462,"line":463},[460,82243,1845],{"class":466},[460,82245,1848],{"class":470},[460,82247,1851],{"class":929},[460,82249,473],{"class":466},[460,82251,82252,82254,82256,82258,82260,82262],{"class":462,"line":476},[460,82253,781],{"class":466},[460,82255,704],{"class":470},[460,82257,1862],{"class":929},[460,82259,894],{"class":466},[460,82261,1867],{"class":1353},[460,82263,473],{"class":466},[460,82265,82266],{"class":462,"line":482},[460,82267,522],{"emptyLinePlaceholder":521},[460,82269,82270,82272,82274],{"class":462,"line":488},[460,82271,781],{"class":466},[460,82273,1880],{"class":470},[460,82275,473],{"class":466},[460,82277,82278,82280,82282,82284,82286,82288],{"class":462,"line":494},[460,82279,467],{"class":466},[460,82281,1889],{"class":470},[460,82283,1892],{"class":929},[460,82285,894],{"class":466},[460,82287,1897],{"class":1353},[460,82289,473],{"class":466},[460,82291,82292,82294,82296,82298,82300,82302,82304,82306,82308],{"class":462,"line":500},[460,82293,467],{"class":466},[460,82295,1889],{"class":470},[460,82297,1908],{"class":929},[460,82299,894],{"class":466},[460,82301,1913],{"class":1353},[460,82303,1916],{"class":929},[460,82305,894],{"class":466},[460,82307,1921],{"class":1353},[460,82309,473],{"class":466},[460,82311,82312,82314,82316,82318,82320],{"class":462,"line":506},[460,82313,467],{"class":466},[460,82315,1930],{"class":470},[460,82317,1933],{"class":466},[460,82319,1930],{"class":470},[460,82321,473],{"class":466},[460,82323,82324,82326,82328],{"class":462,"line":512},[460,82325,467],{"class":466},[460,82327,1944],{"class":470},[460,82329,473],{"class":466},[460,82331,82332,82335],{"class":462,"line":518},[460,82333,82334],{"class":929},"    .father",[460,82336,1348],{"class":466},[460,82338,82339,82341,82343,82345,82347],{"class":462,"line":525},[460,82340,2009],{"class":900},[460,82342,1961],{"class":466},[460,82344,14065],{"class":900},[460,82346,2017],{"class":887},[460,82348,1966],{"class":466},[460,82350,82351,82353,82355,82357,82359],{"class":462,"line":531},[460,82352,5499],{"class":900},[460,82354,1961],{"class":466},[460,82356,14065],{"class":900},[460,82358,2017],{"class":887},[460,82360,1966],{"class":466},[460,82362,82363,82365,82367,82369],{"class":462,"line":537},[460,82364,2673],{"class":900},[460,82366,1961],{"class":466},[460,82368,5556],{"class":900},[460,82370,1966],{"class":466},[460,82372,82373],{"class":462,"line":543},[460,82374,509],{"class":466},[460,82376,82377],{"class":462,"line":549},[460,82378,522],{"emptyLinePlaceholder":521},[460,82380,82381,82384],{"class":462,"line":555},[460,82382,82383],{"class":929},"    .son",[460,82385,1348],{"class":466},[460,82387,82388,82390,82392,82394,82396],{"class":462,"line":560},[460,82389,2009],{"class":900},[460,82391,1961],{"class":466},[460,82393,5490],{"class":900},[460,82395,2017],{"class":887},[460,82397,1966],{"class":466},[460,82399,82400,82402,82404,82406,82408],{"class":462,"line":566},[460,82401,5499],{"class":900},[460,82403,1961],{"class":466},[460,82405,5490],{"class":900},[460,82407,2017],{"class":887},[460,82409,1966],{"class":466},[460,82411,82412,82414,82416,82418],{"class":462,"line":572},[460,82413,2673],{"class":900},[460,82415,1961],{"class":466},[460,82417,71116],{"class":900},[460,82419,1966],{"class":466},[460,82421,82422],{"class":462,"line":578},[460,82423,509],{"class":466},[460,82425,82426,82428,82430],{"class":462,"line":812},[460,82427,581],{"class":466},[460,82429,1944],{"class":470},[460,82431,473],{"class":466},[460,82433,82434,82436,82438],{"class":462,"line":818},[460,82435,1776],{"class":466},[460,82437,1880],{"class":470},[460,82439,473],{"class":466},[460,82441,82442],{"class":462,"line":824},[460,82443,522],{"emptyLinePlaceholder":521},[460,82445,82446,82448,82450],{"class":462,"line":2074},[460,82447,781],{"class":466},[460,82449,1721],{"class":470},[460,82451,473],{"class":466},[460,82453,82454,82456,82458,82460,82462,82465],{"class":462,"line":2088},[460,82455,467],{"class":466},[460,82457,2737],{"class":470},[460,82459,2740],{"class":929},[460,82461,894],{"class":466},[460,82463,82464],{"class":1353},"\"father\"",[460,82466,473],{"class":466},[460,82468,82469,82471,82473,82475,82477,82480,82482,82484],{"class":462,"line":2103},[460,82470,2753],{"class":466},[460,82472,2737],{"class":470},[460,82474,2740],{"class":929},[460,82476,894],{"class":466},[460,82478,82479],{"class":1353},"\"son\"",[460,82481,5599],{"class":466},[460,82483,2737],{"class":470},[460,82485,473],{"class":466},[460,82487,82488,82490,82492],{"class":462,"line":2122},[460,82489,581],{"class":466},[460,82491,2737],{"class":470},[460,82493,473],{"class":466},[460,82495,82496,82498,82500],{"class":462,"line":2144},[460,82497,467],{"class":466},[460,82499,225],{"class":470},[460,82501,473],{"class":466},[460,82503,82504,82506,82509,82511,82513,82515,82517,82520],{"class":462,"line":2158},[460,82505,1340],{"class":887},[460,82507,82508],{"class":900}," fa",[460,82510,2943],{"class":887},[460,82512,10599],{"class":466},[460,82514,3541],{"class":929},[460,82516,2174],{"class":466},[460,82518,82519],{"class":1353},"'.father'",[460,82521,3754],{"class":466},[460,82523,82524,82526,82529,82531,82533,82535,82537,82540],{"class":462,"line":2163},[460,82525,1340],{"class":887},[460,82527,82528],{"class":900}," son",[460,82530,2943],{"class":887},[460,82532,10599],{"class":466},[460,82534,3541],{"class":929},[460,82536,2174],{"class":466},[460,82538,82539],{"class":1353},"'.son'",[460,82541,3754],{"class":466},[460,82543,82544,82546,82548,82550,82552,82554,82556],{"class":462,"line":2168},[460,82545,3586],{"class":466},[460,82547,3599],{"class":929},[460,82549,2174],{"class":466},[460,82551,3604],{"class":1353},[460,82553,904],{"class":466},[460,82555,3976],{"class":887},[460,82557,9376],{"class":466},[460,82559,82560,82562,82564,82567],{"class":462,"line":2183},[460,82561,75122],{"class":929},[460,82563,2174],{"class":466},[460,82565,82566],{"class":1353},"'woshiu1'",[460,82568,3754],{"class":466},[460,82570,82571,82573,82575],{"class":462,"line":2194},[460,82572,16522],{"class":466},[460,82574,6270],{"class":900},[460,82576,3754],{"class":466},[460,82578,82579,82582,82584,82586,82588,82590,82592],{"class":462,"line":2199},[460,82580,82581],{"class":466},"    fa.",[460,82583,3599],{"class":929},[460,82585,2174],{"class":466},[460,82587,3604],{"class":1353},[460,82589,904],{"class":466},[460,82591,3976],{"class":887},[460,82593,9376],{"class":466},[460,82595,82596,82598,82600,82603],{"class":462,"line":2204},[460,82597,75122],{"class":929},[460,82599,2174],{"class":466},[460,82601,82602],{"class":1353},"'1'",[460,82604,3754],{"class":466},[460,82606,82607,82609,82611],{"class":462,"line":2212},[460,82608,16522],{"class":466},[460,82610,6270],{"class":900},[460,82612,3754],{"class":466},[460,82614,82615,82618,82620,82622,82624,82626,82628],{"class":462,"line":2257},[460,82616,82617],{"class":466},"    son.",[460,82619,3599],{"class":929},[460,82621,2174],{"class":466},[460,82623,3604],{"class":1353},[460,82625,904],{"class":466},[460,82627,3976],{"class":887},[460,82629,9376],{"class":466},[460,82631,82632,82634,82636,82639],{"class":462,"line":2285},[460,82633,75122],{"class":929},[460,82635,2174],{"class":466},[460,82637,82638],{"class":1353},"'2'",[460,82640,3754],{"class":466},[460,82642,82643,82645,82647],{"class":462,"line":2298},[460,82644,16522],{"class":466},[460,82646,6270],{"class":900},[460,82648,3754],{"class":466},[460,82650,82651,82653,82655],{"class":462,"line":2303},[460,82652,581],{"class":466},[460,82654,225],{"class":470},[460,82656,473],{"class":466},[460,82658,82659,82661,82663],{"class":462,"line":2308},[460,82660,1776],{"class":466},[460,82662,1721],{"class":470},[460,82664,473],{"class":466},[460,82666,82667],{"class":462,"line":2318},[460,82668,522],{"emptyLinePlaceholder":521},[460,82670,82671,82673,82675],{"class":462,"line":2333},[460,82672,1776],{"class":466},[460,82674,704],{"class":470},[460,82676,473],{"class":466},[14,82678,82679],{},[30,82680],{"alt":32,"src":82681},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-130.png",[14,82683,82684],{},"点击小盒子，先从最大盒子开始执行，先弹出woshiu1，再弹出1，最后弹出2；点击粉色盒子：先弹出woshiu1，再弹出1；点击浏览器其他区域，弹出woshiu1，捕获就是从最大对象（元素）开始往下找",[115,82686,82688],{"id":82687},"_3312-事件冒泡","3.3.1.2 事件冒泡",[14,82690,82691],{},[30,82692],{"alt":32,"src":82693},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-131.png",[14,82695,82696],{},"反着来",[14,82698,82699],{},"注意是同名事件，比如都是‘click’",[115,82701,82703],{"id":82702},"_3313-阻止冒泡","3.3.1.3 阻止冒泡",[14,82705,82706],{},[30,82707],{"alt":32,"src":82708},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-132.png",[115,82710,82712],{"id":82711},"_3314-解绑事件","3.3.1.4 解绑事件",[14,82714,82715],{},[30,82716],{"alt":32,"src":82717},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-133.png",[14,82719,82720],{},[30,82721],{"alt":32,"src":82722},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-134.png",[115,82724,82726],{"id":82725},"_3315-事件类型和注册事件的区别","3.3.1.5 事件类型和注册事件的区别",[103,82728,82729],{},[43,82730,82731],{},"事件类型的区别",[14,82733,82734],{},[30,82735],{"alt":32,"src":82736},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-135.png",[14,82738,82739],{},"mouseover有冒泡，如果想实现鼠标经过有冒泡效果，就不要使用mouseenter,用mouseover",[103,82741,82742],{"start":476},[43,82743,82744],{},"注册事件的区别",[14,82746,82747],{},[30,82748],{"alt":32,"src":82749},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-136.png",[115,82751,82753],{"id":82752},"_3316-阻止冒泡","3.3.1.6 阻止冒泡",[14,82755,82756],{},[30,82757],{"alt":32,"src":82758},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-137.png",[14,82760,82761],{},[30,82762],{"alt":32,"src":82763},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-138.png",[451,82765,82767],{"className":453,"code":82766,"language":455,"meta":32,"style":32},"\u003Cbody>\n  \u003Cform action=\"http:\u002F\u002Fwww.itcast.cn\">\n    \u003Cinput type=\"submit\" value=\"免费注册\">\n    \u003Cscript>\n      const form = document.querySelector('form')\n      form.addEventListener('submit', function (e) {\n        e.preventDefault()\n      })\n    \u003C\u002Fscript>\n  \u003C\u002Fform>\n\u003C\u002Fbody>\n",[457,82768,82769,82777,82794,82817,82825,82830,82835,82840,82844,82852,82860],{"__ignoreMap":32},[460,82770,82771,82773,82775],{"class":462,"line":463},[460,82772,781],{"class":466},[460,82774,1721],{"class":470},[460,82776,473],{"class":466},[460,82778,82779,82781,82784,82787,82789,82792],{"class":462,"line":476},[460,82780,467],{"class":466},[460,82782,82783],{"class":470},"form",[460,82785,82786],{"class":929}," action",[460,82788,894],{"class":466},[460,82790,82791],{"class":1353},"\"http:\u002F\u002Fwww.itcast.cn\"",[460,82793,473],{"class":466},[460,82795,82796,82798,82800,82802,82804,82807,82810,82812,82815],{"class":462,"line":482},[460,82797,2753],{"class":466},[460,82799,70068],{"class":470},[460,82801,70071],{"class":929},[460,82803,894],{"class":466},[460,82805,82806],{"class":1353},"\"submit\"",[460,82808,82809],{"class":929}," value",[460,82811,894],{"class":466},[460,82813,82814],{"class":1353},"\"免费注册\"",[460,82816,473],{"class":466},[460,82818,82819,82821,82823],{"class":462,"line":488},[460,82820,2753],{"class":466},[460,82822,225],{"class":470},[460,82824,473],{"class":466},[460,82826,82827],{"class":462,"line":494},[460,82828,82829],{"class":466},"      const form = document.querySelector('form')\n",[460,82831,82832],{"class":462,"line":500},[460,82833,82834],{"class":466},"      form.addEventListener('submit', function (e) {\n",[460,82836,82837],{"class":462,"line":506},[460,82838,82839],{"class":466},"        e.preventDefault()\n",[460,82841,82842],{"class":462,"line":512},[460,82843,3526],{"class":466},[460,82845,82846,82848,82850],{"class":462,"line":518},[460,82847,16244],{"class":466},[460,82849,225],{"class":470},[460,82851,473],{"class":466},[460,82853,82854,82856,82858],{"class":462,"line":525},[460,82855,581],{"class":466},[460,82857,82783],{"class":470},[460,82859,473],{"class":466},[460,82861,82862,82864,82866],{"class":462,"line":531},[460,82863,1776],{"class":466},[460,82865,1721],{"class":470},[460,82867,473],{"class":466},[14,82869,82870],{},"点击不在跳转！！！",[23,82872,82874],{"id":82873},"_332-事件委托","3.3.2 事件委托",[14,82876,82877],{},[30,82878],{"alt":32,"src":82879},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-139.png",[451,82881,82883],{"className":702,"code":82882,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cul>\n    \u003Cli>1\u003C\u002Fli>\n    \u003Cli>2\u003C\u002Fli>\n    \u003Cli>3\u003C\u002Fli>\n    \u003Cli>4\u003C\u002Fli>\n    \u003Cli>5\u003C\u002Fli>\n    \u003Cp>我不需要变色\u003C\u002Fp>\n  \u003C\u002Ful>\n  \u003Cscript>\n    \u002F\u002F 点击每个li，当前文字变为红色\n    const ul = document.querySelector('ul')\n    ul.addEventListener('click', function (e) {\n      \u002F\u002F alert(1)\n      \u002F\u002F e.target就是我们点击的对象\n      \u002F\u002F 当点击时会获得事件对象，事件对象下面target属性中里边就是li\n      \u002F\u002F e.target.style.color = 'red'\n      console.log(e)\n\n      console.dir(e.target)\n\n      \u002F\u002F 我们需求，我们只有点击li才会变色\n      \u002F\u002F 通过tagName来进行判断\n      if (e.target.tagName === 'LI') {\n        e.target.style.color = 'red'\n      }\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,82884,82885,82895,82909,82913,82921,82935,82955,82967,82975,82979,82987,82995,83007,83019,83031,83043,83055,83068,83076,83084,83089,83108,83129,83134,83139,83144,83149,83158,83162,83172,83176,83181,83186,83199,83208,83212,83216,83224,83232,83236],{"__ignoreMap":32},[460,82886,82887,82889,82891,82893],{"class":462,"line":463},[460,82888,1845],{"class":466},[460,82890,1848],{"class":470},[460,82892,1851],{"class":929},[460,82894,473],{"class":466},[460,82896,82897,82899,82901,82903,82905,82907],{"class":462,"line":476},[460,82898,781],{"class":466},[460,82900,704],{"class":470},[460,82902,1862],{"class":929},[460,82904,894],{"class":466},[460,82906,1867],{"class":1353},[460,82908,473],{"class":466},[460,82910,82911],{"class":462,"line":482},[460,82912,522],{"emptyLinePlaceholder":521},[460,82914,82915,82917,82919],{"class":462,"line":488},[460,82916,781],{"class":466},[460,82918,1880],{"class":470},[460,82920,473],{"class":466},[460,82922,82923,82925,82927,82929,82931,82933],{"class":462,"line":494},[460,82924,467],{"class":466},[460,82926,1889],{"class":470},[460,82928,1892],{"class":929},[460,82930,894],{"class":466},[460,82932,1897],{"class":1353},[460,82934,473],{"class":466},[460,82936,82937,82939,82941,82943,82945,82947,82949,82951,82953],{"class":462,"line":500},[460,82938,467],{"class":466},[460,82940,1889],{"class":470},[460,82942,1908],{"class":929},[460,82944,894],{"class":466},[460,82946,1913],{"class":1353},[460,82948,1916],{"class":929},[460,82950,894],{"class":466},[460,82952,1921],{"class":1353},[460,82954,473],{"class":466},[460,82956,82957,82959,82961,82963,82965],{"class":462,"line":506},[460,82958,467],{"class":466},[460,82960,1930],{"class":470},[460,82962,1933],{"class":466},[460,82964,1930],{"class":470},[460,82966,473],{"class":466},[460,82968,82969,82971,82973],{"class":462,"line":512},[460,82970,1776],{"class":466},[460,82972,1880],{"class":470},[460,82974,473],{"class":466},[460,82976,82977],{"class":462,"line":518},[460,82978,522],{"emptyLinePlaceholder":521},[460,82980,82981,82983,82985],{"class":462,"line":525},[460,82982,781],{"class":466},[460,82984,1721],{"class":470},[460,82986,473],{"class":466},[460,82988,82989,82991,82993],{"class":462,"line":531},[460,82990,467],{"class":466},[460,82992,40],{"class":470},[460,82994,473],{"class":466},[460,82996,82997,82999,83001,83003,83005],{"class":462,"line":537},[460,82998,2753],{"class":466},[460,83000,43],{"class":470},[460,83002,70212],{"class":466},[460,83004,43],{"class":470},[460,83006,473],{"class":466},[460,83008,83009,83011,83013,83015,83017],{"class":462,"line":543},[460,83010,2753],{"class":466},[460,83012,43],{"class":470},[460,83014,70231],{"class":466},[460,83016,43],{"class":470},[460,83018,473],{"class":466},[460,83020,83021,83023,83025,83027,83029],{"class":462,"line":549},[460,83022,2753],{"class":466},[460,83024,43],{"class":470},[460,83026,70250],{"class":466},[460,83028,43],{"class":470},[460,83030,473],{"class":466},[460,83032,83033,83035,83037,83039,83041],{"class":462,"line":555},[460,83034,2753],{"class":466},[460,83036,43],{"class":470},[460,83038,70269],{"class":466},[460,83040,43],{"class":470},[460,83042,473],{"class":466},[460,83044,83045,83047,83049,83051,83053],{"class":462,"line":560},[460,83046,2753],{"class":466},[460,83048,43],{"class":470},[460,83050,70288],{"class":466},[460,83052,43],{"class":470},[460,83054,473],{"class":466},[460,83056,83057,83059,83061,83064,83066],{"class":462,"line":566},[460,83058,2753],{"class":466},[460,83060,14],{"class":470},[460,83062,83063],{"class":466},">我不需要变色\u003C\u002F",[460,83065,14],{"class":470},[460,83067,473],{"class":466},[460,83069,83070,83072,83074],{"class":462,"line":572},[460,83071,581],{"class":466},[460,83073,40],{"class":470},[460,83075,473],{"class":466},[460,83077,83078,83080,83082],{"class":462,"line":578},[460,83079,467],{"class":466},[460,83081,225],{"class":470},[460,83083,473],{"class":466},[460,83085,83086],{"class":462,"line":812},[460,83087,83088],{"class":942},"    \u002F\u002F 点击每个li，当前文字变为红色\n",[460,83090,83091,83093,83095,83097,83099,83101,83103,83106],{"class":462,"line":818},[460,83092,1340],{"class":887},[460,83094,77478],{"class":900},[460,83096,2943],{"class":887},[460,83098,10599],{"class":466},[460,83100,3541],{"class":929},[460,83102,2174],{"class":466},[460,83104,83105],{"class":1353},"'ul'",[460,83107,3754],{"class":466},[460,83109,83110,83113,83115,83117,83119,83121,83123,83125,83127],{"class":462,"line":824},[460,83111,83112],{"class":466},"    ul.",[460,83114,3599],{"class":929},[460,83116,2174],{"class":466},[460,83118,3604],{"class":1353},[460,83120,904],{"class":466},[460,83122,3976],{"class":887},[460,83124,11704],{"class":466},[460,83126,3609],{"class":3380},[460,83128,2180],{"class":466},[460,83130,83131],{"class":462,"line":2074},[460,83132,83133],{"class":942},"      \u002F\u002F alert(1)\n",[460,83135,83136],{"class":462,"line":2088},[460,83137,83138],{"class":942},"      \u002F\u002F e.target就是我们点击的对象\n",[460,83140,83141],{"class":462,"line":2103},[460,83142,83143],{"class":942},"      \u002F\u002F 当点击时会获得事件对象，事件对象下面target属性中里边就是li\n",[460,83145,83146],{"class":462,"line":2122},[460,83147,83148],{"class":942},"      \u002F\u002F e.target.style.color = 'red'\n",[460,83150,83151,83153,83155],{"class":462,"line":2144},[460,83152,12805],{"class":466},[460,83154,930],{"class":929},[460,83156,83157],{"class":466},"(e)\n",[460,83159,83160],{"class":462,"line":2158},[460,83161,522],{"emptyLinePlaceholder":521},[460,83163,83164,83166,83169],{"class":462,"line":2163},[460,83165,12805],{"class":466},[460,83167,83168],{"class":929},"dir",[460,83170,83171],{"class":466},"(e.target)\n",[460,83173,83174],{"class":462,"line":2168},[460,83175,522],{"emptyLinePlaceholder":521},[460,83177,83178],{"class":462,"line":2183},[460,83179,83180],{"class":942},"      \u002F\u002F 我们需求，我们只有点击li才会变色\n",[460,83182,83183],{"class":462,"line":2194},[460,83184,83185],{"class":942},"      \u002F\u002F 通过tagName来进行判断\n",[460,83187,83188,83190,83192,83194,83197],{"class":462,"line":2199},[460,83189,3654],{"class":887},[460,83191,3657],{"class":466},[460,83193,3660],{"class":887},[460,83195,83196],{"class":1353}," 'LI'",[460,83198,2180],{"class":466},[460,83200,83201,83204,83206],{"class":462,"line":2204},[460,83202,83203],{"class":466},"        e.target.style.color ",[460,83205,894],{"class":887},[460,83207,12710],{"class":1353},[460,83209,83210],{"class":462,"line":2212},[460,83211,552],{"class":466},[460,83213,83214],{"class":462,"line":2257},[460,83215,1679],{"class":466},[460,83217,83218,83220,83222],{"class":462,"line":2285},[460,83219,581],{"class":466},[460,83221,225],{"class":470},[460,83223,473],{"class":466},[460,83225,83226,83228,83230],{"class":462,"line":2298},[460,83227,1776],{"class":466},[460,83229,1721],{"class":470},[460,83231,473],{"class":466},[460,83233,83234],{"class":462,"line":2303},[460,83235,522],{"emptyLinePlaceholder":521},[460,83237,83238,83240,83242],{"class":462,"line":2308},[460,83239,1776],{"class":466},[460,83241,704],{"class":470},[460,83243,473],{"class":466},[14,83245,83246],{},"当进行点击时，会获得事件对象的信息，这个对象中有一个属性为target，里边存放了点击的那个对象，然后target中又有属性值为tagName为所点击对象的名字，如果只想点击确定的对象实现某功能的话，就可以使用tagName来进行判断，对于p标签，只有点击p标签的时候执行效果，使用的是",[14,83248,83249],{},"if(e.target.ragName==='P') {}",[14,83251,83252],{},"一定要大写，可能写源码的人为了区分跟获取的p对象，才必须得大写",[14,83254,83255],{},"通过事件委托的方式实现tab栏切换改造：",[14,83257,83258],{},"一定要记住自定义属性！！！！！！",[14,83260,83261],{},"自定义属性内容都存放在了dataset这个属性中了，也就是获取值的时候就得",[14,83263,83264],{},"id是自定义的属性名",[14,83266,83267],{},"dataset.id 获取的是后面自定义属性的内容（标号），这些内容是个字符串，如果需要的是数字的话可以用parseint()，优先用隐式转换，直接在前加个+就ok",[451,83269,83271],{"className":702,"code":83270,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\" \u002F>\n  \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \u002F>\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\n  \u003Ctitle>tab栏切换\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      margin: 0;\n      padding: 0;\n    }\n\n    .tab {\n      width: 590px;\n      height: 340px;\n      margin: 20px;\n      border: 1px solid #e4e4e4;\n    }\n\n    .tab-nav {\n      width: 100%;\n      height: 60px;\n      line-height: 60px;\n      display: flex;\n      justify-content: space-between;\n    }\n\n    .tab-nav h3 {\n      font-size: 24px;\n      font-weight: normal;\n      margin-left: 20px;\n    }\n\n    .tab-nav ul {\n      list-style: none;\n      display: flex;\n      justify-content: flex-end;\n    }\n\n    .tab-nav ul li {\n      margin: 0 20px;\n      font-size: 14px;\n    }\n\n    .tab-nav ul li a {\n      text-decoration: none;\n      border-bottom: 2px solid transparent;\n      color: #333;\n    }\n\n    .tab-nav ul li a.active {\n      border-color: #e1251b;\n      color: #e1251b;\n    }\n\n    .tab-content {\n      padding: 0 16px;\n    }\n\n    .tab-content .item {\n      display: none;\n    }\n\n    .tab-content .active {\n      display: block;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cdiv class=\"tab\">\n    \u003Cdiv class=\"tab-nav\">\n      \u003Ch3>每日特价\u003C\u002Fh3>\n      \u003Cul>\n        \u003Cli>\u003Ca class=\"active\" href=\"javascript:;\" data-id=\"0\">精选\u003C\u002Fa>\u003C\u002Fli>\n        \u003Cli>\u003Ca href=\"javascript:;\" data-id=\"1\">美食\u003C\u002Fa>\u003C\u002Fli>\n        \u003Cli>\u003Ca href=\"javascript:;\" data-id=\"2\">百货\u003C\u002Fa>\u003C\u002Fli>\n        \u003Cli>\u003Ca href=\"javascript:;\" data-id=\"3\">个护\u003C\u002Fa>\u003C\u002Fli>\n        \u003Cli>\u003Ca href=\"javascript:;\" data-id=\"4\">预告\u003C\u002Fa>\u003C\u002Fli>\n      \u003C\u002Ful>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"tab-content\">\n      \u003Cdiv class=\"item active\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab00.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n      \u003Cdiv class=\"item\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab01.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n      \u003Cdiv class=\"item\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab02.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n      \u003Cdiv class=\"item\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab03.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n      \u003Cdiv class=\"item\">\u003Cimg src=\"....\u002F..\u002Fpublic\u002Fimages\u002Ftab04.png\" alt=\"\" \u002F>\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cscript>\n    \u002F\u002F 采取事件委托的形式，tab栏切换\n    \u002F\u002F 1.获取ul父元素，因为ul只有一个\n    const ul = document.querySelector('.tab-nav ul')\n    \u002F\u002F 2.添加事件\n    ul.addEventListener('click', function (e) {\n      console.dir(e.target)\n      \u002F\u002Fe.targer是我们点击的对象\n      if (e.target.tagName === 'A') {\n        document.querySelector('.active').classList.remove('active')\n        e.target.classList.add('active')\n\n        \u002F\u002F 下面大盒子模块\n        \u002F\u002F console.log(e.target.dataset.id)\n        const i = +e.target.dataset.id\n        document.querySelector('.tab-content .active').classList.remove('active')\n        document.querySelector(`.tab-content .item:nth-child(${i + 1})`).classList.add('active')\n\n      }\n    })\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,83272,83273,83283,83297,83301,83309,83323,83343,83363,83375,83383,83389,83399,83409,83413,83417,83423,83435,83447,83459,83475,83479,83483,83489,83501,83513,83525,83535,83545,83549,83553,83561,83573,83583,83595,83599,83603,83611,83621,83631,83641,83645,83649,83659,83673,83685,83689,83693,83705,83715,83731,83741,83745,83749,83763,83773,83783,83787,83791,83797,83811,83815,83819,83827,83837,83841,83845,83854,83864,83868,83876,83884,83888,83896,83910,83924,83936,83944,83983,84015,84047,84079,84111,84119,84127,84141,84175,84209,84243,84277,84311,84319,84327,84335,84340,84345,84364,84369,84389,84397,84402,84414,84435,84448,84452,84457,84462,84475,84495,84523,84527,84531,84535,84543,84551,84555],{"__ignoreMap":32},[460,83274,83275,83277,83279,83281],{"class":462,"line":463},[460,83276,1845],{"class":466},[460,83278,1848],{"class":470},[460,83280,1851],{"class":929},[460,83282,473],{"class":466},[460,83284,83285,83287,83289,83291,83293,83295],{"class":462,"line":476},[460,83286,781],{"class":466},[460,83288,704],{"class":470},[460,83290,1862],{"class":929},[460,83292,894],{"class":466},[460,83294,1867],{"class":1353},[460,83296,473],{"class":466},[460,83298,83299],{"class":462,"line":482},[460,83300,522],{"emptyLinePlaceholder":521},[460,83302,83303,83305,83307],{"class":462,"line":488},[460,83304,781],{"class":466},[460,83306,1880],{"class":470},[460,83308,473],{"class":466},[460,83310,83311,83313,83315,83317,83319,83321],{"class":462,"line":494},[460,83312,467],{"class":466},[460,83314,1889],{"class":470},[460,83316,1892],{"class":929},[460,83318,894],{"class":466},[460,83320,1897],{"class":1353},[460,83322,15726],{"class":466},[460,83324,83325,83327,83329,83331,83333,83335,83337,83339,83341],{"class":462,"line":500},[460,83326,467],{"class":466},[460,83328,1889],{"class":470},[460,83330,15735],{"class":929},[460,83332,894],{"class":466},[460,83334,15740],{"class":1353},[460,83336,1916],{"class":929},[460,83338,894],{"class":466},[460,83340,15747],{"class":1353},[460,83342,15726],{"class":466},[460,83344,83345,83347,83349,83351,83353,83355,83357,83359,83361],{"class":462,"line":506},[460,83346,467],{"class":466},[460,83348,1889],{"class":470},[460,83350,1908],{"class":929},[460,83352,894],{"class":466},[460,83354,1913],{"class":1353},[460,83356,1916],{"class":929},[460,83358,894],{"class":466},[460,83360,1921],{"class":1353},[460,83362,15726],{"class":466},[460,83364,83365,83367,83369,83371,83373],{"class":462,"line":512},[460,83366,467],{"class":466},[460,83368,1930],{"class":470},[460,83370,79792],{"class":466},[460,83372,1930],{"class":470},[460,83374,473],{"class":466},[460,83376,83377,83379,83381],{"class":462,"line":518},[460,83378,467],{"class":466},[460,83380,1944],{"class":470},[460,83382,473],{"class":466},[460,83384,83385,83387],{"class":462,"line":525},[460,83386,1951],{"class":470},[460,83388,1348],{"class":466},[460,83390,83391,83393,83395,83397],{"class":462,"line":531},[460,83392,1971],{"class":900},[460,83394,1961],{"class":466},[460,83396,936],{"class":900},[460,83398,1966],{"class":466},[460,83400,83401,83403,83405,83407],{"class":462,"line":537},[460,83402,1958],{"class":900},[460,83404,1961],{"class":466},[460,83406,936],{"class":900},[460,83408,1966],{"class":466},[460,83410,83411],{"class":462,"line":543},[460,83412,509],{"class":466},[460,83414,83415],{"class":462,"line":549},[460,83416,522],{"emptyLinePlaceholder":521},[460,83418,83419,83421],{"class":462,"line":555},[460,83420,79843],{"class":929},[460,83422,1348],{"class":466},[460,83424,83425,83427,83429,83431,83433],{"class":462,"line":560},[460,83426,2009],{"class":900},[460,83428,1961],{"class":466},[460,83430,79854],{"class":900},[460,83432,2017],{"class":887},[460,83434,1966],{"class":466},[460,83436,83437,83439,83441,83443,83445],{"class":462,"line":566},[460,83438,5499],{"class":900},[460,83440,1961],{"class":466},[460,83442,79867],{"class":900},[460,83444,2017],{"class":887},[460,83446,1966],{"class":466},[460,83448,83449,83451,83453,83455,83457],{"class":462,"line":572},[460,83450,1971],{"class":900},[460,83452,1961],{"class":466},[460,83454,2110],{"class":900},[460,83456,2017],{"class":887},[460,83458,1966],{"class":466},[460,83460,83461,83463,83465,83467,83469,83471,83473],{"class":462,"line":578},[460,83462,7192],{"class":900},[460,83464,1961],{"class":466},[460,83466,901],{"class":900},[460,83468,2017],{"class":887},[460,83470,7201],{"class":900},[460,83472,7204],{"class":900},[460,83474,1966],{"class":466},[460,83476,83477],{"class":462,"line":812},[460,83478,509],{"class":466},[460,83480,83481],{"class":462,"line":818},[460,83482,522],{"emptyLinePlaceholder":521},[460,83484,83485,83487],{"class":462,"line":824},[460,83486,79912],{"class":929},[460,83488,1348],{"class":466},[460,83490,83491,83493,83495,83497,83499],{"class":462,"line":2074},[460,83492,2009],{"class":900},[460,83494,1961],{"class":466},[460,83496,2325],{"class":900},[460,83498,2328],{"class":887},[460,83500,1966],{"class":466},[460,83502,83503,83505,83507,83509,83511],{"class":462,"line":2088},[460,83504,5499],{"class":900},[460,83506,1961],{"class":466},[460,83508,16027],{"class":900},[460,83510,2017],{"class":887},[460,83512,1966],{"class":466},[460,83514,83515,83517,83519,83521,83523],{"class":462,"line":2103},[460,83516,5513],{"class":900},[460,83518,1961],{"class":466},[460,83520,16027],{"class":900},[460,83522,2017],{"class":887},[460,83524,1966],{"class":466},[460,83526,83527,83529,83531,83533],{"class":462,"line":2122},[460,83528,2037],{"class":900},[460,83530,1961],{"class":466},[460,83532,2042],{"class":900},[460,83534,1966],{"class":466},[460,83536,83537,83539,83541,83543],{"class":462,"line":2144},[460,83538,7653],{"class":900},[460,83540,1961],{"class":466},[460,83542,67939],{"class":900},[460,83544,1966],{"class":466},[460,83546,83547],{"class":462,"line":2158},[460,83548,509],{"class":466},[460,83550,83551],{"class":462,"line":2163},[460,83552,522],{"emptyLinePlaceholder":521},[460,83554,83555,83557,83559],{"class":462,"line":2168},[460,83556,79912],{"class":929},[460,83558,79985],{"class":470},[460,83560,1348],{"class":466},[460,83562,83563,83565,83567,83569,83571],{"class":462,"line":2183},[460,83564,2356],{"class":900},[460,83566,1961],{"class":466},[460,83568,17515],{"class":900},[460,83570,2017],{"class":887},[460,83572,1966],{"class":466},[460,83574,83575,83577,83579,83581],{"class":462,"line":2194},[460,83576,7734],{"class":900},[460,83578,1961],{"class":466},[460,83580,10181],{"class":900},[460,83582,1966],{"class":466},[460,83584,83585,83587,83589,83591,83593],{"class":462,"line":2199},[460,83586,2091],{"class":900},[460,83588,1961],{"class":466},[460,83590,2110],{"class":900},[460,83592,2017],{"class":887},[460,83594,1966],{"class":466},[460,83596,83597],{"class":462,"line":2204},[460,83598,509],{"class":466},[460,83600,83601],{"class":462,"line":2212},[460,83602,522],{"emptyLinePlaceholder":521},[460,83604,83605,83607,83609],{"class":462,"line":2257},[460,83606,79912],{"class":929},[460,83608,77478],{"class":470},[460,83610,1348],{"class":466},[460,83612,83613,83615,83617,83619],{"class":462,"line":2285},[460,83614,70968],{"class":900},[460,83616,1961],{"class":466},[460,83618,2629],{"class":900},[460,83620,1966],{"class":466},[460,83622,83623,83625,83627,83629],{"class":462,"line":2298},[460,83624,2037],{"class":900},[460,83626,1961],{"class":466},[460,83628,2042],{"class":900},[460,83630,1966],{"class":466},[460,83632,83633,83635,83637,83639],{"class":462,"line":2303},[460,83634,7653],{"class":900},[460,83636,1961],{"class":466},[460,83638,7658],{"class":900},[460,83640,1966],{"class":466},[460,83642,83643],{"class":462,"line":2308},[460,83644,509],{"class":466},[460,83646,83647],{"class":462,"line":2318},[460,83648,522],{"emptyLinePlaceholder":521},[460,83650,83651,83653,83655,83657],{"class":462,"line":2333},[460,83652,79912],{"class":929},[460,83654,77478],{"class":470},[460,83656,71298],{"class":470},[460,83658,1348],{"class":466},[460,83660,83661,83663,83665,83667,83669,83671],{"class":462,"line":2338},[460,83662,1971],{"class":900},[460,83664,1961],{"class":466},[460,83666,936],{"class":900},[460,83668,2590],{"class":900},[460,83670,2017],{"class":887},[460,83672,1966],{"class":466},[460,83674,83675,83677,83679,83681,83683],{"class":462,"line":2343},[460,83676,2356],{"class":900},[460,83678,1961],{"class":466},[460,83680,2480],{"class":900},[460,83682,2017],{"class":887},[460,83684,1966],{"class":466},[460,83686,83687],{"class":462,"line":2353},[460,83688,509],{"class":466},[460,83690,83691],{"class":462,"line":2368},[460,83692,522],{"emptyLinePlaceholder":521},[460,83694,83695,83697,83699,83701,83703],{"class":462,"line":2381},[460,83696,79912],{"class":929},[460,83698,77478],{"class":470},[460,83700,71298],{"class":470},[460,83702,2574],{"class":470},[460,83704,1348],{"class":466},[460,83706,83707,83709,83711,83713],{"class":462,"line":2394},[460,83708,2624],{"class":900},[460,83710,1961],{"class":466},[460,83712,2629],{"class":900},[460,83714,1966],{"class":466},[460,83716,83717,83719,83721,83723,83725,83727,83729],{"class":462,"line":2399},[460,83718,78406],{"class":900},[460,83720,1961],{"class":466},[460,83722,907],{"class":900},[460,83724,2017],{"class":887},[460,83726,7201],{"class":900},[460,83728,80156],{"class":900},[460,83730,1966],{"class":466},[460,83732,83733,83735,83737,83739],{"class":462,"line":2404},[460,83734,2384],{"class":900},[460,83736,1961],{"class":466},[460,83738,78540],{"class":900},[460,83740,1966],{"class":466},[460,83742,83743],{"class":462,"line":2414},[460,83744,509],{"class":466},[460,83746,83747],{"class":462,"line":2428},[460,83748,522],{"emptyLinePlaceholder":521},[460,83750,83751,83753,83755,83757,83759,83761],{"class":462,"line":2440},[460,83752,79912],{"class":929},[460,83754,77478],{"class":470},[460,83756,71298],{"class":470},[460,83758,2574],{"class":470},[460,83760,16116],{"class":929},[460,83762,1348],{"class":466},[460,83764,83765,83767,83769,83771],{"class":462,"line":2445},[460,83766,77975],{"class":900},[460,83768,1961],{"class":466},[460,83770,80199],{"class":900},[460,83772,1966],{"class":466},[460,83774,83775,83777,83779,83781],{"class":462,"line":2450},[460,83776,2384],{"class":900},[460,83778,1961],{"class":466},[460,83780,80199],{"class":900},[460,83782,1966],{"class":466},[460,83784,83785],{"class":462,"line":2460},[460,83786,509],{"class":466},[460,83788,83789],{"class":462,"line":2473},[460,83790,522],{"emptyLinePlaceholder":521},[460,83792,83793,83795],{"class":462,"line":2487},[460,83794,80224],{"class":929},[460,83796,1348],{"class":466},[460,83798,83799,83801,83803,83805,83807,83809],{"class":462,"line":2492},[460,83800,1958],{"class":900},[460,83802,1961],{"class":466},[460,83804,936],{"class":900},[460,83806,80237],{"class":900},[460,83808,2017],{"class":887},[460,83810,1966],{"class":466},[460,83812,83813],{"class":462,"line":2497},[460,83814,509],{"class":466},[460,83816,83817],{"class":462,"line":2505},[460,83818,522],{"emptyLinePlaceholder":521},[460,83820,83821,83823,83825],{"class":462,"line":2516},[460,83822,80224],{"class":929},[460,83824,78348],{"class":929},[460,83826,1348],{"class":466},[460,83828,83829,83831,83833,83835],{"class":462,"line":2529},[460,83830,2037],{"class":900},[460,83832,1961],{"class":466},[460,83834,2629],{"class":900},[460,83836,1966],{"class":466},[460,83838,83839],{"class":462,"line":2542},[460,83840,509],{"class":466},[460,83842,83843],{"class":462,"line":2559},[460,83844,522],{"emptyLinePlaceholder":521},[460,83846,83847,83849,83852],{"class":462,"line":2564},[460,83848,80224],{"class":929},[460,83850,83851],{"class":929}," .active",[460,83853,1348],{"class":466},[460,83855,83856,83858,83860,83862],{"class":462,"line":2569},[460,83857,2037],{"class":900},[460,83859,1961],{"class":466},[460,83861,7350],{"class":900},[460,83863,1966],{"class":466},[460,83865,83866],{"class":462,"line":2579},[460,83867,509],{"class":466},[460,83869,83870,83872,83874],{"class":462,"line":2597},[460,83871,581],{"class":466},[460,83873,1944],{"class":470},[460,83875,473],{"class":466},[460,83877,83878,83880,83882],{"class":462,"line":2610},[460,83879,1776],{"class":466},[460,83881,1880],{"class":470},[460,83883,473],{"class":466},[460,83885,83886],{"class":462,"line":2621},[460,83887,522],{"emptyLinePlaceholder":521},[460,83889,83890,83892,83894],{"class":462,"line":2634},[460,83891,781],{"class":466},[460,83893,1721],{"class":470},[460,83895,473],{"class":466},[460,83897,83898,83900,83902,83904,83906,83908],{"class":462,"line":2648},[460,83899,467],{"class":466},[460,83901,2737],{"class":470},[460,83903,2740],{"class":929},[460,83905,894],{"class":466},[460,83907,80339],{"class":1353},[460,83909,473],{"class":466},[460,83911,83912,83914,83916,83918,83920,83922],{"class":462,"line":2653},[460,83913,2753],{"class":466},[460,83915,2737],{"class":470},[460,83917,2740],{"class":929},[460,83919,894],{"class":466},[460,83921,80354],{"class":1353},[460,83923,473],{"class":466},[460,83925,83926,83928,83930,83932,83934],{"class":462,"line":2658},[460,83927,16196],{"class":466},[460,83929,23],{"class":470},[460,83931,80365],{"class":466},[460,83933,23],{"class":470},[460,83935,473],{"class":466},[460,83937,83938,83940,83942],{"class":462,"line":2670},[460,83939,16196],{"class":466},[460,83941,40],{"class":470},[460,83943,473],{"class":466},[460,83945,83946,83948,83950,83952,83954,83956,83958,83960,83962,83964,83966,83968,83970,83973,83975,83977,83979,83981],{"class":462,"line":2683},[460,83947,16212],{"class":466},[460,83949,43],{"class":470},[460,83951,77241],{"class":466},[460,83953,2756],{"class":470},[460,83955,2740],{"class":929},[460,83957,894],{"class":466},[460,83959,75901],{"class":1353},[460,83961,2759],{"class":929},[460,83963,894],{"class":466},[460,83965,16322],{"class":1353},[460,83967,70197],{"class":929},[460,83969,894],{"class":466},[460,83971,83972],{"class":1353},"\"0\"",[460,83974,80402],{"class":466},[460,83976,2756],{"class":470},[460,83978,5599],{"class":466},[460,83980,43],{"class":470},[460,83982,473],{"class":466},[460,83984,83985,83987,83989,83991,83993,83995,83997,83999,84001,84003,84005,84007,84009,84011,84013],{"class":462,"line":2695},[460,83986,16212],{"class":466},[460,83988,43],{"class":470},[460,83990,77241],{"class":466},[460,83992,2756],{"class":470},[460,83994,2759],{"class":929},[460,83996,894],{"class":466},[460,83998,16322],{"class":1353},[460,84000,70197],{"class":929},[460,84002,894],{"class":466},[460,84004,2772],{"class":1353},[460,84006,80429],{"class":466},[460,84008,2756],{"class":470},[460,84010,5599],{"class":466},[460,84012,43],{"class":470},[460,84014,473],{"class":466},[460,84016,84017,84019,84021,84023,84025,84027,84029,84031,84033,84035,84037,84039,84041,84043,84045],{"class":462,"line":2700},[460,84018,16212],{"class":466},[460,84020,43],{"class":470},[460,84022,77241],{"class":466},[460,84024,2756],{"class":470},[460,84026,2759],{"class":929},[460,84028,894],{"class":466},[460,84030,16322],{"class":1353},[460,84032,70197],{"class":929},[460,84034,894],{"class":466},[460,84036,2799],{"class":1353},[460,84038,80456],{"class":466},[460,84040,2756],{"class":470},[460,84042,5599],{"class":466},[460,84044,43],{"class":470},[460,84046,473],{"class":466},[460,84048,84049,84051,84053,84055,84057,84059,84061,84063,84065,84067,84069,84071,84073,84075,84077],{"class":462,"line":2709},[460,84050,16212],{"class":466},[460,84052,43],{"class":470},[460,84054,77241],{"class":466},[460,84056,2756],{"class":470},[460,84058,2759],{"class":929},[460,84060,894],{"class":466},[460,84062,16322],{"class":1353},[460,84064,70197],{"class":929},[460,84066,894],{"class":466},[460,84068,2826],{"class":1353},[460,84070,80483],{"class":466},[460,84072,2756],{"class":470},[460,84074,5599],{"class":466},[460,84076,43],{"class":470},[460,84078,473],{"class":466},[460,84080,84081,84083,84085,84087,84089,84091,84093,84095,84097,84099,84101,84103,84105,84107,84109],{"class":462,"line":2718},[460,84082,16212],{"class":466},[460,84084,43],{"class":470},[460,84086,77241],{"class":466},[460,84088,2756],{"class":470},[460,84090,2759],{"class":929},[460,84092,894],{"class":466},[460,84094,16322],{"class":1353},[460,84096,70197],{"class":929},[460,84098,894],{"class":466},[460,84100,20245],{"class":1353},[460,84102,80510],{"class":466},[460,84104,2756],{"class":470},[460,84106,5599],{"class":466},[460,84108,43],{"class":470},[460,84110,473],{"class":466},[460,84112,84113,84115,84117],{"class":462,"line":2723},[460,84114,16235],{"class":466},[460,84116,40],{"class":470},[460,84118,473],{"class":466},[460,84120,84121,84123,84125],{"class":462,"line":2732},[460,84122,16244],{"class":466},[460,84124,2737],{"class":470},[460,84126,473],{"class":466},[460,84128,84129,84131,84133,84135,84137,84139],{"class":462,"line":2750},[460,84130,2753],{"class":466},[460,84132,2737],{"class":470},[460,84134,2740],{"class":929},[460,84136,894],{"class":466},[460,84138,80547],{"class":1353},[460,84140,473],{"class":466},[460,84142,84143,84145,84147,84149,84151,84153,84155,84157,84159,84161,84163,84165,84167,84169,84171,84173],{"class":462,"line":2782},[460,84144,16196],{"class":466},[460,84146,2737],{"class":470},[460,84148,2740],{"class":929},[460,84150,894],{"class":466},[460,84152,80562],{"class":1353},[460,84154,77241],{"class":466},[460,84156,30],{"class":470},[460,84158,12081],{"class":929},[460,84160,894],{"class":466},[460,84162,80573],{"class":1353},[460,84164,16224],{"class":929},[460,84166,894],{"class":466},[460,84168,6606],{"class":1353},[460,84170,80582],{"class":466},[460,84172,2737],{"class":470},[460,84174,473],{"class":466},[460,84176,84177,84179,84181,84183,84185,84187,84189,84191,84193,84195,84197,84199,84201,84203,84205,84207],{"class":462,"line":2809},[460,84178,16196],{"class":466},[460,84180,2737],{"class":470},[460,84182,2740],{"class":929},[460,84184,894],{"class":466},[460,84186,78792],{"class":1353},[460,84188,77241],{"class":466},[460,84190,30],{"class":470},[460,84192,12081],{"class":929},[460,84194,894],{"class":466},[460,84196,80609],{"class":1353},[460,84198,16224],{"class":929},[460,84200,894],{"class":466},[460,84202,6606],{"class":1353},[460,84204,80582],{"class":466},[460,84206,2737],{"class":470},[460,84208,473],{"class":466},[460,84210,84211,84213,84215,84217,84219,84221,84223,84225,84227,84229,84231,84233,84235,84237,84239,84241],{"class":462,"line":2836},[460,84212,16196],{"class":466},[460,84214,2737],{"class":470},[460,84216,2740],{"class":929},[460,84218,894],{"class":466},[460,84220,78792],{"class":1353},[460,84222,77241],{"class":466},[460,84224,30],{"class":470},[460,84226,12081],{"class":929},[460,84228,894],{"class":466},[460,84230,80644],{"class":1353},[460,84232,16224],{"class":929},[460,84234,894],{"class":466},[460,84236,6606],{"class":1353},[460,84238,80582],{"class":466},[460,84240,2737],{"class":470},[460,84242,473],{"class":466},[460,84244,84245,84247,84249,84251,84253,84255,84257,84259,84261,84263,84265,84267,84269,84271,84273,84275],{"class":462,"line":2856},[460,84246,16196],{"class":466},[460,84248,2737],{"class":470},[460,84250,2740],{"class":929},[460,84252,894],{"class":466},[460,84254,78792],{"class":1353},[460,84256,77241],{"class":466},[460,84258,30],{"class":470},[460,84260,12081],{"class":929},[460,84262,894],{"class":466},[460,84264,80679],{"class":1353},[460,84266,16224],{"class":929},[460,84268,894],{"class":466},[460,84270,6606],{"class":1353},[460,84272,80582],{"class":466},[460,84274,2737],{"class":470},[460,84276,473],{"class":466},[460,84278,84279,84281,84283,84285,84287,84289,84291,84293,84295,84297,84299,84301,84303,84305,84307,84309],{"class":462,"line":2865},[460,84280,16196],{"class":466},[460,84282,2737],{"class":470},[460,84284,2740],{"class":929},[460,84286,894],{"class":466},[460,84288,78792],{"class":1353},[460,84290,77241],{"class":466},[460,84292,30],{"class":470},[460,84294,12081],{"class":929},[460,84296,894],{"class":466},[460,84298,80714],{"class":1353},[460,84300,16224],{"class":929},[460,84302,894],{"class":466},[460,84304,6606],{"class":1353},[460,84306,80582],{"class":466},[460,84308,2737],{"class":470},[460,84310,473],{"class":466},[460,84312,84313,84315,84317],{"class":462,"line":2881},[460,84314,16244],{"class":466},[460,84316,2737],{"class":470},[460,84318,473],{"class":466},[460,84320,84321,84323,84325],{"class":462,"line":2887},[460,84322,581],{"class":466},[460,84324,2737],{"class":470},[460,84326,473],{"class":466},[460,84328,84329,84331,84333],{"class":462,"line":2893},[460,84330,467],{"class":466},[460,84332,225],{"class":470},[460,84334,473],{"class":466},[460,84336,84337],{"class":462,"line":2899},[460,84338,84339],{"class":942},"    \u002F\u002F 采取事件委托的形式，tab栏切换\n",[460,84341,84342],{"class":462,"line":2905},[460,84343,84344],{"class":942},"    \u002F\u002F 1.获取ul父元素，因为ul只有一个\n",[460,84346,84347,84349,84351,84353,84355,84357,84359,84362],{"class":462,"line":2911},[460,84348,1340],{"class":887},[460,84350,77478],{"class":900},[460,84352,2943],{"class":887},[460,84354,10599],{"class":466},[460,84356,3541],{"class":929},[460,84358,2174],{"class":466},[460,84360,84361],{"class":1353},"'.tab-nav ul'",[460,84363,3754],{"class":466},[460,84365,84366],{"class":462,"line":2920},[460,84367,84368],{"class":942},"    \u002F\u002F 2.添加事件\n",[460,84370,84371,84373,84375,84377,84379,84381,84383,84385,84387],{"class":462,"line":2929},[460,84372,83112],{"class":466},[460,84374,3599],{"class":929},[460,84376,2174],{"class":466},[460,84378,3604],{"class":1353},[460,84380,904],{"class":466},[460,84382,3976],{"class":887},[460,84384,11704],{"class":466},[460,84386,3609],{"class":3380},[460,84388,2180],{"class":466},[460,84390,84391,84393,84395],{"class":462,"line":2935},[460,84392,12805],{"class":466},[460,84394,83168],{"class":929},[460,84396,83171],{"class":466},[460,84398,84399],{"class":462,"line":2948},[460,84400,84401],{"class":942},"      \u002F\u002Fe.targer是我们点击的对象\n",[460,84403,84404,84406,84408,84410,84412],{"class":462,"line":2954},[460,84405,3654],{"class":887},[460,84407,3657],{"class":466},[460,84409,3660],{"class":887},[460,84411,3663],{"class":1353},[460,84413,2180],{"class":466},[460,84415,84416,84418,84420,84422,84425,84427,84429,84431,84433],{"class":462,"line":2965},[460,84417,68188],{"class":466},[460,84419,3541],{"class":929},[460,84421,2174],{"class":466},[460,84423,84424],{"class":1353},"'.active'",[460,84426,73213],{"class":466},[460,84428,10755],{"class":929},[460,84430,2174],{"class":466},[460,84432,80877],{"class":1353},[460,84434,3754],{"class":466},[460,84436,84437,84440,84442,84444,84446],{"class":462,"line":2976},[460,84438,84439],{"class":466},"        e.target.classList.",[460,84441,21840],{"class":929},[460,84443,2174],{"class":466},[460,84445,80877],{"class":1353},[460,84447,3754],{"class":466},[460,84449,84450],{"class":462,"line":2987},[460,84451,522],{"emptyLinePlaceholder":521},[460,84453,84454],{"class":462,"line":2998},[460,84455,84456],{"class":942},"        \u002F\u002F 下面大盒子模块\n",[460,84458,84459],{"class":462,"line":3003},[460,84460,84461],{"class":942},"        \u002F\u002F console.log(e.target.dataset.id)\n",[460,84463,84464,84466,84468,84470,84472],{"class":462,"line":3008},[460,84465,3434],{"class":887},[460,84467,10169],{"class":900},[460,84469,2943],{"class":887},[460,84471,61870],{"class":887},[460,84473,84474],{"class":466},"e.target.dataset.id\n",[460,84476,84477,84479,84481,84483,84485,84487,84489,84491,84493],{"class":462,"line":3018},[460,84478,68188],{"class":466},[460,84480,3541],{"class":929},[460,84482,2174],{"class":466},[460,84484,80924],{"class":1353},[460,84486,73213],{"class":466},[460,84488,10755],{"class":929},[460,84490,2174],{"class":466},[460,84492,80877],{"class":1353},[460,84494,3754],{"class":466},[460,84496,84497,84499,84501,84503,84505,84507,84509,84511,84513,84515,84517,84519,84521],{"class":462,"line":3028},[460,84498,68188],{"class":466},[460,84500,3541],{"class":929},[460,84502,2174],{"class":466},[460,84504,80950],{"class":1353},[460,84506,17174],{"class":466},[460,84508,61870],{"class":887},[460,84510,1400],{"class":900},[460,84512,73241],{"class":1353},[460,84514,73213],{"class":466},[460,84516,21840],{"class":929},[460,84518,2174],{"class":466},[460,84520,80877],{"class":1353},[460,84522,3754],{"class":466},[460,84524,84525],{"class":462,"line":3038},[460,84526,522],{"emptyLinePlaceholder":521},[460,84528,84529],{"class":462,"line":3048},[460,84530,552],{"class":466},[460,84532,84533],{"class":462,"line":3053},[460,84534,1679],{"class":466},[460,84536,84537,84539,84541],{"class":462,"line":3058},[460,84538,581],{"class":466},[460,84540,225],{"class":470},[460,84542,473],{"class":466},[460,84544,84545,84547,84549],{"class":462,"line":3068},[460,84546,1776],{"class":466},[460,84548,1721],{"class":470},[460,84550,473],{"class":466},[460,84552,84553],{"class":462,"line":3078},[460,84554,522],{"emptyLinePlaceholder":521},[460,84556,84557,84559,84561],{"class":462,"line":3088},[460,84558,1776],{"class":466},[460,84560,704],{"class":470},[460,84562,473],{"class":466},[23,84564,84566],{"id":84565},"_333-页面加载事件","3.3.3 页面加载事件",[103,84568,84569],{},[43,84570,84571],{},"load",[14,84573,84574],{},[30,84575],{"alt":32,"src":84576},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-140.png",[14,84578,84579],{},"window代表整个窗口，比document还要大",[14,84581,84582],{},"并不一定非得window才可以用，其他的DOM对象也可以用",[14,84584,84585],{},"img.addEventListener('load', function () {",[14,84587,84588],{},"\u002F\u002F 等待图片加载完毕，再去执行里面的代码",[14,84590,1580],{},[103,84592,84593],{"start":476},[43,84594,84595],{},"DOMContentLoaded",[14,84597,84598],{},[30,84599],{"alt":32,"src":84600},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-141.png",[14,84602,84603],{},"这个主要是给html标签，给的是文档进行处理的，所以不是对整个页面，不是window,是document",[23,84605,84607],{"id":84606},"_334-元素滚动事件","3.3.4 元素滚动事件",[14,84609,84610],{},[30,84611],{"alt":32,"src":84612},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-142.png",[14,84614,84615],{},[30,84616],{"alt":32,"src":84617},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-143.png",[14,84619,84620],{},[30,84621],{"alt":32,"src":84622},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-144.png",[14,84624,84625],{},"scrollTop和scrollLeft都是属性，他不是方法，所以后面不需要加括号",[14,84627,84628],{},"获得的是数字型数据，不带单位",[14,84630,84631],{},"scrollTop可读写，既可以获得数据，也可以进行赋值操作",[14,84633,84634],{},"body作为document的属性可以直接通过document.boby进行获取，但是html不可以这样获取",[14,84636,84637],{},"它是通过document.documentElement来获取",[14,84639,84640],{},[30,84641],{"alt":32,"src":84642},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-145.png",[14,84644,84645],{},"让页面滚动，scrollTo()是方法，上边那个scrollTop是属性值",[23,84647,84649],{"id":84648},"_335-页面缩放事件","3.3.5 页面缩放事件",[14,84651,84652],{},[30,84653],{"alt":32,"src":84654},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-146.png",[14,84656,84657],{},[30,84658],{"alt":32,"src":84659},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-147.png",[23,84661,84663],{"id":84662},"_336-元素尺寸位置","3.3.6 元素尺寸位置",[14,84665,84666],{},[30,84667],{"alt":32,"src":84668},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-148.png",[14,84670,84671],{},"offsetWidth和offsetHeight相比于clientWidth和clientHeight来说多了包含边框",[14,84673,84674],{},[30,84675],{"alt":32,"src":84676},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-149.png",[14,84678,84679],{},"scrollLeft和scrollTop与滚动有关系，是读写的，而offsetLeft和offsetTop与盒子的位置有关系，只可以读取，不可以进行赋值操作",[14,84681,84682],{},"offsetTop和offsetLeft 得到位置以带有定位的父级为准，如果都没有则以 文档左上角为准",[14,84684,84685],{},"pageX和pageY可以获取鼠标在页面中的坐标，要搭配事件对象使用",[14,84687,84688],{},"大盒子中套了一个小盒子，大盒子为相对定位，小盒子为绝对定位，则我对小盒子使用offsetTop和offsetLeft获取的位置是从小盒子的外边框到大盒子的内边框的距离，如果我们想获得小盒子在浏览器页面的位置可以使用 getBoundingClientRect() 这个函数不会受定位盒子的影响",[14,84690,84691],{},"getBoundingClientRect()这个方法得到的是一个对象，包含left,top等属性",[14,84693,84694],{},[30,84695],{"alt":32,"src":84696},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-150.png",[14,84698,84699],{},"getBoundingClientRect()是相对于浏览器可视页面的距离，滚动条稍微向下滚动一些，getBoundingClientRect().top的值就不准了，如果想得到鼠标在盒子中的y方向的距离，此时需要：e.pageY-box.getBoundingClientRect().top-document.documentElement.scrollTop",[14,84701,84702],{},"多减一下滚动的距离(HTML文档在window窗口内滚动的距离)，就可以得到鼠标在box盒子中相对父盒子的距离",[14,84704,84705],{},"浏览器页面由于基本不会进行左右拖动，可以不用考虑这方面的因素，鼠标相对于浏览器可视区域左侧的距离为：",[14,84707,84708],{},"e.pageX-box.getBoundingClientRect()",[23,84710,84712],{"id":84711},"_337-获取元素位置的另一种方法","3.3.7 获取元素位置的另一种方法",[14,84714,84715],{},[30,84716],{"alt":32,"src":84717},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-151.png",[14,84719,84720],{},"这个是相对于视口来说的，它是个方法，不是属性值",[23,84722,84724],{"id":84723},"_338-总结","3.3.8 总结",[14,84726,84727],{},[30,84728],{"alt":32,"src":84729},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-152.png",[14,84731,84732],{},"clientWidth\u002FclientHeight和offsetWidth\u002FoffsetHeight都是可读的，不能进行赋值操作",[14,84734,84735],{},"修改盒子的宽高只能通过width和height来实现",[23,84737,84739],{"id":84738},"_339-页面滚动丝滑css写法","3.3.9 页面滚动丝滑css写法",[451,84741,84743],{"className":702,"code":84742,"language":704,"meta":32,"style":32},"\u002F* 页面滑动 *\u002F\nhtml {\n  \u002F* 让滚动条丝滑的滚动 *\u002F\n  scroll-behavior: smooth;\n}\n",[457,84744,84745,84750,84755,84760,84765],{"__ignoreMap":32},[460,84746,84747],{"class":462,"line":463},[460,84748,84749],{"class":466},"\u002F* 页面滑动 *\u002F\n",[460,84751,84752],{"class":462,"line":476},[460,84753,84754],{"class":466},"html {\n",[460,84756,84757],{"class":462,"line":482},[460,84758,84759],{"class":466},"  \u002F* 让滚动条丝滑的滚动 *\u002F\n",[460,84761,84762],{"class":462,"line":488},[460,84763,84764],{"class":466},"  scroll-behavior: smooth;\n",[460,84766,84767],{"class":462,"line":494},[460,84768,821],{"class":466},[14,84770,84771],{},"默认是auto",[23,84773,84775],{"id":84774},"_3310-日期对象","3.3.10 日期对象",[115,84777,84779],{"id":84778},"_33101-实例化","3.3.10.1 实例化",[14,84781,84782],{},[30,84783],{"alt":32,"src":84784},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-153.png",[115,84786,84788],{"id":84787},"_33102-时期对象方法","3.3.10.2 时期对象方法",[14,84790,84791],{},[30,84792],{"alt":32,"src":84793},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-154.png",[14,84795,84796],{},"月份+1",[14,84798,84799],{},"老外认为第一天为0，星期天",[14,84801,84802],{},"方法使用的时候必须要跟括号",[14,84804,84805],{},"快速获得日期",[14,84807,84808],{},"\u002F\u002F 得到年月日",[14,84810,84811],{},"\u002F\u002F div.innerHTML = date.toLocaleDateString()",[14,84813,84814],{},"\u002F\u002F 得到当地日期",[14,84816,84817],{},"\u002F\u002F div.innerHTML = date.toLocaleString()",[14,84819,84820],{},"\u002F\u002F 得到当地时间",[14,84822,84823],{},"\u002F\u002F div.innerHTML = date.toLocaleTimeString()",[14,84825,84826],{},"注意再使用定时器时，在定时器外也写一个获得时间，不然刷新浏览器刚开始由于定时器要间隔一段时间采取调用函数，会导致一开始不显示",[14,84828,84829],{},"如果不考虑快速的方式，要设置自己的样式的话，自己封装一个函数！！！",[225,84831,84832],{},"\n\nconst div = document.querySelector('div')\n\nfunction getMyDate() {\n\nconst date = new Date()\n\nlet h = date.getHours()\n\nlet m = date.getMinutes()\n\nlet s = date.getSeconds()\n\nh = h \u003C 10 ? '0' + h : h\n\nm = m \u003C 10 ? '0' + m : m\n\ns = s \u003C 10 ? '0' + s : s\n\nreturn \\``今天是${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}号 ${h}:${m}:${s}`\\`\n\n}\n\n\u002F\u002F 外面还写一个这个时间是因为定时器需要经过1秒才调用一次函数，刚开始会有空白\n\ndiv.innerHTML = getMyDate()\n\nsetInterval(function () {\n\ndiv.innerHTML = getMyDate()\n\n}, 1000)\n\n",[14,84834,84835],{},"学会去封装函数！",[115,84837,84839],{"id":84838},"_33103-时间戳","3.3.10.3 时间戳",[14,84841,84842],{},[30,84843],{"alt":32,"src":84844},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-155.png",[14,84846,84847],{},[30,84848],{"alt":32,"src":84849},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-156.png",[14,84851,84852],{},"三种方法记住一个就可以",[23,84854,84856],{"id":84855},"_3311-节点操作","3.3.11 节点操作",[115,84858,84860],{"id":84859},"_33111-dom节点","3.3.11.1 DOM节点",[14,84862,84863],{},[30,84864],{"alt":32,"src":84865},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-157.png",[14,84867,84868],{},"我们主要用的就是元素节点，因为对元素节点操作就可以实现对标签内容样式的修改，就不需要使用属性节点和文本节点来操作了，后边的增删改查都是对元素节点来进行操作的",[115,84870,84872],{"id":84871},"_33112-查找节点","3.3.11.2 查找节点",[14,84874,84875],{},"前边的document.querySelector()是获取的元素",[14,84877,84878],{},"这里是通过关系来获取！！！，就是正常通过document.querySelector()获取元素，这个元素是个对象，此时他的父亲儿子啥的就不用再使用document.querySelector()来获取了，直接通过关系来获取",[14,84880,84881],{},[30,84882],{"alt":32,"src":84883},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-158.png",[103,84885,84886],{},[43,84887,84888],{},"父节点",[14,84890,84891],{},[30,84892],{"alt":32,"src":84893},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-159.png",[103,84895,84896],{"start":476},[43,84897,84898],{},"子节点",[14,84900,84901],{},[30,84902],{"alt":32,"src":84903},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-160.png",[14,84905,84906],{},"如果使用childNodes来获得子节点，还包括文本节点、注释节点等，但是这些对我们来说没啥用，所以children来获取子节点，他就是个标签",[14,84908,84909],{},"children获得的是伪数组，是亲儿子",[103,84911,84912],{"start":482},[43,84913,84914],{},"兄弟节点",[14,84916,84917],{},[30,84918],{"alt":32,"src":84919},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-161.png",[115,84921,84923],{"id":84922},"_33113-增加节点","3.3.11.3 增加节点",[14,84925,84926],{},[30,84927],{"alt":32,"src":84928},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-162.png",[14,84930,84931],{},"创建好之后给它通过innerHTML添加内容是不显示的内容的，因为只是创建了节点，还不知道节点在哪里",[14,84933,84934],{},[30,84935],{"alt":32,"src":84936},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-163.png",[14,84938,84939],{},"在主体板块制作时，就是将各个信息写成数组对象的形式，然后利用循环来添加和追加节点，并将信息使用innerHTML来实现效果输出，因为innerHTML可以实现对标签的解析",[14,84941,84942],{},"下面是写法的部分展示，就按照下边的格式来写",[14,84944,84945],{},"例：",[225,84947,84948],{},"\n\n\u002F\u002F 1. 重构 let data = \\[\n\n{\n\nsrc: 'images\u002Fcourse01.png',\n\ntitle: 'Think PHP 5.0 博客系统实战项目演练',\n\nnum: 1125\n\n},\n\n{\n\nsrc: 'images\u002Fcourse02.png',\n\ntitle: 'Android 网络动态图片加载实战',\n\nnum: 357\n\n},\n\n{\n\nsrc: 'images\u002Fcourse03.png',\n\ntitle: 'Angular2 大前端商城实战项目演练',\n\nnum: 22250\n\n},\n\n{\n\nsrc: 'images\u002Fcourse04.png',\n\ntitle: 'Android APP 实战项目演练',\n\nnum: 389\n\n},\n\n{\n\nsrc: 'images\u002Fcourse05.png',\n\ntitle: 'UGUI 源码深度分析案例',\n\nnum: 124\n\n},\n\n{\n\nsrc: 'images\u002Fcourse06.png',\n\ntitle: 'Kami2首页界面切换效果实战演练',\n\nnum: 432\n\n},\n\n{\n\nsrc: 'images\u002Fcourse07.png',\n\ntitle: 'UNITY 从入门到精通实战案例',\n\nnum: 888\n\n},\n\n{\n\nsrc: 'images\u002Fcourse08.png',\n\ntitle: 'Cocos 深度学习你不会错过的实战',\n\nnum: 590\n\n},\n\n\\]\n\n\u002F\u002F 1.根据数据的个数创建对应的li\n\nconst ul = document.querySelector('ul')\n\nfor (let i = 0; i \u003C data.length; i++) {\n\n\u002F\u002F 2.创建新的li\n\nconst li = document.createElement('li')\n\nul.appendChild(li)\n\n\u002F\u002F 把内容给li\n\nli.innerHTML = `\u003Ca href=\"#\">`\n\n   `\u003Cimg src=\"${data[i].src}\" alt=\"\">`\n\n   `\u003Ch4>${data[i].title}\u003C\u002Fh4>`\n\n   `\u003Cdiv class=\"info\">`\n\n   `\u003Cspan>高级\u003C\u002Fspan>·\u003Cspan>${data[i].num}\u003C\u002Fspan>人在学 \u003C\u002Fdiv>`\n\n   `\u003C\u002Fa>`\n\n}\n\n",[14,84950,84951],{},[30,84952],{"alt":32,"src":84953},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-164.png",[14,84955,84956],{},"false只克隆标签，里边的内容不会克隆过来",[451,84958,84960],{"className":702,"code":84959,"language":704,"meta":32,"style":32},"    ul.appendChild(ul.children[1].cloneNode(true))\n",[457,84961,84962],{"__ignoreMap":32},[460,84963,84964],{"class":462,"line":463},[460,84965,84959],{"class":466},[115,84967,84969],{"id":84968},"_33114-删除节点","3.3.11.4 删除节点",[14,84971,84972],{},[30,84973],{"alt":32,"src":84974},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-165.png",[14,84976,84977],{},"父亲删儿子",[14,84979,84980],{},"removeChild是真删除节点了，直接从HTML中删除了；而display: none;只是隐藏起来了盒子，而且还不占位置",[23,84982,84984],{"id":84983},"_3312-m端事件","3.3.12 M端事件",[14,84986,84987],{},"M端就是移动端",[14,84989,84990],{},[30,84991],{"alt":32,"src":84992},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-166.png",[23,84994,84996],{"id":84995},"_3313-插件","3.3.13 插件",[14,84998,84999],{},"要熟悉官网！！！",[14,85001,85002],{},[2756,85003,85004],{"href":85004,"rel":85005},"https:\u002F\u002Fwww.swiper.com.cn\u002F",[4943],[14,85007,85008],{},[2756,85009,85010],{"href":85010,"rel":85011},"https:\u002F\u002Fwww.swiper.com.cn\u002Fdemo\u002Findex.html",[4943],[23,85013,85015],{"id":85014},"_3314-学生信息表","3.3.14 学生信息表",[103,85017,85018,85021,85024,85027,85030,85033,85036,85039],{},[43,85019,85020],{},"对于表单元素，添加事件监听的时候，事件类型应当为submit，即给form标签添加事件监听，事件类型为submit",[43,85022,85023],{},"提交表单的时候不能跳转刷新，应当使用阻止跳转 e.preventDefault() 点任何地方都不可以跳转",[43,85025,85026],{},"在提交信息之后内容填写的内容应当清空，清空的操作(this就是指的form,因为是对它添加的事件监听)：this.reset()",[43,85028,85029],{},"用好表单元素自带的属性，value,name等",[43,85031,85032],{},"删除操作的时不要删DOM节点，删除的是数组中的数据，要使用的是自定义属性，让它自己生成，循环的时候加上自定义属性",[43,85034,85035],{},"不要忘记事件对象",[43,85037,85038],{},"selecte选择标签，里边的option的value一定要写，不然通过.value的形式获取不到值",[43,85040,85041],{},"表单元素不要具备记录标签，就是过段事件点击填写，不显示上次输入的内容：给form的属性autocomplete设为off，这个属性两个值，on是记录，off是不记录",[14,85043,85044],{},"结构：",[451,85046,85048],{"className":702,"code":85047,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\" \u002F>\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\n  \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\" \u002F>\n  \u003Ctitle>学生信息管理\u003C\u002Ftitle>\n  \u003Clink rel=\"stylesheet\" href=\"css\u002Findex.css\" \u002F>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Ch1>新增学员\u003C\u002Fh1>\n  \u003Cform class=\"info\" autocomplete=\"off\">\n    姓名：\u003Cinput type=\"text\" class=\"uname\" name=\"uname\" \u002F>\n    年龄：\u003Cinput type=\"text\" class=\"age\" name=\"age\" \u002F>\n    性别:\n    \u003Cselect name=\"gender\" class=\"gender\">\n      \u003Coption value=\"男\">男\u003C\u002Foption>\n      \u003Coption value=\"女\">女\u003C\u002Foption>\n    \u003C\u002Fselect>\n    薪资：\u003Cinput type=\"text\" class=\"salary\" name=\"salary\" \u002F>\n    就业城市：\u003Cselect name=\"city\" class=\"city\">\n      \u003Coption value=\"北京\">北京\u003C\u002Foption>\n      \u003Coption value=\"上海\">上海\u003C\u002Foption>\n      \u003Coption value=\"广州\">广州\u003C\u002Foption>\n      \u003Coption value=\"深圳\">深圳\u003C\u002Foption>\n      \u003Coption value=\"曹县\">曹县\u003C\u002Foption>\n    \u003C\u002Fselect>\n    \u003Cbutton class=\"add\">录入\u003C\u002Fbutton>\n  \u003C\u002Fform>\n\n  \u003Ch1>就业榜\u003C\u002Fh1>\n  \u003Ctable>\n    \u003Cthead>\n      \u003Ctr>\n        \u003Cth>序号\u003C\u002Fth>\n        \u003Cth>姓名\u003C\u002Fth>\n        \u003Cth>年龄\u003C\u002Fth>\n        \u003Cth>性别\u003C\u002Fth>\n        \u003Cth>薪资\u003C\u002Fth>\n        \u003Cth>就业城市\u003C\u002Fth>\n        \u003Cth>操作\u003C\u002Fth>\n      \u003C\u002Ftr>\n    \u003C\u002Fthead>\n    \u003Ctbody>\n      \u003C!-- \n        \u003Ctr>\n          \u003Ctd>1001\u003C\u002Ftd>\n          \u003Ctd>欧阳霸天\u003C\u002Ftd>\n          \u003Ctd>19\u003C\u002Ftd>\n          \u003Ctd>男\u003C\u002Ftd>\n          \u003Ctd>15000\u003C\u002Ftd>\n          \u003Ctd>上海\u003C\u002Ftd>\n          \u003Ctd>\n            \u003Ca href=\"javascript:\">删除\u003C\u002Fa>\n          \u003C\u002Ftd>\n        \u003C\u002Ftr> \n        -->\n    \u003C\u002Ftbody>\n  \u003C\u002Ftable>\n  \u003Cscript>\n    \u002F\u002F 获取元素\n    const uname = document.querySelector('.uname')\n    const age = document.querySelector('.age')\n    const gender = document.querySelector('.gender')\n    const salary = document.querySelector('.salary')\n    const city = document.querySelector('.city')\n    const tbody = document.querySelector('tbody')\n\n    \u002F\u002F 获取所有带有name属性的元素\n    const items = document.querySelectorAll('[name]')\n    \u002F\u002F 声明一个空的数组\n    const arr = []\n    \u002F\u002F 1.录入模块\n    \u002F\u002F 1.1这是一个表单提交事件\n    const info = document.querySelector('.info')\n    info.addEventListener('submit', function (e) {\n      \u002F\u002F 阻止默认行为，点击按钮之后不进行跳转\n      e.preventDefault()\n      \u002F\u002F console.log(11)\n\n      \u002F\u002F 这里进行表单验证  如果不通过,直接添加中断,不需要添加数据\n      \u002F\u002F 先遍历循环\n      for (let i = 0; i \u003C items.length; i++) {\n        if (items[i].value === '') {\n          return alert('输入内容不能为空')\n        }\n      }\n\n      \u002F\u002F 创建新的对象\n      const obj = {\n        stuID: arr.length + 1,\n        uname: uname.value,\n        age: age.value,\n        gender: gender.value,\n        salary: salary.value,\n        city: city.value\n      }\n      \u002F\u002F console.log(obj);\n      \u002F\u002F 追加到数组里面\n      arr.push(obj)\n      \u002F\u002F console.log(arr);\n      \u002F\u002F 清空表单  reset重置表单\n      this.reset()\n      \u002F\u002F 调用渲染函数\n      render()\n    })\n    \u002F\u002F 2.渲染函数(因为增加和删除都需要渲染)\n    function render() {\n      \u002F\u002F 先清空tbody,把最新数组里面的数据渲染完毕\n      tbody.innerHTML = ''\n      \u002F\u002F 遍历数组\n      for (let i = 0; i \u003C arr.length; i++) {\n        const tr = document.createElement('tr')\n        tr.innerHTML = `\n        \u003Ctd>${arr[i].stuID}\u003C\u002Ftd>\n          \u003Ctd>${arr[i].uname}\u003C\u002Ftd>\n          \u003Ctd>${arr[i].age}\u003C\u002Ftd>\n          \u003Ctd>${arr[i].gender}\u003C\u002Ftd>\n          \u003Ctd>${arr[i].salary}\u003C\u002Ftd>\n          \u003Ctd>${arr[i].city}\u003C\u002Ftd>\n          \u003Ctd>\n            \u003Ca href=\"javascript:\" data-id=${i}>删除\u003C\u002Fa>\n          \u003C\u002Ftd> \n          `\n        \u002F\u002F 追加元素 父元素.appendChild(子元素)\n        tbody.appendChild(tr)\n      }\n    }\n\n    \u002F\u002F 3.删除委托\n    \u002F\u002F 3.1 事件委托 tbody\n    tbody.addEventListener('click', function (e) {\n      if (e.target.tagName === 'A') {\n        \u002F\u002F 得到当前元素的自定义属性 data-id\n        \u002F\u002F console.log(e.target.dataset.id);\n        \u002F\u002F 删除arr 数组里面对应的数据\n        arr.splice(e.target.dataset.id, 1)\n        \u002F\u002F 重新渲染一次\n        render()\n      }\n    })\n  \u003C\u002Fscript>\n\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,85049,85050,85060,85074,85078,85086,85100,85120,85141,85154,85178,85186,85190,85198,85211,85232,85260,85288,85293,85315,85335,85354,85362,85390,85412,85432,85452,85472,85492,85512,85520,85540,85548,85552,85565,85573,85581,85589,85602,85615,85628,85641,85654,85667,85680,85688,85696,85704,85709,85714,85719,85724,85729,85734,85739,85744,85749,85754,85759,85764,85769,85777,85785,85793,85797,85817,85836,85856,85876,85896,85916,85920,85925,85945,85950,85960,85965,85970,85990,86012,86017,86027,86031,86035,86040,86045,86074,86087,86102,86106,86110,86114,86119,86129,86142,86147,86152,86157,86162,86167,86171,86176,86181,86189,86194,86199,86210,86215,86222,86226,86231,86239,86244,86253,86257,86285,86305,86314,86334,86352,86368,86384,86401,86418,86422,86432,86437,86442,86447,86458,86462,86466,86470,86475,86480,86501,86513,86518,86523,86528,86542,86547,86553,86557,86561,86569,86573,86581,86585],{"__ignoreMap":32},[460,85051,85052,85054,85056,85058],{"class":462,"line":463},[460,85053,1845],{"class":466},[460,85055,1848],{"class":470},[460,85057,1851],{"class":929},[460,85059,473],{"class":466},[460,85061,85062,85064,85066,85068,85070,85072],{"class":462,"line":476},[460,85063,781],{"class":466},[460,85065,704],{"class":470},[460,85067,1862],{"class":929},[460,85069,894],{"class":466},[460,85071,1867],{"class":1353},[460,85073,473],{"class":466},[460,85075,85076],{"class":462,"line":482},[460,85077,522],{"emptyLinePlaceholder":521},[460,85079,85080,85082,85084],{"class":462,"line":488},[460,85081,781],{"class":466},[460,85083,1880],{"class":470},[460,85085,473],{"class":466},[460,85087,85088,85090,85092,85094,85096,85098],{"class":462,"line":494},[460,85089,467],{"class":466},[460,85091,1889],{"class":470},[460,85093,1892],{"class":929},[460,85095,894],{"class":466},[460,85097,1897],{"class":1353},[460,85099,15726],{"class":466},[460,85101,85102,85104,85106,85108,85110,85112,85114,85116,85118],{"class":462,"line":500},[460,85103,467],{"class":466},[460,85105,1889],{"class":470},[460,85107,1908],{"class":929},[460,85109,894],{"class":466},[460,85111,1913],{"class":1353},[460,85113,1916],{"class":929},[460,85115,894],{"class":466},[460,85117,1921],{"class":1353},[460,85119,15726],{"class":466},[460,85121,85122,85124,85126,85128,85130,85132,85134,85136,85139],{"class":462,"line":506},[460,85123,467],{"class":466},[460,85125,1889],{"class":470},[460,85127,15735],{"class":929},[460,85129,894],{"class":466},[460,85131,15740],{"class":1353},[460,85133,1916],{"class":929},[460,85135,894],{"class":466},[460,85137,85138],{"class":1353},"\"ie=edge\"",[460,85140,15726],{"class":466},[460,85142,85143,85145,85147,85150,85152],{"class":462,"line":512},[460,85144,467],{"class":466},[460,85146,1930],{"class":470},[460,85148,85149],{"class":466},">学生信息管理\u003C\u002F",[460,85151,1930],{"class":470},[460,85153,473],{"class":466},[460,85155,85156,85158,85161,85164,85166,85169,85171,85173,85176],{"class":462,"line":518},[460,85157,467],{"class":466},[460,85159,85160],{"class":470},"link",[460,85162,85163],{"class":929}," rel",[460,85165,894],{"class":466},[460,85167,85168],{"class":1353},"\"stylesheet\"",[460,85170,2759],{"class":929},[460,85172,894],{"class":466},[460,85174,85175],{"class":1353},"\"css\u002Findex.css\"",[460,85177,15726],{"class":466},[460,85179,85180,85182,85184],{"class":462,"line":525},[460,85181,1776],{"class":466},[460,85183,1880],{"class":470},[460,85185,473],{"class":466},[460,85187,85188],{"class":462,"line":531},[460,85189,522],{"emptyLinePlaceholder":521},[460,85191,85192,85194,85196],{"class":462,"line":537},[460,85193,781],{"class":466},[460,85195,1721],{"class":470},[460,85197,473],{"class":466},[460,85199,85200,85202,85204,85207,85209],{"class":462,"line":543},[460,85201,467],{"class":466},[460,85203,10],{"class":470},[460,85205,85206],{"class":466},">新增学员\u003C\u002F",[460,85208,10],{"class":470},[460,85210,473],{"class":466},[460,85212,85213,85215,85217,85219,85221,85223,85226,85228,85230],{"class":462,"line":549},[460,85214,467],{"class":466},[460,85216,82783],{"class":470},[460,85218,2740],{"class":929},[460,85220,894],{"class":466},[460,85222,78833],{"class":1353},[460,85224,85225],{"class":929}," autocomplete",[460,85227,894],{"class":466},[460,85229,48181],{"class":1353},[460,85231,473],{"class":466},[460,85233,85234,85237,85239,85241,85243,85245,85247,85249,85252,85254,85256,85258],{"class":462,"line":555},[460,85235,85236],{"class":466},"    姓名：\u003C",[460,85238,70068],{"class":470},[460,85240,70071],{"class":929},[460,85242,894],{"class":466},[460,85244,78868],{"class":1353},[460,85246,2740],{"class":929},[460,85248,894],{"class":466},[460,85250,85251],{"class":1353},"\"uname\"",[460,85253,1908],{"class":929},[460,85255,894],{"class":466},[460,85257,85251],{"class":1353},[460,85259,15726],{"class":466},[460,85261,85262,85265,85267,85269,85271,85273,85275,85277,85280,85282,85284,85286],{"class":462,"line":560},[460,85263,85264],{"class":466},"    年龄：\u003C",[460,85266,70068],{"class":470},[460,85268,70071],{"class":929},[460,85270,894],{"class":466},[460,85272,78868],{"class":1353},[460,85274,2740],{"class":929},[460,85276,894],{"class":466},[460,85278,85279],{"class":1353},"\"age\"",[460,85281,1908],{"class":929},[460,85283,894],{"class":466},[460,85285,85279],{"class":1353},[460,85287,15726],{"class":466},[460,85289,85290],{"class":462,"line":566},[460,85291,85292],{"class":466},"    性别:\n",[460,85294,85295,85297,85300,85302,85304,85307,85309,85311,85313],{"class":462,"line":572},[460,85296,2753],{"class":466},[460,85298,85299],{"class":470},"select",[460,85301,1908],{"class":929},[460,85303,894],{"class":466},[460,85305,85306],{"class":1353},"\"gender\"",[460,85308,2740],{"class":929},[460,85310,894],{"class":466},[460,85312,85306],{"class":1353},[460,85314,473],{"class":466},[460,85316,85317,85319,85322,85324,85326,85328,85331,85333],{"class":462,"line":578},[460,85318,16196],{"class":466},[460,85320,85321],{"class":470},"option",[460,85323,82809],{"class":929},[460,85325,894],{"class":466},[460,85327,26426],{"class":1353},[460,85329,85330],{"class":466},">男\u003C\u002F",[460,85332,85321],{"class":470},[460,85334,473],{"class":466},[460,85336,85337,85339,85341,85343,85345,85347,85350,85352],{"class":462,"line":812},[460,85338,16196],{"class":466},[460,85340,85321],{"class":470},[460,85342,82809],{"class":929},[460,85344,894],{"class":466},[460,85346,26495],{"class":1353},[460,85348,85349],{"class":466},">女\u003C\u002F",[460,85351,85321],{"class":470},[460,85353,473],{"class":466},[460,85355,85356,85358,85360],{"class":462,"line":818},[460,85357,16244],{"class":466},[460,85359,85299],{"class":470},[460,85361,473],{"class":466},[460,85363,85364,85367,85369,85371,85373,85375,85377,85379,85382,85384,85386,85388],{"class":462,"line":824},[460,85365,85366],{"class":466},"    薪资：\u003C",[460,85368,70068],{"class":470},[460,85370,70071],{"class":929},[460,85372,894],{"class":466},[460,85374,78868],{"class":1353},[460,85376,2740],{"class":929},[460,85378,894],{"class":466},[460,85380,85381],{"class":1353},"\"salary\"",[460,85383,1908],{"class":929},[460,85385,894],{"class":466},[460,85387,85381],{"class":1353},[460,85389,15726],{"class":466},[460,85391,85392,85395,85397,85399,85401,85404,85406,85408,85410],{"class":462,"line":2074},[460,85393,85394],{"class":466},"    就业城市：\u003C",[460,85396,85299],{"class":470},[460,85398,1908],{"class":929},[460,85400,894],{"class":466},[460,85402,85403],{"class":1353},"\"city\"",[460,85405,2740],{"class":929},[460,85407,894],{"class":466},[460,85409,85403],{"class":1353},[460,85411,473],{"class":466},[460,85413,85414,85416,85418,85420,85422,85425,85428,85430],{"class":462,"line":2088},[460,85415,16196],{"class":466},[460,85417,85321],{"class":470},[460,85419,82809],{"class":929},[460,85421,894],{"class":466},[460,85423,85424],{"class":1353},"\"北京\"",[460,85426,85427],{"class":466},">北京\u003C\u002F",[460,85429,85321],{"class":470},[460,85431,473],{"class":466},[460,85433,85434,85436,85438,85440,85442,85445,85448,85450],{"class":462,"line":2103},[460,85435,16196],{"class":466},[460,85437,85321],{"class":470},[460,85439,82809],{"class":929},[460,85441,894],{"class":466},[460,85443,85444],{"class":1353},"\"上海\"",[460,85446,85447],{"class":466},">上海\u003C\u002F",[460,85449,85321],{"class":470},[460,85451,473],{"class":466},[460,85453,85454,85456,85458,85460,85462,85465,85468,85470],{"class":462,"line":2122},[460,85455,16196],{"class":466},[460,85457,85321],{"class":470},[460,85459,82809],{"class":929},[460,85461,894],{"class":466},[460,85463,85464],{"class":1353},"\"广州\"",[460,85466,85467],{"class":466},">广州\u003C\u002F",[460,85469,85321],{"class":470},[460,85471,473],{"class":466},[460,85473,85474,85476,85478,85480,85482,85485,85488,85490],{"class":462,"line":2144},[460,85475,16196],{"class":466},[460,85477,85321],{"class":470},[460,85479,82809],{"class":929},[460,85481,894],{"class":466},[460,85483,85484],{"class":1353},"\"深圳\"",[460,85486,85487],{"class":466},">深圳\u003C\u002F",[460,85489,85321],{"class":470},[460,85491,473],{"class":466},[460,85493,85494,85496,85498,85500,85502,85505,85508,85510],{"class":462,"line":2158},[460,85495,16196],{"class":466},[460,85497,85321],{"class":470},[460,85499,82809],{"class":929},[460,85501,894],{"class":466},[460,85503,85504],{"class":1353},"\"曹县\"",[460,85506,85507],{"class":466},">曹县\u003C\u002F",[460,85509,85321],{"class":470},[460,85511,473],{"class":466},[460,85513,85514,85516,85518],{"class":462,"line":2163},[460,85515,16244],{"class":466},[460,85517,85299],{"class":470},[460,85519,473],{"class":466},[460,85521,85522,85524,85526,85528,85530,85533,85536,85538],{"class":462,"line":2168},[460,85523,2753],{"class":466},[460,85525,10501],{"class":470},[460,85527,2740],{"class":929},[460,85529,894],{"class":466},[460,85531,85532],{"class":1353},"\"add\"",[460,85534,85535],{"class":466},">录入\u003C\u002F",[460,85537,10501],{"class":470},[460,85539,473],{"class":466},[460,85541,85542,85544,85546],{"class":462,"line":2183},[460,85543,581],{"class":466},[460,85545,82783],{"class":470},[460,85547,473],{"class":466},[460,85549,85550],{"class":462,"line":2194},[460,85551,522],{"emptyLinePlaceholder":521},[460,85553,85554,85556,85558,85561,85563],{"class":462,"line":2199},[460,85555,467],{"class":466},[460,85557,10],{"class":470},[460,85559,85560],{"class":466},">就业榜\u003C\u002F",[460,85562,10],{"class":470},[460,85564,473],{"class":466},[460,85566,85567,85569,85571],{"class":462,"line":2204},[460,85568,467],{"class":466},[460,85570,16884],{"class":470},[460,85572,473],{"class":466},[460,85574,85575,85577,85579],{"class":462,"line":2212},[460,85576,2753],{"class":466},[460,85578,16887],{"class":470},[460,85580,473],{"class":466},[460,85582,85583,85585,85587],{"class":462,"line":2257},[460,85584,16196],{"class":466},[460,85586,16890],{"class":470},[460,85588,473],{"class":466},[460,85590,85591,85593,85595,85598,85600],{"class":462,"line":2285},[460,85592,16212],{"class":466},[460,85594,16893],{"class":470},[460,85596,85597],{"class":466},">序号\u003C\u002F",[460,85599,16893],{"class":470},[460,85601,473],{"class":466},[460,85603,85604,85606,85608,85611,85613],{"class":462,"line":2298},[460,85605,16212],{"class":466},[460,85607,16893],{"class":470},[460,85609,85610],{"class":466},">姓名\u003C\u002F",[460,85612,16893],{"class":470},[460,85614,473],{"class":466},[460,85616,85617,85619,85621,85624,85626],{"class":462,"line":2303},[460,85618,16212],{"class":466},[460,85620,16893],{"class":470},[460,85622,85623],{"class":466},">年龄\u003C\u002F",[460,85625,16893],{"class":470},[460,85627,473],{"class":466},[460,85629,85630,85632,85634,85637,85639],{"class":462,"line":2308},[460,85631,16212],{"class":466},[460,85633,16893],{"class":470},[460,85635,85636],{"class":466},">性别\u003C\u002F",[460,85638,16893],{"class":470},[460,85640,473],{"class":466},[460,85642,85643,85645,85647,85650,85652],{"class":462,"line":2318},[460,85644,16212],{"class":466},[460,85646,16893],{"class":470},[460,85648,85649],{"class":466},">薪资\u003C\u002F",[460,85651,16893],{"class":470},[460,85653,473],{"class":466},[460,85655,85656,85658,85660,85663,85665],{"class":462,"line":2333},[460,85657,16212],{"class":466},[460,85659,16893],{"class":470},[460,85661,85662],{"class":466},">就业城市\u003C\u002F",[460,85664,16893],{"class":470},[460,85666,473],{"class":466},[460,85668,85669,85671,85673,85676,85678],{"class":462,"line":2338},[460,85670,16212],{"class":466},[460,85672,16893],{"class":470},[460,85674,85675],{"class":466},">操作\u003C\u002F",[460,85677,16893],{"class":470},[460,85679,473],{"class":466},[460,85681,85682,85684,85686],{"class":462,"line":2343},[460,85683,16235],{"class":466},[460,85685,16890],{"class":470},[460,85687,473],{"class":466},[460,85689,85690,85692,85694],{"class":462,"line":2353},[460,85691,16244],{"class":466},[460,85693,16887],{"class":470},[460,85695,473],{"class":466},[460,85697,85698,85700,85702],{"class":462,"line":2368},[460,85699,2753],{"class":466},[460,85701,16930],{"class":470},[460,85703,473],{"class":466},[460,85705,85706],{"class":462,"line":2381},[460,85707,85708],{"class":942},"      \u003C!-- \n",[460,85710,85711],{"class":462,"line":2394},[460,85712,85713],{"class":942},"        \u003Ctr>\n",[460,85715,85716],{"class":462,"line":2399},[460,85717,85718],{"class":942},"          \u003Ctd>1001\u003C\u002Ftd>\n",[460,85720,85721],{"class":462,"line":2404},[460,85722,85723],{"class":942},"          \u003Ctd>欧阳霸天\u003C\u002Ftd>\n",[460,85725,85726],{"class":462,"line":2414},[460,85727,85728],{"class":942},"          \u003Ctd>19\u003C\u002Ftd>\n",[460,85730,85731],{"class":462,"line":2428},[460,85732,85733],{"class":942},"          \u003Ctd>男\u003C\u002Ftd>\n",[460,85735,85736],{"class":462,"line":2440},[460,85737,85738],{"class":942},"          \u003Ctd>15000\u003C\u002Ftd>\n",[460,85740,85741],{"class":462,"line":2445},[460,85742,85743],{"class":942},"          \u003Ctd>上海\u003C\u002Ftd>\n",[460,85745,85746],{"class":462,"line":2450},[460,85747,85748],{"class":942},"          \u003Ctd>\n",[460,85750,85751],{"class":462,"line":2460},[460,85752,85753],{"class":942},"            \u003Ca href=\"javascript:\">删除\u003C\u002Fa>\n",[460,85755,85756],{"class":462,"line":2473},[460,85757,85758],{"class":942},"          \u003C\u002Ftd>\n",[460,85760,85761],{"class":462,"line":2487},[460,85762,85763],{"class":942},"        \u003C\u002Ftr> \n",[460,85765,85766],{"class":462,"line":2492},[460,85767,85768],{"class":942},"        -->\n",[460,85770,85771,85773,85775],{"class":462,"line":2497},[460,85772,16244],{"class":466},[460,85774,16930],{"class":470},[460,85776,473],{"class":466},[460,85778,85779,85781,85783],{"class":462,"line":2505},[460,85780,581],{"class":466},[460,85782,16884],{"class":470},[460,85784,473],{"class":466},[460,85786,85787,85789,85791],{"class":462,"line":2516},[460,85788,467],{"class":466},[460,85790,225],{"class":470},[460,85792,473],{"class":466},[460,85794,85795],{"class":462,"line":2529},[460,85796,76153],{"class":942},[460,85798,85799,85801,85804,85806,85808,85810,85812,85815],{"class":462,"line":2542},[460,85800,1340],{"class":887},[460,85802,85803],{"class":900}," uname",[460,85805,2943],{"class":887},[460,85807,10599],{"class":466},[460,85809,3541],{"class":929},[460,85811,2174],{"class":466},[460,85813,85814],{"class":1353},"'.uname'",[460,85816,3754],{"class":466},[460,85818,85819,85821,85823,85825,85827,85829,85831,85834],{"class":462,"line":2559},[460,85820,1340],{"class":887},[460,85822,32139],{"class":900},[460,85824,2943],{"class":887},[460,85826,10599],{"class":466},[460,85828,3541],{"class":929},[460,85830,2174],{"class":466},[460,85832,85833],{"class":1353},"'.age'",[460,85835,3754],{"class":466},[460,85837,85838,85840,85843,85845,85847,85849,85851,85854],{"class":462,"line":2564},[460,85839,1340],{"class":887},[460,85841,85842],{"class":900}," gender",[460,85844,2943],{"class":887},[460,85846,10599],{"class":466},[460,85848,3541],{"class":929},[460,85850,2174],{"class":466},[460,85852,85853],{"class":1353},"'.gender'",[460,85855,3754],{"class":466},[460,85857,85858,85860,85863,85865,85867,85869,85871,85874],{"class":462,"line":2569},[460,85859,1340],{"class":887},[460,85861,85862],{"class":900}," salary",[460,85864,2943],{"class":887},[460,85866,10599],{"class":466},[460,85868,3541],{"class":929},[460,85870,2174],{"class":466},[460,85872,85873],{"class":1353},"'.salary'",[460,85875,3754],{"class":466},[460,85877,85878,85880,85883,85885,85887,85889,85891,85894],{"class":462,"line":2579},[460,85879,1340],{"class":887},[460,85881,85882],{"class":900}," city",[460,85884,2943],{"class":887},[460,85886,10599],{"class":466},[460,85888,3541],{"class":929},[460,85890,2174],{"class":466},[460,85892,85893],{"class":1353},"'.city'",[460,85895,3754],{"class":466},[460,85897,85898,85900,85903,85905,85907,85909,85911,85914],{"class":462,"line":2597},[460,85899,1340],{"class":887},[460,85901,85902],{"class":900}," tbody",[460,85904,2943],{"class":887},[460,85906,10599],{"class":466},[460,85908,3541],{"class":929},[460,85910,2174],{"class":466},[460,85912,85913],{"class":1353},"'tbody'",[460,85915,3754],{"class":466},[460,85917,85918],{"class":462,"line":2610},[460,85919,522],{"emptyLinePlaceholder":521},[460,85921,85922],{"class":462,"line":2621},[460,85923,85924],{"class":942},"    \u002F\u002F 获取所有带有name属性的元素\n",[460,85926,85927,85929,85932,85934,85936,85938,85940,85943],{"class":462,"line":2634},[460,85928,1340],{"class":887},[460,85930,85931],{"class":900}," items",[460,85933,2943],{"class":887},[460,85935,10599],{"class":466},[460,85937,71892],{"class":929},[460,85939,2174],{"class":466},[460,85941,85942],{"class":1353},"'[name]'",[460,85944,3754],{"class":466},[460,85946,85947],{"class":462,"line":2648},[460,85948,85949],{"class":942},"    \u002F\u002F 声明一个空的数组\n",[460,85951,85952,85954,85956,85958],{"class":462,"line":2653},[460,85953,1340],{"class":887},[460,85955,13288],{"class":900},[460,85957,2943],{"class":887},[460,85959,11766],{"class":466},[460,85961,85962],{"class":462,"line":2658},[460,85963,85964],{"class":942},"    \u002F\u002F 1.录入模块\n",[460,85966,85967],{"class":462,"line":2670},[460,85968,85969],{"class":942},"    \u002F\u002F 1.1这是一个表单提交事件\n",[460,85971,85972,85974,85977,85979,85981,85983,85985,85988],{"class":462,"line":2683},[460,85973,1340],{"class":887},[460,85975,85976],{"class":900}," info",[460,85978,2943],{"class":887},[460,85980,10599],{"class":466},[460,85982,3541],{"class":929},[460,85984,2174],{"class":466},[460,85986,85987],{"class":1353},"'.info'",[460,85989,3754],{"class":466},[460,85991,85992,85995,85997,85999,86002,86004,86006,86008,86010],{"class":462,"line":2695},[460,85993,85994],{"class":466},"    info.",[460,85996,3599],{"class":929},[460,85998,2174],{"class":466},[460,86000,86001],{"class":1353},"'submit'",[460,86003,904],{"class":466},[460,86005,3976],{"class":887},[460,86007,11704],{"class":466},[460,86009,3609],{"class":3380},[460,86011,2180],{"class":466},[460,86013,86014],{"class":462,"line":2700},[460,86015,86016],{"class":942},"      \u002F\u002F 阻止默认行为，点击按钮之后不进行跳转\n",[460,86018,86019,86022,86025],{"class":462,"line":2709},[460,86020,86021],{"class":466},"      e.",[460,86023,86024],{"class":929},"preventDefault",[460,86026,10758],{"class":466},[460,86028,86029],{"class":462,"line":2718},[460,86030,16553],{"class":942},[460,86032,86033],{"class":462,"line":2723},[460,86034,522],{"emptyLinePlaceholder":521},[460,86036,86037],{"class":462,"line":2732},[460,86038,86039],{"class":942},"      \u002F\u002F 这里进行表单验证  如果不通过,直接添加中断,不需要添加数据\n",[460,86041,86042],{"class":462,"line":2750},[460,86043,86044],{"class":942},"      \u002F\u002F 先遍历循环\n",[460,86046,86047,86049,86051,86053,86055,86057,86059,86061,86063,86066,86068,86070,86072],{"class":462,"line":2782},[460,86048,11701],{"class":887},[460,86050,11704],{"class":466},[460,86052,11707],{"class":887},[460,86054,13991],{"class":466},[460,86056,894],{"class":887},[460,86058,2224],{"class":900},[460,86060,25930],{"class":466},[460,86062,781],{"class":887},[460,86064,86065],{"class":466}," items.",[460,86067,68231],{"class":900},[460,86069,19735],{"class":466},[460,86071,18828],{"class":887},[460,86073,2180],{"class":466},[460,86075,86076,86078,86081,86083,86085],{"class":462,"line":2809},[460,86077,3702],{"class":887},[460,86079,86080],{"class":466}," (items[i].value ",[460,86082,3660],{"class":887},[460,86084,10565],{"class":1353},[460,86086,2180],{"class":466},[460,86088,86089,86092,86095,86097,86100],{"class":462,"line":2836},[460,86090,86091],{"class":887},"          return",[460,86093,86094],{"class":929}," alert",[460,86096,2174],{"class":466},[460,86098,86099],{"class":1353},"'输入内容不能为空'",[460,86101,3754],{"class":466},[460,86103,86104],{"class":462,"line":2856},[460,86105,3858],{"class":466},[460,86107,86108],{"class":462,"line":2865},[460,86109,552],{"class":466},[460,86111,86112],{"class":462,"line":2881},[460,86113,522],{"emptyLinePlaceholder":521},[460,86115,86116],{"class":462,"line":2887},[460,86117,86118],{"class":942},"      \u002F\u002F 创建新的对象\n",[460,86120,86121,86123,86125,86127],{"class":462,"line":2893},[460,86122,3625],{"class":887},[460,86124,11601],{"class":900},[460,86126,2943],{"class":887},[460,86128,1348],{"class":466},[460,86130,86131,86134,86136,86138,86140],{"class":462,"line":2899},[460,86132,86133],{"class":466},"        stuID: arr.",[460,86135,68231],{"class":900},[460,86137,61870],{"class":887},[460,86139,1400],{"class":900},[460,86141,1363],{"class":466},[460,86143,86144],{"class":462,"line":2905},[460,86145,86146],{"class":466},"        uname: uname.value,\n",[460,86148,86149],{"class":462,"line":2911},[460,86150,86151],{"class":466},"        age: age.value,\n",[460,86153,86154],{"class":462,"line":2920},[460,86155,86156],{"class":466},"        gender: gender.value,\n",[460,86158,86159],{"class":462,"line":2929},[460,86160,86161],{"class":466},"        salary: salary.value,\n",[460,86163,86164],{"class":462,"line":2935},[460,86165,86166],{"class":466},"        city: city.value\n",[460,86168,86169],{"class":462,"line":2948},[460,86170,552],{"class":466},[460,86172,86173],{"class":462,"line":2954},[460,86174,86175],{"class":942},"      \u002F\u002F console.log(obj);\n",[460,86177,86178],{"class":462,"line":2965},[460,86179,86180],{"class":942},"      \u002F\u002F 追加到数组里面\n",[460,86182,86183,86185,86187],{"class":462,"line":2976},[460,86184,3415],{"class":466},[460,86186,68147],{"class":929},[460,86188,11908],{"class":466},[460,86190,86191],{"class":462,"line":2987},[460,86192,86193],{"class":942},"      \u002F\u002F console.log(arr);\n",[460,86195,86196],{"class":462,"line":2998},[460,86197,86198],{"class":942},"      \u002F\u002F 清空表单  reset重置表单\n",[460,86200,86201,86203,86205,86208],{"class":462,"line":3003},[460,86202,10591],{"class":900},[460,86204,6000],{"class":466},[460,86206,86207],{"class":929},"reset",[460,86209,10758],{"class":466},[460,86211,86212],{"class":462,"line":3008},[460,86213,86214],{"class":942},"      \u002F\u002F 调用渲染函数\n",[460,86216,86217,86220],{"class":462,"line":3018},[460,86218,86219],{"class":929},"      render",[460,86221,10758],{"class":466},[460,86223,86224],{"class":462,"line":3028},[460,86225,1679],{"class":466},[460,86227,86228],{"class":462,"line":3038},[460,86229,86230],{"class":942},"    \u002F\u002F 2.渲染函数(因为增加和删除都需要渲染)\n",[460,86232,86233,86235,86237],{"class":462,"line":3048},[460,86234,3372],{"class":887},[460,86236,3375],{"class":929},[460,86238,11374],{"class":466},[460,86240,86241],{"class":462,"line":3053},[460,86242,86243],{"class":942},"      \u002F\u002F 先清空tbody,把最新数组里面的数据渲染完毕\n",[460,86245,86246,86249,86251],{"class":462,"line":3058},[460,86247,86248],{"class":466},"      tbody.innerHTML ",[460,86250,894],{"class":887},[460,86252,3403],{"class":1353},[460,86254,86255],{"class":462,"line":3068},[460,86256,3409],{"class":942},[460,86258,86259,86261,86263,86265,86267,86269,86271,86273,86275,86277,86279,86281,86283],{"class":462,"line":3078},[460,86260,11701],{"class":887},[460,86262,11704],{"class":466},[460,86264,11707],{"class":887},[460,86266,13991],{"class":466},[460,86268,894],{"class":887},[460,86270,2224],{"class":900},[460,86272,25930],{"class":466},[460,86274,781],{"class":887},[460,86276,68228],{"class":466},[460,86278,68231],{"class":900},[460,86280,19735],{"class":466},[460,86282,18828],{"class":887},[460,86284,2180],{"class":466},[460,86286,86287,86289,86292,86294,86296,86298,86300,86303],{"class":462,"line":3088},[460,86288,3434],{"class":887},[460,86290,86291],{"class":900}," tr",[460,86293,2943],{"class":887},[460,86295,10599],{"class":466},[460,86297,10602],{"class":929},[460,86299,2174],{"class":466},[460,86301,86302],{"class":1353},"'tr'",[460,86304,3754],{"class":466},[460,86306,86307,86310,86312],{"class":462,"line":3098},[460,86308,86309],{"class":466},"        tr.innerHTML ",[460,86311,894],{"class":887},[460,86313,3470],{"class":1353},[460,86315,86316,86319,86321,86323,86325,86328,86331],{"class":462,"line":3103},[460,86317,86318],{"class":1353},"        \u003Ctd>${",[460,86320,3381],{"class":466},[460,86322,17601],{"class":1353},[460,86324,17174],{"class":466},[460,86326,86327],{"class":1353},"].",[460,86329,86330],{"class":466},"stuID",[460,86332,86333],{"class":1353},"}\u003C\u002Ftd>\n",[460,86335,86336,86339,86341,86343,86345,86347,86350],{"class":462,"line":3108},[460,86337,86338],{"class":1353},"          \u003Ctd>${",[460,86340,3381],{"class":466},[460,86342,17601],{"class":1353},[460,86344,17174],{"class":466},[460,86346,86327],{"class":1353},[460,86348,86349],{"class":466},"uname",[460,86351,86333],{"class":1353},[460,86353,86354,86356,86358,86360,86362,86364,86366],{"class":462,"line":3118},[460,86355,86338],{"class":1353},[460,86357,3381],{"class":466},[460,86359,17601],{"class":1353},[460,86361,17174],{"class":466},[460,86363,86327],{"class":1353},[460,86365,3989],{"class":466},[460,86367,86333],{"class":1353},[460,86369,86370,86372,86374,86376,86378,86380,86382],{"class":462,"line":3128},[460,86371,86338],{"class":1353},[460,86373,3381],{"class":466},[460,86375,17601],{"class":1353},[460,86377,17174],{"class":466},[460,86379,86327],{"class":1353},[460,86381,3994],{"class":466},[460,86383,86333],{"class":1353},[460,86385,86386,86388,86390,86392,86394,86396,86399],{"class":462,"line":3138},[460,86387,86338],{"class":1353},[460,86389,3381],{"class":466},[460,86391,17601],{"class":1353},[460,86393,17174],{"class":466},[460,86395,86327],{"class":1353},[460,86397,86398],{"class":466},"salary",[460,86400,86333],{"class":1353},[460,86402,86403,86405,86407,86409,86411,86413,86416],{"class":462,"line":3148},[460,86404,86338],{"class":1353},[460,86406,3381],{"class":466},[460,86408,17601],{"class":1353},[460,86410,17174],{"class":466},[460,86412,86327],{"class":1353},[460,86414,86415],{"class":466},"city",[460,86417,86333],{"class":1353},[460,86419,86420],{"class":462,"line":3153},[460,86421,85748],{"class":1353},[460,86423,86424,86427,86429],{"class":462,"line":3158},[460,86425,86426],{"class":1353},"            \u003Ca href=\"javascript:\" data-id=${",[460,86428,17174],{"class":466},[460,86430,86431],{"class":1353},"}>删除\u003C\u002Fa>\n",[460,86433,86434],{"class":462,"line":3168},[460,86435,86436],{"class":1353},"          \u003C\u002Ftd> \n",[460,86438,86439],{"class":462,"line":3178},[460,86440,86441],{"class":1353},"          `\n",[460,86443,86444],{"class":462,"line":3188},[460,86445,86446],{"class":942},"        \u002F\u002F 追加元素 父元素.appendChild(子元素)\n",[460,86448,86449,86452,86455],{"class":462,"line":3198},[460,86450,86451],{"class":466},"        tbody.",[460,86453,86454],{"class":929},"appendChild",[460,86456,86457],{"class":466},"(tr)\n",[460,86459,86460],{"class":462,"line":3203},[460,86461,552],{"class":466},[460,86463,86464],{"class":462,"line":3208},[460,86465,509],{"class":466},[460,86467,86468],{"class":462,"line":3218},[460,86469,522],{"emptyLinePlaceholder":521},[460,86471,86472],{"class":462,"line":3228},[460,86473,86474],{"class":942},"    \u002F\u002F 3.删除委托\n",[460,86476,86477],{"class":462,"line":3238},[460,86478,86479],{"class":942},"    \u002F\u002F 3.1 事件委托 tbody\n",[460,86481,86482,86485,86487,86489,86491,86493,86495,86497,86499],{"class":462,"line":3248},[460,86483,86484],{"class":466},"    tbody.",[460,86486,3599],{"class":929},[460,86488,2174],{"class":466},[460,86490,3604],{"class":1353},[460,86492,904],{"class":466},[460,86494,3976],{"class":887},[460,86496,11704],{"class":466},[460,86498,3609],{"class":3380},[460,86500,2180],{"class":466},[460,86502,86503,86505,86507,86509,86511],{"class":462,"line":3253},[460,86504,3654],{"class":887},[460,86506,3657],{"class":466},[460,86508,3660],{"class":887},[460,86510,3663],{"class":1353},[460,86512,2180],{"class":466},[460,86514,86515],{"class":462,"line":3258},[460,86516,86517],{"class":942},"        \u002F\u002F 得到当前元素的自定义属性 data-id\n",[460,86519,86520],{"class":462,"line":3268},[460,86521,86522],{"class":942},"        \u002F\u002F console.log(e.target.dataset.id);\n",[460,86524,86525],{"class":462,"line":3278},[460,86526,86527],{"class":942},"        \u002F\u002F 删除arr 数组里面对应的数据\n",[460,86529,86530,86533,86535,86538,86540],{"class":462,"line":3288},[460,86531,86532],{"class":466},"        arr.",[460,86534,74211],{"class":929},[460,86536,86537],{"class":466},"(e.target.dataset.id, ",[460,86539,901],{"class":900},[460,86541,3754],{"class":466},[460,86543,86544],{"class":462,"line":3298},[460,86545,86546],{"class":942},"        \u002F\u002F 重新渲染一次\n",[460,86548,86549,86551],{"class":462,"line":3303},[460,86550,3870],{"class":929},[460,86552,10758],{"class":466},[460,86554,86555],{"class":462,"line":3308},[460,86556,552],{"class":466},[460,86558,86559],{"class":462,"line":3318},[460,86560,1679],{"class":466},[460,86562,86563,86565,86567],{"class":462,"line":3328},[460,86564,581],{"class":466},[460,86566,225],{"class":470},[460,86568,473],{"class":466},[460,86570,86571],{"class":462,"line":3337},[460,86572,522],{"emptyLinePlaceholder":521},[460,86574,86575,86577,86579],{"class":462,"line":3347},[460,86576,1776],{"class":466},[460,86578,1721],{"class":470},[460,86580,473],{"class":466},[460,86582,86583],{"class":462,"line":3352},[460,86584,522],{"emptyLinePlaceholder":521},[460,86586,86587,86589,86591],{"class":462,"line":3358},[460,86588,1776],{"class":466},[460,86590,704],{"class":470},[460,86592,473],{"class":466},[14,86594,86595],{},"样式：",[451,86597,86601],{"className":86598,"code":86599,"language":86600,"meta":32,"style":32},"language-yaml shiki shiki-themes github-light github-dark","* {\n  margin: 0;\n  padding: 0;\n}\n\na {\n  text-decoration: none;\n  color:#721c24;\n}\nh1 {\n  text-align: center;\n  color:#333;\n  margin: 20px 0;\n \n}\ntable {\n  margin:0 auto;\n  width: 800px;\n  border-collapse: collapse;\n  color:#004085;\n}\nth {\n  padding: 10px;\n  background: #cfe5ff;\n  \n  font-size: 20px;\n  font-weight: 400;\n}\ntd,th {\n  border:1px solid #b8daff;\n}\ntd {\n  padding:10px;\n  color:#666;\n  text-align: center;\n  font-size: 16px;\n}\ntbody tr {\n  background: #fff;\n}\ntbody tr:hover {\n  background: #e1ecf8;\n}\n.info {\n  width: 900px;\n  margin: 50px auto;\n  text-align: center;\n}\n.info  input, .info select {\n  width: 80px;\n  height: 27px;\n  outline: none;\n  border-radius: 5px;\n  border:1px solid #b8daff;\n  padding-left: 5px;\n  box-sizing: border-box;\n  margin-right: 15px;\n}\n.info button {\n  width: 60px;\n  height: 27px;\n  background-color: #004085;\n  outline: none;\n  border: 0;\n  color: #fff;\n  cursor: pointer;\n  border-radius: 5px;\n}\n.info .age {\n  width: 50px;\n}\n","yaml",[457,86602,86603,86608,86618,86627,86631,86635,86640,86650,86655,86659,86664,86674,86679,86688,86692,86696,86701,86706,86716,86726,86731,86735,86740,86749,86759,86764,86774,86784,86788,86793,86801,86805,86810,86815,86820,86828,86837,86841,86846,86855,86859,86864,86873,86877,86882,86891,86900,86908,86912,86917,86926,86936,86945,86955,86961,86970,86980,86990,86994,86999,87008,87016,87026,87034,87043,87052,87062,87070,87074,87079,87088],{"__ignoreMap":32},[460,86604,86605],{"class":462,"line":463},[460,86606,86607],{"class":466},"* {\n",[460,86609,86610,86613,86615],{"class":462,"line":476},[460,86611,86612],{"class":470},"  margin",[460,86614,1961],{"class":466},[460,86616,86617],{"class":1353},"0;\n",[460,86619,86620,86623,86625],{"class":462,"line":482},[460,86621,86622],{"class":1353},"  padding",[460,86624,1961],{"class":466},[460,86626,86617],{"class":1353},[460,86628,86629],{"class":462,"line":488},[460,86630,821],{"class":466},[460,86632,86633],{"class":462,"line":494},[460,86634,522],{"emptyLinePlaceholder":521},[460,86636,86637],{"class":462,"line":500},[460,86638,86639],{"class":1353},"a {\n",[460,86641,86642,86645,86647],{"class":462,"line":506},[460,86643,86644],{"class":470},"  text-decoration",[460,86646,1961],{"class":466},[460,86648,86649],{"class":1353},"none;\n",[460,86651,86652],{"class":462,"line":512},[460,86653,86654],{"class":1353},"  color:#721c24;\n",[460,86656,86657],{"class":462,"line":518},[460,86658,821],{"class":466},[460,86660,86661],{"class":462,"line":525},[460,86662,86663],{"class":1353},"h1 {\n",[460,86665,86666,86669,86671],{"class":462,"line":531},[460,86667,86668],{"class":470},"  text-align",[460,86670,1961],{"class":466},[460,86672,86673],{"class":1353},"center;\n",[460,86675,86676],{"class":462,"line":537},[460,86677,86678],{"class":1353},"  color:#333;\n",[460,86680,86681,86683,86685],{"class":462,"line":543},[460,86682,86612],{"class":470},[460,86684,1961],{"class":466},[460,86686,86687],{"class":1353},"20px 0;\n",[460,86689,86690],{"class":462,"line":549},[460,86691,19198],{"class":466},[460,86693,86694],{"class":462,"line":555},[460,86695,821],{"class":466},[460,86697,86698],{"class":462,"line":560},[460,86699,86700],{"class":1353},"table {\n",[460,86702,86703],{"class":462,"line":566},[460,86704,86705],{"class":1353},"  margin:0 auto;\n",[460,86707,86708,86711,86713],{"class":462,"line":572},[460,86709,86710],{"class":470},"  width",[460,86712,1961],{"class":466},[460,86714,86715],{"class":1353},"800px;\n",[460,86717,86718,86721,86723],{"class":462,"line":578},[460,86719,86720],{"class":470},"  border-collapse",[460,86722,1961],{"class":466},[460,86724,86725],{"class":1353},"collapse;\n",[460,86727,86728],{"class":462,"line":812},[460,86729,86730],{"class":1353},"  color:#004085;\n",[460,86732,86733],{"class":462,"line":818},[460,86734,821],{"class":466},[460,86736,86737],{"class":462,"line":824},[460,86738,86739],{"class":1353},"th {\n",[460,86741,86742,86744,86746],{"class":462,"line":2074},[460,86743,86622],{"class":470},[460,86745,1961],{"class":466},[460,86747,86748],{"class":1353},"10px;\n",[460,86750,86751,86754,86756],{"class":462,"line":2088},[460,86752,86753],{"class":470},"  background",[460,86755,1961],{"class":466},[460,86757,86758],{"class":942},"#cfe5ff;\n",[460,86760,86761],{"class":462,"line":2103},[460,86762,86763],{"class":466},"  \n",[460,86765,86766,86769,86771],{"class":462,"line":2122},[460,86767,86768],{"class":470},"  font-size",[460,86770,1961],{"class":466},[460,86772,86773],{"class":1353},"20px;\n",[460,86775,86776,86779,86781],{"class":462,"line":2144},[460,86777,86778],{"class":470},"  font-weight",[460,86780,1961],{"class":466},[460,86782,86783],{"class":1353},"400;\n",[460,86785,86786],{"class":462,"line":2158},[460,86787,821],{"class":466},[460,86789,86790],{"class":462,"line":2163},[460,86791,86792],{"class":1353},"td,th {\n",[460,86794,86795,86798],{"class":462,"line":2168},[460,86796,86797],{"class":1353},"  border:1px solid",[460,86799,86800],{"class":942}," #b8daff;\n",[460,86802,86803],{"class":462,"line":2183},[460,86804,821],{"class":466},[460,86806,86807],{"class":462,"line":2194},[460,86808,86809],{"class":1353},"td {\n",[460,86811,86812],{"class":462,"line":2199},[460,86813,86814],{"class":1353},"  padding:10px;\n",[460,86816,86817],{"class":462,"line":2204},[460,86818,86819],{"class":1353},"  color:#666;\n",[460,86821,86822,86824,86826],{"class":462,"line":2212},[460,86823,86668],{"class":470},[460,86825,1961],{"class":466},[460,86827,86673],{"class":1353},[460,86829,86830,86832,86834],{"class":462,"line":2257},[460,86831,86768],{"class":470},[460,86833,1961],{"class":466},[460,86835,86836],{"class":1353},"16px;\n",[460,86838,86839],{"class":462,"line":2285},[460,86840,821],{"class":466},[460,86842,86843],{"class":462,"line":2298},[460,86844,86845],{"class":1353},"tbody tr {\n",[460,86847,86848,86850,86852],{"class":462,"line":2303},[460,86849,86753],{"class":470},[460,86851,1961],{"class":466},[460,86853,86854],{"class":942},"#fff;\n",[460,86856,86857],{"class":462,"line":2308},[460,86858,821],{"class":466},[460,86860,86861],{"class":462,"line":2318},[460,86862,86863],{"class":1353},"tbody tr:hover {\n",[460,86865,86866,86868,86870],{"class":462,"line":2333},[460,86867,86753],{"class":470},[460,86869,1961],{"class":466},[460,86871,86872],{"class":942},"#e1ecf8;\n",[460,86874,86875],{"class":462,"line":2338},[460,86876,821],{"class":466},[460,86878,86879],{"class":462,"line":2343},[460,86880,86881],{"class":1353},".info {\n",[460,86883,86884,86886,86888],{"class":462,"line":2353},[460,86885,86710],{"class":470},[460,86887,1961],{"class":466},[460,86889,86890],{"class":1353},"900px;\n",[460,86892,86893,86895,86897],{"class":462,"line":2368},[460,86894,86612],{"class":470},[460,86896,1961],{"class":466},[460,86898,86899],{"class":1353},"50px auto;\n",[460,86901,86902,86904,86906],{"class":462,"line":2381},[460,86903,86668],{"class":470},[460,86905,1961],{"class":466},[460,86907,86673],{"class":1353},[460,86909,86910],{"class":462,"line":2394},[460,86911,821],{"class":466},[460,86913,86914],{"class":462,"line":2399},[460,86915,86916],{"class":1353},".info  input, .info select {\n",[460,86918,86919,86921,86923],{"class":462,"line":2404},[460,86920,86710],{"class":470},[460,86922,1961],{"class":466},[460,86924,86925],{"class":1353},"80px;\n",[460,86927,86928,86931,86933],{"class":462,"line":2414},[460,86929,86930],{"class":470},"  height",[460,86932,1961],{"class":466},[460,86934,86935],{"class":1353},"27px;\n",[460,86937,86938,86941,86943],{"class":462,"line":2428},[460,86939,86940],{"class":470},"  outline",[460,86942,1961],{"class":466},[460,86944,86649],{"class":1353},[460,86946,86947,86950,86952],{"class":462,"line":2440},[460,86948,86949],{"class":470},"  border-radius",[460,86951,1961],{"class":466},[460,86953,86954],{"class":1353},"5px;\n",[460,86956,86957,86959],{"class":462,"line":2445},[460,86958,86797],{"class":1353},[460,86960,86800],{"class":942},[460,86962,86963,86966,86968],{"class":462,"line":2450},[460,86964,86965],{"class":470},"  padding-left",[460,86967,1961],{"class":466},[460,86969,86954],{"class":1353},[460,86971,86972,86975,86977],{"class":462,"line":2460},[460,86973,86974],{"class":470},"  box-sizing",[460,86976,1961],{"class":466},[460,86978,86979],{"class":1353},"border-box;\n",[460,86981,86982,86985,86987],{"class":462,"line":2473},[460,86983,86984],{"class":470},"  margin-right",[460,86986,1961],{"class":466},[460,86988,86989],{"class":1353},"15px;\n",[460,86991,86992],{"class":462,"line":2487},[460,86993,821],{"class":466},[460,86995,86996],{"class":462,"line":2492},[460,86997,86998],{"class":1353},".info button {\n",[460,87000,87001,87003,87005],{"class":462,"line":2497},[460,87002,86710],{"class":470},[460,87004,1961],{"class":466},[460,87006,87007],{"class":1353},"60px;\n",[460,87009,87010,87012,87014],{"class":462,"line":2505},[460,87011,86930],{"class":470},[460,87013,1961],{"class":466},[460,87015,86935],{"class":1353},[460,87017,87018,87021,87023],{"class":462,"line":2516},[460,87019,87020],{"class":470},"  background-color",[460,87022,1961],{"class":466},[460,87024,87025],{"class":942},"#004085;\n",[460,87027,87028,87030,87032],{"class":462,"line":2529},[460,87029,86940],{"class":470},[460,87031,1961],{"class":466},[460,87033,86649],{"class":1353},[460,87035,87036,87039,87041],{"class":462,"line":2542},[460,87037,87038],{"class":470},"  border",[460,87040,1961],{"class":466},[460,87042,86617],{"class":1353},[460,87044,87045,87048,87050],{"class":462,"line":2559},[460,87046,87047],{"class":470},"  color",[460,87049,1961],{"class":466},[460,87051,86854],{"class":942},[460,87053,87054,87057,87059],{"class":462,"line":2564},[460,87055,87056],{"class":470},"  cursor",[460,87058,1961],{"class":466},[460,87060,87061],{"class":1353},"pointer;\n",[460,87063,87064,87066,87068],{"class":462,"line":2569},[460,87065,86949],{"class":470},[460,87067,1961],{"class":466},[460,87069,86954],{"class":1353},[460,87071,87072],{"class":462,"line":2579},[460,87073,821],{"class":466},[460,87075,87076],{"class":462,"line":2597},[460,87077,87078],{"class":1353},".info .age {\n",[460,87080,87081,87083,87085],{"class":462,"line":2610},[460,87082,86710],{"class":470},[460,87084,1961],{"class":466},[460,87086,87087],{"class":1353},"50px;\n",[460,87089,87090],{"class":462,"line":2621},[460,87091,821],{"class":466},[14,87093,15057],{},[14,87095,87096],{},[30,87097],{"alt":32,"src":87098},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-167.png",[14,87100,87101],{},[30,87102],{"alt":32,"src":87103},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-168.png",[14,87105,87106],{},[30,87107],{"alt":32,"src":87108},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-169.png",[23,87110,87112],{"id":87111},"_3315-重绘回流","3.3.15 重绘回流",[14,87114,87115],{},[30,87116],{"alt":32,"src":87117},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-170.png",[14,87119,87120],{},[30,87121],{"alt":32,"src":87122},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-171.png",[14,87124,87125],{},[30,87126],{"alt":32,"src":87127},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-172.png",[18,87129,87131],{"id":87130},"_34-bom","3.4 BOM",[14,87133,87134],{},[30,87135],{"alt":32,"src":87136},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-173.png",[14,87138,87139],{},"平时写的document省略了window而已，实际上是window.document",[14,87141,87142],{},"函数也是这样，调用的时候实际为window.fn()",[14,87144,87145],{},"var声明标量也是这样的，const和let是挂载在自己的作用域内，所以如果写：const num=10 console.log(window.num)会输出undefined",[14,87147,87148],{},"window大部分情况下可以省略",[23,87150,87152],{"id":87151},"_341-定时器-延时函数","3.4.1 定时器-延时函数",[14,87154,87155],{},"只执行一次",[14,87157,87158],{},[30,87159],{"alt":32,"src":87160},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-174.png",[14,87162,87163],{},"某些特殊情况下，如递归函数中，我需要自己调用自己，此时就需要清除一下延时函数了",[14,87165,87166],{},[30,87167],{"alt":32,"src":87168},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-175.png",[23,87170,87172],{"id":87171},"_342-js执行机制","3.4.2 JS执行机制",[14,87174,87175],{},[30,87176],{"alt":32,"src":87177},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-176.png",[14,87179,87180],{},"两个的结果都是1111 3333 2222",[14,87182,87183],{},[30,87184],{"alt":32,"src":87185},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-177.png",[14,87187,87188],{},[30,87189],{"alt":32,"src":87190},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-178.png",[14,87192,87193],{},[30,87194],{"alt":32,"src":87195},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-179.png",[14,87197,87198],{},"总结：同步任务是立马可以执行的，异步是需要事件的",[14,87200,87201],{},"工作流程：",[14,87203,87204],{},[30,87205],{"alt":32,"src":87206},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-180.png",[14,87208,87209],{},[30,87210],{"alt":32,"src":87211},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-181.png",[14,87213,87214],{},"js只能进行单线程的操作，右边部分是浏览器操作，在浏览的作用下可以实现多线程任务",[14,87216,87217],{},"由于主线程不断的重复获得任务、执行任务、再获取任务、再执行，所以这种机制被称为事件循环（ event loop）",[23,87219,87221],{"id":87220},"_343-location对象","3.4.3 location对象",[14,87223,87224],{},"location对象属于window这个全局对象下的，可以 省略window",[14,87226,87227],{},[30,87228],{"alt":32,"src":87229},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-182.png",[14,87231,87232],{},"href可以跳转页面",[103,87234,87235],{},[43,87236,87237],{},"search:在表单中提交信息之后,上边的网址后面会包含自己的信息",[14,87239,87240],{},"search得到提交信息之后网站后边的地址",[14,87242,87243],{},[30,87244],{"alt":32,"src":87245},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-183.png",[14,87247,87248],{},[30,87249],{"alt":32,"src":87250},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-184.png",[103,87252,87253],{"start":476},[43,87254,87255],{},"hash:这个获取单页面应用#后边的地址",[14,87257,87258],{},"如下,点击我的音乐等按钮,浏览器不会刷新,只是刷新下边的内容,此时网站后边的地址为#",[14,87260,87261],{},[30,87262],{"alt":32,"src":87263},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-185.png",[451,87265,87267],{"className":453,"code":87266,"language":455,"meta":32,"style":32},"  \u003Ca href=\"#\u002Fmy\">我的\u003C\u002Fa>\n  \u003Ca href=\"#\u002Ffriend\">关注\u003C\u002Fa>\n  \u003Ca href=\"#\u002Fdownload\">下载\u003C\u002Fa>\n",[457,87268,87269,87289,87309],{"__ignoreMap":32},[460,87270,87271,87273,87275,87277,87279,87282,87285,87287],{"class":462,"line":463},[460,87272,467],{"class":466},[460,87274,2756],{"class":470},[460,87276,2759],{"class":929},[460,87278,894],{"class":466},[460,87280,87281],{"class":1353},"\"#\u002Fmy\"",[460,87283,87284],{"class":466},">我的\u003C\u002F",[460,87286,2756],{"class":470},[460,87288,473],{"class":466},[460,87290,87291,87293,87295,87297,87299,87302,87305,87307],{"class":462,"line":476},[460,87292,467],{"class":466},[460,87294,2756],{"class":470},[460,87296,2759],{"class":929},[460,87298,894],{"class":466},[460,87300,87301],{"class":1353},"\"#\u002Ffriend\"",[460,87303,87304],{"class":466},">关注\u003C\u002F",[460,87306,2756],{"class":470},[460,87308,473],{"class":466},[460,87310,87311,87313,87315,87317,87319,87322,87325,87327],{"class":462,"line":482},[460,87312,467],{"class":466},[460,87314,2756],{"class":470},[460,87316,2759],{"class":929},[460,87318,894],{"class":466},[460,87320,87321],{"class":1353},"\"#\u002Fdownload\"",[460,87323,87324],{"class":466},">下载\u003C\u002F",[460,87326,2756],{"class":470},[460,87328,473],{"class":466},[14,87330,87331],{},"就是当时候提前写好每部分,一点就会换过来写好的这部分,浏览器不会刷新,在vue中会详细说明",[103,87333,87334],{"start":482},[43,87335,87336,87337,87339,87340,87342],{},"reload 类似于浏览器中点击F5,进行刷新操作,它是个方法!!! 用的时候要加()",[69963,87338],{},"  强制刷新是从在线重新获取数据(ctrl+f5) location.reload(true)",[69963,87341],{},"  刷新是从本地获取数据 (f5) location.reload(false)",[23,87344,87346],{"id":87345},"_345-navigator对象","3.4.5 navigator对象",[14,87348,87349],{},[30,87350],{"alt":32,"src":87351},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-186.png",[451,87353,87355],{"className":9336,"code":87354,"language":9338,"meta":32,"style":32},"\u002F\u002F 检测 userAgent（浏览器信息） \n!(function () { \nconst userAgent = navigator.userAgent \n\u002F\u002F 验证是否为Android或iPhone \nconst android = userAgent.match(\u002F(Android);?[\\s\\\u002F]+([\\d.]+)?\u002F) \nconst iphone = userAgent.match(\u002F(iPhone\\sOS)\\s([\\d_]+)\u002F) \n\u002F\u002F 如果是Android或iPhone，则跳转至移动站点 \nif (android || iphone) { \nlocation.href = 'http:\u002F\u002Fm.itcast.cn' \n} \n})()\n",[457,87356,87357,87362,87373,87385,87390,87441,87482,87487,87499,87511,87516],{"__ignoreMap":32},[460,87358,87359],{"class":462,"line":463},[460,87360,87361],{"class":942},"\u002F\u002F 检测 userAgent（浏览器信息） \n",[460,87363,87364,87366,87368,87370],{"class":462,"line":476},[460,87365,15458],{"class":887},[460,87367,2174],{"class":466},[460,87369,3976],{"class":887},[460,87371,87372],{"class":466}," () { \n",[460,87374,87375,87377,87380,87382],{"class":462,"line":482},[460,87376,888],{"class":887},[460,87378,87379],{"class":900}," userAgent",[460,87381,2943],{"class":887},[460,87383,87384],{"class":466}," navigator.userAgent \n",[460,87386,87387],{"class":462,"line":488},[460,87388,87389],{"class":942},"\u002F\u002F 验证是否为Android或iPhone \n",[460,87391,87392,87394,87397,87399,87402,87405,87407,87409,87412,87414,87417,87421,87423,87425,87427,87430,87432,87434,87436,87438],{"class":462,"line":494},[460,87393,888],{"class":887},[460,87395,87396],{"class":900}," android",[460,87398,2943],{"class":887},[460,87400,87401],{"class":466}," userAgent.",[460,87403,87404],{"class":929},"match",[460,87406,2174],{"class":466},[460,87408,8331],{"class":1353},[460,87410,87411],{"class":64280},"(Android);",[460,87413,8258],{"class":887},[460,87415,87416],{"class":900},"[\\s",[460,87418,87420],{"class":87419},"snhLl","\\\u002F",[460,87422,17649],{"class":900},[460,87424,8495],{"class":887},[460,87426,2174],{"class":64280},[460,87428,87429],{"class":900},"[\\d.]",[460,87431,8495],{"class":887},[460,87433,8411],{"class":64280},[460,87435,8258],{"class":887},[460,87437,8331],{"class":1353},[460,87439,87440],{"class":466},") \n",[460,87442,87443,87445,87448,87450,87452,87454,87456,87458,87461,87464,87467,87469,87471,87474,87476,87478,87480],{"class":462,"line":500},[460,87444,888],{"class":887},[460,87446,87447],{"class":900}," iphone",[460,87449,2943],{"class":887},[460,87451,87401],{"class":466},[460,87453,87404],{"class":929},[460,87455,2174],{"class":466},[460,87457,8331],{"class":1353},[460,87459,87460],{"class":64280},"(iPhone",[460,87462,87463],{"class":900},"\\s",[460,87465,87466],{"class":64280},"OS)",[460,87468,87463],{"class":900},[460,87470,2174],{"class":64280},[460,87472,87473],{"class":900},"[\\d_]",[460,87475,8495],{"class":887},[460,87477,8411],{"class":64280},[460,87479,8331],{"class":1353},[460,87481,87440],{"class":466},[460,87483,87484],{"class":462,"line":506},[460,87485,87486],{"class":942},"\u002F\u002F 如果是Android或iPhone，则跳转至移动站点 \n",[460,87488,87489,87491,87494,87496],{"class":462,"line":512},[460,87490,18100],{"class":887},[460,87492,87493],{"class":466}," (android ",[460,87495,16580],{"class":887},[460,87497,87498],{"class":466}," iphone) { \n",[460,87500,87501,87504,87506,87509],{"class":462,"line":518},[460,87502,87503],{"class":466},"location.href ",[460,87505,894],{"class":887},[460,87507,87508],{"class":1353}," 'http:\u002F\u002Fm.itcast.cn'",[460,87510,19198],{"class":466},[460,87512,87513],{"class":462,"line":525},[460,87514,87515],{"class":466},"} \n",[460,87517,87518],{"class":462,"line":531},[460,87519,87520],{"class":466},"})()\n",[23,87522,87524],{"id":87523},"_346-histroy对象","3.4.6 histroy对象",[14,87526,87527],{},[30,87528],{"alt":32,"src":87529},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-187.png",[14,87531,87532],{},"浏览器地址的前进与后退!!!",[14,87534,87535],{},"history.back() 等效于 history.go(-1)",[14,87537,87538],{},"history.forward() 等效于 history.go(1)",[18,87540,87542],{"id":87541},"_35-本地存储","3.5 本地存储",[103,87544,87545,87548,87551],{},[43,87546,87547],{},"数据存储在用户浏览器中",[43,87549,87550],{},"设置、读取方便、甚至页面刷新不丢失数据",[43,87552,87553],{},"容量较大，sessionStorage和localStorage约 5M 左右",[23,87555,87557],{"id":87556},"_351-本地存储分类-localstorage","3.5.1 本地存储分类- localStorage",[14,87559,87560],{},"只能存储字符串",[14,87562,87563],{},[30,87564],{"alt":32,"src":87565},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-188.png",[14,87567,87568],{},[30,87569],{"alt":32,"src":87570},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-189.png",[14,87572,87573],{},"键值对要加引号,不然就会当变量来看了",[14,87575,87576],{},"localStorage.setItem('uname', 'pink')",[14,87578,87579],{},"刷新之后信息不再丢失",[14,87581,87582],{},"操作key,value会跟着变",[14,87584,87585],{},"删除只删除键就可以,即名字",[14,87587,87576],{},[14,87589,87590],{},"改:",[14,87592,87593],{},"localStorage.setItem('uname','red')",[14,87595,87596],{},"有这个键就是改,没有这个键就是改",[14,87598,87599],{},[30,87600],{"alt":32,"src":87601},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-190.png",[14,87603,87604],{},"这个是全部删除,但是如果代码没有改动的话,一刷新,这些数据又都会存储在这里边,在测试中使用:",[14,87606,87607],{},[30,87608],{"alt":32,"src":87609},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-191.png",[14,87611,87612],{},"本地存储只能存储字符串,在存储数据时,文字必须使用引号,不然字母会被看成变量,数字可以不加引号,但是本地存储之后都会变成字符串",[23,87614,87616],{"id":87615},"_352-本地存储分类-sessionstorage","3.5.2 本地存储分类- sessionStorage",[14,87618,87619],{},"相比于localStorage来说,关闭浏览器就会消失,但是localStorage关闭浏览器是不会消失的",[14,87621,87622],{},"特性:",[103,87624,87625,87628,87631,87634],{},[43,87626,87627],{},"生命周期为关闭浏览器窗口",[43,87629,87630],{},"在同一个窗口(页面)下数据可以共享",[43,87632,87633],{},"以键值对的形式存储使用",[43,87635,87636],{},"用法跟localStorage 基本相同",[23,87638,87640],{"id":87639},"_353-存储复杂数据类型","3.5.3 存储复杂数据类型",[14,87642,87643],{},"本地只能存储字符串,无法直接存储复杂数据类型",[451,87645,87647],{"className":453,"code":87646,"language":455,"meta":32,"style":32},"\u003Cscript>\n    const obj = {\n      uname: 'pink老师',\n      age: 18,\n      gender: '女'\n    }\n    \u002F\u002F 存储复杂数据类型\n    localStorage.setItem('obj', obj)\n  \u003C\u002Fscript>\n",[457,87648,87649,87657,87661,87666,87671,87676,87680,87685,87690],{"__ignoreMap":32},[460,87650,87651,87653,87655],{"class":462,"line":463},[460,87652,781],{"class":466},[460,87654,225],{"class":470},[460,87656,473],{"class":466},[460,87658,87659],{"class":462,"line":476},[460,87660,528],{"class":466},[460,87662,87663],{"class":462,"line":482},[460,87664,87665],{"class":466},"      uname: 'pink老师',\n",[460,87667,87668],{"class":462,"line":488},[460,87669,87670],{"class":466},"      age: 18,\n",[460,87672,87673],{"class":462,"line":494},[460,87674,87675],{"class":466},"      gender: '女'\n",[460,87677,87678],{"class":462,"line":500},[460,87679,509],{"class":466},[460,87681,87682],{"class":462,"line":506},[460,87683,87684],{"class":466},"    \u002F\u002F 存储复杂数据类型\n",[460,87686,87687],{"class":462,"line":512},[460,87688,87689],{"class":466},"    localStorage.setItem('obj', obj)\n",[460,87691,87692,87694,87696],{"class":462,"line":518},[460,87693,581],{"class":466},[460,87695,225],{"class":470},[460,87697,473],{"class":466},[14,87699,87700],{},[30,87701],{"alt":32,"src":87702},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-192.png",[14,87704,87705],{},"如果获取一下数据:",[14,87707,87708],{},"log(localStorage.getItem('obj'))",[14,87710,87711],{},[30,87712],{"alt":32,"src":87713},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-193.png",[14,87715,87716],{},"发现直接存对象是使用不了的!!!",[115,87718,87720],{"id":87719},"_3531-复杂对象转化为jso字符串","3.5.3.1 复杂对象转化为JSO字符串",[14,87722,87723],{},[30,87724],{"alt":32,"src":87725},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-194.png",[451,87727,87729],{"className":702,"code":87728,"language":704,"meta":32,"style":32},"\u003Cscript>\n    const obj = {\n      uname: 'pink老师',\n      age: 18,\n      gender: '女'\n    }\n    \u002F\u002F 存储复杂数据类型\n  localStorage.setItem('obj', JSON.stringify(obj))\n  console.log(localStorage.getItem('obj'))\n  \u003C\u002Fscript>\n  \n  输出:{\"uname\":\"pink老师\",\"age\":18,\"gender\":\"女\"}\n  类型是字符串的\n  JSON对象 属性和值有引号,而且引号统一是双引号\n",[457,87730,87731,87739,87749,87758,87766,87774,87778,87782,87804,87822,87830,87834,87839,87844],{"__ignoreMap":32},[460,87732,87733,87735,87737],{"class":462,"line":463},[460,87734,781],{"class":466},[460,87736,225],{"class":470},[460,87738,473],{"class":466},[460,87740,87741,87743,87745,87747],{"class":462,"line":476},[460,87742,1340],{"class":887},[460,87744,11601],{"class":900},[460,87746,2943],{"class":887},[460,87748,1348],{"class":466},[460,87750,87751,87753,87756],{"class":462,"line":482},[460,87752,11610],{"class":466},[460,87754,87755],{"class":1353},"'pink老师'",[460,87757,1363],{"class":466},[460,87759,87760,87762,87764],{"class":462,"line":488},[460,87761,11620],{"class":466},[460,87763,2361],{"class":900},[460,87765,1363],{"class":466},[460,87767,87768,87771],{"class":462,"line":494},[460,87769,87770],{"class":466},"      gender: ",[460,87772,87773],{"class":1353},"'女'\n",[460,87775,87776],{"class":462,"line":500},[460,87777,509],{"class":466},[460,87779,87780],{"class":462,"line":506},[460,87781,87684],{"class":942},[460,87783,87784,87787,87789,87791,87794,87796,87798,87800,87802],{"class":462,"line":512},[460,87785,87786],{"class":466},"  localStorage.",[460,87788,16509],{"class":929},[460,87790,2174],{"class":466},[460,87792,87793],{"class":1353},"'obj'",[460,87795,904],{"class":466},[460,87797,12441],{"class":900},[460,87799,6000],{"class":466},[460,87801,12446],{"class":929},[460,87803,12449],{"class":466},[460,87805,87806,87809,87811,87814,87816,87818,87820],{"class":462,"line":518},[460,87807,87808],{"class":466},"  console.",[460,87810,930],{"class":929},[460,87812,87813],{"class":466},"(localStorage.",[460,87815,16571],{"class":929},[460,87817,2174],{"class":466},[460,87819,87793],{"class":1353},[460,87821,6311],{"class":466},[460,87823,87824,87826,87828],{"class":462,"line":525},[460,87825,581],{"class":466},[460,87827,225],{"class":470},[460,87829,473],{"class":466},[460,87831,87832],{"class":462,"line":531},[460,87833,86763],{"class":466},[460,87835,87836],{"class":462,"line":537},[460,87837,87838],{"class":466},"  输出:{\"uname\":\"pink老师\",\"age\":18,\"gender\":\"女\"}\n",[460,87840,87841],{"class":462,"line":543},[460,87842,87843],{"class":466},"  类型是字符串的\n",[460,87845,87846],{"class":462,"line":549},[460,87847,87848],{"class":466},"  JSON对象 属性和值有引号,而且引号统一是双引号\n",[115,87850,87852],{"id":87851},"_3532-json字符串转化为对象","3.5.3.2 JSON字符串转化为对象",[14,87854,87855],{},[30,87856],{"alt":32,"src":87857},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-195.png",[14,87859,87860],{},[30,87861],{"alt":32,"src":87862},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-196.png",[451,87864,87866],{"className":453,"code":87865,"language":455,"meta":32,"style":32},"  \u003Cscript>\n    const obj = {\n      uname: 'pink老师',\n      age: 18,\n      gender: '女'\n    }\n    \u002F\u002F 1.存储复杂数据类型\n    \u002F\u002F localStorage.setItem('obj', obj)\n    \u002F\u002F console.log(localStorage.getItem('obj'))\n    \u002F\u002F 2.复杂数据类型存储必须转换为JSON字符串存储\n    localStorage.setItem('obj', JSON.stringify(obj))\n    \u002F\u002F 取\n    \u002F\u002F console.log(typeof localStorage.getItem('obj'))\n    console.log(JSON.parse(localStorage.getItem('obj')))\n  \u003C\u002Fscript>\n",[457,87867,87868,87876,87880,87884,87888,87892,87896,87901,87906,87911,87916,87921,87926,87931,87936],{"__ignoreMap":32},[460,87869,87870,87872,87874],{"class":462,"line":463},[460,87871,467],{"class":466},[460,87873,225],{"class":470},[460,87875,473],{"class":466},[460,87877,87878],{"class":462,"line":476},[460,87879,528],{"class":466},[460,87881,87882],{"class":462,"line":482},[460,87883,87665],{"class":466},[460,87885,87886],{"class":462,"line":488},[460,87887,87670],{"class":466},[460,87889,87890],{"class":462,"line":494},[460,87891,87675],{"class":466},[460,87893,87894],{"class":462,"line":500},[460,87895,509],{"class":466},[460,87897,87898],{"class":462,"line":506},[460,87899,87900],{"class":466},"    \u002F\u002F 1.存储复杂数据类型\n",[460,87902,87903],{"class":462,"line":512},[460,87904,87905],{"class":466},"    \u002F\u002F localStorage.setItem('obj', obj)\n",[460,87907,87908],{"class":462,"line":518},[460,87909,87910],{"class":466},"    \u002F\u002F console.log(localStorage.getItem('obj'))\n",[460,87912,87913],{"class":462,"line":525},[460,87914,87915],{"class":466},"    \u002F\u002F 2.复杂数据类型存储必须转换为JSON字符串存储\n",[460,87917,87918],{"class":462,"line":531},[460,87919,87920],{"class":466},"    localStorage.setItem('obj', JSON.stringify(obj))\n",[460,87922,87923],{"class":462,"line":537},[460,87924,87925],{"class":466},"    \u002F\u002F 取\n",[460,87927,87928],{"class":462,"line":543},[460,87929,87930],{"class":466},"    \u002F\u002F console.log(typeof localStorage.getItem('obj'))\n",[460,87932,87933],{"class":462,"line":549},[460,87934,87935],{"class":466},"    console.log(JSON.parse(localStorage.getItem('obj')))\n",[460,87937,87938,87940,87942],{"class":462,"line":555},[460,87939,581],{"class":466},[460,87941,225],{"class":470},[460,87943,473],{"class":466},[14,87945,87946],{},[30,87947],{"alt":32,"src":87948},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-197.png",[23,87950,87952],{"id":87951},"_356-数组map方法","3.5.6 数组map方法",[14,87954,87955],{},"map多和join一起使用，使用map，将原数组的内容给小盒子，然后遍历完得到好多小盒子（就是小盒子填上了内容），这些小盒子就作为元素添加到了新的数组中，新的数组使用join的方法，比如新数组叫newArr，然后新数组newArr.join(''),元素之间不再有分隔符，转为了一个字符串塞给了大盒子，就可以实现对大盒子的填充",[14,87957,87958],{},[30,87959],{"alt":32,"src":87960},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-198.png",[14,87962,87963],{},[30,87964],{"alt":32,"src":87965},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-199.png",[14,87967,87968,87971],{},[3944,87969,87970],{},"map 也称为映射。"," 映射是个术语，指两个元素的集之间元素相互“对应”的关系",[14,87973,87974],{},"map有返回值，但是forEach没有返回值",[14,87976,87977],{},"map是个方法。用的时候要加 ()",[14,87979,87980],{},"map返回的是一个数组",[23,87982,87984],{"id":87983},"_357-数组中join方法","3.5.7 数组中join方法",[14,87986,87987],{},[30,87988],{"alt":32,"src":87989},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-200.png",[14,87991,87992],{},"类似于python中拼接字符串一样！",[103,87994,87995,87998,88001],{},[43,87996,87997],{},"小括号为空则逗号分开",[43,87999,88000],{},"小括号为空字符串 ''，则元素之间没有分隔符",[43,88002,88003],{},"小括号用啥符号就用进行分割",[23,88005,88007],{"id":88006},"_358-学生就业统计表本地存储","3.5.8 学生就业统计表本地存储",[103,88009,88010,88013,88016,88019,88022],{},[43,88011,88012],{},"记住本地时间获取快速方式：new Date().toDateString()",[43,88014,88015],{},"尽量减少DOM操作，用好map+join的渲染方式",[43,88017,88018],{},"输入内容为空不执行，可以使用！,获取输入的内容，!输入的内容 如果输入了字，那这个字符串的非为假，放到if语句中就不执行，如果没有输入字，那么输入的字符串的非为真，就去执行if语句",[43,88020,88021],{},"return可以实现函数的结束",[43,88023,88024],{},"禁止跳转是 preventDefault() 不要忘记",[451,88026,88028],{"className":702,"code":88027,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n  \u003Cstyle>\n    * {\n      padding: 0;\n      margin: 0;\n    }\n\n    h2 {\n      text-align: center;\n      margin-top: 20px;\n    }\n\n    .info {\n      width: 700px;\n      margin: 10px auto;\n      text-align: center;\n    }\n\n    .uname,\n    .age,\n    .salary {\n      width: 100px;\n      height: 20px;\n      outline: none;\n      margin-right: 15px;\n    }\n\n    .gender,\n    .city {\n      width: 100px;\n      height: 25px;\n      outline: none;\n      margin-right: 15px;\n      border: 1px solid rgb(200, 197, 197);\n    }\n\n    button {\n      height: 25px;\n      width: 75px;\n      background-color: rgb(126, 187, 36);\n      color: #fff;\n      border: 0;\n    }\n\n    button span {\n      display: inline-block;\n      width: 10px;\n      height: 10px;\n      line-height: 11px;\n      border: 1px solid #fff;\n      border-radius: 5px;\n      margin-right: 1px;\n    }\n\n    .total {\n      width: 800px;\n      height: 40px;\n      line-height: 40px;\n      text-align: right;\n      margin: 40px auto 10px;\n      padding-right: 10px;\n      font-size: 13px;\n      background-color: rgb(237, 235, 235);\n      box-sizing: border-box;\n    }\n\n    .total span {\n      color: red;\n    }\n\n    table {\n      width: 800px;\n      margin: auto;\n      border-collapse: collapse;\n    }\n\n    th {\n      background-color: rgb(237, 235, 235);\n    }\n\n    th,\n    td {\n      height: 35px;\n      text-align: left;\n      font-size: 14px;\n      border: 1px solid rgb(228, 225, 225);\n      padding-left: 5px;\n      transition: all linear 0.5s;\n    }\n\n    tbody tr:hover {\n      background-color: rgb(237, 235, 235);\n      cursor: pointer;\n    }\n\n    tbody tr td a {\n      display: block;\n      width: 60px;\n      height: 25px;\n      line-height: 25px;\n      margin-top: 2px;\n      color: #fff;\n      text-align: center;\n      text-decoration: none;\n      background-color: orange;\n      border-radius: 12.5px;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Ch2>学生就业统计表\u003C\u002Fh2>\n  \u003Cform class=\"info\" autocomplete=\"off\">\n    \u003Cinput type=\"text\" name=\"uname\" placeholder=\"姓名\" class=\"uname\">\n    \u003Cinput type=\"text\" name=\"age\" placeholder=\"年龄\" class=\"age\">\n    \u003Cinput type=\"text\" name=\"salary\" placeholder=\"薪资\" class=\"salary\">\n    \u003Cselect name=\"gender\" id=\"\" class=\"gender\">\n      \u003Coption value=\"男\">男\u003C\u002Foption>\n      \u003Coption value=\"女\">女\u003C\u002Foption>\n    \u003C\u002Fselect>\n    \u003Cselect name=\"city\" id=\"\" class=\"city\">\n      \u003Coption value=\"北京\">北京\u003C\u002Foption>\n      \u003Coption value=\"上海\">上海\u003C\u002Foption>\n      \u003Coption value=\"广州\">广州\u003C\u002Foption>\n      \u003Coption value=\"深圳\">深圳\u003C\u002Foption>\n      \u003Coption value=\"曹县\">曹县\u003C\u002Foption>\n    \u003C\u002Fselect>\n    \u003Cbutton>\n      \u003Cspan>+\u003C\u002Fspan>添加\u003C\u002Fbutton>\n  \u003C\u002Fform>\n  \u003Cdiv class=\"total\">共有数据 \u003Cspan>0\u003C\u002Fspan> 条\u003C\u002Fdiv>\n  \u003Ctable>\n    \u003Cthead>\n      \u003Ctr>\n        \u003Cth>ID\u003C\u002Fth>\n        \u003Cth>姓名\u003C\u002Fth>\n        \u003Cth>年龄\u003C\u002Fth>\n        \u003Cth>性别\u003C\u002Fth>\n        \u003Cth>薪资\u003C\u002Fth>\n        \u003Cth>就业城市\u003C\u002Fth>\n        \u003Cth>录入时间\u003C\u002Fth>\n        \u003Cth>操作\u003C\u002Fth>\n      \u003C\u002Ftr>\n    \u003C\u002Fthead>\n    \u003Ctbody>\n      \u003C!-- \u003Ctr>\n        \u003Ctd>1\u003C\u002Ftd>\n        \u003Ctd>1\u003C\u002Ftd>\n        \u003Ctd>1\u003C\u002Ftd>\n        \u003Ctd>1\u003C\u002Ftd>\n        \u003Ctd>1\u003C\u002Ftd>\n        \u003Ctd>1\u003C\u002Ftd>\n        \u003Ctd>1\u003C\u002Ftd>\n        \u003Ctd>\n          \u003Ca href=\"#\" data-id=\"\">\u003C\u002Fa>\n        \u003C\u002Ftd>\n      \u003C\u002Ftr> -->\n    \u003C\u002Ftbody>\n  \u003C\u002Ftable>\n  \u003Cscript>\n    \u002F\u002F const initData = [{\n    \u002F\u002F   unameId: 1,\n    \u002F\u002F   uname: '华晨宇',\n    \u002F\u002F   age: 22,\n    \u002F\u002F   salary: 12000,\n    \u002F\u002F   gender: '男',\n    \u002F\u002F   city: '北京',\n    \u002F\u002F   time: '2099\u002F9\u002F9 08:08:08'\n    \u002F\u002F }]\n    \u002F\u002F localStorage.setItem('data', JSON.stringify(initData))\n    \u002F\u002F 1.渲染业务\n    \u002F\u002F 1.1 先读取本地存储的数据\n    \u002F\u002F (1) 本地存储有数据记得转换为对象然后存储到变量里面，后期用于渲染页面\n    \u002F\u002F (2) 如果没有数据，则用空数组来代替\n\n    \u002F\u002F 下面这句话意思是去本地存储读取最新的数据\n    \u002F\u002F const arr = JSON.parse(localStorage.getItem('data')) || []\n    const arr = []\n    console.log(arr)\n\n    \u002F\u002F 时间函数\n    function getTime() {\n      const date = new Date()\n      const h = date.getHours() \u003C 10 ? '0' + date.getHours() : date.getHours()\n      const m = date.getMinutes() \u003C 10 ? '0' + date.getMinutes() : date.getMinutes()\n      const s = date.getSeconds() \u003C 10 ? '0' + date.getSeconds() : date.getSeconds()\n      const str = `${date.getFullYear()}\u002F${date.getMonth() + 1}\u002F${date.getDate()} ${h}:${m}:${s}`\n      return str\n    }\n    \u002F\u002F 渲染函数\n    const tbody = document.querySelector('tbody')\n    function render() {\n      \u002F\u002F (1) 利用map遍历数组，返回对应tr的数组\n      \u002F\u002F map遍历的是数组，这里里边存的都是对象，所以ele就是代表里边的对象\n      const trArr = arr.map(function (ele, index) {\n        return `\n      \u003Ctr>\n        \u003Ctd>${ele.unameId}\u003C\u002Ftd>\n        \u003Ctd>${ele.uname}\u003C\u002Ftd>\n        \u003Ctd>${ele.age}\u003C\u002Ftd>\n        \u003Ctd>${ele.gender}\u003C\u002Ftd>\n        \u003Ctd>${ele.salary}\u003C\u002Ftd>\n        \u003Ctd>${ele.city}\u003C\u002Ftd>\n        \u003Ctd>${ele.time}\u003C\u002Ftd>\n        \u003Ctd>\n          \u003Ca href=\"#\" data-id=\"${index}\">删除\u003C\u002Fa>\n        \u003C\u002Ftd>\n      \u003C\u002Ftr>\n  `\n      })\n      console.log(trArr)\n\n      \u002F\u002F (2) 把数组转换为字符串join\n      \u002F\u002F (3) 把生成的字符串追加给tobody\n      tbody.innerHTML = trArr.join('')\n      \u002F\u002F 显示共有几条\n      document.querySelector('.total span').innerHTML = arr.length\n    }\n    \u002F\u002F render()\n\n    \u002F\u002F 获取DOM对象\n    const info = document.querySelector('.info')\n    const uname = document.querySelector('.uname')\n    const age = document.querySelector('.age')\n    const salary = document.querySelector('.salary')\n    const gender = document.querySelector('.gender')\n    const city = document.querySelector('.city')\n\n    \u002F\u002F form表单注册提交事件，阻止默认行为\n    info.addEventListener('submit', function (e) {\n      \u002F\u002F 禁止浏览器跳转\n      e.preventDefault()\n      \u002F\u002F 非空判断\n      \u002F\u002F !代表取反的意思，输入的是字符串，如果输入了内容，字符串就是真，取反之后就为假\n      \u002F\u002F 就不执行if语句，如果没输入取反就为真，就执行了if语句，表示信息输入不全\n      if (!uname.value || !age.value || !salary.value) {\n        return alert('输入内容不能为空')\n      }\n      arr.push({\n        \u002F\u002F 这里是push，给数组添加对象，原来的数组如果只有一个对象的话，数组长度为1，\n        \u002F\u002F 在加上现在这个对象，数组里边的对象就有两个了，数组长度为2，所以新加的这个\n        \u002F\u002F 对象的序号应为数组长度+1\n        \u002F\u002F unameId: arr.length + 1,\n\n        \u002F\u002F 因为是push  元素从数组的最后边添加，如果按照上边按照数组长度的方式来计算的话会出现图中两个数据ID分别为1，2\n        \u002F\u002F 删除1后，在添加一个数据，此时就都为2，2了\n        \u002F\u002F 必须进行判断，因为当全删除之后，就没有数据了，就不能通过数组中最后元素的unameId来获取了，此时直接给它赋值为1就可以\n        \u002F\u002F 0当假看\n        unameId: arr.length ? arr[arr.length - 1].unameId + 1 : 1,\n        uname: uname.value,\n        age: age.value,\n        salary: salary.value,\n        gender: gender.value,\n        city: city.value,\n        \u002F\u002F 这里的时间可以不去封装函数，直接使用toLocaleString()方法\n        \u002F\u002F time: new Date().toDateString()\n        time: getTime()\n      })\n      \u002F\u002F 渲染页面和重置表单 （reset()方法）\n      render()\n      this.reset() \u002F\u002F重置表单\n      \u002F\u002F 把数据重新存放在本地存储里面，记得转换为JOSN字符串存储\n      localStorage.setItem('data', JSON.stringify(arr))\n    })\n\n    \u002F\u002F 3.删除业务\n    \u002F\u002F 3.1 采取事件委托的形式，给body注册点击事件\n    tbody.addEventListener('click', function (e) {\n      \u002F\u002F 判断是否点击的是删除按钮\n      if (e.target.tagName === 'A') {\n        \u002F\u002F alert(1)\n        \u002F\u002F 3.2 得到当前点击的索引号。渲染数据的时候，动态给a链接添加自定义属性例如data-id='0'\n        \u002F\u002F console.log(e.target)\n        \u002F\u002F 3.3 根据索引号，利用splice删除数组这条数据\n\n        \u002F\u002F 确认框，确然是否真的要删除\n        \u002F\u002F confirm()为确认框\n        \u002F\u002F confirm会返回两个值，如果点击确定，就会返回true，如果点击取消，就会返回false\n        if (confirm('您确定要删除这条数据吗？')) {\n          arr.splice(e.target.dataset.id, 1)\n          \u002F\u002F 3.4 重新渲染页面\n          render()\n          \u002F\u002F 3.5 把最新arr数组存到本地存储\n          localStorage.setItem('data', JSON.stringify(arr))\n        }\n      }\n\n    })\n\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,88029,88030,88040,88054,88058,88066,88080,88100,88112,88120,88126,88136,88146,88150,88154,88160,88170,88182,88186,88190,88197,88209,88223,88233,88237,88241,88248,88255,88262,88274,88286,88296,88308,88312,88316,88323,88330,88342,88354,88364,88376,88406,88410,88414,88421,88433,88445,88469,88479,88489,88493,88497,88505,88516,88528,88540,88552,88569,88581,88593,88597,88601,88607,88619,88631,88643,88654,88672,88685,88697,88721,88731,88735,88739,88747,88757,88761,88765,88771,88783,88794,88804,88808,88812,88818,88840,88844,88848,88854,88860,88872,88882,88894,88924,88937,88954,88958,88962,88973,88995,89005,89009,89013,89026,89036,89048,89060,89072,89084,89094,89104,89114,89125,89138,89142,89150,89158,89162,89170,89183,89203,89236,89269,89302,89328,89346,89364,89372,89398,89416,89434,89452,89470,89488,89496,89504,89522,89530,89559,89567,89575,89583,89596,89608,89620,89632,89644,89656,89669,89681,89689,89697,89705,89710,89715,89719,89723,89727,89731,89735,89739,89744,89749,89754,89759,89767,89775,89783,89788,89793,89798,89803,89808,89813,89818,89823,89828,89833,89838,89843,89848,89853,89857,89862,89867,89877,89885,89889,89894,89902,89917,89959,89999,90038,90102,90108,90112,90117,90135,90143,90148,90153,90181,90187,90192,90205,90217,90229,90241,90253,90265,90277,90281,90291,90295,90300,90305,90309,90318,90322,90327,90332,90349,90354,90373,90377,90382,90386,90391,90409,90427,90445,90464,90483,90502,90507,90513,90534,90540,90549,90555,90561,90567,90594,90607,90612,90622,90628,90634,90640,90646,90651,90657,90663,90669,90675,90708,90713,90718,90723,90728,90734,90740,90746,90757,90762,90768,90775,90789,90795,90818,90823,90828,90834,90840,90861,90867,90880,90886,90892,90898,90904,90909,90915,90921,90927,90945,90959,90965,90973,90979,91001,91006,91011,91016,91021,91026,91035,91044,91049],{"__ignoreMap":32},[460,88031,88032,88034,88036,88038],{"class":462,"line":463},[460,88033,1845],{"class":466},[460,88035,1848],{"class":470},[460,88037,1851],{"class":929},[460,88039,473],{"class":466},[460,88041,88042,88044,88046,88048,88050,88052],{"class":462,"line":476},[460,88043,781],{"class":466},[460,88045,704],{"class":470},[460,88047,1862],{"class":929},[460,88049,894],{"class":466},[460,88051,1867],{"class":1353},[460,88053,473],{"class":466},[460,88055,88056],{"class":462,"line":482},[460,88057,522],{"emptyLinePlaceholder":521},[460,88059,88060,88062,88064],{"class":462,"line":488},[460,88061,781],{"class":466},[460,88063,1880],{"class":470},[460,88065,473],{"class":466},[460,88067,88068,88070,88072,88074,88076,88078],{"class":462,"line":494},[460,88069,467],{"class":466},[460,88071,1889],{"class":470},[460,88073,1892],{"class":929},[460,88075,894],{"class":466},[460,88077,1897],{"class":1353},[460,88079,473],{"class":466},[460,88081,88082,88084,88086,88088,88090,88092,88094,88096,88098],{"class":462,"line":500},[460,88083,467],{"class":466},[460,88085,1889],{"class":470},[460,88087,1908],{"class":929},[460,88089,894],{"class":466},[460,88091,1913],{"class":1353},[460,88093,1916],{"class":929},[460,88095,894],{"class":466},[460,88097,1921],{"class":1353},[460,88099,473],{"class":466},[460,88101,88102,88104,88106,88108,88110],{"class":462,"line":506},[460,88103,467],{"class":466},[460,88105,1930],{"class":470},[460,88107,1933],{"class":466},[460,88109,1930],{"class":470},[460,88111,473],{"class":466},[460,88113,88114,88116,88118],{"class":462,"line":512},[460,88115,467],{"class":466},[460,88117,1944],{"class":470},[460,88119,473],{"class":466},[460,88121,88122,88124],{"class":462,"line":518},[460,88123,1951],{"class":470},[460,88125,1348],{"class":466},[460,88127,88128,88130,88132,88134],{"class":462,"line":525},[460,88129,1958],{"class":900},[460,88131,1961],{"class":466},[460,88133,936],{"class":900},[460,88135,1966],{"class":466},[460,88137,88138,88140,88142,88144],{"class":462,"line":531},[460,88139,1971],{"class":900},[460,88141,1961],{"class":466},[460,88143,936],{"class":900},[460,88145,1966],{"class":466},[460,88147,88148],{"class":462,"line":537},[460,88149,509],{"class":466},[460,88151,88152],{"class":462,"line":543},[460,88153,522],{"emptyLinePlaceholder":521},[460,88155,88156,88158],{"class":462,"line":549},[460,88157,73488],{"class":470},[460,88159,1348],{"class":466},[460,88161,88162,88164,88166,88168],{"class":462,"line":555},[460,88163,5540],{"class":900},[460,88165,1961],{"class":466},[460,88167,5545],{"class":900},[460,88169,1966],{"class":466},[460,88171,88172,88174,88176,88178,88180],{"class":462,"line":560},[460,88173,78252],{"class":900},[460,88175,1961],{"class":466},[460,88177,2110],{"class":900},[460,88179,2017],{"class":887},[460,88181,1966],{"class":466},[460,88183,88184],{"class":462,"line":566},[460,88185,509],{"class":466},[460,88187,88188],{"class":462,"line":572},[460,88189,522],{"emptyLinePlaceholder":521},[460,88191,88192,88195],{"class":462,"line":578},[460,88193,88194],{"class":929},"    .info",[460,88196,1348],{"class":466},[460,88198,88199,88201,88203,88205,88207],{"class":462,"line":812},[460,88200,2009],{"class":900},[460,88202,1961],{"class":466},[460,88204,7739],{"class":900},[460,88206,2017],{"class":887},[460,88208,1966],{"class":466},[460,88210,88211,88213,88215,88217,88219,88221],{"class":462,"line":818},[460,88212,1971],{"class":900},[460,88214,1961],{"class":466},[460,88216,2096],{"class":900},[460,88218,2017],{"class":887},[460,88220,2030],{"class":900},[460,88222,1966],{"class":466},[460,88224,88225,88227,88229,88231],{"class":462,"line":824},[460,88226,5540],{"class":900},[460,88228,1961],{"class":466},[460,88230,5545],{"class":900},[460,88232,1966],{"class":466},[460,88234,88235],{"class":462,"line":2074},[460,88236,509],{"class":466},[460,88238,88239],{"class":462,"line":2088},[460,88240,522],{"emptyLinePlaceholder":521},[460,88242,88243,88246],{"class":462,"line":2103},[460,88244,88245],{"class":929},"    .uname",[460,88247,1363],{"class":466},[460,88249,88250,88253],{"class":462,"line":2122},[460,88251,88252],{"class":929},"    .age",[460,88254,1363],{"class":466},[460,88256,88257,88260],{"class":462,"line":2144},[460,88258,88259],{"class":929},"    .salary",[460,88261,1348],{"class":466},[460,88263,88264,88266,88268,88270,88272],{"class":462,"line":2158},[460,88265,2009],{"class":900},[460,88267,1961],{"class":466},[460,88269,2325],{"class":900},[460,88271,2017],{"class":887},[460,88273,1966],{"class":466},[460,88275,88276,88278,88280,88282,88284],{"class":462,"line":2163},[460,88277,5499],{"class":900},[460,88279,1961],{"class":466},[460,88281,2110],{"class":900},[460,88283,2017],{"class":887},[460,88285,1966],{"class":466},[460,88287,88288,88290,88292,88294],{"class":462,"line":2168},[460,88289,77964],{"class":900},[460,88291,1961],{"class":466},[460,88293,2629],{"class":900},[460,88295,1966],{"class":466},[460,88297,88298,88300,88302,88304,88306],{"class":462,"line":2183},[460,88299,2637],{"class":900},[460,88301,1961],{"class":466},[460,88303,7157],{"class":900},[460,88305,2017],{"class":887},[460,88307,1966],{"class":466},[460,88309,88310],{"class":462,"line":2194},[460,88311,509],{"class":466},[460,88313,88314],{"class":462,"line":2199},[460,88315,522],{"emptyLinePlaceholder":521},[460,88317,88318,88321],{"class":462,"line":2204},[460,88319,88320],{"class":929},"    .gender",[460,88322,1363],{"class":466},[460,88324,88325,88328],{"class":462,"line":2212},[460,88326,88327],{"class":929},"    .city",[460,88329,1348],{"class":466},[460,88331,88332,88334,88336,88338,88340],{"class":462,"line":2257},[460,88333,2009],{"class":900},[460,88335,1961],{"class":466},[460,88337,2325],{"class":900},[460,88339,2017],{"class":887},[460,88341,1966],{"class":466},[460,88343,88344,88346,88348,88350,88352],{"class":462,"line":2285},[460,88345,5499],{"class":900},[460,88347,1961],{"class":466},[460,88349,13850],{"class":900},[460,88351,2017],{"class":887},[460,88353,1966],{"class":466},[460,88355,88356,88358,88360,88362],{"class":462,"line":2298},[460,88357,77964],{"class":900},[460,88359,1961],{"class":466},[460,88361,2629],{"class":900},[460,88363,1966],{"class":466},[460,88365,88366,88368,88370,88372,88374],{"class":462,"line":2303},[460,88367,2637],{"class":900},[460,88369,1961],{"class":466},[460,88371,7157],{"class":900},[460,88373,2017],{"class":887},[460,88375,1966],{"class":466},[460,88377,88378,88380,88382,88384,88386,88388,88391,88393,88395,88397,88400,88402,88404],{"class":462,"line":2308},[460,88379,7192],{"class":900},[460,88381,1961],{"class":466},[460,88383,901],{"class":900},[460,88385,2017],{"class":887},[460,88387,7201],{"class":900},[460,88389,88390],{"class":900}," rgb",[460,88392,2174],{"class":466},[460,88394,5490],{"class":900},[460,88396,904],{"class":466},[460,88398,88399],{"class":900},"197",[460,88401,904],{"class":466},[460,88403,88399],{"class":900},[460,88405,2254],{"class":466},[460,88407,88408],{"class":462,"line":2318},[460,88409,509],{"class":466},[460,88411,88412],{"class":462,"line":2333},[460,88413,522],{"emptyLinePlaceholder":521},[460,88415,88416,88419],{"class":462,"line":2338},[460,88417,88418],{"class":470},"    button",[460,88420,1348],{"class":466},[460,88422,88423,88425,88427,88429,88431],{"class":462,"line":2343},[460,88424,5499],{"class":900},[460,88426,1961],{"class":466},[460,88428,13850],{"class":900},[460,88430,2017],{"class":887},[460,88432,1966],{"class":466},[460,88434,88435,88437,88439,88441,88443],{"class":462,"line":2353},[460,88436,2009],{"class":900},[460,88438,1961],{"class":466},[460,88440,17213],{"class":900},[460,88442,2017],{"class":887},[460,88444,1966],{"class":466},[460,88446,88447,88449,88451,88454,88456,88458,88460,88463,88465,88467],{"class":462,"line":2368},[460,88448,2673],{"class":900},[460,88450,1961],{"class":466},[460,88452,88453],{"class":900},"rgb",[460,88455,2174],{"class":466},[460,88457,17677],{"class":900},[460,88459,904],{"class":466},[460,88461,88462],{"class":900},"187",[460,88464,904],{"class":466},[460,88466,17040],{"class":900},[460,88468,2254],{"class":466},[460,88470,88471,88473,88475,88477],{"class":462,"line":2381},[460,88472,2384],{"class":900},[460,88474,1961],{"class":466},[460,88476,2690],{"class":900},[460,88478,1966],{"class":466},[460,88480,88481,88483,88485,88487],{"class":462,"line":2394},[460,88482,7192],{"class":900},[460,88484,1961],{"class":466},[460,88486,936],{"class":900},[460,88488,1966],{"class":466},[460,88490,88491],{"class":462,"line":2399},[460,88492,509],{"class":466},[460,88494,88495],{"class":462,"line":2404},[460,88496,522],{"emptyLinePlaceholder":521},[460,88498,88499,88501,88503],{"class":462,"line":2414},[460,88500,88418],{"class":470},[460,88502,67959],{"class":470},[460,88504,1348],{"class":466},[460,88506,88507,88509,88511,88514],{"class":462,"line":2428},[460,88508,2037],{"class":900},[460,88510,1961],{"class":466},[460,88512,88513],{"class":900},"inline-block",[460,88515,1966],{"class":466},[460,88517,88518,88520,88522,88524,88526],{"class":462,"line":2440},[460,88519,2009],{"class":900},[460,88521,1961],{"class":466},[460,88523,2096],{"class":900},[460,88525,2017],{"class":887},[460,88527,1966],{"class":466},[460,88529,88530,88532,88534,88536,88538],{"class":462,"line":2445},[460,88531,5499],{"class":900},[460,88533,1961],{"class":466},[460,88535,2096],{"class":900},[460,88537,2017],{"class":887},[460,88539,1966],{"class":466},[460,88541,88542,88544,88546,88548,88550],{"class":462,"line":2450},[460,88543,5513],{"class":900},[460,88545,1961],{"class":466},[460,88547,12812],{"class":900},[460,88549,2017],{"class":887},[460,88551,1966],{"class":466},[460,88553,88554,88556,88558,88560,88562,88564,88567],{"class":462,"line":2460},[460,88555,7192],{"class":900},[460,88557,1961],{"class":466},[460,88559,901],{"class":900},[460,88561,2017],{"class":887},[460,88563,7201],{"class":900},[460,88565,88566],{"class":900}," #fff",[460,88568,1966],{"class":466},[460,88570,88571,88573,88575,88577,88579],{"class":462,"line":2473},[460,88572,9991],{"class":900},[460,88574,1961],{"class":466},[460,88576,7290],{"class":900},[460,88578,2017],{"class":887},[460,88580,1966],{"class":466},[460,88582,88583,88585,88587,88589,88591],{"class":462,"line":2487},[460,88584,2637],{"class":900},[460,88586,1961],{"class":466},[460,88588,901],{"class":900},[460,88590,2017],{"class":887},[460,88592,1966],{"class":466},[460,88594,88595],{"class":462,"line":2492},[460,88596,509],{"class":466},[460,88598,88599],{"class":462,"line":2497},[460,88600,522],{"emptyLinePlaceholder":521},[460,88602,88603,88605],{"class":462,"line":2505},[460,88604,7612],{"class":929},[460,88606,1348],{"class":466},[460,88608,88609,88611,88613,88615,88617],{"class":462,"line":2516},[460,88610,2009],{"class":900},[460,88612,1961],{"class":466},[460,88614,77815],{"class":900},[460,88616,2017],{"class":887},[460,88618,1966],{"class":466},[460,88620,88621,88623,88625,88627,88629],{"class":462,"line":2529},[460,88622,5499],{"class":900},[460,88624,1961],{"class":466},[460,88626,5504],{"class":900},[460,88628,2017],{"class":887},[460,88630,1966],{"class":466},[460,88632,88633,88635,88637,88639,88641],{"class":462,"line":2542},[460,88634,5513],{"class":900},[460,88636,1961],{"class":466},[460,88638,5504],{"class":900},[460,88640,2017],{"class":887},[460,88642,1966],{"class":466},[460,88644,88645,88647,88649,88652],{"class":462,"line":2559},[460,88646,5540],{"class":900},[460,88648,1961],{"class":466},[460,88650,88651],{"class":900},"right",[460,88653,1966],{"class":466},[460,88655,88656,88658,88660,88662,88664,88666,88668,88670],{"class":462,"line":2564},[460,88657,1971],{"class":900},[460,88659,1961],{"class":466},[460,88661,5504],{"class":900},[460,88663,2017],{"class":887},[460,88665,2030],{"class":900},[460,88667,5231],{"class":900},[460,88669,2017],{"class":887},[460,88671,1966],{"class":466},[460,88673,88674,88677,88679,88681,88683],{"class":462,"line":2569},[460,88675,88676],{"class":900},"      padding-right",[460,88678,1961],{"class":466},[460,88680,2096],{"class":900},[460,88682,2017],{"class":887},[460,88684,1966],{"class":466},[460,88686,88687,88689,88691,88693,88695],{"class":462,"line":2579},[460,88688,2356],{"class":900},[460,88690,1961],{"class":466},[460,88692,17250],{"class":900},[460,88694,2017],{"class":887},[460,88696,1966],{"class":466},[460,88698,88699,88701,88703,88705,88707,88710,88712,88715,88717,88719],{"class":462,"line":2597},[460,88700,2673],{"class":900},[460,88702,1961],{"class":466},[460,88704,88453],{"class":900},[460,88706,2174],{"class":466},[460,88708,88709],{"class":900},"237",[460,88711,904],{"class":466},[460,88713,88714],{"class":900},"235",[460,88716,904],{"class":466},[460,88718,88714],{"class":900},[460,88720,2254],{"class":466},[460,88722,88723,88725,88727,88729],{"class":462,"line":2610},[460,88724,1982],{"class":900},[460,88726,1961],{"class":466},[460,88728,1987],{"class":900},[460,88730,1966],{"class":466},[460,88732,88733],{"class":462,"line":2621},[460,88734,509],{"class":466},[460,88736,88737],{"class":462,"line":2634},[460,88738,522],{"emptyLinePlaceholder":521},[460,88740,88741,88743,88745],{"class":462,"line":2648},[460,88742,7612],{"class":929},[460,88744,67959],{"class":470},[460,88746,1348],{"class":466},[460,88748,88749,88751,88753,88755],{"class":462,"line":2653},[460,88750,2384],{"class":900},[460,88752,1961],{"class":466},[460,88754,73627],{"class":900},[460,88756,1966],{"class":466},[460,88758,88759],{"class":462,"line":2658},[460,88760,509],{"class":466},[460,88762,88763],{"class":462,"line":2670},[460,88764,522],{"emptyLinePlaceholder":521},[460,88766,88767,88769],{"class":462,"line":2683},[460,88768,81184],{"class":470},[460,88770,1348],{"class":466},[460,88772,88773,88775,88777,88779,88781],{"class":462,"line":2695},[460,88774,2009],{"class":900},[460,88776,1961],{"class":466},[460,88778,77815],{"class":900},[460,88780,2017],{"class":887},[460,88782,1966],{"class":466},[460,88784,88785,88787,88789,88792],{"class":462,"line":2700},[460,88786,1971],{"class":900},[460,88788,1961],{"class":466},[460,88790,88791],{"class":900},"auto",[460,88793,1966],{"class":466},[460,88795,88796,88798,88800,88802],{"class":462,"line":2709},[460,88797,81191],{"class":900},[460,88799,1961],{"class":466},[460,88801,81196],{"class":900},[460,88803,1966],{"class":466},[460,88805,88806],{"class":462,"line":2718},[460,88807,509],{"class":466},[460,88809,88810],{"class":462,"line":2723},[460,88811,522],{"emptyLinePlaceholder":521},[460,88813,88814,88816],{"class":462,"line":2732},[460,88815,81275],{"class":470},[460,88817,1348],{"class":466},[460,88819,88820,88822,88824,88826,88828,88830,88832,88834,88836,88838],{"class":462,"line":2750},[460,88821,2673],{"class":900},[460,88823,1961],{"class":466},[460,88825,88453],{"class":900},[460,88827,2174],{"class":466},[460,88829,88709],{"class":900},[460,88831,904],{"class":466},[460,88833,88714],{"class":900},[460,88835,904],{"class":466},[460,88837,88714],{"class":900},[460,88839,2254],{"class":466},[460,88841,88842],{"class":462,"line":2782},[460,88843,509],{"class":466},[460,88845,88846],{"class":462,"line":2809},[460,88847,522],{"emptyLinePlaceholder":521},[460,88849,88850,88852],{"class":462,"line":2836},[460,88851,81275],{"class":470},[460,88853,1363],{"class":466},[460,88855,88856,88858],{"class":462,"line":2856},[460,88857,81340],{"class":470},[460,88859,1348],{"class":466},[460,88861,88862,88864,88866,88868,88870],{"class":462,"line":2865},[460,88863,5499],{"class":900},[460,88865,1961],{"class":466},[460,88867,17015],{"class":900},[460,88869,2017],{"class":887},[460,88871,1966],{"class":466},[460,88873,88874,88876,88878,88880],{"class":462,"line":2881},[460,88875,5540],{"class":900},[460,88877,1961],{"class":466},[460,88879,40149],{"class":900},[460,88881,1966],{"class":466},[460,88883,88884,88886,88888,88890,88892],{"class":462,"line":2887},[460,88885,2356],{"class":900},[460,88887,1961],{"class":466},[460,88889,2480],{"class":900},[460,88891,2017],{"class":887},[460,88893,1966],{"class":466},[460,88895,88896,88898,88900,88902,88904,88906,88908,88910,88913,88915,88918,88920,88922],{"class":462,"line":2893},[460,88897,7192],{"class":900},[460,88899,1961],{"class":466},[460,88901,901],{"class":900},[460,88903,2017],{"class":887},[460,88905,7201],{"class":900},[460,88907,88390],{"class":900},[460,88909,2174],{"class":466},[460,88911,88912],{"class":900},"228",[460,88914,904],{"class":466},[460,88916,88917],{"class":900},"225",[460,88919,904],{"class":466},[460,88921,88917],{"class":900},[460,88923,2254],{"class":466},[460,88925,88926,88929,88931,88933,88935],{"class":462,"line":2899},[460,88927,88928],{"class":900},"      padding-left",[460,88930,1961],{"class":466},[460,88932,7290],{"class":900},[460,88934,2017],{"class":887},[460,88936,1966],{"class":466},[460,88938,88939,88941,88943,88945,88948,88950,88952],{"class":462,"line":2905},[460,88940,2125],{"class":900},[460,88942,1961],{"class":466},[460,88944,2130],{"class":900},[460,88946,88947],{"class":900}," linear",[460,88949,78048],{"class":900},[460,88951,2139],{"class":887},[460,88953,1966],{"class":466},[460,88955,88956],{"class":462,"line":2911},[460,88957,509],{"class":466},[460,88959,88960],{"class":462,"line":2920},[460,88961,522],{"emptyLinePlaceholder":521},[460,88963,88964,88967,88969,88971],{"class":462,"line":2929},[460,88965,88966],{"class":470},"    tbody",[460,88968,86291],{"class":470},[460,88970,77129],{"class":929},[460,88972,1348],{"class":466},[460,88974,88975,88977,88979,88981,88983,88985,88987,88989,88991,88993],{"class":462,"line":2935},[460,88976,2673],{"class":900},[460,88978,1961],{"class":466},[460,88980,88453],{"class":900},[460,88982,2174],{"class":466},[460,88984,88709],{"class":900},[460,88986,904],{"class":466},[460,88988,88714],{"class":900},[460,88990,904],{"class":466},[460,88992,88714],{"class":900},[460,88994,2254],{"class":466},[460,88996,88997,88999,89001,89003],{"class":462,"line":2948},[460,88998,2288],{"class":900},[460,89000,1961],{"class":466},[460,89002,2293],{"class":900},[460,89004,1966],{"class":466},[460,89006,89007],{"class":462,"line":2954},[460,89008,509],{"class":466},[460,89010,89011],{"class":462,"line":2965},[460,89012,522],{"emptyLinePlaceholder":521},[460,89014,89015,89017,89019,89022,89024],{"class":462,"line":2976},[460,89016,88966],{"class":470},[460,89018,86291],{"class":470},[460,89020,89021],{"class":470}," td",[460,89023,2574],{"class":470},[460,89025,1348],{"class":466},[460,89027,89028,89030,89032,89034],{"class":462,"line":2987},[460,89029,2037],{"class":900},[460,89031,1961],{"class":466},[460,89033,7350],{"class":900},[460,89035,1966],{"class":466},[460,89037,89038,89040,89042,89044,89046],{"class":462,"line":2998},[460,89039,2009],{"class":900},[460,89041,1961],{"class":466},[460,89043,16027],{"class":900},[460,89045,2017],{"class":887},[460,89047,1966],{"class":466},[460,89049,89050,89052,89054,89056,89058],{"class":462,"line":3003},[460,89051,5499],{"class":900},[460,89053,1961],{"class":466},[460,89055,13850],{"class":900},[460,89057,2017],{"class":887},[460,89059,1966],{"class":466},[460,89061,89062,89064,89066,89068,89070],{"class":462,"line":3008},[460,89063,5513],{"class":900},[460,89065,1961],{"class":466},[460,89067,13850],{"class":900},[460,89069,2017],{"class":887},[460,89071,1966],{"class":466},[460,89073,89074,89076,89078,89080,89082],{"class":462,"line":3018},[460,89075,78252],{"class":900},[460,89077,1961],{"class":466},[460,89079,907],{"class":900},[460,89081,2017],{"class":887},[460,89083,1966],{"class":466},[460,89085,89086,89088,89090,89092],{"class":462,"line":3028},[460,89087,2384],{"class":900},[460,89089,1961],{"class":466},[460,89091,2690],{"class":900},[460,89093,1966],{"class":466},[460,89095,89096,89098,89100,89102],{"class":462,"line":3038},[460,89097,5540],{"class":900},[460,89099,1961],{"class":466},[460,89101,5545],{"class":900},[460,89103,1966],{"class":466},[460,89105,89106,89108,89110,89112],{"class":462,"line":3048},[460,89107,2624],{"class":900},[460,89109,1961],{"class":466},[460,89111,2629],{"class":900},[460,89113,1966],{"class":466},[460,89115,89116,89118,89120,89123],{"class":462,"line":3053},[460,89117,2673],{"class":900},[460,89119,1961],{"class":466},[460,89121,89122],{"class":900},"orange",[460,89124,1966],{"class":466},[460,89126,89127,89129,89131,89134,89136],{"class":462,"line":3058},[460,89128,9991],{"class":900},[460,89130,1961],{"class":466},[460,89132,89133],{"class":900},"12.5",[460,89135,2017],{"class":887},[460,89137,1966],{"class":466},[460,89139,89140],{"class":462,"line":3068},[460,89141,509],{"class":466},[460,89143,89144,89146,89148],{"class":462,"line":3078},[460,89145,581],{"class":466},[460,89147,1944],{"class":470},[460,89149,473],{"class":466},[460,89151,89152,89154,89156],{"class":462,"line":3088},[460,89153,1776],{"class":466},[460,89155,1880],{"class":470},[460,89157,473],{"class":466},[460,89159,89160],{"class":462,"line":3098},[460,89161,522],{"emptyLinePlaceholder":521},[460,89163,89164,89166,89168],{"class":462,"line":3103},[460,89165,781],{"class":466},[460,89167,1721],{"class":470},[460,89169,473],{"class":466},[460,89171,89172,89174,89176,89179,89181],{"class":462,"line":3108},[460,89173,467],{"class":466},[460,89175,18],{"class":470},[460,89177,89178],{"class":466},">学生就业统计表\u003C\u002F",[460,89180,18],{"class":470},[460,89182,473],{"class":466},[460,89184,89185,89187,89189,89191,89193,89195,89197,89199,89201],{"class":462,"line":3118},[460,89186,467],{"class":466},[460,89188,82783],{"class":470},[460,89190,2740],{"class":929},[460,89192,894],{"class":466},[460,89194,78833],{"class":1353},[460,89196,85225],{"class":929},[460,89198,894],{"class":466},[460,89200,48181],{"class":1353},[460,89202,473],{"class":466},[460,89204,89205,89207,89209,89211,89213,89215,89217,89219,89221,89223,89225,89228,89230,89232,89234],{"class":462,"line":3128},[460,89206,2753],{"class":466},[460,89208,70068],{"class":470},[460,89210,70071],{"class":929},[460,89212,894],{"class":466},[460,89214,78868],{"class":1353},[460,89216,1908],{"class":929},[460,89218,894],{"class":466},[460,89220,85251],{"class":1353},[460,89222,77209],{"class":929},[460,89224,894],{"class":466},[460,89226,89227],{"class":1353},"\"姓名\"",[460,89229,2740],{"class":929},[460,89231,894],{"class":466},[460,89233,85251],{"class":1353},[460,89235,473],{"class":466},[460,89237,89238,89240,89242,89244,89246,89248,89250,89252,89254,89256,89258,89261,89263,89265,89267],{"class":462,"line":3138},[460,89239,2753],{"class":466},[460,89241,70068],{"class":470},[460,89243,70071],{"class":929},[460,89245,894],{"class":466},[460,89247,78868],{"class":1353},[460,89249,1908],{"class":929},[460,89251,894],{"class":466},[460,89253,85279],{"class":1353},[460,89255,77209],{"class":929},[460,89257,894],{"class":466},[460,89259,89260],{"class":1353},"\"年龄\"",[460,89262,2740],{"class":929},[460,89264,894],{"class":466},[460,89266,85279],{"class":1353},[460,89268,473],{"class":466},[460,89270,89271,89273,89275,89277,89279,89281,89283,89285,89287,89289,89291,89294,89296,89298,89300],{"class":462,"line":3148},[460,89272,2753],{"class":466},[460,89274,70068],{"class":470},[460,89276,70071],{"class":929},[460,89278,894],{"class":466},[460,89280,78868],{"class":1353},[460,89282,1908],{"class":929},[460,89284,894],{"class":466},[460,89286,85381],{"class":1353},[460,89288,77209],{"class":929},[460,89290,894],{"class":466},[460,89292,89293],{"class":1353},"\"薪资\"",[460,89295,2740],{"class":929},[460,89297,894],{"class":466},[460,89299,85381],{"class":1353},[460,89301,473],{"class":466},[460,89303,89304,89306,89308,89310,89312,89314,89316,89318,89320,89322,89324,89326],{"class":462,"line":3153},[460,89305,2753],{"class":466},[460,89307,85299],{"class":470},[460,89309,1908],{"class":929},[460,89311,894],{"class":466},[460,89313,85306],{"class":1353},[460,89315,10504],{"class":929},[460,89317,894],{"class":466},[460,89319,6606],{"class":1353},[460,89321,2740],{"class":929},[460,89323,894],{"class":466},[460,89325,85306],{"class":1353},[460,89327,473],{"class":466},[460,89329,89330,89332,89334,89336,89338,89340,89342,89344],{"class":462,"line":3158},[460,89331,16196],{"class":466},[460,89333,85321],{"class":470},[460,89335,82809],{"class":929},[460,89337,894],{"class":466},[460,89339,26426],{"class":1353},[460,89341,85330],{"class":466},[460,89343,85321],{"class":470},[460,89345,473],{"class":466},[460,89347,89348,89350,89352,89354,89356,89358,89360,89362],{"class":462,"line":3168},[460,89349,16196],{"class":466},[460,89351,85321],{"class":470},[460,89353,82809],{"class":929},[460,89355,894],{"class":466},[460,89357,26495],{"class":1353},[460,89359,85349],{"class":466},[460,89361,85321],{"class":470},[460,89363,473],{"class":466},[460,89365,89366,89368,89370],{"class":462,"line":3178},[460,89367,16244],{"class":466},[460,89369,85299],{"class":470},[460,89371,473],{"class":466},[460,89373,89374,89376,89378,89380,89382,89384,89386,89388,89390,89392,89394,89396],{"class":462,"line":3188},[460,89375,2753],{"class":466},[460,89377,85299],{"class":470},[460,89379,1908],{"class":929},[460,89381,894],{"class":466},[460,89383,85403],{"class":1353},[460,89385,10504],{"class":929},[460,89387,894],{"class":466},[460,89389,6606],{"class":1353},[460,89391,2740],{"class":929},[460,89393,894],{"class":466},[460,89395,85403],{"class":1353},[460,89397,473],{"class":466},[460,89399,89400,89402,89404,89406,89408,89410,89412,89414],{"class":462,"line":3198},[460,89401,16196],{"class":466},[460,89403,85321],{"class":470},[460,89405,82809],{"class":929},[460,89407,894],{"class":466},[460,89409,85424],{"class":1353},[460,89411,85427],{"class":466},[460,89413,85321],{"class":470},[460,89415,473],{"class":466},[460,89417,89418,89420,89422,89424,89426,89428,89430,89432],{"class":462,"line":3203},[460,89419,16196],{"class":466},[460,89421,85321],{"class":470},[460,89423,82809],{"class":929},[460,89425,894],{"class":466},[460,89427,85444],{"class":1353},[460,89429,85447],{"class":466},[460,89431,85321],{"class":470},[460,89433,473],{"class":466},[460,89435,89436,89438,89440,89442,89444,89446,89448,89450],{"class":462,"line":3208},[460,89437,16196],{"class":466},[460,89439,85321],{"class":470},[460,89441,82809],{"class":929},[460,89443,894],{"class":466},[460,89445,85464],{"class":1353},[460,89447,85467],{"class":466},[460,89449,85321],{"class":470},[460,89451,473],{"class":466},[460,89453,89454,89456,89458,89460,89462,89464,89466,89468],{"class":462,"line":3218},[460,89455,16196],{"class":466},[460,89457,85321],{"class":470},[460,89459,82809],{"class":929},[460,89461,894],{"class":466},[460,89463,85484],{"class":1353},[460,89465,85487],{"class":466},[460,89467,85321],{"class":470},[460,89469,473],{"class":466},[460,89471,89472,89474,89476,89478,89480,89482,89484,89486],{"class":462,"line":3228},[460,89473,16196],{"class":466},[460,89475,85321],{"class":470},[460,89477,82809],{"class":929},[460,89479,894],{"class":466},[460,89481,85504],{"class":1353},[460,89483,85507],{"class":466},[460,89485,85321],{"class":470},[460,89487,473],{"class":466},[460,89489,89490,89492,89494],{"class":462,"line":3238},[460,89491,16244],{"class":466},[460,89493,85299],{"class":470},[460,89495,473],{"class":466},[460,89497,89498,89500,89502],{"class":462,"line":3248},[460,89499,2753],{"class":466},[460,89501,10501],{"class":470},[460,89503,473],{"class":466},[460,89505,89506,89508,89510,89513,89515,89518,89520],{"class":462,"line":3253},[460,89507,16196],{"class":466},[460,89509,460],{"class":470},[460,89511,89512],{"class":466},">+\u003C\u002F",[460,89514,460],{"class":470},[460,89516,89517],{"class":466},">添加\u003C\u002F",[460,89519,10501],{"class":470},[460,89521,473],{"class":466},[460,89523,89524,89526,89528],{"class":462,"line":3258},[460,89525,581],{"class":466},[460,89527,82783],{"class":470},[460,89529,473],{"class":466},[460,89531,89532,89534,89536,89538,89540,89542,89545,89547,89550,89552,89555,89557],{"class":462,"line":3268},[460,89533,467],{"class":466},[460,89535,2737],{"class":470},[460,89537,2740],{"class":929},[460,89539,894],{"class":466},[460,89541,7820],{"class":1353},[460,89543,89544],{"class":466},">共有数据 \u003C",[460,89546,460],{"class":470},[460,89548,89549],{"class":466},">0\u003C\u002F",[460,89551,460],{"class":470},[460,89553,89554],{"class":466},"> 条\u003C\u002F",[460,89556,2737],{"class":470},[460,89558,473],{"class":466},[460,89560,89561,89563,89565],{"class":462,"line":3278},[460,89562,467],{"class":466},[460,89564,16884],{"class":470},[460,89566,473],{"class":466},[460,89568,89569,89571,89573],{"class":462,"line":3288},[460,89570,2753],{"class":466},[460,89572,16887],{"class":470},[460,89574,473],{"class":466},[460,89576,89577,89579,89581],{"class":462,"line":3298},[460,89578,16196],{"class":466},[460,89580,16890],{"class":470},[460,89582,473],{"class":466},[460,89584,89585,89587,89589,89592,89594],{"class":462,"line":3303},[460,89586,16212],{"class":466},[460,89588,16893],{"class":470},[460,89590,89591],{"class":466},">ID\u003C\u002F",[460,89593,16893],{"class":470},[460,89595,473],{"class":466},[460,89597,89598,89600,89602,89604,89606],{"class":462,"line":3308},[460,89599,16212],{"class":466},[460,89601,16893],{"class":470},[460,89603,85610],{"class":466},[460,89605,16893],{"class":470},[460,89607,473],{"class":466},[460,89609,89610,89612,89614,89616,89618],{"class":462,"line":3318},[460,89611,16212],{"class":466},[460,89613,16893],{"class":470},[460,89615,85623],{"class":466},[460,89617,16893],{"class":470},[460,89619,473],{"class":466},[460,89621,89622,89624,89626,89628,89630],{"class":462,"line":3328},[460,89623,16212],{"class":466},[460,89625,16893],{"class":470},[460,89627,85636],{"class":466},[460,89629,16893],{"class":470},[460,89631,473],{"class":466},[460,89633,89634,89636,89638,89640,89642],{"class":462,"line":3337},[460,89635,16212],{"class":466},[460,89637,16893],{"class":470},[460,89639,85649],{"class":466},[460,89641,16893],{"class":470},[460,89643,473],{"class":466},[460,89645,89646,89648,89650,89652,89654],{"class":462,"line":3347},[460,89647,16212],{"class":466},[460,89649,16893],{"class":470},[460,89651,85662],{"class":466},[460,89653,16893],{"class":470},[460,89655,473],{"class":466},[460,89657,89658,89660,89662,89665,89667],{"class":462,"line":3352},[460,89659,16212],{"class":466},[460,89661,16893],{"class":470},[460,89663,89664],{"class":466},">录入时间\u003C\u002F",[460,89666,16893],{"class":470},[460,89668,473],{"class":466},[460,89670,89671,89673,89675,89677,89679],{"class":462,"line":3358},[460,89672,16212],{"class":466},[460,89674,16893],{"class":470},[460,89676,85675],{"class":466},[460,89678,16893],{"class":470},[460,89680,473],{"class":466},[460,89682,89683,89685,89687],{"class":462,"line":3363},[460,89684,16235],{"class":466},[460,89686,16890],{"class":470},[460,89688,473],{"class":466},[460,89690,89691,89693,89695],{"class":462,"line":3369},[460,89692,16244],{"class":466},[460,89694,16887],{"class":470},[460,89696,473],{"class":466},[460,89698,89699,89701,89703],{"class":462,"line":3386},[460,89700,2753],{"class":466},[460,89702,16930],{"class":470},[460,89704,473],{"class":466},[460,89706,89707],{"class":462,"line":3392},[460,89708,89709],{"class":942},"      \u003C!-- \u003Ctr>\n",[460,89711,89712],{"class":462,"line":3406},[460,89713,89714],{"class":942},"        \u003Ctd>1\u003C\u002Ftd>\n",[460,89716,89717],{"class":462,"line":3412},[460,89718,89714],{"class":942},[460,89720,89721],{"class":462,"line":3431},[460,89722,89714],{"class":942},[460,89724,89725],{"class":462,"line":3461},[460,89726,89714],{"class":942},[460,89728,89729],{"class":462,"line":3473},[460,89730,89714],{"class":942},[460,89732,89733],{"class":462,"line":3479},[460,89734,89714],{"class":942},[460,89736,89737],{"class":462,"line":3490},[460,89738,89714],{"class":942},[460,89740,89741],{"class":462,"line":3501},[460,89742,89743],{"class":942},"        \u003Ctd>\n",[460,89745,89746],{"class":462,"line":3511},[460,89747,89748],{"class":942},"          \u003Ca href=\"#\" data-id=\"\">\u003C\u002Fa>\n",[460,89750,89751],{"class":462,"line":3517},[460,89752,89753],{"class":942},"        \u003C\u002Ftd>\n",[460,89755,89756],{"class":462,"line":3523},[460,89757,89758],{"class":942},"      \u003C\u002Ftr> -->\n",[460,89760,89761,89763,89765],{"class":462,"line":3529},[460,89762,16244],{"class":466},[460,89764,16930],{"class":470},[460,89766,473],{"class":466},[460,89768,89769,89771,89773],{"class":462,"line":3535},[460,89770,581],{"class":466},[460,89772,16884],{"class":470},[460,89774,473],{"class":466},[460,89776,89777,89779,89781],{"class":462,"line":3557},[460,89778,467],{"class":466},[460,89780,225],{"class":470},[460,89782,473],{"class":466},[460,89784,89785],{"class":462,"line":3562},[460,89786,89787],{"class":942},"    \u002F\u002F const initData = [{\n",[460,89789,89790],{"class":462,"line":3568},[460,89791,89792],{"class":942},"    \u002F\u002F   unameId: 1,\n",[460,89794,89795],{"class":462,"line":3577},[460,89796,89797],{"class":942},"    \u002F\u002F   uname: '华晨宇',\n",[460,89799,89800],{"class":462,"line":3583},[460,89801,89802],{"class":942},"    \u002F\u002F   age: 22,\n",[460,89804,89805],{"class":462,"line":3616},[460,89806,89807],{"class":942},"    \u002F\u002F   salary: 12000,\n",[460,89809,89810],{"class":462,"line":3622},[460,89811,89812],{"class":942},"    \u002F\u002F   gender: '男',\n",[460,89814,89815],{"class":462,"line":3645},[460,89816,89817],{"class":942},"    \u002F\u002F   city: '北京',\n",[460,89819,89820],{"class":462,"line":3651},[460,89821,89822],{"class":942},"    \u002F\u002F   time: '2099\u002F9\u002F9 08:08:08'\n",[460,89824,89825],{"class":462,"line":3668},[460,89826,89827],{"class":942},"    \u002F\u002F }]\n",[460,89829,89830],{"class":462,"line":3674},[460,89831,89832],{"class":942},"    \u002F\u002F localStorage.setItem('data', JSON.stringify(initData))\n",[460,89834,89835],{"class":462,"line":3680},[460,89836,89837],{"class":942},"    \u002F\u002F 1.渲染业务\n",[460,89839,89840],{"class":462,"line":3686},[460,89841,89842],{"class":942},"    \u002F\u002F 1.1 先读取本地存储的数据\n",[460,89844,89845],{"class":462,"line":3699},[460,89846,89847],{"class":942},"    \u002F\u002F (1) 本地存储有数据记得转换为对象然后存储到变量里面，后期用于渲染页面\n",[460,89849,89850],{"class":462,"line":3715},[460,89851,89852],{"class":942},"    \u002F\u002F (2) 如果没有数据，则用空数组来代替\n",[460,89854,89855],{"class":462,"line":3757},[460,89856,522],{"emptyLinePlaceholder":521},[460,89858,89859],{"class":462,"line":3778},[460,89860,89861],{"class":942},"    \u002F\u002F 下面这句话意思是去本地存储读取最新的数据\n",[460,89863,89864],{"class":462,"line":3812},[460,89865,89866],{"class":942},"    \u002F\u002F const arr = JSON.parse(localStorage.getItem('data')) || []\n",[460,89868,89869,89871,89873,89875],{"class":462,"line":3830},[460,89870,1340],{"class":887},[460,89872,13288],{"class":900},[460,89874,2943],{"class":887},[460,89876,11766],{"class":466},[460,89878,89879,89881,89883],{"class":462,"line":3855},[460,89880,9381],{"class":466},[460,89882,930],{"class":929},[460,89884,3873],{"class":466},[460,89886,89887],{"class":462,"line":3861},[460,89888,522],{"emptyLinePlaceholder":521},[460,89890,89891],{"class":462,"line":3867},[460,89892,89893],{"class":942},"    \u002F\u002F 时间函数\n",[460,89895,89896,89898,89900],{"class":462,"line":3876},[460,89897,3372],{"class":887},[460,89899,11371],{"class":929},[460,89901,11374],{"class":466},[460,89903,89904,89906,89909,89911,89913,89915],{"class":462,"line":3881},[460,89905,3625],{"class":887},[460,89907,89908],{"class":900}," date",[460,89910,2943],{"class":887},[460,89912,10913],{"class":887},[460,89914,11393],{"class":929},[460,89916,10758],{"class":466},[460,89918,89919,89921,89923,89925,89928,89931,89933,89935,89937,89940,89943,89945,89947,89949,89951,89953,89955,89957],{"class":462,"line":3886},[460,89920,3625],{"class":887},[460,89922,32541],{"class":900},[460,89924,2943],{"class":887},[460,89926,89927],{"class":466}," date.",[460,89929,89930],{"class":929},"getHours",[460,89932,14546],{"class":466},[460,89934,781],{"class":887},[460,89936,5231],{"class":900},[460,89938,89939],{"class":887}," ?",[460,89941,89942],{"class":1353}," '0'",[460,89944,61870],{"class":887},[460,89946,89927],{"class":466},[460,89948,89930],{"class":929},[460,89950,14546],{"class":466},[460,89952,1357],{"class":887},[460,89954,89927],{"class":466},[460,89956,89930],{"class":929},[460,89958,10758],{"class":466},[460,89960,89961,89963,89966,89968,89970,89973,89975,89977,89979,89981,89983,89985,89987,89989,89991,89993,89995,89997],{"class":462,"line":3891},[460,89962,3625],{"class":887},[460,89964,89965],{"class":900}," m",[460,89967,2943],{"class":887},[460,89969,89927],{"class":466},[460,89971,89972],{"class":929},"getMinutes",[460,89974,14546],{"class":466},[460,89976,781],{"class":887},[460,89978,5231],{"class":900},[460,89980,89939],{"class":887},[460,89982,89942],{"class":1353},[460,89984,61870],{"class":887},[460,89986,89927],{"class":466},[460,89988,89972],{"class":929},[460,89990,14546],{"class":466},[460,89992,1357],{"class":887},[460,89994,89927],{"class":466},[460,89996,89972],{"class":929},[460,89998,10758],{"class":466},[460,90000,90001,90003,90005,90007,90009,90012,90014,90016,90018,90020,90022,90024,90026,90028,90030,90032,90034,90036],{"class":462,"line":3900},[460,90002,3625],{"class":887},[460,90004,24915],{"class":900},[460,90006,2943],{"class":887},[460,90008,89927],{"class":466},[460,90010,90011],{"class":929},"getSeconds",[460,90013,14546],{"class":466},[460,90015,781],{"class":887},[460,90017,5231],{"class":900},[460,90019,89939],{"class":887},[460,90021,89942],{"class":1353},[460,90023,61870],{"class":887},[460,90025,89927],{"class":466},[460,90027,90011],{"class":929},[460,90029,14546],{"class":466},[460,90031,1357],{"class":887},[460,90033,89927],{"class":466},[460,90035,90011],{"class":929},[460,90037,10758],{"class":466},[460,90039,90040,90042,90044,90046,90048,90051,90053,90056,90058,90061,90063,90065,90068,90070,90072,90074,90076,90078,90080,90083,90085,90088,90090,90093,90095,90097,90099],{"class":462,"line":3909},[460,90041,3625],{"class":887},[460,90043,6846],{"class":900},[460,90045,2943],{"class":887},[460,90047,79071],{"class":1353},[460,90049,90050],{"class":466},"date",[460,90052,6000],{"class":1353},[460,90054,90055],{"class":929},"getFullYear",[460,90057,18961],{"class":1353},[460,90059,90060],{"class":1353},"}\u002F${",[460,90062,90050],{"class":466},[460,90064,6000],{"class":1353},[460,90066,90067],{"class":929},"getMonth",[460,90069,14546],{"class":1353},[460,90071,8495],{"class":887},[460,90073,1400],{"class":900},[460,90075,90060],{"class":1353},[460,90077,90050],{"class":466},[460,90079,6000],{"class":1353},[460,90081,90082],{"class":929},"getDate",[460,90084,18961],{"class":1353},[460,90086,90087],{"class":1353},"} ${",[460,90089,17149],{"class":466},[460,90091,90092],{"class":1353},"}:${",[460,90094,17270],{"class":466},[460,90096,90092],{"class":1353},[460,90098,2139],{"class":466},[460,90100,90101],{"class":1353},"}`\n",[460,90103,90104,90106],{"class":462,"line":3914},[460,90105,8353],{"class":887},[460,90107,3554],{"class":466},[460,90109,90110],{"class":462,"line":49896},[460,90111,509],{"class":466},[460,90113,90114],{"class":462,"line":49923},[460,90115,90116],{"class":942},"    \u002F\u002F 渲染函数\n",[460,90118,90119,90121,90123,90125,90127,90129,90131,90133],{"class":462,"line":49947},[460,90120,1340],{"class":887},[460,90122,85902],{"class":900},[460,90124,2943],{"class":887},[460,90126,10599],{"class":466},[460,90128,3541],{"class":929},[460,90130,2174],{"class":466},[460,90132,85913],{"class":1353},[460,90134,3754],{"class":466},[460,90136,90137,90139,90141],{"class":462,"line":49953},[460,90138,3372],{"class":887},[460,90140,3375],{"class":929},[460,90142,11374],{"class":466},[460,90144,90145],{"class":462,"line":49959},[460,90146,90147],{"class":942},"      \u002F\u002F (1) 利用map遍历数组，返回对应tr的数组\n",[460,90149,90150],{"class":462,"line":49965},[460,90151,90152],{"class":942},"      \u002F\u002F map遍历的是数组，这里里边存的都是对象，所以ele就是代表里边的对象\n",[460,90154,90155,90157,90160,90162,90164,90166,90168,90170,90172,90175,90177,90179],{"class":462,"line":49976},[460,90156,3625],{"class":887},[460,90158,90159],{"class":900}," trArr",[460,90161,2943],{"class":887},[460,90163,68228],{"class":466},[460,90165,6864],{"class":929},[460,90167,2174],{"class":466},[460,90169,3976],{"class":887},[460,90171,11704],{"class":466},[460,90173,90174],{"class":3380},"ele",[460,90176,904],{"class":466},[460,90178,5211],{"class":3380},[460,90180,2180],{"class":466},[460,90182,90183,90185],{"class":462,"line":49987},[460,90184,31206],{"class":887},[460,90186,3470],{"class":1353},[460,90188,90189],{"class":462,"line":49993},[460,90190,90191],{"class":1353},"      \u003Ctr>\n",[460,90193,90194,90196,90198,90200,90203],{"class":462,"line":50010},[460,90195,86318],{"class":1353},[460,90197,90174],{"class":466},[460,90199,6000],{"class":1353},[460,90201,90202],{"class":466},"unameId",[460,90204,86333],{"class":1353},[460,90206,90207,90209,90211,90213,90215],{"class":462,"line":50033},[460,90208,86318],{"class":1353},[460,90210,90174],{"class":466},[460,90212,6000],{"class":1353},[460,90214,86349],{"class":466},[460,90216,86333],{"class":1353},[460,90218,90219,90221,90223,90225,90227],{"class":462,"line":50056},[460,90220,86318],{"class":1353},[460,90222,90174],{"class":466},[460,90224,6000],{"class":1353},[460,90226,3989],{"class":466},[460,90228,86333],{"class":1353},[460,90230,90231,90233,90235,90237,90239],{"class":462,"line":50062},[460,90232,86318],{"class":1353},[460,90234,90174],{"class":466},[460,90236,6000],{"class":1353},[460,90238,3994],{"class":466},[460,90240,86333],{"class":1353},[460,90242,90243,90245,90247,90249,90251],{"class":462,"line":50067},[460,90244,86318],{"class":1353},[460,90246,90174],{"class":466},[460,90248,6000],{"class":1353},[460,90250,86398],{"class":466},[460,90252,86333],{"class":1353},[460,90254,90255,90257,90259,90261,90263],{"class":462,"line":50076},[460,90256,86318],{"class":1353},[460,90258,90174],{"class":466},[460,90260,6000],{"class":1353},[460,90262,86415],{"class":466},[460,90264,86333],{"class":1353},[460,90266,90267,90269,90271,90273,90275],{"class":462,"line":50086},[460,90268,86318],{"class":1353},[460,90270,90174],{"class":466},[460,90272,6000],{"class":1353},[460,90274,18922],{"class":466},[460,90276,86333],{"class":1353},[460,90278,90279],{"class":462,"line":50092},[460,90280,89743],{"class":1353},[460,90282,90283,90286,90288],{"class":462,"line":50097},[460,90284,90285],{"class":1353},"          \u003Ca href=\"#\" data-id=\"${",[460,90287,5211],{"class":466},[460,90289,90290],{"class":1353},"}\">删除\u003C\u002Fa>\n",[460,90292,90293],{"class":462,"line":50103},[460,90294,89753],{"class":1353},[460,90296,90297],{"class":462,"line":50116},[460,90298,90299],{"class":1353},"      \u003C\u002Ftr>\n",[460,90301,90302],{"class":462,"line":50122},[460,90303,90304],{"class":1353},"  `\n",[460,90306,90307],{"class":462,"line":50133},[460,90308,3526],{"class":466},[460,90310,90311,90313,90315],{"class":462,"line":50144},[460,90312,12805],{"class":466},[460,90314,930],{"class":929},[460,90316,90317],{"class":466},"(trArr)\n",[460,90319,90320],{"class":462,"line":50163},[460,90321,522],{"emptyLinePlaceholder":521},[460,90323,90324],{"class":462,"line":65821},[460,90325,90326],{"class":942},"      \u002F\u002F (2) 把数组转换为字符串join\n",[460,90328,90329],{"class":462,"line":65826},[460,90330,90331],{"class":942},"      \u002F\u002F (3) 把生成的字符串追加给tobody\n",[460,90333,90334,90336,90338,90341,90343,90345,90347],{"class":462,"line":65835},[460,90335,86248],{"class":466},[460,90337,894],{"class":887},[460,90339,90340],{"class":466}," trArr.",[460,90342,5672],{"class":929},[460,90344,2174],{"class":466},[460,90346,6887],{"class":1353},[460,90348,3754],{"class":466},[460,90350,90351],{"class":462,"line":65844},[460,90352,90353],{"class":942},"      \u002F\u002F 显示共有几条\n",[460,90355,90356,90358,90360,90362,90365,90367,90369,90371],{"class":462,"line":65849},[460,90357,3538],{"class":466},[460,90359,3541],{"class":929},[460,90361,2174],{"class":466},[460,90363,90364],{"class":1353},"'.total span'",[460,90366,3549],{"class":466},[460,90368,894],{"class":887},[460,90370,68228],{"class":466},[460,90372,72041],{"class":900},[460,90374,90375],{"class":462,"line":65854},[460,90376,509],{"class":466},[460,90378,90379],{"class":462,"line":65859},[460,90380,90381],{"class":942},"    \u002F\u002F render()\n",[460,90383,90384],{"class":462,"line":65872},[460,90385,522],{"emptyLinePlaceholder":521},[460,90387,90388],{"class":462,"line":65877},[460,90389,90390],{"class":942},"    \u002F\u002F 获取DOM对象\n",[460,90392,90393,90395,90397,90399,90401,90403,90405,90407],{"class":462,"line":65886},[460,90394,1340],{"class":887},[460,90396,85976],{"class":900},[460,90398,2943],{"class":887},[460,90400,10599],{"class":466},[460,90402,3541],{"class":929},[460,90404,2174],{"class":466},[460,90406,85987],{"class":1353},[460,90408,3754],{"class":466},[460,90410,90411,90413,90415,90417,90419,90421,90423,90425],{"class":462,"line":65895},[460,90412,1340],{"class":887},[460,90414,85803],{"class":900},[460,90416,2943],{"class":887},[460,90418,10599],{"class":466},[460,90420,3541],{"class":929},[460,90422,2174],{"class":466},[460,90424,85814],{"class":1353},[460,90426,3754],{"class":466},[460,90428,90429,90431,90433,90435,90437,90439,90441,90443],{"class":462,"line":65912},[460,90430,1340],{"class":887},[460,90432,32139],{"class":900},[460,90434,2943],{"class":887},[460,90436,10599],{"class":466},[460,90438,3541],{"class":929},[460,90440,2174],{"class":466},[460,90442,85833],{"class":1353},[460,90444,3754],{"class":466},[460,90446,90448,90450,90452,90454,90456,90458,90460,90462],{"class":462,"line":90447},231,[460,90449,1340],{"class":887},[460,90451,85862],{"class":900},[460,90453,2943],{"class":887},[460,90455,10599],{"class":466},[460,90457,3541],{"class":929},[460,90459,2174],{"class":466},[460,90461,85873],{"class":1353},[460,90463,3754],{"class":466},[460,90465,90467,90469,90471,90473,90475,90477,90479,90481],{"class":462,"line":90466},232,[460,90468,1340],{"class":887},[460,90470,85842],{"class":900},[460,90472,2943],{"class":887},[460,90474,10599],{"class":466},[460,90476,3541],{"class":929},[460,90478,2174],{"class":466},[460,90480,85853],{"class":1353},[460,90482,3754],{"class":466},[460,90484,90486,90488,90490,90492,90494,90496,90498,90500],{"class":462,"line":90485},233,[460,90487,1340],{"class":887},[460,90489,85882],{"class":900},[460,90491,2943],{"class":887},[460,90493,10599],{"class":466},[460,90495,3541],{"class":929},[460,90497,2174],{"class":466},[460,90499,85893],{"class":1353},[460,90501,3754],{"class":466},[460,90503,90505],{"class":462,"line":90504},234,[460,90506,522],{"emptyLinePlaceholder":521},[460,90508,90510],{"class":462,"line":90509},235,[460,90511,90512],{"class":942},"    \u002F\u002F form表单注册提交事件，阻止默认行为\n",[460,90514,90516,90518,90520,90522,90524,90526,90528,90530,90532],{"class":462,"line":90515},236,[460,90517,85994],{"class":466},[460,90519,3599],{"class":929},[460,90521,2174],{"class":466},[460,90523,86001],{"class":1353},[460,90525,904],{"class":466},[460,90527,3976],{"class":887},[460,90529,11704],{"class":466},[460,90531,3609],{"class":3380},[460,90533,2180],{"class":466},[460,90535,90537],{"class":462,"line":90536},237,[460,90538,90539],{"class":942},"      \u002F\u002F 禁止浏览器跳转\n",[460,90541,90543,90545,90547],{"class":462,"line":90542},238,[460,90544,86021],{"class":466},[460,90546,86024],{"class":929},[460,90548,10758],{"class":466},[460,90550,90552],{"class":462,"line":90551},239,[460,90553,90554],{"class":942},"      \u002F\u002F 非空判断\n",[460,90556,90558],{"class":462,"line":90557},240,[460,90559,90560],{"class":942},"      \u002F\u002F !代表取反的意思，输入的是字符串，如果输入了内容，字符串就是真，取反之后就为假\n",[460,90562,90564],{"class":462,"line":90563},241,[460,90565,90566],{"class":942},"      \u002F\u002F 就不执行if语句，如果没输入取反就为真，就执行了if语句，表示信息输入不全\n",[460,90568,90570,90572,90574,90576,90579,90581,90584,90587,90589,90591],{"class":462,"line":90569},242,[460,90571,3654],{"class":887},[460,90573,11704],{"class":466},[460,90575,15458],{"class":887},[460,90577,90578],{"class":466},"uname.value ",[460,90580,16580],{"class":887},[460,90582,90583],{"class":887}," !",[460,90585,90586],{"class":466},"age.value ",[460,90588,16580],{"class":887},[460,90590,90583],{"class":887},[460,90592,90593],{"class":466},"salary.value) {\n",[460,90595,90597,90599,90601,90603,90605],{"class":462,"line":90596},243,[460,90598,31206],{"class":887},[460,90600,86094],{"class":929},[460,90602,2174],{"class":466},[460,90604,86099],{"class":1353},[460,90606,3754],{"class":466},[460,90608,90610],{"class":462,"line":90609},244,[460,90611,552],{"class":466},[460,90613,90615,90617,90619],{"class":462,"line":90614},245,[460,90616,3415],{"class":466},[460,90618,68147],{"class":929},[460,90620,90621],{"class":466},"({\n",[460,90623,90625],{"class":462,"line":90624},246,[460,90626,90627],{"class":942},"        \u002F\u002F 这里是push，给数组添加对象，原来的数组如果只有一个对象的话，数组长度为1，\n",[460,90629,90631],{"class":462,"line":90630},247,[460,90632,90633],{"class":942},"        \u002F\u002F 在加上现在这个对象，数组里边的对象就有两个了，数组长度为2，所以新加的这个\n",[460,90635,90637],{"class":462,"line":90636},248,[460,90638,90639],{"class":942},"        \u002F\u002F 对象的序号应为数组长度+1\n",[460,90641,90643],{"class":462,"line":90642},249,[460,90644,90645],{"class":942},"        \u002F\u002F unameId: arr.length + 1,\n",[460,90647,90649],{"class":462,"line":90648},250,[460,90650,522],{"emptyLinePlaceholder":521},[460,90652,90654],{"class":462,"line":90653},251,[460,90655,90656],{"class":942},"        \u002F\u002F 因为是push  元素从数组的最后边添加，如果按照上边按照数组长度的方式来计算的话会出现图中两个数据ID分别为1，2\n",[460,90658,90660],{"class":462,"line":90659},252,[460,90661,90662],{"class":942},"        \u002F\u002F 删除1后，在添加一个数据，此时就都为2，2了\n",[460,90664,90666],{"class":462,"line":90665},253,[460,90667,90668],{"class":942},"        \u002F\u002F 必须进行判断，因为当全删除之后，就没有数据了，就不能通过数组中最后元素的unameId来获取了，此时直接给它赋值为1就可以\n",[460,90670,90672],{"class":462,"line":90671},254,[460,90673,90674],{"class":942},"        \u002F\u002F 0当假看\n",[460,90676,90678,90681,90683,90685,90688,90690,90692,90694,90697,90699,90701,90704,90706],{"class":462,"line":90677},255,[460,90679,90680],{"class":466},"        unameId: arr.",[460,90682,68231],{"class":900},[460,90684,89939],{"class":887},[460,90686,90687],{"class":466}," arr[arr.",[460,90689,68231],{"class":900},[460,90691,68531],{"class":887},[460,90693,1400],{"class":900},[460,90695,90696],{"class":466},"].unameId ",[460,90698,8495],{"class":887},[460,90700,1400],{"class":900},[460,90702,90703],{"class":887}," :",[460,90705,1400],{"class":900},[460,90707,1363],{"class":466},[460,90709,90711],{"class":462,"line":90710},256,[460,90712,86146],{"class":466},[460,90714,90716],{"class":462,"line":90715},257,[460,90717,86151],{"class":466},[460,90719,90721],{"class":462,"line":90720},258,[460,90722,86161],{"class":466},[460,90724,90726],{"class":462,"line":90725},259,[460,90727,86156],{"class":466},[460,90729,90731],{"class":462,"line":90730},260,[460,90732,90733],{"class":466},"        city: city.value,\n",[460,90735,90737],{"class":462,"line":90736},261,[460,90738,90739],{"class":942},"        \u002F\u002F 这里的时间可以不去封装函数，直接使用toLocaleString()方法\n",[460,90741,90743],{"class":462,"line":90742},262,[460,90744,90745],{"class":942},"        \u002F\u002F time: new Date().toDateString()\n",[460,90747,90749,90752,90755],{"class":462,"line":90748},263,[460,90750,90751],{"class":466},"        time: ",[460,90753,90754],{"class":929},"getTime",[460,90756,10758],{"class":466},[460,90758,90760],{"class":462,"line":90759},264,[460,90761,3526],{"class":466},[460,90763,90765],{"class":462,"line":90764},265,[460,90766,90767],{"class":942},"      \u002F\u002F 渲染页面和重置表单 （reset()方法）\n",[460,90769,90771,90773],{"class":462,"line":90770},266,[460,90772,86219],{"class":929},[460,90774,10758],{"class":466},[460,90776,90778,90780,90782,90784,90786],{"class":462,"line":90777},267,[460,90779,10591],{"class":900},[460,90781,6000],{"class":466},[460,90783,86207],{"class":929},[460,90785,14546],{"class":466},[460,90787,90788],{"class":942},"\u002F\u002F重置表单\n",[460,90790,90792],{"class":462,"line":90791},268,[460,90793,90794],{"class":942},"      \u002F\u002F 把数据重新存放在本地存储里面，记得转换为JOSN字符串存储\n",[460,90796,90798,90800,90802,90804,90807,90809,90811,90813,90815],{"class":462,"line":90797},269,[460,90799,16506],{"class":466},[460,90801,16509],{"class":929},[460,90803,2174],{"class":466},[460,90805,90806],{"class":1353},"'data'",[460,90808,904],{"class":466},[460,90810,12441],{"class":900},[460,90812,6000],{"class":466},[460,90814,12446],{"class":929},[460,90816,90817],{"class":466},"(arr))\n",[460,90819,90821],{"class":462,"line":90820},270,[460,90822,1679],{"class":466},[460,90824,90826],{"class":462,"line":90825},271,[460,90827,522],{"emptyLinePlaceholder":521},[460,90829,90831],{"class":462,"line":90830},272,[460,90832,90833],{"class":942},"    \u002F\u002F 3.删除业务\n",[460,90835,90837],{"class":462,"line":90836},273,[460,90838,90839],{"class":942},"    \u002F\u002F 3.1 采取事件委托的形式，给body注册点击事件\n",[460,90841,90843,90845,90847,90849,90851,90853,90855,90857,90859],{"class":462,"line":90842},274,[460,90844,86484],{"class":466},[460,90846,3599],{"class":929},[460,90848,2174],{"class":466},[460,90850,3604],{"class":1353},[460,90852,904],{"class":466},[460,90854,3976],{"class":887},[460,90856,11704],{"class":466},[460,90858,3609],{"class":3380},[460,90860,2180],{"class":466},[460,90862,90864],{"class":462,"line":90863},275,[460,90865,90866],{"class":942},"      \u002F\u002F 判断是否点击的是删除按钮\n",[460,90868,90870,90872,90874,90876,90878],{"class":462,"line":90869},276,[460,90871,3654],{"class":887},[460,90873,3657],{"class":466},[460,90875,3660],{"class":887},[460,90877,3663],{"class":1353},[460,90879,2180],{"class":466},[460,90881,90883],{"class":462,"line":90882},277,[460,90884,90885],{"class":942},"        \u002F\u002F alert(1)\n",[460,90887,90889],{"class":462,"line":90888},278,[460,90890,90891],{"class":942},"        \u002F\u002F 3.2 得到当前点击的索引号。渲染数据的时候，动态给a链接添加自定义属性例如data-id='0'\n",[460,90893,90895],{"class":462,"line":90894},279,[460,90896,90897],{"class":942},"        \u002F\u002F console.log(e.target)\n",[460,90899,90901],{"class":462,"line":90900},280,[460,90902,90903],{"class":942},"        \u002F\u002F 3.3 根据索引号，利用splice删除数组这条数据\n",[460,90905,90907],{"class":462,"line":90906},281,[460,90908,522],{"emptyLinePlaceholder":521},[460,90910,90912],{"class":462,"line":90911},282,[460,90913,90914],{"class":942},"        \u002F\u002F 确认框，确然是否真的要删除\n",[460,90916,90918],{"class":462,"line":90917},283,[460,90919,90920],{"class":942},"        \u002F\u002F confirm()为确认框\n",[460,90922,90924],{"class":462,"line":90923},284,[460,90925,90926],{"class":942},"        \u002F\u002F confirm会返回两个值，如果点击确定，就会返回true，如果点击取消，就会返回false\n",[460,90928,90930,90932,90934,90937,90939,90942],{"class":462,"line":90929},285,[460,90931,3702],{"class":887},[460,90933,11704],{"class":466},[460,90935,90936],{"class":929},"confirm",[460,90938,2174],{"class":466},[460,90940,90941],{"class":1353},"'您确定要删除这条数据吗？'",[460,90943,90944],{"class":466},")) {\n",[460,90946,90948,90951,90953,90955,90957],{"class":462,"line":90947},286,[460,90949,90950],{"class":466},"          arr.",[460,90952,74211],{"class":929},[460,90954,86537],{"class":466},[460,90956,901],{"class":900},[460,90958,3754],{"class":466},[460,90960,90962],{"class":462,"line":90961},287,[460,90963,90964],{"class":942},"          \u002F\u002F 3.4 重新渲染页面\n",[460,90966,90968,90971],{"class":462,"line":90967},288,[460,90969,90970],{"class":929},"          render",[460,90972,10758],{"class":466},[460,90974,90976],{"class":462,"line":90975},289,[460,90977,90978],{"class":942},"          \u002F\u002F 3.5 把最新arr数组存到本地存储\n",[460,90980,90982,90985,90987,90989,90991,90993,90995,90997,90999],{"class":462,"line":90981},290,[460,90983,90984],{"class":466},"          localStorage.",[460,90986,16509],{"class":929},[460,90988,2174],{"class":466},[460,90990,90806],{"class":1353},[460,90992,904],{"class":466},[460,90994,12441],{"class":900},[460,90996,6000],{"class":466},[460,90998,12446],{"class":929},[460,91000,90817],{"class":466},[460,91002,91004],{"class":462,"line":91003},291,[460,91005,3858],{"class":466},[460,91007,91009],{"class":462,"line":91008},292,[460,91010,552],{"class":466},[460,91012,91014],{"class":462,"line":91013},293,[460,91015,522],{"emptyLinePlaceholder":521},[460,91017,91019],{"class":462,"line":91018},294,[460,91020,1679],{"class":466},[460,91022,91024],{"class":462,"line":91023},295,[460,91025,522],{"emptyLinePlaceholder":521},[460,91027,91029,91031,91033],{"class":462,"line":91028},296,[460,91030,581],{"class":466},[460,91032,225],{"class":470},[460,91034,473],{"class":466},[460,91036,91038,91040,91042],{"class":462,"line":91037},297,[460,91039,1776],{"class":466},[460,91041,1721],{"class":470},[460,91043,473],{"class":466},[460,91045,91047],{"class":462,"line":91046},298,[460,91048,522],{"emptyLinePlaceholder":521},[460,91050,91052,91054,91056],{"class":462,"line":91051},299,[460,91053,1776],{"class":466},[460,91055,704],{"class":470},[460,91057,473],{"class":466},[18,91059,91061],{"id":91060},"_36-正则表达式","3.6 正则表达式",[14,91063,91064],{},"正则表达式（Regular Expression）是用于匹配字符串中字符组合的模式。在 JavaScript中，正则表达式也是对",[14,91066,91067],{},"象，通常用来查找、替换那些符合正则表达式的文本，许多语言都支持正则表达式。",[14,91069,91070],{},"正则表达式的作用：",[40,91072,91073,91080,91086],{},[43,91074,91075,91076,91079],{},"表单验证（ ",[3944,91077,91078],{},"匹配"," ）",[43,91081,91082,91083,91079],{},"过滤敏感词（ ",[3944,91084,91085],{},"替换",[43,91087,91088,91089,91079],{},"字符串中提取我们想要的部分（ ",[3944,91090,91091],{},"提取",[23,91093,91095],{"id":91094},"_361-语法","3.6.1 语法",[14,91097,91098],{},"正则表达式使用步骤：",[103,91100,91101,91104],{},[43,91102,91103],{},"定义规则",[43,91105,91106],{},"查找是否匹配",[14,91108,91109],{},"正则表达式里边不需要写引号",[14,91111,91112],{},[30,91113],{"alt":32,"src":91114},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-201.png",[14,91116,91117],{},"记忆方法：先有规则，再有在看后边的数据是否可以与前边规则匹配",[14,91119,91120],{},"reg.test(str)",[14,91122,91123],{},[30,91124],{"alt":32,"src":91125},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-202.png",[14,91127,91128],{},[30,91129],{"alt":32,"src":91130},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-203.png",[23,91132,91134],{"id":91133},"_362-元字符","3.6.2 元字符",[103,91136,91137,91140,91143,91146,91153],{},[43,91138,91139],{},"普通字符：大多数的字符仅能够描述它们本身，这些字符称作普通字符，例如所有的字母和数字。也就是说普通字符只能够匹配字符串中与它们相同的字符。",[43,91141,91142],{},"元字符（特殊字符）：是一些具有特殊含义的字符，可以极大提高了灵活性和强大的匹配功能。",[43,91144,91145],{},"比如，规定用户只能输入英文26个英文字母，普通字符的话 abcdefghijklm….. 但是换成元字符写法： [a-z]",[43,91147,91148,91149],{},"正则验证工具：",[2756,91150,91151],{"href":91151,"rel":91152},"https:\u002F\u002Ftool.oschina.net\u002Fregex",[4943],[43,91154,91155],{},"分类：边界符（表示位置，开头和结尾，必须用什么开头，用什么结尾）、量词（（表示重复次数）、字符类（比如 \\d 表示 0~9）",[115,91157,91159],{"id":91158},"_3621-边界符","3.6.2.1 边界符",[14,91161,91162],{},[30,91163],{"alt":32,"src":91164},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-204.png",[14,91166,91167],{},"console.log(\u002F^哈$\u002F.test('哈哈')) \u002F\u002Ffalse 加上量词之后会true",[14,91169,91170],{},"只有console.log(\u002F^哈$\u002F.test('哈'))这样才会true，开头结尾都写的话就是精准匹配",[14,91172,91173],{},"只匹配一次",[14,91175,91176],{},"两个其中一个来进行匹配的话，可以使用| ：\u002F我是|它会\u002F",[115,91178,91180],{"id":91179},"_3622-量词","3.6.2.2 量词",[14,91182,91183],{},[30,91184],{"alt":32,"src":91185},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-205.png",[14,91187,91188],{},"console.log(\u002F^哈*$\u002F.test('哈好哈')) \u002F\u002Ffalse，只允许里边只允许有哈，不允许出现任何其他字符",[115,91190,91192],{"id":91191},"_3623-元字符","3.6.2.3 元字符",[14,91194,91195],{},[30,91196],{"alt":32,"src":91197},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-206.png",[14,91199,91200],{},"匹配的是a或b或c []只选一个",[14,91202,91203],{},[30,91204],{"alt":32,"src":91205},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-207.png",[14,91207,91208],{},"qq号是从1开始的，第一个为1-9已经进行匹配完成了，从第二位开始0-9都可以了，大括号{}只重复前边离他最近的那个字符，{}就近原则",[14,91210,91211],{},[30,91212],{"alt":32,"src":91213},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-208.png",[14,91215,91216],{},"（2）. 匹配除换行符之外的任何单个字符，除了换行都行",[14,91218,91219],{},[30,91220],{"alt":32,"src":91221},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-209.png",[451,91223,91225],{"className":702,"code":91224,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\n\u003Cbody>\n  \u003Cscript>\n    \u002F\u002F 元字符中\n    console.log(\u002F哈\u002F.test('哈'))  \u002F\u002Ftrue\n    console.log(\u002F哈\u002F.test('哈哈'))  \u002F\u002Ftrue\n    console.log(\u002F哈\u002F.test('二哈'))   \u002F\u002Ftrue\n\n    \u002F\u002F 1.边界符\n    console.log(\u002F^哈\u002F.test('哈'))  \u002F\u002Ftrue\n    console.log(\u002F^哈$\u002F.test('哈哈'))  \u002F\u002Ffalse\n    \u002F\u002F 2.量词\n    \u002F\u002F 量词 * 类似于 >= 0\n    console.log(\u002F^哈*$\u002F.test('哈哈'))  \u002F\u002Ftrue\n    console.log(\u002F^哈*$\u002F.test('二哈好傻'))  \u002F\u002Ffalse 必须以哈开头或结尾\n    console.log(\u002F^哈*$\u002F.test('哈好哈'))   \u002F\u002Ffalse，只允许里边只有哈，不允许出现任何其他字符\n\n    \u002F\u002F +类似于>=1\n    console.log(\u002F^哈+$\u002F.test('哈哈'))  \u002F\u002Ftrue\n    console.log(\u002F^哈+$\u002F.test('二哈好傻'))  \u002F\u002Ffalse 必须以哈开头或结尾\n    console.log(\u002F^哈+$\u002F.test('哈好哈'))   \u002F\u002Ffalse\n\n    \u002F\u002F ?类似于0次或一次\n    console.log(\u002F^哈？$\u002F.test(''))   \u002F\u002Ftrue\n    console.log(\u002F^哈?$\u002F.test('哈哈'))  \u002F\u002Ffalse\n    console.log(\u002F^哈?$\u002F.test('二哈好傻'))  \u002F\u002Ffalse 必须以哈开头或结尾\n    console.log(\u002F^哈?$\u002F.test('哈好哈'))  \u002F\u002Ffalse\n\n    \u002F\u002F {n}写几，就必须出现几次\n    console.log(\u002F^哈{4}$\u002F.test('哈哈哈哈')) \u002F\u002Ftrue\n\n    \u002F\u002F {n,}大于等于n次\n    console.log(\u002F^哈{4,}$\u002F.test('哈哈哈哈')) \u002F\u002Ftrue\n    console.log(\u002F^哈{4,}$\u002F.test('哈哈哈哈哈')) \u002F\u002Ftrue\n\n    \u002F\u002F 重复{n,m} 重复n到m次，逗号两侧不能有空格\n    console.log(\u002F^哈{4,6}$\u002F.test('哈哈哈哈')) \u002F\u002Ftrue\n    console.log(\u002F^哈{4,6}$\u002F.test('哈哈哈哈哈')) \u002F\u002Ftrue\n    console.log(\u002F^哈{4,6}$\u002F.test('哈哈哈哈哈哈哈')) \u002F\u002Ffalse\n\n    \u002F\u002F 3.字符类 [abc] 只选一个字符\n    console.log(\u002F^[abc]$\u002F.test('a'))  \u002F\u002Ftrue\n    console.log(\u002F^[abc]$\u002F.test('b'))  \u002F\u002Ftrue\n    console.log(\u002F^[abc]$\u002F.test('c'))  \u002F\u002Ftrue\n    console.log(\u002F[abc]\u002F.test('ab'))  \u002F\u002Ftrue\n    console.log(\u002F^[abc]$\u002F.test('ab'))  \u002F\u002Ffalse     不加精确匹配，就是true\n    console.log(\u002F^[abc]{2}$\u002F.test('ab'))  \u002F\u002Ftrue   可以选两个\n    console.log(\u002F^[a-z]$\u002F.test('p'))   \u002F\u002Ftrue   依然只能选一个\n    console.log(\u002F^[A-Z]$\u002F.test('p'))   \u002F\u002Ffalse\n    console.log(\u002F^[A-Z]$\u002F.test('P'))   \u002F\u002Ftrue\n    console.log(\u002F^[0-9]$\u002F.test('0'))   \u002F\u002Ftrue\n    console.log(\u002F^[a-zA-Z0-9]$\u002F.test('p'))  \u002F\u002Ftrue\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\n\u003C\u002Fhtml>\n",[457,91226,91227,91237,91251,91255,91263,91277,91297,91309,91317,91321,91329,91337,91342,91372,91399,91426,91430,91435,91463,91494,91499,91504,91535,91567,91599,91603,91608,91639,91669,91699,91703,91708,91739,91770,91800,91830,91834,91839,91872,91876,91881,91912,91943,91947,91952,91983,92013,92044,92048,92053,92085,92116,92147,92174,92205,92237,92270,92301,92332,92364,92395,92403,92411,92415],{"__ignoreMap":32},[460,91228,91229,91231,91233,91235],{"class":462,"line":463},[460,91230,1845],{"class":466},[460,91232,1848],{"class":470},[460,91234,1851],{"class":929},[460,91236,473],{"class":466},[460,91238,91239,91241,91243,91245,91247,91249],{"class":462,"line":476},[460,91240,781],{"class":466},[460,91242,704],{"class":470},[460,91244,1862],{"class":929},[460,91246,894],{"class":466},[460,91248,1867],{"class":1353},[460,91250,473],{"class":466},[460,91252,91253],{"class":462,"line":482},[460,91254,522],{"emptyLinePlaceholder":521},[460,91256,91257,91259,91261],{"class":462,"line":488},[460,91258,781],{"class":466},[460,91260,1880],{"class":470},[460,91262,473],{"class":466},[460,91264,91265,91267,91269,91271,91273,91275],{"class":462,"line":494},[460,91266,467],{"class":466},[460,91268,1889],{"class":470},[460,91270,1892],{"class":929},[460,91272,894],{"class":466},[460,91274,1897],{"class":1353},[460,91276,473],{"class":466},[460,91278,91279,91281,91283,91285,91287,91289,91291,91293,91295],{"class":462,"line":500},[460,91280,467],{"class":466},[460,91282,1889],{"class":470},[460,91284,1908],{"class":929},[460,91286,894],{"class":466},[460,91288,1913],{"class":1353},[460,91290,1916],{"class":929},[460,91292,894],{"class":466},[460,91294,1921],{"class":1353},[460,91296,473],{"class":466},[460,91298,91299,91301,91303,91305,91307],{"class":462,"line":506},[460,91300,467],{"class":466},[460,91302,1930],{"class":470},[460,91304,1933],{"class":466},[460,91306,1930],{"class":470},[460,91308,473],{"class":466},[460,91310,91311,91313,91315],{"class":462,"line":512},[460,91312,1776],{"class":466},[460,91314,1880],{"class":470},[460,91316,473],{"class":466},[460,91318,91319],{"class":462,"line":518},[460,91320,522],{"emptyLinePlaceholder":521},[460,91322,91323,91325,91327],{"class":462,"line":525},[460,91324,781],{"class":466},[460,91326,1721],{"class":470},[460,91328,473],{"class":466},[460,91330,91331,91333,91335],{"class":462,"line":531},[460,91332,467],{"class":466},[460,91334,225],{"class":470},[460,91336,473],{"class":466},[460,91338,91339],{"class":462,"line":537},[460,91340,91341],{"class":942},"    \u002F\u002F 元字符中\n",[460,91343,91344,91346,91348,91350,91352,91355,91357,91359,91362,91364,91367,91369],{"class":462,"line":543},[460,91345,9381],{"class":466},[460,91347,930],{"class":929},[460,91349,2174],{"class":466},[460,91351,8331],{"class":1353},[460,91353,91354],{"class":64280},"哈",[460,91356,8331],{"class":1353},[460,91358,6000],{"class":466},[460,91360,91361],{"class":929},"test",[460,91363,2174],{"class":466},[460,91365,91366],{"class":1353},"'哈'",[460,91368,6023],{"class":466},[460,91370,91371],{"class":942},"\u002F\u002Ftrue\n",[460,91373,91374,91376,91378,91380,91382,91384,91386,91388,91390,91392,91395,91397],{"class":462,"line":549},[460,91375,9381],{"class":466},[460,91377,930],{"class":929},[460,91379,2174],{"class":466},[460,91381,8331],{"class":1353},[460,91383,91354],{"class":64280},[460,91385,8331],{"class":1353},[460,91387,6000],{"class":466},[460,91389,91361],{"class":929},[460,91391,2174],{"class":466},[460,91393,91394],{"class":1353},"'哈哈'",[460,91396,6023],{"class":466},[460,91398,91371],{"class":942},[460,91400,91401,91403,91405,91407,91409,91411,91413,91415,91417,91419,91422,91424],{"class":462,"line":555},[460,91402,9381],{"class":466},[460,91404,930],{"class":929},[460,91406,2174],{"class":466},[460,91408,8331],{"class":1353},[460,91410,91354],{"class":64280},[460,91412,8331],{"class":1353},[460,91414,6000],{"class":466},[460,91416,91361],{"class":929},[460,91418,2174],{"class":466},[460,91420,91421],{"class":1353},"'二哈'",[460,91423,6152],{"class":466},[460,91425,91371],{"class":942},[460,91427,91428],{"class":462,"line":560},[460,91429,522],{"emptyLinePlaceholder":521},[460,91431,91432],{"class":462,"line":566},[460,91433,91434],{"class":942},"    \u002F\u002F 1.边界符\n",[460,91436,91437,91439,91441,91443,91445,91447,91449,91451,91453,91455,91457,91459,91461],{"class":462,"line":572},[460,91438,9381],{"class":466},[460,91440,930],{"class":929},[460,91442,2174],{"class":466},[460,91444,8331],{"class":1353},[460,91446,17674],{"class":887},[460,91448,91354],{"class":64280},[460,91450,8331],{"class":1353},[460,91452,6000],{"class":466},[460,91454,91361],{"class":929},[460,91456,2174],{"class":466},[460,91458,91366],{"class":1353},[460,91460,6023],{"class":466},[460,91462,91371],{"class":942},[460,91464,91465,91467,91469,91471,91473,91475,91477,91479,91481,91483,91485,91487,91489,91491],{"class":462,"line":578},[460,91466,9381],{"class":466},[460,91468,930],{"class":929},[460,91470,2174],{"class":466},[460,91472,8331],{"class":1353},[460,91474,17674],{"class":887},[460,91476,91354],{"class":64280},[460,91478,17043],{"class":887},[460,91480,8331],{"class":1353},[460,91482,6000],{"class":466},[460,91484,91361],{"class":929},[460,91486,2174],{"class":466},[460,91488,91394],{"class":1353},[460,91490,6023],{"class":466},[460,91492,91493],{"class":942},"\u002F\u002Ffalse\n",[460,91495,91496],{"class":462,"line":812},[460,91497,91498],{"class":942},"    \u002F\u002F 2.量词\n",[460,91500,91501],{"class":462,"line":818},[460,91502,91503],{"class":942},"    \u002F\u002F 量词 * 类似于 >= 0\n",[460,91505,91506,91508,91510,91512,91514,91516,91518,91521,91523,91525,91527,91529,91531,91533],{"class":462,"line":824},[460,91507,9381],{"class":466},[460,91509,930],{"class":929},[460,91511,2174],{"class":466},[460,91513,8331],{"class":1353},[460,91515,17674],{"class":887},[460,91517,91354],{"class":64280},[460,91519,91520],{"class":887},"*$",[460,91522,8331],{"class":1353},[460,91524,6000],{"class":466},[460,91526,91361],{"class":929},[460,91528,2174],{"class":466},[460,91530,91394],{"class":1353},[460,91532,6023],{"class":466},[460,91534,91371],{"class":942},[460,91536,91537,91539,91541,91543,91545,91547,91549,91551,91553,91555,91557,91559,91562,91564],{"class":462,"line":2074},[460,91538,9381],{"class":466},[460,91540,930],{"class":929},[460,91542,2174],{"class":466},[460,91544,8331],{"class":1353},[460,91546,17674],{"class":887},[460,91548,91354],{"class":64280},[460,91550,91520],{"class":887},[460,91552,8331],{"class":1353},[460,91554,6000],{"class":466},[460,91556,91361],{"class":929},[460,91558,2174],{"class":466},[460,91560,91561],{"class":1353},"'二哈好傻'",[460,91563,6023],{"class":466},[460,91565,91566],{"class":942},"\u002F\u002Ffalse 必须以哈开头或结尾\n",[460,91568,91569,91571,91573,91575,91577,91579,91581,91583,91585,91587,91589,91591,91594,91596],{"class":462,"line":2088},[460,91570,9381],{"class":466},[460,91572,930],{"class":929},[460,91574,2174],{"class":466},[460,91576,8331],{"class":1353},[460,91578,17674],{"class":887},[460,91580,91354],{"class":64280},[460,91582,91520],{"class":887},[460,91584,8331],{"class":1353},[460,91586,6000],{"class":466},[460,91588,91361],{"class":929},[460,91590,2174],{"class":466},[460,91592,91593],{"class":1353},"'哈好哈'",[460,91595,6152],{"class":466},[460,91597,91598],{"class":942},"\u002F\u002Ffalse，只允许里边只有哈，不允许出现任何其他字符\n",[460,91600,91601],{"class":462,"line":2103},[460,91602,522],{"emptyLinePlaceholder":521},[460,91604,91605],{"class":462,"line":2122},[460,91606,91607],{"class":942},"    \u002F\u002F +类似于>=1\n",[460,91609,91610,91612,91614,91616,91618,91620,91622,91625,91627,91629,91631,91633,91635,91637],{"class":462,"line":2144},[460,91611,9381],{"class":466},[460,91613,930],{"class":929},[460,91615,2174],{"class":466},[460,91617,8331],{"class":1353},[460,91619,17674],{"class":887},[460,91621,91354],{"class":64280},[460,91623,91624],{"class":887},"+$",[460,91626,8331],{"class":1353},[460,91628,6000],{"class":466},[460,91630,91361],{"class":929},[460,91632,2174],{"class":466},[460,91634,91394],{"class":1353},[460,91636,6023],{"class":466},[460,91638,91371],{"class":942},[460,91640,91641,91643,91645,91647,91649,91651,91653,91655,91657,91659,91661,91663,91665,91667],{"class":462,"line":2158},[460,91642,9381],{"class":466},[460,91644,930],{"class":929},[460,91646,2174],{"class":466},[460,91648,8331],{"class":1353},[460,91650,17674],{"class":887},[460,91652,91354],{"class":64280},[460,91654,91624],{"class":887},[460,91656,8331],{"class":1353},[460,91658,6000],{"class":466},[460,91660,91361],{"class":929},[460,91662,2174],{"class":466},[460,91664,91561],{"class":1353},[460,91666,6023],{"class":466},[460,91668,91566],{"class":942},[460,91670,91671,91673,91675,91677,91679,91681,91683,91685,91687,91689,91691,91693,91695,91697],{"class":462,"line":2163},[460,91672,9381],{"class":466},[460,91674,930],{"class":929},[460,91676,2174],{"class":466},[460,91678,8331],{"class":1353},[460,91680,17674],{"class":887},[460,91682,91354],{"class":64280},[460,91684,91624],{"class":887},[460,91686,8331],{"class":1353},[460,91688,6000],{"class":466},[460,91690,91361],{"class":929},[460,91692,2174],{"class":466},[460,91694,91593],{"class":1353},[460,91696,6152],{"class":466},[460,91698,91493],{"class":942},[460,91700,91701],{"class":462,"line":2168},[460,91702,522],{"emptyLinePlaceholder":521},[460,91704,91705],{"class":462,"line":2183},[460,91706,91707],{"class":942},"    \u002F\u002F ?类似于0次或一次\n",[460,91709,91710,91712,91714,91716,91718,91720,91723,91725,91727,91729,91731,91733,91735,91737],{"class":462,"line":2194},[460,91711,9381],{"class":466},[460,91713,930],{"class":929},[460,91715,2174],{"class":466},[460,91717,8331],{"class":1353},[460,91719,17674],{"class":887},[460,91721,91722],{"class":64280},"哈？",[460,91724,17043],{"class":887},[460,91726,8331],{"class":1353},[460,91728,6000],{"class":466},[460,91730,91361],{"class":929},[460,91732,2174],{"class":466},[460,91734,6887],{"class":1353},[460,91736,6152],{"class":466},[460,91738,91371],{"class":942},[460,91740,91741,91743,91745,91747,91749,91751,91753,91756,91758,91760,91762,91764,91766,91768],{"class":462,"line":2199},[460,91742,9381],{"class":466},[460,91744,930],{"class":929},[460,91746,2174],{"class":466},[460,91748,8331],{"class":1353},[460,91750,17674],{"class":887},[460,91752,91354],{"class":64280},[460,91754,91755],{"class":887},"?$",[460,91757,8331],{"class":1353},[460,91759,6000],{"class":466},[460,91761,91361],{"class":929},[460,91763,2174],{"class":466},[460,91765,91394],{"class":1353},[460,91767,6023],{"class":466},[460,91769,91493],{"class":942},[460,91771,91772,91774,91776,91778,91780,91782,91784,91786,91788,91790,91792,91794,91796,91798],{"class":462,"line":2204},[460,91773,9381],{"class":466},[460,91775,930],{"class":929},[460,91777,2174],{"class":466},[460,91779,8331],{"class":1353},[460,91781,17674],{"class":887},[460,91783,91354],{"class":64280},[460,91785,91755],{"class":887},[460,91787,8331],{"class":1353},[460,91789,6000],{"class":466},[460,91791,91361],{"class":929},[460,91793,2174],{"class":466},[460,91795,91561],{"class":1353},[460,91797,6023],{"class":466},[460,91799,91566],{"class":942},[460,91801,91802,91804,91806,91808,91810,91812,91814,91816,91818,91820,91822,91824,91826,91828],{"class":462,"line":2212},[460,91803,9381],{"class":466},[460,91805,930],{"class":929},[460,91807,2174],{"class":466},[460,91809,8331],{"class":1353},[460,91811,17674],{"class":887},[460,91813,91354],{"class":64280},[460,91815,91755],{"class":887},[460,91817,8331],{"class":1353},[460,91819,6000],{"class":466},[460,91821,91361],{"class":929},[460,91823,2174],{"class":466},[460,91825,91593],{"class":1353},[460,91827,6023],{"class":466},[460,91829,91493],{"class":942},[460,91831,91832],{"class":462,"line":2257},[460,91833,522],{"emptyLinePlaceholder":521},[460,91835,91836],{"class":462,"line":2285},[460,91837,91838],{"class":942},"    \u002F\u002F {n}写几，就必须出现几次\n",[460,91840,91841,91843,91845,91847,91849,91851,91853,91856,91858,91860,91862,91864,91867,91870],{"class":462,"line":2298},[460,91842,9381],{"class":466},[460,91844,930],{"class":929},[460,91846,2174],{"class":466},[460,91848,8331],{"class":1353},[460,91850,17674],{"class":887},[460,91852,91354],{"class":64280},[460,91854,91855],{"class":887},"{4}$",[460,91857,8331],{"class":1353},[460,91859,6000],{"class":466},[460,91861,91361],{"class":929},[460,91863,2174],{"class":466},[460,91865,91866],{"class":1353},"'哈哈哈哈'",[460,91868,91869],{"class":466},")) ",[460,91871,91371],{"class":942},[460,91873,91874],{"class":462,"line":2303},[460,91875,522],{"emptyLinePlaceholder":521},[460,91877,91878],{"class":462,"line":2308},[460,91879,91880],{"class":942},"    \u002F\u002F {n,}大于等于n次\n",[460,91882,91883,91885,91887,91889,91891,91893,91895,91898,91900,91902,91904,91906,91908,91910],{"class":462,"line":2318},[460,91884,9381],{"class":466},[460,91886,930],{"class":929},[460,91888,2174],{"class":466},[460,91890,8331],{"class":1353},[460,91892,17674],{"class":887},[460,91894,91354],{"class":64280},[460,91896,91897],{"class":887},"{4,}$",[460,91899,8331],{"class":1353},[460,91901,6000],{"class":466},[460,91903,91361],{"class":929},[460,91905,2174],{"class":466},[460,91907,91866],{"class":1353},[460,91909,91869],{"class":466},[460,91911,91371],{"class":942},[460,91913,91914,91916,91918,91920,91922,91924,91926,91928,91930,91932,91934,91936,91939,91941],{"class":462,"line":2333},[460,91915,9381],{"class":466},[460,91917,930],{"class":929},[460,91919,2174],{"class":466},[460,91921,8331],{"class":1353},[460,91923,17674],{"class":887},[460,91925,91354],{"class":64280},[460,91927,91897],{"class":887},[460,91929,8331],{"class":1353},[460,91931,6000],{"class":466},[460,91933,91361],{"class":929},[460,91935,2174],{"class":466},[460,91937,91938],{"class":1353},"'哈哈哈哈哈'",[460,91940,91869],{"class":466},[460,91942,91371],{"class":942},[460,91944,91945],{"class":462,"line":2338},[460,91946,522],{"emptyLinePlaceholder":521},[460,91948,91949],{"class":462,"line":2343},[460,91950,91951],{"class":942},"    \u002F\u002F 重复{n,m} 重复n到m次，逗号两侧不能有空格\n",[460,91953,91954,91956,91958,91960,91962,91964,91966,91969,91971,91973,91975,91977,91979,91981],{"class":462,"line":2353},[460,91955,9381],{"class":466},[460,91957,930],{"class":929},[460,91959,2174],{"class":466},[460,91961,8331],{"class":1353},[460,91963,17674],{"class":887},[460,91965,91354],{"class":64280},[460,91967,91968],{"class":887},"{4,6}$",[460,91970,8331],{"class":1353},[460,91972,6000],{"class":466},[460,91974,91361],{"class":929},[460,91976,2174],{"class":466},[460,91978,91866],{"class":1353},[460,91980,91869],{"class":466},[460,91982,91371],{"class":942},[460,91984,91985,91987,91989,91991,91993,91995,91997,91999,92001,92003,92005,92007,92009,92011],{"class":462,"line":2368},[460,91986,9381],{"class":466},[460,91988,930],{"class":929},[460,91990,2174],{"class":466},[460,91992,8331],{"class":1353},[460,91994,17674],{"class":887},[460,91996,91354],{"class":64280},[460,91998,91968],{"class":887},[460,92000,8331],{"class":1353},[460,92002,6000],{"class":466},[460,92004,91361],{"class":929},[460,92006,2174],{"class":466},[460,92008,91938],{"class":1353},[460,92010,91869],{"class":466},[460,92012,91371],{"class":942},[460,92014,92015,92017,92019,92021,92023,92025,92027,92029,92031,92033,92035,92037,92040,92042],{"class":462,"line":2381},[460,92016,9381],{"class":466},[460,92018,930],{"class":929},[460,92020,2174],{"class":466},[460,92022,8331],{"class":1353},[460,92024,17674],{"class":887},[460,92026,91354],{"class":64280},[460,92028,91968],{"class":887},[460,92030,8331],{"class":1353},[460,92032,6000],{"class":466},[460,92034,91361],{"class":929},[460,92036,2174],{"class":466},[460,92038,92039],{"class":1353},"'哈哈哈哈哈哈哈'",[460,92041,91869],{"class":466},[460,92043,91493],{"class":942},[460,92045,92046],{"class":462,"line":2394},[460,92047,522],{"emptyLinePlaceholder":521},[460,92049,92050],{"class":462,"line":2399},[460,92051,92052],{"class":942},"    \u002F\u002F 3.字符类 [abc] 只选一个字符\n",[460,92054,92055,92057,92059,92061,92063,92065,92068,92070,92072,92074,92076,92078,92081,92083],{"class":462,"line":2404},[460,92056,9381],{"class":466},[460,92058,930],{"class":929},[460,92060,2174],{"class":466},[460,92062,8331],{"class":1353},[460,92064,17674],{"class":887},[460,92066,92067],{"class":900},"[abc]",[460,92069,17043],{"class":887},[460,92071,8331],{"class":1353},[460,92073,6000],{"class":466},[460,92075,91361],{"class":929},[460,92077,2174],{"class":466},[460,92079,92080],{"class":1353},"'a'",[460,92082,6023],{"class":466},[460,92084,91371],{"class":942},[460,92086,92087,92089,92091,92093,92095,92097,92099,92101,92103,92105,92107,92109,92112,92114],{"class":462,"line":2414},[460,92088,9381],{"class":466},[460,92090,930],{"class":929},[460,92092,2174],{"class":466},[460,92094,8331],{"class":1353},[460,92096,17674],{"class":887},[460,92098,92067],{"class":900},[460,92100,17043],{"class":887},[460,92102,8331],{"class":1353},[460,92104,6000],{"class":466},[460,92106,91361],{"class":929},[460,92108,2174],{"class":466},[460,92110,92111],{"class":1353},"'b'",[460,92113,6023],{"class":466},[460,92115,91371],{"class":942},[460,92117,92118,92120,92122,92124,92126,92128,92130,92132,92134,92136,92138,92140,92143,92145],{"class":462,"line":2428},[460,92119,9381],{"class":466},[460,92121,930],{"class":929},[460,92123,2174],{"class":466},[460,92125,8331],{"class":1353},[460,92127,17674],{"class":887},[460,92129,92067],{"class":900},[460,92131,17043],{"class":887},[460,92133,8331],{"class":1353},[460,92135,6000],{"class":466},[460,92137,91361],{"class":929},[460,92139,2174],{"class":466},[460,92141,92142],{"class":1353},"'c'",[460,92144,6023],{"class":466},[460,92146,91371],{"class":942},[460,92148,92149,92151,92153,92155,92157,92159,92161,92163,92165,92167,92170,92172],{"class":462,"line":2440},[460,92150,9381],{"class":466},[460,92152,930],{"class":929},[460,92154,2174],{"class":466},[460,92156,8331],{"class":1353},[460,92158,92067],{"class":900},[460,92160,8331],{"class":1353},[460,92162,6000],{"class":466},[460,92164,91361],{"class":929},[460,92166,2174],{"class":466},[460,92168,92169],{"class":1353},"'ab'",[460,92171,6023],{"class":466},[460,92173,91371],{"class":942},[460,92175,92176,92178,92180,92182,92184,92186,92188,92190,92192,92194,92196,92198,92200,92202],{"class":462,"line":2445},[460,92177,9381],{"class":466},[460,92179,930],{"class":929},[460,92181,2174],{"class":466},[460,92183,8331],{"class":1353},[460,92185,17674],{"class":887},[460,92187,92067],{"class":900},[460,92189,17043],{"class":887},[460,92191,8331],{"class":1353},[460,92193,6000],{"class":466},[460,92195,91361],{"class":929},[460,92197,2174],{"class":466},[460,92199,92169],{"class":1353},[460,92201,6023],{"class":466},[460,92203,92204],{"class":942},"\u002F\u002Ffalse     不加精确匹配，就是true\n",[460,92206,92207,92209,92211,92213,92215,92217,92219,92222,92224,92226,92228,92230,92232,92234],{"class":462,"line":2450},[460,92208,9381],{"class":466},[460,92210,930],{"class":929},[460,92212,2174],{"class":466},[460,92214,8331],{"class":1353},[460,92216,17674],{"class":887},[460,92218,92067],{"class":900},[460,92220,92221],{"class":887},"{2}$",[460,92223,8331],{"class":1353},[460,92225,6000],{"class":466},[460,92227,91361],{"class":929},[460,92229,2174],{"class":466},[460,92231,92169],{"class":1353},[460,92233,6023],{"class":466},[460,92235,92236],{"class":942},"\u002F\u002Ftrue   可以选两个\n",[460,92238,92239,92241,92243,92245,92247,92249,92252,92254,92256,92258,92260,92262,92265,92267],{"class":462,"line":2460},[460,92240,9381],{"class":466},[460,92242,930],{"class":929},[460,92244,2174],{"class":466},[460,92246,8331],{"class":1353},[460,92248,17674],{"class":887},[460,92250,92251],{"class":900},"[a-z]",[460,92253,17043],{"class":887},[460,92255,8331],{"class":1353},[460,92257,6000],{"class":466},[460,92259,91361],{"class":929},[460,92261,2174],{"class":466},[460,92263,92264],{"class":1353},"'p'",[460,92266,6152],{"class":466},[460,92268,92269],{"class":942},"\u002F\u002Ftrue   依然只能选一个\n",[460,92271,92272,92274,92276,92278,92280,92282,92285,92287,92289,92291,92293,92295,92297,92299],{"class":462,"line":2473},[460,92273,9381],{"class":466},[460,92275,930],{"class":929},[460,92277,2174],{"class":466},[460,92279,8331],{"class":1353},[460,92281,17674],{"class":887},[460,92283,92284],{"class":900},"[A-Z]",[460,92286,17043],{"class":887},[460,92288,8331],{"class":1353},[460,92290,6000],{"class":466},[460,92292,91361],{"class":929},[460,92294,2174],{"class":466},[460,92296,92264],{"class":1353},[460,92298,6152],{"class":466},[460,92300,91493],{"class":942},[460,92302,92303,92305,92307,92309,92311,92313,92315,92317,92319,92321,92323,92325,92328,92330],{"class":462,"line":2487},[460,92304,9381],{"class":466},[460,92306,930],{"class":929},[460,92308,2174],{"class":466},[460,92310,8331],{"class":1353},[460,92312,17674],{"class":887},[460,92314,92284],{"class":900},[460,92316,17043],{"class":887},[460,92318,8331],{"class":1353},[460,92320,6000],{"class":466},[460,92322,91361],{"class":929},[460,92324,2174],{"class":466},[460,92326,92327],{"class":1353},"'P'",[460,92329,6152],{"class":466},[460,92331,91371],{"class":942},[460,92333,92334,92336,92338,92340,92342,92344,92347,92349,92351,92353,92355,92357,92360,92362],{"class":462,"line":2492},[460,92335,9381],{"class":466},[460,92337,930],{"class":929},[460,92339,2174],{"class":466},[460,92341,8331],{"class":1353},[460,92343,17674],{"class":887},[460,92345,92346],{"class":900},"[0-9]",[460,92348,17043],{"class":887},[460,92350,8331],{"class":1353},[460,92352,6000],{"class":466},[460,92354,91361],{"class":929},[460,92356,2174],{"class":466},[460,92358,92359],{"class":1353},"'0'",[460,92361,6152],{"class":466},[460,92363,91371],{"class":942},[460,92365,92366,92368,92370,92372,92374,92376,92379,92381,92383,92385,92387,92389,92391,92393],{"class":462,"line":2497},[460,92367,9381],{"class":466},[460,92369,930],{"class":929},[460,92371,2174],{"class":466},[460,92373,8331],{"class":1353},[460,92375,17674],{"class":887},[460,92377,92378],{"class":900},"[a-zA-Z0-9]",[460,92380,17043],{"class":887},[460,92382,8331],{"class":1353},[460,92384,6000],{"class":466},[460,92386,91361],{"class":929},[460,92388,2174],{"class":466},[460,92390,92264],{"class":1353},[460,92392,6023],{"class":466},[460,92394,91371],{"class":942},[460,92396,92397,92399,92401],{"class":462,"line":2505},[460,92398,581],{"class":466},[460,92400,225],{"class":470},[460,92402,473],{"class":466},[460,92404,92405,92407,92409],{"class":462,"line":2516},[460,92406,1776],{"class":466},[460,92408,1721],{"class":470},[460,92410,473],{"class":466},[460,92412,92413],{"class":462,"line":2529},[460,92414,522],{"emptyLinePlaceholder":521},[460,92416,92417,92419,92421],{"class":462,"line":2542},[460,92418,1776],{"class":466},[460,92420,704],{"class":470},[460,92422,473],{"class":466},[115,92424,92426],{"id":92425},"_3624-修饰符","3.6.2.4 修饰符",[14,92428,92429],{},[30,92430],{"alt":32,"src":92431},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-210.png",[14,92433,92434],{},"replace是个方法，使用的时候一定不要忘记括号()",[14,92436,92437],{},[30,92438],{"alt":32,"src":92439},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-09-02-JS%E5%AD%A6%E4%B9%A0-211.png",[451,92441,92443],{"className":702,"code":92442,"language":704,"meta":32,"style":32},"\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  \u003Ctitle>Document\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\u003Cbody>\n  \u003Cscript>\n    console.log(\u002F^java$\u002F.test('java')) \u002F\u002Ftrue\n    console.log(\u002F^java$\u002F.test('Java')) \u002F\u002Ffalse\n    \u002F\u002F 不区分大小写、\n    console.log(\u002F^java$\u002Fi.test('Java')) \u002F\u002Ftrue\n    const str = 'java是一门编程语言，学完java工资很高'\n    const result = str.replace(\u002Fjava\u002Fig, '前端')\n    console.log(result)\n  \u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[457,92444,92445,92455,92469,92477,92491,92511,92523,92531,92539,92547,92578,92609,92614,92646,92657,92690,92699,92707,92715],{"__ignoreMap":32},[460,92446,92447,92449,92451,92453],{"class":462,"line":463},[460,92448,1845],{"class":466},[460,92450,1848],{"class":470},[460,92452,1851],{"class":929},[460,92454,473],{"class":466},[460,92456,92457,92459,92461,92463,92465,92467],{"class":462,"line":476},[460,92458,781],{"class":466},[460,92460,704],{"class":470},[460,92462,1862],{"class":929},[460,92464,894],{"class":466},[460,92466,1867],{"class":1353},[460,92468,473],{"class":466},[460,92470,92471,92473,92475],{"class":462,"line":482},[460,92472,781],{"class":466},[460,92474,1880],{"class":470},[460,92476,473],{"class":466},[460,92478,92479,92481,92483,92485,92487,92489],{"class":462,"line":488},[460,92480,467],{"class":466},[460,92482,1889],{"class":470},[460,92484,1892],{"class":929},[460,92486,894],{"class":466},[460,92488,1897],{"class":1353},[460,92490,473],{"class":466},[460,92492,92493,92495,92497,92499,92501,92503,92505,92507,92509],{"class":462,"line":494},[460,92494,467],{"class":466},[460,92496,1889],{"class":470},[460,92498,1908],{"class":929},[460,92500,894],{"class":466},[460,92502,1913],{"class":1353},[460,92504,1916],{"class":929},[460,92506,894],{"class":466},[460,92508,1921],{"class":1353},[460,92510,473],{"class":466},[460,92512,92513,92515,92517,92519,92521],{"class":462,"line":500},[460,92514,467],{"class":466},[460,92516,1930],{"class":470},[460,92518,1933],{"class":466},[460,92520,1930],{"class":470},[460,92522,473],{"class":466},[460,92524,92525,92527,92529],{"class":462,"line":506},[460,92526,1776],{"class":466},[460,92528,1880],{"class":470},[460,92530,473],{"class":466},[460,92532,92533,92535,92537],{"class":462,"line":512},[460,92534,781],{"class":466},[460,92536,1721],{"class":470},[460,92538,473],{"class":466},[460,92540,92541,92543,92545],{"class":462,"line":518},[460,92542,467],{"class":466},[460,92544,225],{"class":470},[460,92546,473],{"class":466},[460,92548,92549,92551,92553,92555,92557,92559,92561,92563,92565,92567,92569,92571,92574,92576],{"class":462,"line":525},[460,92550,9381],{"class":466},[460,92552,930],{"class":929},[460,92554,2174],{"class":466},[460,92556,8331],{"class":1353},[460,92558,17674],{"class":887},[460,92560,1328],{"class":64280},[460,92562,17043],{"class":887},[460,92564,8331],{"class":1353},[460,92566,6000],{"class":466},[460,92568,91361],{"class":929},[460,92570,2174],{"class":466},[460,92572,92573],{"class":1353},"'java'",[460,92575,91869],{"class":466},[460,92577,91371],{"class":942},[460,92579,92580,92582,92584,92586,92588,92590,92592,92594,92596,92598,92600,92602,92605,92607],{"class":462,"line":531},[460,92581,9381],{"class":466},[460,92583,930],{"class":929},[460,92585,2174],{"class":466},[460,92587,8331],{"class":1353},[460,92589,17674],{"class":887},[460,92591,1328],{"class":64280},[460,92593,17043],{"class":887},[460,92595,8331],{"class":1353},[460,92597,6000],{"class":466},[460,92599,91361],{"class":929},[460,92601,2174],{"class":466},[460,92603,92604],{"class":1353},"'Java'",[460,92606,91869],{"class":466},[460,92608,91493],{"class":942},[460,92610,92611],{"class":462,"line":537},[460,92612,92613],{"class":942},"    \u002F\u002F 不区分大小写、\n",[460,92615,92616,92618,92620,92622,92624,92626,92628,92630,92632,92634,92636,92638,92640,92642,92644],{"class":462,"line":543},[460,92617,9381],{"class":466},[460,92619,930],{"class":929},[460,92621,2174],{"class":466},[460,92623,8331],{"class":1353},[460,92625,17674],{"class":887},[460,92627,1328],{"class":64280},[460,92629,17043],{"class":887},[460,92631,8331],{"class":1353},[460,92633,17174],{"class":887},[460,92635,6000],{"class":466},[460,92637,91361],{"class":929},[460,92639,2174],{"class":466},[460,92641,92604],{"class":1353},[460,92643,91869],{"class":466},[460,92645,91371],{"class":942},[460,92647,92648,92650,92652,92654],{"class":462,"line":549},[460,92649,1340],{"class":887},[460,92651,6846],{"class":900},[460,92653,2943],{"class":887},[460,92655,92656],{"class":1353}," 'java是一门编程语言，学完java工资很高'\n",[460,92658,92659,92661,92664,92666,92669,92672,92674,92676,92678,92680,92683,92685,92688],{"class":462,"line":555},[460,92660,1340],{"class":887},[460,92662,92663],{"class":900}," result",[460,92665,2943],{"class":887},[460,92667,92668],{"class":466}," str.",[460,92670,92671],{"class":929},"replace",[460,92673,2174],{"class":466},[460,92675,8331],{"class":1353},[460,92677,1328],{"class":64280},[460,92679,8331],{"class":1353},[460,92681,92682],{"class":887},"ig",[460,92684,904],{"class":466},[460,92686,92687],{"class":1353},"'前端'",[460,92689,3754],{"class":466},[460,92691,92692,92694,92696],{"class":462,"line":560},[460,92693,9381],{"class":466},[460,92695,930],{"class":929},[460,92697,92698],{"class":466},"(result)\n",[460,92700,92701,92703,92705],{"class":462,"line":566},[460,92702,581],{"class":466},[460,92704,225],{"class":470},[460,92706,473],{"class":466},[460,92708,92709,92711,92713],{"class":462,"line":572},[460,92710,1776],{"class":466},[460,92712,1721],{"class":470},[460,92714,473],{"class":466},[460,92716,92717,92719,92721],{"class":462,"line":578},[460,92718,1776],{"class":466},[460,92720,704],{"class":470},[460,92722,473],{"class":466},[1944,92724,92725],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}html pre.shiki code .snhLl, html code.shiki .snhLl{--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold}",{"title":32,"searchDepth":476,"depth":476,"links":92727},[92728,92738,92750,92767,92774,92782],{"id":69610,"depth":476,"text":69611,"children":92729},[92730,92731,92732,92733,92734,92735,92736,92737],{"id":69614,"depth":482,"text":69615},{"id":69647,"depth":482,"text":69648},{"id":69686,"depth":482,"text":69687},{"id":69841,"depth":482,"text":69842},{"id":69889,"depth":482,"text":69890},{"id":70026,"depth":482,"text":70027},{"id":70347,"depth":482,"text":70348},{"id":73298,"depth":482,"text":73299},{"id":73326,"depth":476,"text":73327,"children":92739},[92740,92741,92742,92743,92744,92745,92746,92747,92748,92749],{"id":73330,"depth":482,"text":73331},{"id":73353,"depth":482,"text":73354},{"id":74260,"depth":482,"text":74261},{"id":74947,"depth":482,"text":74948},{"id":75227,"depth":482,"text":75228},{"id":79360,"depth":482,"text":79361},{"id":79529,"depth":482,"text":79530},{"id":79657,"depth":482,"text":79658},{"id":79682,"depth":482,"text":79683},{"id":81065,"depth":482,"text":81066},{"id":82215,"depth":476,"text":82216,"children":92751},[92752,92753,92754,92755,92756,92757,92758,92759,92760,92761,92762,92763,92764,92765,92766],{"id":82219,"depth":482,"text":82220},{"id":82873,"depth":482,"text":82874},{"id":84565,"depth":482,"text":84566},{"id":84606,"depth":482,"text":84607},{"id":84648,"depth":482,"text":84649},{"id":84662,"depth":482,"text":84663},{"id":84711,"depth":482,"text":84712},{"id":84723,"depth":482,"text":84724},{"id":84738,"depth":482,"text":84739},{"id":84774,"depth":482,"text":84775},{"id":84855,"depth":482,"text":84856},{"id":84983,"depth":482,"text":84984},{"id":84995,"depth":482,"text":84996},{"id":85014,"depth":482,"text":85015},{"id":87111,"depth":482,"text":87112},{"id":87130,"depth":476,"text":87131,"children":92768},[92769,92770,92771,92772,92773],{"id":87151,"depth":482,"text":87152},{"id":87171,"depth":482,"text":87172},{"id":87220,"depth":482,"text":87221},{"id":87345,"depth":482,"text":87346},{"id":87523,"depth":482,"text":87524},{"id":87541,"depth":476,"text":87542,"children":92775},[92776,92777,92778,92779,92780,92781],{"id":87556,"depth":482,"text":87557},{"id":87615,"depth":482,"text":87616},{"id":87639,"depth":482,"text":87640},{"id":87951,"depth":482,"text":87952},{"id":87983,"depth":482,"text":87984},{"id":88006,"depth":482,"text":88007},{"id":91060,"depth":476,"text":91061,"children":92783},[92784,92785],{"id":91094,"depth":482,"text":91095},{"id":91133,"depth":482,"text":91134},{},"\u002Fwiki\u002F2025-09-02-js\u002Fch3-web-apis",{"title":69582,"description":16682},"wiki\u002F2025-09-02-JS学习\u002Fch3-Web-APIs","fsyWKB50sKQwy-LTDR6QPET-tuocjiLU1OtngUya7UQ",{"id":4,"title":5,"body":92792,"description":16682,"extension":16683,"meta":107314,"navigation":521,"path":16685,"seo":107315,"stem":16687,"__hash__":16688},{"type":7,"value":92793,"toc":107250},[92794,92796,92798,92800,92802,92806,92810,92818,92820,92824,92826,92828,92830,92834,92836,92838,92840,92844,92846,92848,92850,92856,92858,92860,92864,92868,92870,92872,92876,92880,92882,92884,92888,92890,92894,92896,92900,92902,92906,92910,92912,92914,92916,92920,92924,92926,92928,92930,92932,92934,92936,92938,92940,92944,92948,92950,92952,92956,92960,92962,92964,92966,92968,92970,92972,92974,92976,92978,92982,92984,92988,92992,92994,92996,92998,93000,93002,93004,93006,93008,93010,93012,93014,93016,93018,93022,93024,93026,93028,93030,93032,93034,93036,93038,93040,93042,93044,93046,93048,93050,93054,93058,93062,93064,93066,93068,93072,93074,93076,93084,93088,93176,93178,93180,93182,93184,93186,93188,93190,93192,93194,93196,93198,93200,93202,93204,93206,93208,93210,93212,93214,93216,93218,93220,93222,93224,93226,93228,93230,93232,93234,93236,93238,93240,93242,93244,93246,93248,93250,93254,93354,93356,93358,93362,93364,93366,93368,93370,93374,93376,93378,93380,93382,93386,93388,93478,93538,93608,93610,93612,93614,93616,93618,93628,93652,93654,93656,93658,93660,93662,93664,93666,93668,93670,93672,93674,93676,93678,93682,93684,93688,93752,93754,93916,93918,93920,93922,93924,93926,93928,93930,93932,93934,93936,93938,93940,93942,93944,93946,93950,93952,93954,93956,93958,93960,93964,93966,93968,93970,93972,93974,93978,93980,93982,93984,93986,93988,93990,93992,93994,93998,94000,94002,94004,94048,94052,94054,94058,94060,94124,94126,94134,94136,94140,94142,94144,94150,94152,94164,95840,95842,95844,95848,95850,95852,95856,95860,95994,95998,96002,96004,96006,96008,96010,96012,96014,96016,96018,96020,96022,96024,96026,96030,96032,96034,96042,96044,96048,96050,96052,96054,96056,96058,96060,96062,96064,96066,96068,96070,96082,96084,96086,96088,96092,96096,96098,96100,96102,96104,96106,96114,96116,96118,96120,96124,96128,96188,96190,96192,96194,96198,96202,96282,96286,96288,96290,96292,96304,96306,96310,96312,96316,96412,96414,96422,96562,96564,96568,96664,96666,96670,96674,96678,96680,96685,96701,96723,96867,96871,96873,96877,96882,96884,96886,96888,96938,96990,97042,97044,97048,97350,97352,97354,97356,97360,97464,97468,97470,97474,97476,97540,97542,97544,97546,97548,97574,97840,97842,97854,97912,97940,97942,97944,97948,97964,97970,97976,97980,97992,97996,98003,98005,98131,98133,98189,98191,98195,98429,98431,98435,98437,98439,98441,98443,98445,98449,99963,99965,99967,99971,99973,99977,99979,99981,99985,99987,99995,99997,100001,100003,100007,100011,100013,100017,100019,100021,100023,100027,100031,100033,100035,100037,100145,100149,100241,100243,100245,100247,100251,100399,100403,100405,100407,100411,100471,100475,100477,100593,100595,100599,100601,100603,100683,100687,100689,100691,100693,100695,100699,100703,100705,100709,100713,100717,100719,100721,100723,100727,100731,100735,100739,100791,100793,100795,100799,100801,100803,100807,100811,100815,100817,100821,100831,100835,100837,100841,100843,100847,100851,100855,100859,100863,100867,100871,100875,100877,100879,100883,100885,100887,100889,100893,100897,100899,100901,100903,100905,100907,100911,100915,100919,100923,100925,100929,100933,100985,100989,100991,100995,102157,102161,102163,102165,102169,102171,102175,102179,102181,102185,102187,102191,102193,102195,102197,102205,102207,102211,102215,102267,102271,102275,102279,102485,102489,102493,102497,102499,102501,102503,102505,102911,102915,102919,102924,102926,102928,103186,103190,103192,103450,103454,103456,103460,103464,103468,103472,103778,103780,103784,103788,103790,103792,103794,103798,103802,103806,103810,103814,103818,103820,103822,103826,103830,103832,103900,103904,103908,103912,103914,103916,104260,104264,104268,104272,104274,104276,104368,104372,104376,104468,104472,104476,104478,104480,104484,104488,104490,104494,104496,104498,104876,104880,104882,104884,104886,104888,105384,105386,105390,105394,105398,105400,105404,105406,105408,105786,105790,105792,105794,105796,105798,106292,106294,106350,106352,106354,106356,106358,106360,106364,106368,107248],[10,92795,5],{"id":12},[14,92797,16],{},[18,92799,21],{"id":20},[23,92801,26],{"id":25},[14,92803,92804],{},[30,92805],{"alt":32,"src":33},[14,92807,92808],{},[30,92809],{"alt":32,"src":38},[40,92811,92812,92814,92816],{},[43,92813,45],{},[43,92815,48],{},[43,92817,51],{},[23,92819,55],{"id":54},[14,92821,92822],{},[30,92823],{"alt":32,"src":60},[14,92825,63],{},[23,92827,67],{"id":66},[14,92829,70],{},[14,92831,92832],{},[30,92833],{"alt":32,"src":75},[18,92835,79],{"id":78},[23,92837,83],{"id":82},[14,92839,86],{},[14,92841,92842],{},[30,92843],{"alt":32,"src":91},[14,92845,94],{},[23,92847,98],{"id":97},[14,92849,101],{},[103,92851,92852,92854],{},[43,92853,107],{},[43,92855,110],{},[14,92857,113],{},[115,92859,118],{"id":117},[14,92861,92862],{},[30,92863],{"alt":32,"src":123},[14,92865,92866],{},[30,92867],{"alt":32,"src":128},[14,92869,131],{},[115,92871,135],{"id":134},[14,92873,92874],{},[30,92875],{"alt":32,"src":140},[14,92877,92878],{},[30,92879],{"alt":32,"src":145},[14,92881,148],{},[18,92883,152],{"id":151},[14,92885,92886],{},[30,92887],{"alt":32,"src":157},[14,92889,160],{},[14,92891,92892],{},[30,92893],{"alt":32,"src":165},[14,92895,168],{},[14,92897,92898],{},[30,92899],{"alt":32,"src":173},[14,92901,176],{},[14,92903,92904],{},[30,92905],{"alt":32,"src":181},[14,92907,92908],{},[30,92909],{"alt":32,"src":186},[14,92911,189],{},[14,92913,192],{},[18,92915,196],{"id":195},[14,92917,92918],{},[30,92919],{"alt":32,"src":201},[14,92921,92922],{},[30,92923],{"alt":32,"src":206},[14,92925,209],{},[18,92927,213],{"id":212},[23,92929,217],{"id":216},[14,92931,220],{},[14,92933,223],{},[225,92935,227],{},[23,92937,231],{"id":230},[115,92939,235],{"id":234},[14,92941,92942],{},[30,92943],{"alt":32,"src":240},[14,92945,92946],{},[30,92947],{"alt":32,"src":245},[14,92949,248],{},[115,92951,252],{"id":251},[14,92953,92954],{},[30,92955],{"alt":32,"src":257},[14,92957,92958],{},[30,92959],{"alt":32,"src":262},[14,92961,265],{},[14,92963,268],{},[14,92965,271],{},[14,92967,274],{},[14,92969,277],{},[14,92971,280],{},[14,92973,283],{},[14,92975,286],{},[14,92977,289],{},[14,92979,92980],{},[30,92981],{"alt":32,"src":294},[115,92983,298],{"id":297},[14,92985,92986],{},[30,92987],{"alt":32,"src":303},[14,92989,92990],{},[30,92991],{"alt":32,"src":308},[14,92993,311],{},[14,92995,314],{},[14,92997,317],{},[14,92999,320],{},[14,93001,323],{},[14,93003,326],{},[14,93005,329],{},[14,93007,332],{},[23,93009,336],{"id":335},[115,93011,340],{"id":339},[14,93013,343],{},[14,93015,346],{},[14,93017,349],{},[14,93019,93020],{},[30,93021],{"alt":32,"src":354},[14,93023,357],{},[14,93025,360],{},[14,93027,363],{},[14,93029,366],{},[14,93031,369],{},[14,93033,372],{},[14,93035,375],{},[14,93037,378],{},[14,93039,381],{},[14,93041,384],{},[14,93043,387],{},[14,93045,390],{},[14,93047,393],{},[14,93049,396],{},[14,93051,93052],{},[30,93053],{"alt":32,"src":401},[14,93055,93056],{},[30,93057],{"alt":32,"src":406},[14,93059,93060],{},[30,93061],{"alt":32,"src":411},[14,93063,414],{},[115,93065,418],{"id":417},[14,93067,421],{},[14,93069,93070],{},[30,93071],{"alt":32,"src":426},[115,93073,430],{"id":429},[14,93075,433],{},[103,93077,93078,93080,93082],{},[43,93079,438],{},[43,93081,441],{},[43,93083,444],{},[14,93085,93086],{},[30,93087],{"alt":32,"src":449},[451,93089,93090],{"className":453,"code":454,"language":455,"meta":32,"style":32},[457,93091,93092,93100,93104,93108,93112,93116,93120,93124,93128,93132,93136,93140,93144,93148,93152,93156,93160,93164,93168],{"__ignoreMap":32},[460,93093,93094,93096,93098],{"class":462,"line":463},[460,93095,467],{"class":466},[460,93097,225],{"class":470},[460,93099,473],{"class":466},[460,93101,93102],{"class":462,"line":476},[460,93103,479],{"class":466},[460,93105,93106],{"class":462,"line":482},[460,93107,485],{"class":466},[460,93109,93110],{"class":462,"line":488},[460,93111,491],{"class":466},[460,93113,93114],{"class":462,"line":494},[460,93115,497],{"class":466},[460,93117,93118],{"class":462,"line":500},[460,93119,503],{"class":466},[460,93121,93122],{"class":462,"line":506},[460,93123,509],{"class":466},[460,93125,93126],{"class":462,"line":512},[460,93127,515],{"class":466},[460,93129,93130],{"class":462,"line":518},[460,93131,522],{"emptyLinePlaceholder":521},[460,93133,93134],{"class":462,"line":525},[460,93135,528],{"class":466},[460,93137,93138],{"class":462,"line":531},[460,93139,534],{"class":466},[460,93141,93142],{"class":462,"line":537},[460,93143,540],{"class":466},[460,93145,93146],{"class":462,"line":543},[460,93147,546],{"class":466},[460,93149,93150],{"class":462,"line":549},[460,93151,552],{"class":466},[460,93153,93154],{"class":462,"line":555},[460,93155,509],{"class":466},[460,93157,93158],{"class":462,"line":560},[460,93159,563],{"class":466},[460,93161,93162],{"class":462,"line":566},[460,93163,569],{"class":466},[460,93165,93166],{"class":462,"line":572},[460,93167,575],{"class":466},[460,93169,93170,93172,93174],{"class":462,"line":578},[460,93171,581],{"class":466},[460,93173,225],{"class":470},[460,93175,473],{"class":466},[14,93177,588],{},[14,93179,591],{},[14,93181,594],{},[14,93183,597],{},[14,93185,600],{},[14,93187,603],{},[14,93189,606],{},[14,93191,609],{},[14,93193,612],{},[14,93195,615],{},[14,93197,618],{},[14,93199,621],{},[14,93201,624],{},[14,93203,627],{},[14,93205,606],{},[14,93207,632],{},[14,93209,635],{},[14,93211,638],{},[14,93213,641],{},[14,93215,644],{},[14,93217,647],{},[14,93219,612],{},[14,93221,652],{},[14,93223,612],{},[14,93225,612],{},[14,93227,659],{},[18,93229,663],{"id":662},[23,93231,667],{"id":666},[14,93233,670],{},[14,93235,673],{},[14,93237,676],{},[14,93239,679],{},[14,93241,682],{},[14,93243,685],{},[14,93245,688],{},[14,93247,691],{},[14,93249,694],{},[14,93251,93252],{},[30,93253],{"alt":32,"src":699},[451,93255,93256],{"className":702,"code":703,"language":704,"meta":32,"style":32},[457,93257,93258,93262,93266,93270,93274,93278,93282,93286,93290,93294,93298,93302,93306,93310,93314,93322,93330,93334,93338,93342,93346,93350],{"__ignoreMap":32},[460,93259,93260],{"class":462,"line":463},[460,93261,711],{"class":466},[460,93263,93264],{"class":462,"line":476},[460,93265,716],{"class":466},[460,93267,93268],{"class":462,"line":482},[460,93269,721],{"class":466},[460,93271,93272],{"class":462,"line":488},[460,93273,726],{"class":466},[460,93275,93276],{"class":462,"line":494},[460,93277,731],{"class":466},[460,93279,93280],{"class":462,"line":500},[460,93281,522],{"emptyLinePlaceholder":521},[460,93283,93284],{"class":462,"line":506},[460,93285,522],{"emptyLinePlaceholder":521},[460,93287,93288],{"class":462,"line":512},[460,93289,744],{"class":466},[460,93291,93292],{"class":462,"line":518},[460,93293,716],{"class":466},[460,93295,93296],{"class":462,"line":525},[460,93297,753],{"class":466},[460,93299,93300],{"class":462,"line":531},[460,93301,758],{"class":466},[460,93303,93304],{"class":462,"line":537},[460,93305,522],{"emptyLinePlaceholder":521},[460,93307,93308],{"class":462,"line":543},[460,93309,767],{"class":466},[460,93311,93312],{"class":462,"line":549},[460,93313,772],{"class":466},[460,93315,93316,93318,93320],{"class":462,"line":555},[460,93317,777],{"class":466},[460,93319,781],{"class":780},[460,93321,784],{"class":466},[460,93323,93324,93326,93328],{"class":462,"line":560},[460,93325,789],{"class":466},[460,93327,781],{"class":780},[460,93329,794],{"class":466},[460,93331,93332],{"class":462,"line":566},[460,93333,799],{"class":466},[460,93335,93336],{"class":462,"line":572},[460,93337,804],{"class":466},[460,93339,93340],{"class":462,"line":578},[460,93341,809],{"class":466},[460,93343,93344],{"class":462,"line":812},[460,93345,815],{"class":466},[460,93347,93348],{"class":462,"line":818},[460,93349,821],{"class":466},[460,93351,93352],{"class":462,"line":824},[460,93353,827],{"class":466},[14,93355,830],{},[14,93357,833],{},[14,93359,93360],{},[30,93361],{"alt":32,"src":838},[14,93363,841],{},[14,93365,844],{},[14,93367,847],{},[14,93369,850],{},[14,93371,93372],{},[30,93373],{"alt":32,"src":855},[14,93375,858],{},[14,93377,861],{},[14,93379,864],{},[14,93381,867],{},[14,93383,93384],{},[30,93385],{"alt":32,"src":872},[14,93387,875],{},[451,93389,93390],{"className":878,"code":879,"language":880,"meta":32,"style":32},[457,93391,93392,93418,93432,93446,93460],{"__ignoreMap":32},[460,93393,93394,93396,93398,93400,93402,93404,93406,93408,93410,93412,93414,93416],{"class":462,"line":463},[460,93395,888],{"class":887},[460,93397,891],{"class":466},[460,93399,894],{"class":887},[460,93401,897],{"class":466},[460,93403,901],{"class":900},[460,93405,904],{"class":466},[460,93407,907],{"class":900},[460,93409,910],{"class":466},[460,93411,913],{"class":900},[460,93413,904],{"class":466},[460,93415,918],{"class":900},[460,93417,921],{"class":466},[460,93419,93420,93422,93424,93426,93428,93430],{"class":462,"line":476},[460,93421,926],{"class":466},[460,93423,930],{"class":929},[460,93425,933],{"class":466},[460,93427,936],{"class":900},[460,93429,939],{"class":466},[460,93431,943],{"class":942},[460,93433,93434,93436,93438,93440,93442,93444],{"class":462,"line":482},[460,93435,926],{"class":466},[460,93437,930],{"class":929},[460,93439,933],{"class":466},[460,93441,901],{"class":900},[460,93443,939],{"class":466},[460,93445,958],{"class":942},[460,93447,93448,93450,93452,93454,93456,93458],{"class":462,"line":488},[460,93449,926],{"class":466},[460,93451,930],{"class":929},[460,93453,933],{"class":466},[460,93455,907],{"class":900},[460,93457,939],{"class":466},[460,93459,973],{"class":942},[460,93461,93462,93464,93466,93468,93470,93472,93474,93476],{"class":462,"line":494},[460,93463,926],{"class":466},[460,93465,930],{"class":929},[460,93467,933],{"class":466},[460,93469,907],{"class":900},[460,93471,986],{"class":466},[460,93473,936],{"class":900},[460,93475,939],{"class":466},[460,93477,993],{"class":942},[451,93479,93480],{"className":878,"code":996,"language":880,"meta":32,"style":32},[457,93481,93482,93508,93518,93528],{"__ignoreMap":32},[460,93483,93484,93486,93488,93490,93492,93494,93496,93498,93500,93502,93504,93506],{"class":462,"line":463},[460,93485,888],{"class":887},[460,93487,1005],{"class":466},[460,93489,894],{"class":887},[460,93491,897],{"class":466},[460,93493,901],{"class":900},[460,93495,904],{"class":466},[460,93497,907],{"class":900},[460,93499,910],{"class":466},[460,93501,913],{"class":900},[460,93503,904],{"class":466},[460,93505,918],{"class":900},[460,93507,921],{"class":466},[460,93509,93510,93512,93514,93516],{"class":462,"line":476},[460,93511,926],{"class":466},[460,93513,930],{"class":929},[460,93515,1034],{"class":466},[460,93517,943],{"class":942},[460,93519,93520,93522,93524,93526],{"class":462,"line":482},[460,93521,926],{"class":466},[460,93523,930],{"class":929},[460,93525,1045],{"class":466},[460,93527,958],{"class":942},[460,93529,93530,93532,93534,93536],{"class":462,"line":488},[460,93531,926],{"class":466},[460,93533,930],{"class":929},[460,93535,1056],{"class":466},[460,93537,973],{"class":942},[451,93539,93540],{"className":878,"code":1061,"language":880,"meta":32,"style":32},[457,93541,93542,93568,93578,93588,93598],{"__ignoreMap":32},[460,93543,93544,93546,93548,93550,93552,93554,93556,93558,93560,93562,93564,93566],{"class":462,"line":463},[460,93545,888],{"class":887},[460,93547,1070],{"class":466},[460,93549,894],{"class":887},[460,93551,897],{"class":466},[460,93553,901],{"class":900},[460,93555,904],{"class":466},[460,93557,907],{"class":900},[460,93559,910],{"class":466},[460,93561,913],{"class":900},[460,93563,904],{"class":466},[460,93565,918],{"class":900},[460,93567,921],{"class":466},[460,93569,93570,93572,93574,93576],{"class":462,"line":476},[460,93571,926],{"class":466},[460,93573,930],{"class":929},[460,93575,1034],{"class":466},[460,93577,943],{"class":942},[460,93579,93580,93582,93584,93586],{"class":462,"line":482},[460,93581,926],{"class":466},[460,93583,930],{"class":929},[460,93585,1045],{"class":466},[460,93587,958],{"class":942},[460,93589,93590,93592,93594,93596],{"class":462,"line":488},[460,93591,926],{"class":466},[460,93593,930],{"class":929},[460,93595,1056],{"class":466},[460,93597,993],{"class":942},[460,93599,93600,93602,93604,93606],{"class":462,"line":494},[460,93601,926],{"class":466},[460,93603,930],{"class":929},[460,93605,1129],{"class":466},[460,93607,1132],{"class":942},[23,93609,1136],{"id":1135},[14,93611,1139],{},[14,93613,1142],{},[115,93615,1146],{"id":1145},[14,93617,1149],{},[103,93619,93620,93622,93624,93626],{},[43,93621,1154],{},[43,93623,1157],{},[43,93625,1160],{},[43,93627,1163],{},[451,93629,93630],{"className":702,"code":1166,"language":704,"meta":32,"style":32},[457,93631,93632,93636,93640,93644,93648],{"__ignoreMap":32},[460,93633,93634],{"class":462,"line":463},[460,93635,1173],{"class":466},[460,93637,93638],{"class":462,"line":476},[460,93639,1178],{"class":466},[460,93641,93642],{"class":462,"line":482},[460,93643,1183],{"class":466},[460,93645,93646],{"class":462,"line":488},[460,93647,821],{"class":466},[460,93649,93650],{"class":462,"line":494},[460,93651,1192],{"class":466},[14,93653,1195],{},[14,93655,1198],{},[14,93657,1201],{},[14,93659,1204],{},[14,93661,1207],{},[14,93663,1210],{},[14,93665,1213],{},[14,93667,612],{},[14,93669,1218],{},[14,93671,1221],{},[14,93673,1224],{},[14,93675,1227],{},[115,93677,1231],{"id":1230},[14,93679,93680],{},[30,93681],{"alt":32,"src":1236},[115,93683,1240],{"id":1239},[14,93685,93686],{},[30,93687],{"alt":32,"src":1245},[451,93689,93690],{"className":453,"code":1248,"language":455,"meta":32,"style":32},[457,93691,93692,93700,93704,93708,93712,93716,93720,93724,93728,93732,93736,93740,93744],{"__ignoreMap":32},[460,93693,93694,93696,93698],{"class":462,"line":463},[460,93695,467],{"class":466},[460,93697,225],{"class":470},[460,93699,473],{"class":466},[460,93701,93702],{"class":462,"line":476},[460,93703,1263],{"class":466},[460,93705,93706],{"class":462,"line":482},[460,93707,1268],{"class":466},[460,93709,93710],{"class":462,"line":488},[460,93711,1273],{"class":466},[460,93713,93714],{"class":462,"line":494},[460,93715,1278],{"class":466},[460,93717,93718],{"class":462,"line":500},[460,93719,1283],{"class":466},[460,93721,93722],{"class":462,"line":506},[460,93723,1288],{"class":466},[460,93725,93726],{"class":462,"line":512},[460,93727,1293],{"class":466},[460,93729,93730],{"class":462,"line":518},[460,93731,1298],{"class":466},[460,93733,93734],{"class":462,"line":525},[460,93735,509],{"class":466},[460,93737,93738],{"class":462,"line":531},[460,93739,1307],{"class":466},[460,93741,93742],{"class":462,"line":537},[460,93743,1312],{"class":466},[460,93745,93746,93748,93750],{"class":462,"line":543},[460,93747,581],{"class":466},[460,93749,225],{"class":470},[460,93751,473],{"class":466},[14,93753,1323],{},[451,93755,93756],{"className":1326,"code":1327,"language":1328,"meta":32,"style":32},[457,93757,93758,93762,93772,93782,93792,93800,93804,93814,93824,93832,93836,93840,93850,93860,93868,93872,93876,93886,93896,93904,93908,93912],{"__ignoreMap":32},[460,93759,93760],{"class":462,"line":463},[460,93761,1335],{"class":942},[460,93763,93764,93766,93768,93770],{"class":462,"line":476},[460,93765,1340],{"class":887},[460,93767,1343],{"class":466},[460,93769,894],{"class":887},[460,93771,1348],{"class":466},[460,93773,93774,93776,93778,93780],{"class":462,"line":482},[460,93775,1354],{"class":1353},[460,93777,1357],{"class":887},[460,93779,1360],{"class":900},[460,93781,1363],{"class":466},[460,93783,93784,93786,93788,93790],{"class":462,"line":488},[460,93785,1368],{"class":1353},[460,93787,1357],{"class":887},[460,93789,1373],{"class":1353},[460,93791,1363],{"class":466},[460,93793,93794,93796,93798],{"class":462,"line":494},[460,93795,1380],{"class":1353},[460,93797,1357],{"class":887},[460,93799,1385],{"class":466},[460,93801,93802],{"class":462,"line":500},[460,93803,1390],{"class":466},[460,93805,93806,93808,93810,93812],{"class":462,"line":506},[460,93807,1395],{"class":1353},[460,93809,1357],{"class":887},[460,93811,1400],{"class":900},[460,93813,1363],{"class":466},[460,93815,93816,93818,93820,93822],{"class":462,"line":512},[460,93817,1407],{"class":1353},[460,93819,1357],{"class":887},[460,93821,1412],{"class":1353},[460,93823,1363],{"class":466},[460,93825,93826,93828,93830],{"class":462,"line":518},[460,93827,1419],{"class":1353},[460,93829,1357],{"class":887},[460,93831,1424],{"class":900},[460,93833,93834],{"class":462,"line":525},[460,93835,1429],{"class":466},[460,93837,93838],{"class":462,"line":531},[460,93839,1390],{"class":466},[460,93841,93842,93844,93846,93848],{"class":462,"line":537},[460,93843,1395],{"class":1353},[460,93845,1357],{"class":887},[460,93847,1442],{"class":900},[460,93849,1363],{"class":466},[460,93851,93852,93854,93856,93858],{"class":462,"line":543},[460,93853,1407],{"class":1353},[460,93855,1357],{"class":887},[460,93857,1453],{"class":1353},[460,93859,1363],{"class":466},[460,93861,93862,93864,93866],{"class":462,"line":549},[460,93863,1419],{"class":1353},[460,93865,1357],{"class":887},[460,93867,1464],{"class":900},[460,93869,93870],{"class":462,"line":555},[460,93871,1429],{"class":466},[460,93873,93874],{"class":462,"line":560},[460,93875,1390],{"class":466},[460,93877,93878,93880,93882,93884],{"class":462,"line":566},[460,93879,1395],{"class":1353},[460,93881,1357],{"class":887},[460,93883,1481],{"class":900},[460,93885,1363],{"class":466},[460,93887,93888,93890,93892,93894],{"class":462,"line":572},[460,93889,1407],{"class":1353},[460,93891,1357],{"class":887},[460,93893,1492],{"class":1353},[460,93895,1363],{"class":466},[460,93897,93898,93900,93902],{"class":462,"line":578},[460,93899,1419],{"class":1353},[460,93901,1357],{"class":887},[460,93903,1503],{"class":900},[460,93905,93906],{"class":462,"line":812},[460,93907,1429],{"class":466},[460,93909,93910],{"class":462,"line":818},[460,93911,1512],{"class":466},[460,93913,93914],{"class":462,"line":824},[460,93915,509],{"class":466},[14,93917,1519],{},[14,93919,1522],{},[14,93921,1525],{},[14,93923,1528],{},[14,93925,1531],{},[14,93927,612],{},[14,93929,1536],{},[14,93931,1539],{},[14,93933,1542],{},[14,93935,1545],{},[14,93937,1548],{},[14,93939,1551],{},[14,93941,612],{},[23,93943,1557],{"id":1556},[14,93945,1560],{},[103,93947,93948],{},[43,93949,1565],{},[14,93951,1568],{},[14,93953,1571],{},[14,93955,1574],{},[14,93957,1577],{},[14,93959,1580],{},[14,93961,93962],{},[30,93963],{"alt":32,"src":1585},[14,93965,1588],{},[14,93967,1591],{},[14,93969,1594],{},[14,93971,1597],{},[14,93973,1580],{},[14,93975,93976],{},[30,93977],{"alt":32,"src":1604},[14,93979,1607],{},[14,93981,1610],{},[14,93983,1597],{},[14,93985,1580],{},[14,93987,1617],{},[18,93989,1621],{"id":1620},[14,93991,1624],{},[14,93993,1627],{},[14,93995,93996],{},[30,93997],{"alt":32,"src":1632},[14,93999,1635],{},[14,94001,1638],{},[14,94003,1641],{},[451,94005,94006],{"className":453,"code":1644,"language":455,"meta":32,"style":32},[457,94007,94008,94016,94020,94024,94028,94032,94036,94040],{"__ignoreMap":32},[460,94009,94010,94012,94014],{"class":462,"line":463},[460,94011,467],{"class":466},[460,94013,225],{"class":470},[460,94015,473],{"class":466},[460,94017,94018],{"class":462,"line":476},[460,94019,1659],{"class":466},[460,94021,94022],{"class":462,"line":482},[460,94023,1664],{"class":466},[460,94025,94026],{"class":462,"line":488},[460,94027,1669],{"class":466},[460,94029,94030],{"class":462,"line":494},[460,94031,1674],{"class":466},[460,94033,94034],{"class":462,"line":500},[460,94035,1679],{"class":466},[460,94037,94038],{"class":462,"line":506},[460,94039,1684],{"class":466},[460,94041,94042,94044,94046],{"class":462,"line":512},[460,94043,581],{"class":466},[460,94045,225],{"class":470},[460,94047,473],{"class":466},[14,94049,94050],{},[30,94051],{"alt":32,"src":1697},[18,94053,1701],{"id":1700},[14,94055,94056],{},[30,94057],{"alt":32,"src":1706},[14,94059,1709],{},[451,94061,94062],{"className":453,"code":1712,"language":455,"meta":32,"style":32},[457,94063,94064,94072,94080,94084,94088,94092,94096,94100,94104,94108,94116],{"__ignoreMap":32},[460,94065,94066,94068,94070],{"class":462,"line":463},[460,94067,781],{"class":466},[460,94069,1721],{"class":470},[460,94071,473],{"class":466},[460,94073,94074,94076,94078],{"class":462,"line":476},[460,94075,467],{"class":466},[460,94077,225],{"class":470},[460,94079,473],{"class":466},[460,94081,94082],{"class":462,"line":482},[460,94083,1736],{"class":466},[460,94085,94086],{"class":462,"line":488},[460,94087,1741],{"class":466},[460,94089,94090],{"class":462,"line":494},[460,94091,1669],{"class":466},[460,94093,94094],{"class":462,"line":500},[460,94095,1674],{"class":466},[460,94097,94098],{"class":462,"line":506},[460,94099,1754],{"class":466},[460,94101,94102],{"class":462,"line":512},[460,94103,1679],{"class":466},[460,94105,94106],{"class":462,"line":518},[460,94107,1763],{"class":466},[460,94109,94110,94112,94114],{"class":462,"line":525},[460,94111,581],{"class":466},[460,94113,225],{"class":470},[460,94115,473],{"class":466},[460,94117,94118,94120,94122],{"class":462,"line":531},[460,94119,1776],{"class":466},[460,94121,1721],{"class":470},[460,94123,473],{"class":466},[14,94125,1783],{},[451,94127,94128],{"className":702,"code":1786,"language":704,"meta":32,"style":32},[457,94129,94130],{"__ignoreMap":32},[460,94131,94132],{"class":462,"line":463},[460,94133,1786],{"class":466},[18,94135,1796],{"id":1795},[14,94137,94138],{},[30,94139],{"alt":32,"src":1801},[14,94141,1804],{},[14,94143,1807],{},[40,94145,94146,94148],{},[43,94147,1812],{},[43,94149,1815],{},[14,94151,1818],{},[40,94153,94154,94156,94158,94160,94162],{},[43,94155,1823],{},[43,94157,1826],{},[43,94159,1829],{},[43,94161,1832],{},[43,94163,1835],{},[451,94165,94166],{"className":702,"code":1838,"language":704,"meta":32,"style":32},[457,94167,94168,94178,94192,94196,94204,94218,94238,94250,94258,94264,94274,94284,94294,94298,94302,94308,94320,94332,94342,94352,94356,94360,94366,94378,94390,94406,94422,94434,94438,94442,94452,94462,94466,94470,94476,94514,94538,94548,94552,94556,94564,94576,94580,94584,94592,94604,94616,94626,94630,94634,94642,94654,94664,94668,94672,94680,94690,94702,94706,94710,94716,94726,94738,94750,94764,94768,94772,94780,94796,94806,94816,94826,94838,94842,94846,94856,94866,94876,94880,94888,94896,94900,94908,94922,94946,94970,94994,95012,95020,95034,95038,95042,95046,95050,95054,95062,95070,95074,95084,95088,95096,95104,95112,95120,95124,95128,95136,95144,95152,95160,95164,95168,95176,95184,95192,95200,95204,95208,95216,95224,95232,95240,95244,95248,95256,95264,95272,95280,95284,95288,95296,95304,95312,95320,95324,95328,95336,95344,95352,95360,95364,95368,95376,95384,95392,95400,95404,95408,95412,95416,95428,95432,95442,95446,95460,95482,95490,95494,95502,95510,95518,95522,95526,95530,95534,95550,95554,95558,95564,95568,95594,95598,95616,95620,95632,95636,95640,95644,95654,95666,95698,95714,95746,95762,95786,95790,95794,95800,95804,95808,95812,95820,95828,95832],{"__ignoreMap":32},[460,94169,94170,94172,94174,94176],{"class":462,"line":463},[460,94171,1845],{"class":466},[460,94173,1848],{"class":470},[460,94175,1851],{"class":929},[460,94177,473],{"class":466},[460,94179,94180,94182,94184,94186,94188,94190],{"class":462,"line":476},[460,94181,781],{"class":466},[460,94183,704],{"class":470},[460,94185,1862],{"class":929},[460,94187,894],{"class":466},[460,94189,1867],{"class":1353},[460,94191,473],{"class":466},[460,94193,94194],{"class":462,"line":482},[460,94195,522],{"emptyLinePlaceholder":521},[460,94197,94198,94200,94202],{"class":462,"line":488},[460,94199,781],{"class":466},[460,94201,1880],{"class":470},[460,94203,473],{"class":466},[460,94205,94206,94208,94210,94212,94214,94216],{"class":462,"line":494},[460,94207,467],{"class":466},[460,94209,1889],{"class":470},[460,94211,1892],{"class":929},[460,94213,894],{"class":466},[460,94215,1897],{"class":1353},[460,94217,473],{"class":466},[460,94219,94220,94222,94224,94226,94228,94230,94232,94234,94236],{"class":462,"line":500},[460,94221,467],{"class":466},[460,94223,1889],{"class":470},[460,94225,1908],{"class":929},[460,94227,894],{"class":466},[460,94229,1913],{"class":1353},[460,94231,1916],{"class":929},[460,94233,894],{"class":466},[460,94235,1921],{"class":1353},[460,94237,473],{"class":466},[460,94239,94240,94242,94244,94246,94248],{"class":462,"line":506},[460,94241,467],{"class":466},[460,94243,1930],{"class":470},[460,94245,1933],{"class":466},[460,94247,1930],{"class":470},[460,94249,473],{"class":466},[460,94251,94252,94254,94256],{"class":462,"line":512},[460,94253,467],{"class":466},[460,94255,1944],{"class":470},[460,94257,473],{"class":466},[460,94259,94260,94262],{"class":462,"line":518},[460,94261,1951],{"class":470},[460,94263,1348],{"class":466},[460,94265,94266,94268,94270,94272],{"class":462,"line":525},[460,94267,1958],{"class":900},[460,94269,1961],{"class":466},[460,94271,936],{"class":900},[460,94273,1966],{"class":466},[460,94275,94276,94278,94280,94282],{"class":462,"line":531},[460,94277,1971],{"class":900},[460,94279,1961],{"class":466},[460,94281,936],{"class":900},[460,94283,1966],{"class":466},[460,94285,94286,94288,94290,94292],{"class":462,"line":537},[460,94287,1982],{"class":900},[460,94289,1961],{"class":466},[460,94291,1987],{"class":900},[460,94293,1966],{"class":466},[460,94295,94296],{"class":462,"line":543},[460,94297,509],{"class":466},[460,94299,94300],{"class":462,"line":549},[460,94301,522],{"emptyLinePlaceholder":521},[460,94303,94304,94306],{"class":462,"line":555},[460,94305,2002],{"class":929},[460,94307,1348],{"class":466},[460,94309,94310,94312,94314,94316,94318],{"class":462,"line":560},[460,94311,2009],{"class":900},[460,94313,1961],{"class":466},[460,94315,2014],{"class":900},[460,94317,2017],{"class":887},[460,94319,1966],{"class":466},[460,94321,94322,94324,94326,94328,94330],{"class":462,"line":566},[460,94323,1971],{"class":900},[460,94325,1961],{"class":466},[460,94327,936],{"class":900},[460,94329,2030],{"class":900},[460,94331,1966],{"class":466},[460,94333,94334,94336,94338,94340],{"class":462,"line":572},[460,94335,2037],{"class":900},[460,94337,1961],{"class":466},[460,94339,2042],{"class":900},[460,94341,1966],{"class":466},[460,94343,94344,94346,94348,94350],{"class":462,"line":578},[460,94345,2049],{"class":900},[460,94347,1961],{"class":466},[460,94349,2054],{"class":900},[460,94351,1966],{"class":466},[460,94353,94354],{"class":462,"line":812},[460,94355,509],{"class":466},[460,94357,94358],{"class":462,"line":818},[460,94359,522],{"emptyLinePlaceholder":521},[460,94361,94362,94364],{"class":462,"line":824},[460,94363,2069],{"class":929},[460,94365,1348],{"class":466},[460,94367,94368,94370,94372,94374,94376],{"class":462,"line":2074},[460,94369,2009],{"class":900},[460,94371,1961],{"class":466},[460,94373,2081],{"class":900},[460,94375,2017],{"class":887},[460,94377,1966],{"class":466},[460,94379,94380,94382,94384,94386,94388],{"class":462,"line":2088},[460,94381,2091],{"class":900},[460,94383,1961],{"class":466},[460,94385,2096],{"class":900},[460,94387,2017],{"class":887},[460,94389,1966],{"class":466},[460,94391,94392,94394,94396,94398,94400,94402,94404],{"class":462,"line":2103},[460,94393,1958],{"class":900},[460,94395,1961],{"class":466},[460,94397,2110],{"class":900},[460,94399,2017],{"class":887},[460,94401,2115],{"class":900},[460,94403,2017],{"class":887},[460,94405,1966],{"class":466},[460,94407,94408,94410,94412,94414,94416,94418,94420],{"class":462,"line":2122},[460,94409,2125],{"class":900},[460,94411,1961],{"class":466},[460,94413,2130],{"class":900},[460,94415,2133],{"class":900},[460,94417,2136],{"class":900},[460,94419,2139],{"class":887},[460,94421,1966],{"class":466},[460,94423,94424,94426,94428,94430,94432],{"class":462,"line":2144},[460,94425,2147],{"class":900},[460,94427,1961],{"class":466},[460,94429,2110],{"class":900},[460,94431,2017],{"class":887},[460,94433,1966],{"class":466},[460,94435,94436],{"class":462,"line":2158},[460,94437,509],{"class":466},[460,94439,94440],{"class":462,"line":2163},[460,94441,522],{"emptyLinePlaceholder":521},[460,94443,94444,94446,94448,94450],{"class":462,"line":2168},[460,94445,2171],{"class":929},[460,94447,2174],{"class":466},[460,94449,2177],{"class":900},[460,94451,2180],{"class":466},[460,94453,94454,94456,94458,94460],{"class":462,"line":2183},[460,94455,2091],{"class":900},[460,94457,1961],{"class":466},[460,94459,936],{"class":900},[460,94461,1966],{"class":466},[460,94463,94464],{"class":462,"line":2194},[460,94465,509],{"class":466},[460,94467,94468],{"class":462,"line":2199},[460,94469,522],{"emptyLinePlaceholder":521},[460,94471,94472,94474],{"class":462,"line":2204},[460,94473,2207],{"class":929},[460,94475,1348],{"class":466},[460,94477,94478,94480,94482,94484,94486,94488,94490,94492,94494,94496,94498,94500,94502,94504,94506,94508,94510,94512],{"class":462,"line":2212},[460,94479,2215],{"class":900},[460,94481,1961],{"class":466},[460,94483,936],{"class":900},[460,94485,2017],{"class":887},[460,94487,2224],{"class":900},[460,94489,2017],{"class":887},[460,94491,2229],{"class":900},[460,94493,2017],{"class":887},[460,94495,2234],{"class":900},[460,94497,2174],{"class":466},[460,94499,936],{"class":900},[460,94501,904],{"class":466},[460,94503,936],{"class":900},[460,94505,904],{"class":466},[460,94507,936],{"class":900},[460,94509,904],{"class":466},[460,94511,2251],{"class":900},[460,94513,2254],{"class":466},[460,94515,94516,94518,94520,94522,94524,94526,94528,94530,94532,94534,94536],{"class":462,"line":2257},[460,94517,2260],{"class":900},[460,94519,1961],{"class":466},[460,94521,2265],{"class":900},[460,94523,2174],{"class":466},[460,94525,936],{"class":900},[460,94527,904],{"class":466},[460,94529,2274],{"class":900},[460,94531,2017],{"class":887},[460,94533,904],{"class":466},[460,94535,936],{"class":900},[460,94537,2254],{"class":466},[460,94539,94540,94542,94544,94546],{"class":462,"line":2285},[460,94541,2288],{"class":900},[460,94543,1961],{"class":466},[460,94545,2293],{"class":900},[460,94547,1966],{"class":466},[460,94549,94550],{"class":462,"line":2298},[460,94551,509],{"class":466},[460,94553,94554],{"class":462,"line":2303},[460,94555,522],{"emptyLinePlaceholder":521},[460,94557,94558,94560,94562],{"class":462,"line":2308},[460,94559,2069],{"class":929},[460,94561,2313],{"class":470},[460,94563,1348],{"class":466},[460,94565,94566,94568,94570,94572,94574],{"class":462,"line":2318},[460,94567,2009],{"class":900},[460,94569,1961],{"class":466},[460,94571,2325],{"class":900},[460,94573,2328],{"class":887},[460,94575,1966],{"class":466},[460,94577,94578],{"class":462,"line":2333},[460,94579,509],{"class":466},[460,94581,94582],{"class":462,"line":2338},[460,94583,522],{"emptyLinePlaceholder":521},[460,94585,94586,94588,94590],{"class":462,"line":2343},[460,94587,2069],{"class":929},[460,94589,2348],{"class":929},[460,94591,1348],{"class":466},[460,94593,94594,94596,94598,94600,94602],{"class":462,"line":2353},[460,94595,2356],{"class":900},[460,94597,1961],{"class":466},[460,94599,2361],{"class":900},[460,94601,2017],{"class":887},[460,94603,1966],{"class":466},[460,94605,94606,94608,94610,94612,94614],{"class":462,"line":2368},[460,94607,2147],{"class":900},[460,94609,1961],{"class":466},[460,94611,2096],{"class":900},[460,94613,2017],{"class":887},[460,94615,1966],{"class":466},[460,94617,94618,94620,94622,94624],{"class":462,"line":2381},[460,94619,2384],{"class":900},[460,94621,1961],{"class":466},[460,94623,2389],{"class":900},[460,94625,1966],{"class":466},[460,94627,94628],{"class":462,"line":2394},[460,94629,509],{"class":466},[460,94631,94632],{"class":462,"line":2399},[460,94633,522],{"emptyLinePlaceholder":521},[460,94635,94636,94638,94640],{"class":462,"line":2404},[460,94637,2069],{"class":929},[460,94639,2409],{"class":929},[460,94641,1348],{"class":466},[460,94643,94644,94646,94648,94650,94652],{"class":462,"line":2414},[460,94645,2356],{"class":900},[460,94647,1961],{"class":466},[460,94649,2421],{"class":900},[460,94651,2017],{"class":887},[460,94653,1966],{"class":466},[460,94655,94656,94658,94660,94662],{"class":462,"line":2428},[460,94657,2384],{"class":900},[460,94659,1961],{"class":466},[460,94661,2435],{"class":900},[460,94663,1966],{"class":466},[460,94665,94666],{"class":462,"line":2440},[460,94667,509],{"class":466},[460,94669,94670],{"class":462,"line":2445},[460,94671,522],{"emptyLinePlaceholder":521},[460,94673,94674,94676,94678],{"class":462,"line":2450},[460,94675,2069],{"class":929},[460,94677,2455],{"class":929},[460,94679,1348],{"class":466},[460,94681,94682,94684,94686,94688],{"class":462,"line":2460},[460,94683,2463],{"class":900},[460,94685,1961],{"class":466},[460,94687,2468],{"class":1353},[460,94689,1966],{"class":466},[460,94691,94692,94694,94696,94698,94700],{"class":462,"line":2473},[460,94693,2356],{"class":900},[460,94695,1961],{"class":466},[460,94697,2480],{"class":900},[460,94699,2017],{"class":887},[460,94701,1966],{"class":466},[460,94703,94704],{"class":462,"line":2487},[460,94705,509],{"class":466},[460,94707,94708],{"class":462,"line":2492},[460,94709,522],{"emptyLinePlaceholder":521},[460,94711,94712,94714],{"class":462,"line":2497},[460,94713,2500],{"class":929},[460,94715,1348],{"class":466},[460,94717,94718,94720,94722,94724],{"class":462,"line":2505},[460,94719,2037],{"class":900},[460,94721,1961],{"class":466},[460,94723,2042],{"class":900},[460,94725,1966],{"class":466},[460,94727,94728,94730,94732,94734,94736],{"class":462,"line":2516},[460,94729,2009],{"class":900},[460,94731,1961],{"class":466},[460,94733,2014],{"class":900},[460,94735,2017],{"class":887},[460,94737,1966],{"class":466},[460,94739,94740,94742,94744,94746,94748],{"class":462,"line":2529},[460,94741,1971],{"class":900},[460,94743,1961],{"class":466},[460,94745,936],{"class":900},[460,94747,2030],{"class":900},[460,94749,1966],{"class":466},[460,94751,94752,94754,94756,94758,94760,94762],{"class":462,"line":2542},[460,94753,1958],{"class":900},[460,94755,1961],{"class":466},[460,94757,2549],{"class":900},[460,94759,2017],{"class":887},[460,94761,2115],{"class":900},[460,94763,2556],{"class":887},[460,94765,94766],{"class":462,"line":2559},[460,94767,509],{"class":466},[460,94769,94770],{"class":462,"line":2564},[460,94771,522],{"emptyLinePlaceholder":521},[460,94773,94774,94776,94778],{"class":462,"line":2569},[460,94775,2500],{"class":929},[460,94777,2574],{"class":470},[460,94779,1348],{"class":466},[460,94781,94782,94784,94786,94788,94790,94792,94794],{"class":462,"line":2579},[460,94783,1958],{"class":900},[460,94785,1961],{"class":466},[460,94787,2096],{"class":900},[460,94789,2017],{"class":887},[460,94791,2590],{"class":900},[460,94793,2017],{"class":887},[460,94795,1966],{"class":466},[460,94797,94798,94800,94802,94804],{"class":462,"line":2597},[460,94799,2600],{"class":900},[460,94801,1961],{"class":466},[460,94803,2605],{"class":900},[460,94805,1966],{"class":466},[460,94807,94808,94810,94812,94814],{"class":462,"line":2610},[460,94809,2384],{"class":900},[460,94811,1961],{"class":466},[460,94813,2389],{"class":900},[460,94815,1966],{"class":466},[460,94817,94818,94820,94822,94824],{"class":462,"line":2621},[460,94819,2624],{"class":900},[460,94821,1961],{"class":466},[460,94823,2629],{"class":900},[460,94825,1966],{"class":466},[460,94827,94828,94830,94832,94834,94836],{"class":462,"line":2634},[460,94829,2637],{"class":900},[460,94831,1961],{"class":466},[460,94833,2110],{"class":900},[460,94835,2017],{"class":887},[460,94837,1966],{"class":466},[460,94839,94840],{"class":462,"line":2648},[460,94841,509],{"class":466},[460,94843,94844],{"class":462,"line":2653},[460,94845,522],{"emptyLinePlaceholder":521},[460,94847,94848,94850,94852,94854],{"class":462,"line":2658},[460,94849,2500],{"class":929},[460,94851,2574],{"class":470},[460,94853,2665],{"class":929},[460,94855,1348],{"class":466},[460,94857,94858,94860,94862,94864],{"class":462,"line":2670},[460,94859,2673],{"class":900},[460,94861,1961],{"class":466},[460,94863,2678],{"class":900},[460,94865,1966],{"class":466},[460,94867,94868,94870,94872,94874],{"class":462,"line":2683},[460,94869,2384],{"class":900},[460,94871,1961],{"class":466},[460,94873,2690],{"class":900},[460,94875,1966],{"class":466},[460,94877,94878],{"class":462,"line":2695},[460,94879,509],{"class":466},[460,94881,94882,94884,94886],{"class":462,"line":2700},[460,94883,581],{"class":466},[460,94885,1944],{"class":470},[460,94887,473],{"class":466},[460,94889,94890,94892,94894],{"class":462,"line":2709},[460,94891,1776],{"class":466},[460,94893,1880],{"class":470},[460,94895,473],{"class":466},[460,94897,94898],{"class":462,"line":2718},[460,94899,522],{"emptyLinePlaceholder":521},[460,94901,94902,94904,94906],{"class":462,"line":2723},[460,94903,781],{"class":466},[460,94905,1721],{"class":470},[460,94907,473],{"class":466},[460,94909,94910,94912,94914,94916,94918,94920],{"class":462,"line":2732},[460,94911,467],{"class":466},[460,94913,2737],{"class":470},[460,94915,2740],{"class":929},[460,94917,894],{"class":466},[460,94919,2745],{"class":1353},[460,94921,473],{"class":466},[460,94923,94924,94926,94928,94930,94932,94934,94936,94938,94940,94942,94944],{"class":462,"line":2750},[460,94925,2753],{"class":466},[460,94927,2756],{"class":470},[460,94929,2759],{"class":929},[460,94931,894],{"class":466},[460,94933,2764],{"class":1353},[460,94935,2767],{"class":929},[460,94937,894],{"class":466},[460,94939,2772],{"class":1353},[460,94941,2775],{"class":466},[460,94943,2756],{"class":470},[460,94945,473],{"class":466},[460,94947,94948,94950,94952,94954,94956,94958,94960,94962,94964,94966,94968],{"class":462,"line":2782},[460,94949,2753],{"class":466},[460,94951,2756],{"class":470},[460,94953,2759],{"class":929},[460,94955,894],{"class":466},[460,94957,2764],{"class":1353},[460,94959,2767],{"class":929},[460,94961,894],{"class":466},[460,94963,2799],{"class":1353},[460,94965,2802],{"class":466},[460,94967,2756],{"class":470},[460,94969,473],{"class":466},[460,94971,94972,94974,94976,94978,94980,94982,94984,94986,94988,94990,94992],{"class":462,"line":2809},[460,94973,2753],{"class":466},[460,94975,2756],{"class":470},[460,94977,2759],{"class":929},[460,94979,894],{"class":466},[460,94981,2764],{"class":1353},[460,94983,2767],{"class":929},[460,94985,894],{"class":466},[460,94987,2826],{"class":1353},[460,94989,2829],{"class":466},[460,94991,2756],{"class":470},[460,94993,473],{"class":466},[460,94995,94996,94998,95000,95002,95004,95006,95008,95010],{"class":462,"line":2836},[460,94997,2753],{"class":466},[460,94999,2756],{"class":470},[460,95001,2759],{"class":929},[460,95003,894],{"class":466},[460,95005,2764],{"class":1353},[460,95007,2849],{"class":466},[460,95009,2756],{"class":470},[460,95011,473],{"class":466},[460,95013,95014,95016,95018],{"class":462,"line":2856},[460,95015,581],{"class":466},[460,95017,2737],{"class":470},[460,95019,473],{"class":466},[460,95021,95022,95024,95026,95028,95030,95032],{"class":462,"line":2865},[460,95023,467],{"class":466},[460,95025,2737],{"class":470},[460,95027,2740],{"class":929},[460,95029,894],{"class":466},[460,95031,2876],{"class":1353},[460,95033,473],{"class":466},[460,95035,95036],{"class":462,"line":2881},[460,95037,2884],{"class":942},[460,95039,95040],{"class":462,"line":2887},[460,95041,2890],{"class":942},[460,95043,95044],{"class":462,"line":2893},[460,95045,2896],{"class":942},[460,95047,95048],{"class":462,"line":2899},[460,95049,2902],{"class":942},[460,95051,95052],{"class":462,"line":2905},[460,95053,2908],{"class":942},[460,95055,95056,95058,95060],{"class":462,"line":2911},[460,95057,581],{"class":466},[460,95059,2737],{"class":470},[460,95061,473],{"class":466},[460,95063,95064,95066,95068],{"class":462,"line":2920},[460,95065,467],{"class":466},[460,95067,225],{"class":470},[460,95069,473],{"class":466},[460,95071,95072],{"class":462,"line":2929},[460,95073,2932],{"class":942},[460,95075,95076,95078,95080,95082],{"class":462,"line":2935},[460,95077,1340],{"class":887},[460,95079,2940],{"class":900},[460,95081,2943],{"class":887},[460,95083,1385],{"class":466},[460,95085,95086],{"class":462,"line":2948},[460,95087,2951],{"class":466},[460,95089,95090,95092,95094],{"class":462,"line":2954},[460,95091,2957],{"class":466},[460,95093,2960],{"class":1353},[460,95095,1363],{"class":466},[460,95097,95098,95100,95102],{"class":462,"line":2965},[460,95099,2968],{"class":466},[460,95101,2971],{"class":1353},[460,95103,1363],{"class":466},[460,95105,95106,95108,95110],{"class":462,"line":2976},[460,95107,2979],{"class":466},[460,95109,2982],{"class":1353},[460,95111,1363],{"class":466},[460,95113,95114,95116,95118],{"class":462,"line":2987},[460,95115,2990],{"class":466},[460,95117,2993],{"class":1353},[460,95119,1363],{"class":466},[460,95121,95122],{"class":462,"line":2998},[460,95123,1293],{"class":466},[460,95125,95126],{"class":462,"line":3003},[460,95127,2951],{"class":466},[460,95129,95130,95132,95134],{"class":462,"line":3008},[460,95131,2957],{"class":466},[460,95133,3013],{"class":1353},[460,95135,1363],{"class":466},[460,95137,95138,95140,95142],{"class":462,"line":3018},[460,95139,2968],{"class":466},[460,95141,3023],{"class":1353},[460,95143,1363],{"class":466},[460,95145,95146,95148,95150],{"class":462,"line":3028},[460,95147,2979],{"class":466},[460,95149,3033],{"class":1353},[460,95151,1363],{"class":466},[460,95153,95154,95156,95158],{"class":462,"line":3038},[460,95155,2990],{"class":466},[460,95157,3043],{"class":1353},[460,95159,1363],{"class":466},[460,95161,95162],{"class":462,"line":3048},[460,95163,1293],{"class":466},[460,95165,95166],{"class":462,"line":3053},[460,95167,2951],{"class":466},[460,95169,95170,95172,95174],{"class":462,"line":3058},[460,95171,2957],{"class":466},[460,95173,3063],{"class":1353},[460,95175,1363],{"class":466},[460,95177,95178,95180,95182],{"class":462,"line":3068},[460,95179,2968],{"class":466},[460,95181,3073],{"class":1353},[460,95183,1363],{"class":466},[460,95185,95186,95188,95190],{"class":462,"line":3078},[460,95187,2979],{"class":466},[460,95189,3083],{"class":1353},[460,95191,1363],{"class":466},[460,95193,95194,95196,95198],{"class":462,"line":3088},[460,95195,2990],{"class":466},[460,95197,3093],{"class":1353},[460,95199,1363],{"class":466},[460,95201,95202],{"class":462,"line":3098},[460,95203,1293],{"class":466},[460,95205,95206],{"class":462,"line":3103},[460,95207,2951],{"class":466},[460,95209,95210,95212,95214],{"class":462,"line":3108},[460,95211,2957],{"class":466},[460,95213,3113],{"class":1353},[460,95215,1363],{"class":466},[460,95217,95218,95220,95222],{"class":462,"line":3118},[460,95219,2968],{"class":466},[460,95221,3123],{"class":1353},[460,95223,1363],{"class":466},[460,95225,95226,95228,95230],{"class":462,"line":3128},[460,95227,2979],{"class":466},[460,95229,3133],{"class":1353},[460,95231,1363],{"class":466},[460,95233,95234,95236,95238],{"class":462,"line":3138},[460,95235,2990],{"class":466},[460,95237,3143],{"class":1353},[460,95239,1363],{"class":466},[460,95241,95242],{"class":462,"line":3148},[460,95243,1293],{"class":466},[460,95245,95246],{"class":462,"line":3153},[460,95247,2951],{"class":466},[460,95249,95250,95252,95254],{"class":462,"line":3158},[460,95251,2957],{"class":466},[460,95253,3163],{"class":1353},[460,95255,1363],{"class":466},[460,95257,95258,95260,95262],{"class":462,"line":3168},[460,95259,2968],{"class":466},[460,95261,3173],{"class":1353},[460,95263,1363],{"class":466},[460,95265,95266,95268,95270],{"class":462,"line":3178},[460,95267,2979],{"class":466},[460,95269,3183],{"class":1353},[460,95271,1363],{"class":466},[460,95273,95274,95276,95278],{"class":462,"line":3188},[460,95275,2990],{"class":466},[460,95277,3193],{"class":1353},[460,95279,1363],{"class":466},[460,95281,95282],{"class":462,"line":3198},[460,95283,1293],{"class":466},[460,95285,95286],{"class":462,"line":3203},[460,95287,2951],{"class":466},[460,95289,95290,95292,95294],{"class":462,"line":3208},[460,95291,2957],{"class":466},[460,95293,3213],{"class":1353},[460,95295,1363],{"class":466},[460,95297,95298,95300,95302],{"class":462,"line":3218},[460,95299,2968],{"class":466},[460,95301,3223],{"class":1353},[460,95303,1363],{"class":466},[460,95305,95306,95308,95310],{"class":462,"line":3228},[460,95307,2979],{"class":466},[460,95309,3233],{"class":1353},[460,95311,1363],{"class":466},[460,95313,95314,95316,95318],{"class":462,"line":3238},[460,95315,2990],{"class":466},[460,95317,3243],{"class":1353},[460,95319,1363],{"class":466},[460,95321,95322],{"class":462,"line":3248},[460,95323,1293],{"class":466},[460,95325,95326],{"class":462,"line":3253},[460,95327,2951],{"class":466},[460,95329,95330,95332,95334],{"class":462,"line":3258},[460,95331,2957],{"class":466},[460,95333,3263],{"class":1353},[460,95335,1363],{"class":466},[460,95337,95338,95340,95342],{"class":462,"line":3268},[460,95339,2968],{"class":466},[460,95341,3273],{"class":1353},[460,95343,1363],{"class":466},[460,95345,95346,95348,95350],{"class":462,"line":3278},[460,95347,2979],{"class":466},[460,95349,3283],{"class":1353},[460,95351,1363],{"class":466},[460,95353,95354,95356,95358],{"class":462,"line":3288},[460,95355,2990],{"class":466},[460,95357,3293],{"class":1353},[460,95359,1363],{"class":466},[460,95361,95362],{"class":462,"line":3298},[460,95363,1293],{"class":466},[460,95365,95366],{"class":462,"line":3303},[460,95367,2951],{"class":466},[460,95369,95370,95372,95374],{"class":462,"line":3308},[460,95371,2957],{"class":466},[460,95373,3313],{"class":1353},[460,95375,1363],{"class":466},[460,95377,95378,95380,95382],{"class":462,"line":3318},[460,95379,2968],{"class":466},[460,95381,3323],{"class":1353},[460,95383,1363],{"class":466},[460,95385,95386,95388,95390],{"class":462,"line":3328},[460,95387,2979],{"class":466},[460,95389,3183],{"class":1353},[460,95391,1363],{"class":466},[460,95393,95394,95396,95398],{"class":462,"line":3337},[460,95395,2990],{"class":466},[460,95397,3342],{"class":1353},[460,95399,1363],{"class":466},[460,95401,95402],{"class":462,"line":3347},[460,95403,1293],{"class":466},[460,95405,95406],{"class":462,"line":3352},[460,95407,3355],{"class":466},[460,95409,95410],{"class":462,"line":3358},[460,95411,522],{"emptyLinePlaceholder":521},[460,95413,95414],{"class":462,"line":3363},[460,95415,3366],{"class":942},[460,95417,95418,95420,95422,95424,95426],{"class":462,"line":3369},[460,95419,3372],{"class":887},[460,95421,3375],{"class":929},[460,95423,2174],{"class":466},[460,95425,3381],{"class":3380},[460,95427,2180],{"class":466},[460,95429,95430],{"class":462,"line":3386},[460,95431,3389],{"class":942},[460,95433,95434,95436,95438,95440],{"class":462,"line":3392},[460,95435,3395],{"class":887},[460,95437,3398],{"class":466},[460,95439,894],{"class":887},[460,95441,3403],{"class":1353},[460,95443,95444],{"class":462,"line":3406},[460,95445,3409],{"class":942},[460,95447,95448,95450,95452,95454,95456,95458],{"class":462,"line":3412},[460,95449,3415],{"class":466},[460,95451,3418],{"class":929},[460,95453,2174],{"class":466},[460,95455,3423],{"class":3380},[460,95457,3426],{"class":887},[460,95459,1348],{"class":466},[460,95461,95462,95464,95466,95468,95470,95472,95474,95476,95478,95480],{"class":462,"line":3431},[460,95463,3434],{"class":887},[460,95465,3437],{"class":466},[460,95467,3440],{"class":900},[460,95469,904],{"class":466},[460,95471,3445],{"class":900},[460,95473,904],{"class":466},[460,95475,3450],{"class":900},[460,95477,3453],{"class":466},[460,95479,894],{"class":887},[460,95481,3458],{"class":466},[460,95483,95484,95486,95488],{"class":462,"line":3461},[460,95485,3464],{"class":466},[460,95487,3467],{"class":887},[460,95489,3470],{"class":1353},[460,95491,95492],{"class":462,"line":3473},[460,95493,3476],{"class":1353},[460,95495,95496,95498,95500],{"class":462,"line":3479},[460,95497,3482],{"class":1353},[460,95499,3450],{"class":466},[460,95501,3487],{"class":1353},[460,95503,95504,95506,95508],{"class":462,"line":3490},[460,95505,3493],{"class":1353},[460,95507,3440],{"class":466},[460,95509,3498],{"class":1353},[460,95511,95512,95514,95516],{"class":462,"line":3501},[460,95513,3504],{"class":1353},[460,95515,3445],{"class":466},[460,95517,3498],{"class":1353},[460,95519,95520],{"class":462,"line":3511},[460,95521,3514],{"class":1353},[460,95523,95524],{"class":462,"line":3517},[460,95525,3520],{"class":1353},[460,95527,95528],{"class":462,"line":3523},[460,95529,3526],{"class":466},[460,95531,95532],{"class":462,"line":3529},[460,95533,3532],{"class":942},[460,95535,95536,95538,95540,95542,95544,95546,95548],{"class":462,"line":3535},[460,95537,3538],{"class":466},[460,95539,3541],{"class":929},[460,95541,2174],{"class":466},[460,95543,3546],{"class":1353},[460,95545,3549],{"class":466},[460,95547,894],{"class":887},[460,95549,3554],{"class":466},[460,95551,95552],{"class":462,"line":3557},[460,95553,509],{"class":466},[460,95555,95556],{"class":462,"line":3562},[460,95557,3565],{"class":942},[460,95559,95560,95562],{"class":462,"line":3568},[460,95561,3571],{"class":929},[460,95563,3574],{"class":466},[460,95565,95566],{"class":462,"line":3577},[460,95567,3580],{"class":942},[460,95569,95570,95572,95574,95576,95578,95580,95582,95584,95586,95588,95590,95592],{"class":462,"line":3583},[460,95571,3586],{"class":466},[460,95573,3541],{"class":929},[460,95575,2174],{"class":466},[460,95577,3593],{"class":1353},[460,95579,3596],{"class":466},[460,95581,3599],{"class":929},[460,95583,2174],{"class":466},[460,95585,3604],{"class":1353},[460,95587,904],{"class":466},[460,95589,3609],{"class":3380},[460,95591,3426],{"class":887},[460,95593,1348],{"class":466},[460,95595,95596],{"class":462,"line":3616},[460,95597,3619],{"class":942},[460,95599,95600,95602,95604,95606,95608,95610,95612,95614],{"class":462,"line":3622},[460,95601,3625],{"class":887},[460,95603,3437],{"class":466},[460,95605,3630],{"class":900},[460,95607,904],{"class":466},[460,95609,3635],{"class":900},[460,95611,3453],{"class":466},[460,95613,894],{"class":887},[460,95615,3642],{"class":466},[460,95617,95618],{"class":462,"line":3645},[460,95619,3648],{"class":942},[460,95621,95622,95624,95626,95628,95630],{"class":462,"line":3651},[460,95623,3654],{"class":887},[460,95625,3657],{"class":466},[460,95627,3660],{"class":887},[460,95629,3663],{"class":1353},[460,95631,2180],{"class":466},[460,95633,95634],{"class":462,"line":3668},[460,95635,3671],{"class":942},[460,95637,95638],{"class":462,"line":3674},[460,95639,3677],{"class":942},[460,95641,95642],{"class":462,"line":3680},[460,95643,3683],{"class":942},[460,95645,95646,95648,95650,95652],{"class":462,"line":3686},[460,95647,3689],{"class":887},[460,95649,891],{"class":466},[460,95651,894],{"class":887},[460,95653,3696],{"class":466},[460,95655,95656,95658,95660,95662,95664],{"class":462,"line":3699},[460,95657,3702],{"class":887},[460,95659,3705],{"class":466},[460,95661,3660],{"class":887},[460,95663,3710],{"class":1353},[460,95665,2180],{"class":466},[460,95667,95668,95670,95672,95674,95676,95678,95680,95682,95684,95686,95688,95690,95692,95694,95696],{"class":462,"line":3715},[460,95669,3718],{"class":466},[460,95671,894],{"class":887},[460,95673,3723],{"class":466},[460,95675,3726],{"class":929},[460,95677,2174],{"class":466},[460,95679,3423],{"class":3380},[460,95681,3426],{"class":887},[460,95683,3735],{"class":466},[460,95685,3738],{"class":887},[460,95687,2224],{"class":900},[460,95689,3743],{"class":887},[460,95691,3735],{"class":466},[460,95693,3748],{"class":887},[460,95695,3751],{"class":900},[460,95697,3754],{"class":466},[460,95699,95700,95702,95704,95706,95708,95710,95712],{"class":462,"line":3757},[460,95701,3760],{"class":466},[460,95703,3763],{"class":887},[460,95705,3766],{"class":887},[460,95707,3705],{"class":466},[460,95709,3660],{"class":887},[460,95711,3773],{"class":1353},[460,95713,2180],{"class":466},[460,95715,95716,95718,95720,95722,95724,95726,95728,95730,95732,95734,95736,95738,95740,95742,95744],{"class":462,"line":3778},[460,95717,3718],{"class":466},[460,95719,894],{"class":887},[460,95721,3723],{"class":466},[460,95723,3726],{"class":929},[460,95725,2174],{"class":466},[460,95727,3423],{"class":3380},[460,95729,3426],{"class":887},[460,95731,3735],{"class":466},[460,95733,3738],{"class":887},[460,95735,3751],{"class":900},[460,95737,3743],{"class":887},[460,95739,3735],{"class":466},[460,95741,3748],{"class":887},[460,95743,3807],{"class":900},[460,95745,3754],{"class":466},[460,95747,95748,95750,95752,95754,95756,95758,95760],{"class":462,"line":3812},[460,95749,3760],{"class":466},[460,95751,3763],{"class":887},[460,95753,3766],{"class":887},[460,95755,3705],{"class":466},[460,95757,3660],{"class":887},[460,95759,3825],{"class":1353},[460,95761,2180],{"class":466},[460,95763,95764,95766,95768,95770,95772,95774,95776,95778,95780,95782,95784],{"class":462,"line":3830},[460,95765,3718],{"class":466},[460,95767,894],{"class":887},[460,95769,3723],{"class":466},[460,95771,3726],{"class":929},[460,95773,2174],{"class":466},[460,95775,3423],{"class":3380},[460,95777,3426],{"class":887},[460,95779,3735],{"class":466},[460,95781,3738],{"class":887},[460,95783,3807],{"class":900},[460,95785,3754],{"class":466},[460,95787,95788],{"class":462,"line":3855},[460,95789,3858],{"class":466},[460,95791,95792],{"class":462,"line":3861},[460,95793,3864],{"class":942},[460,95795,95796,95798],{"class":462,"line":3867},[460,95797,3870],{"class":929},[460,95799,3873],{"class":466},[460,95801,95802],{"class":462,"line":3876},[460,95803,552],{"class":466},[460,95805,95806],{"class":462,"line":3881},[460,95807,522],{"emptyLinePlaceholder":521},[460,95809,95810],{"class":462,"line":3886},[460,95811,1679],{"class":466},[460,95813,95814,95816,95818],{"class":462,"line":3891},[460,95815,581],{"class":466},[460,95817,225],{"class":470},[460,95819,473],{"class":466},[460,95821,95822,95824,95826],{"class":462,"line":3900},[460,95823,1776],{"class":466},[460,95825,1721],{"class":470},[460,95827,473],{"class":466},[460,95829,95830],{"class":462,"line":3909},[460,95831,522],{"emptyLinePlaceholder":521},[460,95833,95834,95836,95838],{"class":462,"line":3914},[460,95835,1776],{"class":466},[460,95837,704],{"class":470},[460,95839,473],{"class":466},[18,95841,3924],{"id":3923},[23,95843,3928],{"id":3927},[14,95845,95846],{},[30,95847],{"alt":32,"src":3933},[14,95849,3936],{},[23,95851,3940],{"id":3939},[14,95853,95854,3947],{},[3944,95855,3946],{},[14,95857,95858,3953],{},[3944,95859,3952],{},[451,95861,95862],{"className":702,"code":3956,"language":704,"meta":32,"style":32},[457,95863,95864,95872,95876,95896,95906,95916,95926,95930,95934,95958,95962,95986],{"__ignoreMap":32},[460,95865,95866,95868,95870],{"class":462,"line":463},[460,95867,781],{"class":466},[460,95869,225],{"class":470},[460,95871,473],{"class":466},[460,95873,95874],{"class":462,"line":476},[460,95875,3971],{"class":942},[460,95877,95878,95880,95882,95884,95886,95888,95890,95892,95894],{"class":462,"line":482},[460,95879,3976],{"class":887},[460,95881,3979],{"class":929},[460,95883,2174],{"class":466},[460,95885,3440],{"class":3380},[460,95887,3986],{"class":466},[460,95889,3989],{"class":3380},[460,95891,3986],{"class":466},[460,95893,3994],{"class":3380},[460,95895,2180],{"class":466},[460,95897,95898,95900,95902,95904],{"class":462,"line":488},[460,95899,4001],{"class":900},[460,95901,4004],{"class":466},[460,95903,894],{"class":887},[460,95905,4009],{"class":466},[460,95907,95908,95910,95912,95914],{"class":462,"line":494},[460,95909,4001],{"class":900},[460,95911,4016],{"class":466},[460,95913,894],{"class":887},[460,95915,4021],{"class":466},[460,95917,95918,95920,95922,95924],{"class":462,"line":500},[460,95919,4001],{"class":900},[460,95921,4028],{"class":466},[460,95923,894],{"class":887},[460,95925,4033],{"class":466},[460,95927,95928],{"class":462,"line":506},[460,95929,821],{"class":466},[460,95931,95932],{"class":462,"line":512},[460,95933,4042],{"class":942},[460,95935,95936,95938,95940,95942,95944,95946,95948,95950,95952,95954,95956],{"class":462,"line":518},[460,95937,888],{"class":887},[460,95939,4049],{"class":900},[460,95941,4052],{"class":887},[460,95943,3979],{"class":929},[460,95945,2174],{"class":466},[460,95947,4059],{"class":1353},[460,95949,3986],{"class":466},[460,95951,4064],{"class":900},[460,95953,3986],{"class":466},[460,95955,4069],{"class":1353},[460,95957,3754],{"class":466},[460,95959,95960],{"class":462,"line":525},[460,95961,4076],{"class":942},[460,95963,95964,95966,95968,95970,95972,95974,95976,95978,95980,95982,95984],{"class":462,"line":531},[460,95965,888],{"class":887},[460,95967,4083],{"class":900},[460,95969,4052],{"class":887},[460,95971,3979],{"class":929},[460,95973,2174],{"class":466},[460,95975,4092],{"class":1353},[460,95977,3986],{"class":466},[460,95979,913],{"class":900},[460,95981,3986],{"class":466},[460,95983,4101],{"class":1353},[460,95985,3754],{"class":466},[460,95987,95988,95990,95992],{"class":462,"line":537},[460,95989,1776],{"class":466},[460,95991,225],{"class":470},[460,95993,473],{"class":466},[14,95995,95996],{},[30,95997],{"alt":32,"src":4116},[14,95999,96000],{},[30,96001],{"alt":32,"src":4121},[14,96003,4124],{},[14,96005,4127],{},[14,96007,4130],{},[14,96009,4133],{},[14,96011,4136],{},[14,96013,4139],{},[14,96015,4142],{},[14,96017,4145],{},[14,96019,4148],{},[14,96021,4151],{},[14,96023,4154],{},[14,96025,4157],{},[14,96027,96028],{},[30,96029],{"alt":32,"src":4162},[23,96031,4166],{"id":4165},[14,96033,4169],{},[103,96035,96036,96038,96040],{},[43,96037,4174],{},[43,96039,4177],{},[43,96041,4180],{},[23,96043,4184],{"id":4183},[14,96045,96046],{},[30,96047],{"alt":32,"src":4189},[14,96049,4192],{},[14,96051,4195],{},[14,96053,4198],{},[14,96055,4201],{},[14,96057,4204],{},[14,96059,612],{},[14,96061,4209],{},[14,96063,4212],{},[14,96065,4215],{},[14,96067,4218],{},[14,96069,433],{},[103,96071,96072,96074,96076,96078,96080],{},[43,96073,4225],{},[43,96075,4228],{},[43,96077,4231],{},[43,96079,4234],{},[43,96081,4237],{},[14,96083,4240],{},[23,96085,4244],{"id":4243},[14,96087,4247],{},[14,96089,96090],{},[30,96091],{"alt":32,"src":4252},[14,96093,96094],{},[30,96095],{"alt":32,"src":4257},[14,96097,4260],{},[225,96099,4263],{},[115,96101,4267],{"id":4266},[14,96103,4270],{},[14,96105,4273],{},[451,96107,96108],{"className":702,"code":4276,"language":704,"meta":32,"style":32},[457,96109,96110],{"__ignoreMap":32},[460,96111,96112],{"class":462,"line":463},[460,96113,4276],{"class":466},[14,96115,4285],{},[4287,96117,4290],{"id":4289},[14,96119,4293],{},[14,96121,96122],{},[30,96123],{"alt":32,"src":4298},[14,96125,96126],{},[30,96127],{"alt":32,"src":4303},[451,96129,96130],{"className":453,"code":4306,"language":455,"meta":32,"style":32},[457,96131,96132,96140,96148,96152,96156,96160,96164,96168,96172,96180],{"__ignoreMap":32},[460,96133,96134,96136,96138],{"class":462,"line":463},[460,96135,781],{"class":466},[460,96137,1721],{"class":470},[460,96139,473],{"class":466},[460,96141,96142,96144,96146],{"class":462,"line":476},[460,96143,467],{"class":466},[460,96145,225],{"class":470},[460,96147,473],{"class":466},[460,96149,96150],{"class":462,"line":482},[460,96151,4329],{"class":466},[460,96153,96154],{"class":462,"line":488},[460,96155,4334],{"class":466},[460,96157,96158],{"class":462,"line":494},[460,96159,4339],{"class":466},[460,96161,96162],{"class":462,"line":500},[460,96163,4344],{"class":466},[460,96165,96166],{"class":462,"line":506},[460,96167,4349],{"class":466},[460,96169,96170],{"class":462,"line":512},[460,96171,4354],{"class":466},[460,96173,96174,96176,96178],{"class":462,"line":518},[460,96175,581],{"class":466},[460,96177,225],{"class":470},[460,96179,473],{"class":466},[460,96181,96182,96184,96186],{"class":462,"line":525},[460,96183,1776],{"class":466},[460,96185,1721],{"class":470},[460,96187,473],{"class":466},[4287,96189,4374],{"id":4373},[14,96191,4377],{},[14,96193,4380],{},[14,96195,96196],{},[30,96197],{"alt":32,"src":4385},[14,96199,96200],{},[30,96201],{"alt":32,"src":4390},[451,96203,96204],{"className":453,"code":4393,"language":455,"meta":32,"style":32},[457,96205,96206,96214,96222,96226,96230,96234,96238,96242,96246,96250,96254,96258,96262,96266,96274],{"__ignoreMap":32},[460,96207,96208,96210,96212],{"class":462,"line":463},[460,96209,781],{"class":466},[460,96211,1721],{"class":470},[460,96213,473],{"class":466},[460,96215,96216,96218,96220],{"class":462,"line":476},[460,96217,467],{"class":466},[460,96219,225],{"class":470},[460,96221,473],{"class":466},[460,96223,96224],{"class":462,"line":482},[460,96225,4329],{"class":466},[460,96227,96228],{"class":462,"line":488},[460,96229,4334],{"class":466},[460,96231,96232],{"class":462,"line":494},[460,96233,4339],{"class":466},[460,96235,96236],{"class":462,"line":500},[460,96237,4344],{"class":466},[460,96239,96240],{"class":462,"line":506},[460,96241,4349],{"class":466},[460,96243,96244],{"class":462,"line":512},[460,96245,4354],{"class":466},[460,96247,96248],{"class":462,"line":518},[460,96249,4440],{"class":466},[460,96251,96252],{"class":462,"line":525},[460,96253,4445],{"class":466},[460,96255,96256],{"class":462,"line":531},[460,96257,4450],{"class":466},[460,96259,96260],{"class":462,"line":537},[460,96261,4455],{"class":466},[460,96263,96264],{"class":462,"line":543},[460,96265,4460],{"class":466},[460,96267,96268,96270,96272],{"class":462,"line":549},[460,96269,581],{"class":466},[460,96271,225],{"class":470},[460,96273,473],{"class":466},[460,96275,96276,96278,96280],{"class":462,"line":555},[460,96277,1776],{"class":466},[460,96279,1721],{"class":470},[460,96281,473],{"class":466},[14,96283,96284],{},[30,96285],{"alt":32,"src":4481},[115,96287,4485],{"id":4484},[14,96289,4488],{},[14,96291,4491],{},[451,96293,96294],{"className":702,"code":4494,"language":704,"meta":32,"style":32},[457,96295,96296,96300],{"__ignoreMap":32},[460,96297,96298],{"class":462,"line":463},[460,96299,4501],{"class":466},[460,96301,96302],{"class":462,"line":476},[460,96303,4506],{"class":466},[14,96305,4509],{},[14,96307,96308],{},[30,96309],{"alt":32,"src":4514},[4287,96311,4518],{"id":4517},[14,96313,96314],{},[30,96315],{"alt":32,"src":4523},[451,96317,96318],{"className":453,"code":4526,"language":455,"meta":32,"style":32},[457,96319,96320,96328,96336,96340,96344,96348,96352,96356,96360,96364,96368,96372,96376,96380,96384,96388,96392,96396,96404],{"__ignoreMap":32},[460,96321,96322,96324,96326],{"class":462,"line":463},[460,96323,781],{"class":466},[460,96325,1721],{"class":470},[460,96327,473],{"class":466},[460,96329,96330,96332,96334],{"class":462,"line":476},[460,96331,467],{"class":466},[460,96333,225],{"class":470},[460,96335,473],{"class":466},[460,96337,96338],{"class":462,"line":482},[460,96339,4549],{"class":466},[460,96341,96342],{"class":462,"line":488},[460,96343,4554],{"class":466},[460,96345,96346],{"class":462,"line":494},[460,96347,4559],{"class":466},[460,96349,96350],{"class":462,"line":500},[460,96351,4564],{"class":466},[460,96353,96354],{"class":462,"line":506},[460,96355,1679],{"class":466},[460,96357,96358],{"class":462,"line":512},[460,96359,4573],{"class":466},[460,96361,96362],{"class":462,"line":518},[460,96363,4578],{"class":466},[460,96365,96366],{"class":462,"line":525},[460,96367,4583],{"class":466},[460,96369,96370],{"class":462,"line":531},[460,96371,4564],{"class":466},[460,96373,96374],{"class":462,"line":537},[460,96375,4592],{"class":466},[460,96377,96378],{"class":462,"line":543},[460,96379,4597],{"class":466},[460,96381,96382],{"class":462,"line":549},[460,96383,522],{"emptyLinePlaceholder":521},[460,96385,96386],{"class":462,"line":555},[460,96387,4606],{"class":466},[460,96389,96390],{"class":462,"line":560},[460,96391,4611],{"class":466},[460,96393,96394],{"class":462,"line":566},[460,96395,4616],{"class":466},[460,96397,96398,96400,96402],{"class":462,"line":572},[460,96399,581],{"class":466},[460,96401,225],{"class":470},[460,96403,473],{"class":466},[460,96405,96406,96408,96410],{"class":462,"line":578},[460,96407,1776],{"class":466},[460,96409,1721],{"class":470},[460,96411,473],{"class":466},[14,96413,4635],{},[103,96415,96416,96418,96420],{},[43,96417,4640],{},[43,96419,4643],{},[43,96421,4646],{},[451,96423,96424],{"className":453,"code":4649,"language":455,"meta":32,"style":32},[457,96425,96426,96434,96442,96446,96450,96454,96458,96462,96466,96470,96474,96478,96482,96486,96490,96494,96498,96502,96506,96510,96514,96518,96522,96526,96530,96534,96538,96542,96546,96554],{"__ignoreMap":32},[460,96427,96428,96430,96432],{"class":462,"line":463},[460,96429,781],{"class":466},[460,96431,1721],{"class":470},[460,96433,473],{"class":466},[460,96435,96436,96438,96440],{"class":462,"line":476},[460,96437,467],{"class":466},[460,96439,225],{"class":470},[460,96441,473],{"class":466},[460,96443,96444],{"class":462,"line":482},[460,96445,4549],{"class":466},[460,96447,96448],{"class":462,"line":488},[460,96449,4554],{"class":466},[460,96451,96452],{"class":462,"line":494},[460,96453,4559],{"class":466},[460,96455,96456],{"class":462,"line":500},[460,96457,4564],{"class":466},[460,96459,96460],{"class":462,"line":506},[460,96461,1679],{"class":466},[460,96463,96464],{"class":462,"line":512},[460,96465,4573],{"class":466},[460,96467,96468],{"class":462,"line":518},[460,96469,4696],{"class":466},[460,96471,96472],{"class":462,"line":525},[460,96473,4701],{"class":466},[460,96475,96476],{"class":462,"line":531},[460,96477,4706],{"class":466},[460,96479,96480],{"class":462,"line":537},[460,96481,4711],{"class":466},[460,96483,96484],{"class":462,"line":543},[460,96485,4716],{"class":466},[460,96487,96488],{"class":462,"line":549},[460,96489,4578],{"class":466},[460,96491,96492],{"class":462,"line":555},[460,96493,4583],{"class":466},[460,96495,96496],{"class":462,"line":560},[460,96497,4564],{"class":466},[460,96499,96500],{"class":462,"line":566},[460,96501,4592],{"class":466},[460,96503,96504],{"class":462,"line":572},[460,96505,4597],{"class":466},[460,96507,96508],{"class":462,"line":578},[460,96509,4696],{"class":466},[460,96511,96512],{"class":462,"line":812},[460,96513,4745],{"class":466},[460,96515,96516],{"class":462,"line":818},[460,96517,4706],{"class":466},[460,96519,96520],{"class":462,"line":824},[460,96521,4754],{"class":466},[460,96523,96524],{"class":462,"line":2074},[460,96525,4706],{"class":466},[460,96527,96528],{"class":462,"line":2088},[460,96529,4763],{"class":466},[460,96531,96532],{"class":462,"line":2103},[460,96533,4768],{"class":466},[460,96535,96536],{"class":462,"line":2122},[460,96537,4606],{"class":466},[460,96539,96540],{"class":462,"line":2144},[460,96541,4611],{"class":466},[460,96543,96544],{"class":462,"line":2158},[460,96545,4616],{"class":466},[460,96547,96548,96550,96552],{"class":462,"line":2163},[460,96549,581],{"class":466},[460,96551,225],{"class":470},[460,96553,473],{"class":466},[460,96555,96556,96558,96560],{"class":462,"line":2168},[460,96557,1776],{"class":466},[460,96559,1721],{"class":470},[460,96561,473],{"class":466},[4287,96563,4800],{"id":4799},[14,96565,96566],{},[30,96567],{"alt":32,"src":4805},[451,96569,96570],{"className":453,"code":4808,"language":455,"meta":32,"style":32},[457,96571,96572,96580,96588,96592,96596,96600,96604,96608,96612,96616,96620,96624,96628,96632,96636,96640,96644,96648,96656],{"__ignoreMap":32},[460,96573,96574,96576,96578],{"class":462,"line":463},[460,96575,781],{"class":466},[460,96577,1721],{"class":470},[460,96579,473],{"class":466},[460,96581,96582,96584,96586],{"class":462,"line":476},[460,96583,467],{"class":466},[460,96585,225],{"class":470},[460,96587,473],{"class":466},[460,96589,96590],{"class":462,"line":482},[460,96591,4831],{"class":466},[460,96593,96594],{"class":462,"line":488},[460,96595,4836],{"class":466},[460,96597,96598],{"class":462,"line":494},[460,96599,4841],{"class":466},[460,96601,96602],{"class":462,"line":500},[460,96603,4846],{"class":466},[460,96605,96606],{"class":462,"line":506},[460,96607,3355],{"class":466},[460,96609,96610],{"class":462,"line":512},[460,96611,4855],{"class":466},[460,96613,96614],{"class":462,"line":518},[460,96615,4860],{"class":466},[460,96617,96618],{"class":462,"line":525},[460,96619,4865],{"class":466},[460,96621,96622],{"class":462,"line":531},[460,96623,4870],{"class":466},[460,96625,96626],{"class":462,"line":537},[460,96627,4875],{"class":466},[460,96629,96630],{"class":462,"line":543},[460,96631,4880],{"class":466},[460,96633,96634],{"class":462,"line":549},[460,96635,4875],{"class":466},[460,96637,96638],{"class":462,"line":555},[460,96639,4889],{"class":466},[460,96641,96642],{"class":462,"line":560},[460,96643,4875],{"class":466},[460,96645,96646],{"class":462,"line":566},[460,96647,4898],{"class":466},[460,96649,96650,96652,96654],{"class":462,"line":572},[460,96651,581],{"class":466},[460,96653,225],{"class":470},[460,96655,473],{"class":466},[460,96657,96658,96660,96662],{"class":462,"line":578},[460,96659,1776],{"class":466},[460,96661,1721],{"class":470},[460,96663,473],{"class":466},[4287,96665,4918],{"id":4917},[14,96667,96668],{},[30,96669],{"alt":32,"src":4923},[14,96671,96672],{},[30,96673],{"alt":32,"src":4928},[103,96675,96676],{},[43,96677,4933],{},[14,96679,4936],{},[14,96681,96682],{},[2756,96683,4944],{"href":4941,"rel":96684},[4943],[451,96686,96687],{"className":702,"code":4947,"language":704,"meta":32,"style":32},[457,96688,96689,96693,96697],{"__ignoreMap":32},[460,96690,96691],{"class":462,"line":463},[460,96692,4954],{"class":466},[460,96694,96695],{"class":462,"line":476},[460,96696,4959],{"class":466},[460,96698,96699],{"class":462,"line":482},[460,96700,4964],{"class":466},[14,96702,96703,4969,96705,4975,96708,4979,96710,4982,96712,4988,96715,4991,96717,4994,96719,4997,96721],{},[457,96704,4933],{},[2756,96706,4974],{"href":4972,"rel":96707},[4943],[457,96709,4978],{},[457,96711,4978],{},[2756,96713,4987],{"href":4985,"rel":96714},[4943],[457,96716,4933],{},[457,96718,4978],{},[457,96720,4933],{},[457,96722,5000],{},[451,96724,96725],{"className":453,"code":5003,"language":455,"meta":32,"style":32},[457,96726,96727,96735,96743,96747,96751,96755,96759,96763,96767,96771,96775,96779,96783,96787,96791,96795,96799,96803,96807,96811,96815,96819,96823,96827,96831,96835,96839,96843,96847,96851,96859],{"__ignoreMap":32},[460,96728,96729,96731,96733],{"class":462,"line":463},[460,96730,781],{"class":466},[460,96732,1721],{"class":470},[460,96734,473],{"class":466},[460,96736,96737,96739,96741],{"class":462,"line":476},[460,96738,467],{"class":466},[460,96740,225],{"class":470},[460,96742,473],{"class":466},[460,96744,96745],{"class":462,"line":482},[460,96746,5026],{"class":466},[460,96748,96749],{"class":462,"line":488},[460,96750,5031],{"class":466},[460,96752,96753],{"class":462,"line":494},[460,96754,5036],{"class":466},[460,96756,96757],{"class":462,"line":500},[460,96758,522],{"emptyLinePlaceholder":521},[460,96760,96761],{"class":462,"line":506},[460,96762,5045],{"class":466},[460,96764,96765],{"class":462,"line":512},[460,96766,5050],{"class":466},[460,96768,96769],{"class":462,"line":518},[460,96770,2951],{"class":466},[460,96772,96773],{"class":462,"line":525},[460,96774,5059],{"class":466},[460,96776,96777],{"class":462,"line":531},[460,96778,5064],{"class":466},[460,96780,96781],{"class":462,"line":537},[460,96782,1293],{"class":466},[460,96784,96785],{"class":462,"line":543},[460,96786,2951],{"class":466},[460,96788,96789],{"class":462,"line":549},[460,96790,5077],{"class":466},[460,96792,96793],{"class":462,"line":555},[460,96794,5082],{"class":466},[460,96796,96797],{"class":462,"line":560},[460,96798,552],{"class":466},[460,96800,96801],{"class":462,"line":566},[460,96802,3355],{"class":466},[460,96804,96805],{"class":462,"line":572},[460,96806,5095],{"class":466},[460,96808,96809],{"class":462,"line":578},[460,96810,5100],{"class":466},[460,96812,96813],{"class":462,"line":812},[460,96814,5105],{"class":466},[460,96816,96817],{"class":462,"line":818},[460,96818,5110],{"class":466},[460,96820,96821],{"class":462,"line":824},[460,96822,5115],{"class":466},[460,96824,96825],{"class":462,"line":2074},[460,96826,5120],{"class":466},[460,96828,96829],{"class":462,"line":2088},[460,96830,5125],{"class":466},[460,96832,96833],{"class":462,"line":2103},[460,96834,5130],{"class":466},[460,96836,96837],{"class":462,"line":2122},[460,96838,5135],{"class":466},[460,96840,96841],{"class":462,"line":2144},[460,96842,5140],{"class":466},[460,96844,96845],{"class":462,"line":2158},[460,96846,1679],{"class":466},[460,96848,96849],{"class":462,"line":2163},[460,96850,5149],{"class":466},[460,96852,96853,96855,96857],{"class":462,"line":2168},[460,96854,581],{"class":466},[460,96856,225],{"class":470},[460,96858,473],{"class":466},[460,96860,96861,96863,96865],{"class":462,"line":2183},[460,96862,1776],{"class":466},[460,96864,1721],{"class":470},[460,96866,473],{"class":466},[14,96868,96869],{},[30,96870],{"alt":32,"src":5170},[14,96872,5173],{},[103,96874,96875],{"start":476},[43,96876,5178],{},[14,96878,96879],{},[2756,96880,5185],{"href":5183,"rel":96881},[4943],[14,96883,5188],{},[14,96885,5191],{},[14,96887,5194],{},[451,96889,96890],{"className":5197,"code":5198,"language":5199,"meta":32,"style":32},[457,96891,96892,96906,96918,96922,96930],{"__ignoreMap":32},[460,96893,96894,96896,96898,96900,96902,96904],{"class":462,"line":463},[460,96895,3976],{"class":887},[460,96897,5208],{"class":466},[460,96899,5211],{"class":887},[460,96901,904],{"class":466},[460,96903,5216],{"class":887},[460,96905,2180],{"class":466},[460,96907,96908,96910,96912,96914,96916],{"class":462,"line":476},[460,96909,5223],{"class":887},[460,96911,5226],{"class":466},[460,96913,3738],{"class":887},[460,96915,5231],{"class":900},[460,96917,1966],{"class":466},[460,96919,96920],{"class":462,"line":482},[460,96921,821],{"class":466},[460,96923,96924,96926,96928],{"class":462,"line":488},[460,96925,5242],{"class":466},[460,96927,5245],{"class":887},[460,96929,5248],{"class":466},[460,96931,96932,96934,96936],{"class":462,"line":494},[460,96933,5253],{"class":466},[460,96935,5245],{"class":887},[460,96937,5258],{"class":466},[451,96939,96940],{"className":453,"code":5261,"language":455,"meta":32,"style":32},[457,96941,96942,96950,96958,96962,96966,96970,96974,96982],{"__ignoreMap":32},[460,96943,96944,96946,96948],{"class":462,"line":463},[460,96945,781],{"class":466},[460,96947,1721],{"class":470},[460,96949,473],{"class":466},[460,96951,96952,96954,96956],{"class":462,"line":476},[460,96953,467],{"class":466},[460,96955,225],{"class":470},[460,96957,473],{"class":466},[460,96959,96960],{"class":462,"line":482},[460,96961,5284],{"class":466},[460,96963,96964],{"class":462,"line":488},[460,96965,1736],{"class":466},[460,96967,96968],{"class":462,"line":494},[460,96969,5293],{"class":466},[460,96971,96972],{"class":462,"line":500},[460,96973,5298],{"class":466},[460,96975,96976,96978,96980],{"class":462,"line":506},[460,96977,581],{"class":466},[460,96979,225],{"class":470},[460,96981,473],{"class":466},[460,96983,96984,96986,96988],{"class":462,"line":512},[460,96985,1776],{"class":466},[460,96987,1721],{"class":470},[460,96989,473],{"class":466},[451,96991,96992],{"className":453,"code":5317,"language":455,"meta":32,"style":32},[457,96993,96994,97002,97010,97014,97018,97022,97026,97034],{"__ignoreMap":32},[460,96995,96996,96998,97000],{"class":462,"line":463},[460,96997,781],{"class":466},[460,96999,1721],{"class":470},[460,97001,473],{"class":466},[460,97003,97004,97006,97008],{"class":462,"line":476},[460,97005,467],{"class":466},[460,97007,225],{"class":470},[460,97009,473],{"class":466},[460,97011,97012],{"class":462,"line":482},[460,97013,5284],{"class":466},[460,97015,97016],{"class":462,"line":488},[460,97017,5344],{"class":466},[460,97019,97020],{"class":462,"line":494},[460,97021,5349],{"class":466},[460,97023,97024],{"class":462,"line":500},[460,97025,5354],{"class":466},[460,97027,97028,97030,97032],{"class":462,"line":506},[460,97029,581],{"class":466},[460,97031,225],{"class":470},[460,97033,473],{"class":466},[460,97035,97036,97038,97040],{"class":462,"line":512},[460,97037,1776],{"class":466},[460,97039,1721],{"class":470},[460,97041,473],{"class":466},[4287,97043,5374],{"id":5373},[14,97045,97046],{},[30,97047],{"alt":32,"src":5379},[451,97049,97050],{"className":702,"code":5382,"language":704,"meta":32,"style":32},[457,97051,97052,97062,97076,97080,97088,97102,97122,97134,97142,97148,97160,97172,97184,97196,97206,97216,97220,97228,97236,97240,97248,97260,97268,97286,97290,97294,97322,97330,97338,97342],{"__ignoreMap":32},[460,97053,97054,97056,97058,97060],{"class":462,"line":463},[460,97055,1845],{"class":466},[460,97057,1848],{"class":470},[460,97059,1851],{"class":929},[460,97061,473],{"class":466},[460,97063,97064,97066,97068,97070,97072,97074],{"class":462,"line":476},[460,97065,781],{"class":466},[460,97067,704],{"class":470},[460,97069,1862],{"class":929},[460,97071,894],{"class":466},[460,97073,1867],{"class":1353},[460,97075,473],{"class":466},[460,97077,97078],{"class":462,"line":482},[460,97079,522],{"emptyLinePlaceholder":521},[460,97081,97082,97084,97086],{"class":462,"line":488},[460,97083,781],{"class":466},[460,97085,1880],{"class":470},[460,97087,473],{"class":466},[460,97089,97090,97092,97094,97096,97098,97100],{"class":462,"line":494},[460,97091,467],{"class":466},[460,97093,1889],{"class":470},[460,97095,1892],{"class":929},[460,97097,894],{"class":466},[460,97099,1897],{"class":1353},[460,97101,473],{"class":466},[460,97103,97104,97106,97108,97110,97112,97114,97116,97118,97120],{"class":462,"line":500},[460,97105,467],{"class":466},[460,97107,1889],{"class":470},[460,97109,1908],{"class":929},[460,97111,894],{"class":466},[460,97113,1913],{"class":1353},[460,97115,1916],{"class":929},[460,97117,894],{"class":466},[460,97119,1921],{"class":1353},[460,97121,473],{"class":466},[460,97123,97124,97126,97128,97130,97132],{"class":462,"line":506},[460,97125,467],{"class":466},[460,97127,1930],{"class":470},[460,97129,1933],{"class":466},[460,97131,1930],{"class":470},[460,97133,473],{"class":466},[460,97135,97136,97138,97140],{"class":462,"line":512},[460,97137,467],{"class":466},[460,97139,1944],{"class":470},[460,97141,473],{"class":466},[460,97143,97144,97146],{"class":462,"line":518},[460,97145,5479],{"class":470},[460,97147,1348],{"class":466},[460,97149,97150,97152,97154,97156,97158],{"class":462,"line":525},[460,97151,2009],{"class":900},[460,97153,1961],{"class":466},[460,97155,5490],{"class":900},[460,97157,2017],{"class":887},[460,97159,1966],{"class":466},[460,97161,97162,97164,97166,97168,97170],{"class":462,"line":531},[460,97163,5499],{"class":900},[460,97165,1961],{"class":466},[460,97167,5504],{"class":900},[460,97169,2017],{"class":887},[460,97171,1966],{"class":466},[460,97173,97174,97176,97178,97180,97182],{"class":462,"line":537},[460,97175,5513],{"class":900},[460,97177,1961],{"class":466},[460,97179,5504],{"class":900},[460,97181,2017],{"class":887},[460,97183,1966],{"class":466},[460,97185,97186,97188,97190,97192,97194],{"class":462,"line":543},[460,97187,5526],{"class":900},[460,97189,1961],{"class":466},[460,97191,5531],{"class":900},[460,97193,2017],{"class":887},[460,97195,1966],{"class":466},[460,97197,97198,97200,97202,97204],{"class":462,"line":549},[460,97199,5540],{"class":900},[460,97201,1961],{"class":466},[460,97203,5545],{"class":900},[460,97205,1966],{"class":466},[460,97207,97208,97210,97212,97214],{"class":462,"line":555},[460,97209,2673],{"class":900},[460,97211,1961],{"class":466},[460,97213,5556],{"class":900},[460,97215,1966],{"class":466},[460,97217,97218],{"class":462,"line":560},[460,97219,509],{"class":466},[460,97221,97222,97224,97226],{"class":462,"line":566},[460,97223,581],{"class":466},[460,97225,1944],{"class":470},[460,97227,473],{"class":466},[460,97229,97230,97232,97234],{"class":462,"line":572},[460,97231,1776],{"class":466},[460,97233,1880],{"class":470},[460,97235,473],{"class":466},[460,97237,97238],{"class":462,"line":578},[460,97239,522],{"emptyLinePlaceholder":521},[460,97241,97242,97244,97246],{"class":462,"line":812},[460,97243,781],{"class":466},[460,97245,1721],{"class":470},[460,97247,473],{"class":466},[460,97249,97250,97252,97254,97256,97258],{"class":462,"line":818},[460,97251,467],{"class":466},[460,97253,2737],{"class":470},[460,97255,5599],{"class":466},[460,97257,2737],{"class":470},[460,97259,473],{"class":466},[460,97261,97262,97264,97266],{"class":462,"line":824},[460,97263,467],{"class":466},[460,97265,225],{"class":470},[460,97267,473],{"class":466},[460,97269,97270,97272,97274,97276,97278,97280,97282,97284],{"class":462,"line":2074},[460,97271,1340],{"class":887},[460,97273,5618],{"class":900},[460,97275,2943],{"class":887},[460,97277,5623],{"class":466},[460,97279,5626],{"class":1353},[460,97281,5629],{"class":466},[460,97283,5632],{"class":1353},[460,97285,5635],{"class":466},[460,97287,97288],{"class":462,"line":2088},[460,97289,5640],{"class":942},[460,97291,97292],{"class":462,"line":2103},[460,97293,5645],{"class":942},[460,97295,97296,97298,97300,97302,97304,97306,97308,97310,97312,97314,97316,97318,97320],{"class":462,"line":2122},[460,97297,3586],{"class":466},[460,97299,3541],{"class":929},[460,97301,2174],{"class":466},[460,97303,5656],{"class":1353},[460,97305,3549],{"class":466},[460,97307,894],{"class":887},[460,97309,5663],{"class":466},[460,97311,5666],{"class":929},[460,97313,5669],{"class":466},[460,97315,5672],{"class":929},[460,97317,2174],{"class":466},[460,97319,5677],{"class":1353},[460,97321,3754],{"class":466},[460,97323,97324,97326,97328],{"class":462,"line":2144},[460,97325,581],{"class":466},[460,97327,225],{"class":470},[460,97329,473],{"class":466},[460,97331,97332,97334,97336],{"class":462,"line":2158},[460,97333,1776],{"class":466},[460,97335,1721],{"class":470},[460,97337,473],{"class":466},[460,97339,97340],{"class":462,"line":2163},[460,97341,522],{"emptyLinePlaceholder":521},[460,97343,97344,97346,97348],{"class":462,"line":2168},[460,97345,1776],{"class":466},[460,97347,704],{"class":470},[460,97349,473],{"class":466},[14,97351,5710],{},[4287,97353,5714],{"id":5713},[14,97355,5717],{},[14,97357,97358],{},[30,97359],{"alt":32,"src":5722},[451,97361,97362],{"className":453,"code":5725,"language":455,"meta":32,"style":32},[457,97363,97364,97372,97380,97392,97404,97416,97424,97432,97436,97440,97444,97448,97456],{"__ignoreMap":32},[460,97365,97366,97368,97370],{"class":462,"line":463},[460,97367,781],{"class":466},[460,97369,1721],{"class":470},[460,97371,473],{"class":466},[460,97373,97374,97376,97378],{"class":462,"line":476},[460,97375,467],{"class":466},[460,97377,40],{"class":470},[460,97379,473],{"class":466},[460,97381,97382,97384,97386,97388,97390],{"class":462,"line":482},[460,97383,2753],{"class":466},[460,97385,43],{"class":470},[460,97387,5599],{"class":466},[460,97389,43],{"class":470},[460,97391,473],{"class":466},[460,97393,97394,97396,97398,97400,97402],{"class":462,"line":488},[460,97395,2753],{"class":466},[460,97397,43],{"class":470},[460,97399,5599],{"class":466},[460,97401,43],{"class":470},[460,97403,473],{"class":466},[460,97405,97406,97408,97410,97412,97414],{"class":462,"line":494},[460,97407,2753],{"class":466},[460,97409,43],{"class":470},[460,97411,5599],{"class":466},[460,97413,43],{"class":470},[460,97415,473],{"class":466},[460,97417,97418,97420,97422],{"class":462,"line":500},[460,97419,581],{"class":466},[460,97421,40],{"class":470},[460,97423,473],{"class":466},[460,97425,97426,97428,97430],{"class":462,"line":506},[460,97427,467],{"class":466},[460,97429,225],{"class":470},[460,97431,473],{"class":466},[460,97433,97434],{"class":462,"line":512},[460,97435,5800],{"class":466},[460,97437,97438],{"class":462,"line":518},[460,97439,5805],{"class":466},[460,97441,97442],{"class":462,"line":525},[460,97443,5810],{"class":466},[460,97445,97446],{"class":462,"line":531},[460,97447,5815],{"class":466},[460,97449,97450,97452,97454],{"class":462,"line":537},[460,97451,581],{"class":466},[460,97453,225],{"class":470},[460,97455,473],{"class":466},[460,97457,97458,97460,97462],{"class":462,"line":543},[460,97459,1776],{"class":466},[460,97461,1721],{"class":470},[460,97463,473],{"class":466},[14,97465,97466],{},[30,97467],{"alt":32,"src":5836},[115,97469,5840],{"id":5839},[14,97471,97472],{},[30,97473],{"alt":32,"src":5845},[4287,97475,5849],{"id":5848},[451,97477,97478],{"className":453,"code":5852,"language":455,"meta":32,"style":32},[457,97479,97480,97488,97496,97500,97504,97508,97512,97516,97520,97524,97532],{"__ignoreMap":32},[460,97481,97482,97484,97486],{"class":462,"line":463},[460,97483,781],{"class":466},[460,97485,1721],{"class":470},[460,97487,473],{"class":466},[460,97489,97490,97492,97494],{"class":462,"line":476},[460,97491,467],{"class":466},[460,97493,225],{"class":470},[460,97495,473],{"class":466},[460,97497,97498],{"class":462,"line":482},[460,97499,5875],{"class":466},[460,97501,97502],{"class":462,"line":488},[460,97503,5880],{"class":466},[460,97505,97506],{"class":462,"line":494},[460,97507,5885],{"class":466},[460,97509,97510],{"class":462,"line":500},[460,97511,4344],{"class":466},[460,97513,97514],{"class":462,"line":506},[460,97515,5894],{"class":466},[460,97517,97518],{"class":462,"line":512},[460,97519,5899],{"class":466},[460,97521,97522],{"class":462,"line":518},[460,97523,5904],{"class":466},[460,97525,97526,97528,97530],{"class":462,"line":525},[460,97527,581],{"class":466},[460,97529,225],{"class":470},[460,97531,473],{"class":466},[460,97533,97534,97536,97538],{"class":462,"line":531},[460,97535,1776],{"class":466},[460,97537,1721],{"class":470},[460,97539,473],{"class":466},[4287,97541,5924],{"id":5923},[14,97543,5927],{},[14,97545,5930],{},[14,97547,5933],{},[40,97549,97550,97556,97564,97572],{},[43,97551,5938,97552,5942,97554,5946],{},[457,97553,5941],{},[457,97555,5945],{},[43,97557,5949,97558,5953,97560,5942,97562,5958],{},[457,97559,5952],{},[457,97561,5941],{},[457,97563,5945],{},[43,97565,5949,97566,5963,97568,5942,97570,5968],{},[457,97567,5952],{},[457,97569,5941],{},[457,97571,5945],{},[43,97573,5971],{},[451,97575,97576],{"className":5197,"code":5974,"language":5199,"meta":32,"style":32},[457,97577,97578,97588,97592,97622,97652,97656,97686,97690,97716,97746,97776,97780,97810],{"__ignoreMap":32},[460,97579,97580,97582,97584,97586],{"class":462,"line":463},[460,97581,5981],{"class":466},[460,97583,894],{"class":887},[460,97585,5986],{"class":1353},[460,97587,1966],{"class":466},[460,97589,97590],{"class":462,"line":476},[460,97591,522],{"emptyLinePlaceholder":521},[460,97593,97594,97596,97598,97600,97602,97604,97606,97608,97610,97612,97614,97616,97618,97620],{"class":462,"line":482},[460,97595,5997],{"class":900},[460,97597,6000],{"class":466},[460,97599,930],{"class":900},[460,97601,2174],{"class":466},[460,97603,6007],{"class":900},[460,97605,6000],{"class":466},[460,97607,6012],{"class":900},[460,97609,2174],{"class":466},[460,97611,936],{"class":900},[460,97613,904],{"class":466},[460,97615,901],{"class":900},[460,97617,6023],{"class":466},[460,97619,5245],{"class":887},[460,97621,6028],{"class":1353},[460,97623,97624,97626,97628,97630,97632,97634,97636,97638,97640,97642,97644,97646,97648,97650],{"class":462,"line":488},[460,97625,5997],{"class":900},[460,97627,6000],{"class":466},[460,97629,930],{"class":900},[460,97631,2174],{"class":466},[460,97633,6007],{"class":900},[460,97635,6000],{"class":466},[460,97637,6012],{"class":900},[460,97639,2174],{"class":466},[460,97641,901],{"class":900},[460,97643,904],{"class":466},[460,97645,936],{"class":900},[460,97647,6023],{"class":466},[460,97649,5245],{"class":887},[460,97651,6028],{"class":1353},[460,97653,97654],{"class":462,"line":494},[460,97655,522],{"emptyLinePlaceholder":521},[460,97657,97658,97660,97662,97664,97666,97668,97670,97672,97674,97676,97678,97680,97682,97684],{"class":462,"line":500},[460,97659,5997],{"class":900},[460,97661,6000],{"class":466},[460,97663,930],{"class":900},[460,97665,2174],{"class":466},[460,97667,6007],{"class":900},[460,97669,6000],{"class":466},[460,97671,6012],{"class":900},[460,97673,2174],{"class":466},[460,97675,936],{"class":900},[460,97677,904],{"class":466},[460,97679,4064],{"class":900},[460,97681,6023],{"class":466},[460,97683,5245],{"class":887},[460,97685,6093],{"class":1353},[460,97687,97688],{"class":462,"line":506},[460,97689,522],{"emptyLinePlaceholder":521},[460,97691,97692,97694,97696,97698,97700,97702,97704,97706,97708,97710,97712,97714],{"class":462,"line":512},[460,97693,5997],{"class":900},[460,97695,6000],{"class":466},[460,97697,930],{"class":900},[460,97699,2174],{"class":466},[460,97701,6007],{"class":900},[460,97703,6000],{"class":466},[460,97705,6012],{"class":900},[460,97707,2174],{"class":466},[460,97709,918],{"class":900},[460,97711,6023],{"class":466},[460,97713,5245],{"class":887},[460,97715,6124],{"class":1353},[460,97717,97718,97720,97722,97724,97726,97728,97730,97732,97734,97736,97738,97740,97742,97744],{"class":462,"line":518},[460,97719,5997],{"class":900},[460,97721,6000],{"class":466},[460,97723,930],{"class":900},[460,97725,2174],{"class":466},[460,97727,6007],{"class":900},[460,97729,6000],{"class":466},[460,97731,6012],{"class":900},[460,97733,2174],{"class":466},[460,97735,918],{"class":900},[460,97737,904],{"class":466},[460,97739,6149],{"class":900},[460,97741,6152],{"class":466},[460,97743,5245],{"class":887},[460,97745,6124],{"class":1353},[460,97747,97748,97750,97752,97754,97756,97758,97760,97762,97764,97766,97768,97770,97772,97774],{"class":462,"line":525},[460,97749,5997],{"class":900},[460,97751,6000],{"class":466},[460,97753,930],{"class":900},[460,97755,2174],{"class":466},[460,97757,6007],{"class":900},[460,97759,6000],{"class":466},[460,97761,6012],{"class":900},[460,97763,2174],{"class":466},[460,97765,6149],{"class":900},[460,97767,904],{"class":466},[460,97769,918],{"class":900},[460,97771,6023],{"class":466},[460,97773,5245],{"class":887},[460,97775,6124],{"class":1353},[460,97777,97778],{"class":462,"line":531},[460,97779,522],{"emptyLinePlaceholder":521},[460,97781,97782,97784,97786,97788,97790,97792,97794,97796,97798,97800,97802,97804,97806,97808],{"class":462,"line":537},[460,97783,5997],{"class":900},[460,97785,6000],{"class":466},[460,97787,930],{"class":900},[460,97789,2174],{"class":466},[460,97791,6007],{"class":900},[460,97793,6000],{"class":466},[460,97795,6012],{"class":900},[460,97797,2174],{"class":466},[460,97799,936],{"class":900},[460,97801,904],{"class":466},[460,97803,6149],{"class":900},[460,97805,6023],{"class":466},[460,97807,5245],{"class":887},[460,97809,6221],{"class":1353},[460,97811,97812,97814,97816,97818,97820,97822,97824,97826,97828,97830,97832,97834,97836,97838],{"class":462,"line":543},[460,97813,5997],{"class":900},[460,97815,6000],{"class":466},[460,97817,930],{"class":900},[460,97819,2174],{"class":466},[460,97821,6007],{"class":900},[460,97823,6000],{"class":466},[460,97825,6012],{"class":900},[460,97827,2174],{"class":466},[460,97829,936],{"class":900},[460,97831,904],{"class":466},[460,97833,2096],{"class":900},[460,97835,6023],{"class":466},[460,97837,5245],{"class":887},[460,97839,6221],{"class":1353},[4287,97841,6255],{"id":6254},[14,97843,97844,6261,97846,6267,97850,6271,97852],{},[457,97845,6260],{},[3944,97847,97848],{},[457,97849,6266],{},[457,97851,6270],{},[457,97853,6274],{},[451,97855,97856],{"className":878,"code":6277,"language":880,"meta":32,"style":32},[457,97857,97858,97868,97884,97888,97908],{"__ignoreMap":32},[460,97859,97860,97862,97864,97866],{"class":462,"line":463},[460,97861,888],{"class":887},[460,97863,6286],{"class":466},[460,97865,894],{"class":887},[460,97867,6291],{"class":1353},[460,97869,97870,97872,97874,97876,97878,97880,97882],{"class":462,"line":476},[460,97871,926],{"class":466},[460,97873,930],{"class":929},[460,97875,6300],{"class":466},[460,97877,6303],{"class":929},[460,97879,2174],{"class":466},[460,97881,6308],{"class":1353},[460,97883,6311],{"class":466},[460,97885,97886],{"class":462,"line":482},[460,97887,6316],{"class":942},[460,97889,97890,97892,97894,97896,97898,97900,97902,97904,97906],{"class":462,"line":488},[460,97891,926],{"class":466},[460,97893,930],{"class":929},[460,97895,6300],{"class":466},[460,97897,6303],{"class":929},[460,97899,2174],{"class":466},[460,97901,6308],{"class":1353},[460,97903,904],{"class":466},[460,97905,913],{"class":900},[460,97907,6311],{"class":466},[460,97909,97910],{"class":462,"line":494},[460,97911,6341],{"class":942},[451,97913,97914],{"className":702,"code":6344,"language":704,"meta":32,"style":32},[457,97915,97916,97920,97924,97928,97932,97936],{"__ignoreMap":32},[460,97917,97918],{"class":462,"line":463},[460,97919,6351],{"class":466},[460,97921,97922],{"class":462,"line":476},[460,97923,6356],{"class":466},[460,97925,97926],{"class":462,"line":482},[460,97927,522],{"emptyLinePlaceholder":521},[460,97929,97930],{"class":462,"line":488},[460,97931,6365],{"class":466},[460,97933,97934],{"class":462,"line":494},[460,97935,6370],{"class":466},[460,97937,97938],{"class":462,"line":500},[460,97939,6375],{"class":466},[4287,97941,6379],{"id":6378},[14,97943,6382],{},[103,97945,97946],{},[43,97947,6387],{},[14,97949,6390,97950,6394,97952,6400,97955,6406,97958,6410,97960,6414,97962,6418],{},[457,97951,6393],{},[2756,97953,6399],{"href":6397,"rel":97954},[4943],[2756,97956,6405],{"href":6403,"rel":97957},[4943],[457,97959,6409],{},[457,97961,6413],{},[457,97963,6417],{},[103,97965,97966],{"start":476},[43,97967,97968,1357],{},[457,97969,6425],{},[14,97971,6428,97972,6432,97974],{},[457,97973,6431],{},[457,97975,936],{},[103,97977,97978],{"start":482},[43,97979,6439],{},[14,97981,6442,97982,6445,97984,6450,97988],{},[457,97983,6431],{},[3944,97985,97986],{},[457,97987,6270],{},[3944,97989,97990],{},[457,97991,6274],{},[103,97993,97994],{"start":488},[43,97995,6459],{},[14,97997,5949,97998,6464,98000,6469],{},[457,97999,6431],{},[2756,98001,6468],{"href":6397,"rel":98002},[4943],[14,98004,6472],{},[451,98006,98007],{"className":878,"code":6475,"language":880,"meta":32,"style":32},[457,98008,98009,98019,98037,98055,98073,98095,98113],{"__ignoreMap":32},[460,98010,98011,98013,98015,98017],{"class":462,"line":463},[460,98012,888],{"class":887},[460,98014,3398],{"class":466},[460,98016,894],{"class":887},[460,98018,6488],{"class":1353},[460,98020,98021,98023,98025,98027,98029,98031,98033,98035],{"class":462,"line":476},[460,98022,926],{"class":466},[460,98024,930],{"class":929},[460,98026,6497],{"class":466},[460,98028,6500],{"class":929},[460,98030,2174],{"class":466},[460,98032,6505],{"class":1353},[460,98034,6508],{"class":466},[460,98036,6511],{"class":942},[460,98038,98039,98041,98043,98045,98047,98049,98051,98053],{"class":462,"line":482},[460,98040,926],{"class":466},[460,98042,930],{"class":929},[460,98044,6497],{"class":466},[460,98046,6500],{"class":929},[460,98048,2174],{"class":466},[460,98050,6526],{"class":1353},[460,98052,6508],{"class":466},[460,98054,6511],{"class":942},[460,98056,98057,98059,98061,98063,98065,98067,98069,98071],{"class":462,"line":488},[460,98058,926],{"class":466},[460,98060,930],{"class":929},[460,98062,6497],{"class":466},[460,98064,6500],{"class":929},[460,98066,2174],{"class":466},[460,98068,6545],{"class":1353},[460,98070,6508],{"class":466},[460,98072,6550],{"class":942},[460,98074,98075,98077,98079,98081,98083,98085,98087,98089,98091,98093],{"class":462,"line":494},[460,98076,926],{"class":466},[460,98078,930],{"class":929},[460,98080,6497],{"class":466},[460,98082,6500],{"class":929},[460,98084,2174],{"class":466},[460,98086,6505],{"class":1353},[460,98088,904],{"class":466},[460,98090,901],{"class":900},[460,98092,6508],{"class":466},[460,98094,6550],{"class":942},[460,98096,98097,98099,98101,98103,98105,98107,98109,98111],{"class":462,"line":500},[460,98098,926],{"class":466},[460,98100,930],{"class":929},[460,98102,6497],{"class":466},[460,98104,6500],{"class":929},[460,98106,2174],{"class":466},[460,98108,6587],{"class":1353},[460,98110,6508],{"class":466},[460,98112,6550],{"class":942},[460,98114,98115,98117,98119,98121,98123,98125,98127,98129],{"class":462,"line":506},[460,98116,926],{"class":466},[460,98118,930],{"class":929},[460,98120,6497],{"class":466},[460,98122,6500],{"class":929},[460,98124,2174],{"class":466},[460,98126,6606],{"class":1353},[460,98128,6508],{"class":466},[460,98130,6511],{"class":942},[4287,98132,6614],{"id":6613},[451,98134,98135],{"className":453,"code":6617,"language":455,"meta":32,"style":32},[457,98136,98137,98145,98153,98157,98161,98165,98169,98173,98181],{"__ignoreMap":32},[460,98138,98139,98141,98143],{"class":462,"line":463},[460,98140,781],{"class":466},[460,98142,1721],{"class":470},[460,98144,473],{"class":466},[460,98146,98147,98149,98151],{"class":462,"line":476},[460,98148,467],{"class":466},[460,98150,225],{"class":470},[460,98152,473],{"class":466},[460,98154,98155],{"class":462,"line":482},[460,98156,6640],{"class":466},[460,98158,98159],{"class":462,"line":488},[460,98160,6645],{"class":466},[460,98162,98163],{"class":462,"line":494},[460,98164,6650],{"class":466},[460,98166,98167],{"class":462,"line":500},[460,98168,6655],{"class":466},[460,98170,98171],{"class":462,"line":506},[460,98172,6660],{"class":466},[460,98174,98175,98177,98179],{"class":462,"line":512},[460,98176,581],{"class":466},[460,98178,225],{"class":470},[460,98180,473],{"class":466},[460,98182,98183,98185,98187],{"class":462,"line":518},[460,98184,1776],{"class":466},[460,98186,1721],{"class":470},[460,98188,473],{"class":466},[4287,98190,6680],{"id":6679},[14,98192,98193],{},[30,98194],{"alt":32,"src":6685},[451,98196,98197],{"className":702,"code":6688,"language":704,"meta":32,"style":32},[457,98198,98199,98209,98223,98227,98235,98249,98269,98281,98289,98293,98301,98313,98321,98331,98335,98339,98343,98385,98401,98409,98417,98421],{"__ignoreMap":32},[460,98200,98201,98203,98205,98207],{"class":462,"line":463},[460,98202,1845],{"class":466},[460,98204,1848],{"class":470},[460,98206,1851],{"class":929},[460,98208,473],{"class":466},[460,98210,98211,98213,98215,98217,98219,98221],{"class":462,"line":476},[460,98212,781],{"class":466},[460,98214,704],{"class":470},[460,98216,1862],{"class":929},[460,98218,894],{"class":466},[460,98220,1867],{"class":1353},[460,98222,473],{"class":466},[460,98224,98225],{"class":462,"line":482},[460,98226,522],{"emptyLinePlaceholder":521},[460,98228,98229,98231,98233],{"class":462,"line":488},[460,98230,781],{"class":466},[460,98232,1880],{"class":470},[460,98234,473],{"class":466},[460,98236,98237,98239,98241,98243,98245,98247],{"class":462,"line":494},[460,98238,467],{"class":466},[460,98240,1889],{"class":470},[460,98242,1892],{"class":929},[460,98244,894],{"class":466},[460,98246,1897],{"class":1353},[460,98248,473],{"class":466},[460,98250,98251,98253,98255,98257,98259,98261,98263,98265,98267],{"class":462,"line":500},[460,98252,467],{"class":466},[460,98254,1889],{"class":470},[460,98256,1908],{"class":929},[460,98258,894],{"class":466},[460,98260,1913],{"class":1353},[460,98262,1916],{"class":929},[460,98264,894],{"class":466},[460,98266,1921],{"class":1353},[460,98268,473],{"class":466},[460,98270,98271,98273,98275,98277,98279],{"class":462,"line":506},[460,98272,467],{"class":466},[460,98274,1930],{"class":470},[460,98276,1933],{"class":466},[460,98278,1930],{"class":470},[460,98280,473],{"class":466},[460,98282,98283,98285,98287],{"class":462,"line":512},[460,98284,1776],{"class":466},[460,98286,1880],{"class":470},[460,98288,473],{"class":466},[460,98290,98291],{"class":462,"line":518},[460,98292,522],{"emptyLinePlaceholder":521},[460,98294,98295,98297,98299],{"class":462,"line":525},[460,98296,781],{"class":466},[460,98298,1721],{"class":470},[460,98300,473],{"class":466},[460,98302,98303,98305,98307,98309,98311],{"class":462,"line":531},[460,98304,467],{"class":466},[460,98306,2737],{"class":470},[460,98308,5599],{"class":466},[460,98310,2737],{"class":470},[460,98312,473],{"class":466},[460,98314,98315,98317,98319],{"class":462,"line":537},[460,98316,467],{"class":466},[460,98318,225],{"class":470},[460,98320,473],{"class":466},[460,98322,98323,98325,98327,98329],{"class":462,"line":543},[460,98324,1340],{"class":887},[460,98326,6819],{"class":900},[460,98328,2943],{"class":887},[460,98330,6824],{"class":1353},[460,98332,98333],{"class":462,"line":549},[460,98334,6829],{"class":942},[460,98336,98337],{"class":462,"line":555},[460,98338,6834],{"class":942},[460,98340,98341],{"class":462,"line":560},[460,98342,6839],{"class":942},[460,98344,98345,98347,98349,98351,98353,98355,98357,98359,98361,98363,98365,98367,98369,98371,98373,98375,98377,98379,98381,98383],{"class":462,"line":566},[460,98346,1340],{"class":887},[460,98348,6846],{"class":900},[460,98350,2943],{"class":887},[460,98352,6851],{"class":466},[460,98354,6854],{"class":929},[460,98356,2174],{"class":466},[460,98358,6859],{"class":1353},[460,98360,3596],{"class":466},[460,98362,6864],{"class":929},[460,98364,2174],{"class":466},[460,98366,3423],{"class":3380},[460,98368,3426],{"class":887},[460,98370,6873],{"class":1353},[460,98372,3423],{"class":466},[460,98374,6878],{"class":1353},[460,98376,3596],{"class":466},[460,98378,5672],{"class":929},[460,98380,2174],{"class":466},[460,98382,6887],{"class":1353},[460,98384,3754],{"class":466},[460,98386,98387,98389,98391,98393,98395,98397,98399],{"class":462,"line":572},[460,98388,3586],{"class":466},[460,98390,3541],{"class":929},[460,98392,2174],{"class":466},[460,98394,5656],{"class":1353},[460,98396,3549],{"class":466},[460,98398,894],{"class":887},[460,98400,3554],{"class":466},[460,98402,98403,98405,98407],{"class":462,"line":578},[460,98404,581],{"class":466},[460,98406,225],{"class":470},[460,98408,473],{"class":466},[460,98410,98411,98413,98415],{"class":462,"line":812},[460,98412,1776],{"class":466},[460,98414,1721],{"class":470},[460,98416,473],{"class":466},[460,98418,98419],{"class":462,"line":818},[460,98420,522],{"emptyLinePlaceholder":521},[460,98422,98423,98425,98427],{"class":462,"line":824},[460,98424,1776],{"class":466},[460,98426,704],{"class":470},[460,98428,473],{"class":466},[115,98430,6937],{"id":6936},[14,98432,98433],{},[30,98434],{"alt":32,"src":6942},[14,98436,6945],{},[14,98438,6948],{},[14,98440,6951],{},[14,98442,6954],{},[115,98444,6958],{"id":6957},[14,98446,98447],{},[30,98448],{"alt":32,"src":6963},[451,98450,98451],{"className":702,"code":6966,"language":704,"meta":32,"style":32},[457,98452,98453,98463,98477,98481,98489,98503,98523,98535,98543,98549,98559,98569,98579,98583,98587,98593,98605,98619,98623,98627,98633,98645,98661,98671,98687,98691,98695,98701,98711,98721,98725,98729,98737,98749,98761,98773,98777,98781,98789,98801,98805,98809,98819,98829,98841,98853,98863,98867,98871,98879,98887,98899,98909,98919,98923,98927,98935,98943,98949,98959,98971,98975,98979,98987,98997,99007,99019,99031,99035,99039,99047,99057,99067,99071,99075,99081,99093,99105,99115,99125,99141,99153,99157,99161,99169,99181,99191,99201,99213,99217,99225,99233,99237,99245,99259,99267,99281,99307,99315,99323,99333,99337,99345,99353,99361,99369,99377,99385,99389,99393,99401,99409,99417,99425,99433,99445,99449,99453,99461,99469,99477,99485,99493,99505,99509,99513,99521,99529,99537,99545,99553,99565,99571,99575,99579,99583,99609,99613,99647,99651,99673,99677,99727,99731,99763,99767,99773,99777,99785,99797,99805,99823,99831,99839,99843,99847,99859,99863,99911,99935,99943,99951,99955],{"__ignoreMap":32},[460,98454,98455,98457,98459,98461],{"class":462,"line":463},[460,98456,1845],{"class":466},[460,98458,1848],{"class":470},[460,98460,1851],{"class":929},[460,98462,473],{"class":466},[460,98464,98465,98467,98469,98471,98473,98475],{"class":462,"line":476},[460,98466,781],{"class":466},[460,98468,704],{"class":470},[460,98470,1862],{"class":929},[460,98472,894],{"class":466},[460,98474,1867],{"class":1353},[460,98476,473],{"class":466},[460,98478,98479],{"class":462,"line":482},[460,98480,522],{"emptyLinePlaceholder":521},[460,98482,98483,98485,98487],{"class":462,"line":488},[460,98484,781],{"class":466},[460,98486,1880],{"class":470},[460,98488,473],{"class":466},[460,98490,98491,98493,98495,98497,98499,98501],{"class":462,"line":494},[460,98492,467],{"class":466},[460,98494,1889],{"class":470},[460,98496,1892],{"class":929},[460,98498,894],{"class":466},[460,98500,1897],{"class":1353},[460,98502,473],{"class":466},[460,98504,98505,98507,98509,98511,98513,98515,98517,98519,98521],{"class":462,"line":500},[460,98506,467],{"class":466},[460,98508,1889],{"class":470},[460,98510,1908],{"class":929},[460,98512,894],{"class":466},[460,98514,1913],{"class":1353},[460,98516,1916],{"class":929},[460,98518,894],{"class":466},[460,98520,1921],{"class":1353},[460,98522,473],{"class":466},[460,98524,98525,98527,98529,98531,98533],{"class":462,"line":506},[460,98526,467],{"class":466},[460,98528,1930],{"class":470},[460,98530,1933],{"class":466},[460,98532,1930],{"class":470},[460,98534,473],{"class":466},[460,98536,98537,98539,98541],{"class":462,"line":512},[460,98538,467],{"class":466},[460,98540,1944],{"class":470},[460,98542,473],{"class":466},[460,98544,98545,98547],{"class":462,"line":518},[460,98546,1951],{"class":470},[460,98548,1348],{"class":466},[460,98550,98551,98553,98555,98557],{"class":462,"line":525},[460,98552,1958],{"class":900},[460,98554,1961],{"class":466},[460,98556,936],{"class":900},[460,98558,1966],{"class":466},[460,98560,98561,98563,98565,98567],{"class":462,"line":531},[460,98562,1971],{"class":900},[460,98564,1961],{"class":466},[460,98566,936],{"class":900},[460,98568,1966],{"class":466},[460,98570,98571,98573,98575,98577],{"class":462,"line":537},[460,98572,1982],{"class":900},[460,98574,1961],{"class":466},[460,98576,1987],{"class":900},[460,98578,1966],{"class":466},[460,98580,98581],{"class":462,"line":543},[460,98582,509],{"class":466},[460,98584,98585],{"class":462,"line":549},[460,98586,522],{"emptyLinePlaceholder":521},[460,98588,98589,98591],{"class":462,"line":555},[460,98590,2002],{"class":929},[460,98592,1348],{"class":466},[460,98594,98595,98597,98599,98601,98603],{"class":462,"line":560},[460,98596,2009],{"class":900},[460,98598,1961],{"class":466},[460,98600,2014],{"class":900},[460,98602,2017],{"class":887},[460,98604,1966],{"class":466},[460,98606,98607,98609,98611,98613,98615,98617],{"class":462,"line":566},[460,98608,1971],{"class":900},[460,98610,1961],{"class":466},[460,98612,2325],{"class":900},[460,98614,2017],{"class":887},[460,98616,2030],{"class":900},[460,98618,1966],{"class":466},[460,98620,98621],{"class":462,"line":572},[460,98622,509],{"class":466},[460,98624,98625],{"class":462,"line":578},[460,98626,522],{"emptyLinePlaceholder":521},[460,98628,98629,98631],{"class":462,"line":812},[460,98630,2069],{"class":929},[460,98632,1348],{"class":466},[460,98634,98635,98637,98639,98641,98643],{"class":462,"line":818},[460,98636,1958],{"class":900},[460,98638,1961],{"class":466},[460,98640,7157],{"class":900},[460,98642,2017],{"class":887},[460,98644,1966],{"class":466},[460,98646,98647,98649,98651,98653,98655,98657,98659],{"class":462,"line":824},[460,98648,2125],{"class":900},[460,98650,1961],{"class":466},[460,98652,2130],{"class":900},[460,98654,2133],{"class":900},[460,98656,2136],{"class":900},[460,98658,2139],{"class":887},[460,98660,1966],{"class":466},[460,98662,98663,98665,98667,98669],{"class":462,"line":2074},[460,98664,2037],{"class":900},[460,98666,1961],{"class":466},[460,98668,2042],{"class":900},[460,98670,1966],{"class":466},[460,98672,98673,98675,98677,98679,98681,98683,98685],{"class":462,"line":2088},[460,98674,7192],{"class":900},[460,98676,1961],{"class":466},[460,98678,901],{"class":900},[460,98680,2017],{"class":887},[460,98682,7201],{"class":900},[460,98684,7204],{"class":900},[460,98686,1966],{"class":466},[460,98688,98689],{"class":462,"line":2103},[460,98690,509],{"class":466},[460,98692,98693],{"class":462,"line":2122},[460,98694,522],{"emptyLinePlaceholder":521},[460,98696,98697,98699],{"class":462,"line":2144},[460,98698,2207],{"class":929},[460,98700,1348],{"class":466},[460,98702,98703,98705,98707,98709],{"class":462,"line":2158},[460,98704,2288],{"class":900},[460,98706,1961],{"class":466},[460,98708,2293],{"class":900},[460,98710,1966],{"class":466},[460,98712,98713,98715,98717,98719],{"class":462,"line":2163},[460,98714,2673],{"class":900},[460,98716,1961],{"class":466},[460,98718,2605],{"class":900},[460,98720,1966],{"class":466},[460,98722,98723],{"class":462,"line":2168},[460,98724,509],{"class":466},[460,98726,98727],{"class":462,"line":2183},[460,98728,522],{"emptyLinePlaceholder":521},[460,98730,98731,98733,98735],{"class":462,"line":2194},[460,98732,2069],{"class":929},[460,98734,2313],{"class":470},[460,98736,1348],{"class":466},[460,98738,98739,98741,98743,98745,98747],{"class":462,"line":2199},[460,98740,2009],{"class":900},[460,98742,1961],{"class":466},[460,98744,7265],{"class":900},[460,98746,2017],{"class":887},[460,98748,1966],{"class":466},[460,98750,98751,98753,98755,98757,98759],{"class":462,"line":2204},[460,98752,5499],{"class":900},[460,98754,1961],{"class":466},[460,98756,7265],{"class":900},[460,98758,2017],{"class":887},[460,98760,1966],{"class":466},[460,98762,98763,98765,98767,98769,98771],{"class":462,"line":2212},[460,98764,2637],{"class":900},[460,98766,1961],{"class":466},[460,98768,7290],{"class":900},[460,98770,2017],{"class":887},[460,98772,1966],{"class":466},[460,98774,98775],{"class":462,"line":2257},[460,98776,509],{"class":466},[460,98778,98779],{"class":462,"line":2285},[460,98780,522],{"emptyLinePlaceholder":521},[460,98782,98783,98785,98787],{"class":462,"line":2298},[460,98784,2069],{"class":929},[460,98786,2348],{"class":929},[460,98788,1348],{"class":466},[460,98790,98791,98793,98795,98797,98799],{"class":462,"line":2303},[460,98792,2009],{"class":900},[460,98794,1961],{"class":466},[460,98796,5490],{"class":900},[460,98798,2017],{"class":887},[460,98800,1966],{"class":466},[460,98802,98803],{"class":462,"line":2308},[460,98804,509],{"class":466},[460,98806,98807],{"class":462,"line":2318},[460,98808,522],{"emptyLinePlaceholder":521},[460,98810,98811,98813,98815,98817],{"class":462,"line":2333},[460,98812,2069],{"class":929},[460,98814,2348],{"class":929},[460,98816,7339],{"class":929},[460,98818,1348],{"class":466},[460,98820,98821,98823,98825,98827],{"class":462,"line":2338},[460,98822,2037],{"class":900},[460,98824,1961],{"class":466},[460,98826,7350],{"class":900},[460,98828,1966],{"class":466},[460,98830,98831,98833,98835,98837,98839],{"class":462,"line":2343},[460,98832,1958],{"class":900},[460,98834,1961],{"class":466},[460,98836,907],{"class":900},[460,98838,2017],{"class":887},[460,98840,1966],{"class":466},[460,98842,98843,98845,98847,98849,98851],{"class":462,"line":2353},[460,98844,2356],{"class":900},[460,98846,1961],{"class":466},[460,98848,5531],{"class":900},[460,98850,2017],{"class":887},[460,98852,1966],{"class":466},[460,98854,98855,98857,98859,98861],{"class":462,"line":2368},[460,98856,2384],{"class":900},[460,98858,1961],{"class":466},[460,98860,7385],{"class":900},[460,98862,1966],{"class":466},[460,98864,98865],{"class":462,"line":2381},[460,98866,509],{"class":466},[460,98868,98869],{"class":462,"line":2394},[460,98870,522],{"emptyLinePlaceholder":521},[460,98872,98873,98875,98877],{"class":462,"line":2399},[460,98874,2069],{"class":929},[460,98876,2409],{"class":929},[460,98878,1363],{"class":466},[460,98880,98881,98883,98885],{"class":462,"line":2404},[460,98882,2069],{"class":929},[460,98884,7410],{"class":929},[460,98886,1348],{"class":466},[460,98888,98889,98891,98893,98895,98897],{"class":462,"line":2414},[460,98890,2356],{"class":900},[460,98892,1961],{"class":466},[460,98894,2361],{"class":900},[460,98896,2017],{"class":887},[460,98898,1966],{"class":466},[460,98900,98901,98903,98905,98907],{"class":462,"line":2428},[460,98902,2384],{"class":900},[460,98904,1961],{"class":466},[460,98906,2435],{"class":900},[460,98908,1966],{"class":466},[460,98910,98911,98913,98915,98917],{"class":462,"line":2440},[460,98912,7439],{"class":900},[460,98914,1961],{"class":466},[460,98916,901],{"class":900},[460,98918,1966],{"class":466},[460,98920,98921],{"class":462,"line":2445},[460,98922,509],{"class":466},[460,98924,98925],{"class":462,"line":2450},[460,98926,522],{"emptyLinePlaceholder":521},[460,98928,98929,98931,98933],{"class":462,"line":2460},[460,98930,2069],{"class":929},[460,98932,2455],{"class":929},[460,98934,1363],{"class":466},[460,98936,98937,98939,98941],{"class":462,"line":2473},[460,98938,2069],{"class":929},[460,98940,7468],{"class":929},[460,98942,1363],{"class":466},[460,98944,98945,98947],{"class":462,"line":2487},[460,98946,7475],{"class":929},[460,98948,1348],{"class":466},[460,98950,98951,98953,98955,98957],{"class":462,"line":2492},[460,98952,2463],{"class":900},[460,98954,1961],{"class":466},[460,98956,2468],{"class":1353},[460,98958,1966],{"class":466},[460,98960,98961,98963,98965,98967,98969],{"class":462,"line":2497},[460,98962,2356],{"class":900},[460,98964,1961],{"class":466},[460,98966,5531],{"class":900},[460,98968,2017],{"class":887},[460,98970,1966],{"class":466},[460,98972,98973],{"class":462,"line":2505},[460,98974,509],{"class":466},[460,98976,98977],{"class":462,"line":2516},[460,98978,522],{"emptyLinePlaceholder":521},[460,98980,98981,98983,98985],{"class":462,"line":2529},[460,98982,2069],{"class":929},[460,98984,7514],{"class":929},[460,98986,1348],{"class":466},[460,98988,98989,98991,98993,98995],{"class":462,"line":2542},[460,98990,7439],{"class":900},[460,98992,1961],{"class":466},[460,98994,907],{"class":900},[460,98996,1966],{"class":466},[460,98998,98999,99001,99003,99005],{"class":462,"line":2559},[460,99000,2384],{"class":900},[460,99002,1961],{"class":466},[460,99004,7535],{"class":900},[460,99006,1966],{"class":466},[460,99008,99009,99011,99013,99015,99017],{"class":462,"line":2564},[460,99010,2356],{"class":900},[460,99012,1961],{"class":466},[460,99014,2480],{"class":900},[460,99016,2017],{"class":887},[460,99018,1966],{"class":466},[460,99020,99021,99023,99025,99027,99029],{"class":462,"line":2569},[460,99022,2091],{"class":900},[460,99024,1961],{"class":466},[460,99026,2110],{"class":900},[460,99028,2017],{"class":887},[460,99030,1966],{"class":466},[460,99032,99033],{"class":462,"line":2579},[460,99034,509],{"class":466},[460,99036,99037],{"class":462,"line":2597},[460,99038,522],{"emptyLinePlaceholder":521},[460,99040,99041,99043,99045],{"class":462,"line":2610},[460,99042,2069],{"class":929},[460,99044,7576],{"class":929},[460,99046,1348],{"class":466},[460,99048,99049,99051,99053,99055],{"class":462,"line":2621},[460,99050,7439],{"class":900},[460,99052,1961],{"class":466},[460,99054,901],{"class":900},[460,99056,1966],{"class":466},[460,99058,99059,99061,99063,99065],{"class":462,"line":2634},[460,99060,2384],{"class":900},[460,99062,1961],{"class":466},[460,99064,7597],{"class":900},[460,99066,1966],{"class":466},[460,99068,99069],{"class":462,"line":2648},[460,99070,509],{"class":466},[460,99072,99073],{"class":462,"line":2653},[460,99074,522],{"emptyLinePlaceholder":521},[460,99076,99077,99079],{"class":462,"line":2658},[460,99078,7612],{"class":929},[460,99080,1348],{"class":466},[460,99082,99083,99085,99087,99089,99091],{"class":462,"line":2670},[460,99084,2009],{"class":900},[460,99086,1961],{"class":466},[460,99088,2014],{"class":900},[460,99090,2017],{"class":887},[460,99092,1966],{"class":466},[460,99094,99095,99097,99099,99101,99103],{"class":462,"line":2683},[460,99096,1971],{"class":900},[460,99098,1961],{"class":466},[460,99100,936],{"class":900},[460,99102,2030],{"class":900},[460,99104,1966],{"class":466},[460,99106,99107,99109,99111,99113],{"class":462,"line":2695},[460,99108,2037],{"class":900},[460,99110,1961],{"class":466},[460,99112,2042],{"class":900},[460,99114,1966],{"class":466},[460,99116,99117,99119,99121,99123],{"class":462,"line":2700},[460,99118,7653],{"class":900},[460,99120,1961],{"class":466},[460,99122,7658],{"class":900},[460,99124,1966],{"class":466},[460,99126,99127,99129,99131,99133,99135,99137,99139],{"class":462,"line":2709},[460,99128,7665],{"class":900},[460,99130,1961],{"class":466},[460,99132,901],{"class":900},[460,99134,2017],{"class":887},[460,99136,7201],{"class":900},[460,99138,7676],{"class":900},[460,99140,1966],{"class":466},[460,99142,99143,99145,99147,99149,99151],{"class":462,"line":2718},[460,99144,1958],{"class":900},[460,99146,1961],{"class":466},[460,99148,2110],{"class":900},[460,99150,2017],{"class":887},[460,99152,1966],{"class":466},[460,99154,99155],{"class":462,"line":2723},[460,99156,509],{"class":466},[460,99158,99159],{"class":462,"line":2732},[460,99160,522],{"emptyLinePlaceholder":521},[460,99162,99163,99165,99167],{"class":462,"line":2750},[460,99164,7612],{"class":929},[460,99166,7705],{"class":929},[460,99168,1348],{"class":466},[460,99170,99171,99173,99175,99177,99179],{"class":462,"line":2782},[460,99172,2356],{"class":900},[460,99174,1961],{"class":466},[460,99176,2361],{"class":900},[460,99178,2017],{"class":887},[460,99180,1966],{"class":466},[460,99182,99183,99185,99187,99189],{"class":462,"line":2809},[460,99184,2384],{"class":900},[460,99186,1961],{"class":466},[460,99188,2435],{"class":900},[460,99190,1966],{"class":466},[460,99192,99193,99195,99197,99199],{"class":462,"line":2836},[460,99194,7734],{"class":900},[460,99196,1961],{"class":466},[460,99198,7739],{"class":900},[460,99200,1966],{"class":466},[460,99202,99203,99205,99207,99209,99211],{"class":462,"line":2856},[460,99204,2637],{"class":900},[460,99206,1961],{"class":466},[460,99208,2549],{"class":900},[460,99210,2017],{"class":887},[460,99212,1966],{"class":466},[460,99214,99215],{"class":462,"line":2865},[460,99216,509],{"class":466},[460,99218,99219,99221,99223],{"class":462,"line":2881},[460,99220,581],{"class":466},[460,99222,1944],{"class":470},[460,99224,473],{"class":466},[460,99226,99227,99229,99231],{"class":462,"line":2887},[460,99228,1776],{"class":466},[460,99230,1880],{"class":470},[460,99232,473],{"class":466},[460,99234,99235],{"class":462,"line":2893},[460,99236,522],{"emptyLinePlaceholder":521},[460,99238,99239,99241,99243],{"class":462,"line":2899},[460,99240,781],{"class":466},[460,99242,1721],{"class":470},[460,99244,473],{"class":466},[460,99246,99247,99249,99251,99253,99255,99257],{"class":462,"line":2905},[460,99248,467],{"class":466},[460,99250,2737],{"class":470},[460,99252,2740],{"class":929},[460,99254,894],{"class":466},[460,99256,2876],{"class":1353},[460,99258,473],{"class":466},[460,99260,99261,99263,99265],{"class":462,"line":2911},[460,99262,581],{"class":466},[460,99264,2737],{"class":470},[460,99266,473],{"class":466},[460,99268,99269,99271,99273,99275,99277,99279],{"class":462,"line":2920},[460,99270,467],{"class":466},[460,99272,2737],{"class":470},[460,99274,2740],{"class":929},[460,99276,894],{"class":466},[460,99278,7820],{"class":1353},[460,99280,473],{"class":466},[460,99282,99283,99285,99287,99289,99291,99293,99295,99297,99299,99301,99303,99305],{"class":462,"line":2929},[460,99284,2753],{"class":466},[460,99286,2737],{"class":470},[460,99288,7831],{"class":466},[460,99290,460],{"class":470},[460,99292,2740],{"class":929},[460,99294,894],{"class":466},[460,99296,7840],{"class":1353},[460,99298,5599],{"class":466},[460,99300,460],{"class":470},[460,99302,5599],{"class":466},[460,99304,2737],{"class":470},[460,99306,473],{"class":466},[460,99308,99309,99311,99313],{"class":462,"line":2935},[460,99310,581],{"class":466},[460,99312,2737],{"class":470},[460,99314,473],{"class":466},[460,99316,99317,99319,99321],{"class":462,"line":2948},[460,99318,467],{"class":466},[460,99320,225],{"class":470},[460,99322,473],{"class":466},[460,99324,99325,99327,99329,99331],{"class":462,"line":2954},[460,99326,1340],{"class":887},[460,99328,2940],{"class":900},[460,99330,2943],{"class":887},[460,99332,1385],{"class":466},[460,99334,99335],{"class":462,"line":2965},[460,99336,2951],{"class":466},[460,99338,99339,99341,99343],{"class":462,"line":2976},[460,99340,2957],{"class":466},[460,99342,2960],{"class":1353},[460,99344,1363],{"class":466},[460,99346,99347,99349,99351],{"class":462,"line":2987},[460,99348,2968],{"class":466},[460,99350,2971],{"class":1353},[460,99352,1363],{"class":466},[460,99354,99355,99357,99359],{"class":462,"line":2998},[460,99356,2979],{"class":466},[460,99358,7903],{"class":900},[460,99360,1363],{"class":466},[460,99362,99363,99365,99367],{"class":462,"line":3003},[460,99364,2990],{"class":466},[460,99366,2993],{"class":1353},[460,99368,1363],{"class":466},[460,99370,99371,99373,99375],{"class":462,"line":3008},[460,99372,7918],{"class":466},[460,99374,907],{"class":900},[460,99376,1363],{"class":466},[460,99378,99379,99381,99383],{"class":462,"line":3018},[460,99380,7927],{"class":466},[460,99382,7930],{"class":1353},[460,99384,5635],{"class":466},[460,99386,99387],{"class":462,"line":3028},[460,99388,1293],{"class":466},[460,99390,99391],{"class":462,"line":3038},[460,99392,2951],{"class":466},[460,99394,99395,99397,99399],{"class":462,"line":3048},[460,99396,2957],{"class":466},[460,99398,3063],{"class":1353},[460,99400,1363],{"class":466},[460,99402,99403,99405,99407],{"class":462,"line":3053},[460,99404,2968],{"class":466},[460,99406,3073],{"class":1353},[460,99408,1363],{"class":466},[460,99410,99411,99413,99415],{"class":462,"line":3058},[460,99412,2979],{"class":466},[460,99414,7963],{"class":900},[460,99416,1363],{"class":466},[460,99418,99419,99421,99423],{"class":462,"line":3068},[460,99420,2990],{"class":466},[460,99422,3093],{"class":1353},[460,99424,1363],{"class":466},[460,99426,99427,99429,99431],{"class":462,"line":3078},[460,99428,7918],{"class":466},[460,99430,913],{"class":900},[460,99432,1363],{"class":466},[460,99434,99435,99437,99439,99441,99443],{"class":462,"line":3088},[460,99436,7986],{"class":466},[460,99438,5626],{"class":1353},[460,99440,5629],{"class":466},[460,99442,5632],{"class":1353},[460,99444,5635],{"class":466},[460,99446,99447],{"class":462,"line":3098},[460,99448,1293],{"class":466},[460,99450,99451],{"class":462,"line":3103},[460,99452,2951],{"class":466},[460,99454,99455,99457,99459],{"class":462,"line":3108},[460,99456,2957],{"class":466},[460,99458,3113],{"class":1353},[460,99460,1363],{"class":466},[460,99462,99463,99465,99467],{"class":462,"line":3118},[460,99464,2968],{"class":466},[460,99466,3123],{"class":1353},[460,99468,1363],{"class":466},[460,99470,99471,99473,99475],{"class":462,"line":3128},[460,99472,2979],{"class":466},[460,99474,8025],{"class":900},[460,99476,1363],{"class":466},[460,99478,99479,99481,99483],{"class":462,"line":3138},[460,99480,2990],{"class":466},[460,99482,3143],{"class":1353},[460,99484,1363],{"class":466},[460,99486,99487,99489,99491],{"class":462,"line":3148},[460,99488,7918],{"class":466},[460,99490,901],{"class":900},[460,99492,1363],{"class":466},[460,99494,99495,99497,99499,99501,99503],{"class":462,"line":3153},[460,99496,7927],{"class":466},[460,99498,8050],{"class":1353},[460,99500,8053],{"class":466},[460,99502,8056],{"class":1353},[460,99504,5635],{"class":466},[460,99506,99507],{"class":462,"line":3158},[460,99508,1293],{"class":466},[460,99510,99511],{"class":462,"line":3168},[460,99512,2951],{"class":466},[460,99514,99515,99517,99519],{"class":462,"line":3178},[460,99516,2957],{"class":466},[460,99518,3163],{"class":1353},[460,99520,1363],{"class":466},[460,99522,99523,99525,99527],{"class":462,"line":3188},[460,99524,2968],{"class":466},[460,99526,3173],{"class":1353},[460,99528,1363],{"class":466},[460,99530,99531,99533,99535],{"class":462,"line":3198},[460,99532,2979],{"class":466},[460,99534,8089],{"class":900},[460,99536,1363],{"class":466},[460,99538,99539,99541,99543],{"class":462,"line":3203},[460,99540,2990],{"class":466},[460,99542,3193],{"class":1353},[460,99544,1363],{"class":466},[460,99546,99547,99549,99551],{"class":462,"line":3208},[460,99548,7918],{"class":466},[460,99550,901],{"class":900},[460,99552,1363],{"class":466},[460,99554,99555,99557,99559,99561,99563],{"class":462,"line":3218},[460,99556,7986],{"class":466},[460,99558,8114],{"class":1353},[460,99560,5629],{"class":466},[460,99562,8119],{"class":1353},[460,99564,8122],{"class":466},[460,99566,99567,99569],{"class":462,"line":3228},[460,99568,8127],{"class":466},[460,99570,8130],{"class":1353},[460,99572,99573],{"class":462,"line":3238},[460,99574,552],{"class":466},[460,99576,99577],{"class":462,"line":3248},[460,99578,3355],{"class":466},[460,99580,99581],{"class":462,"line":3253},[460,99582,8143],{"class":942},[460,99584,99585,99587,99589,99591,99593,99595,99597,99599,99601,99603,99605,99607],{"class":462,"line":3258},[460,99586,3586],{"class":466},[460,99588,3541],{"class":929},[460,99590,2174],{"class":466},[460,99592,3546],{"class":1353},[460,99594,3549],{"class":466},[460,99596,894],{"class":887},[460,99598,3723],{"class":466},[460,99600,6864],{"class":929},[460,99602,2174],{"class":466},[460,99604,3423],{"class":3380},[460,99606,3426],{"class":887},[460,99608,1348],{"class":466},[460,99610,99611],{"class":462,"line":3268},[460,99612,8174],{"class":942},[460,99614,99615,99617,99619,99621,99623,99625,99627,99629,99631,99633,99635,99637,99639,99641,99643,99645],{"class":462,"line":3278},[460,99616,3625],{"class":887},[460,99618,3437],{"class":466},[460,99620,3450],{"class":900},[460,99622,904],{"class":466},[460,99624,3440],{"class":900},[460,99626,904],{"class":466},[460,99628,8191],{"class":900},[460,99630,904],{"class":466},[460,99632,3445],{"class":900},[460,99634,904],{"class":466},[460,99636,8200],{"class":900},[460,99638,904],{"class":466},[460,99640,8205],{"class":900},[460,99642,3453],{"class":466},[460,99644,894],{"class":887},[460,99646,3458],{"class":466},[460,99648,99649],{"class":462,"line":3288},[460,99650,8216],{"class":942},[460,99652,99653,99655,99657,99659,99661,99663,99665,99667,99669,99671],{"class":462,"line":3298},[460,99654,3625],{"class":887},[460,99656,8223],{"class":900},[460,99658,2943],{"class":887},[460,99660,5663],{"class":466},[460,99662,5666],{"class":929},[460,99664,5669],{"class":466},[460,99666,5672],{"class":929},[460,99668,2174],{"class":466},[460,99670,5677],{"class":1353},[460,99672,3754],{"class":466},[460,99674,99675],{"class":462,"line":3303},[460,99676,8244],{"class":942},[460,99678,99679,99681,99683,99685,99687,99689,99691,99693,99695,99697,99699,99701,99703,99705,99707,99709,99711,99713,99715,99717,99719,99721,99723,99725],{"class":462,"line":3308},[460,99680,3625],{"class":887},[460,99682,6846],{"class":900},[460,99684,2943],{"class":887},[460,99686,8255],{"class":466},[460,99688,8258],{"class":887},[460,99690,6851],{"class":466},[460,99692,6854],{"class":929},[460,99694,2174],{"class":466},[460,99696,8267],{"class":1353},[460,99698,3596],{"class":466},[460,99700,6864],{"class":929},[460,99702,2174],{"class":466},[460,99704,3423],{"class":3380},[460,99706,3426],{"class":887},[460,99708,8280],{"class":1353},[460,99710,3423],{"class":466},[460,99712,8285],{"class":1353},[460,99714,3596],{"class":466},[460,99716,5672],{"class":929},[460,99718,2174],{"class":466},[460,99720,6887],{"class":1353},[460,99722,8296],{"class":466},[460,99724,1357],{"class":887},[460,99726,3403],{"class":1353},[460,99728,99729],{"class":462,"line":3318},[460,99730,8305],{"class":942},[460,99732,99733,99735,99737,99739,99741,99743,99745,99747,99749,99751,99753,99755,99757,99759,99761],{"class":462,"line":3328},[460,99734,3625],{"class":887},[460,99736,8312],{"class":900},[460,99738,2943],{"class":887},[460,99740,8317],{"class":466},[460,99742,8320],{"class":887},[460,99744,3751],{"class":900},[460,99746,8325],{"class":887},[460,99748,8328],{"class":466},[460,99750,8331],{"class":887},[460,99752,3751],{"class":900},[460,99754,3596],{"class":466},[460,99756,8338],{"class":929},[460,99758,2174],{"class":466},[460,99760,907],{"class":900},[460,99762,3754],{"class":466},[460,99764,99765],{"class":462,"line":3337},[460,99766,522],{"emptyLinePlaceholder":521},[460,99768,99769,99771],{"class":462,"line":3347},[460,99770,8353],{"class":887},[460,99772,3470],{"class":1353},[460,99774,99775],{"class":462,"line":3352},[460,99776,8360],{"class":1353},[460,99778,99779,99781,99783],{"class":462,"line":3358},[460,99780,8365],{"class":1353},[460,99782,3450],{"class":466},[460,99784,3487],{"class":1353},[460,99786,99787,99789,99791,99793,99795],{"class":462,"line":3363},[460,99788,8374],{"class":1353},[460,99790,3440],{"class":466},[460,99792,8379],{"class":1353},[460,99794,6393],{"class":466},[460,99796,3498],{"class":1353},[460,99798,99799,99801,99803],{"class":462,"line":3369},[460,99800,8388],{"class":1353},[460,99802,8391],{"class":466},[460,99804,3498],{"class":1353},[460,99806,99807,99809,99811,99813,99815,99817,99819,99821],{"class":462,"line":3386},[460,99808,8398],{"class":1353},[460,99810,3445],{"class":466},[460,99812,6000],{"class":1353},[460,99814,8338],{"class":929},[460,99816,2174],{"class":1353},[460,99818,907],{"class":900},[460,99820,8411],{"class":1353},[460,99822,3498],{"class":1353},[460,99824,99825,99827,99829],{"class":462,"line":3392},[460,99826,8418],{"class":1353},[460,99828,8191],{"class":466},[460,99830,3498],{"class":1353},[460,99832,99833,99835,99837],{"class":462,"line":3406},[460,99834,8427],{"class":1353},[460,99836,8430],{"class":466},[460,99838,3498],{"class":1353},[460,99840,99841],{"class":462,"line":3412},[460,99842,8437],{"class":1353},[460,99844,99845],{"class":462,"line":3431},[460,99846,8442],{"class":1353},[460,99848,99849,99851,99853,99855,99857],{"class":462,"line":3461},[460,99850,8447],{"class":466},[460,99852,5672],{"class":929},[460,99854,2174],{"class":466},[460,99856,6887],{"class":1353},[460,99858,3754],{"class":466},[460,99860,99861],{"class":462,"line":3473},[460,99862,8460],{"class":942},[460,99864,99865,99867,99869,99871,99873,99875,99877,99879,99881,99883,99885,99887,99889,99891,99893,99895,99897,99899,99901,99903,99905,99907,99909],{"class":462,"line":3479},[460,99866,1340],{"class":887},[460,99868,8467],{"class":900},[460,99870,2943],{"class":887},[460,99872,3723],{"class":466},[460,99874,8474],{"class":929},[460,99876,8477],{"class":466},[460,99878,8480],{"class":3380},[460,99880,904],{"class":466},[460,99882,3423],{"class":3380},[460,99884,8296],{"class":466},[460,99886,8489],{"class":887},[460,99888,8492],{"class":466},[460,99890,8495],{"class":887},[460,99892,8498],{"class":466},[460,99894,8320],{"class":887},[460,99896,3751],{"class":900},[460,99898,8325],{"class":887},[460,99900,8507],{"class":466},[460,99902,8331],{"class":887},[460,99904,3751],{"class":900},[460,99906,904],{"class":466},[460,99908,936],{"class":900},[460,99910,3754],{"class":466},[460,99912,99913,99915,99917,99919,99921,99923,99925,99927,99929,99931,99933],{"class":462,"line":3490},[460,99914,3586],{"class":466},[460,99916,3541],{"class":929},[460,99918,2174],{"class":466},[460,99920,8528],{"class":1353},[460,99922,3549],{"class":466},[460,99924,894],{"class":887},[460,99926,8535],{"class":466},[460,99928,8338],{"class":929},[460,99930,2174],{"class":466},[460,99932,907],{"class":900},[460,99934,3754],{"class":466},[460,99936,99937,99939,99941],{"class":462,"line":3501},[460,99938,581],{"class":466},[460,99940,225],{"class":470},[460,99942,473],{"class":466},[460,99944,99945,99947,99949],{"class":462,"line":3511},[460,99946,1776],{"class":466},[460,99948,1721],{"class":470},[460,99950,473],{"class":466},[460,99952,99953],{"class":462,"line":3517},[460,99954,522],{"emptyLinePlaceholder":521},[460,99956,99957,99959,99961],{"class":462,"line":3523},[460,99958,1776],{"class":466},[460,99960,704],{"class":470},[460,99962,473],{"class":466},[18,99964,8575],{"id":8574},[23,99966,8579],{"id":8578},[14,99968,99969,8585],{},[3944,99970,8584],{},[14,99972,8588],{},[14,99974,99975],{},[30,99976],{"alt":32,"src":8593},[23,99978,8597],{"id":8596},[14,99980,8600],{},[14,99982,99983],{},[30,99984],{"alt":32,"src":8605},[14,99986,8608],{},[40,99988,99989,99991,99993],{},[43,99990,8613],{},[43,99992,8616],{},[43,99994,8619],{},[23,99996,8623],{"id":8622},[14,99998,99999],{},[30,100000],{"alt":32,"src":8628},[18,100002,8632],{"id":8631},[14,100004,100005],{},[30,100006],{"alt":32,"src":8637},[14,100008,100009],{},[30,100010],{"alt":32,"src":8642},[14,100012,8645],{},[14,100014,100015],{},[30,100016],{"alt":32,"src":8650},[18,100018,8654],{"id":8653},[23,100020,8658],{"id":8657},[14,100022,8661],{},[14,100024,100025],{},[30,100026],{"alt":32,"src":8666},[14,100028,100029],{},[30,100030],{"alt":32,"src":8671},[14,100032,8674],{},[14,100034,8677],{},[14,100036,8680],{},[451,100038,100039],{"className":453,"code":8683,"language":455,"meta":32,"style":32},[457,100040,100041,100049,100053,100061,100065,100069,100073,100077,100081,100085,100089,100093,100097,100101,100105,100109,100113,100117,100121,100125,100129,100137],{"__ignoreMap":32},[460,100042,100043,100045,100047],{"class":462,"line":463},[460,100044,781],{"class":466},[460,100046,1721],{"class":470},[460,100048,473],{"class":466},[460,100050,100051],{"class":462,"line":476},[460,100052,8698],{"class":942},[460,100054,100055,100057,100059],{"class":462,"line":482},[460,100056,467],{"class":466},[460,100058,225],{"class":470},[460,100060,473],{"class":466},[460,100062,100063],{"class":462,"line":488},[460,100064,8711],{"class":466},[460,100066,100067],{"class":462,"line":494},[460,100068,8716],{"class":466},[460,100070,100071],{"class":462,"line":500},[460,100072,8721],{"class":466},[460,100074,100075],{"class":462,"line":506},[460,100076,8726],{"class":466},[460,100078,100079],{"class":462,"line":512},[460,100080,8731],{"class":466},[460,100082,100083],{"class":462,"line":518},[460,100084,522],{"emptyLinePlaceholder":521},[460,100086,100087],{"class":462,"line":525},[460,100088,8740],{"class":466},[460,100090,100091],{"class":462,"line":531},[460,100092,509],{"class":466},[460,100094,100095],{"class":462,"line":537},[460,100096,8749],{"class":466},[460,100098,100099],{"class":462,"line":543},[460,100100,8754],{"class":466},[460,100102,100103],{"class":462,"line":549},[460,100104,509],{"class":466},[460,100106,100107],{"class":462,"line":555},[460,100108,8763],{"class":466},[460,100110,100111],{"class":462,"line":560},[460,100112,8768],{"class":466},[460,100114,100115],{"class":462,"line":566},[460,100116,8773],{"class":466},[460,100118,100119],{"class":462,"line":572},[460,100120,8778],{"class":466},[460,100122,100123],{"class":462,"line":578},[460,100124,8783],{"class":466},[460,100126,100127],{"class":462,"line":812},[460,100128,522],{"emptyLinePlaceholder":521},[460,100130,100131,100133,100135],{"class":462,"line":818},[460,100132,581],{"class":466},[460,100134,225],{"class":470},[460,100136,473],{"class":466},[460,100138,100139,100141,100143],{"class":462,"line":824},[460,100140,1776],{"class":466},[460,100142,1721],{"class":470},[460,100144,473],{"class":466},[14,100146,100147],{},[30,100148],{"alt":32,"src":8808},[451,100150,100151],{"className":453,"code":8811,"language":455,"meta":32,"style":32},[457,100152,100153,100161,100169,100173,100177,100181,100185,100189,100193,100197,100201,100205,100209,100213,100217,100221,100225,100233],{"__ignoreMap":32},[460,100154,100155,100157,100159],{"class":462,"line":463},[460,100156,781],{"class":466},[460,100158,1721],{"class":470},[460,100160,473],{"class":466},[460,100162,100163,100165,100167],{"class":462,"line":476},[460,100164,467],{"class":466},[460,100166,225],{"class":470},[460,100168,473],{"class":466},[460,100170,100171],{"class":462,"line":482},[460,100172,8834],{"class":466},[460,100174,100175],{"class":462,"line":488},[460,100176,8839],{"class":466},[460,100178,100179],{"class":462,"line":494},[460,100180,8844],{"class":466},[460,100182,100183],{"class":462,"line":500},[460,100184,8849],{"class":466},[460,100186,100187],{"class":462,"line":506},[460,100188,509],{"class":466},[460,100190,100191],{"class":462,"line":512},[460,100192,8858],{"class":466},[460,100194,100195],{"class":462,"line":518},[460,100196,8863],{"class":466},[460,100198,100199],{"class":462,"line":525},[460,100200,8868],{"class":466},[460,100202,100203],{"class":462,"line":531},[460,100204,522],{"emptyLinePlaceholder":521},[460,100206,100207],{"class":462,"line":537},[460,100208,8877],{"class":466},[460,100210,100211],{"class":462,"line":543},[460,100212,8754],{"class":466},[460,100214,100215],{"class":462,"line":549},[460,100216,509],{"class":466},[460,100218,100219],{"class":462,"line":555},[460,100220,8890],{"class":466},[460,100222,100223],{"class":462,"line":560},[460,100224,522],{"emptyLinePlaceholder":521},[460,100226,100227,100229,100231],{"class":462,"line":566},[460,100228,581],{"class":466},[460,100230,225],{"class":470},[460,100232,473],{"class":466},[460,100234,100235,100237,100239],{"class":462,"line":572},[460,100236,1776],{"class":466},[460,100238,1721],{"class":470},[460,100240,473],{"class":466},[14,100242,8913],{},[14,100244,8916],{},[23,100246,8920],{"id":8919},[14,100248,100249],{},[30,100250],{"alt":32,"src":8925},[451,100252,100253],{"className":453,"code":8928,"language":455,"meta":32,"style":32},[457,100254,100255,100263,100271,100275,100279,100283,100287,100291,100295,100299,100303,100307,100311,100315,100319,100323,100327,100331,100335,100339,100343,100347,100351,100355,100359,100363,100367,100371,100375,100379,100383,100391],{"__ignoreMap":32},[460,100256,100257,100259,100261],{"class":462,"line":463},[460,100258,781],{"class":466},[460,100260,1721],{"class":470},[460,100262,473],{"class":466},[460,100264,100265,100267,100269],{"class":462,"line":476},[460,100266,467],{"class":466},[460,100268,225],{"class":470},[460,100270,473],{"class":466},[460,100272,100273],{"class":462,"line":482},[460,100274,8951],{"class":466},[460,100276,100277],{"class":462,"line":488},[460,100278,8956],{"class":466},[460,100280,100281],{"class":462,"line":494},[460,100282,8961],{"class":466},[460,100284,100285],{"class":462,"line":500},[460,100286,8966],{"class":466},[460,100288,100289],{"class":462,"line":506},[460,100290,8971],{"class":466},[460,100292,100293],{"class":462,"line":512},[460,100294,8976],{"class":466},[460,100296,100297],{"class":462,"line":518},[460,100298,8981],{"class":466},[460,100300,100301],{"class":462,"line":525},[460,100302,8986],{"class":466},[460,100304,100305],{"class":462,"line":531},[460,100306,8991],{"class":466},[460,100308,100309],{"class":462,"line":537},[460,100310,8996],{"class":466},[460,100312,100313],{"class":462,"line":543},[460,100314,509],{"class":466},[460,100316,100317],{"class":462,"line":549},[460,100318,9005],{"class":466},[460,100320,100321],{"class":462,"line":555},[460,100322,9010],{"class":466},[460,100324,100325],{"class":462,"line":560},[460,100326,9015],{"class":466},[460,100328,100329],{"class":462,"line":566},[460,100330,9020],{"class":466},[460,100332,100333],{"class":462,"line":572},[460,100334,509],{"class":466},[460,100336,100337],{"class":462,"line":578},[460,100338,9029],{"class":466},[460,100340,100341],{"class":462,"line":812},[460,100342,9034],{"class":466},[460,100344,100345],{"class":462,"line":818},[460,100346,9039],{"class":466},[460,100348,100349],{"class":462,"line":824},[460,100350,9044],{"class":466},[460,100352,100353],{"class":462,"line":2074},[460,100354,509],{"class":466},[460,100356,100357],{"class":462,"line":2088},[460,100358,9053],{"class":466},[460,100360,100361],{"class":462,"line":2103},[460,100362,9058],{"class":466},[460,100364,100365],{"class":462,"line":2122},[460,100366,9063],{"class":466},[460,100368,100369],{"class":462,"line":2144},[460,100370,9068],{"class":466},[460,100372,100373],{"class":462,"line":2158},[460,100374,509],{"class":466},[460,100376,100377],{"class":462,"line":2163},[460,100378,9077],{"class":466},[460,100380,100381],{"class":462,"line":2168},[460,100382,522],{"emptyLinePlaceholder":521},[460,100384,100385,100387,100389],{"class":462,"line":2183},[460,100386,581],{"class":466},[460,100388,225],{"class":470},[460,100390,473],{"class":466},[460,100392,100393,100395,100397],{"class":462,"line":2194},[460,100394,1776],{"class":466},[460,100396,1721],{"class":470},[460,100398,473],{"class":466},[14,100400,100401],{},[30,100402],{"alt":32,"src":9102},[23,100404,9106],{"id":9105},[14,100406,9109],{},[14,100408,100409],{},[30,100410],{"alt":32,"src":9114},[451,100412,100413],{"className":453,"code":9117,"language":455,"meta":32,"style":32},[457,100414,100415,100423,100431,100435,100439,100443,100447,100451,100455,100463],{"__ignoreMap":32},[460,100416,100417,100419,100421],{"class":462,"line":463},[460,100418,781],{"class":466},[460,100420,1721],{"class":470},[460,100422,473],{"class":466},[460,100424,100425,100427,100429],{"class":462,"line":476},[460,100426,467],{"class":466},[460,100428,225],{"class":470},[460,100430,473],{"class":466},[460,100432,100433],{"class":462,"line":482},[460,100434,9140],{"class":466},[460,100436,100437],{"class":462,"line":488},[460,100438,9145],{"class":466},[460,100440,100441],{"class":462,"line":494},[460,100442,509],{"class":466},[460,100444,100445],{"class":462,"line":500},[460,100446,9154],{"class":466},[460,100448,100449],{"class":462,"line":506},[460,100450,9159],{"class":466},[460,100452,100453],{"class":462,"line":512},[460,100454,9164],{"class":466},[460,100456,100457,100459,100461],{"class":462,"line":518},[460,100458,581],{"class":466},[460,100460,225],{"class":470},[460,100462,473],{"class":466},[460,100464,100465,100467,100469],{"class":462,"line":525},[460,100466,1776],{"class":466},[460,100468,1721],{"class":470},[460,100470,473],{"class":466},[14,100472,100473],{},[30,100474],{"alt":32,"src":9185},[14,100476,9188],{},[451,100478,100479],{"className":453,"code":9191,"language":455,"meta":32,"style":32},[457,100480,100481,100489,100493,100497,100501,100505,100509,100513,100517,100521,100525,100529,100533,100537,100541,100545,100549,100553,100557,100561,100565,100569,100573,100577,100581,100585],{"__ignoreMap":32},[460,100482,100483,100485,100487],{"class":462,"line":463},[460,100484,467],{"class":466},[460,100486,225],{"class":470},[460,100488,473],{"class":466},[460,100490,100491],{"class":462,"line":476},[460,100492,9140],{"class":466},[460,100494,100495],{"class":462,"line":482},[460,100496,9145],{"class":466},[460,100498,100499],{"class":462,"line":488},[460,100500,509],{"class":466},[460,100502,100503],{"class":462,"line":494},[460,100504,9218],{"class":466},[460,100506,100507],{"class":462,"line":500},[460,100508,9223],{"class":466},[460,100510,100511],{"class":462,"line":506},[460,100512,9228],{"class":466},[460,100514,100515],{"class":462,"line":512},[460,100516,522],{"emptyLinePlaceholder":521},[460,100518,100519],{"class":462,"line":518},[460,100520,9237],{"class":466},[460,100522,100523],{"class":462,"line":525},[460,100524,9242],{"class":466},[460,100526,100527],{"class":462,"line":531},[460,100528,9247],{"class":466},[460,100530,100531],{"class":462,"line":537},[460,100532,9252],{"class":466},[460,100534,100535],{"class":462,"line":543},[460,100536,9257],{"class":466},[460,100538,100539],{"class":462,"line":549},[460,100540,9262],{"class":466},[460,100542,100543],{"class":462,"line":555},[460,100544,9252],{"class":466},[460,100546,100547],{"class":462,"line":560},[460,100548,9159],{"class":466},[460,100550,100551],{"class":462,"line":566},[460,100552,9275],{"class":466},[460,100554,100555],{"class":462,"line":572},[460,100556,9280],{"class":466},[460,100558,100559],{"class":462,"line":578},[460,100560,9285],{"class":466},[460,100562,100563],{"class":462,"line":812},[460,100564,1293],{"class":466},[460,100566,100567],{"class":462,"line":818},[460,100568,9294],{"class":466},[460,100570,100571],{"class":462,"line":824},[460,100572,9299],{"class":466},[460,100574,100575],{"class":462,"line":2074},[460,100576,552],{"class":466},[460,100578,100579],{"class":462,"line":2088},[460,100580,509],{"class":466},[460,100582,100583],{"class":462,"line":2103},[460,100584,9159],{"class":466},[460,100586,100587,100589,100591],{"class":462,"line":2122},[460,100588,581],{"class":466},[460,100590,225],{"class":470},[460,100592,473],{"class":466},[14,100594,9322],{},[14,100596,100597],{},[30,100598],{"alt":32,"src":9327},[14,100600,9330],{},[14,100602,9333],{},[451,100604,100605],{"className":9336,"code":9337,"language":9338,"meta":32,"style":32},[457,100606,100607,100619,100623,100627,100637,100649,100653,100663,100675,100679],{"__ignoreMap":32},[460,100608,100609,100611,100613,100615,100617],{"class":462,"line":463},[460,100610,9345],{"class":900},[460,100612,6000],{"class":466},[460,100614,9350],{"class":900},[460,100616,2943],{"class":887},[460,100618,1348],{"class":466},[460,100620,100621],{"class":462,"line":476},[460,100622,9359],{"class":942},[460,100624,100625],{"class":462,"line":482},[460,100626,9364],{"class":466},[460,100628,100629,100631,100633,100635],{"class":462,"line":488},[460,100630,9369],{"class":929},[460,100632,1961],{"class":466},[460,100634,3976],{"class":887},[460,100636,9376],{"class":466},[460,100638,100639,100641,100643,100645,100647],{"class":462,"line":494},[460,100640,9381],{"class":466},[460,100642,930],{"class":929},[460,100644,2174],{"class":466},[460,100646,9388],{"class":1353},[460,100648,3754],{"class":466},[460,100650,100651],{"class":462,"line":500},[460,100652,9395],{"class":466},[460,100654,100655,100657,100659,100661],{"class":462,"line":506},[460,100656,9400],{"class":929},[460,100658,1961],{"class":466},[460,100660,3976],{"class":887},[460,100662,9376],{"class":466},[460,100664,100665,100667,100669,100671,100673],{"class":462,"line":512},[460,100666,9411],{"class":466},[460,100668,930],{"class":929},[460,100670,2174],{"class":466},[460,100672,9418],{"class":1353},[460,100674,3754],{"class":466},[460,100676,100677],{"class":462,"line":518},[460,100678,815],{"class":466},[460,100680,100681],{"class":462,"line":525},[460,100682,821],{"class":466},[14,100684,100685],{},[30,100686],{"alt":32,"src":9433},[14,100688,9436],{},[14,100690,9439],{},[14,100692,9442],{},[14,100694,9445],{},[14,100696,100697],{},[30,100698],{"alt":32,"src":9450},[14,100700,100701],{},[30,100702],{"alt":32,"src":9455},[14,100704,9458],{},[14,100706,100707],{},[30,100708],{"alt":32,"src":9463},[14,100710,100711],{},[30,100712],{"alt":32,"src":9468},[14,100714,100715],{},[30,100716],{"alt":32,"src":9473},[23,100718,9477],{"id":9476},[14,100720,9480],{},[14,100722,9483],{},[14,100724,100725],{},[30,100726],{"alt":32,"src":9488},[14,100728,100729],{},[30,100730],{"alt":32,"src":9493},[14,100732,100733],{},[30,100734],{"alt":32,"src":9498},[14,100736,100737],{},[30,100738],{"alt":32,"src":9503},[451,100740,100741],{"className":453,"code":9506,"language":455,"meta":32,"style":32},[457,100742,100743,100751,100759,100763,100767,100771,100775,100783],{"__ignoreMap":32},[460,100744,100745,100747,100749],{"class":462,"line":463},[460,100746,781],{"class":466},[460,100748,1721],{"class":470},[460,100750,473],{"class":466},[460,100752,100753,100755,100757],{"class":462,"line":476},[460,100754,467],{"class":466},[460,100756,225],{"class":470},[460,100758,473],{"class":466},[460,100760,100761],{"class":462,"line":482},[460,100762,9145],{"class":466},[460,100764,100765],{"class":462,"line":488},[460,100766,509],{"class":466},[460,100768,100769],{"class":462,"line":494},[460,100770,9154],{"class":466},[460,100772,100773],{"class":462,"line":500},[460,100774,9541],{"class":466},[460,100776,100777,100779,100781],{"class":462,"line":506},[460,100778,581],{"class":466},[460,100780,225],{"class":470},[460,100782,473],{"class":466},[460,100784,100785,100787,100789],{"class":462,"line":512},[460,100786,1776],{"class":466},[460,100788,1721],{"class":470},[460,100790,473],{"class":466},[14,100792,9560],{},[14,100794,9563],{},[14,100796,100797],{},[30,100798],{"alt":32,"src":9568},[14,100800,9571],{},[14,100802,9574],{},[14,100804,100805],{},[30,100806],{"alt":32,"src":9579},[14,100808,100809],{},[30,100810],{"alt":32,"src":9584},[14,100812,100813],{},[30,100814],{"alt":32,"src":9589},[23,100816,9593],{"id":9592},[14,100818,100819],{},[30,100820],{"alt":32,"src":9598},[103,100822,100823,100825,100827,100829],{},[43,100824,9603],{},[43,100826,9606],{},[43,100828,9609],{},[43,100830,9612],{},[14,100832,100833],{},[30,100834],{"alt":32,"src":9617},[14,100836,9620],{},[14,100838,100839],{},[30,100840],{"alt":32,"src":9625},[23,100842,9629],{"id":9628},[14,100844,100845],{},[30,100846],{"alt":32,"src":9634},[14,100848,100849],{},[30,100850],{"alt":32,"src":9639},[14,100852,100853],{},[30,100854],{"alt":32,"src":9644},[14,100856,100857],{},[30,100858],{"alt":32,"src":9649},[14,100860,100861],{},[30,100862],{"alt":32,"src":9654},[14,100864,100865],{},[30,100866],{"alt":32,"src":9659},[14,100868,100869],{},[30,100870],{"alt":32,"src":9664},[14,100872,100873],{},[30,100874],{"alt":32,"src":9669},[14,100876,9672],{},[23,100878,9676],{"id":9675},[14,100880,100881],{},[30,100882],{"alt":32,"src":9681},[14,100884,9684],{},[14,100886,9687],{},[14,100888,9690],{},[14,100890,100891],{},[30,100892],{"alt":32,"src":9695},[14,100894,100895],{},[30,100896],{"alt":32,"src":9700},[14,100898,9703],{},[14,100900,9706],{},[23,100902,9710],{"id":9709},[14,100904,9713],{},[14,100906,9716],{},[14,100908,100909],{},[30,100910],{"alt":32,"src":9721},[14,100912,100913],{},[30,100914],{"alt":32,"src":9726},[14,100916,100917],{},[30,100918],{"alt":32,"src":9731},[14,100920,100921],{},[30,100922],{"alt":32,"src":9736},[14,100924,9739],{},[103,100926,100927],{},[43,100928,9744],{},[14,100930,100931],{},[30,100932],{"alt":32,"src":9749},[451,100934,100935],{"className":702,"code":9752,"language":704,"meta":32,"style":32},[457,100936,100937,100941,100945,100949,100953,100957,100961,100965,100969,100973,100977],{"__ignoreMap":32},[460,100938,100939],{"class":462,"line":463},[460,100940,9759],{"class":466},[460,100942,100943],{"class":462,"line":476},[460,100944,9764],{"class":466},[460,100946,100947],{"class":462,"line":482},[460,100948,9769],{"class":466},[460,100950,100951],{"class":462,"line":488},[460,100952,522],{"emptyLinePlaceholder":521},[460,100954,100955],{"class":462,"line":494},[460,100956,522],{"emptyLinePlaceholder":521},[460,100958,100959],{"class":462,"line":500},[460,100960,522],{"emptyLinePlaceholder":521},[460,100962,100963],{"class":462,"line":506},[460,100964,9786],{"class":466},[460,100966,100967],{"class":462,"line":512},[460,100968,9791],{"class":466},[460,100970,100971],{"class":462,"line":518},[460,100972,9796],{"class":466},[460,100974,100975],{"class":462,"line":525},[460,100976,522],{"emptyLinePlaceholder":521},[460,100978,100979,100981,100983],{"class":462,"line":531},[460,100980,9805],{"class":466},[460,100982,14],{"class":470},[460,100984,9810],{"class":466},[103,100986,100987],{"start":476},[43,100988,9815],{},[14,100990,9818],{},[14,100992,100993],{},[30,100994],{"alt":32,"src":9823},[451,100996,100997],{"className":702,"code":9826,"language":704,"meta":32,"style":32},[457,100998,100999,101009,101023,101027,101035,101049,101069,101081,101089,101095,101107,101119,101153,101165,101175,101185,101197,101209,101235,101245,101249,101253,101261,101273,101287,101297,101309,101313,101317,101327,101337,101347,101357,101369,101381,101391,101395,101399,101407,101417,101429,101433,101437,101445,101455,101465,101477,101481,101485,101495,101511,101521,101531,101541,101553,101565,101577,101581,101585,101597,101607,101611,101619,101627,101631,101639,101657,101675,101683,101687,101711,101715,101719,101737,101741,101751,101755,101765,101773,101781,101785,101789,101793,101797,101801,101805,101823,101827,101845,101849,101861,101865,101869,101873,101885,101889,101893,101919,101923,101927,101931,101941,101945,101949,101953,101957,101981,101985,102007,102011,102019,102023,102027,102051,102055,102077,102081,102089,102093,102097,102115,102125,102129,102137,102145,102149],{"__ignoreMap":32},[460,101000,101001,101003,101005,101007],{"class":462,"line":463},[460,101002,1845],{"class":466},[460,101004,1848],{"class":470},[460,101006,1851],{"class":929},[460,101008,473],{"class":466},[460,101010,101011,101013,101015,101017,101019,101021],{"class":462,"line":476},[460,101012,781],{"class":466},[460,101014,704],{"class":470},[460,101016,1862],{"class":929},[460,101018,894],{"class":466},[460,101020,1867],{"class":1353},[460,101022,473],{"class":466},[460,101024,101025],{"class":462,"line":482},[460,101026,522],{"emptyLinePlaceholder":521},[460,101028,101029,101031,101033],{"class":462,"line":488},[460,101030,781],{"class":466},[460,101032,1880],{"class":470},[460,101034,473],{"class":466},[460,101036,101037,101039,101041,101043,101045,101047],{"class":462,"line":494},[460,101038,467],{"class":466},[460,101040,1889],{"class":470},[460,101042,1892],{"class":929},[460,101044,894],{"class":466},[460,101046,1897],{"class":1353},[460,101048,473],{"class":466},[460,101050,101051,101053,101055,101057,101059,101061,101063,101065,101067],{"class":462,"line":500},[460,101052,467],{"class":466},[460,101054,1889],{"class":470},[460,101056,1908],{"class":929},[460,101058,894],{"class":466},[460,101060,1913],{"class":1353},[460,101062,1916],{"class":929},[460,101064,894],{"class":466},[460,101066,1921],{"class":1353},[460,101068,473],{"class":466},[460,101070,101071,101073,101075,101077,101079],{"class":462,"line":506},[460,101072,467],{"class":466},[460,101074,1930],{"class":470},[460,101076,1933],{"class":466},[460,101078,1930],{"class":470},[460,101080,473],{"class":466},[460,101082,101083,101085,101087],{"class":462,"line":512},[460,101084,467],{"class":466},[460,101086,1944],{"class":470},[460,101088,473],{"class":466},[460,101090,101091,101093],{"class":462,"line":518},[460,101092,9923],{"class":929},[460,101094,1348],{"class":466},[460,101096,101097,101099,101101,101103,101105],{"class":462,"line":525},[460,101098,2009],{"class":900},[460,101100,1961],{"class":466},[460,101102,9934],{"class":900},[460,101104,2017],{"class":887},[460,101106,1966],{"class":466},[460,101108,101109,101111,101113,101115,101117],{"class":462,"line":531},[460,101110,9943],{"class":900},[460,101112,1961],{"class":466},[460,101114,2325],{"class":900},[460,101116,2017],{"class":887},[460,101118,1966],{"class":466},[460,101120,101121,101123,101125,101127,101129,101131,101133,101135,101137,101139,101141,101143,101145,101147,101149,101151],{"class":462,"line":537},[460,101122,2215],{"class":900},[460,101124,1961],{"class":466},[460,101126,936],{"class":900},[460,101128,2224],{"class":900},[460,101130,5231],{"class":900},[460,101132,2017],{"class":887},[460,101134,2234],{"class":900},[460,101136,2174],{"class":466},[460,101138,936],{"class":900},[460,101140,904],{"class":466},[460,101142,936],{"class":900},[460,101144,904],{"class":466},[460,101146,936],{"class":900},[460,101148,904],{"class":466},[460,101150,9984],{"class":900},[460,101152,2254],{"class":466},[460,101154,101155,101157,101159,101161,101163],{"class":462,"line":543},[460,101156,9991],{"class":900},[460,101158,1961],{"class":466},[460,101160,918],{"class":900},[460,101162,2017],{"class":887},[460,101164,1966],{"class":466},[460,101166,101167,101169,101171,101173],{"class":462,"line":549},[460,101168,10004],{"class":900},[460,101170,1961],{"class":466},[460,101172,10009],{"class":900},[460,101174,1966],{"class":466},[460,101176,101177,101179,101181,101183],{"class":462,"line":555},[460,101178,10016],{"class":900},[460,101180,1961],{"class":466},[460,101182,10021],{"class":900},[460,101184,1966],{"class":466},[460,101186,101187,101189,101191,101193,101195],{"class":462,"line":560},[460,101188,10028],{"class":900},[460,101190,1961],{"class":466},[460,101192,2549],{"class":900},[460,101194,2328],{"class":887},[460,101196,1966],{"class":466},[460,101198,101199,101201,101203,101205,101207],{"class":462,"line":566},[460,101200,10041],{"class":900},[460,101202,1961],{"class":466},[460,101204,2549],{"class":900},[460,101206,2328],{"class":887},[460,101208,1966],{"class":466},[460,101210,101211,101213,101215,101217,101219,101221,101223,101225,101227,101229,101231,101233],{"class":462,"line":572},[460,101212,2260],{"class":900},[460,101214,1961],{"class":466},[460,101216,2265],{"class":900},[460,101218,2174],{"class":466},[460,101220,10062],{"class":900},[460,101222,2328],{"class":887},[460,101224,904],{"class":466},[460,101226,10062],{"class":900},[460,101228,2328],{"class":887},[460,101230,904],{"class":466},[460,101232,936],{"class":900},[460,101234,2254],{"class":466},[460,101236,101237,101239,101241,101243],{"class":462,"line":578},[460,101238,2673],{"class":900},[460,101240,1961],{"class":466},[460,101242,2690],{"class":900},[460,101244,1966],{"class":466},[460,101246,101247],{"class":462,"line":812},[460,101248,509],{"class":466},[460,101250,101251],{"class":462,"line":818},[460,101252,522],{"emptyLinePlaceholder":521},[460,101254,101255,101257,101259],{"class":462,"line":824},[460,101256,9923],{"class":929},[460,101258,10101],{"class":929},[460,101260,1348],{"class":466},[460,101262,101263,101265,101267,101269,101271],{"class":462,"line":2074},[460,101264,5513],{"class":900},[460,101266,1961],{"class":466},[460,101268,5504],{"class":900},[460,101270,2017],{"class":887},[460,101272,1966],{"class":466},[460,101274,101275,101277,101279,101281,101283,101285],{"class":462,"line":2088},[460,101276,1958],{"class":900},[460,101278,1961],{"class":466},[460,101280,936],{"class":900},[460,101282,5231],{"class":900},[460,101284,2017],{"class":887},[460,101286,1966],{"class":466},[460,101288,101289,101291,101293,101295],{"class":462,"line":2103},[460,101290,10004],{"class":900},[460,101292,1961],{"class":466},[460,101294,10138],{"class":900},[460,101296,1966],{"class":466},[460,101298,101299,101301,101303,101305,101307],{"class":462,"line":2122},[460,101300,2356],{"class":900},[460,101302,1961],{"class":466},[460,101304,2110],{"class":900},[460,101306,2017],{"class":887},[460,101308,1966],{"class":466},[460,101310,101311],{"class":462,"line":2144},[460,101312,509],{"class":466},[460,101314,101315],{"class":462,"line":2158},[460,101316,522],{"emptyLinePlaceholder":521},[460,101318,101319,101321,101323,101325],{"class":462,"line":2163},[460,101320,9923],{"class":929},[460,101322,10101],{"class":929},[460,101324,10169],{"class":470},[460,101326,1348],{"class":466},[460,101328,101329,101331,101333,101335],{"class":462,"line":2168},[460,101330,10176],{"class":900},[460,101332,1961],{"class":466},[460,101334,10181],{"class":900},[460,101336,1966],{"class":466},[460,101338,101339,101341,101343,101345],{"class":462,"line":2183},[460,101340,2384],{"class":900},[460,101342,1961],{"class":466},[460,101344,7385],{"class":900},[460,101346,1966],{"class":466},[460,101348,101349,101351,101353,101355],{"class":462,"line":2194},[460,101350,10004],{"class":900},[460,101352,1961],{"class":466},[460,101354,10202],{"class":900},[460,101356,1966],{"class":466},[460,101358,101359,101361,101363,101365,101367],{"class":462,"line":2199},[460,101360,10209],{"class":900},[460,101362,1961],{"class":466},[460,101364,7157],{"class":900},[460,101366,2017],{"class":887},[460,101368,1966],{"class":466},[460,101370,101371,101373,101375,101377,101379],{"class":462,"line":2204},[460,101372,10041],{"class":900},[460,101374,1961],{"class":466},[460,101376,10226],{"class":900},[460,101378,2017],{"class":887},[460,101380,1966],{"class":466},[460,101382,101383,101385,101387,101389],{"class":462,"line":2212},[460,101384,2288],{"class":900},[460,101386,1961],{"class":466},[460,101388,2293],{"class":900},[460,101390,1966],{"class":466},[460,101392,101393],{"class":462,"line":2257},[460,101394,509],{"class":466},[460,101396,101397],{"class":462,"line":2285},[460,101398,522],{"emptyLinePlaceholder":521},[460,101400,101401,101403,101405],{"class":462,"line":2298},[460,101402,9923],{"class":929},[460,101404,10255],{"class":929},[460,101406,1348],{"class":466},[460,101408,101409,101411,101413,101415],{"class":462,"line":2303},[460,101410,5540],{"class":900},[460,101412,1961],{"class":466},[460,101414,5545],{"class":900},[460,101416,1966],{"class":466},[460,101418,101419,101421,101423,101425,101427],{"class":462,"line":2308},[460,101420,1958],{"class":900},[460,101422,1961],{"class":466},[460,101424,2096],{"class":900},[460,101426,2017],{"class":887},[460,101428,1966],{"class":466},[460,101430,101431],{"class":462,"line":2318},[460,101432,509],{"class":466},[460,101434,101435],{"class":462,"line":2333},[460,101436,522],{"emptyLinePlaceholder":521},[460,101438,101439,101441,101443],{"class":462,"line":2338},[460,101440,9923],{"class":929},[460,101442,10294],{"class":929},[460,101444,1348],{"class":466},[460,101446,101447,101449,101451,101453],{"class":462,"line":2343},[460,101448,2037],{"class":900},[460,101450,1961],{"class":466},[460,101452,2042],{"class":900},[460,101454,1966],{"class":466},[460,101456,101457,101459,101461,101463],{"class":462,"line":2353},[460,101458,7653],{"class":900},[460,101460,1961],{"class":466},[460,101462,7658],{"class":900},[460,101464,1966],{"class":466},[460,101466,101467,101469,101471,101473,101475],{"class":462,"line":2368},[460,101468,1958],{"class":900},[460,101470,1961],{"class":466},[460,101472,2096],{"class":900},[460,101474,2017],{"class":887},[460,101476,1966],{"class":466},[460,101478,101479],{"class":462,"line":2381},[460,101480,509],{"class":466},[460,101482,101483],{"class":462,"line":2394},[460,101484,522],{"emptyLinePlaceholder":521},[460,101486,101487,101489,101491,101493],{"class":462,"line":2399},[460,101488,9923],{"class":929},[460,101490,10294],{"class":929},[460,101492,2574],{"class":470},[460,101494,1348],{"class":466},[460,101496,101497,101499,101501,101503,101505,101507,101509],{"class":462,"line":2404},[460,101498,1958],{"class":900},[460,101500,1961],{"class":466},[460,101502,913],{"class":900},[460,101504,2017],{"class":887},[460,101506,10359],{"class":900},[460,101508,2017],{"class":887},[460,101510,1966],{"class":466},[460,101512,101513,101515,101517,101519],{"class":462,"line":2414},[460,101514,2600],{"class":900},[460,101516,1961],{"class":466},[460,101518,10372],{"class":900},[460,101520,1966],{"class":466},[460,101522,101523,101525,101527,101529],{"class":462,"line":2428},[460,101524,2624],{"class":900},[460,101526,1961],{"class":466},[460,101528,2629],{"class":900},[460,101530,1966],{"class":466},[460,101532,101533,101535,101537,101539],{"class":462,"line":2440},[460,101534,2384],{"class":900},[460,101536,1961],{"class":466},[460,101538,2690],{"class":900},[460,101540,1966],{"class":466},[460,101542,101543,101545,101547,101549,101551],{"class":462,"line":2445},[460,101544,9991],{"class":900},[460,101546,1961],{"class":466},[460,101548,907],{"class":900},[460,101550,2017],{"class":887},[460,101552,1966],{"class":466},[460,101554,101555,101557,101559,101561,101563],{"class":462,"line":2450},[460,101556,2637],{"class":900},[460,101558,1961],{"class":466},[460,101560,2096],{"class":900},[460,101562,2017],{"class":887},[460,101564,1966],{"class":466},[460,101566,101567,101569,101571,101573,101575],{"class":462,"line":2460},[460,101568,2356],{"class":900},[460,101570,1961],{"class":466},[460,101572,2480],{"class":900},[460,101574,2017],{"class":887},[460,101576,1966],{"class":466},[460,101578,101579],{"class":462,"line":2473},[460,101580,509],{"class":466},[460,101582,101583],{"class":462,"line":2487},[460,101584,522],{"emptyLinePlaceholder":521},[460,101586,101587,101589,101591,101593,101595],{"class":462,"line":2492},[460,101588,9923],{"class":929},[460,101590,10294],{"class":929},[460,101592,2574],{"class":470},[460,101594,10449],{"class":929},[460,101596,1348],{"class":466},[460,101598,101599,101601,101603,101605],{"class":462,"line":2497},[460,101600,2673],{"class":900},[460,101602,1961],{"class":466},[460,101604,10460],{"class":900},[460,101606,1966],{"class":466},[460,101608,101609],{"class":462,"line":2505},[460,101610,509],{"class":466},[460,101612,101613,101615,101617],{"class":462,"line":2516},[460,101614,581],{"class":466},[460,101616,1944],{"class":470},[460,101618,473],{"class":466},[460,101620,101621,101623,101625],{"class":462,"line":2529},[460,101622,1776],{"class":466},[460,101624,1880],{"class":470},[460,101626,473],{"class":466},[460,101628,101629],{"class":462,"line":2542},[460,101630,522],{"emptyLinePlaceholder":521},[460,101632,101633,101635,101637],{"class":462,"line":2559},[460,101634,781],{"class":466},[460,101636,1721],{"class":470},[460,101638,473],{"class":466},[460,101640,101641,101643,101645,101647,101649,101651,101653,101655],{"class":462,"line":2564},[460,101642,467],{"class":466},[460,101644,10501],{"class":470},[460,101646,10504],{"class":929},[460,101648,894],{"class":466},[460,101650,10509],{"class":1353},[460,101652,10512],{"class":466},[460,101654,10501],{"class":470},[460,101656,473],{"class":466},[460,101658,101659,101661,101663,101665,101667,101669,101671,101673],{"class":462,"line":2569},[460,101660,467],{"class":466},[460,101662,10501],{"class":470},[460,101664,10504],{"class":929},[460,101666,894],{"class":466},[460,101668,10529],{"class":1353},[460,101670,10532],{"class":466},[460,101672,10501],{"class":470},[460,101674,473],{"class":466},[460,101676,101677,101679,101681],{"class":462,"line":2579},[460,101678,467],{"class":466},[460,101680,225],{"class":470},[460,101682,473],{"class":466},[460,101684,101685],{"class":462,"line":2597},[460,101686,10549],{"class":942},[460,101688,101689,101691,101693,101695,101697,101699,101701,101703,101705,101707,101709],{"class":462,"line":2610},[460,101690,3372],{"class":887},[460,101692,10556],{"class":929},[460,101694,2174],{"class":466},[460,101696,1930],{"class":3380},[460,101698,2943],{"class":887},[460,101700,10565],{"class":1353},[460,101702,904],{"class":466},[460,101704,10570],{"class":3380},[460,101706,2943],{"class":887},[460,101708,10565],{"class":1353},[460,101710,2180],{"class":466},[460,101712,101713],{"class":462,"line":2621},[460,101714,10581],{"class":942},[460,101716,101717],{"class":462,"line":2634},[460,101718,10586],{"class":942},[460,101720,101721,101723,101725,101727,101729,101731,101733,101735],{"class":462,"line":2648},[460,101722,10591],{"class":900},[460,101724,10594],{"class":466},[460,101726,894],{"class":887},[460,101728,10599],{"class":466},[460,101730,10602],{"class":929},[460,101732,2174],{"class":466},[460,101734,5656],{"class":1353},[460,101736,3754],{"class":466},[460,101738,101739],{"class":462,"line":2653},[460,101740,10613],{"class":942},[460,101742,101743,101745,101747,101749],{"class":462,"line":2658},[460,101744,10591],{"class":900},[460,101746,10620],{"class":466},[460,101748,894],{"class":887},[460,101750,10625],{"class":1353},[460,101752,101753],{"class":462,"line":2670},[460,101754,10630],{"class":942},[460,101756,101757,101759,101761,101763],{"class":462,"line":2683},[460,101758,10591],{"class":900},[460,101760,10637],{"class":466},[460,101762,894],{"class":887},[460,101764,3470],{"class":1353},[460,101766,101767,101769,101771],{"class":462,"line":2695},[460,101768,10646],{"class":1353},[460,101770,1930],{"class":466},[460,101772,10651],{"class":1353},[460,101774,101775,101777,101779],{"class":462,"line":2700},[460,101776,10656],{"class":1353},[460,101778,10570],{"class":466},[460,101780,10661],{"class":1353},[460,101782,101783],{"class":462,"line":2709},[460,101784,10666],{"class":1353},[460,101786,101787],{"class":462,"line":2718},[460,101788,10671],{"class":942},[460,101790,101791],{"class":462,"line":2723},[460,101792,509],{"class":466},[460,101794,101795],{"class":462,"line":2732},[460,101796,10680],{"class":942},[460,101798,101799],{"class":462,"line":2750},[460,101800,10685],{"class":942},[460,101802,101803],{"class":462,"line":2782},[460,101804,10690],{"class":942},[460,101806,101807,101809,101811,101813,101815,101817,101819,101821],{"class":462,"line":2809},[460,101808,10695],{"class":900},[460,101810,6000],{"class":466},[460,101812,9350],{"class":900},[460,101814,6000],{"class":466},[460,101816,10704],{"class":929},[460,101818,2943],{"class":887},[460,101820,10709],{"class":887},[460,101822,9376],{"class":466},[460,101824,101825],{"class":462,"line":2836},[460,101826,10716],{"class":942},[460,101828,101829,101831,101833,101835,101837,101839,101841,101843],{"class":462,"line":2856},[460,101830,3625],{"class":887},[460,101832,10723],{"class":900},[460,101834,2943],{"class":887},[460,101836,10599],{"class":466},[460,101838,3541],{"class":929},[460,101840,2174],{"class":466},[460,101842,10734],{"class":1353},[460,101844,3754],{"class":466},[460,101846,101847],{"class":462,"line":2865},[460,101848,10741],{"class":942},[460,101850,101851,101853,101855,101857,101859],{"class":462,"line":2881},[460,101852,10746],{"class":466},[460,101854,10749],{"class":887},[460,101856,10752],{"class":466},[460,101858,10755],{"class":929},[460,101860,10758],{"class":466},[460,101862,101863],{"class":462,"line":2887},[460,101864,10763],{"class":942},[460,101866,101867],{"class":462,"line":2893},[460,101868,10768],{"class":942},[460,101870,101871],{"class":462,"line":2899},[460,101872,10773],{"class":942},[460,101874,101875,101877,101879,101881,101883],{"class":462,"line":2905},[460,101876,10778],{"class":466},[460,101878,10781],{"class":929},[460,101880,2174],{"class":466},[460,101882,10786],{"class":900},[460,101884,10789],{"class":466},[460,101886,101887],{"class":462,"line":2911},[460,101888,522],{"emptyLinePlaceholder":521},[460,101890,101891],{"class":462,"line":2920},[460,101892,10798],{"class":942},[460,101894,101895,101897,101899,101901,101903,101905,101907,101909,101911,101913,101915,101917],{"class":462,"line":2929},[460,101896,10591],{"class":900},[460,101898,10805],{"class":466},[460,101900,3541],{"class":929},[460,101902,2174],{"class":466},[460,101904,10812],{"class":1353},[460,101906,3596],{"class":466},[460,101908,3599],{"class":929},[460,101910,2174],{"class":466},[460,101912,3604],{"class":1353},[460,101914,10823],{"class":466},[460,101916,8489],{"class":887},[460,101918,1348],{"class":466},[460,101920,101921],{"class":462,"line":2935},[460,101922,10832],{"class":942},[460,101924,101925],{"class":462,"line":2948},[460,101926,10837],{"class":942},[460,101928,101929],{"class":462,"line":2954},[460,101930,10842],{"class":942},[460,101932,101933,101935,101937,101939],{"class":462,"line":2965},[460,101934,10847],{"class":900},[460,101936,6000],{"class":466},[460,101938,10852],{"class":929},[460,101940,10758],{"class":466},[460,101942,101943],{"class":462,"line":2976},[460,101944,3526],{"class":466},[460,101946,101947],{"class":462,"line":2987},[460,101948,509],{"class":466},[460,101950,101951],{"class":462,"line":2998},[460,101952,522],{"emptyLinePlaceholder":521},[460,101954,101955],{"class":462,"line":3003},[460,101956,10871],{"class":942},[460,101958,101959,101961,101963,101965,101967,101969,101971,101973,101975,101977,101979],{"class":462,"line":3008},[460,101960,3586],{"class":466},[460,101962,3541],{"class":929},[460,101964,2174],{"class":466},[460,101966,10882],{"class":1353},[460,101968,3596],{"class":466},[460,101970,3599],{"class":929},[460,101972,2174],{"class":466},[460,101974,3604],{"class":1353},[460,101976,10823],{"class":466},[460,101978,8489],{"class":887},[460,101980,1348],{"class":466},[460,101982,101983],{"class":462,"line":3018},[460,101984,10901],{"class":942},[460,101986,101987,101989,101991,101993,101995,101997,101999,102001,102003,102005],{"class":462,"line":3028},[460,101988,3625],{"class":887},[460,101990,10908],{"class":900},[460,101992,2943],{"class":887},[460,101994,10913],{"class":887},[460,101996,10556],{"class":929},[460,101998,2174],{"class":466},[460,102000,10920],{"class":1353},[460,102002,904],{"class":466},[460,102004,10925],{"class":1353},[460,102006,3754],{"class":466},[460,102008,102009],{"class":462,"line":3038},[460,102010,10932],{"class":942},[460,102012,102013,102015,102017],{"class":462,"line":3048},[460,102014,10937],{"class":466},[460,102016,10704],{"class":929},[460,102018,10758],{"class":466},[460,102020,102021],{"class":462,"line":3053},[460,102022,1679],{"class":466},[460,102024,102025],{"class":462,"line":3058},[460,102026,10950],{"class":942},[460,102028,102029,102031,102033,102035,102037,102039,102041,102043,102045,102047,102049],{"class":462,"line":3068},[460,102030,3586],{"class":466},[460,102032,3541],{"class":929},[460,102034,2174],{"class":466},[460,102036,10961],{"class":1353},[460,102038,3596],{"class":466},[460,102040,3599],{"class":929},[460,102042,2174],{"class":466},[460,102044,3604],{"class":1353},[460,102046,10823],{"class":466},[460,102048,8489],{"class":887},[460,102050,1348],{"class":466},[460,102052,102053],{"class":462,"line":3078},[460,102054,10901],{"class":942},[460,102056,102057,102059,102061,102063,102065,102067,102069,102071,102073,102075],{"class":462,"line":3088},[460,102058,3625],{"class":887},[460,102060,10986],{"class":900},[460,102062,2943],{"class":887},[460,102064,10913],{"class":887},[460,102066,10556],{"class":929},[460,102068,2174],{"class":466},[460,102070,10997],{"class":1353},[460,102072,904],{"class":466},[460,102074,11002],{"class":1353},[460,102076,3754],{"class":466},[460,102078,102079],{"class":462,"line":3098},[460,102080,10932],{"class":942},[460,102082,102083,102085,102087],{"class":462,"line":3103},[460,102084,11013],{"class":466},[460,102086,10704],{"class":929},[460,102088,10758],{"class":466},[460,102090,102091],{"class":462,"line":3108},[460,102092,1679],{"class":466},[460,102094,102095],{"class":462,"line":3118},[460,102096,11026],{"class":942},[460,102098,102099,102101,102103,102105,102107,102109,102111,102113],{"class":462,"line":3128},[460,102100,10695],{"class":900},[460,102102,6000],{"class":466},[460,102104,9350],{"class":900},[460,102106,6000],{"class":466},[460,102108,10852],{"class":929},[460,102110,2943],{"class":887},[460,102112,10709],{"class":887},[460,102114,9376],{"class":466},[460,102116,102117,102119,102121,102123],{"class":462,"line":3138},[460,102118,10591],{"class":900},[460,102120,10805],{"class":466},[460,102122,10755],{"class":929},[460,102124,10758],{"class":466},[460,102126,102127],{"class":462,"line":3148},[460,102128,509],{"class":466},[460,102130,102131,102133,102135],{"class":462,"line":3153},[460,102132,581],{"class":466},[460,102134,225],{"class":470},[460,102136,473],{"class":466},[460,102138,102139,102141,102143],{"class":462,"line":3158},[460,102140,1776],{"class":466},[460,102142,1721],{"class":470},[460,102144,473],{"class":466},[460,102146,102147],{"class":462,"line":3168},[460,102148,522],{"emptyLinePlaceholder":521},[460,102150,102151,102153,102155],{"class":462,"line":3178},[460,102152,1776],{"class":466},[460,102154,704],{"class":470},[460,102156,473],{"class":466},[14,102158,102159],{},[30,102160],{"alt":32,"src":11091},[18,102162,11095],{"id":11094},[23,102164,11099],{"id":11098},[14,102166,102167],{},[30,102168],{"alt":32,"src":11104},[14,102170,11107],{},[14,102172,102173],{},[30,102174],{"alt":32,"src":11112},[14,102176,102177],{},[30,102178],{"alt":32,"src":11117},[14,102180,11120],{},[14,102182,102183],{},[30,102184],{"alt":32,"src":11125},[14,102186,433],{},[14,102188,102189],{},[30,102190],{"alt":32,"src":11132},[23,102192,11136],{"id":11135},[14,102194,11139],{},[14,102196,11142],{},[103,102198,102199,102201,102203],{},[43,102200,11147],{},[43,102202,11150],{},[43,102204,11153],{},[115,102206,11157],{"id":11156},[14,102208,102209],{},[30,102210],{"alt":32,"src":11162},[103,102212,102213],{},[43,102214,11167],{},[451,102216,102217],{"className":453,"code":11170,"language":455,"meta":32,"style":32},[457,102218,102219,102227,102235,102239,102243,102247,102251,102259],{"__ignoreMap":32},[460,102220,102221,102223,102225],{"class":462,"line":463},[460,102222,781],{"class":466},[460,102224,1721],{"class":470},[460,102226,473],{"class":466},[460,102228,102229,102231,102233],{"class":462,"line":476},[460,102230,467],{"class":466},[460,102232,225],{"class":470},[460,102234,473],{"class":466},[460,102236,102237],{"class":462,"line":482},[460,102238,497],{"class":466},[460,102240,102241],{"class":462,"line":488},[460,102242,11197],{"class":466},[460,102244,102245],{"class":462,"line":494},[460,102246,509],{"class":466},[460,102248,102249],{"class":462,"line":500},[460,102250,11206],{"class":466},[460,102252,102253,102255,102257],{"class":462,"line":506},[460,102254,581],{"class":466},[460,102256,225],{"class":470},[460,102258,473],{"class":466},[460,102260,102261,102263,102265],{"class":462,"line":512},[460,102262,1776],{"class":466},[460,102264,1721],{"class":470},[460,102266,473],{"class":466},[103,102268,102269],{"start":476},[43,102270,11227],{},[14,102272,102273],{},[30,102274],{"alt":32,"src":11232},[103,102276,102277],{"start":482},[43,102278,11237],{},[451,102280,102281],{"className":702,"code":11240,"language":704,"meta":32,"style":32},[457,102282,102283,102293,102307,102311,102319,102333,102353,102365,102373,102377,102385,102397,102405,102413,102437,102447,102451,102457,102465,102473,102477],{"__ignoreMap":32},[460,102284,102285,102287,102289,102291],{"class":462,"line":463},[460,102286,1845],{"class":466},[460,102288,1848],{"class":470},[460,102290,1851],{"class":929},[460,102292,473],{"class":466},[460,102294,102295,102297,102299,102301,102303,102305],{"class":462,"line":476},[460,102296,781],{"class":466},[460,102298,704],{"class":470},[460,102300,1862],{"class":929},[460,102302,894],{"class":466},[460,102304,1867],{"class":1353},[460,102306,473],{"class":466},[460,102308,102309],{"class":462,"line":482},[460,102310,522],{"emptyLinePlaceholder":521},[460,102312,102313,102315,102317],{"class":462,"line":488},[460,102314,781],{"class":466},[460,102316,1880],{"class":470},[460,102318,473],{"class":466},[460,102320,102321,102323,102325,102327,102329,102331],{"class":462,"line":494},[460,102322,467],{"class":466},[460,102324,1889],{"class":470},[460,102326,1892],{"class":929},[460,102328,894],{"class":466},[460,102330,1897],{"class":1353},[460,102332,473],{"class":466},[460,102334,102335,102337,102339,102341,102343,102345,102347,102349,102351],{"class":462,"line":500},[460,102336,467],{"class":466},[460,102338,1889],{"class":470},[460,102340,1908],{"class":929},[460,102342,894],{"class":466},[460,102344,1913],{"class":1353},[460,102346,1916],{"class":929},[460,102348,894],{"class":466},[460,102350,1921],{"class":1353},[460,102352,473],{"class":466},[460,102354,102355,102357,102359,102361,102363],{"class":462,"line":506},[460,102356,467],{"class":466},[460,102358,1930],{"class":470},[460,102360,1933],{"class":466},[460,102362,1930],{"class":470},[460,102364,473],{"class":466},[460,102366,102367,102369,102371],{"class":462,"line":512},[460,102368,1776],{"class":466},[460,102370,1880],{"class":470},[460,102372,473],{"class":466},[460,102374,102375],{"class":462,"line":518},[460,102376,522],{"emptyLinePlaceholder":521},[460,102378,102379,102381,102383],{"class":462,"line":525},[460,102380,781],{"class":466},[460,102382,1721],{"class":470},[460,102384,473],{"class":466},[460,102386,102387,102389,102391,102393,102395],{"class":462,"line":531},[460,102388,467],{"class":466},[460,102390,2737],{"class":470},[460,102392,5599],{"class":466},[460,102394,2737],{"class":470},[460,102396,473],{"class":466},[460,102398,102399,102401,102403],{"class":462,"line":537},[460,102400,467],{"class":466},[460,102402,225],{"class":470},[460,102404,473],{"class":466},[460,102406,102407,102409,102411],{"class":462,"line":543},[460,102408,3372],{"class":887},[460,102410,11371],{"class":929},[460,102412,11374],{"class":466},[460,102414,102415,102417,102419,102421,102423,102425,102427,102429,102431,102433,102435],{"class":462,"line":549},[460,102416,3538],{"class":466},[460,102418,3541],{"class":929},[460,102420,2174],{"class":466},[460,102422,5656],{"class":1353},[460,102424,3549],{"class":466},[460,102426,894],{"class":887},[460,102428,10913],{"class":887},[460,102430,11393],{"class":929},[460,102432,11396],{"class":466},[460,102434,11399],{"class":929},[460,102436,10758],{"class":466},[460,102438,102439,102441,102443,102445],{"class":462,"line":555},[460,102440,11406],{"class":929},[460,102442,11409],{"class":466},[460,102444,11412],{"class":900},[460,102446,3754],{"class":466},[460,102448,102449],{"class":462,"line":560},[460,102450,509],{"class":466},[460,102452,102453,102455],{"class":462,"line":566},[460,102454,11423],{"class":929},[460,102456,10758],{"class":466},[460,102458,102459,102461,102463],{"class":462,"line":572},[460,102460,581],{"class":466},[460,102462,225],{"class":470},[460,102464,473],{"class":466},[460,102466,102467,102469,102471],{"class":462,"line":578},[460,102468,1776],{"class":466},[460,102470,1721],{"class":470},[460,102472,473],{"class":466},[460,102474,102475],{"class":462,"line":812},[460,102476,522],{"emptyLinePlaceholder":521},[460,102478,102479,102481,102483],{"class":462,"line":818},[460,102480,1776],{"class":466},[460,102482,704],{"class":470},[460,102484,473],{"class":466},[14,102486,102487],{},[30,102488],{"alt":32,"src":11458},[103,102490,102491],{"start":488},[43,102492,11147],{},[14,102494,102495],{},[30,102496],{"alt":32,"src":11467},[14,102498,11470],{},[14,102500,11473],{},[14,102502,11476],{},[14,102504,11479],{},[451,102506,102507],{"className":702,"code":11482,"language":704,"meta":32,"style":32},[457,102508,102509,102519,102533,102537,102545,102559,102579,102591,102599,102603,102611,102619,102629,102637,102645,102657,102661,102667,102671,102675,102685,102689,102705,102719,102723,102727,102731,102743,102747,102751,102759,102765,102781,102789,102795,102803,102807,102811,102819,102823,102827,102831,102839,102847,102855,102867,102875,102883,102891,102899,102903],{"__ignoreMap":32},[460,102510,102511,102513,102515,102517],{"class":462,"line":463},[460,102512,1845],{"class":466},[460,102514,1848],{"class":470},[460,102516,1851],{"class":929},[460,102518,473],{"class":466},[460,102520,102521,102523,102525,102527,102529,102531],{"class":462,"line":476},[460,102522,781],{"class":466},[460,102524,704],{"class":470},[460,102526,1862],{"class":929},[460,102528,894],{"class":466},[460,102530,1867],{"class":1353},[460,102532,473],{"class":466},[460,102534,102535],{"class":462,"line":482},[460,102536,522],{"emptyLinePlaceholder":521},[460,102538,102539,102541,102543],{"class":462,"line":488},[460,102540,781],{"class":466},[460,102542,1880],{"class":470},[460,102544,473],{"class":466},[460,102546,102547,102549,102551,102553,102555,102557],{"class":462,"line":494},[460,102548,467],{"class":466},[460,102550,1889],{"class":470},[460,102552,1892],{"class":929},[460,102554,894],{"class":466},[460,102556,1897],{"class":1353},[460,102558,473],{"class":466},[460,102560,102561,102563,102565,102567,102569,102571,102573,102575,102577],{"class":462,"line":500},[460,102562,467],{"class":466},[460,102564,1889],{"class":470},[460,102566,1908],{"class":929},[460,102568,894],{"class":466},[460,102570,1913],{"class":1353},[460,102572,1916],{"class":929},[460,102574,894],{"class":466},[460,102576,1921],{"class":1353},[460,102578,473],{"class":466},[460,102580,102581,102583,102585,102587,102589],{"class":462,"line":506},[460,102582,467],{"class":466},[460,102584,1930],{"class":470},[460,102586,1933],{"class":466},[460,102588,1930],{"class":470},[460,102590,473],{"class":466},[460,102592,102593,102595,102597],{"class":462,"line":512},[460,102594,1776],{"class":466},[460,102596,1880],{"class":470},[460,102598,473],{"class":466},[460,102600,102601],{"class":462,"line":518},[460,102602,522],{"emptyLinePlaceholder":521},[460,102604,102605,102607,102609],{"class":462,"line":525},[460,102606,781],{"class":466},[460,102608,1721],{"class":470},[460,102610,473],{"class":466},[460,102612,102613,102615,102617],{"class":462,"line":531},[460,102614,467],{"class":466},[460,102616,225],{"class":470},[460,102618,473],{"class":466},[460,102620,102621,102623,102625,102627],{"class":462,"line":537},[460,102622,1340],{"class":887},[460,102624,11601],{"class":900},[460,102626,2943],{"class":887},[460,102628,1348],{"class":466},[460,102630,102631,102633,102635],{"class":462,"line":543},[460,102632,11610],{"class":466},[460,102634,11613],{"class":1353},[460,102636,1363],{"class":466},[460,102638,102639,102641,102643],{"class":462,"line":549},[460,102640,11620],{"class":466},[460,102642,2361],{"class":900},[460,102644,1363],{"class":466},[460,102646,102647,102649,102651,102653,102655],{"class":462,"line":555},[460,102648,11629],{"class":466},[460,102650,11632],{"class":1353},[460,102652,904],{"class":466},[460,102654,11637],{"class":1353},[460,102656,11640],{"class":466},[460,102658,102659],{"class":462,"line":560},[460,102660,1273],{"class":466},[460,102662,102663,102665],{"class":462,"line":566},[460,102664,11649],{"class":466},[460,102666,11652],{"class":1353},[460,102668,102669],{"class":462,"line":572},[460,102670,552],{"class":466},[460,102672,102673],{"class":462,"line":578},[460,102674,509],{"class":466},[460,102676,102677,102679,102681,102683],{"class":462,"line":812},[460,102678,1340],{"class":887},[460,102680,11667],{"class":900},[460,102682,2943],{"class":887},[460,102684,11672],{"class":466},[460,102686,102687],{"class":462,"line":818},[460,102688,11677],{"class":942},[460,102690,102691,102693,102695,102697,102699,102701,102703],{"class":462,"line":824},[460,102692,3372],{"class":887},[460,102694,11684],{"class":929},[460,102696,2174],{"class":466},[460,102698,11689],{"class":3380},[460,102700,904],{"class":466},[460,102702,11694],{"class":3380},[460,102704,2180],{"class":466},[460,102706,102707,102709,102711,102713,102715,102717],{"class":462,"line":2074},[460,102708,11701],{"class":887},[460,102710,11704],{"class":466},[460,102712,11707],{"class":887},[460,102714,11710],{"class":466},[460,102716,11713],{"class":887},[460,102718,11716],{"class":466},[460,102720,102721],{"class":462,"line":2088},[460,102722,11721],{"class":942},[460,102724,102725],{"class":462,"line":2103},[460,102726,11726],{"class":942},[460,102728,102729],{"class":462,"line":2122},[460,102730,11731],{"class":942},[460,102732,102733,102735,102737,102739,102741],{"class":462,"line":2144},[460,102734,3702],{"class":887},[460,102736,11738],{"class":466},[460,102738,11741],{"class":887},[460,102740,11744],{"class":929},[460,102742,2180],{"class":466},[460,102744,102745],{"class":462,"line":2158},[460,102746,11751],{"class":942},[460,102748,102749],{"class":462,"line":2163},[460,102750,11756],{"class":942},[460,102752,102753,102755,102757],{"class":462,"line":2168},[460,102754,11761],{"class":466},[460,102756,894],{"class":887},[460,102758,11766],{"class":466},[460,102760,102761,102763],{"class":462,"line":2183},[460,102762,11771],{"class":929},[460,102764,11774],{"class":466},[460,102766,102767,102769,102771,102773,102775,102777,102779],{"class":462,"line":2194},[460,102768,3760],{"class":466},[460,102770,3763],{"class":887},[460,102772,3766],{"class":887},[460,102774,11738],{"class":466},[460,102776,11741],{"class":887},[460,102778,11789],{"class":929},[460,102780,2180],{"class":466},[460,102782,102783,102785,102787],{"class":462,"line":2199},[460,102784,11761],{"class":466},[460,102786,894],{"class":887},[460,102788,11672],{"class":466},[460,102790,102791,102793],{"class":462,"line":2204},[460,102792,11771],{"class":929},[460,102794,11774],{"class":466},[460,102796,102797,102799,102801],{"class":462,"line":2212},[460,102798,3760],{"class":466},[460,102800,3763],{"class":887},[460,102802,1348],{"class":466},[460,102804,102805],{"class":462,"line":2257},[460,102806,11818],{"class":942},[460,102808,102809],{"class":462,"line":2285},[460,102810,11823],{"class":942},[460,102812,102813,102815,102817],{"class":462,"line":2298},[460,102814,11761],{"class":466},[460,102816,894],{"class":887},[460,102818,11832],{"class":466},[460,102820,102821],{"class":462,"line":2303},[460,102822,3858],{"class":466},[460,102824,102825],{"class":462,"line":2308},[460,102826,552],{"class":466},[460,102828,102829],{"class":462,"line":2318},[460,102830,509],{"class":466},[460,102832,102833,102835,102837],{"class":462,"line":2333},[460,102834,11849],{"class":929},[460,102836,11852],{"class":466},[460,102838,11855],{"class":942},[460,102840,102841,102843,102845],{"class":462,"line":2338},[460,102842,9381],{"class":466},[460,102844,930],{"class":929},[460,102846,11864],{"class":466},[460,102848,102849,102851,102853],{"class":462,"line":2343},[460,102850,11869],{"class":466},[460,102852,894],{"class":887},[460,102854,11874],{"class":900},[460,102856,102857,102859,102861,102863,102865],{"class":462,"line":2353},[460,102858,11879],{"class":466},[460,102860,936],{"class":900},[460,102862,11884],{"class":466},[460,102864,894],{"class":887},[460,102866,11889],{"class":1353},[460,102868,102869,102871,102873],{"class":462,"line":2368},[460,102870,11894],{"class":466},[460,102872,894],{"class":887},[460,102874,11899],{"class":1353},[460,102876,102877,102879,102881],{"class":462,"line":2381},[460,102878,9381],{"class":466},[460,102880,930],{"class":929},[460,102882,11908],{"class":466},[460,102884,102885,102887,102889],{"class":462,"line":2394},[460,102886,581],{"class":466},[460,102888,225],{"class":470},[460,102890,473],{"class":466},[460,102892,102893,102895,102897],{"class":462,"line":2399},[460,102894,1776],{"class":466},[460,102896,1721],{"class":470},[460,102898,473],{"class":466},[460,102900,102901],{"class":462,"line":2404},[460,102902,522],{"emptyLinePlaceholder":521},[460,102904,102905,102907,102909],{"class":462,"line":2414},[460,102906,1776],{"class":466},[460,102908,704],{"class":470},[460,102910,473],{"class":466},[14,102912,102913],{},[30,102914],{"alt":32,"src":11941},[115,102916,11945,102917],{"id":11944},[3944,102918,11948],{},[14,102920,102921],{},[2756,102922,11953],{"href":11953,"rel":102923},[4943],[14,102925,11957],{},[14,102927,11960],{},[451,102929,102930],{"className":702,"code":11963,"language":704,"meta":32,"style":32},[457,102931,102932,102942,102956,102960,102968,102982,103002,103014,103022,103026,103034,103038,103056,103064,103074,103082,103090,103102,103106,103112,103116,103120,103134,103142,103150,103158,103166,103174,103178],{"__ignoreMap":32},[460,102933,102934,102936,102938,102940],{"class":462,"line":463},[460,102935,1845],{"class":466},[460,102937,1848],{"class":470},[460,102939,1851],{"class":929},[460,102941,473],{"class":466},[460,102943,102944,102946,102948,102950,102952,102954],{"class":462,"line":476},[460,102945,781],{"class":466},[460,102947,704],{"class":470},[460,102949,1862],{"class":929},[460,102951,894],{"class":466},[460,102953,1867],{"class":1353},[460,102955,473],{"class":466},[460,102957,102958],{"class":462,"line":482},[460,102959,522],{"emptyLinePlaceholder":521},[460,102961,102962,102964,102966],{"class":462,"line":488},[460,102963,781],{"class":466},[460,102965,1880],{"class":470},[460,102967,473],{"class":466},[460,102969,102970,102972,102974,102976,102978,102980],{"class":462,"line":494},[460,102971,467],{"class":466},[460,102973,1889],{"class":470},[460,102975,1892],{"class":929},[460,102977,894],{"class":466},[460,102979,1897],{"class":1353},[460,102981,473],{"class":466},[460,102983,102984,102986,102988,102990,102992,102994,102996,102998,103000],{"class":462,"line":500},[460,102985,467],{"class":466},[460,102987,1889],{"class":470},[460,102989,1908],{"class":929},[460,102991,894],{"class":466},[460,102993,1913],{"class":1353},[460,102995,1916],{"class":929},[460,102997,894],{"class":466},[460,102999,1921],{"class":1353},[460,103001,473],{"class":466},[460,103003,103004,103006,103008,103010,103012],{"class":462,"line":506},[460,103005,467],{"class":466},[460,103007,1930],{"class":470},[460,103009,1933],{"class":466},[460,103011,1930],{"class":470},[460,103013,473],{"class":466},[460,103015,103016,103018,103020],{"class":462,"line":512},[460,103017,1776],{"class":466},[460,103019,1880],{"class":470},[460,103021,473],{"class":466},[460,103023,103024],{"class":462,"line":518},[460,103025,522],{"emptyLinePlaceholder":521},[460,103027,103028,103030,103032],{"class":462,"line":525},[460,103029,781],{"class":466},[460,103031,1721],{"class":470},[460,103033,473],{"class":466},[460,103035,103036],{"class":462,"line":531},[460,103037,12072],{"class":942},[460,103039,103040,103042,103044,103046,103048,103050,103052,103054],{"class":462,"line":537},[460,103041,467],{"class":466},[460,103043,225],{"class":470},[460,103045,12081],{"class":929},[460,103047,894],{"class":466},[460,103049,12086],{"class":1353},[460,103051,5599],{"class":466},[460,103053,225],{"class":470},[460,103055,473],{"class":466},[460,103057,103058,103060,103062],{"class":462,"line":543},[460,103059,467],{"class":466},[460,103061,225],{"class":470},[460,103063,473],{"class":466},[460,103065,103066,103068,103070,103072],{"class":462,"line":549},[460,103067,1340],{"class":887},[460,103069,11601],{"class":900},[460,103071,2943],{"class":887},[460,103073,1348],{"class":466},[460,103075,103076,103078,103080],{"class":462,"line":555},[460,103077,11610],{"class":466},[460,103079,11613],{"class":1353},[460,103081,1363],{"class":466},[460,103083,103084,103086,103088],{"class":462,"line":560},[460,103085,11620],{"class":466},[460,103087,2361],{"class":900},[460,103089,1363],{"class":466},[460,103091,103092,103094,103096,103098,103100],{"class":462,"line":566},[460,103093,11629],{"class":466},[460,103095,11632],{"class":1353},[460,103097,904],{"class":466},[460,103099,11637],{"class":1353},[460,103101,11640],{"class":466},[460,103103,103104],{"class":462,"line":572},[460,103105,1273],{"class":466},[460,103107,103108,103110],{"class":462,"line":578},[460,103109,11649],{"class":466},[460,103111,11652],{"class":1353},[460,103113,103114],{"class":462,"line":812},[460,103115,552],{"class":466},[460,103117,103118],{"class":462,"line":818},[460,103119,509],{"class":466},[460,103121,103122,103124,103126,103128,103130,103132],{"class":462,"line":824},[460,103123,1340],{"class":887},[460,103125,11667],{"class":900},[460,103127,2943],{"class":887},[460,103129,12167],{"class":466},[460,103131,12170],{"class":929},[460,103133,11908],{"class":466},[460,103135,103136,103138,103140],{"class":462,"line":2074},[460,103137,9381],{"class":466},[460,103139,930],{"class":929},[460,103141,11864],{"class":466},[460,103143,103144,103146,103148],{"class":462,"line":2088},[460,103145,12185],{"class":466},[460,103147,894],{"class":887},[460,103149,11899],{"class":1353},[460,103151,103152,103154,103156],{"class":462,"line":2103},[460,103153,9381],{"class":466},[460,103155,930],{"class":929},[460,103157,11908],{"class":466},[460,103159,103160,103162,103164],{"class":462,"line":2122},[460,103161,581],{"class":466},[460,103163,225],{"class":470},[460,103165,473],{"class":466},[460,103167,103168,103170,103172],{"class":462,"line":2144},[460,103169,1776],{"class":466},[460,103171,1721],{"class":470},[460,103173,473],{"class":466},[460,103175,103176],{"class":462,"line":2158},[460,103177,522],{"emptyLinePlaceholder":521},[460,103179,103180,103182,103184],{"class":462,"line":2163},[460,103181,1776],{"class":466},[460,103183,704],{"class":470},[460,103185,473],{"class":466},[14,103187,103188],{},[30,103189],{"alt":32,"src":12230},[115,103191,12234],{"id":12233},[451,103193,103194],{"className":702,"code":12237,"language":704,"meta":32,"style":32},[457,103195,103196,103206,103220,103224,103232,103246,103266,103278,103286,103290,103298,103306,103316,103324,103332,103344,103348,103354,103358,103362,103366,103370,103374,103398,103406,103414,103422,103430,103438,103442],{"__ignoreMap":32},[460,103197,103198,103200,103202,103204],{"class":462,"line":463},[460,103199,1845],{"class":466},[460,103201,1848],{"class":470},[460,103203,1851],{"class":929},[460,103205,473],{"class":466},[460,103207,103208,103210,103212,103214,103216,103218],{"class":462,"line":476},[460,103209,781],{"class":466},[460,103211,704],{"class":470},[460,103213,1862],{"class":929},[460,103215,894],{"class":466},[460,103217,1867],{"class":1353},[460,103219,473],{"class":466},[460,103221,103222],{"class":462,"line":482},[460,103223,522],{"emptyLinePlaceholder":521},[460,103225,103226,103228,103230],{"class":462,"line":488},[460,103227,781],{"class":466},[460,103229,1880],{"class":470},[460,103231,473],{"class":466},[460,103233,103234,103236,103238,103240,103242,103244],{"class":462,"line":494},[460,103235,467],{"class":466},[460,103237,1889],{"class":470},[460,103239,1892],{"class":929},[460,103241,894],{"class":466},[460,103243,1897],{"class":1353},[460,103245,473],{"class":466},[460,103247,103248,103250,103252,103254,103256,103258,103260,103262,103264],{"class":462,"line":500},[460,103249,467],{"class":466},[460,103251,1889],{"class":470},[460,103253,1908],{"class":929},[460,103255,894],{"class":466},[460,103257,1913],{"class":1353},[460,103259,1916],{"class":929},[460,103261,894],{"class":466},[460,103263,1921],{"class":1353},[460,103265,473],{"class":466},[460,103267,103268,103270,103272,103274,103276],{"class":462,"line":506},[460,103269,467],{"class":466},[460,103271,1930],{"class":470},[460,103273,1933],{"class":466},[460,103275,1930],{"class":470},[460,103277,473],{"class":466},[460,103279,103280,103282,103284],{"class":462,"line":512},[460,103281,1776],{"class":466},[460,103283,1880],{"class":470},[460,103285,473],{"class":466},[460,103287,103288],{"class":462,"line":518},[460,103289,522],{"emptyLinePlaceholder":521},[460,103291,103292,103294,103296],{"class":462,"line":525},[460,103293,781],{"class":466},[460,103295,1721],{"class":470},[460,103297,473],{"class":466},[460,103299,103300,103302,103304],{"class":462,"line":531},[460,103301,467],{"class":466},[460,103303,225],{"class":470},[460,103305,473],{"class":466},[460,103307,103308,103310,103312,103314],{"class":462,"line":537},[460,103309,1340],{"class":887},[460,103311,11601],{"class":900},[460,103313,2943],{"class":887},[460,103315,1348],{"class":466},[460,103317,103318,103320,103322],{"class":462,"line":543},[460,103319,11610],{"class":466},[460,103321,11613],{"class":1353},[460,103323,1363],{"class":466},[460,103325,103326,103328,103330],{"class":462,"line":549},[460,103327,11620],{"class":466},[460,103329,2361],{"class":900},[460,103331,1363],{"class":466},[460,103333,103334,103336,103338,103340,103342],{"class":462,"line":555},[460,103335,11629],{"class":466},[460,103337,11632],{"class":1353},[460,103339,904],{"class":466},[460,103341,11637],{"class":1353},[460,103343,11640],{"class":466},[460,103345,103346],{"class":462,"line":560},[460,103347,1273],{"class":466},[460,103349,103350,103352],{"class":462,"line":566},[460,103351,11649],{"class":466},[460,103353,11652],{"class":1353},[460,103355,103356],{"class":462,"line":572},[460,103357,552],{"class":466},[460,103359,103360],{"class":462,"line":578},[460,103361,509],{"class":466},[460,103363,103364],{"class":462,"line":812},[460,103365,12410],{"class":942},[460,103367,103368],{"class":462,"line":818},[460,103369,12415],{"class":942},[460,103371,103372],{"class":462,"line":824},[460,103373,12420],{"class":942},[460,103375,103376,103378,103380,103382,103384,103386,103388,103390,103392,103394,103396],{"class":462,"line":2074},[460,103377,1340],{"class":887},[460,103379,11667],{"class":900},[460,103381,2943],{"class":887},[460,103383,12431],{"class":900},[460,103385,6000],{"class":466},[460,103387,12436],{"class":929},[460,103389,2174],{"class":466},[460,103391,12441],{"class":900},[460,103393,6000],{"class":466},[460,103395,12446],{"class":929},[460,103397,12449],{"class":466},[460,103399,103400,103402,103404],{"class":462,"line":2088},[460,103401,9381],{"class":466},[460,103403,930],{"class":929},[460,103405,11864],{"class":466},[460,103407,103408,103410,103412],{"class":462,"line":2103},[460,103409,12185],{"class":466},[460,103411,894],{"class":887},[460,103413,12466],{"class":1353},[460,103415,103416,103418,103420],{"class":462,"line":2122},[460,103417,9381],{"class":466},[460,103419,930],{"class":929},[460,103421,11908],{"class":466},[460,103423,103424,103426,103428],{"class":462,"line":2144},[460,103425,581],{"class":466},[460,103427,225],{"class":470},[460,103429,473],{"class":466},[460,103431,103432,103434,103436],{"class":462,"line":2158},[460,103433,1776],{"class":466},[460,103435,1721],{"class":470},[460,103437,473],{"class":466},[460,103439,103440],{"class":462,"line":2163},[460,103441,522],{"emptyLinePlaceholder":521},[460,103443,103444,103446,103448],{"class":462,"line":2168},[460,103445,1776],{"class":466},[460,103447,704],{"class":470},[460,103449,473],{"class":466},[14,103451,103452],{},[30,103453],{"alt":32,"src":12507},[18,103455,12511],{"id":12510},[103,103457,103458],{},[43,103459,12516],{},[14,103461,103462],{},[30,103463],{"alt":32,"src":12521},[103,103465,103466],{"start":476},[43,103467,12526],{},[14,103469,103470],{},[30,103471],{"alt":32,"src":12531},[451,103473,103474],{"className":702,"code":12534,"language":704,"meta":32,"style":32},[457,103475,103476,103486,103500,103504,103512,103526,103546,103558,103566,103570,103578,103590,103598,103606,103612,103616,103634,103642,103650,103654,103662,103666,103670,103674,103688,103692,103696,103702,103712,103716,103728,103732,103736,103740,103744,103750,103758,103766,103770],{"__ignoreMap":32},[460,103477,103478,103480,103482,103484],{"class":462,"line":463},[460,103479,1845],{"class":466},[460,103481,1848],{"class":470},[460,103483,1851],{"class":929},[460,103485,473],{"class":466},[460,103487,103488,103490,103492,103494,103496,103498],{"class":462,"line":476},[460,103489,781],{"class":466},[460,103491,704],{"class":470},[460,103493,1862],{"class":929},[460,103495,894],{"class":466},[460,103497,1867],{"class":1353},[460,103499,473],{"class":466},[460,103501,103502],{"class":462,"line":482},[460,103503,522],{"emptyLinePlaceholder":521},[460,103505,103506,103508,103510],{"class":462,"line":488},[460,103507,781],{"class":466},[460,103509,1880],{"class":470},[460,103511,473],{"class":466},[460,103513,103514,103516,103518,103520,103522,103524],{"class":462,"line":494},[460,103515,467],{"class":466},[460,103517,1889],{"class":470},[460,103519,1892],{"class":929},[460,103521,894],{"class":466},[460,103523,1897],{"class":1353},[460,103525,473],{"class":466},[460,103527,103528,103530,103532,103534,103536,103538,103540,103542,103544],{"class":462,"line":500},[460,103529,467],{"class":466},[460,103531,1889],{"class":470},[460,103533,1908],{"class":929},[460,103535,894],{"class":466},[460,103537,1913],{"class":1353},[460,103539,1916],{"class":929},[460,103541,894],{"class":466},[460,103543,1921],{"class":1353},[460,103545,473],{"class":466},[460,103547,103548,103550,103552,103554,103556],{"class":462,"line":506},[460,103549,467],{"class":466},[460,103551,1930],{"class":470},[460,103553,1933],{"class":466},[460,103555,1930],{"class":470},[460,103557,473],{"class":466},[460,103559,103560,103562,103564],{"class":462,"line":512},[460,103561,1776],{"class":466},[460,103563,1880],{"class":470},[460,103565,473],{"class":466},[460,103567,103568],{"class":462,"line":518},[460,103569,522],{"emptyLinePlaceholder":521},[460,103571,103572,103574,103576],{"class":462,"line":525},[460,103573,781],{"class":466},[460,103575,1721],{"class":470},[460,103577,473],{"class":466},[460,103579,103580,103582,103584,103586,103588],{"class":462,"line":531},[460,103581,467],{"class":466},[460,103583,14],{"class":470},[460,103585,12647],{"class":466},[460,103587,14],{"class":470},[460,103589,473],{"class":466},[460,103591,103592,103594,103596],{"class":462,"line":537},[460,103593,467],{"class":466},[460,103595,225],{"class":470},[460,103597,473],{"class":466},[460,103599,103600,103602,103604],{"class":462,"line":543},[460,103601,3372],{"class":887},[460,103603,12666],{"class":929},[460,103605,11374],{"class":466},[460,103607,103608,103610],{"class":462,"line":549},[460,103609,12673],{"class":887},[460,103611,1348],{"class":466},[460,103613,103614],{"class":462,"line":555},[460,103615,12680],{"class":942},[460,103617,103618,103620,103622,103624,103626,103628,103630,103632],{"class":462,"line":560},[460,103619,3434],{"class":887},[460,103621,12687],{"class":900},[460,103623,2943],{"class":887},[460,103625,10599],{"class":466},[460,103627,3541],{"class":929},[460,103629,2174],{"class":466},[460,103631,12698],{"class":1353},[460,103633,3754],{"class":466},[460,103635,103636,103638,103640],{"class":462,"line":566},[460,103637,12705],{"class":466},[460,103639,894],{"class":887},[460,103641,12710],{"class":1353},[460,103643,103644,103646,103648],{"class":462,"line":572},[460,103645,12715],{"class":466},[460,103647,12718],{"class":887},[460,103649,12721],{"class":466},[460,103651,103652],{"class":462,"line":578},[460,103653,12726],{"class":942},[460,103655,103656,103658,103660],{"class":462,"line":812},[460,103657,12731],{"class":466},[460,103659,930],{"class":929},[460,103661,12736],{"class":466},[460,103663,103664],{"class":462,"line":818},[460,103665,12741],{"class":942},[460,103667,103668],{"class":462,"line":824},[460,103669,12746],{"class":942},[460,103671,103672],{"class":462,"line":2074},[460,103673,12751],{"class":942},[460,103675,103676,103678,103680,103682,103684,103686],{"class":462,"line":2088},[460,103677,12756],{"class":887},[460,103679,10913],{"class":887},[460,103681,12761],{"class":929},[460,103683,2174],{"class":466},[460,103685,12766],{"class":1353},[460,103687,3754],{"class":466},[460,103689,103690],{"class":462,"line":2103},[460,103691,552],{"class":466},[460,103693,103694],{"class":462,"line":2122},[460,103695,12777],{"class":942},[460,103697,103698,103700],{"class":462,"line":2144},[460,103699,12782],{"class":887},[460,103701,1348],{"class":466},[460,103703,103704,103706,103708,103710],{"class":462,"line":2158},[460,103705,12789],{"class":929},[460,103707,2174],{"class":466},[460,103709,12794],{"class":1353},[460,103711,3754],{"class":466},[460,103713,103714],{"class":462,"line":2163},[460,103715,552],{"class":466},[460,103717,103718,103720,103722,103724,103726],{"class":462,"line":2168},[460,103719,12805],{"class":466},[460,103721,930],{"class":929},[460,103723,2174],{"class":466},[460,103725,12812],{"class":900},[460,103727,3754],{"class":466},[460,103729,103730],{"class":462,"line":2183},[460,103731,522],{"emptyLinePlaceholder":521},[460,103733,103734],{"class":462,"line":2194},[460,103735,509],{"class":466},[460,103737,103738],{"class":462,"line":2199},[460,103739,12827],{"class":942},[460,103741,103742],{"class":462,"line":2204},[460,103743,12832],{"class":942},[460,103745,103746,103748],{"class":462,"line":2212},[460,103747,12837],{"class":929},[460,103749,10758],{"class":466},[460,103751,103752,103754,103756],{"class":462,"line":2257},[460,103753,581],{"class":466},[460,103755,225],{"class":470},[460,103757,473],{"class":466},[460,103759,103760,103762,103764],{"class":462,"line":2285},[460,103761,1776],{"class":466},[460,103763,1721],{"class":470},[460,103765,473],{"class":466},[460,103767,103768],{"class":462,"line":2298},[460,103769,522],{"emptyLinePlaceholder":521},[460,103771,103772,103774,103776],{"class":462,"line":2303},[460,103773,1776],{"class":466},[460,103775,704],{"class":470},[460,103777,473],{"class":466},[14,103779,12870],{},[103,103781,103782],{"start":482},[43,103783,12875],{},[14,103785,103786],{},[30,103787],{"alt":32,"src":12880},[14,103789,12883],{},[18,103791,12887],{"id":12886},[23,103793,12891],{"id":12890},[103,103795,103796],{},[43,103797,12896],{},[14,103799,103800],{},[30,103801],{"alt":32,"src":12901},[103,103803,103804],{"start":476},[43,103805,12906],{},[14,103807,103808],{},[30,103809],{"alt":32,"src":12911},[14,103811,103812],{},[30,103813],{"alt":32,"src":12916},[14,103815,103816],{},[30,103817],{"alt":32,"src":12921},[23,103819,12925],{"id":12924},[14,103821,12928],{},[103,103823,103824],{},[43,103825,12933],{},[14,103827,103828],{},[30,103829],{"alt":32,"src":12938},[14,103831,12941],{},[451,103833,103834],{"className":453,"code":12944,"language":455,"meta":32,"style":32},[457,103835,103836,103844,103852,103856,103860,103864,103868,103872,103876,103880,103884,103892],{"__ignoreMap":32},[460,103837,103838,103840,103842],{"class":462,"line":463},[460,103839,781],{"class":466},[460,103841,1721],{"class":470},[460,103843,473],{"class":466},[460,103845,103846,103848,103850],{"class":462,"line":476},[460,103847,467],{"class":466},[460,103849,225],{"class":470},[460,103851,473],{"class":466},[460,103853,103854],{"class":462,"line":482},[460,103855,528],{"class":466},[460,103857,103858],{"class":462,"line":488},[460,103859,12971],{"class":466},[460,103861,103862],{"class":462,"line":494},[460,103863,509],{"class":466},[460,103865,103866],{"class":462,"line":500},[460,103867,12980],{"class":466},[460,103869,103870],{"class":462,"line":506},[460,103871,12985],{"class":466},[460,103873,103874],{"class":462,"line":512},[460,103875,12990],{"class":466},[460,103877,103878],{"class":462,"line":518},[460,103879,509],{"class":466},[460,103881,103882],{"class":462,"line":525},[460,103883,12999],{"class":466},[460,103885,103886,103888,103890],{"class":462,"line":531},[460,103887,581],{"class":466},[460,103889,225],{"class":470},[460,103891,473],{"class":466},[460,103893,103894,103896,103898],{"class":462,"line":537},[460,103895,1776],{"class":466},[460,103897,1721],{"class":470},[460,103899,473],{"class":466},[14,103901,103902],{},[30,103903],{"alt":32,"src":13020},[103,103905,103906],{"start":476},[43,103907,13025],{},[14,103909,103910],{},[30,103911],{"alt":32,"src":13030},[14,103913,12941],{},[14,103915,13035],{},[451,103917,103918],{"className":702,"code":13038,"language":704,"meta":32,"style":32},[457,103919,103920,103930,103944,103948,103956,103970,103990,104002,104010,104014,104022,104030,104040,104046,104050,104054,104070,104082,104094,104098,104102,104118,104122,104126,104130,104134,104140,104144,104166,104170,104184,104198,104208,104212,104216,104232,104240,104248,104252],{"__ignoreMap":32},[460,103921,103922,103924,103926,103928],{"class":462,"line":463},[460,103923,1845],{"class":466},[460,103925,1848],{"class":470},[460,103927,1851],{"class":929},[460,103929,473],{"class":466},[460,103931,103932,103934,103936,103938,103940,103942],{"class":462,"line":476},[460,103933,781],{"class":466},[460,103935,704],{"class":470},[460,103937,1862],{"class":929},[460,103939,894],{"class":466},[460,103941,1867],{"class":1353},[460,103943,473],{"class":466},[460,103945,103946],{"class":462,"line":482},[460,103947,522],{"emptyLinePlaceholder":521},[460,103949,103950,103952,103954],{"class":462,"line":488},[460,103951,781],{"class":466},[460,103953,1880],{"class":470},[460,103955,473],{"class":466},[460,103957,103958,103960,103962,103964,103966,103968],{"class":462,"line":494},[460,103959,467],{"class":466},[460,103961,1889],{"class":470},[460,103963,1892],{"class":929},[460,103965,894],{"class":466},[460,103967,1897],{"class":1353},[460,103969,473],{"class":466},[460,103971,103972,103974,103976,103978,103980,103982,103984,103986,103988],{"class":462,"line":500},[460,103973,467],{"class":466},[460,103975,1889],{"class":470},[460,103977,1908],{"class":929},[460,103979,894],{"class":466},[460,103981,1913],{"class":1353},[460,103983,1916],{"class":929},[460,103985,894],{"class":466},[460,103987,1921],{"class":1353},[460,103989,473],{"class":466},[460,103991,103992,103994,103996,103998,104000],{"class":462,"line":506},[460,103993,467],{"class":466},[460,103995,1930],{"class":470},[460,103997,1933],{"class":466},[460,103999,1930],{"class":470},[460,104001,473],{"class":466},[460,104003,104004,104006,104008],{"class":462,"line":512},[460,104005,1776],{"class":466},[460,104007,1880],{"class":470},[460,104009,473],{"class":466},[460,104011,104012],{"class":462,"line":518},[460,104013,522],{"emptyLinePlaceholder":521},[460,104015,104016,104018,104020],{"class":462,"line":525},[460,104017,781],{"class":466},[460,104019,1721],{"class":470},[460,104021,473],{"class":466},[460,104023,104024,104026,104028],{"class":462,"line":531},[460,104025,467],{"class":466},[460,104027,225],{"class":470},[460,104029,473],{"class":466},[460,104031,104032,104034,104036,104038],{"class":462,"line":537},[460,104033,1340],{"class":887},[460,104035,11601],{"class":900},[460,104037,2943],{"class":887},[460,104039,1348],{"class":466},[460,104041,104042,104044],{"class":462,"line":543},[460,104043,11620],{"class":466},[460,104045,13167],{"class":900},[460,104047,104048],{"class":462,"line":549},[460,104049,509],{"class":466},[460,104051,104052],{"class":462,"line":555},[460,104053,13176],{"class":942},[460,104055,104056,104058,104060,104062,104064,104066,104068],{"class":462,"line":560},[460,104057,3372],{"class":887},[460,104059,12666],{"class":929},[460,104061,2174],{"class":466},[460,104063,13187],{"class":3380},[460,104065,904],{"class":466},[460,104067,13192],{"class":3380},[460,104069,2180],{"class":466},[460,104071,104072,104074,104076,104078,104080],{"class":462,"line":566},[460,104073,12805],{"class":466},[460,104075,930],{"class":929},[460,104077,2174],{"class":466},[460,104079,10786],{"class":900},[460,104081,3754],{"class":466},[460,104083,104084,104086,104088,104090,104092],{"class":462,"line":572},[460,104085,12805],{"class":466},[460,104087,930],{"class":929},[460,104089,13215],{"class":466},[460,104091,8495],{"class":887},[460,104093,13220],{"class":466},[460,104095,104096],{"class":462,"line":578},[460,104097,509],{"class":466},[460,104099,104100],{"class":462,"line":812},[460,104101,13229],{"class":942},[460,104103,104104,104106,104108,104110,104112,104114,104116],{"class":462,"line":818},[460,104105,13234],{"class":466},[460,104107,13237],{"class":929},[460,104109,13240],{"class":466},[460,104111,901],{"class":900},[460,104113,904],{"class":466},[460,104115,907],{"class":900},[460,104117,13249],{"class":466},[460,104119,104120],{"class":462,"line":824},[460,104121,13254],{"class":942},[460,104123,104124],{"class":462,"line":2074},[460,104125,522],{"emptyLinePlaceholder":521},[460,104127,104128],{"class":462,"line":2088},[460,104129,13263],{"class":942},[460,104131,104132],{"class":462,"line":2103},[460,104133,13268],{"class":942},[460,104135,104136,104138],{"class":462,"line":2122},[460,104137,13273],{"class":942},[460,104139,13276],{"class":942},[460,104141,104142],{"class":462,"line":2144},[460,104143,13281],{"class":942},[460,104145,104146,104148,104150,104152,104154,104156,104158,104160,104162,104164],{"class":462,"line":2158},[460,104147,1340],{"class":887},[460,104149,13288],{"class":900},[460,104151,2943],{"class":887},[460,104153,897],{"class":466},[460,104155,2325],{"class":900},[460,104157,904],{"class":466},[460,104159,13299],{"class":900},[460,104161,904],{"class":466},[460,104163,13304],{"class":900},[460,104165,13307],{"class":466},[460,104167,104168],{"class":462,"line":2163},[460,104169,13312],{"class":942},[460,104171,104172,104174,104176,104178,104180,104182],{"class":462,"line":2168},[460,104173,1340],{"class":887},[460,104175,13319],{"class":900},[460,104177,2943],{"class":887},[460,104179,13324],{"class":466},[460,104181,13237],{"class":929},[460,104183,13329],{"class":466},[460,104185,104186,104188,104190,104192,104194,104196],{"class":462,"line":2183},[460,104187,1340],{"class":887},[460,104189,13336],{"class":900},[460,104191,2943],{"class":887},[460,104193,13341],{"class":466},[460,104195,13237],{"class":929},[460,104197,13329],{"class":466},[460,104199,104200,104202,104204,104206],{"class":462,"line":2194},[460,104201,9381],{"class":466},[460,104203,930],{"class":929},[460,104205,13354],{"class":466},[460,104207,13357],{"class":942},[460,104209,104210],{"class":462,"line":2199},[460,104211,522],{"emptyLinePlaceholder":521},[460,104213,104214],{"class":462,"line":2204},[460,104215,13366],{"class":942},[460,104217,104218,104220,104222,104224,104226,104228,104230],{"class":462,"line":2212},[460,104219,9381],{"class":466},[460,104221,930],{"class":929},[460,104223,13375],{"class":466},[460,104225,13378],{"class":929},[460,104227,2174],{"class":466},[460,104229,13383],{"class":887},[460,104231,13386],{"class":466},[460,104233,104234,104236,104238],{"class":462,"line":2257},[460,104235,581],{"class":466},[460,104237,225],{"class":470},[460,104239,473],{"class":466},[460,104241,104242,104244,104246],{"class":462,"line":2285},[460,104243,1776],{"class":466},[460,104245,1721],{"class":470},[460,104247,473],{"class":466},[460,104249,104250],{"class":462,"line":2298},[460,104251,522],{"emptyLinePlaceholder":521},[460,104253,104254,104256,104258],{"class":462,"line":2303},[460,104255,1776],{"class":466},[460,104257,704],{"class":470},[460,104259,473],{"class":466},[14,104261,104262],{},[30,104263],{"alt":32,"src":13419},[103,104265,104266],{"start":482},[43,104267,13424],{},[14,104269,104270],{},[30,104271],{"alt":32,"src":13429},[14,104273,13432],{},[14,104275,13435],{},[451,104277,104278],{"className":453,"code":13438,"language":455,"meta":32,"style":32},[457,104279,104280,104288,104296,104300,104304,104308,104312,104316,104320,104324,104328,104332,104336,104340,104344,104348,104352,104360],{"__ignoreMap":32},[460,104281,104282,104284,104286],{"class":462,"line":463},[460,104283,781],{"class":466},[460,104285,1721],{"class":470},[460,104287,473],{"class":466},[460,104289,104290,104292,104294],{"class":462,"line":476},[460,104291,467],{"class":466},[460,104293,225],{"class":470},[460,104295,473],{"class":466},[460,104297,104298],{"class":462,"line":482},[460,104299,528],{"class":466},[460,104301,104302],{"class":462,"line":488},[460,104303,13465],{"class":466},[460,104305,104306],{"class":462,"line":494},[460,104307,509],{"class":466},[460,104309,104310],{"class":462,"line":500},[460,104311,497],{"class":466},[460,104313,104314],{"class":462,"line":506},[460,104315,13478],{"class":466},[460,104317,104318],{"class":462,"line":512},[460,104319,509],{"class":466},[460,104321,104322],{"class":462,"line":518},[460,104323,13487],{"class":466},[460,104325,104326],{"class":462,"line":525},[460,104327,13492],{"class":466},[460,104329,104330],{"class":462,"line":531},[460,104331,13497],{"class":466},[460,104333,104334],{"class":462,"line":537},[460,104335,13502],{"class":466},[460,104337,104338],{"class":462,"line":543},[460,104339,13507],{"class":466},[460,104341,104342],{"class":462,"line":549},[460,104343,13512],{"class":466},[460,104345,104346],{"class":462,"line":555},[460,104347,13517],{"class":466},[460,104349,104350],{"class":462,"line":560},[460,104351,13522],{"class":466},[460,104353,104354,104356,104358],{"class":462,"line":566},[460,104355,581],{"class":466},[460,104357,225],{"class":470},[460,104359,473],{"class":466},[460,104361,104362,104364,104366],{"class":462,"line":572},[460,104363,1776],{"class":466},[460,104365,1721],{"class":470},[460,104367,473],{"class":466},[14,104369,104370],{},[30,104371],{"alt":32,"src":13543},[103,104373,104374],{"start":488},[43,104375,13548],{},[451,104377,104378],{"className":453,"code":13551,"language":455,"meta":32,"style":32},[457,104379,104380,104388,104400,104408,104412,104416,104420,104424,104428,104432,104436,104440,104444,104448,104452,104460],{"__ignoreMap":32},[460,104381,104382,104384,104386],{"class":462,"line":463},[460,104383,781],{"class":466},[460,104385,1721],{"class":470},[460,104387,473],{"class":466},[460,104389,104390,104392,104394,104396,104398],{"class":462,"line":476},[460,104391,467],{"class":466},[460,104393,10501],{"class":470},[460,104395,13570],{"class":466},[460,104397,10501],{"class":470},[460,104399,473],{"class":466},[460,104401,104402,104404,104406],{"class":462,"line":482},[460,104403,467],{"class":466},[460,104405,225],{"class":470},[460,104407,473],{"class":466},[460,104409,104410],{"class":462,"line":488},[460,104411,13587],{"class":466},[460,104413,104414],{"class":462,"line":494},[460,104415,13592],{"class":466},[460,104417,104418],{"class":462,"line":500},[460,104419,13597],{"class":466},[460,104421,104422],{"class":462,"line":506},[460,104423,13602],{"class":466},[460,104425,104426],{"class":462,"line":512},[460,104427,13607],{"class":466},[460,104429,104430],{"class":462,"line":518},[460,104431,13612],{"class":466},[460,104433,104434],{"class":462,"line":525},[460,104435,13617],{"class":466},[460,104437,104438],{"class":462,"line":531},[460,104439,13622],{"class":466},[460,104441,104442],{"class":462,"line":537},[460,104443,13627],{"class":466},[460,104445,104446],{"class":462,"line":543},[460,104447,13632],{"class":466},[460,104449,104450],{"class":462,"line":549},[460,104451,1679],{"class":466},[460,104453,104454,104456,104458],{"class":462,"line":555},[460,104455,581],{"class":466},[460,104457,225],{"class":470},[460,104459,473],{"class":466},[460,104461,104462,104464,104466],{"class":462,"line":560},[460,104463,1776],{"class":466},[460,104465,1721],{"class":470},[460,104467,473],{"class":466},[103,104469,104470],{"start":494},[43,104471,13657],{},[14,104473,104474],{},[30,104475],{"alt":32,"src":13662},[18,104477,13666],{"id":13665},[23,104479,13670],{"id":13669},[14,104481,104482],{},[30,104483],{"alt":32,"src":13675},[14,104485,104486],{},[3944,104487,13680],{},[14,104489,13683],{},[40,104491,104492],{},[43,104493,13688],{},[14,104495,13691],{},[14,104497,13694],{},[451,104499,104500],{"className":702,"code":13697,"language":704,"meta":32,"style":32},[457,104501,104502,104512,104526,104530,104538,104552,104572,104584,104592,104598,104608,104620,104632,104642,104654,104664,104674,104686,104690,104698,104706,104710,104718,104736,104754,104762,104780,104790,104798,104808,104812,104816,104820,104824,104828,104848,104856,104864,104868],{"__ignoreMap":32},[460,104503,104504,104506,104508,104510],{"class":462,"line":463},[460,104505,1845],{"class":466},[460,104507,1848],{"class":470},[460,104509,1851],{"class":929},[460,104511,473],{"class":466},[460,104513,104514,104516,104518,104520,104522,104524],{"class":462,"line":476},[460,104515,781],{"class":466},[460,104517,704],{"class":470},[460,104519,1862],{"class":929},[460,104521,894],{"class":466},[460,104523,1867],{"class":1353},[460,104525,473],{"class":466},[460,104527,104528],{"class":462,"line":482},[460,104529,522],{"emptyLinePlaceholder":521},[460,104531,104532,104534,104536],{"class":462,"line":488},[460,104533,781],{"class":466},[460,104535,1880],{"class":470},[460,104537,473],{"class":466},[460,104539,104540,104542,104544,104546,104548,104550],{"class":462,"line":494},[460,104541,467],{"class":466},[460,104543,1889],{"class":470},[460,104545,1892],{"class":929},[460,104547,894],{"class":466},[460,104549,1897],{"class":1353},[460,104551,473],{"class":466},[460,104553,104554,104556,104558,104560,104562,104564,104566,104568,104570],{"class":462,"line":500},[460,104555,467],{"class":466},[460,104557,1889],{"class":470},[460,104559,1908],{"class":929},[460,104561,894],{"class":466},[460,104563,1913],{"class":1353},[460,104565,1916],{"class":929},[460,104567,894],{"class":466},[460,104569,1921],{"class":1353},[460,104571,473],{"class":466},[460,104573,104574,104576,104578,104580,104582],{"class":462,"line":506},[460,104575,467],{"class":466},[460,104577,1930],{"class":470},[460,104579,1933],{"class":466},[460,104581,1930],{"class":470},[460,104583,473],{"class":466},[460,104585,104586,104588,104590],{"class":462,"line":512},[460,104587,467],{"class":466},[460,104589,1944],{"class":470},[460,104591,473],{"class":466},[460,104593,104594,104596],{"class":462,"line":518},[460,104595,13794],{"class":929},[460,104597,1348],{"class":466},[460,104599,104600,104602,104604,104606],{"class":462,"line":525},[460,104601,1982],{"class":900},[460,104603,1961],{"class":466},[460,104605,1987],{"class":900},[460,104607,1966],{"class":466},[460,104609,104610,104612,104614,104616,104618],{"class":462,"line":531},[460,104611,2009],{"class":900},[460,104613,1961],{"class":466},[460,104615,5490],{"class":900},[460,104617,2017],{"class":887},[460,104619,1966],{"class":466},[460,104621,104622,104624,104626,104628,104630],{"class":462,"line":537},[460,104623,5499],{"class":900},[460,104625,1961],{"class":466},[460,104627,5490],{"class":900},[460,104629,2017],{"class":887},[460,104631,1966],{"class":466},[460,104633,104634,104636,104638,104640],{"class":462,"line":543},[460,104635,2673],{"class":900},[460,104637,1961],{"class":466},[460,104639,13839],{"class":900},[460,104641,1966],{"class":466},[460,104643,104644,104646,104648,104650,104652],{"class":462,"line":549},[460,104645,2356],{"class":900},[460,104647,1961],{"class":466},[460,104649,13850],{"class":900},[460,104651,2017],{"class":887},[460,104653,1966],{"class":466},[460,104655,104656,104658,104660,104662],{"class":462,"line":555},[460,104657,2384],{"class":900},[460,104659,1961],{"class":466},[460,104661,2690],{"class":900},[460,104663,1966],{"class":466},[460,104665,104666,104668,104670,104672],{"class":462,"line":560},[460,104667,5540],{"class":900},[460,104669,1961],{"class":466},[460,104671,5545],{"class":900},[460,104673,1966],{"class":466},[460,104675,104676,104678,104680,104682,104684],{"class":462,"line":566},[460,104677,13879],{"class":900},[460,104679,1961],{"class":466},[460,104681,7290],{"class":900},[460,104683,2017],{"class":887},[460,104685,1966],{"class":466},[460,104687,104688],{"class":462,"line":572},[460,104689,509],{"class":466},[460,104691,104692,104694,104696],{"class":462,"line":578},[460,104693,581],{"class":466},[460,104695,1944],{"class":470},[460,104697,473],{"class":466},[460,104699,104700,104702,104704],{"class":462,"line":812},[460,104701,1776],{"class":466},[460,104703,1880],{"class":470},[460,104705,473],{"class":466},[460,104707,104708],{"class":462,"line":818},[460,104709,522],{"emptyLinePlaceholder":521},[460,104711,104712,104714,104716],{"class":462,"line":824},[460,104713,781],{"class":466},[460,104715,1721],{"class":470},[460,104717,473],{"class":466},[460,104719,104720,104722,104724,104726,104728,104730,104732,104734],{"class":462,"line":2074},[460,104721,467],{"class":466},[460,104723,2737],{"class":470},[460,104725,2740],{"class":929},[460,104727,894],{"class":466},[460,104729,13932],{"class":1353},[460,104731,5599],{"class":466},[460,104733,2737],{"class":470},[460,104735,473],{"class":466},[460,104737,104738,104740,104742,104744,104746,104748,104750,104752],{"class":462,"line":2088},[460,104739,467],{"class":466},[460,104741,225],{"class":470},[460,104743,12081],{"class":929},[460,104745,894],{"class":466},[460,104747,12086],{"class":1353},[460,104749,5599],{"class":466},[460,104751,225],{"class":470},[460,104753,473],{"class":466},[460,104755,104756,104758,104760],{"class":462,"line":2103},[460,104757,467],{"class":466},[460,104759,225],{"class":470},[460,104761,473],{"class":466},[460,104763,104764,104766,104768,104770,104772,104774,104776,104778],{"class":462,"line":2122},[460,104765,1340],{"class":887},[460,104767,10723],{"class":900},[460,104769,2943],{"class":887},[460,104771,10599],{"class":466},[460,104773,3541],{"class":929},[460,104775,2174],{"class":466},[460,104777,13981],{"class":1353},[460,104779,3754],{"class":466},[460,104781,104782,104784,104786,104788],{"class":462,"line":2144},[460,104783,13988],{"class":887},[460,104785,13991],{"class":466},[460,104787,894],{"class":887},[460,104789,13996],{"class":900},[460,104791,104792,104794,104796],{"class":462,"line":2158},[460,104793,3372],{"class":887},[460,104795,14003],{"class":929},[460,104797,11374],{"class":466},[460,104799,104800,104802,104804,104806],{"class":462,"line":2163},[460,104801,14010],{"class":466},[460,104803,894],{"class":887},[460,104805,10169],{"class":466},[460,104807,14017],{"class":887},[460,104809,104810],{"class":462,"line":2168},[460,104811,14022],{"class":942},[460,104813,104814],{"class":462,"line":2183},[460,104815,509],{"class":466},[460,104817,104818],{"class":462,"line":2194},[460,104819,14031],{"class":942},[460,104821,104822],{"class":462,"line":2199},[460,104823,14036],{"class":942},[460,104825,104826],{"class":462,"line":2204},[460,104827,14041],{"class":942},[460,104829,104830,104832,104834,104836,104838,104840,104842,104844,104846],{"class":462,"line":2212},[460,104831,14046],{"class":466},[460,104833,3599],{"class":929},[460,104835,2174],{"class":466},[460,104837,14053],{"class":1353},[460,104839,14056],{"class":466},[460,104841,14059],{"class":929},[460,104843,14062],{"class":466},[460,104845,14065],{"class":900},[460,104847,6311],{"class":466},[460,104849,104850,104852,104854],{"class":462,"line":2257},[460,104851,581],{"class":466},[460,104853,225],{"class":470},[460,104855,473],{"class":466},[460,104857,104858,104860,104862],{"class":462,"line":2285},[460,104859,1776],{"class":466},[460,104861,1721],{"class":470},[460,104863,473],{"class":466},[460,104865,104866],{"class":462,"line":2298},[460,104867,522],{"emptyLinePlaceholder":521},[460,104869,104870,104872,104874],{"class":462,"line":2303},[460,104871,1776],{"class":466},[460,104873,704],{"class":470},[460,104875,473],{"class":466},[40,104877,104878],{},[43,104879,14100],{},[14,104881,14103],{},[14,104883,14106],{},[14,104885,14109],{},[14,104887,14112],{},[451,104889,104890],{"className":702,"code":14115,"language":704,"meta":32,"style":32},[457,104891,104892,104902,104916,104920,104928,104942,104962,104974,104982,104988,104998,105010,105022,105032,105044,105054,105064,105076,105080,105088,105096,105100,105108,105126,105144,105152,105170,105180,105188,105198,105202,105206,105210,105214,105218,105222,105226,105230,105234,105250,105256,105260,105268,105272,105282,105296,105304,105308,105312,105316,105336,105340,105344,105348,105352,105356,105364,105372,105376],{"__ignoreMap":32},[460,104893,104894,104896,104898,104900],{"class":462,"line":463},[460,104895,1845],{"class":466},[460,104897,1848],{"class":470},[460,104899,1851],{"class":929},[460,104901,473],{"class":466},[460,104903,104904,104906,104908,104910,104912,104914],{"class":462,"line":476},[460,104905,781],{"class":466},[460,104907,704],{"class":470},[460,104909,1862],{"class":929},[460,104911,894],{"class":466},[460,104913,1867],{"class":1353},[460,104915,473],{"class":466},[460,104917,104918],{"class":462,"line":482},[460,104919,522],{"emptyLinePlaceholder":521},[460,104921,104922,104924,104926],{"class":462,"line":488},[460,104923,781],{"class":466},[460,104925,1880],{"class":470},[460,104927,473],{"class":466},[460,104929,104930,104932,104934,104936,104938,104940],{"class":462,"line":494},[460,104931,467],{"class":466},[460,104933,1889],{"class":470},[460,104935,1892],{"class":929},[460,104937,894],{"class":466},[460,104939,1897],{"class":1353},[460,104941,473],{"class":466},[460,104943,104944,104946,104948,104950,104952,104954,104956,104958,104960],{"class":462,"line":500},[460,104945,467],{"class":466},[460,104947,1889],{"class":470},[460,104949,1908],{"class":929},[460,104951,894],{"class":466},[460,104953,1913],{"class":1353},[460,104955,1916],{"class":929},[460,104957,894],{"class":466},[460,104959,1921],{"class":1353},[460,104961,473],{"class":466},[460,104963,104964,104966,104968,104970,104972],{"class":462,"line":506},[460,104965,467],{"class":466},[460,104967,1930],{"class":470},[460,104969,1933],{"class":466},[460,104971,1930],{"class":470},[460,104973,473],{"class":466},[460,104975,104976,104978,104980],{"class":462,"line":512},[460,104977,467],{"class":466},[460,104979,1944],{"class":470},[460,104981,473],{"class":466},[460,104983,104984,104986],{"class":462,"line":518},[460,104985,13794],{"class":929},[460,104987,1348],{"class":466},[460,104989,104990,104992,104994,104996],{"class":462,"line":525},[460,104991,1982],{"class":900},[460,104993,1961],{"class":466},[460,104995,1987],{"class":900},[460,104997,1966],{"class":466},[460,104999,105000,105002,105004,105006,105008],{"class":462,"line":531},[460,105001,2009],{"class":900},[460,105003,1961],{"class":466},[460,105005,5490],{"class":900},[460,105007,2017],{"class":887},[460,105009,1966],{"class":466},[460,105011,105012,105014,105016,105018,105020],{"class":462,"line":537},[460,105013,5499],{"class":900},[460,105015,1961],{"class":466},[460,105017,5490],{"class":900},[460,105019,2017],{"class":887},[460,105021,1966],{"class":466},[460,105023,105024,105026,105028,105030],{"class":462,"line":543},[460,105025,2673],{"class":900},[460,105027,1961],{"class":466},[460,105029,13839],{"class":900},[460,105031,1966],{"class":466},[460,105033,105034,105036,105038,105040,105042],{"class":462,"line":549},[460,105035,2356],{"class":900},[460,105037,1961],{"class":466},[460,105039,13850],{"class":900},[460,105041,2017],{"class":887},[460,105043,1966],{"class":466},[460,105045,105046,105048,105050,105052],{"class":462,"line":555},[460,105047,2384],{"class":900},[460,105049,1961],{"class":466},[460,105051,2690],{"class":900},[460,105053,1966],{"class":466},[460,105055,105056,105058,105060,105062],{"class":462,"line":560},[460,105057,5540],{"class":900},[460,105059,1961],{"class":466},[460,105061,5545],{"class":900},[460,105063,1966],{"class":466},[460,105065,105066,105068,105070,105072,105074],{"class":462,"line":566},[460,105067,13879],{"class":900},[460,105069,1961],{"class":466},[460,105071,7290],{"class":900},[460,105073,2017],{"class":887},[460,105075,1966],{"class":466},[460,105077,105078],{"class":462,"line":572},[460,105079,509],{"class":466},[460,105081,105082,105084,105086],{"class":462,"line":578},[460,105083,581],{"class":466},[460,105085,1944],{"class":470},[460,105087,473],{"class":466},[460,105089,105090,105092,105094],{"class":462,"line":812},[460,105091,1776],{"class":466},[460,105093,1880],{"class":470},[460,105095,473],{"class":466},[460,105097,105098],{"class":462,"line":818},[460,105099,522],{"emptyLinePlaceholder":521},[460,105101,105102,105104,105106],{"class":462,"line":824},[460,105103,781],{"class":466},[460,105105,1721],{"class":470},[460,105107,473],{"class":466},[460,105109,105110,105112,105114,105116,105118,105120,105122,105124],{"class":462,"line":2074},[460,105111,467],{"class":466},[460,105113,2737],{"class":470},[460,105115,2740],{"class":929},[460,105117,894],{"class":466},[460,105119,13932],{"class":1353},[460,105121,5599],{"class":466},[460,105123,2737],{"class":470},[460,105125,473],{"class":466},[460,105127,105128,105130,105132,105134,105136,105138,105140,105142],{"class":462,"line":2088},[460,105129,467],{"class":466},[460,105131,225],{"class":470},[460,105133,12081],{"class":929},[460,105135,894],{"class":466},[460,105137,12086],{"class":1353},[460,105139,5599],{"class":466},[460,105141,225],{"class":470},[460,105143,473],{"class":466},[460,105145,105146,105148,105150],{"class":462,"line":2103},[460,105147,467],{"class":466},[460,105149,225],{"class":470},[460,105151,473],{"class":466},[460,105153,105154,105156,105158,105160,105162,105164,105166,105168],{"class":462,"line":2122},[460,105155,1340],{"class":887},[460,105157,10723],{"class":900},[460,105159,2943],{"class":887},[460,105161,10599],{"class":466},[460,105163,3541],{"class":929},[460,105165,2174],{"class":466},[460,105167,13981],{"class":1353},[460,105169,3754],{"class":466},[460,105171,105172,105174,105176,105178],{"class":462,"line":2144},[460,105173,13988],{"class":887},[460,105175,13991],{"class":466},[460,105177,894],{"class":887},[460,105179,13996],{"class":900},[460,105181,105182,105184,105186],{"class":462,"line":2158},[460,105183,3372],{"class":887},[460,105185,14003],{"class":929},[460,105187,11374],{"class":466},[460,105189,105190,105192,105194,105196],{"class":462,"line":2163},[460,105191,14010],{"class":466},[460,105193,894],{"class":887},[460,105195,10169],{"class":466},[460,105197,14017],{"class":887},[460,105199,105200],{"class":462,"line":2168},[460,105201,14022],{"class":942},[460,105203,105204],{"class":462,"line":2183},[460,105205,509],{"class":466},[460,105207,105208],{"class":462,"line":2194},[460,105209,14031],{"class":942},[460,105211,105212],{"class":462,"line":2199},[460,105213,14440],{"class":942},[460,105215,105216],{"class":462,"line":2204},[460,105217,14445],{"class":942},[460,105219,105220],{"class":462,"line":2212},[460,105221,14450],{"class":942},[460,105223,105224],{"class":462,"line":2257},[460,105225,14455],{"class":942},[460,105227,105228],{"class":462,"line":2285},[460,105229,14460],{"class":942},[460,105231,105232],{"class":462,"line":2298},[460,105233,14465],{"class":942},[460,105235,105236,105238,105240,105242,105244,105246,105248],{"class":462,"line":2303},[460,105237,3372],{"class":887},[460,105239,14472],{"class":929},[460,105241,2174],{"class":466},[460,105243,14477],{"class":3380},[460,105245,904],{"class":466},[460,105247,14482],{"class":3380},[460,105249,2180],{"class":466},[460,105251,105252,105254],{"class":462,"line":2308},[460,105253,3395],{"class":887},[460,105255,14491],{"class":466},[460,105257,105258],{"class":462,"line":2318},[460,105259,14496],{"class":942},[460,105261,105262,105264,105266],{"class":462,"line":2333},[460,105263,8353],{"class":887},[460,105265,10709],{"class":887},[460,105267,9376],{"class":466},[460,105269,105270],{"class":462,"line":2338},[460,105271,14509],{"class":942},[460,105273,105274,105276,105278,105280],{"class":462,"line":2343},[460,105275,3702],{"class":887},[460,105277,14516],{"class":466},[460,105279,14519],{"class":929},[460,105281,14522],{"class":466},[460,105283,105284,105286,105288,105290,105292,105294],{"class":462,"line":2353},[460,105285,14527],{"class":466},[460,105287,894],{"class":887},[460,105289,14532],{"class":929},[460,105291,2174],{"class":466},[460,105293,3976],{"class":887},[460,105295,9376],{"class":466},[460,105297,105298,105300,105302],{"class":462,"line":2368},[460,105299,14543],{"class":929},[460,105301,14546],{"class":466},[460,105303,14549],{"class":942},[460,105305,105306],{"class":462,"line":2381},[460,105307,14554],{"class":466},[460,105309,105310],{"class":462,"line":2394},[460,105311,552],{"class":466},[460,105313,105314],{"class":462,"line":2399},[460,105315,509],{"class":466},[460,105317,105318,105320,105322,105324,105326,105328,105330,105332,105334],{"class":462,"line":2404},[460,105319,14046],{"class":466},[460,105321,3599],{"class":929},[460,105323,2174],{"class":466},[460,105325,14053],{"class":1353},[460,105327,904],{"class":466},[460,105329,14059],{"class":929},[460,105331,14062],{"class":466},[460,105333,14065],{"class":900},[460,105335,6311],{"class":466},[460,105337,105338],{"class":462,"line":2414},[460,105339,522],{"emptyLinePlaceholder":521},[460,105341,105342],{"class":462,"line":2428},[460,105343,14591],{"class":942},[460,105345,105346],{"class":462,"line":2440},[460,105347,14596],{"class":942},[460,105349,105350],{"class":462,"line":2445},[460,105351,14601],{"class":942},[460,105353,105354],{"class":462,"line":2450},[460,105355,14606],{"class":942},[460,105357,105358,105360,105362],{"class":462,"line":2460},[460,105359,581],{"class":466},[460,105361,225],{"class":470},[460,105363,473],{"class":466},[460,105365,105366,105368,105370],{"class":462,"line":2473},[460,105367,1776],{"class":466},[460,105369,1721],{"class":470},[460,105371,473],{"class":466},[460,105373,105374],{"class":462,"line":2487},[460,105375,522],{"emptyLinePlaceholder":521},[460,105377,105378,105380,105382],{"class":462,"line":2492},[460,105379,1776],{"class":466},[460,105381,704],{"class":470},[460,105383,473],{"class":466},[23,105385,14638],{"id":14637},[14,105387,105388],{},[30,105389],{"alt":32,"src":14643},[14,105391,105392],{},[30,105393],{"alt":32,"src":14648},[14,105395,105396],{},[3944,105397,14653],{},[14,105399,14656],{},[40,105401,105402],{},[43,105403,14661],{},[14,105405,14664],{},[14,105407,14667],{},[451,105409,105410],{"className":702,"code":14670,"language":704,"meta":32,"style":32},[457,105411,105412,105422,105436,105440,105448,105462,105482,105494,105502,105508,105518,105530,105542,105552,105564,105574,105584,105596,105600,105608,105616,105620,105628,105646,105664,105672,105690,105700,105708,105718,105722,105726,105730,105734,105738,105758,105766,105774,105778],{"__ignoreMap":32},[460,105413,105414,105416,105418,105420],{"class":462,"line":463},[460,105415,1845],{"class":466},[460,105417,1848],{"class":470},[460,105419,1851],{"class":929},[460,105421,473],{"class":466},[460,105423,105424,105426,105428,105430,105432,105434],{"class":462,"line":476},[460,105425,781],{"class":466},[460,105427,704],{"class":470},[460,105429,1862],{"class":929},[460,105431,894],{"class":466},[460,105433,1867],{"class":1353},[460,105435,473],{"class":466},[460,105437,105438],{"class":462,"line":482},[460,105439,522],{"emptyLinePlaceholder":521},[460,105441,105442,105444,105446],{"class":462,"line":488},[460,105443,781],{"class":466},[460,105445,1880],{"class":470},[460,105447,473],{"class":466},[460,105449,105450,105452,105454,105456,105458,105460],{"class":462,"line":494},[460,105451,467],{"class":466},[460,105453,1889],{"class":470},[460,105455,1892],{"class":929},[460,105457,894],{"class":466},[460,105459,1897],{"class":1353},[460,105461,473],{"class":466},[460,105463,105464,105466,105468,105470,105472,105474,105476,105478,105480],{"class":462,"line":500},[460,105465,467],{"class":466},[460,105467,1889],{"class":470},[460,105469,1908],{"class":929},[460,105471,894],{"class":466},[460,105473,1913],{"class":1353},[460,105475,1916],{"class":929},[460,105477,894],{"class":466},[460,105479,1921],{"class":1353},[460,105481,473],{"class":466},[460,105483,105484,105486,105488,105490,105492],{"class":462,"line":506},[460,105485,467],{"class":466},[460,105487,1930],{"class":470},[460,105489,1933],{"class":466},[460,105491,1930],{"class":470},[460,105493,473],{"class":466},[460,105495,105496,105498,105500],{"class":462,"line":512},[460,105497,467],{"class":466},[460,105499,1944],{"class":470},[460,105501,473],{"class":466},[460,105503,105504,105506],{"class":462,"line":518},[460,105505,13794],{"class":929},[460,105507,1348],{"class":466},[460,105509,105510,105512,105514,105516],{"class":462,"line":525},[460,105511,1982],{"class":900},[460,105513,1961],{"class":466},[460,105515,1987],{"class":900},[460,105517,1966],{"class":466},[460,105519,105520,105522,105524,105526,105528],{"class":462,"line":531},[460,105521,2009],{"class":900},[460,105523,1961],{"class":466},[460,105525,5490],{"class":900},[460,105527,2017],{"class":887},[460,105529,1966],{"class":466},[460,105531,105532,105534,105536,105538,105540],{"class":462,"line":537},[460,105533,5499],{"class":900},[460,105535,1961],{"class":466},[460,105537,5490],{"class":900},[460,105539,2017],{"class":887},[460,105541,1966],{"class":466},[460,105543,105544,105546,105548,105550],{"class":462,"line":543},[460,105545,2673],{"class":900},[460,105547,1961],{"class":466},[460,105549,13839],{"class":900},[460,105551,1966],{"class":466},[460,105553,105554,105556,105558,105560,105562],{"class":462,"line":549},[460,105555,2356],{"class":900},[460,105557,1961],{"class":466},[460,105559,13850],{"class":900},[460,105561,2017],{"class":887},[460,105563,1966],{"class":466},[460,105565,105566,105568,105570,105572],{"class":462,"line":555},[460,105567,2384],{"class":900},[460,105569,1961],{"class":466},[460,105571,2690],{"class":900},[460,105573,1966],{"class":466},[460,105575,105576,105578,105580,105582],{"class":462,"line":560},[460,105577,5540],{"class":900},[460,105579,1961],{"class":466},[460,105581,5545],{"class":900},[460,105583,1966],{"class":466},[460,105585,105586,105588,105590,105592,105594],{"class":462,"line":566},[460,105587,13879],{"class":900},[460,105589,1961],{"class":466},[460,105591,7290],{"class":900},[460,105593,2017],{"class":887},[460,105595,1966],{"class":466},[460,105597,105598],{"class":462,"line":572},[460,105599,509],{"class":466},[460,105601,105602,105604,105606],{"class":462,"line":578},[460,105603,581],{"class":466},[460,105605,1944],{"class":470},[460,105607,473],{"class":466},[460,105609,105610,105612,105614],{"class":462,"line":812},[460,105611,1776],{"class":466},[460,105613,1880],{"class":470},[460,105615,473],{"class":466},[460,105617,105618],{"class":462,"line":818},[460,105619,522],{"emptyLinePlaceholder":521},[460,105621,105622,105624,105626],{"class":462,"line":824},[460,105623,781],{"class":466},[460,105625,1721],{"class":470},[460,105627,473],{"class":466},[460,105629,105630,105632,105634,105636,105638,105640,105642,105644],{"class":462,"line":2074},[460,105631,467],{"class":466},[460,105633,2737],{"class":470},[460,105635,2740],{"class":929},[460,105637,894],{"class":466},[460,105639,13932],{"class":1353},[460,105641,5599],{"class":466},[460,105643,2737],{"class":470},[460,105645,473],{"class":466},[460,105647,105648,105650,105652,105654,105656,105658,105660,105662],{"class":462,"line":2088},[460,105649,467],{"class":466},[460,105651,225],{"class":470},[460,105653,12081],{"class":929},[460,105655,894],{"class":466},[460,105657,12086],{"class":1353},[460,105659,5599],{"class":466},[460,105661,225],{"class":470},[460,105663,473],{"class":466},[460,105665,105666,105668,105670],{"class":462,"line":2103},[460,105667,467],{"class":466},[460,105669,225],{"class":470},[460,105671,473],{"class":466},[460,105673,105674,105676,105678,105680,105682,105684,105686,105688],{"class":462,"line":2122},[460,105675,1340],{"class":887},[460,105677,10723],{"class":900},[460,105679,2943],{"class":887},[460,105681,10599],{"class":466},[460,105683,3541],{"class":929},[460,105685,2174],{"class":466},[460,105687,13981],{"class":1353},[460,105689,3754],{"class":466},[460,105691,105692,105694,105696,105698],{"class":462,"line":2144},[460,105693,13988],{"class":887},[460,105695,13991],{"class":466},[460,105697,894],{"class":887},[460,105699,13996],{"class":900},[460,105701,105702,105704,105706],{"class":462,"line":2158},[460,105703,3372],{"class":887},[460,105705,14003],{"class":929},[460,105707,11374],{"class":466},[460,105709,105710,105712,105714,105716],{"class":462,"line":2163},[460,105711,14010],{"class":466},[460,105713,894],{"class":887},[460,105715,10169],{"class":466},[460,105717,14017],{"class":887},[460,105719,105720],{"class":462,"line":2168},[460,105721,14022],{"class":942},[460,105723,105724],{"class":462,"line":2183},[460,105725,509],{"class":466},[460,105727,105728],{"class":462,"line":2194},[460,105729,14031],{"class":942},[460,105731,105732],{"class":462,"line":2199},[460,105733,14995],{"class":942},[460,105735,105736],{"class":462,"line":2204},[460,105737,15000],{"class":942},[460,105739,105740,105742,105744,105746,105748,105750,105752,105754,105756],{"class":462,"line":2212},[460,105741,14046],{"class":466},[460,105743,3599],{"class":929},[460,105745,2174],{"class":466},[460,105747,14053],{"class":1353},[460,105749,14056],{"class":466},[460,105751,15015],{"class":929},[460,105753,14062],{"class":466},[460,105755,14065],{"class":900},[460,105757,6311],{"class":466},[460,105759,105760,105762,105764],{"class":462,"line":2257},[460,105761,581],{"class":466},[460,105763,225],{"class":470},[460,105765,473],{"class":466},[460,105767,105768,105770,105772],{"class":462,"line":2285},[460,105769,1776],{"class":466},[460,105771,1721],{"class":470},[460,105773,473],{"class":466},[460,105775,105776],{"class":462,"line":2298},[460,105777,522],{"emptyLinePlaceholder":521},[460,105779,105780,105782,105784],{"class":462,"line":2303},[460,105781,1776],{"class":466},[460,105783,704],{"class":470},[460,105785,473],{"class":466},[40,105787,105788],{},[43,105789,15054],{},[14,105791,15057],{},[14,105793,14106],{},[14,105795,15062],{},[14,105797,15065],{},[451,105799,105800],{"className":702,"code":15068,"language":704,"meta":32,"style":32},[457,105801,105802,105812,105826,105830,105838,105852,105872,105884,105892,105898,105908,105920,105932,105942,105954,105964,105974,105986,105990,105998,106006,106010,106018,106036,106054,106062,106080,106090,106098,106108,106112,106116,106120,106124,106128,106132,106136,106140,106144,106160,106166,106174,106184,106198,106204,106208,106212,106220,106224,106228,106232,106236,106240,106244,106264,106272,106280,106284],{"__ignoreMap":32},[460,105803,105804,105806,105808,105810],{"class":462,"line":463},[460,105805,1845],{"class":466},[460,105807,1848],{"class":470},[460,105809,1851],{"class":929},[460,105811,473],{"class":466},[460,105813,105814,105816,105818,105820,105822,105824],{"class":462,"line":476},[460,105815,781],{"class":466},[460,105817,704],{"class":470},[460,105819,1862],{"class":929},[460,105821,894],{"class":466},[460,105823,1867],{"class":1353},[460,105825,473],{"class":466},[460,105827,105828],{"class":462,"line":482},[460,105829,522],{"emptyLinePlaceholder":521},[460,105831,105832,105834,105836],{"class":462,"line":488},[460,105833,781],{"class":466},[460,105835,1880],{"class":470},[460,105837,473],{"class":466},[460,105839,105840,105842,105844,105846,105848,105850],{"class":462,"line":494},[460,105841,467],{"class":466},[460,105843,1889],{"class":470},[460,105845,1892],{"class":929},[460,105847,894],{"class":466},[460,105849,1897],{"class":1353},[460,105851,473],{"class":466},[460,105853,105854,105856,105858,105860,105862,105864,105866,105868,105870],{"class":462,"line":500},[460,105855,467],{"class":466},[460,105857,1889],{"class":470},[460,105859,1908],{"class":929},[460,105861,894],{"class":466},[460,105863,1913],{"class":1353},[460,105865,1916],{"class":929},[460,105867,894],{"class":466},[460,105869,1921],{"class":1353},[460,105871,473],{"class":466},[460,105873,105874,105876,105878,105880,105882],{"class":462,"line":506},[460,105875,467],{"class":466},[460,105877,1930],{"class":470},[460,105879,1933],{"class":466},[460,105881,1930],{"class":470},[460,105883,473],{"class":466},[460,105885,105886,105888,105890],{"class":462,"line":512},[460,105887,467],{"class":466},[460,105889,1944],{"class":470},[460,105891,473],{"class":466},[460,105893,105894,105896],{"class":462,"line":518},[460,105895,13794],{"class":929},[460,105897,1348],{"class":466},[460,105899,105900,105902,105904,105906],{"class":462,"line":525},[460,105901,1982],{"class":900},[460,105903,1961],{"class":466},[460,105905,1987],{"class":900},[460,105907,1966],{"class":466},[460,105909,105910,105912,105914,105916,105918],{"class":462,"line":531},[460,105911,2009],{"class":900},[460,105913,1961],{"class":466},[460,105915,5490],{"class":900},[460,105917,2017],{"class":887},[460,105919,1966],{"class":466},[460,105921,105922,105924,105926,105928,105930],{"class":462,"line":537},[460,105923,5499],{"class":900},[460,105925,1961],{"class":466},[460,105927,5490],{"class":900},[460,105929,2017],{"class":887},[460,105931,1966],{"class":466},[460,105933,105934,105936,105938,105940],{"class":462,"line":543},[460,105935,2673],{"class":900},[460,105937,1961],{"class":466},[460,105939,13839],{"class":900},[460,105941,1966],{"class":466},[460,105943,105944,105946,105948,105950,105952],{"class":462,"line":549},[460,105945,2356],{"class":900},[460,105947,1961],{"class":466},[460,105949,13850],{"class":900},[460,105951,2017],{"class":887},[460,105953,1966],{"class":466},[460,105955,105956,105958,105960,105962],{"class":462,"line":555},[460,105957,2384],{"class":900},[460,105959,1961],{"class":466},[460,105961,2690],{"class":900},[460,105963,1966],{"class":466},[460,105965,105966,105968,105970,105972],{"class":462,"line":560},[460,105967,5540],{"class":900},[460,105969,1961],{"class":466},[460,105971,5545],{"class":900},[460,105973,1966],{"class":466},[460,105975,105976,105978,105980,105982,105984],{"class":462,"line":566},[460,105977,13879],{"class":900},[460,105979,1961],{"class":466},[460,105981,7290],{"class":900},[460,105983,2017],{"class":887},[460,105985,1966],{"class":466},[460,105987,105988],{"class":462,"line":572},[460,105989,509],{"class":466},[460,105991,105992,105994,105996],{"class":462,"line":578},[460,105993,581],{"class":466},[460,105995,1944],{"class":470},[460,105997,473],{"class":466},[460,105999,106000,106002,106004],{"class":462,"line":812},[460,106001,1776],{"class":466},[460,106003,1880],{"class":470},[460,106005,473],{"class":466},[460,106007,106008],{"class":462,"line":818},[460,106009,522],{"emptyLinePlaceholder":521},[460,106011,106012,106014,106016],{"class":462,"line":824},[460,106013,781],{"class":466},[460,106015,1721],{"class":470},[460,106017,473],{"class":466},[460,106019,106020,106022,106024,106026,106028,106030,106032,106034],{"class":462,"line":2074},[460,106021,467],{"class":466},[460,106023,2737],{"class":470},[460,106025,2740],{"class":929},[460,106027,894],{"class":466},[460,106029,13932],{"class":1353},[460,106031,5599],{"class":466},[460,106033,2737],{"class":470},[460,106035,473],{"class":466},[460,106037,106038,106040,106042,106044,106046,106048,106050,106052],{"class":462,"line":2088},[460,106039,467],{"class":466},[460,106041,225],{"class":470},[460,106043,12081],{"class":929},[460,106045,894],{"class":466},[460,106047,12086],{"class":1353},[460,106049,5599],{"class":466},[460,106051,225],{"class":470},[460,106053,473],{"class":466},[460,106055,106056,106058,106060],{"class":462,"line":2103},[460,106057,467],{"class":466},[460,106059,225],{"class":470},[460,106061,473],{"class":466},[460,106063,106064,106066,106068,106070,106072,106074,106076,106078],{"class":462,"line":2122},[460,106065,1340],{"class":887},[460,106067,10723],{"class":900},[460,106069,2943],{"class":887},[460,106071,10599],{"class":466},[460,106073,3541],{"class":929},[460,106075,2174],{"class":466},[460,106077,13981],{"class":1353},[460,106079,3754],{"class":466},[460,106081,106082,106084,106086,106088],{"class":462,"line":2144},[460,106083,13988],{"class":887},[460,106085,13991],{"class":466},[460,106087,894],{"class":887},[460,106089,13996],{"class":900},[460,106091,106092,106094,106096],{"class":462,"line":2158},[460,106093,3372],{"class":887},[460,106095,14003],{"class":929},[460,106097,11374],{"class":466},[460,106099,106100,106102,106104,106106],{"class":462,"line":2163},[460,106101,14010],{"class":466},[460,106103,894],{"class":887},[460,106105,10169],{"class":466},[460,106107,14017],{"class":887},[460,106109,106110],{"class":462,"line":2168},[460,106111,14022],{"class":942},[460,106113,106114],{"class":462,"line":2183},[460,106115,509],{"class":466},[460,106117,106118],{"class":462,"line":2194},[460,106119,14031],{"class":942},[460,106121,106122],{"class":462,"line":2199},[460,106123,15393],{"class":942},[460,106125,106126],{"class":462,"line":2204},[460,106127,15398],{"class":942},[460,106129,106130],{"class":462,"line":2212},[460,106131,15403],{"class":942},[460,106133,106134],{"class":462,"line":2257},[460,106135,15408],{"class":942},[460,106137,106138],{"class":462,"line":2285},[460,106139,15413],{"class":942},[460,106141,106142],{"class":462,"line":2298},[460,106143,15418],{"class":942},[460,106145,106146,106148,106150,106152,106154,106156,106158],{"class":462,"line":2303},[460,106147,3372],{"class":887},[460,106149,15425],{"class":929},[460,106151,2174],{"class":466},[460,106153,14477],{"class":3380},[460,106155,904],{"class":466},[460,106157,14482],{"class":3380},[460,106159,2180],{"class":466},[460,106161,106162,106164],{"class":462,"line":2308},[460,106163,3395],{"class":887},[460,106165,14491],{"class":466},[460,106167,106168,106170,106172],{"class":462,"line":2318},[460,106169,8353],{"class":887},[460,106171,10709],{"class":887},[460,106173,9376],{"class":466},[460,106175,106176,106178,106180,106182],{"class":462,"line":2333},[460,106177,3702],{"class":887},[460,106179,11704],{"class":466},[460,106181,15458],{"class":887},[460,106183,15461],{"class":466},[460,106185,106186,106188,106190,106192,106194,106196],{"class":462,"line":2338},[460,106187,15466],{"class":466},[460,106189,894],{"class":887},[460,106191,14532],{"class":929},[460,106193,2174],{"class":466},[460,106195,3976],{"class":887},[460,106197,9376],{"class":466},[460,106199,106200,106202],{"class":462,"line":2343},[460,106201,15481],{"class":929},[460,106203,10758],{"class":466},[460,106205,106206],{"class":462,"line":2353},[460,106207,15488],{"class":942},[460,106209,106210],{"class":462,"line":2368},[460,106211,15493],{"class":942},[460,106213,106214,106216,106218],{"class":462,"line":2381},[460,106215,15498],{"class":466},[460,106217,894],{"class":887},[460,106219,15503],{"class":900},[460,106221,106222],{"class":462,"line":2394},[460,106223,15508],{"class":942},[460,106225,106226],{"class":462,"line":2399},[460,106227,15513],{"class":942},[460,106229,106230],{"class":462,"line":2404},[460,106231,15518],{"class":466},[460,106233,106234],{"class":462,"line":2414},[460,106235,3858],{"class":466},[460,106237,106238],{"class":462,"line":2428},[460,106239,552],{"class":466},[460,106241,106242],{"class":462,"line":2440},[460,106243,509],{"class":466},[460,106245,106246,106248,106250,106252,106254,106256,106258,106260,106262],{"class":462,"line":2445},[460,106247,14046],{"class":466},[460,106249,3599],{"class":929},[460,106251,2174],{"class":466},[460,106253,14053],{"class":1353},[460,106255,904],{"class":466},[460,106257,15015],{"class":929},[460,106259,14062],{"class":466},[460,106261,14065],{"class":900},[460,106263,6311],{"class":466},[460,106265,106266,106268,106270],{"class":462,"line":2450},[460,106267,581],{"class":466},[460,106269,225],{"class":470},[460,106271,473],{"class":466},[460,106273,106274,106276,106278],{"class":462,"line":2460},[460,106275,1776],{"class":466},[460,106277,1721],{"class":470},[460,106279,473],{"class":466},[460,106281,106282],{"class":462,"line":2473},[460,106283,522],{"emptyLinePlaceholder":521},[460,106285,106286,106288,106290],{"class":462,"line":2487},[460,106287,1776],{"class":466},[460,106289,704],{"class":470},[460,106291,473],{"class":466},[23,106293,15582],{"id":15581},[451,106295,106296],{"className":453,"code":15585,"language":455,"meta":32,"style":32},[457,106297,106298,106306,106314,106318,106322,106326,106330,106334,106342],{"__ignoreMap":32},[460,106299,106300,106302,106304],{"class":462,"line":463},[460,106301,781],{"class":466},[460,106303,1721],{"class":470},[460,106305,473],{"class":466},[460,106307,106308,106310,106312],{"class":462,"line":476},[460,106309,467],{"class":466},[460,106311,225],{"class":470},[460,106313,473],{"class":466},[460,106315,106316],{"class":462,"line":482},[460,106317,15608],{"class":466},[460,106319,106320],{"class":462,"line":488},[460,106321,15613],{"class":466},[460,106323,106324],{"class":462,"line":494},[460,106325,15618],{"class":466},[460,106327,106328],{"class":462,"line":500},[460,106329,15623],{"class":466},[460,106331,106332],{"class":462,"line":506},[460,106333,15628],{"class":466},[460,106335,106336,106338,106340],{"class":462,"line":512},[460,106337,581],{"class":466},[460,106339,225],{"class":470},[460,106341,473],{"class":466},[460,106343,106344,106346,106348],{"class":462,"line":518},[460,106345,1776],{"class":466},[460,106347,1721],{"class":470},[460,106349,473],{"class":466},[14,106351,15647],{},[14,106353,15650],{},[14,106355,15653],{},[23,106357,15657],{"id":15656},[14,106359,15660],{},[14,106361,106362],{},[30,106363],{"alt":32,"src":15665},[14,106365,106366],{},[30,106367],{"alt":32,"src":15670},[451,106369,106370],{"className":702,"code":15673,"language":704,"meta":32,"style":32},[457,106371,106372,106382,106396,106400,106408,106422,106442,106462,106482,106494,106502,106508,106518,106528,106538,106542,106546,106552,106564,106576,106580,106584,106592,106604,106618,106622,106626,106632,106642,106654,106666,106676,106686,106702,106714,106718,106722,106730,106740,106752,106762,106772,106782,106786,106790,106800,106810,106814,106822,106830,106834,106842,106856,106870,106884,106904,106912,106920,106934,106954,106962,106976,107000,107024,107048,107056,107064,107082,107090,107094,107112,107116,107132,107136,107140,107146,107150,107162,107170,107174,107188,107192,107196,107216,107220,107228,107236,107240],{"__ignoreMap":32},[460,106373,106374,106376,106378,106380],{"class":462,"line":463},[460,106375,1845],{"class":466},[460,106377,1848],{"class":470},[460,106379,1851],{"class":929},[460,106381,473],{"class":466},[460,106383,106384,106386,106388,106390,106392,106394],{"class":462,"line":476},[460,106385,781],{"class":466},[460,106387,704],{"class":470},[460,106389,1862],{"class":929},[460,106391,894],{"class":466},[460,106393,1867],{"class":1353},[460,106395,473],{"class":466},[460,106397,106398],{"class":462,"line":482},[460,106399,522],{"emptyLinePlaceholder":521},[460,106401,106402,106404,106406],{"class":462,"line":488},[460,106403,781],{"class":466},[460,106405,1880],{"class":470},[460,106407,473],{"class":466},[460,106409,106410,106412,106414,106416,106418,106420],{"class":462,"line":494},[460,106411,467],{"class":466},[460,106413,1889],{"class":470},[460,106415,1892],{"class":929},[460,106417,894],{"class":466},[460,106419,1897],{"class":1353},[460,106421,15726],{"class":466},[460,106423,106424,106426,106428,106430,106432,106434,106436,106438,106440],{"class":462,"line":500},[460,106425,467],{"class":466},[460,106427,1889],{"class":470},[460,106429,15735],{"class":929},[460,106431,894],{"class":466},[460,106433,15740],{"class":1353},[460,106435,1916],{"class":929},[460,106437,894],{"class":466},[460,106439,15747],{"class":1353},[460,106441,15726],{"class":466},[460,106443,106444,106446,106448,106450,106452,106454,106456,106458,106460],{"class":462,"line":506},[460,106445,467],{"class":466},[460,106447,1889],{"class":470},[460,106449,1908],{"class":929},[460,106451,894],{"class":466},[460,106453,1913],{"class":1353},[460,106455,1916],{"class":929},[460,106457,894],{"class":466},[460,106459,1921],{"class":1353},[460,106461,15726],{"class":466},[460,106463,106464,106466,106468,106470,106472,106474,106476,106478,106480],{"class":462,"line":512},[460,106465,467],{"class":466},[460,106467,1889],{"class":470},[460,106469,1908],{"class":929},[460,106471,894],{"class":466},[460,106473,15782],{"class":1353},[460,106475,1916],{"class":929},[460,106477,894],{"class":466},[460,106479,15789],{"class":1353},[460,106481,15726],{"class":466},[460,106483,106484,106486,106488,106490,106492],{"class":462,"line":518},[460,106485,467],{"class":466},[460,106487,1930],{"class":470},[460,106489,15800],{"class":466},[460,106491,1930],{"class":470},[460,106493,473],{"class":466},[460,106495,106496,106498,106500],{"class":462,"line":525},[460,106497,467],{"class":466},[460,106499,1944],{"class":470},[460,106501,473],{"class":466},[460,106503,106504,106506],{"class":462,"line":531},[460,106505,1951],{"class":470},[460,106507,1348],{"class":466},[460,106509,106510,106512,106514,106516],{"class":462,"line":537},[460,106511,1958],{"class":900},[460,106513,1961],{"class":466},[460,106515,936],{"class":900},[460,106517,1966],{"class":466},[460,106519,106520,106522,106524,106526],{"class":462,"line":543},[460,106521,1971],{"class":900},[460,106523,1961],{"class":466},[460,106525,936],{"class":900},[460,106527,1966],{"class":466},[460,106529,106530,106532,106534,106536],{"class":462,"line":549},[460,106531,1982],{"class":900},[460,106533,1961],{"class":466},[460,106535,1987],{"class":900},[460,106537,1966],{"class":466},[460,106539,106540],{"class":462,"line":555},[460,106541,509],{"class":466},[460,106543,106544],{"class":462,"line":560},[460,106545,522],{"emptyLinePlaceholder":521},[460,106547,106548,106550],{"class":462,"line":566},[460,106549,15861],{"class":929},[460,106551,1348],{"class":466},[460,106553,106554,106556,106558,106560,106562],{"class":462,"line":572},[460,106555,2009],{"class":900},[460,106557,1961],{"class":466},[460,106559,15872],{"class":900},[460,106561,2017],{"class":887},[460,106563,1966],{"class":466},[460,106565,106566,106568,106570,106572,106574],{"class":462,"line":578},[460,106567,1971],{"class":900},[460,106569,1961],{"class":466},[460,106571,936],{"class":900},[460,106573,2030],{"class":900},[460,106575,1966],{"class":466},[460,106577,106578],{"class":462,"line":812},[460,106579,509],{"class":466},[460,106581,106582],{"class":462,"line":818},[460,106583,522],{"emptyLinePlaceholder":521},[460,106585,106586,106588,106590],{"class":462,"line":824},[460,106587,15901],{"class":929},[460,106589,15904],{"class":470},[460,106591,1348],{"class":466},[460,106593,106594,106596,106598,106600,106602],{"class":462,"line":2074},[460,106595,2009],{"class":900},[460,106597,1961],{"class":466},[460,106599,2325],{"class":900},[460,106601,2328],{"class":887},[460,106603,1966],{"class":466},[460,106605,106606,106608,106610,106612,106614,106616],{"class":462,"line":2088},[460,106607,1958],{"class":900},[460,106609,1961],{"class":466},[460,106611,2110],{"class":900},[460,106613,2017],{"class":887},[460,106615,2224],{"class":900},[460,106617,1966],{"class":466},[460,106619,106620],{"class":462,"line":2103},[460,106621,509],{"class":466},[460,106623,106624],{"class":462,"line":2122},[460,106625,522],{"emptyLinePlaceholder":521},[460,106627,106628,106630],{"class":462,"line":2144},[460,106629,15945],{"class":929},[460,106631,1348],{"class":466},[460,106633,106634,106636,106638,106640],{"class":462,"line":2158},[460,106635,10004],{"class":900},[460,106637,1961],{"class":466},[460,106639,10009],{"class":900},[460,106641,1966],{"class":466},[460,106643,106644,106646,106648,106650,106652],{"class":462,"line":2163},[460,106645,10041],{"class":900},[460,106647,1961],{"class":466},[460,106649,15966],{"class":900},[460,106651,2017],{"class":887},[460,106653,1966],{"class":466},[460,106655,106656,106658,106660,106662,106664],{"class":462,"line":2168},[460,106657,10209],{"class":900},[460,106659,1961],{"class":466},[460,106661,2110],{"class":900},[460,106663,2017],{"class":887},[460,106665,1966],{"class":466},[460,106667,106668,106670,106672,106674],{"class":462,"line":2183},[460,106669,10016],{"class":900},[460,106671,1961],{"class":466},[460,106673,10021],{"class":900},[460,106675,1966],{"class":466},[460,106677,106678,106680,106682,106684],{"class":462,"line":2194},[460,106679,2600],{"class":900},[460,106681,1961],{"class":466},[460,106683,2690],{"class":900},[460,106685,1966],{"class":466},[460,106687,106688,106690,106692,106694,106696,106698,106700],{"class":462,"line":2199},[460,106689,7192],{"class":900},[460,106691,1961],{"class":466},[460,106693,901],{"class":900},[460,106695,2017],{"class":887},[460,106697,7201],{"class":900},[460,106699,7204],{"class":900},[460,106701,1966],{"class":466},[460,106703,106704,106706,106708,106710,106712],{"class":462,"line":2204},[460,106705,2009],{"class":900},[460,106707,1961],{"class":466},[460,106709,16027],{"class":900},[460,106711,2017],{"class":887},[460,106713,1966],{"class":466},[460,106715,106716],{"class":462,"line":2212},[460,106717,509],{"class":466},[460,106719,106720],{"class":462,"line":2257},[460,106721,522],{"emptyLinePlaceholder":521},[460,106723,106724,106726,106728],{"class":462,"line":2285},[460,106725,15945],{"class":929},[460,106727,2574],{"class":470},[460,106729,1348],{"class":466},[460,106731,106732,106734,106736,106738],{"class":462,"line":2298},[460,106733,2037],{"class":900},[460,106735,1961],{"class":466},[460,106737,7350],{"class":900},[460,106739,1966],{"class":466},[460,106741,106742,106744,106746,106748,106750],{"class":462,"line":2303},[460,106743,1958],{"class":900},[460,106745,1961],{"class":466},[460,106747,2096],{"class":900},[460,106749,2017],{"class":887},[460,106751,1966],{"class":466},[460,106753,106754,106756,106758,106760],{"class":462,"line":2308},[460,106755,2624],{"class":900},[460,106757,1961],{"class":466},[460,106759,2629],{"class":900},[460,106761,1966],{"class":466},[460,106763,106764,106766,106768,106770],{"class":462,"line":2318},[460,106765,5540],{"class":900},[460,106767,1961],{"class":466},[460,106769,5545],{"class":900},[460,106771,1966],{"class":466},[460,106773,106774,106776,106778,106780],{"class":462,"line":2333},[460,106775,2384],{"class":900},[460,106777,1961],{"class":466},[460,106779,7385],{"class":900},[460,106781,1966],{"class":466},[460,106783,106784],{"class":462,"line":2338},[460,106785,509],{"class":466},[460,106787,106788],{"class":462,"line":2343},[460,106789,522],{"emptyLinePlaceholder":521},[460,106791,106792,106794,106796,106798],{"class":462,"line":2353},[460,106793,15945],{"class":929},[460,106795,2574],{"class":470},[460,106797,16116],{"class":929},[460,106799,1348],{"class":466},[460,106801,106802,106804,106806,106808],{"class":462,"line":2368},[460,106803,2384],{"class":900},[460,106805,1961],{"class":466},[460,106807,16127],{"class":900},[460,106809,1966],{"class":466},[460,106811,106812],{"class":462,"line":2381},[460,106813,509],{"class":466},[460,106815,106816,106818,106820],{"class":462,"line":2394},[460,106817,581],{"class":466},[460,106819,1944],{"class":470},[460,106821,473],{"class":466},[460,106823,106824,106826,106828],{"class":462,"line":2399},[460,106825,1776],{"class":466},[460,106827,1880],{"class":470},[460,106829,473],{"class":466},[460,106831,106832],{"class":462,"line":2404},[460,106833,522],{"emptyLinePlaceholder":521},[460,106835,106836,106838,106840],{"class":462,"line":2414},[460,106837,781],{"class":466},[460,106839,1721],{"class":470},[460,106841,473],{"class":466},[460,106843,106844,106846,106848,106850,106852,106854],{"class":462,"line":2428},[460,106845,467],{"class":466},[460,106847,2737],{"class":470},[460,106849,2740],{"class":929},[460,106851,894],{"class":466},[460,106853,16174],{"class":1353},[460,106855,473],{"class":466},[460,106857,106858,106860,106862,106864,106866,106868],{"class":462,"line":2440},[460,106859,2753],{"class":466},[460,106861,2737],{"class":470},[460,106863,2740],{"class":929},[460,106865,894],{"class":466},[460,106867,16189],{"class":1353},[460,106869,473],{"class":466},[460,106871,106872,106874,106876,106878,106880,106882],{"class":462,"line":2445},[460,106873,16196],{"class":466},[460,106875,2756],{"class":470},[460,106877,2759],{"class":929},[460,106879,894],{"class":466},[460,106881,16205],{"class":1353},[460,106883,473],{"class":466},[460,106885,106886,106888,106890,106892,106894,106896,106898,106900,106902],{"class":462,"line":2450},[460,106887,16212],{"class":466},[460,106889,30],{"class":470},[460,106891,12081],{"class":929},[460,106893,894],{"class":466},[460,106895,16221],{"class":1353},[460,106897,16224],{"class":929},[460,106899,894],{"class":466},[460,106901,6606],{"class":1353},[460,106903,15726],{"class":466},[460,106905,106906,106908,106910],{"class":462,"line":2460},[460,106907,16235],{"class":466},[460,106909,2756],{"class":470},[460,106911,473],{"class":466},[460,106913,106914,106916,106918],{"class":462,"line":2473},[460,106915,16244],{"class":466},[460,106917,2737],{"class":470},[460,106919,473],{"class":466},[460,106921,106922,106924,106926,106928,106930,106932],{"class":462,"line":2487},[460,106923,2753],{"class":466},[460,106925,2737],{"class":470},[460,106927,2740],{"class":929},[460,106929,894],{"class":466},[460,106931,16261],{"class":1353},[460,106933,473],{"class":466},[460,106935,106936,106938,106940,106942,106944,106946,106948,106950,106952],{"class":462,"line":2492},[460,106937,16196],{"class":466},[460,106939,16270],{"class":470},[460,106941,12081],{"class":929},[460,106943,894],{"class":466},[460,106945,16277],{"class":1353},[460,106947,16280],{"class":929},[460,106949,5599],{"class":466},[460,106951,16270],{"class":470},[460,106953,473],{"class":466},[460,106955,106956,106958,106960],{"class":462,"line":2497},[460,106957,16244],{"class":466},[460,106959,2737],{"class":470},[460,106961,473],{"class":466},[460,106963,106964,106966,106968,106970,106972,106974],{"class":462,"line":2505},[460,106965,2753],{"class":466},[460,106967,2737],{"class":470},[460,106969,2740],{"class":929},[460,106971,894],{"class":466},[460,106973,16307],{"class":1353},[460,106975,473],{"class":466},[460,106977,106978,106980,106982,106984,106986,106988,106990,106992,106994,106996,106998],{"class":462,"line":2516},[460,106979,16196],{"class":466},[460,106981,2756],{"class":470},[460,106983,2759],{"class":929},[460,106985,894],{"class":466},[460,106987,16322],{"class":1353},[460,106989,16325],{"class":929},[460,106991,894],{"class":466},[460,106993,16261],{"class":1353},[460,106995,16332],{"class":466},[460,106997,2756],{"class":470},[460,106999,473],{"class":466},[460,107001,107002,107004,107006,107008,107010,107012,107014,107016,107018,107020,107022],{"class":462,"line":2529},[460,107003,16196],{"class":466},[460,107005,2756],{"class":470},[460,107007,2759],{"class":929},[460,107009,894],{"class":466},[460,107011,16322],{"class":1353},[460,107013,16325],{"class":929},[460,107015,894],{"class":466},[460,107017,16355],{"class":1353},[460,107019,16358],{"class":466},[460,107021,2756],{"class":470},[460,107023,473],{"class":466},[460,107025,107026,107028,107030,107032,107034,107036,107038,107040,107042,107044,107046],{"class":462,"line":2542},[460,107027,16196],{"class":466},[460,107029,2756],{"class":470},[460,107031,2759],{"class":929},[460,107033,894],{"class":466},[460,107035,16322],{"class":1353},[460,107037,16325],{"class":929},[460,107039,894],{"class":466},[460,107041,16381],{"class":1353},[460,107043,16384],{"class":466},[460,107045,2756],{"class":470},[460,107047,473],{"class":466},[460,107049,107050,107052,107054],{"class":462,"line":2559},[460,107051,16244],{"class":466},[460,107053,2737],{"class":470},[460,107055,473],{"class":466},[460,107057,107058,107060,107062],{"class":462,"line":2564},[460,107059,581],{"class":466},[460,107061,2737],{"class":470},[460,107063,473],{"class":466},[460,107065,107066,107068,107070,107072,107074,107076,107078,107080],{"class":462,"line":2569},[460,107067,467],{"class":466},[460,107069,225],{"class":470},[460,107071,12081],{"class":929},[460,107073,894],{"class":466},[460,107075,16417],{"class":1353},[460,107077,5599],{"class":466},[460,107079,225],{"class":470},[460,107081,473],{"class":466},[460,107083,107084,107086,107088],{"class":462,"line":2579},[460,107085,467],{"class":466},[460,107087,225],{"class":470},[460,107089,473],{"class":466},[460,107091,107092],{"class":462,"line":2597},[460,107093,16436],{"class":942},[460,107095,107096,107098,107100,107102,107104,107106,107108,107110],{"class":462,"line":2610},[460,107097,1340],{"class":887},[460,107099,15904],{"class":900},[460,107101,2943],{"class":887},[460,107103,10599],{"class":466},[460,107105,3541],{"class":929},[460,107107,2174],{"class":466},[460,107109,16453],{"class":1353},[460,107111,3754],{"class":466},[460,107113,107114],{"class":462,"line":2621},[460,107115,16460],{"class":942},[460,107117,107118,107120,107122,107124,107126,107128,107130],{"class":462,"line":2634},[460,107119,16465],{"class":466},[460,107121,894],{"class":887},[460,107123,12167],{"class":466},[460,107125,15015],{"class":929},[460,107127,16474],{"class":466},[460,107129,8489],{"class":887},[460,107131,1348],{"class":466},[460,107133,107134],{"class":462,"line":2648},[460,107135,16483],{"class":942},[460,107137,107138],{"class":462,"line":2653},[460,107139,16488],{"class":942},[460,107141,107142,107144],{"class":462,"line":2658},[460,107143,16493],{"class":942},[460,107145,16496],{"class":942},[460,107147,107148],{"class":462,"line":2670},[460,107149,16501],{"class":942},[460,107151,107152,107154,107156,107158,107160],{"class":462,"line":2683},[460,107153,16506],{"class":466},[460,107155,16509],{"class":929},[460,107157,2174],{"class":466},[460,107159,16514],{"class":1353},[460,107161,16517],{"class":466},[460,107163,107164,107166,107168],{"class":462,"line":2695},[460,107165,16522],{"class":466},[460,107167,11412],{"class":900},[460,107169,3754],{"class":466},[460,107171,107172],{"class":462,"line":2700},[460,107173,16531],{"class":942},[460,107175,107176,107178,107180,107182,107184,107186],{"class":462,"line":2709},[460,107177,16536],{"class":466},[460,107179,16539],{"class":929},[460,107181,2943],{"class":887},[460,107183,16544],{"class":466},[460,107185,8489],{"class":887},[460,107187,1348],{"class":466},[460,107189,107190],{"class":462,"line":2718},[460,107191,16553],{"class":942},[460,107193,107194],{"class":462,"line":2723},[460,107195,16558],{"class":942},[460,107197,107198,107200,107202,107204,107206,107208,107210,107212,107214],{"class":462,"line":2732},[460,107199,16563],{"class":466},[460,107201,894],{"class":887},[460,107203,16568],{"class":466},[460,107205,16571],{"class":929},[460,107207,2174],{"class":466},[460,107209,16514],{"class":1353},[460,107211,8296],{"class":466},[460,107213,16580],{"class":887},[460,107215,13996],{"class":900},[460,107217,107218],{"class":462,"line":2750},[460,107219,509],{"class":466},[460,107221,107222,107224,107226],{"class":462,"line":2782},[460,107223,581],{"class":466},[460,107225,225],{"class":470},[460,107227,473],{"class":466},[460,107229,107230,107232,107234],{"class":462,"line":2809},[460,107231,1776],{"class":466},[460,107233,1721],{"class":470},[460,107235,473],{"class":466},[460,107237,107238],{"class":462,"line":2836},[460,107239,522],{"emptyLinePlaceholder":521},[460,107241,107242,107244,107246],{"class":462,"line":2856},[460,107243,1776],{"class":466},[460,107245,704],{"class":470},[460,107247,473],{"class":466},[1944,107249,16617],{},{"title":32,"searchDepth":476,"depth":476,"links":107251},[107252,107257,107261,107262,107263,107268,107273,107274,107275,107276,107283,107288,107289,107299,107303,107304,107308],{"id":20,"depth":476,"text":21,"children":107253},[107254,107255,107256],{"id":25,"depth":482,"text":26},{"id":54,"depth":482,"text":55},{"id":66,"depth":482,"text":67},{"id":78,"depth":476,"text":79,"children":107258},[107259,107260],{"id":82,"depth":482,"text":83},{"id":97,"depth":482,"text":98},{"id":151,"depth":476,"text":152},{"id":195,"depth":476,"text":196},{"id":212,"depth":476,"text":213,"children":107264},[107265,107266,107267],{"id":216,"depth":482,"text":217},{"id":230,"depth":482,"text":231},{"id":335,"depth":482,"text":336},{"id":662,"depth":476,"text":663,"children":107269},[107270,107271,107272],{"id":666,"depth":482,"text":667},{"id":1135,"depth":482,"text":1136},{"id":1556,"depth":482,"text":1557},{"id":1620,"depth":476,"text":1621},{"id":1700,"depth":476,"text":1701},{"id":1795,"depth":476,"text":1796},{"id":3923,"depth":476,"text":3924,"children":107277},[107278,107279,107280,107281,107282],{"id":3927,"depth":482,"text":3928},{"id":3939,"depth":482,"text":3940},{"id":4165,"depth":482,"text":4166},{"id":4183,"depth":482,"text":4184},{"id":4243,"depth":482,"text":4244},{"id":8574,"depth":476,"text":8575,"children":107284},[107285,107286,107287],{"id":8578,"depth":482,"text":8579},{"id":8596,"depth":482,"text":8597},{"id":8622,"depth":482,"text":8623},{"id":8631,"depth":476,"text":8632},{"id":8653,"depth":476,"text":8654,"children":107290},[107291,107292,107293,107294,107295,107296,107297,107298],{"id":8657,"depth":482,"text":8658},{"id":8919,"depth":482,"text":8920},{"id":9105,"depth":482,"text":9106},{"id":9476,"depth":482,"text":9477},{"id":9592,"depth":482,"text":9593},{"id":9628,"depth":482,"text":9629},{"id":9675,"depth":482,"text":9676},{"id":9709,"depth":482,"text":9710},{"id":11094,"depth":476,"text":11095,"children":107300},[107301,107302],{"id":11098,"depth":482,"text":11099},{"id":11135,"depth":482,"text":11136},{"id":12510,"depth":476,"text":12511},{"id":12886,"depth":476,"text":12887,"children":107305},[107306,107307],{"id":12890,"depth":482,"text":12891},{"id":12924,"depth":482,"text":12925},{"id":13665,"depth":476,"text":13666,"children":107309},[107310,107311,107312,107313],{"id":13669,"depth":482,"text":13670},{"id":14637,"depth":482,"text":14638},{"id":15581,"depth":482,"text":15582},{"id":15656,"depth":482,"text":15657},{},{"title":5,"description":16682},{"id":107317,"title":107318,"body":107319,"description":107330,"extension":16683,"meta":107331,"navigation":521,"path":107333,"seo":107334,"stem":107335,"__hash__":107336},"wiki\u002Fwiki\u002F2025-09-02-JS学习\u002Findex.md","JS学习",{"type":7,"value":107320,"toc":107328},[107321],[14,107322,107323,107324],{},"这部分学完，学vue之前先通一下框架前置知识，参考下面文档，后续整理这部分和vue\n",[2756,107325,107326],{"href":107326,"rel":107327},"https:\u002F\u002Facn59hvfac4g.feishu.cn\u002Fdocx\u002FENYhd6upDopC2Kxl5NicDeIEnkh?from=from_copylink",[4943],{"title":32,"searchDepth":476,"depth":476,"links":107329},[],"三件套第三套学习",{"category":107332},"前端","\u002Fwiki\u002F2025-09-02-js",{"title":107318,"description":107330},"wiki\u002F2025-09-02-JS学习\u002Findex","lIV547GozsMOKKj0rXMMspVZbD8AexWpLGp2d1VgrPo",{"id":107338,"title":107339,"body":107340,"description":16682,"extension":16683,"meta":107445,"navigation":521,"path":107446,"seo":107447,"stem":107448,"__hash__":107449},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch1-安装.md","1.安装",{"type":7,"value":107341,"toc":107440},[107342,107349,107352,107355,107358,107362,107371,107374,107377,107381,107390,107393,107397,107400,107420,107423,107437],[14,107343,107344],{},[2756,107345,107348],{"href":107346,"rel":107347},"https:\u002F\u002Fwww.runoob.com\u002Fnumpy\u002Fnumpy-tutorial.html%E8%8F%9C%E9%B8%9F%E6%95%99%E7%A8%8B",[4943],"https:\u002F\u002Fwww.runoob.com\u002Fnumpy\u002Fnumpy-tutorial.html菜鸟教程",[10,107350,107339],{"id":107351},"_1安装",[14,107353,107354],{},"numpy是科学计算基础库,底层是C语言",[14,107356,107357],{},"三种方式：",[18,107359,107361],{"id":107360},"_11-通过pip安装","1.1 通过pip安装",[451,107363,107365],{"className":46787,"code":107364,"language":46789,"meta":32,"style":32},"pip install numpy\n",[457,107366,107367],{"__ignoreMap":32},[460,107368,107369],{"class":462,"line":463},[460,107370,107364],{"class":466},[14,107372,107373],{},"首选方式，自动处理依赖项",[14,107375,107376],{},"在提示系统命令符中使用cmd",[18,107378,107380],{"id":107379},"_12-通过anaconda安装","1.2 通过Anaconda安装",[451,107382,107384],{"className":46787,"code":107383,"language":46789,"meta":32,"style":32},"conda install numpy\n",[457,107385,107386],{"__ignoreMap":32},[460,107387,107388],{"class":462,"line":463},[460,107389,107383],{"class":466},[14,107391,107392],{},"自动解决环境依赖",[18,107394,107396],{"id":107395},"_13-通过系统包管理器linuxmacos","1.3 通过系统包管理器（linux\u002Fmacos）",[14,107398,107399],{},"对于Debian\u002FUbuntu",[451,107401,107403],{"className":46787,"code":107402,"language":46789,"meta":32,"style":32},"sudo apt-get install python3-numpy\n",[457,107404,107405],{"__ignoreMap":32},[460,107406,107407,107410,107412,107415,107417],{"class":462,"line":463},[460,107408,107409],{"class":466},"sudo apt",[460,107411,17259],{"class":887},[460,107413,107414],{"class":466},"get install python3",[460,107416,17259],{"class":887},[460,107418,107419],{"class":466},"numpy\n",[14,107421,107422],{},"对于Fedora:",[451,107424,107426],{"className":46787,"code":107425,"language":46789,"meta":32,"style":32},"sudo dnf install python3-numpy\n",[457,107427,107428],{"__ignoreMap":32},[460,107429,107430,107433,107435],{"class":462,"line":463},[460,107431,107432],{"class":466},"sudo dnf install python3",[460,107434,17259],{"class":887},[460,107436,107419],{"class":466},[1944,107438,107439],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":32,"searchDepth":476,"depth":476,"links":107441},[107442,107443,107444],{"id":107360,"depth":476,"text":107361},{"id":107379,"depth":476,"text":107380},{"id":107395,"depth":476,"text":107396},{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch1",{"title":107339,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch1-安装","_ZuIZAeV_nnjZGVbsLzTQoAT37M5Q_lcOQxAgl9-cB4",{"id":107451,"title":107452,"body":107453,"description":16682,"extension":16683,"meta":107566,"navigation":521,"path":107567,"seo":107568,"stem":107569,"__hash__":107570},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch10-算数函数.md","10.算数函数",{"type":7,"value":107454,"toc":107564},[107455,107458,107461,107464,107467,107470,107473,107476,107479,107482,107558,107561],[10,107456,107452],{"id":107457},"_10算数函数",[14,107459,107460],{},"加减乘除运算跟python基础语法没区别",[14,107462,107463],{},"除了python那种方法外还可以使用函数",[14,107465,107466],{},"加：np.add(a,b)",[14,107468,107469],{},"减：np.subtract(a,b)",[14,107471,107472],{},"乘：np.multiply(a,b)",[14,107474,107475],{},"除：np.divide(a,b) == a\u002Fb",[14,107477,107478],{},"取余：np.mod(a,b) == a%b",[14,107480,107481],{},"必须会的用法：",[451,107483,107485],{"className":46787,"code":107484,"language":46789,"meta":32,"style":32},"a=np.arange(9).reshape(3,3)\nb=np.array([10,10,10])\nresult=np.empty_like(a)\nnp.add(a,b,out=result)\nresult\n",[457,107486,107487,107509,107530,107540,107553],{"__ignoreMap":32},[460,107488,107489,107491,107493,107496,107498,107501,107503,107505,107507],{"class":462,"line":463},[460,107490,2756],{"class":466},[460,107492,894],{"class":887},[460,107494,107495],{"class":466},"np.arange(",[460,107497,17154],{"class":900},[460,107499,107500],{"class":466},").reshape(",[460,107502,913],{"class":900},[460,107504,3986],{"class":466},[460,107506,913],{"class":900},[460,107508,3754],{"class":466},[460,107510,107511,107513,107515,107518,107520,107522,107524,107526,107528],{"class":462,"line":476},[460,107512,17005],{"class":466},[460,107514,894],{"class":887},[460,107516,107517],{"class":466},"np.array([",[460,107519,2096],{"class":900},[460,107521,3986],{"class":466},[460,107523,2096],{"class":900},[460,107525,3986],{"class":466},[460,107527,2096],{"class":900},[460,107529,13249],{"class":466},[460,107531,107532,107535,107537],{"class":462,"line":482},[460,107533,107534],{"class":466},"result",[460,107536,894],{"class":887},[460,107538,107539],{"class":466},"np.empty_like(a)\n",[460,107541,107542,107545,107548,107550],{"class":462,"line":488},[460,107543,107544],{"class":466},"np.add(a,b,",[460,107546,107547],{"class":3380},"out",[460,107549,894],{"class":887},[460,107551,107552],{"class":466},"result)\n",[460,107554,107555],{"class":462,"line":494},[460,107556,107557],{"class":466},"result\n",[14,107559,107560],{},"总结：使用函数可以使用out参数将结果放到具体的位置，在进行运算时，两个数组形状不同时，会进行广播操作，变成一样的",[1944,107562,107563],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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);}",{"title":32,"searchDepth":476,"depth":476,"links":107565},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch10",{"title":107452,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch10-算数函数","MRir4Wr30-SYAykqeiub6_1Xao5nccQZ6Li54ohb_SQ",{"id":107572,"title":107573,"body":107574,"description":16682,"extension":16683,"meta":108336,"navigation":521,"path":108337,"seo":108338,"stem":108339,"__hash__":108340},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch11-统计函数.md","11.统计函数",{"type":7,"value":107575,"toc":108323},[107576,107579,107582,107585,107589,107628,107632,107676,107736,107740,107743,107782,107785,107830,107834,107870,107874,107943,107947,108011,108015,108018,108021,108024,108027,108063,108067,108107,108111,108183,108186,108190,108253,108257,108320],[10,107577,107573],{"id":107578},"_11统计函数",[14,107580,107581],{},"sum max min mean",[14,107583,107584],{},"这些有axis参数，可以指定方向",[18,107586,107588],{"id":107587},"_111-sum求和函数","11.1 sum()求和函数",[451,107590,107592],{"className":46787,"code":107591,"language":46789,"meta":32,"style":32},"#创建一维数组\na=np.random.randint(1,100,20)\nnp.sum(a)#求和\n",[457,107593,107594,107599,107620],{"__ignoreMap":32},[460,107595,107596],{"class":462,"line":463},[460,107597,107598],{"class":942},"#创建一维数组\n",[460,107600,107601,107603,107605,107608,107610,107612,107614,107616,107618],{"class":462,"line":476},[460,107602,2756],{"class":466},[460,107604,894],{"class":887},[460,107606,107607],{"class":466},"np.random.randint(",[460,107609,901],{"class":900},[460,107611,3986],{"class":466},[460,107613,2325],{"class":900},[460,107615,3986],{"class":466},[460,107617,2110],{"class":900},[460,107619,3754],{"class":466},[460,107621,107622,107625],{"class":462,"line":482},[460,107623,107624],{"class":466},"np.sum(a)",[460,107626,107627],{"class":942},"#求和\n",[18,107629,107631],{"id":107630},"_112-max求最大值函数","11.2 max()求最大值函数",[451,107633,107635],{"className":46787,"code":107634,"language":46789,"meta":32,"style":32},"#创建一维数组\na=np.random.randint(1,100,20)\nnp.max(a)\n#最大索引(求最大元素的索引)arg\nnp.argmax(a)\n",[457,107636,107637,107641,107661,107666,107671],{"__ignoreMap":32},[460,107638,107639],{"class":462,"line":463},[460,107640,107598],{"class":942},[460,107642,107643,107645,107647,107649,107651,107653,107655,107657,107659],{"class":462,"line":476},[460,107644,2756],{"class":466},[460,107646,894],{"class":887},[460,107648,107607],{"class":466},[460,107650,901],{"class":900},[460,107652,3986],{"class":466},[460,107654,2325],{"class":900},[460,107656,3986],{"class":466},[460,107658,2110],{"class":900},[460,107660,3754],{"class":466},[460,107662,107663],{"class":462,"line":482},[460,107664,107665],{"class":466},"np.max(a)\n",[460,107667,107668],{"class":462,"line":488},[460,107669,107670],{"class":942},"#最大索引(求最大元素的索引)arg\n",[460,107672,107673],{"class":462,"line":494},[460,107674,107675],{"class":466},"np.argmax(a)\n",[451,107677,107679],{"className":46787,"code":107678,"language":46789,"meta":32,"style":32},"a = np.array([1, 5, 3])\nb = np.array([3, 2, 4])\n\nprint(np.maximum(a, b))   # [3 5 4]，每个位置上取较大值\n",[457,107680,107681,107702,107722,107726],{"__ignoreMap":32},[460,107682,107683,107685,107687,107690,107692,107694,107696,107698,107700],{"class":462,"line":463},[460,107684,27383],{"class":466},[460,107686,894],{"class":887},[460,107688,107689],{"class":466}," np.array([",[460,107691,901],{"class":900},[460,107693,904],{"class":466},[460,107695,7290],{"class":900},[460,107697,904],{"class":466},[460,107699,913],{"class":900},[460,107701,13249],{"class":466},[460,107703,107704,107706,107708,107710,107712,107714,107716,107718,107720],{"class":462,"line":476},[460,107705,27409],{"class":466},[460,107707,894],{"class":887},[460,107709,107689],{"class":466},[460,107711,913],{"class":900},[460,107713,904],{"class":466},[460,107715,907],{"class":900},[460,107717,904],{"class":466},[460,107719,918],{"class":900},[460,107721,13249],{"class":466},[460,107723,107724],{"class":462,"line":482},[460,107725,522],{"emptyLinePlaceholder":521},[460,107727,107728,107730,107733],{"class":462,"line":488},[460,107729,46824],{"class":900},[460,107731,107732],{"class":466},"(np.maximum(a, b))   ",[460,107734,107735],{"class":942},"# [3 5 4]，每个位置上取较大值\n",[18,107737,107739],{"id":107738},"_113-mean求平均值函数","11.3 mean()求平均值函数",[14,107741,107742],{},"①一维数组：",[451,107744,107746],{"className":46787,"code":107745,"language":46789,"meta":32,"style":32},"#创建一维数组\na=np.random.randint(1,100,20)\n#求平均值\nnp.mean(a)\n",[457,107747,107748,107752,107772,107777],{"__ignoreMap":32},[460,107749,107750],{"class":462,"line":463},[460,107751,107598],{"class":942},[460,107753,107754,107756,107758,107760,107762,107764,107766,107768,107770],{"class":462,"line":476},[460,107755,2756],{"class":466},[460,107757,894],{"class":887},[460,107759,107607],{"class":466},[460,107761,901],{"class":900},[460,107763,3986],{"class":466},[460,107765,2325],{"class":900},[460,107767,3986],{"class":466},[460,107769,2110],{"class":900},[460,107771,3754],{"class":466},[460,107773,107774],{"class":462,"line":482},[460,107775,107776],{"class":942},"#求平均值\n",[460,107778,107779],{"class":462,"line":488},[460,107780,107781],{"class":466},"np.mean(a)\n",[14,107783,107784],{},"②二维数组",[451,107786,107788],{"className":46787,"code":107787,"language":46789,"meta":32,"style":32},"#二维数组\naa=np.arange(1,13).reshape(3,4)\n#对数组中的所有数求平均\nnp.mean(aa)\n",[457,107789,107790,107795,107820,107825],{"__ignoreMap":32},[460,107791,107792],{"class":462,"line":463},[460,107793,107794],{"class":942},"#二维数组\n",[460,107796,107797,107800,107802,107804,107806,107808,107810,107812,107814,107816,107818],{"class":462,"line":476},[460,107798,107799],{"class":466},"aa",[460,107801,894],{"class":887},[460,107803,107495],{"class":466},[460,107805,901],{"class":900},[460,107807,3986],{"class":466},[460,107809,17250],{"class":900},[460,107811,107500],{"class":466},[460,107813,913],{"class":900},[460,107815,3986],{"class":466},[460,107817,918],{"class":900},[460,107819,3754],{"class":466},[460,107821,107822],{"class":462,"line":482},[460,107823,107824],{"class":942},"#对数组中的所有数求平均\n",[460,107826,107827],{"class":462,"line":488},[460,107828,107829],{"class":466},"np.mean(aa)\n",[18,107831,107833],{"id":107832},"_114-median求中位数函数","11.4 median()求中位数函数",[451,107835,107837],{"className":46787,"code":107836,"language":46789,"meta":32,"style":32},"#求中位数\nb=np.arange(1,10)\nnp.median(b)\n#正常这个代码就可以，对于奇数就是排序后中间哪个值，对于偶数就是排序后中间那两个数的平均值\n",[457,107838,107839,107844,107860,107865],{"__ignoreMap":32},[460,107840,107841],{"class":462,"line":463},[460,107842,107843],{"class":942},"#求中位数\n",[460,107845,107846,107848,107850,107852,107854,107856,107858],{"class":462,"line":476},[460,107847,17005],{"class":466},[460,107849,894],{"class":887},[460,107851,107495],{"class":466},[460,107853,901],{"class":900},[460,107855,3986],{"class":466},[460,107857,2096],{"class":900},[460,107859,3754],{"class":466},[460,107861,107862],{"class":462,"line":482},[460,107863,107864],{"class":466},"np.median(b)\n",[460,107866,107867],{"class":462,"line":488},[460,107868,107869],{"class":942},"#正常这个代码就可以，对于奇数就是排序后中间哪个值，对于偶数就是排序后中间那两个数的平均值\n",[18,107871,107873],{"id":107872},"_115-power求幂运算函数","11.5 power()求幂运算函数",[451,107875,107877],{"className":46787,"code":107876,"language":46789,"meta":32,"style":32},"b=np.arange(1,10)\n#幂运算\n#第一个参数是要进行幂运算的数列，第二个参数是为方\nnp.power(b,2)\n#或者以下代码，将数据存储起来\ny=np.empty_like(b)\nnp.power(b,2,out=y)\n",[457,107878,107879,107895,107900,107905,107914,107919,107928],{"__ignoreMap":32},[460,107880,107881,107883,107885,107887,107889,107891,107893],{"class":462,"line":463},[460,107882,17005],{"class":466},[460,107884,894],{"class":887},[460,107886,107495],{"class":466},[460,107888,901],{"class":900},[460,107890,3986],{"class":466},[460,107892,2096],{"class":900},[460,107894,3754],{"class":466},[460,107896,107897],{"class":462,"line":476},[460,107898,107899],{"class":942},"#幂运算\n",[460,107901,107902],{"class":462,"line":482},[460,107903,107904],{"class":942},"#第一个参数是要进行幂运算的数列，第二个参数是为方\n",[460,107906,107907,107910,107912],{"class":462,"line":488},[460,107908,107909],{"class":466},"np.power(b,",[460,107911,907],{"class":900},[460,107913,3754],{"class":466},[460,107915,107916],{"class":462,"line":494},[460,107917,107918],{"class":942},"#或者以下代码，将数据存储起来\n",[460,107920,107921,107923,107925],{"class":462,"line":500},[460,107922,13192],{"class":466},[460,107924,894],{"class":887},[460,107926,107927],{"class":466},"np.empty_like(b)\n",[460,107929,107930,107932,107934,107936,107938,107940],{"class":462,"line":506},[460,107931,107909],{"class":466},[460,107933,907],{"class":900},[460,107935,3986],{"class":466},[460,107937,107547],{"class":3380},[460,107939,894],{"class":887},[460,107941,107942],{"class":466},"y)\n",[18,107944,107946],{"id":107945},"_116-sqrt求开方函数","11.6 sqrt()求开方函数",[451,107948,107950],{"className":46787,"code":107949,"language":46789,"meta":32,"style":32},"b=np.arange(1,10)\n#开方\nnp.sqrt(b)\n#或者以下代码，将数据存储起来\ny=np.empty_like(b,dtype=float)\nnp.sqrt(b,out=y)\n",[457,107951,107952,107968,107973,107978,107982,108000],{"__ignoreMap":32},[460,107953,107954,107956,107958,107960,107962,107964,107966],{"class":462,"line":463},[460,107955,17005],{"class":466},[460,107957,894],{"class":887},[460,107959,107495],{"class":466},[460,107961,901],{"class":900},[460,107963,3986],{"class":466},[460,107965,2096],{"class":900},[460,107967,3754],{"class":466},[460,107969,107970],{"class":462,"line":476},[460,107971,107972],{"class":942},"#开方\n",[460,107974,107975],{"class":462,"line":482},[460,107976,107977],{"class":466},"np.sqrt(b)\n",[460,107979,107980],{"class":462,"line":488},[460,107981,107918],{"class":942},[460,107983,107984,107986,107988,107991,107994,107996,107998],{"class":462,"line":494},[460,107985,13192],{"class":466},[460,107987,894],{"class":887},[460,107989,107990],{"class":466},"np.empty_like(b,",[460,107992,107993],{"class":3380},"dtype",[460,107995,894],{"class":887},[460,107997,16793],{"class":900},[460,107999,3754],{"class":466},[460,108001,108002,108005,108007,108009],{"class":462,"line":500},[460,108003,108004],{"class":466},"np.sqrt(b,",[460,108006,107547],{"class":3380},[460,108008,894],{"class":887},[460,108010,107942],{"class":466},[18,108012,108014],{"id":108013},"_117-cumsum累计求和函数","11.7 cumsum()累计求和函数",[14,108016,108017],{},"对数组中的元素累计求和，可指定轴",[14,108019,108020],{},"#累计求和的意思是：",[14,108022,108023],{},"a = np.array([1, 2, 3, 4])",[14,108025,108026],{},"[1, 1+2, 1+2+3, 1+2+3+4] → [1, 3, 6, 10]",[451,108028,108030],{"className":46787,"code":108029,"language":46789,"meta":32,"style":32},"b=np.arange(1,10)\nnp.cumsum(b)\n#结果：\n#array([ 1,  3,  6, 10, 15, 21, 28, 36, 45])\n",[457,108031,108032,108048,108053,108058],{"__ignoreMap":32},[460,108033,108034,108036,108038,108040,108042,108044,108046],{"class":462,"line":463},[460,108035,17005],{"class":466},[460,108037,894],{"class":887},[460,108039,107495],{"class":466},[460,108041,901],{"class":900},[460,108043,3986],{"class":466},[460,108045,2096],{"class":900},[460,108047,3754],{"class":466},[460,108049,108050],{"class":462,"line":476},[460,108051,108052],{"class":466},"np.cumsum(b)\n",[460,108054,108055],{"class":462,"line":482},[460,108056,108057],{"class":942},"#结果：\n",[460,108059,108060],{"class":462,"line":488},[460,108061,108062],{"class":942},"#array([ 1,  3,  6, 10, 15, 21, 28, 36, 45])\n",[18,108064,108066],{"id":108065},"_118-cumprod累计求积函数","11.8 cumprod()累计求积函数",[451,108068,108070],{"className":46787,"code":108069,"language":46789,"meta":32,"style":32},"b=np.arange(1,10)\n#对数组中的元素累计求积，可指定轴\nnp.cumprod(b)\n#结果：\n#array([     1,      2,      6,     24,    120,    720,   5040,  40320,362880])\n",[457,108071,108072,108088,108093,108098,108102],{"__ignoreMap":32},[460,108073,108074,108076,108078,108080,108082,108084,108086],{"class":462,"line":463},[460,108075,17005],{"class":466},[460,108077,894],{"class":887},[460,108079,107495],{"class":466},[460,108081,901],{"class":900},[460,108083,3986],{"class":466},[460,108085,2096],{"class":900},[460,108087,3754],{"class":466},[460,108089,108090],{"class":462,"line":476},[460,108091,108092],{"class":942},"#对数组中的元素累计求积，可指定轴\n",[460,108094,108095],{"class":462,"line":482},[460,108096,108097],{"class":466},"np.cumprod(b)\n",[460,108099,108100],{"class":462,"line":488},[460,108101,108057],{"class":942},[460,108103,108104],{"class":462,"line":494},[460,108105,108106],{"class":942},"#array([     1,      2,      6,     24,    120,    720,   5040,  40320,362880])\n",[18,108108,108110],{"id":108109},"_119-uniqu删除重复元素排序","11.9 uniqu()删除重复元素+排序",[451,108112,108114],{"className":46787,"code":108113,"language":46789,"meta":32,"style":32},"#删除数组中的重复数据，并对数据进行排序\na=np.array([1,2,3,12,3,10,32,0,23,4])\nnp.unique(a)\n#结果：\n#array([ 0,  1,  2,  3,  4, 10, 12, 23, 32])\n",[457,108115,108116,108121,108169,108174,108178],{"__ignoreMap":32},[460,108117,108118],{"class":462,"line":463},[460,108119,108120],{"class":942},"#删除数组中的重复数据，并对数据进行排序\n",[460,108122,108123,108125,108127,108129,108131,108133,108135,108137,108139,108141,108143,108145,108147,108149,108151,108153,108155,108157,108159,108161,108163,108165,108167],{"class":462,"line":476},[460,108124,2756],{"class":466},[460,108126,894],{"class":887},[460,108128,107517],{"class":466},[460,108130,901],{"class":900},[460,108132,3986],{"class":466},[460,108134,907],{"class":900},[460,108136,3986],{"class":466},[460,108138,913],{"class":900},[460,108140,3986],{"class":466},[460,108142,5531],{"class":900},[460,108144,3986],{"class":466},[460,108146,913],{"class":900},[460,108148,3986],{"class":466},[460,108150,2096],{"class":900},[460,108152,3986],{"class":466},[460,108154,16942],{"class":900},[460,108156,3986],{"class":466},[460,108158,936],{"class":900},[460,108160,3986],{"class":466},[460,108162,17490],{"class":900},[460,108164,3986],{"class":466},[460,108166,918],{"class":900},[460,108168,13249],{"class":466},[460,108170,108171],{"class":462,"line":482},[460,108172,108173],{"class":466},"np.unique(a)\n",[460,108175,108176],{"class":462,"line":488},[460,108177,108057],{"class":942},[460,108179,108180],{"class":462,"line":494},[460,108181,108182],{"class":942},"#array([ 0,  1,  2,  3,  4, 10, 12, 23, 32])\n",[14,108184,108185],{},"升序形式排序",[18,108187,108189],{"id":108188},"_1110-nonzero返回非零元素索引","11.10 nonzero()返回非零元素索引",[451,108191,108193],{"className":46787,"code":108192,"language":46789,"meta":32,"style":32},"a=np.array([1,2,3,12,3,10,32,0,23,4])\n#返回数组中非零元素的索引\nnp.nonzero(a)\n",[457,108194,108195,108243,108248],{"__ignoreMap":32},[460,108196,108197,108199,108201,108203,108205,108207,108209,108211,108213,108215,108217,108219,108221,108223,108225,108227,108229,108231,108233,108235,108237,108239,108241],{"class":462,"line":463},[460,108198,2756],{"class":466},[460,108200,894],{"class":887},[460,108202,107517],{"class":466},[460,108204,901],{"class":900},[460,108206,3986],{"class":466},[460,108208,907],{"class":900},[460,108210,3986],{"class":466},[460,108212,913],{"class":900},[460,108214,3986],{"class":466},[460,108216,5531],{"class":900},[460,108218,3986],{"class":466},[460,108220,913],{"class":900},[460,108222,3986],{"class":466},[460,108224,2096],{"class":900},[460,108226,3986],{"class":466},[460,108228,16942],{"class":900},[460,108230,3986],{"class":466},[460,108232,936],{"class":900},[460,108234,3986],{"class":466},[460,108236,17490],{"class":900},[460,108238,3986],{"class":466},[460,108240,918],{"class":900},[460,108242,13249],{"class":466},[460,108244,108245],{"class":462,"line":476},[460,108246,108247],{"class":942},"#返回数组中非零元素的索引\n",[460,108249,108250],{"class":462,"line":482},[460,108251,108252],{"class":466},"np.nonzero(a)\n",[18,108254,108256],{"id":108255},"_1111-ptp计算最值之差","11.11 ptp()计算最值之差",[451,108258,108260],{"className":46787,"code":108259,"language":46789,"meta":32,"style":32},"a=np.array([1,2,3,12,3,10,32,0,23,4])\n#计算一组数中最大值与最小值的差，可指定轴\nnp.ptp(a)\n",[457,108261,108262,108310,108315],{"__ignoreMap":32},[460,108263,108264,108266,108268,108270,108272,108274,108276,108278,108280,108282,108284,108286,108288,108290,108292,108294,108296,108298,108300,108302,108304,108306,108308],{"class":462,"line":463},[460,108265,2756],{"class":466},[460,108267,894],{"class":887},[460,108269,107517],{"class":466},[460,108271,901],{"class":900},[460,108273,3986],{"class":466},[460,108275,907],{"class":900},[460,108277,3986],{"class":466},[460,108279,913],{"class":900},[460,108281,3986],{"class":466},[460,108283,5531],{"class":900},[460,108285,3986],{"class":466},[460,108287,913],{"class":900},[460,108289,3986],{"class":466},[460,108291,2096],{"class":900},[460,108293,3986],{"class":466},[460,108295,16942],{"class":900},[460,108297,3986],{"class":466},[460,108299,936],{"class":900},[460,108301,3986],{"class":466},[460,108303,17490],{"class":900},[460,108305,3986],{"class":466},[460,108307,918],{"class":900},[460,108309,13249],{"class":466},[460,108311,108312],{"class":462,"line":476},[460,108313,108314],{"class":942},"#计算一组数中最大值与最小值的差，可指定轴\n",[460,108316,108317],{"class":462,"line":482},[460,108318,108319],{"class":466},"np.ptp(a)\n",[1944,108321,108322],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":108324},[108325,108326,108327,108328,108329,108330,108331,108332,108333,108334,108335],{"id":107587,"depth":476,"text":107588},{"id":107630,"depth":476,"text":107631},{"id":107738,"depth":476,"text":107739},{"id":107832,"depth":476,"text":107833},{"id":107872,"depth":476,"text":107873},{"id":107945,"depth":476,"text":107946},{"id":108013,"depth":476,"text":108014},{"id":108065,"depth":476,"text":108066},{"id":108109,"depth":476,"text":108110},{"id":108188,"depth":476,"text":108189},{"id":108255,"depth":476,"text":108256},{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch11",{"title":107573,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch11-统计函数","CTRvDo_rBDOrpNMU-fbOBmv8zkqxGfIkMB9rSWJBiro",{"id":108342,"title":108343,"body":108344,"description":16682,"extension":16683,"meta":108999,"navigation":521,"path":109000,"seo":109001,"stem":109002,"__hash__":109003},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch12-其他常用函数.md","12.其他常用函数",{"type":7,"value":108345,"toc":108987},[108346,108349,108353,108356,108572,108576,108579,108788,108792,108858,108863,108867,108870,108873,108911,108915,108918,108923,108927,108930,108933,108938,108942,108945,108949,108952,108955,108960,108964,108967,108970,108975,108979,108984],[10,108347,108343],{"id":108348},"_12其他常用函数",[18,108350,108352],{"id":108351},"_121-tile元素按行列复制扩展","12.1 tile()元素按行列复制扩展",[14,108354,108355],{},"将数组的数据按照行列复制扩展",[451,108357,108359],{"className":46787,"code":108358,"language":46789,"meta":32,"style":32},"a=np.arange(1,5)\nnp.tile(a,2)\n#结果：\n#array([1, 2, 3, 4, 1, 2, 3, 4])\n#行复制两次，列复制三次\nnp.tile(a,(2,3))\n#结果：\n'''\narray([[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4],\n       [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]])\n'''\n#创建二维数组\naa=np.arange(1,13).reshape(4,3)\nnp.tile(aa,2)#一个数的时候就是行\n#结果：\n'''\narray([[ 1,  2,  3,  1,  2,  3],\n       [ 4,  5,  6,  4,  5,  6],\n       [ 7,  8,  9,  7,  8,  9],\n       [10, 11, 12, 10, 11, 12]])\n'''\nnp.tile(aa,(2,3))\n#结果：\n'''\narray([[ 1,  2,  3,  1,  2,  3,  1,  2,  3],\n       [ 4,  5,  6,  4,  5,  6,  4,  5,  6],\n       [ 7,  8,  9,  7,  8,  9,  7,  8,  9],\n       [10, 11, 12, 10, 11, 12, 10, 11, 12],\n       [ 1,  2,  3,  1,  2,  3,  1,  2,  3],\n       [ 4,  5,  6,  4,  5,  6,  4,  5,  6],\n       [ 7,  8,  9,  7,  8,  9,  7,  8,  9],\n       [10, 11, 12, 10, 11, 12, 10, 11, 12]])\n'''\n\n",[457,108360,108361,108377,108386,108390,108395,108400,108413,108417,108422,108427,108432,108436,108441,108465,108477,108481,108485,108490,108495,108500,108505,108509,108522,108526,108530,108535,108540,108545,108550,108555,108559,108563,108568],{"__ignoreMap":32},[460,108362,108363,108365,108367,108369,108371,108373,108375],{"class":462,"line":463},[460,108364,2756],{"class":466},[460,108366,894],{"class":887},[460,108368,107495],{"class":466},[460,108370,901],{"class":900},[460,108372,3986],{"class":466},[460,108374,7290],{"class":900},[460,108376,3754],{"class":466},[460,108378,108379,108382,108384],{"class":462,"line":476},[460,108380,108381],{"class":466},"np.tile(a,",[460,108383,907],{"class":900},[460,108385,3754],{"class":466},[460,108387,108388],{"class":462,"line":482},[460,108389,108057],{"class":942},[460,108391,108392],{"class":462,"line":488},[460,108393,108394],{"class":942},"#array([1, 2, 3, 4, 1, 2, 3, 4])\n",[460,108396,108397],{"class":462,"line":494},[460,108398,108399],{"class":942},"#行复制两次，列复制三次\n",[460,108401,108402,108405,108407,108409,108411],{"class":462,"line":500},[460,108403,108404],{"class":466},"np.tile(a,(",[460,108406,907],{"class":900},[460,108408,3986],{"class":466},[460,108410,913],{"class":900},[460,108412,6311],{"class":466},[460,108414,108415],{"class":462,"line":506},[460,108416,108057],{"class":942},[460,108418,108419],{"class":462,"line":512},[460,108420,108421],{"class":1353},"'''\n",[460,108423,108424],{"class":462,"line":518},[460,108425,108426],{"class":1353},"array([[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4],\n",[460,108428,108429],{"class":462,"line":525},[460,108430,108431],{"class":1353},"       [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]])\n",[460,108433,108434],{"class":462,"line":531},[460,108435,108421],{"class":1353},[460,108437,108438],{"class":462,"line":537},[460,108439,108440],{"class":942},"#创建二维数组\n",[460,108442,108443,108445,108447,108449,108451,108453,108455,108457,108459,108461,108463],{"class":462,"line":543},[460,108444,107799],{"class":466},[460,108446,894],{"class":887},[460,108448,107495],{"class":466},[460,108450,901],{"class":900},[460,108452,3986],{"class":466},[460,108454,17250],{"class":900},[460,108456,107500],{"class":466},[460,108458,918],{"class":900},[460,108460,3986],{"class":466},[460,108462,913],{"class":900},[460,108464,3754],{"class":466},[460,108466,108467,108470,108472,108474],{"class":462,"line":549},[460,108468,108469],{"class":466},"np.tile(aa,",[460,108471,907],{"class":900},[460,108473,8411],{"class":466},[460,108475,108476],{"class":942},"#一个数的时候就是行\n",[460,108478,108479],{"class":462,"line":555},[460,108480,108057],{"class":942},[460,108482,108483],{"class":462,"line":560},[460,108484,108421],{"class":1353},[460,108486,108487],{"class":462,"line":566},[460,108488,108489],{"class":1353},"array([[ 1,  2,  3,  1,  2,  3],\n",[460,108491,108492],{"class":462,"line":572},[460,108493,108494],{"class":1353},"       [ 4,  5,  6,  4,  5,  6],\n",[460,108496,108497],{"class":462,"line":578},[460,108498,108499],{"class":1353},"       [ 7,  8,  9,  7,  8,  9],\n",[460,108501,108502],{"class":462,"line":812},[460,108503,108504],{"class":1353},"       [10, 11, 12, 10, 11, 12]])\n",[460,108506,108507],{"class":462,"line":818},[460,108508,108421],{"class":1353},[460,108510,108511,108514,108516,108518,108520],{"class":462,"line":824},[460,108512,108513],{"class":466},"np.tile(aa,(",[460,108515,907],{"class":900},[460,108517,3986],{"class":466},[460,108519,913],{"class":900},[460,108521,6311],{"class":466},[460,108523,108524],{"class":462,"line":2074},[460,108525,108057],{"class":942},[460,108527,108528],{"class":462,"line":2088},[460,108529,108421],{"class":1353},[460,108531,108532],{"class":462,"line":2103},[460,108533,108534],{"class":1353},"array([[ 1,  2,  3,  1,  2,  3,  1,  2,  3],\n",[460,108536,108537],{"class":462,"line":2122},[460,108538,108539],{"class":1353},"       [ 4,  5,  6,  4,  5,  6,  4,  5,  6],\n",[460,108541,108542],{"class":462,"line":2144},[460,108543,108544],{"class":1353},"       [ 7,  8,  9,  7,  8,  9,  7,  8,  9],\n",[460,108546,108547],{"class":462,"line":2158},[460,108548,108549],{"class":1353},"       [10, 11, 12, 10, 11, 12, 10, 11, 12],\n",[460,108551,108552],{"class":462,"line":2163},[460,108553,108554],{"class":1353},"       [ 1,  2,  3,  1,  2,  3,  1,  2,  3],\n",[460,108556,108557],{"class":462,"line":2168},[460,108558,108539],{"class":1353},[460,108560,108561],{"class":462,"line":2183},[460,108562,108544],{"class":1353},[460,108564,108565],{"class":462,"line":2194},[460,108566,108567],{"class":1353},"       [10, 11, 12, 10, 11, 12, 10, 11, 12]])\n",[460,108569,108570],{"class":462,"line":2199},[460,108571,108421],{"class":1353},[18,108573,108575],{"id":108574},"_122-repeat元素重复若干","12.2 repeat()元素重复若干",[14,108577,108578],{},"repeat()将数组中的每个元素重复若干次",[451,108580,108582],{"className":46787,"code":108581,"language":46789,"meta":32,"style":32},"a=np.arange(1,5)\nnp.repeat(a,3)\n#结果：\n#array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])\naa=np.arange(1,13).reshape(4,3)\n#这个重复之后二维变成一维\nnp.repeat(aa,2)\n'''\narray([ 1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  8,  8,  9, 9, 10, 10, 11, 11, 12, 12])\n'''\n#指定axis\nnp.repeat(aa,2,axis=0)\n#结果：\n'''\narray([[ 1,  2,  3],\n       [ 1,  2,  3],\n       [ 4,  5,  6],\n       [ 4,  5,  6],\n       [ 7,  8,  9],\n       [ 7,  8,  9],\n       [10, 11, 12],\n       [10, 11, 12]])\n'''\nnp.repeat(aa,2,axis=1)\n#结果：\n'''\narray([[ 1,  1,  2,  2,  3,  3],\n       [ 4,  4,  5,  5,  6,  6],\n       [ 7,  7,  8,  8,  9,  9],\n       [10, 10, 11, 11, 12, 12]])\n'''\n",[457,108583,108584,108600,108609,108613,108618,108642,108647,108656,108660,108665,108669,108674,108690,108694,108698,108703,108708,108713,108717,108722,108726,108731,108736,108740,108756,108760,108764,108769,108774,108779,108784],{"__ignoreMap":32},[460,108585,108586,108588,108590,108592,108594,108596,108598],{"class":462,"line":463},[460,108587,2756],{"class":466},[460,108589,894],{"class":887},[460,108591,107495],{"class":466},[460,108593,901],{"class":900},[460,108595,3986],{"class":466},[460,108597,7290],{"class":900},[460,108599,3754],{"class":466},[460,108601,108602,108605,108607],{"class":462,"line":476},[460,108603,108604],{"class":466},"np.repeat(a,",[460,108606,913],{"class":900},[460,108608,3754],{"class":466},[460,108610,108611],{"class":462,"line":482},[460,108612,108057],{"class":942},[460,108614,108615],{"class":462,"line":488},[460,108616,108617],{"class":942},"#array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])\n",[460,108619,108620,108622,108624,108626,108628,108630,108632,108634,108636,108638,108640],{"class":462,"line":494},[460,108621,107799],{"class":466},[460,108623,894],{"class":887},[460,108625,107495],{"class":466},[460,108627,901],{"class":900},[460,108629,3986],{"class":466},[460,108631,17250],{"class":900},[460,108633,107500],{"class":466},[460,108635,918],{"class":900},[460,108637,3986],{"class":466},[460,108639,913],{"class":900},[460,108641,3754],{"class":466},[460,108643,108644],{"class":462,"line":500},[460,108645,108646],{"class":942},"#这个重复之后二维变成一维\n",[460,108648,108649,108652,108654],{"class":462,"line":506},[460,108650,108651],{"class":466},"np.repeat(aa,",[460,108653,907],{"class":900},[460,108655,3754],{"class":466},[460,108657,108658],{"class":462,"line":512},[460,108659,108421],{"class":1353},[460,108661,108662],{"class":462,"line":518},[460,108663,108664],{"class":1353},"array([ 1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  8,  8,  9, 9, 10, 10, 11, 11, 12, 12])\n",[460,108666,108667],{"class":462,"line":525},[460,108668,108421],{"class":1353},[460,108670,108671],{"class":462,"line":531},[460,108672,108673],{"class":942},"#指定axis\n",[460,108675,108676,108678,108680,108682,108684,108686,108688],{"class":462,"line":537},[460,108677,108651],{"class":466},[460,108679,907],{"class":900},[460,108681,3986],{"class":466},[460,108683,63817],{"class":3380},[460,108685,894],{"class":887},[460,108687,936],{"class":900},[460,108689,3754],{"class":466},[460,108691,108692],{"class":462,"line":543},[460,108693,108057],{"class":942},[460,108695,108696],{"class":462,"line":549},[460,108697,108421],{"class":1353},[460,108699,108700],{"class":462,"line":555},[460,108701,108702],{"class":1353},"array([[ 1,  2,  3],\n",[460,108704,108705],{"class":462,"line":560},[460,108706,108707],{"class":1353},"       [ 1,  2,  3],\n",[460,108709,108710],{"class":462,"line":566},[460,108711,108712],{"class":1353},"       [ 4,  5,  6],\n",[460,108714,108715],{"class":462,"line":572},[460,108716,108712],{"class":1353},[460,108718,108719],{"class":462,"line":578},[460,108720,108721],{"class":1353},"       [ 7,  8,  9],\n",[460,108723,108724],{"class":462,"line":812},[460,108725,108721],{"class":1353},[460,108727,108728],{"class":462,"line":818},[460,108729,108730],{"class":1353},"       [10, 11, 12],\n",[460,108732,108733],{"class":462,"line":824},[460,108734,108735],{"class":1353},"       [10, 11, 12]])\n",[460,108737,108738],{"class":462,"line":2074},[460,108739,108421],{"class":1353},[460,108741,108742,108744,108746,108748,108750,108752,108754],{"class":462,"line":2088},[460,108743,108651],{"class":466},[460,108745,907],{"class":900},[460,108747,3986],{"class":466},[460,108749,63817],{"class":3380},[460,108751,894],{"class":887},[460,108753,901],{"class":900},[460,108755,3754],{"class":466},[460,108757,108758],{"class":462,"line":2103},[460,108759,108057],{"class":942},[460,108761,108762],{"class":462,"line":2122},[460,108763,108421],{"class":1353},[460,108765,108766],{"class":462,"line":2144},[460,108767,108768],{"class":1353},"array([[ 1,  1,  2,  2,  3,  3],\n",[460,108770,108771],{"class":462,"line":2158},[460,108772,108773],{"class":1353},"       [ 4,  4,  5,  5,  6,  6],\n",[460,108775,108776],{"class":462,"line":2163},[460,108777,108778],{"class":1353},"       [ 7,  7,  8,  8,  9,  9],\n",[460,108780,108781],{"class":462,"line":2168},[460,108782,108783],{"class":1353},"       [10, 10, 11, 11, 12, 12]])\n",[460,108785,108786],{"class":462,"line":2183},[460,108787,108421],{"class":1353},[18,108789,108791],{"id":108790},"_123-roll沿指定轴对数组元素移位","12.3 roll()沿指定轴对数组元素移位",[451,108793,108795],{"className":46787,"code":108794,"language":46789,"meta":32,"style":32},"a=np.arange(1,5)\n#array([，2，3，4])\nnp.roll(a,2)#传正数向后调多少位，传负数向前调多少位\n#结果：\n#array([3, 4, 1, 2])\nnp.roll(a,-1)\n#结果：\n#array([2, 3, 4, 1])\n",[457,108796,108797,108813,108818,108830,108834,108839,108849,108853],{"__ignoreMap":32},[460,108798,108799,108801,108803,108805,108807,108809,108811],{"class":462,"line":463},[460,108800,2756],{"class":466},[460,108802,894],{"class":887},[460,108804,107495],{"class":466},[460,108806,901],{"class":900},[460,108808,3986],{"class":466},[460,108810,7290],{"class":900},[460,108812,3754],{"class":466},[460,108814,108815],{"class":462,"line":476},[460,108816,108817],{"class":942},"#array([，2，3，4])\n",[460,108819,108820,108823,108825,108827],{"class":462,"line":482},[460,108821,108822],{"class":466},"np.roll(a,",[460,108824,907],{"class":900},[460,108826,8411],{"class":466},[460,108828,108829],{"class":942},"#传正数向后调多少位，传负数向前调多少位\n",[460,108831,108832],{"class":462,"line":488},[460,108833,108057],{"class":942},[460,108835,108836],{"class":462,"line":494},[460,108837,108838],{"class":942},"#array([3, 4, 1, 2])\n",[460,108840,108841,108843,108845,108847],{"class":462,"line":500},[460,108842,108822],{"class":466},[460,108844,17259],{"class":887},[460,108846,901],{"class":900},[460,108848,3754],{"class":466},[460,108850,108851],{"class":462,"line":506},[460,108852,108057],{"class":942},[460,108854,108855],{"class":462,"line":512},[460,108856,108857],{"class":942},"#array([2, 3, 4, 1])\n",[14,108859,108860],{},[30,108861],{"alt":32,"src":108862},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-032.png",[18,108864,108866],{"id":108865},"_124-resize重新调整数组大小","12.4 resize()重新调整数组大小",[14,108868,108869],{},"resize()重新调整数组的大小",[14,108871,108872],{},"reshape修改数组的维度，数组元素个数不能改变，要保持一致",[451,108874,108876],{"className":46787,"code":108875,"language":46789,"meta":32,"style":32},"#resize()重新调整 数组的大小，数组元素个数可以不相同\nnp.resize(aa,(2,6))\nnp.resize(aa,(2,9))#这样改完之后可以与原数组形状不同，多出来的元素又从第一个元素依次进行排\n",[457,108877,108878,108883,108896],{"__ignoreMap":32},[460,108879,108880],{"class":462,"line":463},[460,108881,108882],{"class":942},"#resize()重新调整 数组的大小，数组元素个数可以不相同\n",[460,108884,108885,108888,108890,108892,108894],{"class":462,"line":476},[460,108886,108887],{"class":466},"np.resize(aa,(",[460,108889,907],{"class":900},[460,108891,3986],{"class":466},[460,108893,4064],{"class":900},[460,108895,6311],{"class":466},[460,108897,108898,108900,108902,108904,108906,108908],{"class":462,"line":482},[460,108899,108887],{"class":466},[460,108901,907],{"class":900},[460,108903,3986],{"class":466},[460,108905,17154],{"class":900},[460,108907,6508],{"class":466},[460,108909,108910],{"class":942},"#这样改完之后可以与原数组形状不同，多出来的元素又从第一个元素依次进行排\n",[18,108912,108914],{"id":108913},"_125-placeput函数","12.5 place()\u002Fput()函数",[14,108916,108917],{},"将数组中满足条件的元素\u002F指定的元素替换为指定的值",[14,108919,108920],{},[30,108921],{"alt":32,"src":108922},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-033.png",[18,108924,108926],{"id":108925},"_126-保存加载文件","12.6 保存加载文件",[14,108928,108929],{},"savetxt():将数据保存到txt文件中",[14,108931,108932],{},"loadtxt():从文件加载数据",[14,108934,108935],{},[30,108936],{"alt":32,"src":108937},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-034.png",[18,108939,108941],{"id":108940},"_127-genfromtxt函数","12.7 genfromtxt()函数",[14,108943,108944],{},"根据文件内容中生成数据，可以指定缺失值的处理等",[18,108946,108948],{"id":108947},"_128-anyall函数","12.8 any()\u002Fall()函数",[14,108950,108951],{},"any():如果数组中存在一个True的元素（或者能转化为True的元素），则返回True",[14,108953,108954],{},"all():如果数组中所有的元素都为True（或者能转为True的元素），则返回True",[14,108956,108957],{},[30,108958],{"alt":32,"src":108959},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-035.png",[18,108961,108963],{"id":108962},"_129-where语句","12.9 where语句",[14,108965,108966],{},"np.where(条件,x,y)",[14,108968,108969],{},"如果条件为True,对应值为x,否则对应值为y",[14,108971,108972],{},[30,108973],{"alt":32,"src":108974},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-036.png",[18,108976,108978],{"id":108977},"_1210-dot矩阵","12.10 dot()矩阵",[14,108980,108981],{},[30,108982],{"alt":32,"src":108983},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-037.png",[1944,108985,108986],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":108988},[108989,108990,108991,108992,108993,108994,108995,108996,108997,108998],{"id":108351,"depth":476,"text":108352},{"id":108574,"depth":476,"text":108575},{"id":108790,"depth":476,"text":108791},{"id":108865,"depth":476,"text":108866},{"id":108913,"depth":476,"text":108914},{"id":108925,"depth":476,"text":108926},{"id":108940,"depth":476,"text":108941},{"id":108947,"depth":476,"text":108948},{"id":108962,"depth":476,"text":108963},{"id":108977,"depth":476,"text":108978},{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch12",{"title":108343,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch12-其他常用函数","76m9lUtNWFfwZSyqhRkq4vsOUuH9yUlcqSR0mAAIVZs",{"id":109005,"title":109006,"body":109007,"description":16682,"extension":16683,"meta":109360,"navigation":521,"path":109361,"seo":109362,"stem":109363,"__hash__":109364},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch13-数组排序.md","13.数组排序",{"type":7,"value":109008,"toc":109358},[109009,109012,109015,109018,109021,109024,109089,109091,109355],[10,109010,109006],{"id":109011},"_13数组排序",[14,109013,109014],{},"排序主要用到的方法是np.sort和np.argsort",[14,109016,109017],{},"其中np.sort()对数组直接排序",[14,109019,109020],{},"而np.argsort()是返回排序后的原始索引",[14,109022,109023],{},"①一维数组",[451,109025,109027],{"className":46787,"code":109026,"language":46789,"meta":32,"style":32},"#创建一维数组\na=np.array([3,12,8,23,67,123,6,10])\nnp.sort(a)#升序排序\nnp.argsort(a)#按照元素大小来索引排序\n",[457,109028,109029,109033,109073,109081],{"__ignoreMap":32},[460,109030,109031],{"class":462,"line":463},[460,109032,107598],{"class":942},[460,109034,109035,109037,109039,109041,109043,109045,109047,109049,109051,109053,109055,109057,109059,109061,109063,109065,109067,109069,109071],{"class":462,"line":476},[460,109036,2756],{"class":466},[460,109038,894],{"class":887},[460,109040,107517],{"class":466},[460,109042,913],{"class":900},[460,109044,3986],{"class":466},[460,109046,5531],{"class":900},[460,109048,3986],{"class":466},[460,109050,17130],{"class":900},[460,109052,3986],{"class":466},[460,109054,17490],{"class":900},[460,109056,3986],{"class":466},[460,109058,17021],{"class":900},[460,109060,3986],{"class":466},[460,109062,17604],{"class":900},[460,109064,3986],{"class":466},[460,109066,4064],{"class":900},[460,109068,3986],{"class":466},[460,109070,2096],{"class":900},[460,109072,13249],{"class":466},[460,109074,109075,109078],{"class":462,"line":482},[460,109076,109077],{"class":466},"np.sort(a)",[460,109079,109080],{"class":942},"#升序排序\n",[460,109082,109083,109086],{"class":462,"line":488},[460,109084,109085],{"class":466},"np.argsort(a)",[460,109087,109088],{"class":942},"#按照元素大小来索引排序\n",[14,109090,107784],{},[451,109092,109094],{"className":46787,"code":109093,"language":46789,"meta":32,"style":32},"np.random.seed(0)#保证每次值一样\naa=np.random.randint(100,size=(4,6))\n#原数组：\n'''\narray([[44, 47, 64, 67, 67,  9],\n       [83, 21, 36, 87, 70, 88],\n       [88, 12, 58, 65, 39, 87],\n       [46, 88, 81, 37, 25, 77]], dtype=int32)\n'''\nnp.sort(aa)#每行进行了排序\n'''\narray([[ 9, 44, 47, 64, 67, 67],\n       [21, 36, 70, 83, 87, 88],\n       [12, 39, 58, 65, 87, 88],\n       [25, 37, 46, 77, 81, 88]], dtype=int32)\n'''\n#axis=0时\nnp.sort(aa,axis=0)\n'''\narray([[44, 12, 36, 37, 25,  9],\n       [46, 21, 58, 65, 39, 77],\n       [83, 47, 64, 67, 67, 87],\n       [88, 88, 81, 87, 70, 88]], dtype=int32)\n'''\n#axis=1时,为默认值\nnp.sort(aa,axis=1)\n'''\narray([[ 9, 44, 47, 64, 67, 67],\n       [21, 36, 70, 83, 87, 88],\n       [12, 39, 58, 65, 87, 88],\n       [25, 37, 46, 77, 81, 88]], dtype=int32)\n'''\n#按最后一列排序\nb=aa[:,-1]\n#获取最后一列排好序的索引\nindex=np.argsort(b)\naa[index]\n'''\narray([[44, 47, 64, 67, 67,  9],\n       [46, 88, 81, 37, 25, 77],\n       [88, 12, 58, 65, 39, 87],\n       [83, 21, 36, 87, 70, 88]], dtype=int32)\n'''\n",[457,109095,109096,109108,109134,109139,109143,109148,109153,109158,109163,109167,109175,109179,109184,109189,109194,109199,109203,109208,109221,109225,109230,109235,109240,109245,109249,109254,109266,109270,109274,109278,109282,109286,109290,109295,109310,109315,109324,109329,109333,109337,109342,109346,109351],{"__ignoreMap":32},[460,109097,109098,109101,109103,109105],{"class":462,"line":463},[460,109099,109100],{"class":466},"np.random.seed(",[460,109102,936],{"class":900},[460,109104,8411],{"class":466},[460,109106,109107],{"class":942},"#保证每次值一样\n",[460,109109,109110,109112,109114,109116,109118,109120,109122,109124,109126,109128,109130,109132],{"class":462,"line":476},[460,109111,107799],{"class":466},[460,109113,894],{"class":887},[460,109115,107607],{"class":466},[460,109117,2325],{"class":900},[460,109119,3986],{"class":466},[460,109121,47902],{"class":3380},[460,109123,894],{"class":887},[460,109125,2174],{"class":466},[460,109127,918],{"class":900},[460,109129,3986],{"class":466},[460,109131,4064],{"class":900},[460,109133,6311],{"class":466},[460,109135,109136],{"class":462,"line":482},[460,109137,109138],{"class":942},"#原数组：\n",[460,109140,109141],{"class":462,"line":488},[460,109142,108421],{"class":1353},[460,109144,109145],{"class":462,"line":494},[460,109146,109147],{"class":1353},"array([[44, 47, 64, 67, 67,  9],\n",[460,109149,109150],{"class":462,"line":500},[460,109151,109152],{"class":1353},"       [83, 21, 36, 87, 70, 88],\n",[460,109154,109155],{"class":462,"line":506},[460,109156,109157],{"class":1353},"       [88, 12, 58, 65, 39, 87],\n",[460,109159,109160],{"class":462,"line":512},[460,109161,109162],{"class":1353},"       [46, 88, 81, 37, 25, 77]], dtype=int32)\n",[460,109164,109165],{"class":462,"line":518},[460,109166,108421],{"class":1353},[460,109168,109169,109172],{"class":462,"line":525},[460,109170,109171],{"class":466},"np.sort(aa)",[460,109173,109174],{"class":942},"#每行进行了排序\n",[460,109176,109177],{"class":462,"line":531},[460,109178,108421],{"class":1353},[460,109180,109181],{"class":462,"line":537},[460,109182,109183],{"class":1353},"array([[ 9, 44, 47, 64, 67, 67],\n",[460,109185,109186],{"class":462,"line":543},[460,109187,109188],{"class":1353},"       [21, 36, 70, 83, 87, 88],\n",[460,109190,109191],{"class":462,"line":549},[460,109192,109193],{"class":1353},"       [12, 39, 58, 65, 87, 88],\n",[460,109195,109196],{"class":462,"line":555},[460,109197,109198],{"class":1353},"       [25, 37, 46, 77, 81, 88]], dtype=int32)\n",[460,109200,109201],{"class":462,"line":560},[460,109202,108421],{"class":1353},[460,109204,109205],{"class":462,"line":566},[460,109206,109207],{"class":942},"#axis=0时\n",[460,109209,109210,109213,109215,109217,109219],{"class":462,"line":572},[460,109211,109212],{"class":466},"np.sort(aa,",[460,109214,63817],{"class":3380},[460,109216,894],{"class":887},[460,109218,936],{"class":900},[460,109220,3754],{"class":466},[460,109222,109223],{"class":462,"line":578},[460,109224,108421],{"class":1353},[460,109226,109227],{"class":462,"line":812},[460,109228,109229],{"class":1353},"array([[44, 12, 36, 37, 25,  9],\n",[460,109231,109232],{"class":462,"line":818},[460,109233,109234],{"class":1353},"       [46, 21, 58, 65, 39, 77],\n",[460,109236,109237],{"class":462,"line":824},[460,109238,109239],{"class":1353},"       [83, 47, 64, 67, 67, 87],\n",[460,109241,109242],{"class":462,"line":2074},[460,109243,109244],{"class":1353},"       [88, 88, 81, 87, 70, 88]], dtype=int32)\n",[460,109246,109247],{"class":462,"line":2088},[460,109248,108421],{"class":1353},[460,109250,109251],{"class":462,"line":2103},[460,109252,109253],{"class":942},"#axis=1时,为默认值\n",[460,109255,109256,109258,109260,109262,109264],{"class":462,"line":2122},[460,109257,109212],{"class":466},[460,109259,63817],{"class":3380},[460,109261,894],{"class":887},[460,109263,901],{"class":900},[460,109265,3754],{"class":466},[460,109267,109268],{"class":462,"line":2144},[460,109269,108421],{"class":1353},[460,109271,109272],{"class":462,"line":2158},[460,109273,109183],{"class":1353},[460,109275,109276],{"class":462,"line":2163},[460,109277,109188],{"class":1353},[460,109279,109280],{"class":462,"line":2168},[460,109281,109193],{"class":1353},[460,109283,109284],{"class":462,"line":2183},[460,109285,109198],{"class":1353},[460,109287,109288],{"class":462,"line":2194},[460,109289,108421],{"class":1353},[460,109291,109292],{"class":462,"line":2199},[460,109293,109294],{"class":942},"#按最后一列排序\n",[460,109296,109297,109299,109301,109304,109306,109308],{"class":462,"line":2204},[460,109298,17005],{"class":466},[460,109300,894],{"class":887},[460,109302,109303],{"class":466},"aa[:,",[460,109305,17259],{"class":887},[460,109307,901],{"class":900},[460,109309,13307],{"class":466},[460,109311,109312],{"class":462,"line":2212},[460,109313,109314],{"class":942},"#获取最后一列排好序的索引\n",[460,109316,109317,109319,109321],{"class":462,"line":2257},[460,109318,5211],{"class":466},[460,109320,894],{"class":887},[460,109322,109323],{"class":466},"np.argsort(b)\n",[460,109325,109326],{"class":462,"line":2285},[460,109327,109328],{"class":466},"aa[index]\n",[460,109330,109331],{"class":462,"line":2298},[460,109332,108421],{"class":1353},[460,109334,109335],{"class":462,"line":2303},[460,109336,109147],{"class":1353},[460,109338,109339],{"class":462,"line":2308},[460,109340,109341],{"class":1353},"       [46, 88, 81, 37, 25, 77],\n",[460,109343,109344],{"class":462,"line":2318},[460,109345,109157],{"class":1353},[460,109347,109348],{"class":462,"line":2333},[460,109349,109350],{"class":1353},"       [83, 21, 36, 87, 70, 88]], dtype=int32)\n",[460,109352,109353],{"class":462,"line":2338},[460,109354,108421],{"class":1353},[1944,109356,109357],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":109359},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch13",{"title":109006,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch13-数组排序","YRMPYd2prDU8JgTg-B-BGwJLUAaNpeoVr1nYyQDLx-E",{"id":109366,"title":109367,"body":109368,"description":16682,"extension":16683,"meta":109398,"navigation":521,"path":109399,"seo":109400,"stem":109401,"__hash__":109402},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch14-广播机制.md","14.广播机制",{"type":7,"value":109369,"toc":109396},[109370,109373,109376,109379,109382,109385,109388,109391],[10,109371,109367],{"id":109372},"_14广播机制",[14,109374,109375],{},"广播的规则：",[14,109377,109378],{},"1.如果两个数组维度个数不同，那么小维度的数组形状会在左边补1，",[14,109380,109381],{},"例如1和[1,2]这两个维度个数是不同的，一个是数，是个标量是0维的，另一个是一维的，第一个数形状往左补1，之后就可以进行广播了",[14,109383,109384],{},"2.如果两个数组形状在任何维度上都不匹配，数组的形状会沿着维度为1的维度扩展到匹配上另一个数组的形状",[14,109386,109387],{},"3.如果没有维度形状为1，则会引发异常",[14,109389,109390],{},"也就是只有维度或者个数为1才可以进行广播操作",[14,109392,109393],{},[30,109394],{"alt":32,"src":109395},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-038.png",{"title":32,"searchDepth":476,"depth":476,"links":109397},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch14",{"title":109367,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch14-广播机制","tBGxTdhgyt2-aB8OANfZ0iuefn4ogRK9zJPGTd5aepM",{"id":109404,"title":109405,"body":109406,"description":16682,"extension":16683,"meta":109504,"navigation":521,"path":109505,"seo":109506,"stem":109507,"__hash__":109508},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch15-比较掩码.md","15.比较掩码",{"type":7,"value":109407,"toc":109502},[109408,109411,109414,109499],[10,109409,109405],{"id":109410},"_15比较掩码",[14,109412,109413],{},"比较操作，会返回与参与运算数组形状相同的数组，其中，满足条件的为True，不满足的为False",[451,109415,109417],{"className":46787,"code":109416,"language":46789,"meta":32,"style":32},"a=np.array([[1,2,3],[11,12,13],[21,22,23]])\na\u003C20#结果是一个由True,False组成的数组\na[a\u003C20]#小于20的元素会存到这个数组中\n#结果：\n#array([ 1,  2,  3, 11, 12, 13])\n",[457,109418,109419,109465,109476,109490,109494],{"__ignoreMap":32},[460,109420,109421,109423,109425,109428,109430,109432,109434,109436,109438,109440,109442,109444,109446,109448,109450,109452,109454,109456,109458,109460,109462],{"class":462,"line":463},[460,109422,2756],{"class":466},[460,109424,894],{"class":887},[460,109426,109427],{"class":466},"np.array([[",[460,109429,901],{"class":900},[460,109431,3986],{"class":466},[460,109433,907],{"class":900},[460,109435,3986],{"class":466},[460,109437,913],{"class":900},[460,109439,64333],{"class":466},[460,109441,12812],{"class":900},[460,109443,3986],{"class":466},[460,109445,5531],{"class":900},[460,109447,3986],{"class":466},[460,109449,17250],{"class":900},[460,109451,64333],{"class":466},[460,109453,17441],{"class":900},[460,109455,3986],{"class":466},[460,109457,2421],{"class":900},[460,109459,3986],{"class":466},[460,109461,17490],{"class":900},[460,109463,109464],{"class":466},"]])\n",[460,109466,109467,109469,109471,109473],{"class":462,"line":476},[460,109468,2756],{"class":466},[460,109470,781],{"class":887},[460,109472,2110],{"class":900},[460,109474,109475],{"class":942},"#结果是一个由True,False组成的数组\n",[460,109477,109478,109481,109483,109485,109487],{"class":462,"line":482},[460,109479,109480],{"class":466},"a[a",[460,109482,781],{"class":887},[460,109484,2110],{"class":900},[460,109486,17649],{"class":466},[460,109488,109489],{"class":942},"#小于20的元素会存到这个数组中\n",[460,109491,109492],{"class":462,"line":488},[460,109493,108057],{"class":942},[460,109495,109496],{"class":462,"line":494},[460,109497,109498],{"class":942},"#array([ 1,  2,  3, 11, 12, 13])\n",[1944,109500,109501],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}",{"title":32,"searchDepth":476,"depth":476,"links":109503},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch15",{"title":109405,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch15-比较掩码","V-_h5mng53PyRw-HZ8Pqcf_eugrdn6nQafLIp3MtxIQ",{"id":109510,"title":109511,"body":109512,"description":16682,"extension":16683,"meta":109604,"navigation":521,"path":109605,"seo":109606,"stem":109607,"__hash__":109608},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch16-魔法命令time.md","16.魔法命令time",{"type":7,"value":109513,"toc":109602},[109514,109517,109520,109523,109526,109529,109594,109599],[10,109515,109511],{"id":109516},"_16魔法命令time",[14,109518,109519],{},"魔法命令是ipython提供特殊命令，能实现一些特殊功能，比如统计时间(time\u002Ftimeit)和占用内存(memit\u002Fmprun)等功能,魔法命令有种形式：",[14,109521,109522],{},"%:行模式",[14,109524,109525],{},"%%:单元格模式",[14,109527,109528],{},"IPython 是一个“更强大、更智能”的 Python 交互式命令行工具，比你平时在终端运行的 python 要聪明得多。",[451,109530,109532],{"className":46787,"code":109531,"language":46789,"meta":32,"style":32},"#程序执行时间\nimport time \n#获取时间\nstart=time.time()\ntime.sleep(0.4)#让程序暂停执行 0.4 秒（即 400 毫秒）再继续运行\n#获取时间\nend=time.time()\nend-start\n",[457,109533,109534,109539,109546,109551,109560,109573,109577,109585],{"__ignoreMap":32},[460,109535,109536],{"class":462,"line":463},[460,109537,109538],{"class":942},"#程序执行时间\n",[460,109540,109541,109543],{"class":462,"line":476},[460,109542,46801],{"class":887},[460,109544,109545],{"class":466}," time \n",[460,109547,109548],{"class":462,"line":482},[460,109549,109550],{"class":942},"#获取时间\n",[460,109552,109553,109556,109558],{"class":462,"line":488},[460,109554,109555],{"class":466},"start",[460,109557,894],{"class":887},[460,109559,48823],{"class":466},[460,109561,109562,109565,109568,109570],{"class":462,"line":494},[460,109563,109564],{"class":466},"time.sleep(",[460,109566,109567],{"class":900},"0.4",[460,109569,8411],{"class":466},[460,109571,109572],{"class":942},"#让程序暂停执行 0.4 秒（即 400 毫秒）再继续运行\n",[460,109574,109575],{"class":462,"line":500},[460,109576,109550],{"class":942},[460,109578,109579,109581,109583],{"class":462,"line":506},[460,109580,62105],{"class":466},[460,109582,894],{"class":887},[460,109584,48823],{"class":466},[460,109586,109587,109589,109591],{"class":462,"line":512},[460,109588,62105],{"class":466},[460,109590,17259],{"class":887},[460,109592,109593],{"class":466},"start\n",[14,109595,109596],{},[30,109597],{"alt":32,"src":109598},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-039.png",[1944,109600,109601],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":32,"searchDepth":476,"depth":476,"links":109603},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch16-time",{"title":109511,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch16-魔法命令time","sXkJphYISGOvSIO4DBYVj2ay2H8EAPXBtiKncmz3UYg",{"id":109610,"title":109611,"body":109612,"description":16682,"extension":16683,"meta":109647,"navigation":521,"path":109648,"seo":109649,"stem":109650,"__hash__":109651},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch17-魔法命令timeit.md","17.魔法命令timeit",{"type":7,"value":109613,"toc":109645},[109614,109617,109620,109623,109626,109629,109632,109635,109640],[10,109615,109611],{"id":109616},"_17魔法命令timeit",[14,109618,109619],{},"timeit可以循环执行被统计语句，得到平均执行时间，支持行模式和单元格模式",[14,109621,109622],{},"timeit命令参数，-n指定每轮测试次数，-r指定测试轮数(默认为7)",[14,109624,109625],{},"单元格模式：",[14,109627,109628],{},"第一行语句(与timeit同一行语句)为初始化语句，作用为后续代码中变量提供初始化功能",[14,109630,109631],{},"初始化语句执行次数由轮数来决定",[14,109633,109634],{},"初始化语句每轮测试只执行一次，且不参与计时。第二行至整个单元格末尾语句会执行相应次数，并参与计时",[14,109636,109637],{},[30,109638],{"alt":32,"src":109639},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-040.png",[14,109641,109642],{},[30,109643],{"alt":32,"src":109644},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-041.png",{"title":32,"searchDepth":476,"depth":476,"links":109646},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch17-timeit",{"title":109611,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch17-魔法命令timeit","pW8ECg15-MLllhus9EYlvtlq7IM7eh8dhh-Da8iot-E",{"id":109653,"title":109654,"body":109655,"description":16682,"extension":16683,"meta":109673,"navigation":521,"path":109674,"seo":109675,"stem":109676,"__hash__":109677},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch18-魔法命令writefile和run.md","18.魔法命令writefile和run",{"type":7,"value":109656,"toc":109671},[109657,109660,109663,109666],[10,109658,109654],{"id":109659},"_18魔法命令writefile和run",[14,109661,109662],{},"writefile将单元格内容写入到文件中。如果文件不存在则创建，如果文件存在，则覆盖文件。如果指定-a参数，则追加内容，不覆盖",[14,109664,109665],{},"run运行外部python文件，运行结束后，外部文件中定义的变量得到保留",[14,109667,109668],{},[30,109669],{"alt":32,"src":109670},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-042.png",{"title":32,"searchDepth":476,"depth":476,"links":109672},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch18-writefilerun",{"title":109654,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch18-魔法命令writefile和run","d1MzkGQ-Ew6zFK9h2luqGJC1C8knZuKt2r-JshvcU5w",{"id":109679,"title":109680,"body":109681,"description":16682,"extension":16683,"meta":109734,"navigation":521,"path":109735,"seo":109736,"stem":109737,"__hash__":109738},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch19-魔法命令memit.md","19.魔法命令memit",{"type":7,"value":109682,"toc":109732},[109683,109686,109689,109691,109694,109697,109702,109705,109708,109711,109714,109717,109720,109723,109726,109729],[10,109684,109680],{"id":109685},"_19魔法命令memit",[14,109687,109688],{},"memit：用于分析语句内存使用情况，memit支持行模式与单元格模式。单元格模式下，初始化语句不会参与计算内存。第二行至整个单元格末尾会参与计算内存",[14,109690,41012],{},[14,109692,109693],{},"memit不是Ipython的内置，需要安装memory_profiler模块(pip install memory_profiler)",[14,109695,109696],{},"安装后，需要通过%load_ext memory_profiler载入，才能使用",[14,109698,109699],{},[30,109700],{"alt":32,"src":109701},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-043.png",[14,109703,109704],{},"补充：",[14,109706,109707],{},"Python 3.12+ 版本已经完全移除了 distutils 模块，而许多工具链（包括 IPython 的旧版本）仍依赖它",[14,109709,109710],{},"在 Python 3.10+ 版本中，distutils 库已被弃用，并在 Python 3.12 中完全移除。在加载 memory_profiler 扩展时，因为 IPython 的旧版本依赖 distutils,当前python版本太高，所以如果不升级升级 IPython 和依赖库或者降python版本的话会报错",[14,109712,109713],{},"解决方法：",[14,109715,109716],{},"1.cmd",[14,109718,109719],{},"2.依次输入以下代码：",[14,109721,109722],{},"#升级 IPython 到兼容 Python 3.12+ 的版本",[14,109724,109725],{},"pip install --upgrade ipython",[14,109727,109728],{},"#升级 memory_profiler 和 setuptools",[14,109730,109731],{},"pip install --upgrade memory_profiler setuptools",{"title":32,"searchDepth":476,"depth":476,"links":109733},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch19-memit",{"title":109680,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch19-魔法命令memit","RR91kMGRr4TrWwPmp50vrP41mF4J7yHdo92EdcUVh2s",{"id":109740,"title":109741,"body":109742,"description":16682,"extension":16683,"meta":111388,"navigation":521,"path":111389,"seo":111390,"stem":111391,"__hash__":111392},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch2-创建数组.md","2.创建数组",{"type":7,"value":109743,"toc":111358},[109744,109747,109751,109755,109816,109819,109824,109828,109833,109838,109843,109848,109851,109856,109860,109864,109897,109900,109903,109906,109958,109961,109997,110000,110042,110046,110067,110069,110106,110108,110113,110115,110120,110124,110127,110155,110159,110163,110216,110220,110312,110316,110320,110323,110328,110332,110357,110362,110366,110369,110372,110375,110378,110381,110384,110387,110399,110403,110407,110410,110442,110445,110468,110471,110497,110500,110526,110529,110563,110566,110628,110632,110635,110639,110642,110668,110671,110674,110679,110682,110751,110753,110758,110819,110822,110833,110839,110844,110848,110851,110864,110868,110883,110885,110908,110910,110936,110939,110942,110945,110993,110995,111000,111004,111008,111035,111039,111066,111069,111074,111079,111169,111173,111231,111236,111239,111242,111284,111288,111344,111349,111352,111355],[10,109745,109741],{"id":109746},"_2创建数组",[18,109748,109750],{"id":109749},"_21-array函数创建数组","2.1 array()函数创建数组",[23,109752,109754],{"id":109753},"_221-函数语句","2.2.1 函数语句",[451,109756,109758],{"className":46787,"code":109757,"language":46789,"meta":32,"style":32},"numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)\n",[457,109759,109760],{"__ignoreMap":32},[460,109761,109762,109765,109768,109770,109772,109774,109776,109778,109781,109783,109786,109788,109791,109793,109795,109797,109800,109802,109805,109807,109810,109812,109814],{"class":462,"line":463},[460,109763,109764],{"class":466},"numpy.array(",[460,109766,109767],{"class":900},"object",[460,109769,904],{"class":466},[460,109771,107993],{"class":3380},[460,109773,2943],{"class":887},[460,109775,55238],{"class":900},[460,109777,904],{"class":466},[460,109779,109780],{"class":3380},"copy",[460,109782,2943],{"class":887},[460,109784,109785],{"class":900}," True",[460,109787,904],{"class":466},[460,109789,109790],{"class":3380},"order",[460,109792,2943],{"class":887},[460,109794,55238],{"class":900},[460,109796,904],{"class":466},[460,109798,109799],{"class":3380},"subok",[460,109801,2943],{"class":887},[460,109803,109804],{"class":900}," False",[460,109806,904],{"class":466},[460,109808,109809],{"class":3380},"ndmin",[460,109811,2943],{"class":887},[460,109813,2224],{"class":900},[460,109815,3754],{"class":466},[14,109817,109818],{},"参数：",[14,109820,109821],{},[30,109822],{"alt":32,"src":109823},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-001.png",[23,109825,109827],{"id":109826},"_222-实例","2.2.2 实例",[14,109829,109830],{},[30,109831],{"alt":32,"src":109832},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-002.png",[14,109834,109835],{},[30,109836],{"alt":32,"src":109837},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-003.png",[14,109839,109840],{},[30,109841],{"alt":32,"src":109842},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-004.png",[14,109844,109845],{},[30,109846],{"alt":32,"src":109847},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-005.png",[14,109849,109850],{},"在使用admin属性指定维度时，如果是ndim=3，表示创建一个三维的数组；如果ndim=4，表示创建了一个四维的数组，上述结果就变为：",[14,109852,109853],{},[30,109854],{"alt":32,"src":109855},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-006.png",[18,109857,109859],{"id":109858},"_22-随机数创建数组","2.2 随机数创建数组",[23,109861,109863],{"id":109862},"_221-random语句","2.2.1 random语句",[451,109865,109867],{"className":46787,"code":109866,"language":46789,"meta":32,"style":32},"#random.random()\n#确定随机种子,就是每次运行结果是相同的\nnp.random.seed(0)\nnp.random.random()\n#生成一个随机的数目\n",[457,109868,109869,109874,109879,109887,109892],{"__ignoreMap":32},[460,109870,109871],{"class":462,"line":463},[460,109872,109873],{"class":942},"#random.random()\n",[460,109875,109876],{"class":462,"line":476},[460,109877,109878],{"class":942},"#确定随机种子,就是每次运行结果是相同的\n",[460,109880,109881,109883,109885],{"class":462,"line":482},[460,109882,109100],{"class":466},[460,109884,936],{"class":900},[460,109886,3754],{"class":466},[460,109888,109889],{"class":462,"line":488},[460,109890,109891],{"class":466},"np.random.random()\n",[460,109893,109894],{"class":462,"line":494},[460,109895,109896],{"class":942},"#生成一个随机的数目\n",[14,109898,109899],{},"使用seed()函数后就可以保证每次生成的随机数都是一样的，不会再变了",[14,109901,109902],{},"可以指定数组形状 size",[14,109904,109905],{},"①生成一维数组",[451,109907,109909],{"className":46787,"code":109908,"language":46789,"meta":32,"style":32},"#random.random(size())\nnp.random.random(size=5)\n#生成一位的五个元素\na=np.random.random(size=4)\na.shape #输出数组形状\n",[457,109910,109911,109916,109929,109934,109950],{"__ignoreMap":32},[460,109912,109913],{"class":462,"line":463},[460,109914,109915],{"class":942},"#random.random(size())\n",[460,109917,109918,109921,109923,109925,109927],{"class":462,"line":476},[460,109919,109920],{"class":466},"np.random.random(",[460,109922,47902],{"class":3380},[460,109924,894],{"class":887},[460,109926,7290],{"class":900},[460,109928,3754],{"class":466},[460,109930,109931],{"class":462,"line":482},[460,109932,109933],{"class":942},"#生成一位的五个元素\n",[460,109935,109936,109938,109940,109942,109944,109946,109948],{"class":462,"line":488},[460,109937,2756],{"class":466},[460,109939,894],{"class":887},[460,109941,109920],{"class":466},[460,109943,47902],{"class":3380},[460,109945,894],{"class":887},[460,109947,918],{"class":900},[460,109949,3754],{"class":466},[460,109951,109952,109955],{"class":462,"line":494},[460,109953,109954],{"class":466},"a.shape ",[460,109956,109957],{"class":942},"#输出数组形状\n",[14,109959,109960],{},"②生成二维数组",[451,109962,109964],{"className":46787,"code":109963,"language":46789,"meta":32,"style":32},"#二维数组\naa=np.random.random(size=(4,5))\n#生成四行五列的数组\n",[457,109965,109966,109970,109992],{"__ignoreMap":32},[460,109967,109968],{"class":462,"line":463},[460,109969,107794],{"class":942},[460,109971,109972,109974,109976,109978,109980,109982,109984,109986,109988,109990],{"class":462,"line":476},[460,109973,107799],{"class":466},[460,109975,894],{"class":887},[460,109977,109920],{"class":466},[460,109979,47902],{"class":3380},[460,109981,894],{"class":887},[460,109983,2174],{"class":466},[460,109985,918],{"class":900},[460,109987,3986],{"class":466},[460,109989,7290],{"class":900},[460,109991,6311],{"class":466},[460,109993,109994],{"class":462,"line":482},[460,109995,109996],{"class":942},"#生成四行五列的数组\n",[14,109998,109999],{},"③生成三维数组",[451,110001,110003],{"className":46787,"code":110002,"language":46789,"meta":32,"style":32},"#三维数组\naaa=np.random.random(size=(2,3,4))\naaa.shape\n",[457,110004,110005,110010,110037],{"__ignoreMap":32},[460,110006,110007],{"class":462,"line":463},[460,110008,110009],{"class":942},"#三维数组\n",[460,110011,110012,110015,110017,110019,110021,110023,110025,110027,110029,110031,110033,110035],{"class":462,"line":476},[460,110013,110014],{"class":466},"aaa",[460,110016,894],{"class":887},[460,110018,109920],{"class":466},[460,110020,47902],{"class":3380},[460,110022,894],{"class":887},[460,110024,2174],{"class":466},[460,110026,907],{"class":900},[460,110028,3986],{"class":466},[460,110030,913],{"class":900},[460,110032,3986],{"class":466},[460,110034,918],{"class":900},[460,110036,6311],{"class":466},[460,110038,110039],{"class":462,"line":482},[460,110040,110041],{"class":466},"aaa.shape\n",[23,110043,110045],{"id":110044},"_222-randint语句","2.2.2 randint语句",[451,110047,110049],{"className":46787,"code":110048,"language":46789,"meta":32,"style":32},"#生成随机的整数 random.randint(low,high,size)\nnp.random.randint(5) #0~5中的随机一个数\n",[457,110050,110051,110056],{"__ignoreMap":32},[460,110052,110053],{"class":462,"line":463},[460,110054,110055],{"class":942},"#生成随机的整数 random.randint(low,high,size)\n",[460,110057,110058,110060,110062,110064],{"class":462,"line":476},[460,110059,107607],{"class":466},[460,110061,7290],{"class":900},[460,110063,8296],{"class":466},[460,110065,110066],{"class":942},"#0~5中的随机一个数\n",[14,110068,109905],{},[451,110070,110072],{"className":46787,"code":110071,"language":46789,"meta":32,"style":32},"#一维\nnp.random.randint(1,11,size=(10))\n#运行结果：array([4, 5, 5, 9, 5, 4, 8, 6, 6, 1], dtype=int32)\n",[457,110073,110074,110079,110101],{"__ignoreMap":32},[460,110075,110076],{"class":462,"line":463},[460,110077,110078],{"class":942},"#一维\n",[460,110080,110081,110083,110085,110087,110089,110091,110093,110095,110097,110099],{"class":462,"line":476},[460,110082,107607],{"class":466},[460,110084,901],{"class":900},[460,110086,3986],{"class":466},[460,110088,12812],{"class":900},[460,110090,3986],{"class":466},[460,110092,47902],{"class":3380},[460,110094,894],{"class":887},[460,110096,2174],{"class":466},[460,110098,2096],{"class":900},[460,110100,6311],{"class":466},[460,110102,110103],{"class":462,"line":482},[460,110104,110105],{"class":942},"#运行结果：array([4, 5, 5, 9, 5, 4, 8, 6, 6, 1], dtype=int32)\n",[14,110107,109960],{},[14,110109,110110],{},[30,110111],{"alt":32,"src":110112},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-007.png",[14,110114,109999],{},[14,110116,110117],{},[30,110118],{"alt":32,"src":110119},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-008.png",[23,110121,110123],{"id":110122},"_222-rand语句","2.2.2 rand语句",[14,110125,110126],{},"Numpy 的函数，生成均匀分布的随机数（0-1）",[451,110128,110130],{"className":46787,"code":110129,"language":46789,"meta":32,"style":32},"np.random.rand(100,10)\n#第一个参数100：行数，表示有100个样本\n#第二个参数10：列数，表示每个样本有10个值（例如分类标签）\n",[457,110131,110132,110145,110150],{"__ignoreMap":32},[460,110133,110134,110137,110139,110141,110143],{"class":462,"line":463},[460,110135,110136],{"class":466},"np.random.rand(",[460,110138,2325],{"class":900},[460,110140,3986],{"class":466},[460,110142,2096],{"class":900},[460,110144,3754],{"class":466},[460,110146,110147],{"class":462,"line":476},[460,110148,110149],{"class":942},"#第一个参数100：行数，表示有100个样本\n",[460,110151,110152],{"class":462,"line":482},[460,110153,110154],{"class":942},"#第二个参数10：列数，表示每个样本有10个值（例如分类标签）\n",[18,110156,110158],{"id":110157},"_23-arange创建数组","2.3 arange()创建数组",[23,110160,110162],{"id":110161},"_231-函数语句","2.3.1 函数语句",[451,110164,110166],{"className":46787,"code":110165,"language":46789,"meta":32,"style":32},"numpy.arange([start,] stop[, step], dtype=None)\n#参数\n\"\"\"\nstart:起始值，可选，默认从 0 开始。\nstop:结束值（不包含该值）。\nstep:步长，可选，默认是 1。可以为浮点数。\ndtype:指定返回数组的数据类型（如 int32、float64 等），默认自动推断。\n\"\"\"\n",[457,110167,110168,110182,110187,110192,110197,110202,110207,110212],{"__ignoreMap":32},[460,110169,110170,110173,110175,110177,110180],{"class":462,"line":463},[460,110171,110172],{"class":466},"numpy.arange([start,] stop[, step], ",[460,110174,107993],{"class":3380},[460,110176,894],{"class":887},[460,110178,110179],{"class":900},"None",[460,110181,3754],{"class":466},[460,110183,110184],{"class":462,"line":476},[460,110185,110186],{"class":942},"#参数\n",[460,110188,110189],{"class":462,"line":482},[460,110190,110191],{"class":1353},"\"\"\"\n",[460,110193,110194],{"class":462,"line":488},[460,110195,110196],{"class":1353},"start:起始值，可选，默认从 0 开始。\n",[460,110198,110199],{"class":462,"line":494},[460,110200,110201],{"class":1353},"stop:结束值（不包含该值）。\n",[460,110203,110204],{"class":462,"line":500},[460,110205,110206],{"class":1353},"step:步长，可选，默认是 1。可以为浮点数。\n",[460,110208,110209],{"class":462,"line":506},[460,110210,110211],{"class":1353},"dtype:指定返回数组的数据类型（如 int32、float64 等），默认自动推断。\n",[460,110213,110214],{"class":462,"line":512},[460,110215,110191],{"class":1353},[23,110217,110219],{"id":110218},"_232-实例","2.3.2 实例",[451,110221,110223],{"className":46787,"code":110222,"language":46789,"meta":32,"style":32},"#创建一维数组\nnp.arange(1,21,1,dtype=int)\n#输出结果：\n#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,18, 19, 20])\n#创建二维数组\nnp.array([np.arange(1,4),np.arange(4,7)])\n#结果：\n\"\"\"\narray([[1, 2, 3],\n       [4, 5, 6]])\n\"\"\"\n",[457,110224,110225,110229,110253,110258,110263,110267,110290,110294,110298,110303,110308],{"__ignoreMap":32},[460,110226,110227],{"class":462,"line":463},[460,110228,107598],{"class":942},[460,110230,110231,110233,110235,110237,110239,110241,110243,110245,110247,110249,110251],{"class":462,"line":476},[460,110232,107495],{"class":466},[460,110234,901],{"class":900},[460,110236,3986],{"class":466},[460,110238,17441],{"class":900},[460,110240,3986],{"class":466},[460,110242,901],{"class":900},[460,110244,3986],{"class":466},[460,110246,107993],{"class":3380},[460,110248,894],{"class":887},[460,110250,16759],{"class":900},[460,110252,3754],{"class":466},[460,110254,110255],{"class":462,"line":482},[460,110256,110257],{"class":942},"#输出结果：\n",[460,110259,110260],{"class":462,"line":488},[460,110261,110262],{"class":942},"#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,18, 19, 20])\n",[460,110264,110265],{"class":462,"line":494},[460,110266,108440],{"class":942},[460,110268,110269,110272,110274,110276,110278,110281,110283,110285,110287],{"class":462,"line":500},[460,110270,110271],{"class":466},"np.array([np.arange(",[460,110273,901],{"class":900},[460,110275,3986],{"class":466},[460,110277,918],{"class":900},[460,110279,110280],{"class":466},"),np.arange(",[460,110282,918],{"class":900},[460,110284,3986],{"class":466},[460,110286,6149],{"class":900},[460,110288,110289],{"class":466},")])\n",[460,110291,110292],{"class":462,"line":506},[460,110293,108057],{"class":942},[460,110295,110296],{"class":462,"line":512},[460,110297,110191],{"class":1353},[460,110299,110300],{"class":462,"line":518},[460,110301,110302],{"class":1353},"array([[1, 2, 3],\n",[460,110304,110305],{"class":462,"line":525},[460,110306,110307],{"class":1353},"       [4, 5, 6]])\n",[460,110309,110310],{"class":462,"line":531},[460,110311,110191],{"class":1353},[18,110313,110315],{"id":110314},"_24-生态分布","2.4 生态分布",[23,110317,110319],{"id":110318},"_241-标准正态分布","2.4.1 标准正态分布",[14,110321,110322],{},"randn()函数返回一个或一组数据，具有标准正态分布（期望为0，方差为1）",[14,110324,110325],{},[30,110326],{"alt":32,"src":110327},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-009.png",[23,110329,110331],{"id":110330},"_242-常规正态分布","2.4.2 常规正态分布",[451,110333,110335],{"className":46787,"code":110334,"language":46789,"meta":32,"style":32},"random.normal(loc,scale,size)也可以生成正态分布\n#loc:期望\n#scale:方差\n#size:用于确定是几维的数列\n",[457,110336,110337,110342,110347,110352],{"__ignoreMap":32},[460,110338,110339],{"class":462,"line":463},[460,110340,110341],{"class":466},"random.normal(loc,scale,size)也可以生成正态分布\n",[460,110343,110344],{"class":462,"line":476},[460,110345,110346],{"class":942},"#loc:期望\n",[460,110348,110349],{"class":462,"line":482},[460,110350,110351],{"class":942},"#scale:方差\n",[460,110353,110354],{"class":462,"line":488},[460,110355,110356],{"class":942},"#size:用于确定是几维的数列\n",[14,110358,110359],{},[30,110360],{"alt":32,"src":110361},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-010.png",[18,110363,110365],{"id":110364},"_25-ndarry属性数组属性","2.5 ndarry属性（数组属性）",[14,110367,110368],{},"ndim:秩，维度个数",[14,110370,110371],{},"size:数组元素的个数",[14,110373,110374],{},"shape:数组的形状",[14,110376,110377],{},"dtype:数组元素的类型",[14,110379,110380],{},"itemsize:每个元素的大小，以字节为单位，一个字节8位 (结果其实就是数组的元素类型结果除8)",[14,110382,110383],{},"他们都是属性，通过数组.属性的形式来确定",[14,110385,110386],{},"如果需要输出多个可以通过以下方式：",[451,110388,110390],{"className":46787,"code":110389,"language":46789,"meta":32,"style":32},"print(a.dtype,aa.dtype,aaa.dtype,aaa.itemsize)\n",[457,110391,110392],{"__ignoreMap":32},[460,110393,110394,110396],{"class":462,"line":463},[460,110395,46824],{"class":900},[460,110397,110398],{"class":466},"(a.dtype,aa.dtype,aaa.dtype,aaa.itemsize)\n",[18,110400,110402],{"id":110401},"_26-其他方式创建数组","2.6 其他方式创建数组",[23,110404,110406],{"id":110405},"_261-zeros创建数组","2.6.1 zeros()创建数组",[14,110408,110409],{},"①创建一维数组",[451,110411,110413],{"className":46787,"code":110412,"language":46789,"meta":32,"style":32},"np.zeros(10)\n\"\"\"\n输出结果：\narray([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n\"\"\"\n",[457,110414,110415,110424,110428,110433,110438],{"__ignoreMap":32},[460,110416,110417,110420,110422],{"class":462,"line":463},[460,110418,110419],{"class":466},"np.zeros(",[460,110421,2096],{"class":900},[460,110423,3754],{"class":466},[460,110425,110426],{"class":462,"line":476},[460,110427,110191],{"class":1353},[460,110429,110430],{"class":462,"line":482},[460,110431,110432],{"class":1353},"输出结果：\n",[460,110434,110435],{"class":462,"line":488},[460,110436,110437],{"class":1353},"array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n",[460,110439,110440],{"class":462,"line":494},[460,110441,110191],{"class":1353},[14,110443,110444],{},"上方代码等价于：",[451,110446,110448],{"className":46787,"code":110447,"language":46789,"meta":32,"style":32},"np.zeros(shape=(10))#创建10个元素的0数组\n",[457,110449,110450],{"__ignoreMap":32},[460,110451,110452,110454,110457,110459,110461,110463,110465],{"class":462,"line":463},[460,110453,110419],{"class":466},[460,110455,110456],{"class":3380},"shape",[460,110458,894],{"class":887},[460,110460,2174],{"class":466},[460,110462,2096],{"class":900},[460,110464,6508],{"class":466},[460,110466,110467],{"class":942},"#创建10个元素的0数组\n",[14,110469,110470],{},"也可以指定类型",[451,110472,110474],{"className":46787,"code":110473,"language":46789,"meta":32,"style":32},"#指定类型\nnp.zeros(5,dtype=int)\n",[457,110475,110476,110481],{"__ignoreMap":32},[460,110477,110478],{"class":462,"line":463},[460,110479,110480],{"class":942},"#指定类型\n",[460,110482,110483,110485,110487,110489,110491,110493,110495],{"class":462,"line":476},[460,110484,110419],{"class":466},[460,110486,7290],{"class":900},[460,110488,3986],{"class":466},[460,110490,107993],{"class":3380},[460,110492,894],{"class":887},[460,110494,16759],{"class":900},[460,110496,3754],{"class":466},[14,110498,110499],{},"②创建二维数组",[451,110501,110503],{"className":46787,"code":110502,"language":46789,"meta":32,"style":32},"np.zeros((3,4),dtype=int)\n",[457,110504,110505],{"__ignoreMap":32},[460,110506,110507,110510,110512,110514,110516,110518,110520,110522,110524],{"class":462,"line":463},[460,110508,110509],{"class":466},"np.zeros((",[460,110511,913],{"class":900},[460,110513,3986],{"class":466},[460,110515,918],{"class":900},[460,110517,58560],{"class":466},[460,110519,107993],{"class":3380},[460,110521,894],{"class":887},[460,110523,16759],{"class":900},[460,110525,3754],{"class":466},[14,110527,110528],{},"③创建三维数组",[451,110530,110532],{"className":46787,"code":110531,"language":46789,"meta":32,"style":32},"#创建三维数组\nnp.zeros((3,4,5),dtype=int)\n",[457,110533,110534,110539],{"__ignoreMap":32},[460,110535,110536],{"class":462,"line":463},[460,110537,110538],{"class":942},"#创建三维数组\n",[460,110540,110541,110543,110545,110547,110549,110551,110553,110555,110557,110559,110561],{"class":462,"line":476},[460,110542,110509],{"class":466},[460,110544,913],{"class":900},[460,110546,3986],{"class":466},[460,110548,918],{"class":900},[460,110550,3986],{"class":466},[460,110552,7290],{"class":900},[460,110554,58560],{"class":466},[460,110556,107993],{"class":3380},[460,110558,894],{"class":887},[460,110560,16759],{"class":900},[460,110562,3754],{"class":466},[14,110564,110565],{},"④zeros_like:根据传入的数组形状创建全为0的数组",[451,110567,110569],{"className":46787,"code":110568,"language":46789,"meta":32,"style":32},"#使用zeros_like将创建的一维数组变成全0的数组\na=np.arange(4)#这个得到的结果：一维数组0，1，2，3\nnp.zeros_like(a)\n#使用zeros_like将创建的二维数组变成全0的数组\naa=np.random.random(size=(4,5))\nnp.zeros_like(aa)\n",[457,110570,110571,110576,110591,110596,110601,110623],{"__ignoreMap":32},[460,110572,110573],{"class":462,"line":463},[460,110574,110575],{"class":942},"#使用zeros_like将创建的一维数组变成全0的数组\n",[460,110577,110578,110580,110582,110584,110586,110588],{"class":462,"line":476},[460,110579,2756],{"class":466},[460,110581,894],{"class":887},[460,110583,107495],{"class":466},[460,110585,918],{"class":900},[460,110587,8411],{"class":466},[460,110589,110590],{"class":942},"#这个得到的结果：一维数组0，1，2，3\n",[460,110592,110593],{"class":462,"line":482},[460,110594,110595],{"class":466},"np.zeros_like(a)\n",[460,110597,110598],{"class":462,"line":488},[460,110599,110600],{"class":942},"#使用zeros_like将创建的二维数组变成全0的数组\n",[460,110602,110603,110605,110607,110609,110611,110613,110615,110617,110619,110621],{"class":462,"line":494},[460,110604,107799],{"class":466},[460,110606,894],{"class":887},[460,110608,109920],{"class":466},[460,110610,47902],{"class":3380},[460,110612,894],{"class":887},[460,110614,2174],{"class":466},[460,110616,918],{"class":900},[460,110618,3986],{"class":466},[460,110620,7290],{"class":900},[460,110622,6311],{"class":466},[460,110624,110625],{"class":462,"line":500},[460,110626,110627],{"class":466},"np.zeros_like(aa)\n",[23,110629,110631],{"id":110630},"_262-ones创建数组","2.6.2 ones()创建数组",[14,110633,110634],{},"与zeros的用法一模一样，两者如果不指定元素类型的话，都默认为浮点型",[23,110636,110638],{"id":110637},"_263-empty创建数组","2.6.3 empty()创建数组",[14,110640,110641],{},"①empty()用法",[451,110643,110645],{"className":46787,"code":110644,"language":46789,"meta":32,"style":32},"numpy.empty(shape,dtype=float,order='c')\n",[457,110646,110647],{"__ignoreMap":32},[460,110648,110649,110652,110654,110656,110658,110660,110662,110664,110666],{"class":462,"line":463},[460,110650,110651],{"class":466},"numpy.empty(shape,",[460,110653,107993],{"class":3380},[460,110655,894],{"class":887},[460,110657,16793],{"class":900},[460,110659,3986],{"class":466},[460,110661,109790],{"class":3380},[460,110663,894],{"class":887},[460,110665,92142],{"class":1353},[460,110667,3754],{"class":466},[14,110669,110670],{},"创建的一个指定形状(shape)、数据类型(dtype)且未初始化的数组，里边的元素的值是之前内存的值",[14,110672,110673],{},"order:有\"C\"和\"F\"两个选项,分别代表，行优先和列优先，在计算机内存中的存储元素的顺序。",[14,110675,110676],{},[30,110677],{"alt":32,"src":110678},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-011.png",[14,110680,110681],{},"②empty()用法",[451,110683,110685],{"className":46787,"code":110684,"language":46789,"meta":32,"style":32},"y=np.empty(10,dtype=int)\nx=np.arange(5)\nnp.add(2,x,out=y[:5])\n#指的是x数列中的每个元素都加2，然后再out存到y中，是存放到的是前五个\ny\n",[457,110686,110687,110708,110720,110741,110746],{"__ignoreMap":32},[460,110688,110689,110691,110693,110696,110698,110700,110702,110704,110706],{"class":462,"line":463},[460,110690,13192],{"class":466},[460,110692,894],{"class":887},[460,110694,110695],{"class":466},"np.empty(",[460,110697,2096],{"class":900},[460,110699,3986],{"class":466},[460,110701,107993],{"class":3380},[460,110703,894],{"class":887},[460,110705,16759],{"class":900},[460,110707,3754],{"class":466},[460,110709,110710,110712,110714,110716,110718],{"class":462,"line":476},[460,110711,13187],{"class":466},[460,110713,894],{"class":887},[460,110715,107495],{"class":466},[460,110717,7290],{"class":900},[460,110719,3754],{"class":466},[460,110721,110722,110725,110727,110730,110732,110734,110737,110739],{"class":462,"line":482},[460,110723,110724],{"class":466},"np.add(",[460,110726,907],{"class":900},[460,110728,110729],{"class":466},",x,",[460,110731,107547],{"class":3380},[460,110733,894],{"class":887},[460,110735,110736],{"class":466},"y[:",[460,110738,7290],{"class":900},[460,110740,13249],{"class":466},[460,110742,110743],{"class":462,"line":488},[460,110744,110745],{"class":942},"#指的是x数列中的每个元素都加2，然后再out存到y中，是存放到的是前五个\n",[460,110747,110748],{"class":462,"line":494},[460,110749,110750],{"class":466},"y\n",[14,110752,27976],{},[14,110754,110755],{},[30,110756],{"alt":32,"src":110757},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-012.png",[451,110759,110761],{"className":46787,"code":110760,"language":46789,"meta":32,"style":32},"x=np.arange(1,6)\ny=np.empty(5,dtype=int)\nnp.add(x,2,out=y)\n#将数列x中的每个元素都加2，然后放到y数列中去\n",[457,110762,110763,110779,110799,110814],{"__ignoreMap":32},[460,110764,110765,110767,110769,110771,110773,110775,110777],{"class":462,"line":463},[460,110766,13187],{"class":466},[460,110768,894],{"class":887},[460,110770,107495],{"class":466},[460,110772,901],{"class":900},[460,110774,3986],{"class":466},[460,110776,4064],{"class":900},[460,110778,3754],{"class":466},[460,110780,110781,110783,110785,110787,110789,110791,110793,110795,110797],{"class":462,"line":476},[460,110782,13192],{"class":466},[460,110784,894],{"class":887},[460,110786,110695],{"class":466},[460,110788,7290],{"class":900},[460,110790,3986],{"class":466},[460,110792,107993],{"class":3380},[460,110794,894],{"class":887},[460,110796,16759],{"class":900},[460,110798,3754],{"class":466},[460,110800,110801,110804,110806,110808,110810,110812],{"class":462,"line":482},[460,110802,110803],{"class":466},"np.add(x,",[460,110805,907],{"class":900},[460,110807,3986],{"class":466},[460,110809,107547],{"class":3380},[460,110811,894],{"class":887},[460,110813,107942],{"class":466},[460,110815,110816],{"class":462,"line":488},[460,110817,110818],{"class":942},"#将数列x中的每个元素都加2，然后放到y数列中去\n",[14,110820,110821],{},"③empty_like()",[14,110823,110824],{},[3944,110825,110826,110827,110832],{},"创建一个",[3944,110828,110829],{},[3944,110830,110831],{},"与给定数组形状和数据类型相同","，但内容未初始化的新数组。",[14,110834,110835,110838],{},[457,110836,110837],{},"np.empty_like()","不会清空内存中的原数据，它只是分配一块与原数组相同大小和类型的内存区域。",[14,110840,110841],{},[30,110842],{"alt":32,"src":110843},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-013.png",[23,110845,110847],{"id":110846},"_264-用法","2.6.4 ？？用法",[14,110849,110850],{},"当想查看一个函数的参数时，可以通过？？来实现",[451,110852,110854],{"className":46787,"code":110853,"language":46789,"meta":32,"style":32},"np.full??\n",[457,110855,110856],{"__ignoreMap":32},[460,110857,110858,110861],{"class":462,"line":463},[460,110859,110860],{"class":466},"np.full",[460,110862,110863],{"class":780},"??\n",[23,110865,110867],{"id":110866},"_265-full创建数组","2.6.5 full()创建数组",[451,110869,110871],{"className":46787,"code":110870,"language":46789,"meta":32,"style":32},"full(shape,fill_value)\n创建全为某个指定值的数组\n",[457,110872,110873,110878],{"__ignoreMap":32},[460,110874,110875],{"class":462,"line":463},[460,110876,110877],{"class":466},"full(shape,fill_value)\n",[460,110879,110880],{"class":462,"line":476},[460,110881,110882],{"class":466},"创建全为某个指定值的数组\n",[14,110884,109023],{},[451,110886,110888],{"className":46787,"code":110887,"language":46789,"meta":32,"style":32},"#创建一个一维数组,以20进行填充\nnp.full(10,20)\n",[457,110889,110890,110895],{"__ignoreMap":32},[460,110891,110892],{"class":462,"line":463},[460,110893,110894],{"class":942},"#创建一个一维数组,以20进行填充\n",[460,110896,110897,110900,110902,110904,110906],{"class":462,"line":476},[460,110898,110899],{"class":466},"np.full(",[460,110901,2096],{"class":900},[460,110903,3986],{"class":466},[460,110905,2110],{"class":900},[460,110907,3754],{"class":466},[14,110909,107784],{},[451,110911,110913],{"className":46787,"code":110912,"language":46789,"meta":32,"style":32},"#创建二维数组\nnp.full((3,5),11)\n",[457,110914,110915,110919],{"__ignoreMap":32},[460,110916,110917],{"class":462,"line":463},[460,110918,108440],{"class":942},[460,110920,110921,110924,110926,110928,110930,110932,110934],{"class":462,"line":476},[460,110922,110923],{"class":466},"np.full((",[460,110925,913],{"class":900},[460,110927,3986],{"class":466},[460,110929,7290],{"class":900},[460,110931,58560],{"class":466},[460,110933,12812],{"class":900},[460,110935,3754],{"class":466},[14,110937,110938],{},"③full_like用法",[14,110940,110941],{},"跟上边的zeros_like()和ones_like()的用法一模一样",[14,110943,110944],{},"这里是指定填充而已",[451,110946,110948],{"className":46787,"code":110947,"language":46789,"meta":32,"style":32},"#创建一个指定形状数组\na=np.arange(1,37).reshape(4,9)\n#进行指定填充\nnp.full_like(a,10)\n",[457,110949,110950,110955,110979,110984],{"__ignoreMap":32},[460,110951,110952],{"class":462,"line":463},[460,110953,110954],{"class":942},"#创建一个指定形状数组\n",[460,110956,110957,110959,110961,110963,110965,110967,110969,110971,110973,110975,110977],{"class":462,"line":476},[460,110958,2756],{"class":466},[460,110960,894],{"class":887},[460,110962,107495],{"class":466},[460,110964,901],{"class":900},[460,110966,3986],{"class":466},[460,110968,17064],{"class":900},[460,110970,107500],{"class":466},[460,110972,918],{"class":900},[460,110974,3986],{"class":466},[460,110976,17154],{"class":900},[460,110978,3754],{"class":466},[460,110980,110981],{"class":462,"line":482},[460,110982,110983],{"class":942},"#进行指定填充\n",[460,110985,110986,110989,110991],{"class":462,"line":488},[460,110987,110988],{"class":466},"np.full_like(a,",[460,110990,2096],{"class":900},[460,110992,3754],{"class":466},[14,110994,27976],{},[14,110996,110997],{},[30,110998],{"alt":32,"src":110999},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-014.png",[23,111001,111003],{"id":111002},"_266-创建单位矩阵","2.6.6 创建单位矩阵",[115,111005,111007],{"id":111006},"_2661-法1eye函数","2.6.6.1 法1：eye()函数",[451,111009,111011],{"className":46787,"code":111010,"language":46789,"meta":32,"style":32},"np.eye(4,dtype=int)\n#四行四列的单位矩阵，是二维的，并且里边的元素全为整型\n",[457,111012,111013,111030],{"__ignoreMap":32},[460,111014,111015,111018,111020,111022,111024,111026,111028],{"class":462,"line":463},[460,111016,111017],{"class":466},"np.eye(",[460,111019,918],{"class":900},[460,111021,3986],{"class":466},[460,111023,107993],{"class":3380},[460,111025,894],{"class":887},[460,111027,16759],{"class":900},[460,111029,3754],{"class":466},[460,111031,111032],{"class":462,"line":476},[460,111033,111034],{"class":942},"#四行四列的单位矩阵，是二维的，并且里边的元素全为整型\n",[115,111036,111038],{"id":111037},"_2662-法2identity","2.6.6.2 法2：identity()",[451,111040,111042],{"className":46787,"code":111041,"language":46789,"meta":32,"style":32},"#identity()\nnp.identity(5,dtype=int)\n",[457,111043,111044,111049],{"__ignoreMap":32},[460,111045,111046],{"class":462,"line":463},[460,111047,111048],{"class":942},"#identity()\n",[460,111050,111051,111054,111056,111058,111060,111062,111064],{"class":462,"line":476},[460,111052,111053],{"class":466},"np.identity(",[460,111055,7290],{"class":900},[460,111057,3986],{"class":466},[460,111059,107993],{"class":3380},[460,111061,894],{"class":887},[460,111063,16759],{"class":900},[460,111065,3754],{"class":466},[14,111067,111068],{},"两个函数是有区别的",[14,111070,111071],{},[30,111072],{"alt":32,"src":111073},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-015.png",[14,111075,111076],{},[30,111077],{"alt":32,"src":111078},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-016.png",[451,111080,111082],{"className":46787,"code":111081,"language":46789,"meta":32,"style":32},"# 创建一个 3 行 4 列的矩阵，对角线在第 0 条（默认）\nnp.eye(3, 4)\n# 输出:\n# [[1. 0. 0. 0.]\n#  [0. 1. 0. 0.]\n#  [0. 0. 1. 0.]]\n\n# 对角线向上偏移1\nnp.eye(3, 4, k=1)\n# 输出:\n# [[0. 1. 0. 0.]\n#  [0. 0. 1. 0.]\n#  [0. 0. 0. 1.]]\n\n",[457,111083,111084,111089,111101,111106,111111,111116,111121,111125,111130,111150,111154,111159,111164],{"__ignoreMap":32},[460,111085,111086],{"class":462,"line":463},[460,111087,111088],{"class":942},"# 创建一个 3 行 4 列的矩阵，对角线在第 0 条（默认）\n",[460,111090,111091,111093,111095,111097,111099],{"class":462,"line":476},[460,111092,111017],{"class":466},[460,111094,913],{"class":900},[460,111096,904],{"class":466},[460,111098,918],{"class":900},[460,111100,3754],{"class":466},[460,111102,111103],{"class":462,"line":482},[460,111104,111105],{"class":942},"# 输出:\n",[460,111107,111108],{"class":462,"line":488},[460,111109,111110],{"class":942},"# [[1. 0. 0. 0.]\n",[460,111112,111113],{"class":462,"line":494},[460,111114,111115],{"class":942},"#  [0. 1. 0. 0.]\n",[460,111117,111118],{"class":462,"line":500},[460,111119,111120],{"class":942},"#  [0. 0. 1. 0.]]\n",[460,111122,111123],{"class":462,"line":506},[460,111124,522],{"emptyLinePlaceholder":521},[460,111126,111127],{"class":462,"line":512},[460,111128,111129],{"class":942},"# 对角线向上偏移1\n",[460,111131,111132,111134,111136,111138,111140,111142,111144,111146,111148],{"class":462,"line":518},[460,111133,111017],{"class":466},[460,111135,913],{"class":900},[460,111137,904],{"class":466},[460,111139,918],{"class":900},[460,111141,904],{"class":466},[460,111143,17222],{"class":3380},[460,111145,894],{"class":887},[460,111147,901],{"class":900},[460,111149,3754],{"class":466},[460,111151,111152],{"class":462,"line":525},[460,111153,111105],{"class":942},[460,111155,111156],{"class":462,"line":531},[460,111157,111158],{"class":942},"# [[0. 1. 0. 0.]\n",[460,111160,111161],{"class":462,"line":537},[460,111162,111163],{"class":942},"#  [0. 0. 1. 0.]\n",[460,111165,111166],{"class":462,"line":543},[460,111167,111168],{"class":942},"#  [0. 0. 0. 1.]]\n",[23,111170,111172],{"id":111171},"_267-linspace创建等差数列","2.6.7 linspace创建等差数列",[451,111174,111176],{"className":46787,"code":111175,"language":46789,"meta":32,"style":32},"#linspace函数用于创建一个一维数组，数组是一个等差数列构成的，格式如下：\n\"\"\"\nnp.linspace(start,|stop,num=50,endpoint=True,retstep=False,dtype=None)\n参数介绍：\nstart：序列的起始值\nstop:序列的终止值，如果endpoint为True，该值包含数列中\nnum：要生长的等步长的样本数量，默认为50\nendpoint：该值为True时，数列中包含stop值，反之不包含，默认是True\nretstep：如果为True时，生长的数组中会显示间距，反之不显示\ndtype：ndarry的数据类型\n\"\"\"\n",[457,111177,111178,111183,111187,111192,111197,111202,111207,111212,111217,111222,111227],{"__ignoreMap":32},[460,111179,111180],{"class":462,"line":463},[460,111181,111182],{"class":942},"#linspace函数用于创建一个一维数组，数组是一个等差数列构成的，格式如下：\n",[460,111184,111185],{"class":462,"line":476},[460,111186,110191],{"class":1353},[460,111188,111189],{"class":462,"line":482},[460,111190,111191],{"class":1353},"np.linspace(start,|stop,num=50,endpoint=True,retstep=False,dtype=None)\n",[460,111193,111194],{"class":462,"line":488},[460,111195,111196],{"class":1353},"参数介绍：\n",[460,111198,111199],{"class":462,"line":494},[460,111200,111201],{"class":1353},"start：序列的起始值\n",[460,111203,111204],{"class":462,"line":500},[460,111205,111206],{"class":1353},"stop:序列的终止值，如果endpoint为True，该值包含数列中\n",[460,111208,111209],{"class":462,"line":506},[460,111210,111211],{"class":1353},"num：要生长的等步长的样本数量，默认为50\n",[460,111213,111214],{"class":462,"line":512},[460,111215,111216],{"class":1353},"endpoint：该值为True时，数列中包含stop值，反之不包含，默认是True\n",[460,111218,111219],{"class":462,"line":518},[460,111220,111221],{"class":1353},"retstep：如果为True时，生长的数组中会显示间距，反之不显示\n",[460,111223,111224],{"class":462,"line":525},[460,111225,111226],{"class":1353},"dtype：ndarry的数据类型\n",[460,111228,111229],{"class":462,"line":531},[460,111230,110191],{"class":1353},[14,111232,111233],{},[30,111234],{"alt":32,"src":111235},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-017.png",[14,111237,111238],{},"这里num=是可以省略的",[14,111240,111241],{},"也就是下方两行代码结果是一模一样的",[451,111243,111245],{"className":46787,"code":111244,"language":46789,"meta":32,"style":32},"np.linspace(1,5,5)\nnp.linspace(1,5,num=5)\n",[457,111246,111247,111264],{"__ignoreMap":32},[460,111248,111249,111252,111254,111256,111258,111260,111262],{"class":462,"line":463},[460,111250,111251],{"class":466},"np.linspace(",[460,111253,901],{"class":900},[460,111255,3986],{"class":466},[460,111257,7290],{"class":900},[460,111259,3986],{"class":466},[460,111261,7290],{"class":900},[460,111263,3754],{"class":466},[460,111265,111266,111268,111270,111272,111274,111276,111278,111280,111282],{"class":462,"line":476},[460,111267,111251],{"class":466},[460,111269,901],{"class":900},[460,111271,3986],{"class":466},[460,111273,7290],{"class":900},[460,111275,3986],{"class":466},[460,111277,18224],{"class":3380},[460,111279,894],{"class":887},[460,111281,7290],{"class":900},[460,111283,3754],{"class":466},[23,111285,111287],{"id":111286},"_268-logspace创建等比数列","2.6.8 logspace创建等比数列",[451,111289,111291],{"className":46787,"code":111290,"language":46789,"meta":32,"style":32},"#logspace函数用于创建一个等比数列，格式如下：\n\"\"\"\nnp.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)\n参数为：\nstart:序列的起始位置为：base**start\nstop：序列的终止值为：base**stop。如果endpoint为True，该值包含于数列\nnum：要生长的等步长的样本数量，默认为50\nendpoint：是否包含 stop 这个值，默认是 True\nbase：对数的底数，默认是 10（常见对数）\ndtype：ndarry的数据类型\n\"\"\"\n",[457,111292,111293,111298,111302,111307,111312,111317,111322,111326,111331,111336,111340],{"__ignoreMap":32},[460,111294,111295],{"class":462,"line":463},[460,111296,111297],{"class":942},"#logspace函数用于创建一个等比数列，格式如下：\n",[460,111299,111300],{"class":462,"line":476},[460,111301,110191],{"class":1353},[460,111303,111304],{"class":462,"line":482},[460,111305,111306],{"class":1353},"np.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)\n",[460,111308,111309],{"class":462,"line":488},[460,111310,111311],{"class":1353},"参数为：\n",[460,111313,111314],{"class":462,"line":494},[460,111315,111316],{"class":1353},"start:序列的起始位置为：base**start\n",[460,111318,111319],{"class":462,"line":500},[460,111320,111321],{"class":1353},"stop：序列的终止值为：base**stop。如果endpoint为True，该值包含于数列\n",[460,111323,111324],{"class":462,"line":506},[460,111325,111211],{"class":1353},[460,111327,111328],{"class":462,"line":512},[460,111329,111330],{"class":1353},"endpoint：是否包含 stop 这个值，默认是 True\n",[460,111332,111333],{"class":462,"line":518},[460,111334,111335],{"class":1353},"base：对数的底数，默认是 10（常见对数）\n",[460,111337,111338],{"class":462,"line":525},[460,111339,111226],{"class":1353},[460,111341,111342],{"class":462,"line":531},[460,111343,110191],{"class":1353},[14,111345,111346],{},[30,111347],{"alt":32,"src":111348},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-018.png",[14,111350,111351],{},"logspace()函数中的num参数也是可以不写num=的",[14,111353,111354],{},"endpoint是不可以省略的",[1944,111356,111357],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}",{"title":32,"searchDepth":476,"depth":476,"links":111359},[111360,111364,111369,111373,111377,111378],{"id":109749,"depth":476,"text":109750,"children":111361},[111362,111363],{"id":109753,"depth":482,"text":109754},{"id":109826,"depth":482,"text":109827},{"id":109858,"depth":476,"text":109859,"children":111365},[111366,111367,111368],{"id":109862,"depth":482,"text":109863},{"id":110044,"depth":482,"text":110045},{"id":110122,"depth":482,"text":110123},{"id":110157,"depth":476,"text":110158,"children":111370},[111371,111372],{"id":110161,"depth":482,"text":110162},{"id":110218,"depth":482,"text":110219},{"id":110314,"depth":476,"text":110315,"children":111374},[111375,111376],{"id":110318,"depth":482,"text":110319},{"id":110330,"depth":482,"text":110331},{"id":110364,"depth":476,"text":110365},{"id":110401,"depth":476,"text":110402,"children":111379},[111380,111381,111382,111383,111384,111385,111386,111387],{"id":110405,"depth":482,"text":110406},{"id":110630,"depth":482,"text":110631},{"id":110637,"depth":482,"text":110638},{"id":110846,"depth":482,"text":110847},{"id":110866,"depth":482,"text":110867},{"id":111002,"depth":482,"text":111003},{"id":111171,"depth":482,"text":111172},{"id":111286,"depth":482,"text":111287},{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch2",{"title":109741,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch2-创建数组","SNWxvUgIzXm5wtETKP1GjU_wdSkG_XaKQiBCRZRvxfw",{"id":111394,"title":111395,"body":111396,"description":16682,"extension":16683,"meta":111489,"navigation":521,"path":111490,"seo":111491,"stem":111492,"__hash__":111493},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch20-魔法命令mprun.md","20.魔法命令mprun",{"type":7,"value":111397,"toc":111487},[111398,111401,111404,111407,111410,111413,111416,111419,111422,111425,111428,111431,111433,111436,111439,111444,111447,111450,111484],[10,111399,111395],{"id":111400},"_20魔法命令mprun",[14,111402,111403],{},"逐行分析数据内存的使用情况",[14,111405,111406],{},"语法格式：",[14,111408,111409],{},"%mprun -f 模块名.函数名 模块名.函数名()",[14,111411,111412],{},"分析结果列如下：",[14,111414,111415],{},"Line行号",[14,111417,111418],{},"Mem usage内存使用大小",[14,111420,111421],{},"increment内存增量",[14,111423,111424],{},"Line content代码内容",[14,111426,111427],{},"补充说明：",[14,111429,111430],{},"mprun不是Ipython内置，需要安装memory_profiler模块",[14,111432,109696],{},[14,111434,111435],{},"mprun测试的函数必须定义在独立模块中，不能定义在交互式Ipython环境中,要把它写入文件当中",[14,111437,111438],{},"如果需要重新加载模块，可以调用importlib模块提供reload函数",[14,111440,111441],{},[30,111442],{"alt":32,"src":111443},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-044.png",[14,111445,111446],{},"这个时候如果将函数里边range()范围改了，则重新运行之后，结果increment的每一句代码是不变的",[14,111448,111449],{},"这时候需要重新加载模块",[451,111451,111453],{"className":46787,"code":111452,"language":46789,"meta":32,"style":32},"#重新加载模块\nimport importlib\nimportlib.reload(mprun_test)\n%mprun -f mprun_test.fun_test mprun_test.fun_test()\n",[457,111454,111455,111460,111467,111472],{"__ignoreMap":32},[460,111456,111457],{"class":462,"line":463},[460,111458,111459],{"class":942},"#重新加载模块\n",[460,111461,111462,111464],{"class":462,"line":476},[460,111463,46801],{"class":887},[460,111465,111466],{"class":466}," importlib\n",[460,111468,111469],{"class":462,"line":482},[460,111470,111471],{"class":466},"importlib.reload(mprun_test)\n",[460,111473,111474,111476,111479,111481],{"class":462,"line":488},[460,111475,2328],{"class":887},[460,111477,111478],{"class":466},"mprun ",[460,111480,17259],{"class":887},[460,111482,111483],{"class":466},"f mprun_test.fun_test mprun_test.fun_test()\n",[1944,111485,111486],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}",{"title":32,"searchDepth":476,"depth":476,"links":111488},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch20-mprun",{"title":111395,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch20-魔法命令mprun","IgHoOma_sVJYUvOa_nR1WsKoZkVZVARozypIz67Eesc",{"id":111495,"title":111496,"body":111497,"description":16682,"extension":16683,"meta":111514,"navigation":521,"path":111515,"seo":111516,"stem":111517,"__hash__":111518},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch3-一维数组的索引和切片.md","3.一维数组的索引和切片",{"type":7,"value":111498,"toc":111512},[111499,111502,111507],[10,111500,111496],{"id":111501},"_3一维数组的索引和切片",[14,111503,111504],{},[30,111505],{"alt":32,"src":111506},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-019.png",[14,111508,111509],{},[30,111510],{"alt":32,"src":111511},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-020.png",{"title":32,"searchDepth":476,"depth":476,"links":111513},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch3",{"title":111496,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch3-一维数组的索引和切片","HCjbAhTUAFlQa91QLrommm7yUYNAMWkOQ3-g6Ha153Q",{"id":111520,"title":111521,"body":111522,"description":16682,"extension":16683,"meta":112005,"navigation":521,"path":112006,"seo":112007,"stem":112008,"__hash__":112009},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch4-二维数组的索引与切片.md","4.二维数组的索引与切片",{"type":7,"value":111523,"toc":112003},[111524,111527,111530,111535,111568,111571,111609,111612,111646,111649,111754,111757,111794,111797,111898,111901,111952,111955,111997,112000],[10,111525,111521],{"id":111526},"_4二维数组的索引与切片",[14,111528,111529],{},"①获取指定单个元素",[14,111531,111532],{},[30,111533],{"alt":32,"src":111534},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-021.png",[451,111536,111538],{"className":46787,"code":111537,"language":46789,"meta":32,"style":32},"#获取元素9\n#先获取所在行，再获取所在列\n#数组[行索引号，列索引号]\na[1,2]\n",[457,111539,111540,111545,111550,111555],{"__ignoreMap":32},[460,111541,111542],{"class":462,"line":463},[460,111543,111544],{"class":942},"#获取元素9\n",[460,111546,111547],{"class":462,"line":476},[460,111548,111549],{"class":942},"#先获取所在行，再获取所在列\n",[460,111551,111552],{"class":462,"line":482},[460,111553,111554],{"class":942},"#数组[行索引号，列索引号]\n",[460,111556,111557,111560,111562,111564,111566],{"class":462,"line":488},[460,111558,111559],{"class":466},"a[",[460,111561,901],{"class":900},[460,111563,3986],{"class":466},[460,111565,907],{"class":900},[460,111567,13307],{"class":466},[14,111569,111570],{},"②获取整行元素",[451,111572,111574],{"className":46787,"code":111573,"language":46789,"meta":32,"style":32},"#获取整行 数组[行索引号]\n#这个的效果与   数组[行索引号，：]效果是一样的\na[2]\n#也可以负索引获取一行\na[-1]\n",[457,111575,111576,111581,111586,111594,111599],{"__ignoreMap":32},[460,111577,111578],{"class":462,"line":463},[460,111579,111580],{"class":942},"#获取整行 数组[行索引号]\n",[460,111582,111583],{"class":462,"line":476},[460,111584,111585],{"class":942},"#这个的效果与   数组[行索引号，：]效果是一样的\n",[460,111587,111588,111590,111592],{"class":462,"line":482},[460,111589,111559],{"class":466},[460,111591,907],{"class":900},[460,111593,13307],{"class":466},[460,111595,111596],{"class":462,"line":488},[460,111597,111598],{"class":942},"#也可以负索引获取一行\n",[460,111600,111601,111603,111605,111607],{"class":462,"line":494},[460,111602,111559],{"class":466},[460,111604,17259],{"class":887},[460,111606,901],{"class":900},[460,111608,13307],{"class":466},[14,111610,111611],{},"③获取整列元素",[451,111613,111615],{"className":46787,"code":111614,"language":46789,"meta":32,"style":32},"#获取整列 数组名[:,列索引]\na[:,2]\n#也可以负索引获取一列\na[:,-1]\n",[457,111616,111617,111622,111631,111636],{"__ignoreMap":32},[460,111618,111619],{"class":462,"line":463},[460,111620,111621],{"class":942},"#获取整列 数组名[:,列索引]\n",[460,111623,111624,111627,111629],{"class":462,"line":476},[460,111625,111626],{"class":466},"a[:,",[460,111628,907],{"class":900},[460,111630,13307],{"class":466},[460,111632,111633],{"class":462,"line":482},[460,111634,111635],{"class":942},"#也可以负索引获取一列\n",[460,111637,111638,111640,111642,111644],{"class":462,"line":488},[460,111639,111626],{"class":466},[460,111641,17259],{"class":887},[460,111643,901],{"class":900},[460,111645,13307],{"class":466},[14,111647,111648],{},"④部分行部分列的元素",[451,111650,111652],{"className":46787,"code":111651,"language":46789,"meta":32,"style":32},"#部分行部分列 数组名[行切片，列切片]\na[:2,:]\n#结果：\n'''\narray([[ 1,  2,  3,  4,  5,  6],\n       [ 7,  8,  9, 10, 11, 12]])\n'''\na[:,1:4]\n#结果：\n'''\narray([[ 2,  3,  4],\n       [ 8,  9, 10],\n       [14, 15, 16],\n       [20, 21, 22]])\n'''\n#对列行同时进行切片，使用了step参数\na[::2,::2]\n",[457,111653,111654,111659,111669,111673,111677,111682,111687,111691,111703,111707,111711,111716,111721,111726,111731,111735,111740],{"__ignoreMap":32},[460,111655,111656],{"class":462,"line":463},[460,111657,111658],{"class":942},"#部分行部分列 数组名[行切片，列切片]\n",[460,111660,111661,111664,111666],{"class":462,"line":476},[460,111662,111663],{"class":466},"a[:",[460,111665,907],{"class":900},[460,111667,111668],{"class":466},",:]\n",[460,111670,111671],{"class":462,"line":482},[460,111672,108057],{"class":942},[460,111674,111675],{"class":462,"line":488},[460,111676,108421],{"class":1353},[460,111678,111679],{"class":462,"line":494},[460,111680,111681],{"class":1353},"array([[ 1,  2,  3,  4,  5,  6],\n",[460,111683,111684],{"class":462,"line":500},[460,111685,111686],{"class":1353},"       [ 7,  8,  9, 10, 11, 12]])\n",[460,111688,111689],{"class":462,"line":506},[460,111690,108421],{"class":1353},[460,111692,111693,111695,111697,111699,111701],{"class":462,"line":512},[460,111694,111626],{"class":466},[460,111696,901],{"class":900},[460,111698,1357],{"class":466},[460,111700,918],{"class":900},[460,111702,13307],{"class":466},[460,111704,111705],{"class":462,"line":518},[460,111706,108057],{"class":942},[460,111708,111709],{"class":462,"line":525},[460,111710,108421],{"class":1353},[460,111712,111713],{"class":462,"line":531},[460,111714,111715],{"class":1353},"array([[ 2,  3,  4],\n",[460,111717,111718],{"class":462,"line":537},[460,111719,111720],{"class":1353},"       [ 8,  9, 10],\n",[460,111722,111723],{"class":462,"line":543},[460,111724,111725],{"class":1353},"       [14, 15, 16],\n",[460,111727,111728],{"class":462,"line":549},[460,111729,111730],{"class":1353},"       [20, 21, 22]])\n",[460,111732,111733],{"class":462,"line":555},[460,111734,108421],{"class":1353},[460,111736,111737],{"class":462,"line":560},[460,111738,111739],{"class":942},"#对列行同时进行切片，使用了step参数\n",[460,111741,111742,111745,111747,111750,111752],{"class":462,"line":566},[460,111743,111744],{"class":466},"a[::",[460,111746,907],{"class":900},[460,111748,111749],{"class":466},",::",[460,111751,907],{"class":900},[460,111753,13307],{"class":466},[14,111755,111756],{},"⑤同时获取两个元素",[451,111758,111760],{"className":46787,"code":111759,"language":46789,"meta":32,"style":32},"#同时获取第三行第二列，第四行第一列\n#逗号前边括号为行的所有索引，逗号后边为列的所有索引\na[(2,3),(1,0)]\n",[457,111761,111762,111767,111772],{"__ignoreMap":32},[460,111763,111764],{"class":462,"line":463},[460,111765,111766],{"class":942},"#同时获取第三行第二列，第四行第一列\n",[460,111768,111769],{"class":462,"line":476},[460,111770,111771],{"class":942},"#逗号前边括号为行的所有索引，逗号后边为列的所有索引\n",[460,111773,111774,111777,111779,111781,111783,111785,111787,111789,111791],{"class":462,"line":482},[460,111775,111776],{"class":466},"a[(",[460,111778,907],{"class":900},[460,111780,3986],{"class":466},[460,111782,913],{"class":900},[460,111784,58551],{"class":466},[460,111786,901],{"class":900},[460,111788,3986],{"class":466},[460,111790,936],{"class":900},[460,111792,111793],{"class":466},")]\n",[14,111795,111796],{},"⑥切片，对行进行反向获取",[451,111798,111800],{"className":46787,"code":111799,"language":46789,"meta":32,"style":32},"#切片 对所有行进行反向获取\na[::-1]\n#结果：\n'''\narray([[19, 20, 21, 22, 23, 24],\n       [13, 14, 15, 16, 17, 18],\n       [ 7,  8,  9, 10, 11, 12],\n       [ 1,  2,  3,  4,  5,  6]])\n'''\n#对行列都进行反向切片获取\na[::-1,::-1]\n'''\narray([[24, 23, 22, 21, 20, 19],\n       [18, 17, 16, 15, 14, 13],\n       [12, 11, 10,  9,  8,  7],\n       [ 6,  5,  4,  3,  2,  1]])\n'''\n",[457,111801,111802,111807,111817,111821,111825,111830,111835,111840,111845,111849,111854,111870,111874,111879,111884,111889,111894],{"__ignoreMap":32},[460,111803,111804],{"class":462,"line":463},[460,111805,111806],{"class":942},"#切片 对所有行进行反向获取\n",[460,111808,111809,111811,111813,111815],{"class":462,"line":476},[460,111810,111744],{"class":466},[460,111812,17259],{"class":887},[460,111814,901],{"class":900},[460,111816,13307],{"class":466},[460,111818,111819],{"class":462,"line":482},[460,111820,108057],{"class":942},[460,111822,111823],{"class":462,"line":488},[460,111824,108421],{"class":1353},[460,111826,111827],{"class":462,"line":494},[460,111828,111829],{"class":1353},"array([[19, 20, 21, 22, 23, 24],\n",[460,111831,111832],{"class":462,"line":500},[460,111833,111834],{"class":1353},"       [13, 14, 15, 16, 17, 18],\n",[460,111836,111837],{"class":462,"line":506},[460,111838,111839],{"class":1353},"       [ 7,  8,  9, 10, 11, 12],\n",[460,111841,111842],{"class":462,"line":512},[460,111843,111844],{"class":1353},"       [ 1,  2,  3,  4,  5,  6]])\n",[460,111846,111847],{"class":462,"line":518},[460,111848,108421],{"class":1353},[460,111850,111851],{"class":462,"line":525},[460,111852,111853],{"class":942},"#对行列都进行反向切片获取\n",[460,111855,111856,111858,111860,111862,111864,111866,111868],{"class":462,"line":531},[460,111857,111744],{"class":466},[460,111859,17259],{"class":887},[460,111861,901],{"class":900},[460,111863,111749],{"class":466},[460,111865,17259],{"class":887},[460,111867,901],{"class":900},[460,111869,13307],{"class":466},[460,111871,111872],{"class":462,"line":537},[460,111873,108421],{"class":1353},[460,111875,111876],{"class":462,"line":543},[460,111877,111878],{"class":1353},"array([[24, 23, 22, 21, 20, 19],\n",[460,111880,111881],{"class":462,"line":549},[460,111882,111883],{"class":1353},"       [18, 17, 16, 15, 14, 13],\n",[460,111885,111886],{"class":462,"line":555},[460,111887,111888],{"class":1353},"       [12, 11, 10,  9,  8,  7],\n",[460,111890,111891],{"class":462,"line":560},[460,111892,111893],{"class":1353},"       [ 6,  5,  4,  3,  2,  1]])\n",[460,111895,111896],{"class":462,"line":566},[460,111897,108421],{"class":1353},[14,111899,111900],{},"⑦修改元素",[451,111902,111904],{"className":46787,"code":111903,"language":46789,"meta":32,"style":32},"#获取前两行和前两列\nsub_a=a[:2,:2]\n#修改sub_a第一个元素的值\nsub_a[0,0]=100\n",[457,111905,111906,111911,111929,111934],{"__ignoreMap":32},[460,111907,111908],{"class":462,"line":463},[460,111909,111910],{"class":942},"#获取前两行和前两列\n",[460,111912,111913,111916,111918,111920,111922,111925,111927],{"class":462,"line":476},[460,111914,111915],{"class":466},"sub_a",[460,111917,894],{"class":887},[460,111919,111663],{"class":466},[460,111921,907],{"class":900},[460,111923,111924],{"class":466},",:",[460,111926,907],{"class":900},[460,111928,13307],{"class":466},[460,111930,111931],{"class":462,"line":482},[460,111932,111933],{"class":942},"#修改sub_a第一个元素的值\n",[460,111935,111936,111939,111941,111943,111945,111947,111949],{"class":462,"line":488},[460,111937,111938],{"class":466},"sub_a[",[460,111940,936],{"class":900},[460,111942,3986],{"class":466},[460,111944,936],{"class":900},[460,111946,17649],{"class":466},[460,111948,894],{"class":887},[460,111950,111951],{"class":900},"100\n",[14,111953,111954],{},"⑧数组复制copy()",[451,111956,111958],{"className":46787,"code":111957,"language":46789,"meta":32,"style":32},"#数组复制\ncopy_a=np.copy(sub_a)\n#修改copy_a后不影响原数组\ncopy_a[0,0]=100\n",[457,111959,111960,111965,111975,111980],{"__ignoreMap":32},[460,111961,111962],{"class":462,"line":463},[460,111963,111964],{"class":942},"#数组复制\n",[460,111966,111967,111970,111972],{"class":462,"line":476},[460,111968,111969],{"class":466},"copy_a",[460,111971,894],{"class":887},[460,111973,111974],{"class":466},"np.copy(sub_a)\n",[460,111976,111977],{"class":462,"line":482},[460,111978,111979],{"class":942},"#修改copy_a后不影响原数组\n",[460,111981,111982,111985,111987,111989,111991,111993,111995],{"class":462,"line":488},[460,111983,111984],{"class":466},"copy_a[",[460,111986,936],{"class":900},[460,111988,3986],{"class":466},[460,111990,936],{"class":900},[460,111992,17649],{"class":466},[460,111994,894],{"class":887},[460,111996,111951],{"class":900},[14,111998,111999],{},"使用copy()指令后创建的数组，对这个新的数组的元素进行改变，原数组的元素值是不会发生改变的",[1944,112001,112002],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":112004},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch4",{"title":111521,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch4-二维数组的索引与切片","FhYeIq3Ginq9ubG9YAvy-kWp6vFdXYGIbw8SBQgChuk",{"id":112011,"title":112012,"body":112013,"description":16682,"extension":16683,"meta":112505,"navigation":521,"path":112506,"seo":112507,"stem":112508,"__hash__":112509},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch5-改变数组的维度.md","5.改变数组的维度",{"type":7,"value":112014,"toc":112497},[112015,112018,112022,112025,112028,112081,112084,112109,112112,112131,112151,112154,112170,112174,112220,112224,112266,112270,112273,112276,112279,112282,112285,112347,112407,112411,112414,112471,112475,112480,112489,112494],[10,112016,112012],{"id":112017},"_5改变数组的维度",[18,112019,112021],{"id":112020},"_51-使用reshape","5.1 使用reshape()",[14,112023,112024],{},"通过reshape方法可以将一维数组变成二维数组、三维或者多维数组，也可以通过reshape方法将多维数组变成一维",[14,112026,112027],{},"①一维数组转换为二维数组",[451,112029,112031],{"className":46787,"code":112030,"language":46789,"meta":32,"style":32},"a=np.arange(1,13)\n#将一维数组进行转换\n#注意点：元素个数不可以变\n#转换维度要保持一致，不一致就异常！！！\naa=a.reshape(2,6)\n",[457,112032,112033,112049,112054,112059,112064],{"__ignoreMap":32},[460,112034,112035,112037,112039,112041,112043,112045,112047],{"class":462,"line":463},[460,112036,2756],{"class":466},[460,112038,894],{"class":887},[460,112040,107495],{"class":466},[460,112042,901],{"class":900},[460,112044,3986],{"class":466},[460,112046,17250],{"class":900},[460,112048,3754],{"class":466},[460,112050,112051],{"class":462,"line":476},[460,112052,112053],{"class":942},"#将一维数组进行转换\n",[460,112055,112056],{"class":462,"line":482},[460,112057,112058],{"class":942},"#注意点：元素个数不可以变\n",[460,112060,112061],{"class":462,"line":488},[460,112062,112063],{"class":942},"#转换维度要保持一致，不一致就异常！！！\n",[460,112065,112066,112068,112070,112073,112075,112077,112079],{"class":462,"line":494},[460,112067,107799],{"class":466},[460,112069,894],{"class":887},[460,112071,112072],{"class":466},"a.reshape(",[460,112074,907],{"class":900},[460,112076,3986],{"class":466},[460,112078,4064],{"class":900},[460,112080,3754],{"class":466},[14,112082,112083],{},"②一维数组转换为三维数组",[451,112085,112087],{"className":46787,"code":112086,"language":46789,"meta":32,"style":32},"aaa=a.reshape(2,3,2)\n",[457,112088,112089],{"__ignoreMap":32},[460,112090,112091,112093,112095,112097,112099,112101,112103,112105,112107],{"class":462,"line":463},[460,112092,110014],{"class":466},[460,112094,894],{"class":887},[460,112096,112072],{"class":466},[460,112098,907],{"class":900},[460,112100,3986],{"class":466},[460,112102,913],{"class":900},[460,112104,3986],{"class":466},[460,112106,907],{"class":900},[460,112108,3754],{"class":466},[14,112110,112111],{},"③二维数组转化为一维数组",[451,112113,112115],{"className":46787,"code":112114,"language":46789,"meta":32,"style":32},"#知道元素个数：\naa.reshape(12)\n",[457,112116,112117,112122],{"__ignoreMap":32},[460,112118,112119],{"class":462,"line":463},[460,112120,112121],{"class":942},"#知道元素个数：\n",[460,112123,112124,112127,112129],{"class":462,"line":476},[460,112125,112126],{"class":466},"aa.reshape(",[460,112128,5531],{"class":900},[460,112130,3754],{"class":466},[451,112132,112134],{"className":46787,"code":112133,"language":46789,"meta":32,"style":32},"#不知道元素个数，参数传递-1\naa.reshape(-1)\n",[457,112135,112136,112141],{"__ignoreMap":32},[460,112137,112138],{"class":462,"line":463},[460,112139,112140],{"class":942},"#不知道元素个数，参数传递-1\n",[460,112142,112143,112145,112147,112149],{"class":462,"line":476},[460,112144,112126],{"class":466},[460,112146,17259],{"class":887},[460,112148,901],{"class":900},[460,112150,3754],{"class":466},[14,112152,112153],{},"④三维数组转换为一维数组",[451,112155,112157],{"className":46787,"code":112156,"language":46789,"meta":32,"style":32},"aaa.reshape(-1)\n",[457,112158,112159],{"__ignoreMap":32},[460,112160,112161,112164,112166,112168],{"class":462,"line":463},[460,112162,112163],{"class":466},"aaa.reshape(",[460,112165,17259],{"class":887},[460,112167,901],{"class":900},[460,112169,3754],{"class":466},[18,112171,112173],{"id":112172},"_52-使用revel转换为一维数组","5.2 使用revel()转换为一维数组",[451,112175,112177],{"className":46787,"code":112176,"language":46789,"meta":32,"style":32},"aa=np.arange(1,13).reshape(2,6)#转换为2行6列的数组\naa.revel()\n#结果：\n#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])\n",[457,112178,112179,112206,112211,112215],{"__ignoreMap":32},[460,112180,112181,112183,112185,112187,112189,112191,112193,112195,112197,112199,112201,112203],{"class":462,"line":463},[460,112182,107799],{"class":466},[460,112184,894],{"class":887},[460,112186,107495],{"class":466},[460,112188,901],{"class":900},[460,112190,3986],{"class":466},[460,112192,17250],{"class":900},[460,112194,107500],{"class":466},[460,112196,907],{"class":900},[460,112198,3986],{"class":466},[460,112200,4064],{"class":900},[460,112202,8411],{"class":466},[460,112204,112205],{"class":942},"#转换为2行6列的数组\n",[460,112207,112208],{"class":462,"line":476},[460,112209,112210],{"class":466},"aa.revel()\n",[460,112212,112213],{"class":462,"line":482},[460,112214,108057],{"class":942},[460,112216,112217],{"class":462,"line":488},[460,112218,112219],{"class":942},"#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])\n",[18,112221,112223],{"id":112222},"_53-使用flatten转换为一维数组","5.3 使用flatten()转换为一维数组",[451,112225,112227],{"className":46787,"code":112226,"language":46789,"meta":32,"style":32},"aa=np.arange(1,13).reshape(2,6)\naa.flatten()\n#结果：\n#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])\n",[457,112228,112229,112253,112258,112262],{"__ignoreMap":32},[460,112230,112231,112233,112235,112237,112239,112241,112243,112245,112247,112249,112251],{"class":462,"line":463},[460,112232,107799],{"class":466},[460,112234,894],{"class":887},[460,112236,107495],{"class":466},[460,112238,901],{"class":900},[460,112240,3986],{"class":466},[460,112242,17250],{"class":900},[460,112244,107500],{"class":466},[460,112246,907],{"class":900},[460,112248,3986],{"class":466},[460,112250,4064],{"class":900},[460,112252,3754],{"class":466},[460,112254,112255],{"class":462,"line":476},[460,112256,112257],{"class":466},"aa.flatten()\n",[460,112259,112260],{"class":462,"line":482},[460,112261,108057],{"class":942},[460,112263,112264],{"class":462,"line":488},[460,112265,112219],{"class":942},[18,112267,112269],{"id":112268},"_54-使用resize","5.4 使用resize()",[14,112271,112272],{},"改变数组的维度还可以直接设置numpy数组的shape属性（元组类型）",[14,112274,112275],{},"通过resize方法可以改变数组的维度",[14,112277,112278],{},"#resize修改数组维度",[14,112280,112281],{},"#以元组的形式指定形状",[14,112283,112284],{},"#改变的是原数组",[451,112286,112288],{"className":46787,"code":112287,"language":46789,"meta":32,"style":32},"a=np.arange(1,13)\na.shape=(2,6)#改变了原数组\na=resize((12))\n#结果：\n#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])\n",[457,112289,112290,112306,112326,112339,112343],{"__ignoreMap":32},[460,112291,112292,112294,112296,112298,112300,112302,112304],{"class":462,"line":463},[460,112293,2756],{"class":466},[460,112295,894],{"class":887},[460,112297,107495],{"class":466},[460,112299,901],{"class":900},[460,112301,3986],{"class":466},[460,112303,17250],{"class":900},[460,112305,3754],{"class":466},[460,112307,112308,112311,112313,112315,112317,112319,112321,112323],{"class":462,"line":476},[460,112309,112310],{"class":466},"a.shape",[460,112312,894],{"class":887},[460,112314,2174],{"class":466},[460,112316,907],{"class":900},[460,112318,3986],{"class":466},[460,112320,4064],{"class":900},[460,112322,8411],{"class":466},[460,112324,112325],{"class":942},"#改变了原数组\n",[460,112327,112328,112330,112332,112335,112337],{"class":462,"line":482},[460,112329,2756],{"class":466},[460,112331,894],{"class":887},[460,112333,112334],{"class":466},"resize((",[460,112336,5531],{"class":900},[460,112338,6311],{"class":466},[460,112340,112341],{"class":462,"line":488},[460,112342,108057],{"class":942},[460,112344,112345],{"class":462,"line":494},[460,112346,112219],{"class":942},[451,112348,112350],{"className":46787,"code":112349,"language":46789,"meta":32,"style":32},"a.resize((6,2))\n#结果：\n'''\narray([[ 1,  2],\n       [ 3,  4],\n       [ 5,  6],\n       [ 7,  8],\n       [ 9, 10],\n       [11, 12]])\n'''\n",[457,112351,112352,112365,112369,112373,112378,112383,112388,112393,112398,112403],{"__ignoreMap":32},[460,112353,112354,112357,112359,112361,112363],{"class":462,"line":463},[460,112355,112356],{"class":466},"a.resize((",[460,112358,4064],{"class":900},[460,112360,3986],{"class":466},[460,112362,907],{"class":900},[460,112364,6311],{"class":466},[460,112366,112367],{"class":462,"line":476},[460,112368,108057],{"class":942},[460,112370,112371],{"class":462,"line":482},[460,112372,108421],{"class":1353},[460,112374,112375],{"class":462,"line":488},[460,112376,112377],{"class":1353},"array([[ 1,  2],\n",[460,112379,112380],{"class":462,"line":494},[460,112381,112382],{"class":1353},"       [ 3,  4],\n",[460,112384,112385],{"class":462,"line":500},[460,112386,112387],{"class":1353},"       [ 5,  6],\n",[460,112389,112390],{"class":462,"line":506},[460,112391,112392],{"class":1353},"       [ 7,  8],\n",[460,112394,112395],{"class":462,"line":512},[460,112396,112397],{"class":1353},"       [ 9, 10],\n",[460,112399,112400],{"class":462,"line":518},[460,112401,112402],{"class":1353},"       [11, 12]])\n",[460,112404,112405],{"class":462,"line":525},[460,112406,108421],{"class":1353},[18,112408,112410],{"id":112409},"_55-使用数组shape属性修改","5.5 使用数组shape属性修改",[14,112412,112413],{},"改变了原数组",[451,112415,112417],{"className":46787,"code":112416,"language":46789,"meta":32,"style":32},"a=np.arange(1,13)\na.shape=(2,6)\n#结果：\n'''\narray([[ 1,  2,  3,  4,  5,  6],\n       [ 7,  8,  9, 10, 11, 12]])\n'''\n",[457,112418,112419,112435,112451,112455,112459,112463,112467],{"__ignoreMap":32},[460,112420,112421,112423,112425,112427,112429,112431,112433],{"class":462,"line":463},[460,112422,2756],{"class":466},[460,112424,894],{"class":887},[460,112426,107495],{"class":466},[460,112428,901],{"class":900},[460,112430,3986],{"class":466},[460,112432,17250],{"class":900},[460,112434,3754],{"class":466},[460,112436,112437,112439,112441,112443,112445,112447,112449],{"class":462,"line":476},[460,112438,112310],{"class":466},[460,112440,894],{"class":887},[460,112442,2174],{"class":466},[460,112444,907],{"class":900},[460,112446,3986],{"class":466},[460,112448,4064],{"class":900},[460,112450,3754],{"class":466},[460,112452,112453],{"class":462,"line":482},[460,112454,108057],{"class":942},[460,112456,112457],{"class":462,"line":488},[460,112458,108421],{"class":1353},[460,112460,112461],{"class":462,"line":494},[460,112462,111681],{"class":1353},[460,112464,112465],{"class":462,"line":500},[460,112466,111686],{"class":1353},[460,112468,112469],{"class":462,"line":506},[460,112470,108421],{"class":1353},[18,112472,112474],{"id":112473},"_56-重要比较","5.6 重要比较：",[14,112476,112477],{},[30,112478],{"alt":32,"src":112479},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-022.png",[14,112481,112482,112483,112485,112486,112488],{},"口诀：NumPy 函数要么用 ",[457,112484,110456],{},"，要么用 ",[457,112487,47902],{},"，创建结构用 shape，造数据用 size",[14,112490,112491],{},[30,112492],{"alt":32,"src":112493},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-023.png",[1944,112495,112496],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":112498},[112499,112500,112501,112502,112503,112504],{"id":112020,"depth":476,"text":112021},{"id":112172,"depth":476,"text":112173},{"id":112222,"depth":476,"text":112223},{"id":112268,"depth":476,"text":112269},{"id":112409,"depth":476,"text":112410},{"id":112473,"depth":476,"text":112474},{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch5",{"title":112012,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch5-改变数组的维度","L8Yh7Y4Z2Znl_Umc9cbqdOtHItjOa-jg0HqonMYnr74",{"id":112511,"title":112512,"body":112513,"description":16682,"extension":16683,"meta":113585,"navigation":521,"path":113586,"seo":113587,"stem":113588,"__hash__":113589},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch6-数组的拼接.md","6.数组的拼接",{"type":7,"value":112514,"toc":113579},[112515,112518,112522,112525,112528,112531,112596,112599,112639,112642,112724,112727,112732,112754,112756,112761,112766,112769,112772,112927,112930,113132,113136,113139,113142,113210,113212,113217,113220,113223,113303,113307,113310,113312,113385,113387,113392,113394,113474,113478,113481,113484,113487,113490,113493,113496,113576],[10,112516,112512],{"id":112517},"_6数组的拼接",[18,112519,112521],{"id":112520},"_61-使用concatenate数组拼接","6.1 使用concatenate数组拼接",[14,112523,112524],{},"使用concatenate进行数组拼接连接沿现有轴的数组数列",[14,112526,112527],{},"函数内部传两个数列构成的数列或者元组",[14,112529,112530],{},"①一维数组的拼接",[451,112532,112534],{"className":46787,"code":112533,"language":46789,"meta":32,"style":32},"a=np.array([1,2,3])\nb=np.array([4,5,6])\n#调用concatenate进行数组拼接\nnp.concatenate((a,b))\n#这里函数内部是以数列或者元组的形式进行传递的，也可以使用数列\n#np.concatenate([a,b])\n",[457,112535,112536,112556,112576,112581,112586,112591],{"__ignoreMap":32},[460,112537,112538,112540,112542,112544,112546,112548,112550,112552,112554],{"class":462,"line":463},[460,112539,2756],{"class":466},[460,112541,894],{"class":887},[460,112543,107517],{"class":466},[460,112545,901],{"class":900},[460,112547,3986],{"class":466},[460,112549,907],{"class":900},[460,112551,3986],{"class":466},[460,112553,913],{"class":900},[460,112555,13249],{"class":466},[460,112557,112558,112560,112562,112564,112566,112568,112570,112572,112574],{"class":462,"line":476},[460,112559,17005],{"class":466},[460,112561,894],{"class":887},[460,112563,107517],{"class":466},[460,112565,918],{"class":900},[460,112567,3986],{"class":466},[460,112569,7290],{"class":900},[460,112571,3986],{"class":466},[460,112573,4064],{"class":900},[460,112575,13249],{"class":466},[460,112577,112578],{"class":462,"line":482},[460,112579,112580],{"class":942},"#调用concatenate进行数组拼接\n",[460,112582,112583],{"class":462,"line":488},[460,112584,112585],{"class":466},"np.concatenate((a,b))\n",[460,112587,112588],{"class":462,"line":494},[460,112589,112590],{"class":942},"#这里函数内部是以数列或者元组的形式进行传递的，也可以使用数列\n",[460,112592,112593],{"class":462,"line":500},[460,112594,112595],{"class":942},"#np.concatenate([a,b])\n",[14,112597,112598],{},"②一维多个数组拼接",[451,112600,112602],{"className":46787,"code":112601,"language":46789,"meta":32,"style":32},"#也可以多个数组进行拼接\nc=np.array([10,11,13])\nc\nnp.concatenate((a,b,c))\n",[457,112603,112604,112609,112629,112634],{"__ignoreMap":32},[460,112605,112606],{"class":462,"line":463},[460,112607,112608],{"class":942},"#也可以多个数组进行拼接\n",[460,112610,112611,112613,112615,112617,112619,112621,112623,112625,112627],{"class":462,"line":476},[460,112612,17030],{"class":466},[460,112614,894],{"class":887},[460,112616,107517],{"class":466},[460,112618,2096],{"class":900},[460,112620,3986],{"class":466},[460,112622,12812],{"class":900},[460,112624,3986],{"class":466},[460,112626,17250],{"class":900},[460,112628,13249],{"class":466},[460,112630,112631],{"class":462,"line":482},[460,112632,112633],{"class":466},"c\n",[460,112635,112636],{"class":462,"line":488},[460,112637,112638],{"class":466},"np.concatenate((a,b,c))\n",[14,112640,112641],{},"③二维数组拼接",[451,112643,112645],{"className":46787,"code":112644,"language":46789,"meta":32,"style":32},"#二维数组使用concatenate进行拼接\naa=np.arange(1,13).reshape(3,4)\nbb=np.arange(101,113).reshape(3,4)\n#调用concatenate进行拼接,axis默认值为0，按行;axis=1时按列\n#concatenate是有两个参数的，一个是要拼接数组组成的数列或者元组，另一个是轴axis\nnp.concatenate((aa,bb),axis=0)\n",[457,112646,112647,112652,112676,112701,112706,112711],{"__ignoreMap":32},[460,112648,112649],{"class":462,"line":463},[460,112650,112651],{"class":942},"#二维数组使用concatenate进行拼接\n",[460,112653,112654,112656,112658,112660,112662,112664,112666,112668,112670,112672,112674],{"class":462,"line":476},[460,112655,107799],{"class":466},[460,112657,894],{"class":887},[460,112659,107495],{"class":466},[460,112661,901],{"class":900},[460,112663,3986],{"class":466},[460,112665,17250],{"class":900},[460,112667,107500],{"class":466},[460,112669,913],{"class":900},[460,112671,3986],{"class":466},[460,112673,918],{"class":900},[460,112675,3754],{"class":466},[460,112677,112678,112681,112683,112685,112687,112689,112691,112693,112695,112697,112699],{"class":462,"line":482},[460,112679,112680],{"class":466},"bb",[460,112682,894],{"class":887},[460,112684,107495],{"class":466},[460,112686,17075],{"class":900},[460,112688,3986],{"class":466},[460,112690,17363],{"class":900},[460,112692,107500],{"class":466},[460,112694,913],{"class":900},[460,112696,3986],{"class":466},[460,112698,918],{"class":900},[460,112700,3754],{"class":466},[460,112702,112703],{"class":462,"line":488},[460,112704,112705],{"class":942},"#调用concatenate进行拼接,axis默认值为0，按行;axis=1时按列\n",[460,112707,112708],{"class":462,"line":494},[460,112709,112710],{"class":942},"#concatenate是有两个参数的，一个是要拼接数组组成的数列或者元组，另一个是轴axis\n",[460,112712,112713,112716,112718,112720,112722],{"class":462,"line":500},[460,112714,112715],{"class":466},"np.concatenate((aa,bb),",[460,112717,63817],{"class":3380},[460,112719,894],{"class":887},[460,112721,936],{"class":900},[460,112723,3754],{"class":466},[14,112725,112726],{},"结果：",[14,112728,112729],{},[30,112730],{"alt":32,"src":112731},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-024.png",[451,112733,112735],{"className":46787,"code":112734,"language":46789,"meta":32,"style":32},"#指定axis为1进行拼接\nnp.concatenate((aa,bb),axis=1)\n",[457,112736,112737,112742],{"__ignoreMap":32},[460,112738,112739],{"class":462,"line":463},[460,112740,112741],{"class":942},"#指定axis为1进行拼接\n",[460,112743,112744,112746,112748,112750,112752],{"class":462,"line":476},[460,112745,112715],{"class":466},[460,112747,63817],{"class":3380},[460,112749,894],{"class":887},[460,112751,901],{"class":900},[460,112753,3754],{"class":466},[14,112755,112726],{},[14,112757,112758],{},[30,112759],{"alt":32,"src":112760},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-025.png",[14,112762,112763],{},[3944,112764,112765],{},"二维数组总结：0竖着方向，1横着方向",[14,112767,112768],{},"④三维数组拼接",[14,112770,112771],{},"#concatenate()三维数组拼接，axis有三个维度0，1，2",[451,112773,112775],{"className":46787,"code":112774,"language":46789,"meta":32,"style":32},"#两个三行六列\naaa=np.arange(1,37).reshape(2,3,6)\nbbb=np.arange(101,137).reshape(2,3,6)\n#axis=0\ns=np.concatenate((aaa,bbb),axis=0)\ns.shape\n#输出：(4,3,6)\n#axis=1\nss=np.concatenate((aaa,bbb),axis=1)\nss.shape\n#输出：(2,6,6)\n#axis=2\nnp.concatenate((aaa,bbb),axis=2).shape\n#输出：（2，3，12）\n",[457,112776,112777,112782,112810,112840,112845,112862,112867,112872,112877,112894,112899,112904,112909,112922],{"__ignoreMap":32},[460,112778,112779],{"class":462,"line":463},[460,112780,112781],{"class":942},"#两个三行六列\n",[460,112783,112784,112786,112788,112790,112792,112794,112796,112798,112800,112802,112804,112806,112808],{"class":462,"line":476},[460,112785,110014],{"class":466},[460,112787,894],{"class":887},[460,112789,107495],{"class":466},[460,112791,901],{"class":900},[460,112793,3986],{"class":466},[460,112795,17064],{"class":900},[460,112797,107500],{"class":466},[460,112799,907],{"class":900},[460,112801,3986],{"class":466},[460,112803,913],{"class":900},[460,112805,3986],{"class":466},[460,112807,4064],{"class":900},[460,112809,3754],{"class":466},[460,112811,112812,112815,112817,112819,112821,112823,112826,112828,112830,112832,112834,112836,112838],{"class":462,"line":482},[460,112813,112814],{"class":466},"bbb",[460,112816,894],{"class":887},[460,112818,107495],{"class":466},[460,112820,17075],{"class":900},[460,112822,3986],{"class":466},[460,112824,112825],{"class":900},"137",[460,112827,107500],{"class":466},[460,112829,907],{"class":900},[460,112831,3986],{"class":466},[460,112833,913],{"class":900},[460,112835,3986],{"class":466},[460,112837,4064],{"class":900},[460,112839,3754],{"class":466},[460,112841,112842],{"class":462,"line":488},[460,112843,112844],{"class":942},"#axis=0\n",[460,112846,112847,112849,112851,112854,112856,112858,112860],{"class":462,"line":494},[460,112848,2139],{"class":466},[460,112850,894],{"class":887},[460,112852,112853],{"class":466},"np.concatenate((aaa,bbb),",[460,112855,63817],{"class":3380},[460,112857,894],{"class":887},[460,112859,936],{"class":900},[460,112861,3754],{"class":466},[460,112863,112864],{"class":462,"line":500},[460,112865,112866],{"class":466},"s.shape\n",[460,112868,112869],{"class":462,"line":506},[460,112870,112871],{"class":942},"#输出：(4,3,6)\n",[460,112873,112874],{"class":462,"line":512},[460,112875,112876],{"class":942},"#axis=1\n",[460,112878,112879,112882,112884,112886,112888,112890,112892],{"class":462,"line":518},[460,112880,112881],{"class":466},"ss",[460,112883,894],{"class":887},[460,112885,112853],{"class":466},[460,112887,63817],{"class":3380},[460,112889,894],{"class":887},[460,112891,901],{"class":900},[460,112893,3754],{"class":466},[460,112895,112896],{"class":462,"line":525},[460,112897,112898],{"class":466},"ss.shape\n",[460,112900,112901],{"class":462,"line":531},[460,112902,112903],{"class":942},"#输出：(2,6,6)\n",[460,112905,112906],{"class":462,"line":537},[460,112907,112908],{"class":942},"#axis=2\n",[460,112910,112911,112913,112915,112917,112919],{"class":462,"line":543},[460,112912,112853],{"class":466},[460,112914,63817],{"class":3380},[460,112916,894],{"class":887},[460,112918,907],{"class":900},[460,112920,112921],{"class":466},").shape\n",[460,112923,112924],{"class":462,"line":549},[460,112925,112926],{"class":942},"#输出：（2，3，12）\n",[14,112928,112929],{},"⑤四维数组拼接",[451,112931,112933],{"className":46787,"code":112932,"language":46789,"meta":32,"style":32},"#两个三行六列\naaa=np.arange(1,37).reshape(2,3,6)\nbbb=np.arange(101,137).reshape(2,3,6)\naaaa=aaa.reshape(2,3,3,2)\nbbbb=bbb.reshape(2,3,3,2)\n#axis=0\nnp.concatenate((aaaa,bbbb),axis=0).shape\n#结果：（4，3，3，2）\n#axis=1\nnp.concatenate((aaaa,bbbb),axis=1).shape\n#结果：（2，6，3，2）\n#axis=2\nnp.concatenate((aaaa,bbbb),axis=2).shape\n#结果：（2，3，6，2）\n#axis=3\nnp.concatenate((aaaa,bbbb),axis=3).shape\n#结果：（2，3，3，4）\n",[457,112934,112935,112939,112967,112995,113020,113046,113050,113063,113068,113072,113084,113089,113093,113105,113110,113115,113127],{"__ignoreMap":32},[460,112936,112937],{"class":462,"line":463},[460,112938,112781],{"class":942},[460,112940,112941,112943,112945,112947,112949,112951,112953,112955,112957,112959,112961,112963,112965],{"class":462,"line":476},[460,112942,110014],{"class":466},[460,112944,894],{"class":887},[460,112946,107495],{"class":466},[460,112948,901],{"class":900},[460,112950,3986],{"class":466},[460,112952,17064],{"class":900},[460,112954,107500],{"class":466},[460,112956,907],{"class":900},[460,112958,3986],{"class":466},[460,112960,913],{"class":900},[460,112962,3986],{"class":466},[460,112964,4064],{"class":900},[460,112966,3754],{"class":466},[460,112968,112969,112971,112973,112975,112977,112979,112981,112983,112985,112987,112989,112991,112993],{"class":462,"line":482},[460,112970,112814],{"class":466},[460,112972,894],{"class":887},[460,112974,107495],{"class":466},[460,112976,17075],{"class":900},[460,112978,3986],{"class":466},[460,112980,112825],{"class":900},[460,112982,107500],{"class":466},[460,112984,907],{"class":900},[460,112986,3986],{"class":466},[460,112988,913],{"class":900},[460,112990,3986],{"class":466},[460,112992,4064],{"class":900},[460,112994,3754],{"class":466},[460,112996,112997,113000,113002,113004,113006,113008,113010,113012,113014,113016,113018],{"class":462,"line":488},[460,112998,112999],{"class":466},"aaaa",[460,113001,894],{"class":887},[460,113003,112163],{"class":466},[460,113005,907],{"class":900},[460,113007,3986],{"class":466},[460,113009,913],{"class":900},[460,113011,3986],{"class":466},[460,113013,913],{"class":900},[460,113015,3986],{"class":466},[460,113017,907],{"class":900},[460,113019,3754],{"class":466},[460,113021,113022,113025,113027,113030,113032,113034,113036,113038,113040,113042,113044],{"class":462,"line":494},[460,113023,113024],{"class":466},"bbbb",[460,113026,894],{"class":887},[460,113028,113029],{"class":466},"bbb.reshape(",[460,113031,907],{"class":900},[460,113033,3986],{"class":466},[460,113035,913],{"class":900},[460,113037,3986],{"class":466},[460,113039,913],{"class":900},[460,113041,3986],{"class":466},[460,113043,907],{"class":900},[460,113045,3754],{"class":466},[460,113047,113048],{"class":462,"line":500},[460,113049,112844],{"class":942},[460,113051,113052,113055,113057,113059,113061],{"class":462,"line":506},[460,113053,113054],{"class":466},"np.concatenate((aaaa,bbbb),",[460,113056,63817],{"class":3380},[460,113058,894],{"class":887},[460,113060,936],{"class":900},[460,113062,112921],{"class":466},[460,113064,113065],{"class":462,"line":512},[460,113066,113067],{"class":942},"#结果：（4，3，3，2）\n",[460,113069,113070],{"class":462,"line":518},[460,113071,112876],{"class":942},[460,113073,113074,113076,113078,113080,113082],{"class":462,"line":525},[460,113075,113054],{"class":466},[460,113077,63817],{"class":3380},[460,113079,894],{"class":887},[460,113081,901],{"class":900},[460,113083,112921],{"class":466},[460,113085,113086],{"class":462,"line":531},[460,113087,113088],{"class":942},"#结果：（2，6，3，2）\n",[460,113090,113091],{"class":462,"line":537},[460,113092,112908],{"class":942},[460,113094,113095,113097,113099,113101,113103],{"class":462,"line":543},[460,113096,113054],{"class":466},[460,113098,63817],{"class":3380},[460,113100,894],{"class":887},[460,113102,907],{"class":900},[460,113104,112921],{"class":466},[460,113106,113107],{"class":462,"line":549},[460,113108,113109],{"class":942},"#结果：（2，3，6，2）\n",[460,113111,113112],{"class":462,"line":555},[460,113113,113114],{"class":942},"#axis=3\n",[460,113116,113117,113119,113121,113123,113125],{"class":462,"line":560},[460,113118,113054],{"class":466},[460,113120,63817],{"class":3380},[460,113122,894],{"class":887},[460,113124,913],{"class":900},[460,113126,112921],{"class":466},[460,113128,113129],{"class":462,"line":566},[460,113130,113131],{"class":942},"#结果：（2，3，3，4）\n",[18,113133,113135],{"id":113134},"_62-使用hstack数组拼接","6.2 使用hstack数组拼接",[14,113137,113138],{},"使用hstack进行数组拼接，水平堆叠序列中的数组(列方向)",[14,113140,113141],{},"①二维数组",[451,113143,113145],{"className":46787,"code":113144,"language":46789,"meta":32,"style":32},"aa=np.arange(1,13).reshape(3,4)\nbb=np.arange(101,113).reshape(3,4)\nnp.hstack((aa,bb))\n#跟concatenate函数方法一样，把要拼接的数组放到数列或者元组中去\n#np.hstack([aa,bb])\n",[457,113146,113147,113171,113195,113200,113205],{"__ignoreMap":32},[460,113148,113149,113151,113153,113155,113157,113159,113161,113163,113165,113167,113169],{"class":462,"line":463},[460,113150,107799],{"class":466},[460,113152,894],{"class":887},[460,113154,107495],{"class":466},[460,113156,901],{"class":900},[460,113158,3986],{"class":466},[460,113160,17250],{"class":900},[460,113162,107500],{"class":466},[460,113164,913],{"class":900},[460,113166,3986],{"class":466},[460,113168,918],{"class":900},[460,113170,3754],{"class":466},[460,113172,113173,113175,113177,113179,113181,113183,113185,113187,113189,113191,113193],{"class":462,"line":476},[460,113174,112680],{"class":466},[460,113176,894],{"class":887},[460,113178,107495],{"class":466},[460,113180,17075],{"class":900},[460,113182,3986],{"class":466},[460,113184,17363],{"class":900},[460,113186,107500],{"class":466},[460,113188,913],{"class":900},[460,113190,3986],{"class":466},[460,113192,918],{"class":900},[460,113194,3754],{"class":466},[460,113196,113197],{"class":462,"line":482},[460,113198,113199],{"class":466},"np.hstack((aa,bb))\n",[460,113201,113202],{"class":462,"line":488},[460,113203,113204],{"class":942},"#跟concatenate函数方法一样，把要拼接的数组放到数列或者元组中去\n",[460,113206,113207],{"class":462,"line":494},[460,113208,113209],{"class":942},"#np.hstack([aa,bb])\n",[14,113211,112726],{},[14,113213,113214],{},[30,113215],{"alt":32,"src":113216},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-026.png",[14,113218,113219],{},"等效于concatenate()函数中axis=1时的情况",[14,113221,113222],{},"②三维数组",[451,113224,113226],{"className":46787,"code":113225,"language":46789,"meta":32,"style":32},"#两个三行六列\naaa=np.arange(1,37).reshape(2,3,6)\nbbb=np.arange(101,137).reshape(2,3,6)\n#使用hstack\nnp.hstack((aaa,bbb)).shape\n#输出：（2，6，6）\n",[457,113227,113228,113232,113260,113288,113293,113298],{"__ignoreMap":32},[460,113229,113230],{"class":462,"line":463},[460,113231,112781],{"class":942},[460,113233,113234,113236,113238,113240,113242,113244,113246,113248,113250,113252,113254,113256,113258],{"class":462,"line":476},[460,113235,110014],{"class":466},[460,113237,894],{"class":887},[460,113239,107495],{"class":466},[460,113241,901],{"class":900},[460,113243,3986],{"class":466},[460,113245,17064],{"class":900},[460,113247,107500],{"class":466},[460,113249,907],{"class":900},[460,113251,3986],{"class":466},[460,113253,913],{"class":900},[460,113255,3986],{"class":466},[460,113257,4064],{"class":900},[460,113259,3754],{"class":466},[460,113261,113262,113264,113266,113268,113270,113272,113274,113276,113278,113280,113282,113284,113286],{"class":462,"line":482},[460,113263,112814],{"class":466},[460,113265,894],{"class":887},[460,113267,107495],{"class":466},[460,113269,17075],{"class":900},[460,113271,3986],{"class":466},[460,113273,112825],{"class":900},[460,113275,107500],{"class":466},[460,113277,907],{"class":900},[460,113279,3986],{"class":466},[460,113281,913],{"class":900},[460,113283,3986],{"class":466},[460,113285,4064],{"class":900},[460,113287,3754],{"class":466},[460,113289,113290],{"class":462,"line":488},[460,113291,113292],{"class":942},"#使用hstack\n",[460,113294,113295],{"class":462,"line":494},[460,113296,113297],{"class":466},"np.hstack((aaa,bbb)).shape\n",[460,113299,113300],{"class":462,"line":500},[460,113301,113302],{"class":942},"#输出：（2，6，6）\n",[18,113304,113306],{"id":113305},"_63-使用vstack数组拼接","6.3 使用vstack数组拼接",[14,113308,113309],{},"使用vstack进行数组拼接，竖直堆叠序列中的数组(行方向)",[14,113311,113141],{},[451,113313,113315],{"className":46787,"code":113314,"language":46789,"meta":32,"style":32},"aa=np.arange(1,13).reshape(3,4)\nbb=np.arange(101,113).reshape(3,4)\n#vstack 垂直方向进行堆叠\nnp.vstack((aa,bb))\n#与hstack传的参数类似，等价于：\nnp.vstack([aa,bb])\n",[457,113316,113317,113341,113365,113370,113375,113380],{"__ignoreMap":32},[460,113318,113319,113321,113323,113325,113327,113329,113331,113333,113335,113337,113339],{"class":462,"line":463},[460,113320,107799],{"class":466},[460,113322,894],{"class":887},[460,113324,107495],{"class":466},[460,113326,901],{"class":900},[460,113328,3986],{"class":466},[460,113330,17250],{"class":900},[460,113332,107500],{"class":466},[460,113334,913],{"class":900},[460,113336,3986],{"class":466},[460,113338,918],{"class":900},[460,113340,3754],{"class":466},[460,113342,113343,113345,113347,113349,113351,113353,113355,113357,113359,113361,113363],{"class":462,"line":476},[460,113344,112680],{"class":466},[460,113346,894],{"class":887},[460,113348,107495],{"class":466},[460,113350,17075],{"class":900},[460,113352,3986],{"class":466},[460,113354,17363],{"class":900},[460,113356,107500],{"class":466},[460,113358,913],{"class":900},[460,113360,3986],{"class":466},[460,113362,918],{"class":900},[460,113364,3754],{"class":466},[460,113366,113367],{"class":462,"line":482},[460,113368,113369],{"class":942},"#vstack 垂直方向进行堆叠\n",[460,113371,113372],{"class":462,"line":488},[460,113373,113374],{"class":466},"np.vstack((aa,bb))\n",[460,113376,113377],{"class":462,"line":494},[460,113378,113379],{"class":942},"#与hstack传的参数类似，等价于：\n",[460,113381,113382],{"class":462,"line":500},[460,113383,113384],{"class":466},"np.vstack([aa,bb])\n",[14,113386,112726],{},[14,113388,113389],{},[30,113390],{"alt":32,"src":113391},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-027.png",[14,113393,113222],{},[451,113395,113397],{"className":46787,"code":113396,"language":46789,"meta":32,"style":32},"#两个三行六列\naaa=np.arange(1,37).reshape(2,3,6)\nbbb=np.arange(101,137).reshape(2,3,6)\n#使用vstack\nnp.vstack((aaa,bbb)).shape\n#输出：（4，3，6）\n",[457,113398,113399,113403,113431,113459,113464,113469],{"__ignoreMap":32},[460,113400,113401],{"class":462,"line":463},[460,113402,112781],{"class":942},[460,113404,113405,113407,113409,113411,113413,113415,113417,113419,113421,113423,113425,113427,113429],{"class":462,"line":476},[460,113406,110014],{"class":466},[460,113408,894],{"class":887},[460,113410,107495],{"class":466},[460,113412,901],{"class":900},[460,113414,3986],{"class":466},[460,113416,17064],{"class":900},[460,113418,107500],{"class":466},[460,113420,907],{"class":900},[460,113422,3986],{"class":466},[460,113424,913],{"class":900},[460,113426,3986],{"class":466},[460,113428,4064],{"class":900},[460,113430,3754],{"class":466},[460,113432,113433,113435,113437,113439,113441,113443,113445,113447,113449,113451,113453,113455,113457],{"class":462,"line":482},[460,113434,112814],{"class":466},[460,113436,894],{"class":887},[460,113438,107495],{"class":466},[460,113440,17075],{"class":900},[460,113442,3986],{"class":466},[460,113444,112825],{"class":900},[460,113446,107500],{"class":466},[460,113448,907],{"class":900},[460,113450,3986],{"class":466},[460,113452,913],{"class":900},[460,113454,3986],{"class":466},[460,113456,4064],{"class":900},[460,113458,3754],{"class":466},[460,113460,113461],{"class":462,"line":488},[460,113462,113463],{"class":942},"#使用vstack\n",[460,113465,113466],{"class":462,"line":494},[460,113467,113468],{"class":466},"np.vstack((aaa,bbb)).shape\n",[460,113470,113471],{"class":462,"line":500},[460,113472,113473],{"class":942},"#输出：（4，3，6）\n",[18,113475,113477],{"id":113476},"_64-使用dstack数组拼接","6.4 使用dstack数组拼接",[14,113479,113480],{},"该方法是三维数组特有的方法",[14,113482,113483],{},"也就是说",[14,113485,113486],{},"一维数组拼接方法用：concatenate()",[14,113488,113489],{},"二维数组拼接方法用: concatenate(),hstack(),vstack()",[14,113491,113492],{},"三维数组拼接方法用: concatenate(),hstack(),vstack(),dstack()",[14,113494,113495],{},"四维数组及多维数组只能用concatenate进行拼接",[451,113497,113499],{"className":46787,"code":113498,"language":46789,"meta":32,"style":32},"#两个三行六列\naaa=np.arange(1,37).reshape(2,3,6)\nbbb=np.arange(101,137).reshape(2,3,6)\n#使用dstack\nnp.dstack((aaa,bbb)).shape\n#结果：（2，3，12）\n",[457,113500,113501,113505,113533,113561,113566,113571],{"__ignoreMap":32},[460,113502,113503],{"class":462,"line":463},[460,113504,112781],{"class":942},[460,113506,113507,113509,113511,113513,113515,113517,113519,113521,113523,113525,113527,113529,113531],{"class":462,"line":476},[460,113508,110014],{"class":466},[460,113510,894],{"class":887},[460,113512,107495],{"class":466},[460,113514,901],{"class":900},[460,113516,3986],{"class":466},[460,113518,17064],{"class":900},[460,113520,107500],{"class":466},[460,113522,907],{"class":900},[460,113524,3986],{"class":466},[460,113526,913],{"class":900},[460,113528,3986],{"class":466},[460,113530,4064],{"class":900},[460,113532,3754],{"class":466},[460,113534,113535,113537,113539,113541,113543,113545,113547,113549,113551,113553,113555,113557,113559],{"class":462,"line":482},[460,113536,112814],{"class":466},[460,113538,894],{"class":887},[460,113540,107495],{"class":466},[460,113542,17075],{"class":900},[460,113544,3986],{"class":466},[460,113546,112825],{"class":900},[460,113548,107500],{"class":466},[460,113550,907],{"class":900},[460,113552,3986],{"class":466},[460,113554,913],{"class":900},[460,113556,3986],{"class":466},[460,113558,4064],{"class":900},[460,113560,3754],{"class":466},[460,113562,113563],{"class":462,"line":488},[460,113564,113565],{"class":942},"#使用dstack\n",[460,113567,113568],{"class":462,"line":494},[460,113569,113570],{"class":466},"np.dstack((aaa,bbb)).shape\n",[460,113572,113573],{"class":462,"line":500},[460,113574,113575],{"class":942},"#结果：（2，3，12）\n",[1944,113577,113578],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":113580},[113581,113582,113583,113584],{"id":112520,"depth":476,"text":112521},{"id":113134,"depth":476,"text":113135},{"id":113305,"depth":476,"text":113306},{"id":113476,"depth":476,"text":113477},{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch6",{"title":112512,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch6-数组的拼接","0lcecFbbCD7708gTYIcl02jIknmUZ4PA0g3J__NnHUY",{"id":113591,"title":113592,"body":113593,"description":16682,"extension":16683,"meta":113868,"navigation":521,"path":113869,"seo":113870,"stem":113871,"__hash__":113872},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch7-数组转置.md","7.数组转置",{"type":7,"value":113594,"toc":113866},[113595,113598,113601,113695,113698,113701,113704,113707,113710,113713,113716,113719,113863],[10,113596,113592],{"id":113597},"_7数组转置",[14,113599,113600],{},"使用transpose()函数",[451,113602,113604],{"className":46787,"code":113603,"language":46789,"meta":32,"style":32},"import numpy as np\na= np.arange(1,13).reshape(4,3)\n#二维数组转置\n#调用transpose()函数\na.transpose()\n#对于二维数组也可以采用.T来实现\na.T#与上述代码一样\n#结果：\n'''\narray([[ 1,  4,  7, 10],\n       [ 2,  5,  8, 11],\n       [ 3,  6,  9, 12]])\n'''\n",[457,113605,113606,113616,113640,113645,113650,113655,113660,113668,113672,113676,113681,113686,113691],{"__ignoreMap":32},[460,113607,113608,113610,113612,113614],{"class":462,"line":463},[460,113609,46801],{"class":887},[460,113611,47787],{"class":466},[460,113613,47790],{"class":887},[460,113615,47793],{"class":466},[460,113617,113618,113620,113622,113624,113626,113628,113630,113632,113634,113636,113638],{"class":462,"line":476},[460,113619,2756],{"class":466},[460,113621,894],{"class":887},[460,113623,48122],{"class":466},[460,113625,901],{"class":900},[460,113627,3986],{"class":466},[460,113629,17250],{"class":900},[460,113631,107500],{"class":466},[460,113633,918],{"class":900},[460,113635,3986],{"class":466},[460,113637,913],{"class":900},[460,113639,3754],{"class":466},[460,113641,113642],{"class":462,"line":482},[460,113643,113644],{"class":942},"#二维数组转置\n",[460,113646,113647],{"class":462,"line":488},[460,113648,113649],{"class":942},"#调用transpose()函数\n",[460,113651,113652],{"class":462,"line":494},[460,113653,113654],{"class":466},"a.transpose()\n",[460,113656,113657],{"class":462,"line":500},[460,113658,113659],{"class":942},"#对于二维数组也可以采用.T来实现\n",[460,113661,113662,113665],{"class":462,"line":506},[460,113663,113664],{"class":466},"a.T",[460,113666,113667],{"class":942},"#与上述代码一样\n",[460,113669,113670],{"class":462,"line":512},[460,113671,108057],{"class":942},[460,113673,113674],{"class":462,"line":518},[460,113675,108421],{"class":1353},[460,113677,113678],{"class":462,"line":525},[460,113679,113680],{"class":1353},"array([[ 1,  4,  7, 10],\n",[460,113682,113683],{"class":462,"line":531},[460,113684,113685],{"class":1353},"       [ 2,  5,  8, 11],\n",[460,113687,113688],{"class":462,"line":537},[460,113689,113690],{"class":1353},"       [ 3,  6,  9, 12]])\n",[460,113692,113693],{"class":462,"line":543},[460,113694,108421],{"class":1353},[14,113696,113697],{},"也可以使用np.transpose()的形式",[14,113699,113700],{},"#多维数组进行转置 np.transpose()",[14,113702,113703],{},"#对二维数组也可以使用np.transpose()进行转置",[14,113705,113706],{},"#这个有两个维度，第一个是数组，第二个是维度,可以是数列也可以是元组的形式传到这个函数中",[14,113708,113709],{},"第二个参数，维度可以理解为用axis中的数来理解",[14,113711,113712],{},"对于二维数组，axis是有两个值的0，1 进行转置就传（1,0）两者进行了替换",[14,113714,113715],{},"对于三维数组，axis是有三个值的0，1，2，进行转置，想换哪个就将默认的(0,1,2)进行改",[14,113717,113718],{},"四维及以上的数组也是一样的道理",[451,113720,113722],{"className":46787,"code":113721,"language":46789,"meta":32,"style":32},"x=np.arange(1,37).reshape(3,6,2)\nx.shape\n#结果：（3,6,2）\n#使用np.transpose()进行转置 变为(2,6,3)\nnp.transpose(x,(2,1,0)).shape\n#结果：(2,6,3)\naaaa=np.arange(1,37).reshape(3,2,1,6)\naaaa.shape\n#结果：（3，2，1，6）\n#使用np.transpose()进行转置 变为(2,1,3,6)\nnp.transpose(aaaa,(1,2,0,3)).shape\n#结果：(2,1,3,6)\n",[457,113723,113724,113752,113757,113762,113767,113785,113790,113822,113827,113832,113837,113858],{"__ignoreMap":32},[460,113725,113726,113728,113730,113732,113734,113736,113738,113740,113742,113744,113746,113748,113750],{"class":462,"line":463},[460,113727,13187],{"class":466},[460,113729,894],{"class":887},[460,113731,107495],{"class":466},[460,113733,901],{"class":900},[460,113735,3986],{"class":466},[460,113737,17064],{"class":900},[460,113739,107500],{"class":466},[460,113741,913],{"class":900},[460,113743,3986],{"class":466},[460,113745,4064],{"class":900},[460,113747,3986],{"class":466},[460,113749,907],{"class":900},[460,113751,3754],{"class":466},[460,113753,113754],{"class":462,"line":476},[460,113755,113756],{"class":466},"x.shape\n",[460,113758,113759],{"class":462,"line":482},[460,113760,113761],{"class":942},"#结果：（3,6,2）\n",[460,113763,113764],{"class":462,"line":488},[460,113765,113766],{"class":942},"#使用np.transpose()进行转置 变为(2,6,3)\n",[460,113768,113769,113772,113774,113776,113778,113780,113782],{"class":462,"line":494},[460,113770,113771],{"class":466},"np.transpose(x,(",[460,113773,907],{"class":900},[460,113775,3986],{"class":466},[460,113777,901],{"class":900},[460,113779,3986],{"class":466},[460,113781,936],{"class":900},[460,113783,113784],{"class":466},")).shape\n",[460,113786,113787],{"class":462,"line":500},[460,113788,113789],{"class":942},"#结果：(2,6,3)\n",[460,113791,113792,113794,113796,113798,113800,113802,113804,113806,113808,113810,113812,113814,113816,113818,113820],{"class":462,"line":506},[460,113793,112999],{"class":466},[460,113795,894],{"class":887},[460,113797,107495],{"class":466},[460,113799,901],{"class":900},[460,113801,3986],{"class":466},[460,113803,17064],{"class":900},[460,113805,107500],{"class":466},[460,113807,913],{"class":900},[460,113809,3986],{"class":466},[460,113811,907],{"class":900},[460,113813,3986],{"class":466},[460,113815,901],{"class":900},[460,113817,3986],{"class":466},[460,113819,4064],{"class":900},[460,113821,3754],{"class":466},[460,113823,113824],{"class":462,"line":512},[460,113825,113826],{"class":466},"aaaa.shape\n",[460,113828,113829],{"class":462,"line":518},[460,113830,113831],{"class":942},"#结果：（3，2，1，6）\n",[460,113833,113834],{"class":462,"line":525},[460,113835,113836],{"class":942},"#使用np.transpose()进行转置 变为(2,1,3,6)\n",[460,113838,113839,113842,113844,113846,113848,113850,113852,113854,113856],{"class":462,"line":531},[460,113840,113841],{"class":466},"np.transpose(aaaa,(",[460,113843,901],{"class":900},[460,113845,3986],{"class":466},[460,113847,907],{"class":900},[460,113849,3986],{"class":466},[460,113851,936],{"class":900},[460,113853,3986],{"class":466},[460,113855,913],{"class":900},[460,113857,113784],{"class":466},[460,113859,113860],{"class":462,"line":537},[460,113861,113862],{"class":942},"#结果：(2,1,3,6)\n",[1944,113864,113865],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":32,"searchDepth":476,"depth":476,"links":113867},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch7",{"title":113592,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch7-数组转置","b8e_wXc-54BtMmzlK4i2-r72ortHX_8oUIL58EtJh-E",{"id":113874,"title":113875,"body":113876,"description":16682,"extension":16683,"meta":114610,"navigation":521,"path":114611,"seo":114612,"stem":114613,"__hash__":114614},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch8-数组分割.md","8.数组分割",{"type":7,"value":113877,"toc":114608},[113878,113881,113884,113887,113890,113893,113896,113899,113902,114011,114014,114017,114605],[10,113879,113875],{"id":113880},"_8数组分割",[14,113882,113883],{},"split分割",[14,113885,113886],{},"numpy.split(ary,indics_or_sections,axis)",[14,113888,113889],{},"解释：",[14,113891,113892],{},"ary:被分割的数组",[14,113894,113895],{},"indics_or_sections:如果是一个整数，就用该数平均切分，如果是一个数组，为沿轴切分的位置(左开右闭)",[14,113897,113898],{},"axis:沿着哪个维度进行切向，默认为0，横向切分。为1时，纵向切分",[14,113900,113901],{},"①一维数组的分割",[451,113903,113905],{"className":46787,"code":113904,"language":46789,"meta":32,"style":32},"a=np.arange(1,9)\n#如果传入整数，必须能够平分，否则会报错\nnp.split(a,2)\n#结果：\n#[array([1, 2, 3, 4]), array([5, 6, 7, 8])]\nnp.split(a,4)\n#结果：\n#[array([1, 2]), array([3, 4]), array([5, 6]), array([7, 8])]\n#传入数组\nnp.split(a,[3,5])\n#结果：\n#[array([1, 2, 3]), array([4, 5]), array([6, 7, 8])]\nnp.split(a,[5,7])\n#结果：\n#[array([1, 2, 3, 4, 5]), array([6, 7]), array([8])]\n",[457,113906,113907,113923,113928,113937,113941,113946,113954,113958,113963,113968,113981,113985,113990,114002,114006],{"__ignoreMap":32},[460,113908,113909,113911,113913,113915,113917,113919,113921],{"class":462,"line":463},[460,113910,2756],{"class":466},[460,113912,894],{"class":887},[460,113914,107495],{"class":466},[460,113916,901],{"class":900},[460,113918,3986],{"class":466},[460,113920,17154],{"class":900},[460,113922,3754],{"class":466},[460,113924,113925],{"class":462,"line":476},[460,113926,113927],{"class":942},"#如果传入整数，必须能够平分，否则会报错\n",[460,113929,113930,113933,113935],{"class":462,"line":482},[460,113931,113932],{"class":466},"np.split(a,",[460,113934,907],{"class":900},[460,113936,3754],{"class":466},[460,113938,113939],{"class":462,"line":488},[460,113940,108057],{"class":942},[460,113942,113943],{"class":462,"line":494},[460,113944,113945],{"class":942},"#[array([1, 2, 3, 4]), array([5, 6, 7, 8])]\n",[460,113947,113948,113950,113952],{"class":462,"line":500},[460,113949,113932],{"class":466},[460,113951,918],{"class":900},[460,113953,3754],{"class":466},[460,113955,113956],{"class":462,"line":506},[460,113957,108057],{"class":942},[460,113959,113960],{"class":462,"line":512},[460,113961,113962],{"class":942},"#[array([1, 2]), array([3, 4]), array([5, 6]), array([7, 8])]\n",[460,113964,113965],{"class":462,"line":518},[460,113966,113967],{"class":942},"#传入数组\n",[460,113969,113970,113973,113975,113977,113979],{"class":462,"line":525},[460,113971,113972],{"class":466},"np.split(a,[",[460,113974,913],{"class":900},[460,113976,3986],{"class":466},[460,113978,7290],{"class":900},[460,113980,13249],{"class":466},[460,113982,113983],{"class":462,"line":531},[460,113984,108057],{"class":942},[460,113986,113987],{"class":462,"line":537},[460,113988,113989],{"class":942},"#[array([1, 2, 3]), array([4, 5]), array([6, 7, 8])]\n",[460,113991,113992,113994,113996,113998,114000],{"class":462,"line":543},[460,113993,113972],{"class":466},[460,113995,7290],{"class":900},[460,113997,3986],{"class":466},[460,113999,6149],{"class":900},[460,114001,13249],{"class":466},[460,114003,114004],{"class":462,"line":549},[460,114005,108057],{"class":942},[460,114007,114008],{"class":462,"line":555},[460,114009,114010],{"class":942},"#[array([1, 2, 3, 4, 5]), array([6, 7]), array([8])]\n",[14,114012,114013],{},"②二维数组的分割",[14,114015,114016],{},"使用split()",[451,114018,114020],{"className":46787,"code":114019,"language":46789,"meta":32,"style":32},"#二维数组分割\naa=np.arange(1,37).reshape(6,6)\n#默认axis=0  传入整数平均分,按行来的\nnp.split(aa,3)\n#输出结果：\n'''\n[array([[ 1,  2,  3,  4,  5,  6],\n        [ 7,  8,  9, 10, 11, 12]]),\n array([[13, 14, 15, 16, 17, 18],\n        [19, 20, 21, 22, 23, 24]]),\n array([[25, 26, 27, 28, 29, 30],\n        [31, 32, 33, 34, 35, 36]])]\n '''\n#传入数组\nnp.split(aa,[2,5])\n#输出结果：\n'''\n[array([[ 1,  2,  3,  4,  5,  6],\n        [ 7,  8,  9, 10, 11, 12]]),\n array([[13, 14, 15, 16, 17, 18],\n        [19, 20, 21, 22, 23, 24],\n        [25, 26, 27, 28, 29, 30]]),\n array([[31, 32, 33, 34, 35, 36]])]\n'''\n#axis=1 按照列来分\nnp.split(aa,3,axis=1)\n#输出结果：\n'''\n[array([[ 1,  2],\n        [ 7,  8],\n        [13, 14],\n        [19, 20],\n        [25, 26],\n        [31, 32]]),\n array([[ 3,  4],\n        [ 9, 10],\n        [15, 16],\n        [21, 22],\n        [27, 28],\n        [33, 34]]),\n array([[ 5,  6],\n        [11, 12],\n        [17, 18],\n        [23, 24],\n        [29, 30],\n        [35, 36]])]\n '''\n#传入数组\nnp.split(aa,[1,2],axis=1)\n#结果：\n'''\n[array([[ 1],\n        [ 7],\n        [13],\n        [19],\n        [25],\n        [31]]),\n array([[ 2],\n        [ 8],\n        [14],\n        [20],\n        [26],\n        [32]]),\n array([[ 3,  4,  5,  6],\n        [ 9, 10, 11, 12],\n        [15, 16, 17, 18],\n        [21, 22, 23, 24],\n        [27, 28, 29, 30],\n        [33, 34, 35, 36]])]\n'''\n#在处理二维数组时也可以直接用vsplit()和hsplit()函数\nnp.vsplit(aa,3)\n#结果：\n'''\n[array([[ 1,  2,  3,  4,  5,  6],\n        [ 7,  8,  9, 10, 11, 12]]),\n array([[13, 14, 15, 16, 17, 18],\n        [19, 20, 21, 22, 23, 24]]),\n array([[25, 26, 27, 28, 29, 30],\n        [31, 32, 33, 34, 35, 36]])]\n'''\nnp.hsplit(aa,3)\n#结果：\n'''\n[array([[ 1,  2],\n        [ 7,  8],\n        [13, 14],\n        [19, 20],\n        [25, 26],\n        [31, 32]]),\n array([[ 3,  4],\n        [ 9, 10],\n        [15, 16],\n        [21, 22],\n        [27, 28],\n        [33, 34]]),\n array([[ 5,  6],\n        [11, 12],\n        [17, 18],\n        [23, 24],\n        [29, 30],\n        [35, 36]])]\n'''\nnp.vsplit(aa,[2,5])\n#结果：\n'''\n[array([[ 1,  2,  3,  4,  5,  6],\n        [ 7,  8,  9, 10, 11, 12]]),\n array([[13, 14, 15, 16, 17, 18],\n        [19, 20, 21, 22, 23, 24],\n        [25, 26, 27, 28, 29, 30]]),\n array([[31, 32, 33, 34, 35, 36]])]\n '''\n",[457,114021,114022,114027,114051,114056,114065,114069,114073,114078,114083,114088,114093,114098,114103,114108,114112,114125,114129,114133,114137,114141,114145,114150,114155,114160,114164,114169,114185,114189,114193,114198,114203,114208,114213,114218,114223,114228,114233,114238,114243,114248,114253,114258,114263,114268,114273,114278,114283,114287,114291,114311,114315,114319,114324,114329,114334,114339,114344,114349,114354,114359,114364,114369,114374,114379,114384,114389,114394,114399,114404,114409,114413,114418,114427,114431,114435,114439,114443,114447,114451,114455,114459,114463,114472,114476,114480,114484,114488,114492,114496,114500,114504,114508,114512,114516,114520,114524,114528,114532,114536,114540,114544,114548,114552,114556,114569,114573,114577,114581,114585,114589,114593,114597,114601],{"__ignoreMap":32},[460,114023,114024],{"class":462,"line":463},[460,114025,114026],{"class":942},"#二维数组分割\n",[460,114028,114029,114031,114033,114035,114037,114039,114041,114043,114045,114047,114049],{"class":462,"line":476},[460,114030,107799],{"class":466},[460,114032,894],{"class":887},[460,114034,107495],{"class":466},[460,114036,901],{"class":900},[460,114038,3986],{"class":466},[460,114040,17064],{"class":900},[460,114042,107500],{"class":466},[460,114044,4064],{"class":900},[460,114046,3986],{"class":466},[460,114048,4064],{"class":900},[460,114050,3754],{"class":466},[460,114052,114053],{"class":462,"line":482},[460,114054,114055],{"class":942},"#默认axis=0  传入整数平均分,按行来的\n",[460,114057,114058,114061,114063],{"class":462,"line":488},[460,114059,114060],{"class":466},"np.split(aa,",[460,114062,913],{"class":900},[460,114064,3754],{"class":466},[460,114066,114067],{"class":462,"line":494},[460,114068,110257],{"class":942},[460,114070,114071],{"class":462,"line":500},[460,114072,108421],{"class":1353},[460,114074,114075],{"class":462,"line":506},[460,114076,114077],{"class":1353},"[array([[ 1,  2,  3,  4,  5,  6],\n",[460,114079,114080],{"class":462,"line":512},[460,114081,114082],{"class":1353},"        [ 7,  8,  9, 10, 11, 12]]),\n",[460,114084,114085],{"class":462,"line":518},[460,114086,114087],{"class":1353}," array([[13, 14, 15, 16, 17, 18],\n",[460,114089,114090],{"class":462,"line":525},[460,114091,114092],{"class":1353},"        [19, 20, 21, 22, 23, 24]]),\n",[460,114094,114095],{"class":462,"line":531},[460,114096,114097],{"class":1353}," array([[25, 26, 27, 28, 29, 30],\n",[460,114099,114100],{"class":462,"line":537},[460,114101,114102],{"class":1353},"        [31, 32, 33, 34, 35, 36]])]\n",[460,114104,114105],{"class":462,"line":543},[460,114106,114107],{"class":1353}," '''\n",[460,114109,114110],{"class":462,"line":549},[460,114111,113967],{"class":942},[460,114113,114114,114117,114119,114121,114123],{"class":462,"line":555},[460,114115,114116],{"class":466},"np.split(aa,[",[460,114118,907],{"class":900},[460,114120,3986],{"class":466},[460,114122,7290],{"class":900},[460,114124,13249],{"class":466},[460,114126,114127],{"class":462,"line":560},[460,114128,110257],{"class":942},[460,114130,114131],{"class":462,"line":566},[460,114132,108421],{"class":1353},[460,114134,114135],{"class":462,"line":572},[460,114136,114077],{"class":1353},[460,114138,114139],{"class":462,"line":578},[460,114140,114082],{"class":1353},[460,114142,114143],{"class":462,"line":812},[460,114144,114087],{"class":1353},[460,114146,114147],{"class":462,"line":818},[460,114148,114149],{"class":1353},"        [19, 20, 21, 22, 23, 24],\n",[460,114151,114152],{"class":462,"line":824},[460,114153,114154],{"class":1353},"        [25, 26, 27, 28, 29, 30]]),\n",[460,114156,114157],{"class":462,"line":2074},[460,114158,114159],{"class":1353}," array([[31, 32, 33, 34, 35, 36]])]\n",[460,114161,114162],{"class":462,"line":2088},[460,114163,108421],{"class":1353},[460,114165,114166],{"class":462,"line":2103},[460,114167,114168],{"class":942},"#axis=1 按照列来分\n",[460,114170,114171,114173,114175,114177,114179,114181,114183],{"class":462,"line":2122},[460,114172,114060],{"class":466},[460,114174,913],{"class":900},[460,114176,3986],{"class":466},[460,114178,63817],{"class":3380},[460,114180,894],{"class":887},[460,114182,901],{"class":900},[460,114184,3754],{"class":466},[460,114186,114187],{"class":462,"line":2144},[460,114188,110257],{"class":942},[460,114190,114191],{"class":462,"line":2158},[460,114192,108421],{"class":1353},[460,114194,114195],{"class":462,"line":2163},[460,114196,114197],{"class":1353},"[array([[ 1,  2],\n",[460,114199,114200],{"class":462,"line":2168},[460,114201,114202],{"class":1353},"        [ 7,  8],\n",[460,114204,114205],{"class":462,"line":2183},[460,114206,114207],{"class":1353},"        [13, 14],\n",[460,114209,114210],{"class":462,"line":2194},[460,114211,114212],{"class":1353},"        [19, 20],\n",[460,114214,114215],{"class":462,"line":2199},[460,114216,114217],{"class":1353},"        [25, 26],\n",[460,114219,114220],{"class":462,"line":2204},[460,114221,114222],{"class":1353},"        [31, 32]]),\n",[460,114224,114225],{"class":462,"line":2212},[460,114226,114227],{"class":1353}," array([[ 3,  4],\n",[460,114229,114230],{"class":462,"line":2257},[460,114231,114232],{"class":1353},"        [ 9, 10],\n",[460,114234,114235],{"class":462,"line":2285},[460,114236,114237],{"class":1353},"        [15, 16],\n",[460,114239,114240],{"class":462,"line":2298},[460,114241,114242],{"class":1353},"        [21, 22],\n",[460,114244,114245],{"class":462,"line":2303},[460,114246,114247],{"class":1353},"        [27, 28],\n",[460,114249,114250],{"class":462,"line":2308},[460,114251,114252],{"class":1353},"        [33, 34]]),\n",[460,114254,114255],{"class":462,"line":2318},[460,114256,114257],{"class":1353}," array([[ 5,  6],\n",[460,114259,114260],{"class":462,"line":2333},[460,114261,114262],{"class":1353},"        [11, 12],\n",[460,114264,114265],{"class":462,"line":2338},[460,114266,114267],{"class":1353},"        [17, 18],\n",[460,114269,114270],{"class":462,"line":2343},[460,114271,114272],{"class":1353},"        [23, 24],\n",[460,114274,114275],{"class":462,"line":2353},[460,114276,114277],{"class":1353},"        [29, 30],\n",[460,114279,114280],{"class":462,"line":2368},[460,114281,114282],{"class":1353},"        [35, 36]])]\n",[460,114284,114285],{"class":462,"line":2381},[460,114286,114107],{"class":1353},[460,114288,114289],{"class":462,"line":2394},[460,114290,113967],{"class":942},[460,114292,114293,114295,114297,114299,114301,114303,114305,114307,114309],{"class":462,"line":2399},[460,114294,114116],{"class":466},[460,114296,901],{"class":900},[460,114298,3986],{"class":466},[460,114300,907],{"class":900},[460,114302,57913],{"class":466},[460,114304,63817],{"class":3380},[460,114306,894],{"class":887},[460,114308,901],{"class":900},[460,114310,3754],{"class":466},[460,114312,114313],{"class":462,"line":2404},[460,114314,108057],{"class":942},[460,114316,114317],{"class":462,"line":2414},[460,114318,108421],{"class":1353},[460,114320,114321],{"class":462,"line":2428},[460,114322,114323],{"class":1353},"[array([[ 1],\n",[460,114325,114326],{"class":462,"line":2440},[460,114327,114328],{"class":1353},"        [ 7],\n",[460,114330,114331],{"class":462,"line":2445},[460,114332,114333],{"class":1353},"        [13],\n",[460,114335,114336],{"class":462,"line":2450},[460,114337,114338],{"class":1353},"        [19],\n",[460,114340,114341],{"class":462,"line":2460},[460,114342,114343],{"class":1353},"        [25],\n",[460,114345,114346],{"class":462,"line":2473},[460,114347,114348],{"class":1353},"        [31]]),\n",[460,114350,114351],{"class":462,"line":2487},[460,114352,114353],{"class":1353}," array([[ 2],\n",[460,114355,114356],{"class":462,"line":2492},[460,114357,114358],{"class":1353},"        [ 8],\n",[460,114360,114361],{"class":462,"line":2497},[460,114362,114363],{"class":1353},"        [14],\n",[460,114365,114366],{"class":462,"line":2505},[460,114367,114368],{"class":1353},"        [20],\n",[460,114370,114371],{"class":462,"line":2516},[460,114372,114373],{"class":1353},"        [26],\n",[460,114375,114376],{"class":462,"line":2529},[460,114377,114378],{"class":1353},"        [32]]),\n",[460,114380,114381],{"class":462,"line":2542},[460,114382,114383],{"class":1353}," array([[ 3,  4,  5,  6],\n",[460,114385,114386],{"class":462,"line":2559},[460,114387,114388],{"class":1353},"        [ 9, 10, 11, 12],\n",[460,114390,114391],{"class":462,"line":2564},[460,114392,114393],{"class":1353},"        [15, 16, 17, 18],\n",[460,114395,114396],{"class":462,"line":2569},[460,114397,114398],{"class":1353},"        [21, 22, 23, 24],\n",[460,114400,114401],{"class":462,"line":2579},[460,114402,114403],{"class":1353},"        [27, 28, 29, 30],\n",[460,114405,114406],{"class":462,"line":2597},[460,114407,114408],{"class":1353},"        [33, 34, 35, 36]])]\n",[460,114410,114411],{"class":462,"line":2610},[460,114412,108421],{"class":1353},[460,114414,114415],{"class":462,"line":2621},[460,114416,114417],{"class":942},"#在处理二维数组时也可以直接用vsplit()和hsplit()函数\n",[460,114419,114420,114423,114425],{"class":462,"line":2634},[460,114421,114422],{"class":466},"np.vsplit(aa,",[460,114424,913],{"class":900},[460,114426,3754],{"class":466},[460,114428,114429],{"class":462,"line":2648},[460,114430,108057],{"class":942},[460,114432,114433],{"class":462,"line":2653},[460,114434,108421],{"class":1353},[460,114436,114437],{"class":462,"line":2658},[460,114438,114077],{"class":1353},[460,114440,114441],{"class":462,"line":2670},[460,114442,114082],{"class":1353},[460,114444,114445],{"class":462,"line":2683},[460,114446,114087],{"class":1353},[460,114448,114449],{"class":462,"line":2695},[460,114450,114092],{"class":1353},[460,114452,114453],{"class":462,"line":2700},[460,114454,114097],{"class":1353},[460,114456,114457],{"class":462,"line":2709},[460,114458,114102],{"class":1353},[460,114460,114461],{"class":462,"line":2718},[460,114462,108421],{"class":1353},[460,114464,114465,114468,114470],{"class":462,"line":2723},[460,114466,114467],{"class":466},"np.hsplit(aa,",[460,114469,913],{"class":900},[460,114471,3754],{"class":466},[460,114473,114474],{"class":462,"line":2732},[460,114475,108057],{"class":942},[460,114477,114478],{"class":462,"line":2750},[460,114479,108421],{"class":1353},[460,114481,114482],{"class":462,"line":2782},[460,114483,114197],{"class":1353},[460,114485,114486],{"class":462,"line":2809},[460,114487,114202],{"class":1353},[460,114489,114490],{"class":462,"line":2836},[460,114491,114207],{"class":1353},[460,114493,114494],{"class":462,"line":2856},[460,114495,114212],{"class":1353},[460,114497,114498],{"class":462,"line":2865},[460,114499,114217],{"class":1353},[460,114501,114502],{"class":462,"line":2881},[460,114503,114222],{"class":1353},[460,114505,114506],{"class":462,"line":2887},[460,114507,114227],{"class":1353},[460,114509,114510],{"class":462,"line":2893},[460,114511,114232],{"class":1353},[460,114513,114514],{"class":462,"line":2899},[460,114515,114237],{"class":1353},[460,114517,114518],{"class":462,"line":2905},[460,114519,114242],{"class":1353},[460,114521,114522],{"class":462,"line":2911},[460,114523,114247],{"class":1353},[460,114525,114526],{"class":462,"line":2920},[460,114527,114252],{"class":1353},[460,114529,114530],{"class":462,"line":2929},[460,114531,114257],{"class":1353},[460,114533,114534],{"class":462,"line":2935},[460,114535,114262],{"class":1353},[460,114537,114538],{"class":462,"line":2948},[460,114539,114267],{"class":1353},[460,114541,114542],{"class":462,"line":2954},[460,114543,114272],{"class":1353},[460,114545,114546],{"class":462,"line":2965},[460,114547,114277],{"class":1353},[460,114549,114550],{"class":462,"line":2976},[460,114551,114282],{"class":1353},[460,114553,114554],{"class":462,"line":2987},[460,114555,108421],{"class":1353},[460,114557,114558,114561,114563,114565,114567],{"class":462,"line":2998},[460,114559,114560],{"class":466},"np.vsplit(aa,[",[460,114562,907],{"class":900},[460,114564,3986],{"class":466},[460,114566,7290],{"class":900},[460,114568,13249],{"class":466},[460,114570,114571],{"class":462,"line":3003},[460,114572,108057],{"class":942},[460,114574,114575],{"class":462,"line":3008},[460,114576,108421],{"class":1353},[460,114578,114579],{"class":462,"line":3018},[460,114580,114077],{"class":1353},[460,114582,114583],{"class":462,"line":3028},[460,114584,114082],{"class":1353},[460,114586,114587],{"class":462,"line":3038},[460,114588,114087],{"class":1353},[460,114590,114591],{"class":462,"line":3048},[460,114592,114149],{"class":1353},[460,114594,114595],{"class":462,"line":3053},[460,114596,114154],{"class":1353},[460,114598,114599],{"class":462,"line":3058},[460,114600,114159],{"class":1353},[460,114602,114603],{"class":462,"line":3068},[460,114604,114107],{"class":1353},[1944,114606,114607],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":114609},[],{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch8",{"title":113875,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch8-数组分割","EtL2Bly4jiNepAsv1SVPdwecsVcwy45QHq2yubCBEUA",{"id":114616,"title":114617,"body":114618,"description":16682,"extension":16683,"meta":115112,"navigation":521,"path":115113,"seo":115114,"stem":115115,"__hash__":115116},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Fch9-数学函数.md","9.数学函数",{"type":7,"value":114619,"toc":115103},[114620,114623,114626,114651,114655,114714,114766,114770,114772,114808,114862,114864,114902,114973,114977,114982,114986,114989,115022,115025,115029,115032,115035,115038,115041,115046,115050,115053,115056,115059,115062,115067,115071,115076,115079,115100],[10,114621,114617],{"id":114622},"_9数学函数",[14,114624,114625],{},"补充回顾：python的列表推导式",[451,114627,114629],{"className":46787,"code":114628,"language":46789,"meta":32,"style":32},"[1\u002Fi for i in a]\n",[457,114630,114631],{"__ignoreMap":32},[460,114632,114633,114635,114637,114639,114642,114644,114646,114648],{"class":462,"line":463},[460,114634,17601],{"class":466},[460,114636,901],{"class":900},[460,114638,8331],{"class":887},[460,114640,114641],{"class":466},"i ",[460,114643,19547],{"class":887},[460,114645,13991],{"class":466},[460,114647,11713],{"class":887},[460,114649,114650],{"class":466}," a]\n",[18,114652,114654],{"id":114653},"_91-求倒数","9.1 求倒数",[451,114656,114658],{"className":46787,"code":114657,"language":46789,"meta":32,"style":32},"#数组求倒数\na=[1,2,3,4,5]\nb=np.array(a)#将列表转换为数组\n1\u002Fb\n",[457,114659,114660,114665,114693,114705],{"__ignoreMap":32},[460,114661,114662],{"class":462,"line":463},[460,114663,114664],{"class":942},"#数组求倒数\n",[460,114666,114667,114669,114671,114673,114675,114677,114679,114681,114683,114685,114687,114689,114691],{"class":462,"line":476},[460,114668,2756],{"class":466},[460,114670,894],{"class":887},[460,114672,17601],{"class":466},[460,114674,901],{"class":900},[460,114676,3986],{"class":466},[460,114678,907],{"class":900},[460,114680,3986],{"class":466},[460,114682,913],{"class":900},[460,114684,3986],{"class":466},[460,114686,918],{"class":900},[460,114688,3986],{"class":466},[460,114690,7290],{"class":900},[460,114692,13307],{"class":466},[460,114694,114695,114697,114699,114702],{"class":462,"line":482},[460,114696,17005],{"class":466},[460,114698,894],{"class":887},[460,114700,114701],{"class":466},"np.array(a)",[460,114703,114704],{"class":942},"#将列表转换为数组\n",[460,114706,114707,114709,114711],{"class":462,"line":488},[460,114708,901],{"class":900},[460,114710,8331],{"class":887},[460,114712,114713],{"class":466},"b\n",[451,114715,114717],{"className":46787,"code":114716,"language":46789,"meta":32,"style":32},"a=[1,2,3,4,5]\nb=np.array(a)\n#调用numpy中的函数reciprocal()\nnp.reciprocal(b)\n",[457,114718,114719,114747,114756,114761],{"__ignoreMap":32},[460,114720,114721,114723,114725,114727,114729,114731,114733,114735,114737,114739,114741,114743,114745],{"class":462,"line":463},[460,114722,2756],{"class":466},[460,114724,894],{"class":887},[460,114726,17601],{"class":466},[460,114728,901],{"class":900},[460,114730,3986],{"class":466},[460,114732,907],{"class":900},[460,114734,3986],{"class":466},[460,114736,913],{"class":900},[460,114738,3986],{"class":466},[460,114740,918],{"class":900},[460,114742,3986],{"class":466},[460,114744,7290],{"class":900},[460,114746,13307],{"class":466},[460,114748,114749,114751,114753],{"class":462,"line":476},[460,114750,17005],{"class":466},[460,114752,894],{"class":887},[460,114754,114755],{"class":466},"np.array(a)\n",[460,114757,114758],{"class":462,"line":482},[460,114759,114760],{"class":942},"#调用numpy中的函数reciprocal()\n",[460,114762,114763],{"class":462,"line":488},[460,114764,114765],{"class":466},"np.reciprocal(b)\n",[18,114767,114769],{"id":114768},"_92-求平方","9.2 求平方",[14,114771,109023],{},[451,114773,114775],{"className":46787,"code":114774,"language":46789,"meta":32,"style":32},"#square()，求平方\n#一维数组\na=np.arange(1,10)\nnp.square(a)\n",[457,114776,114777,114782,114787,114803],{"__ignoreMap":32},[460,114778,114779],{"class":462,"line":463},[460,114780,114781],{"class":942},"#square()，求平方\n",[460,114783,114784],{"class":462,"line":476},[460,114785,114786],{"class":942},"#一维数组\n",[460,114788,114789,114791,114793,114795,114797,114799,114801],{"class":462,"line":482},[460,114790,2756],{"class":466},[460,114792,894],{"class":887},[460,114794,107495],{"class":466},[460,114796,901],{"class":900},[460,114798,3986],{"class":466},[460,114800,2096],{"class":900},[460,114802,3754],{"class":466},[460,114804,114805],{"class":462,"line":488},[460,114806,114807],{"class":466},"np.square(a)\n",[451,114809,114811],{"className":46787,"code":114810,"language":46789,"meta":32,"style":32},"#或者通过循环遍历的形式来计算\n#这是一个列表\n[i*i for i in a]#这个求完之后在数列当中\nnp.array([i*i for i in a])\n",[457,114812,114813,114818,114823,114844],{"__ignoreMap":32},[460,114814,114815],{"class":462,"line":463},[460,114816,114817],{"class":942},"#或者通过循环遍历的形式来计算\n",[460,114819,114820],{"class":462,"line":476},[460,114821,114822],{"class":942},"#这是一个列表\n",[460,114824,114825,114828,114830,114832,114834,114836,114838,114841],{"class":462,"line":482},[460,114826,114827],{"class":466},"[i",[460,114829,8320],{"class":887},[460,114831,114641],{"class":466},[460,114833,19547],{"class":887},[460,114835,13991],{"class":466},[460,114837,11713],{"class":887},[460,114839,114840],{"class":466}," a]",[460,114842,114843],{"class":942},"#这个求完之后在数列当中\n",[460,114845,114846,114849,114851,114853,114855,114857,114859],{"class":462,"line":488},[460,114847,114848],{"class":466},"np.array([i",[460,114850,8320],{"class":887},[460,114852,114641],{"class":466},[460,114854,19547],{"class":887},[460,114856,13991],{"class":466},[460,114858,11713],{"class":887},[460,114860,114861],{"class":466}," a])\n",[14,114863,107784],{},[451,114865,114867],{"className":46787,"code":114866,"language":46789,"meta":32,"style":32},"#二维数组\naa=np.arange(1,13).reshape(4,3)\nnp.square(aa)\n",[457,114868,114869,114873,114897],{"__ignoreMap":32},[460,114870,114871],{"class":462,"line":463},[460,114872,107794],{"class":942},[460,114874,114875,114877,114879,114881,114883,114885,114887,114889,114891,114893,114895],{"class":462,"line":476},[460,114876,107799],{"class":466},[460,114878,894],{"class":887},[460,114880,107495],{"class":466},[460,114882,901],{"class":900},[460,114884,3986],{"class":466},[460,114886,17250],{"class":900},[460,114888,107500],{"class":466},[460,114890,918],{"class":900},[460,114892,3986],{"class":466},[460,114894,913],{"class":900},[460,114896,3754],{"class":466},[460,114898,114899],{"class":462,"line":482},[460,114900,114901],{"class":466},"np.square(aa)\n",[451,114903,114905],{"className":46787,"code":114904,"language":46789,"meta":32,"style":32},"#传统的方式\nbb=np.empty_like(aa)\nfor i in range(4):\n    for j in range(3):\n        bb[i,j]=aa[i,j]*aa[i,j]\nbb\n",[457,114906,114907,114912,114921,114937,114953,114968],{"__ignoreMap":32},[460,114908,114909],{"class":462,"line":463},[460,114910,114911],{"class":942},"#传统的方式\n",[460,114913,114914,114916,114918],{"class":462,"line":476},[460,114915,112680],{"class":466},[460,114917,894],{"class":887},[460,114919,114920],{"class":466},"np.empty_like(aa)\n",[460,114922,114923,114925,114927,114929,114931,114933,114935],{"class":462,"line":482},[460,114924,19547],{"class":887},[460,114926,13991],{"class":466},[460,114928,11713],{"class":887},[460,114930,48848],{"class":900},[460,114932,2174],{"class":466},[460,114934,918],{"class":900},[460,114936,47194],{"class":466},[460,114938,114939,114941,114943,114945,114947,114949,114951],{"class":462,"line":488},[460,114940,19722],{"class":887},[460,114942,25984],{"class":466},[460,114944,11713],{"class":887},[460,114946,48848],{"class":900},[460,114948,2174],{"class":466},[460,114950,913],{"class":900},[460,114952,47194],{"class":466},[460,114954,114955,114958,114960,114963,114965],{"class":462,"line":494},[460,114956,114957],{"class":466},"        bb[i,j]",[460,114959,894],{"class":887},[460,114961,114962],{"class":466},"aa[i,j]",[460,114964,8320],{"class":887},[460,114966,114967],{"class":466},"aa[i,j]\n",[460,114969,114970],{"class":462,"line":500},[460,114971,114972],{"class":466},"bb\n",[18,114974,114976],{"id":114975},"_93-求各元素的符号","9.3 求各元素的符号",[14,114978,114979],{},[30,114980],{"alt":32,"src":114981},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-028.png",[18,114983,114985],{"id":114984},"_94-modf函数","9.4 modf函数",[14,114987,114988],{},"计算各元素的小数部分和整数部分以两个独立的数组返回",[451,114990,114992],{"className":46787,"code":114991,"language":46789,"meta":32,"style":32},"a=np.arange(-10,10,0.3)\nnp.modf(a)\n",[457,114993,114994,115017],{"__ignoreMap":32},[460,114995,114996,114998,115000,115002,115004,115006,115008,115010,115012,115015],{"class":462,"line":463},[460,114997,2756],{"class":466},[460,114999,894],{"class":887},[460,115001,107495],{"class":466},[460,115003,17259],{"class":887},[460,115005,2096],{"class":900},[460,115007,3986],{"class":466},[460,115009,2096],{"class":900},[460,115011,3986],{"class":466},[460,115013,115014],{"class":900},"0.3",[460,115016,3754],{"class":466},[460,115018,115019],{"class":462,"line":476},[460,115020,115021],{"class":466},"np.modf(a)\n",[14,115023,115024],{},"总结：就是得到两个数组，一个是由小数部分组成，另一个数组是由整数部分组成",[18,115026,115028],{"id":115027},"_95-向上取整向下取整四舍五入","9.5 向上取整、向下取整、四舍五入",[14,115030,115031],{},"np.cell()",[14,115033,115034],{},"np.floor()",[14,115036,115037],{},"np.rint()",[14,115039,115040],{},"对各元素分别向上取整、向下取整、四舍五入",[14,115042,115043],{},[30,115044],{"alt":32,"src":115045},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-029.png",[18,115047,115049],{"id":115048},"_96-around函数","9.6 around()函数",[14,115051,115052],{},"around()函数也可以实现对数的小数位数进行操作",[14,115054,115055],{},"其中的参数：",[14,115057,115058],{},"1.要传的数组",[14,115060,115061],{},"2.decimals:舍入的小数位数。默认值为0。如果为负，整数将四舍五入到小数点左侧的位置",[14,115063,115064],{},[30,115065],{"alt":32,"src":115066},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-030.png",[18,115068,115070],{"id":115069},"_97-三角函数","9.7 三角函数",[14,115072,115073],{},[30,115074],{"alt":32,"src":115075},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-08-14-numpy-031.png",[14,115077,115078],{},"引入图像模块非常重要",[451,115080,115082],{"className":46787,"code":115081,"language":46789,"meta":32,"style":32},"from matplotlib import pyplot as plt\n",[457,115083,115084],{"__ignoreMap":32},[460,115085,115086,115088,115091,115093,115096,115098],{"class":462,"line":463},[460,115087,47145],{"class":887},[460,115089,115090],{"class":466}," matplotlib ",[460,115092,46801],{"class":887},[460,115094,115095],{"class":466}," pyplot ",[460,115097,47790],{"class":887},[460,115099,47844],{"class":466},[1944,115101,115102],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":32,"searchDepth":476,"depth":476,"links":115104},[115105,115106,115107,115108,115109,115110,115111],{"id":114653,"depth":476,"text":114654},{"id":114768,"depth":476,"text":114769},{"id":114975,"depth":476,"text":114976},{"id":114984,"depth":476,"text":114985},{"id":115027,"depth":476,"text":115028},{"id":115048,"depth":476,"text":115049},{"id":115069,"depth":476,"text":115070},{},"\u002Fwiki\u002F2025-08-14-numpy\u002Fch9",{"title":114617,"description":16682},"wiki\u002F2025-08-14-numpy\u002Fch9-数学函数","1vxUPQoUv_FZuP3od2FOv2EdjAo9vkX9v0c_KhgwghE",{"id":115118,"title":115119,"body":115120,"description":16682,"extension":16683,"meta":115124,"navigation":521,"path":115125,"seo":115126,"stem":115127,"__hash__":115128},"wiki\u002Fwiki\u002F2025-08-14-numpy\u002Findex.md","numpy",{"type":7,"value":115121,"toc":115122},[],{"title":32,"searchDepth":476,"depth":476,"links":115123},[],{"category":66723},"\u002Fwiki\u002F2025-08-14-numpy",{"title":115119,"description":16682},"wiki\u002F2025-08-14-numpy\u002Findex","LNFBKvmcgRD1D7XQFRHkBXoHVybQyN9jvfse3YyadCE",{"id":115130,"title":115131,"body":115132,"description":32,"extension":16683,"meta":117140,"navigation":521,"path":117141,"seo":117142,"stem":117143,"__hash__":117144},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Fch1-环境安装与第一个MuJoCo程序.md","1.环境安装与第一个 MuJoCo 程序",{"type":7,"value":115133,"toc":117116},[115134,115137,115141,115144,115147,115153,115156,115179,115182,115216,115219,115260,115264,115267,115360,115363,115407,115410,115427,115430,115444,115447,115450,115495,115498,115535,115539,115542,115548,115553,115573,115577,115580,115646,115649,115667,115671,115674,115703,115713,115719,115723,115726,115732,115743,115747,115750,115780,115783,116063,116066,116069,116080,116083,116086,116108,116115,116118,116136,116139,116142,116156,116164,116167,116193,116199,116202,116205,116215,116227,116247,116256,116276,116286,116310,116323,116337,116342,116383,116400,116425,116437,116457,116463,116508,116527,116544,116557,116573,116580,116592,116601,116636,116657,116682,116695,116719,116734,116759,116762,116783,116792,116795,116806,116810,116813,116819,116831,116838,116842,116845,116857,116860,116874,116877,116887,116897,116900,116940,116943,116947,116953,116956,116970,116974,116977,117010,117014,117017,117040,117048,117051,117057,117063,117066,117069,117097,117101,117104,117110,117113],[10,115135,115131],{"id":115136},"_1环境安装与第一个-mujoco-程序",[18,115138,115140],{"id":115139},"_1目标说明","1.目标说明",[14,115142,115143],{},"本章完成 MuJoCo 官方 Python bindings 的安装，并运行第一个最小仿真程序。这个程序只做一件事：创建一个红色小方块，让它在重力作用下下落。",[14,115145,115146],{},"如果你是纯新手，本章最重要的目标不是记住所有安装命令，而是理解 MuJoCo 程序的最小闭环：",[451,115148,115151],{"className":115149,"code":115150,"language":8391,"meta":32},[21693],"写 XML\n→ 编译成 model\n→ 创建 data\n→ 调用 mj_step\n→ 读取仿真状态\n",[457,115152,115150],{"__ignoreMap":32},[14,115154,115155],{},"需要掌握:",[103,115157,115158,115161,115164,115169,115174],{},[43,115159,115160],{},"Fedora 44 下 MuJoCo 的系统依赖",[43,115162,115163],{},"Python 虚拟环境创建",[43,115165,115166],{},[457,115167,115168],{},"mujoco.MjModel",[43,115170,115171],{},[457,115172,115173],{},"mujoco.MjData",[43,115175,115176],{},[457,115177,115178],{},"mujoco.mj_step(model, data)",[14,115180,115181],{},"MuJoCo 中最重要的两个对象:",[16884,115183,115184,115194],{},[16887,115185,115186],{},[16890,115187,115188,115191],{},[16893,115189,115190],{"align":40149},"对象",[16893,115192,115193],{"align":40149},"含义",[16930,115195,115196,115206],{},[16890,115197,115198,115203],{},[16935,115199,115200],{"align":40149},[457,115201,115202],{},"MjModel",[16935,115204,115205],{"align":40149},"模型结构，来自 XML，基本不随时间变化",[16890,115207,115208,115213],{},[16935,115209,115210],{"align":40149},[457,115211,115212],{},"MjData",[16935,115214,115215],{"align":40149},"仿真状态，包含位置、速度、力、时间等，会随仿真推进变化",[14,115217,115218],{},"可以先用一个类比理解：",[16884,115220,115221,115231],{},[16887,115222,115223],{},[16890,115224,115225,115228],{},[16893,115226,115227],{"align":40149},"类比",[16893,115229,115230],{"align":40149},"MuJoCo 对象",[16930,115232,115233,115242,115251],{},[16890,115234,115235,115238],{},[16935,115236,115237],{"align":40149},"游戏地图和角色配置",[16935,115239,115240],{"align":40149},[457,115241,115202],{},[16890,115243,115244,115247],{},[16935,115245,115246],{"align":40149},"游戏运行到当前帧的状态",[16935,115248,115249],{"align":40149},[457,115250,115212],{},[16890,115252,115253,115256],{},[16935,115254,115255],{"align":40149},"前进一帧",[16935,115257,115258],{"align":40149},[457,115259,115178],{},[18,115261,115263],{"id":115262},"_2环境与依赖安装","2.环境与依赖安装",[14,115265,115266],{},"Fedora 44 系统依赖:",[451,115268,115270],{"className":40235,"code":115269,"language":40237,"meta":32,"style":32},"sudo dnf install -y \\\n  python3 python3-pip python3-virtualenv \\\n  mesa-libGL mesa-libGLU mesa-dri-drivers \\\n  libglvnd-glx libglvnd-opengl \\\n  glfw glfw-devel \\\n  libX11 libXcursor libXi libXinerama libXrandr \\\n  gcc gcc-c++ make\n",[457,115271,115272,115284,115297,115310,115320,115330,115349],{"__ignoreMap":32},[460,115273,115274,115276,115278,115280,115282],{"class":462,"line":463},[460,115275,40989],{"class":929},[460,115277,42726],{"class":1353},[460,115279,40247],{"class":1353},[460,115281,42811],{"class":900},[460,115283,41091],{"class":900},[460,115285,115286,115289,115292,115295],{"class":462,"line":476},[460,115287,115288],{"class":1353},"  python3",[460,115290,115291],{"class":1353}," python3-pip",[460,115293,115294],{"class":1353}," python3-virtualenv",[460,115296,41091],{"class":900},[460,115298,115299,115302,115305,115308],{"class":462,"line":482},[460,115300,115301],{"class":1353},"  mesa-libGL",[460,115303,115304],{"class":1353}," mesa-libGLU",[460,115306,115307],{"class":1353}," mesa-dri-drivers",[460,115309,41091],{"class":900},[460,115311,115312,115315,115318],{"class":462,"line":488},[460,115313,115314],{"class":1353},"  libglvnd-glx",[460,115316,115317],{"class":1353}," libglvnd-opengl",[460,115319,41091],{"class":900},[460,115321,115322,115325,115328],{"class":462,"line":494},[460,115323,115324],{"class":1353},"  glfw",[460,115326,115327],{"class":1353}," glfw-devel",[460,115329,41091],{"class":900},[460,115331,115332,115335,115338,115341,115344,115347],{"class":462,"line":500},[460,115333,115334],{"class":1353},"  libX11",[460,115336,115337],{"class":1353}," libXcursor",[460,115339,115340],{"class":1353}," libXi",[460,115342,115343],{"class":1353}," libXinerama",[460,115345,115346],{"class":1353}," libXrandr",[460,115348,41091],{"class":900},[460,115350,115351,115354,115357],{"class":462,"line":506},[460,115352,115353],{"class":1353},"  gcc",[460,115355,115356],{"class":1353}," gcc-c++",[460,115358,115359],{"class":1353}," make\n",[14,115361,115362],{},"创建 Python 环境:",[451,115364,115366],{"className":40235,"code":115365,"language":40237,"meta":32,"style":32},"python3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npython -m pip install --upgrade pip\n",[457,115367,115368,115382,115390],{"__ignoreMap":32},[460,115369,115370,115373,115376,115379],{"class":462,"line":463},[460,115371,115372],{"class":929},"python3",[460,115374,115375],{"class":900}," -m",[460,115377,115378],{"class":1353}," venv",[460,115380,115381],{"class":1353}," .venv\n",[460,115383,115384,115387],{"class":462,"line":476},[460,115385,115386],{"class":900},"source",[460,115388,115389],{"class":1353}," .venv\u002Fbin\u002Factivate\n",[460,115391,115392,115394,115396,115399,115401,115404],{"class":462,"line":482},[460,115393,46789],{"class":929},[460,115395,115375],{"class":900},[460,115397,115398],{"class":1353}," pip",[460,115400,40247],{"class":1353},[460,115402,115403],{"class":900}," --upgrade",[460,115405,115406],{"class":1353}," pip\n",[14,115408,115409],{},"pip 安装:",[451,115411,115413],{"className":40235,"code":115412,"language":40237,"meta":32,"style":32},"pip install \"mujoco>=2.3\" numpy\n",[457,115414,115415],{"__ignoreMap":32},[460,115416,115417,115419,115421,115424],{"class":462,"line":463},[460,115418,40244],{"class":929},[460,115420,40247],{"class":1353},[460,115422,115423],{"class":1353}," \"mujoco>=2.3\"",[460,115425,115426],{"class":1353}," numpy\n",[14,115428,115429],{},"安装完成后，先做最小检查：",[451,115431,115433],{"className":40235,"code":115432,"language":40237,"meta":32,"style":32},"python -c \"import mujoco; print(mujoco.__version__)\"\n",[457,115434,115435],{"__ignoreMap":32},[460,115436,115437,115439,115441],{"class":462,"line":463},[460,115438,46789],{"class":929},[460,115440,46767],{"class":900},[460,115442,115443],{"class":1353}," \"import mujoco; print(mujoco.__version__)\"\n",[14,115445,115446],{},"只要能打印版本号，说明 Python 已经能找到 MuJoCo。",[14,115448,115449],{},"conda 安装:",[451,115451,115453],{"className":40235,"code":115452,"language":40237,"meta":32,"style":32},"conda create -n mujoco-study python=3.10 -y\nconda activate mujoco-study\npip install \"mujoco>=2.3\" numpy\n",[457,115454,115455,115475,115485],{"__ignoreMap":32},[460,115456,115457,115459,115461,115463,115466,115469,115472],{"class":462,"line":463},[460,115458,46739],{"class":929},[460,115460,45585],{"class":1353},[460,115462,41528],{"class":900},[460,115464,115465],{"class":1353}," mujoco-study",[460,115467,115468],{"class":1353}," python=",[460,115470,115471],{"class":900},"3.10",[460,115473,115474],{"class":900}," -y\n",[460,115476,115477,115479,115482],{"class":462,"line":476},[460,115478,46739],{"class":929},[460,115480,115481],{"class":1353}," activate",[460,115483,115484],{"class":1353}," mujoco-study\n",[460,115486,115487,115489,115491,115493],{"class":462,"line":482},[460,115488,40244],{"class":929},[460,115490,40247],{"class":1353},[460,115492,115423],{"class":1353},[460,115494,115426],{"class":1353},[14,115496,115497],{},"版本冲突说明:",[103,115499,115500,115506,115516,115525],{},[43,115501,115502,115503,44794],{},"不要安装 ",[457,115504,115505],{},"mujoco-py",[43,115507,115508,115509,115511,115512,115515],{},"如果旧项目里同时安装了 ",[457,115510,115505],{}," 和 ",[457,115513,115514],{},"mujoco","，建议新建干净虚拟环境。",[43,115517,115518,115521,115522,44794],{},[457,115519,115520],{},"mujoco>=2.3"," 官方 Python bindings 已包含 MuJoCo 原生库，不需要手动下载旧版 ",[457,115523,115524],{},"~\u002F.mujoco\u002Fmujoco210",[43,115526,115527,115528,6271,115531,115534],{},"离屏渲染可能涉及 OpenGL 后端，",[457,115529,115530],{},"MUJOCO_GL=egl",[457,115532,115533],{},"MUJOCO_GL=osmesa"," 在不同机器上可能存在版本差异。",[18,115536,115538],{"id":115537},"_3核心概念解释","3.核心概念解释",[14,115540,115541],{},"MuJoCo 的基本执行流程:",[451,115543,115546],{"className":115544,"code":115545,"language":8391,"meta":32},[21693],"XML 字符串\u002F文件\n→ MjModel\n→ MjData\n→ mj_step\n→ 读取 data 中的状态\n",[457,115547,115545],{"__ignoreMap":32},[14,115549,115550,115552],{},[457,115551,115202],{}," 存放模型定义，例如关节数量、几何体数量、actuator 数量、timestep、body 层级结构。",[14,115554,115555,115557,115558,16957,115561,16957,115564,16957,115567,16957,115570,44794],{},[457,115556,115212],{}," 存放仿真运行时状态，例如 ",[457,115559,115560],{},"data.time",[457,115562,115563],{},"data.qpos",[457,115565,115566],{},"data.qvel",[457,115568,115569],{},"data.ctrl",[457,115571,115572],{},"data.xpos",[23,115574,115576],{"id":115575},"xml-是什么","XML 是什么",[14,115578,115579],{},"MuJoCo 默认使用 MJCF XML 描述模型。你暂时不用完整学习 XML，只要知道它是一种带层级结构的文本格式：",[451,115581,115583],{"className":453,"code":115582,"language":455,"meta":32,"style":32},"\u003Cbody name=\"box\" pos=\"0 0 1\">\n  \u003Cgeom name=\"box_geom\" type=\"box\" size=\"0.1 0.1 0.1\"\u002F>\n\u003C\u002Fbody>\n",[457,115584,115585,115607,115638],{"__ignoreMap":32},[460,115586,115587,115589,115591,115593,115595,115597,115600,115602,115605],{"class":462,"line":463},[460,115588,781],{"class":466},[460,115590,1721],{"class":470},[460,115592,1908],{"class":929},[460,115594,894],{"class":466},[460,115596,13932],{"class":1353},[460,115598,115599],{"class":929}," pos",[460,115601,894],{"class":466},[460,115603,115604],{"class":1353},"\"0 0 1\"",[460,115606,473],{"class":466},[460,115608,115609,115611,115614,115616,115618,115621,115623,115625,115627,115630,115632,115635],{"class":462,"line":476},[460,115610,467],{"class":466},[460,115612,115613],{"class":470},"geom",[460,115615,1908],{"class":929},[460,115617,894],{"class":466},[460,115619,115620],{"class":1353},"\"box_geom\"",[460,115622,70071],{"class":929},[460,115624,894],{"class":466},[460,115626,13932],{"class":1353},[460,115628,115629],{"class":929}," size",[460,115631,894],{"class":466},[460,115633,115634],{"class":1353},"\"0.1 0.1 0.1\"",[460,115636,115637],{"class":466},"\u002F>\n",[460,115639,115640,115642,115644],{"class":462,"line":482},[460,115641,1776],{"class":466},[460,115643,1721],{"class":470},[460,115645,473],{"class":466},[14,115647,115648],{},"这段意思是：",[103,115650,115651,115657,115664],{},[43,115652,115653,115654,115656],{},"创建一个叫 ",[457,115655,69961],{}," 的刚体。",[43,115658,115659,115660,115663],{},"它初始放在 ",[457,115661,115662],{},"(0, 0, 1)","，也就是 z 轴高度为 1。",[43,115665,115666],{},"它里面有一个盒子形状的几何体。",[23,115668,115670],{"id":115669},"timestep-是什么","timestep 是什么",[14,115672,115673],{},"XML 里的：",[451,115675,115677],{"className":453,"code":115676,"language":455,"meta":32,"style":32},"\u003Coption timestep=\"0.01\" gravity=\"0 0 -9.81\"\u002F>\n",[457,115678,115679],{"__ignoreMap":32},[460,115680,115681,115683,115685,115688,115690,115693,115696,115698,115701],{"class":462,"line":463},[460,115682,781],{"class":466},[460,115684,85321],{"class":470},[460,115686,115687],{"class":929}," timestep",[460,115689,894],{"class":466},[460,115691,115692],{"class":1353},"\"0.01\"",[460,115694,115695],{"class":929}," gravity",[460,115697,894],{"class":466},[460,115699,115700],{"class":1353},"\"0 0 -9.81\"",[460,115702,115637],{"class":466},[14,115704,115705,115706,115709,115710,115712],{},"表示每调用一次 ",[457,115707,115708],{},"mj_step","，仿真时间前进 ",[457,115711,55291],{}," 秒。循环 100 次，大约就是 1 秒：",[451,115714,115717],{"className":115715,"code":115716,"language":8391,"meta":32},[21693],"100 steps * 0.01 second\u002Fstep = 1.0 second\n",[457,115718,115716],{"__ignoreMap":32},[23,115720,115722],{"id":115721},"为什么-freejoint-的-qpos-是-7-维","为什么 freejoint 的 qpos 是 7 维",[14,115724,115725],{},"自由物体在三维空间里可以平移和旋转。MuJoCo 用：",[451,115727,115730],{"className":115728,"code":115729,"language":8391,"meta":32},[21693],"x y z qw qx qy qz\n",[457,115731,115729],{"__ignoreMap":32},[14,115733,115734,115735,115738,115739,115742],{},"表示一个自由刚体的位置和姿态。其中 ",[457,115736,115737],{},"x y z"," 是位置，",[457,115740,115741],{},"qw qx qy qz"," 是四元数，用来表示旋转。新手不需要马上掌握四元数，只要知道它是“姿态”的表示方法。",[18,115744,115746],{"id":115745},"_4最小可运行代码mre","4.最小可运行代码（MRE）",[14,115748,115749],{},"新建文件:",[451,115751,115753],{"className":40235,"code":115752,"language":40237,"meta":32,"style":32},"mkdir -p mujoco_tutorial\ncd mujoco_tutorial\ntouch ch1_first_sim.py\n",[457,115754,115755,115765,115772],{"__ignoreMap":32},[460,115756,115757,115760,115762],{"class":462,"line":463},[460,115758,115759],{"class":929},"mkdir",[460,115761,45625],{"class":900},[460,115763,115764],{"class":1353}," mujoco_tutorial\n",[460,115766,115767,115770],{"class":462,"line":476},[460,115768,115769],{"class":900},"cd",[460,115771,115764],{"class":1353},[460,115773,115774,115777],{"class":462,"line":482},[460,115775,115776],{"class":929},"touch",[460,115778,115779],{"class":1353}," ch1_first_sim.py\n",[14,115781,115782],{},"写入:",[451,115784,115786],{"className":46787,"code":115785,"language":46789,"meta":32,"style":32},"import mujoco\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"first_sim\">\n  \u003Coption timestep=\"0.01\" gravity=\"0 0 -9.81\"\u002F>\n\n  \u003Cworldbody>\n    \u003Cgeom name=\"floor\" type=\"plane\" size=\"2 2 0.1\" rgba=\"0.8 0.8 0.8 1\"\u002F>\n\n    \u003Cbody name=\"box\" pos=\"0 0 1\">\n      \u003Cfreejoint name=\"box_free\"\u002F>\n      \u003Cgeom name=\"box_geom\" type=\"box\" size=\"0.1 0.1 0.1\" mass=\"1\" rgba=\"1 0 0 1\"\u002F>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\ndef main() -> None:\n    model = mujoco.MjModel.from_xml_string(XML)\n    data = mujoco.MjData(model)\n\n    print(\"nq:\", model.nq)\n    print(\"nv:\", model.nv)\n    print(\"nu:\", model.nu)\n    print(\"initial time:\", data.time)\n    print(\"initial qpos:\", data.qpos.copy())\n\n    for _ in range(100):\n        mujoco.mj_step(model, data)\n\n    print(\"final time:\", data.time)\n    print(\"final qpos:\", data.qpos.copy())\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,115787,115788,115795,115799,115803,115813,115818,115823,115827,115832,115837,115841,115846,115851,115856,115861,115866,115871,115875,115879,115883,115896,115910,115920,115924,115936,115948,115960,115972,115984,115988,116005,116010,116014,116025,116036,116040,116044,116058],{"__ignoreMap":32},[460,115789,115790,115792],{"class":462,"line":463},[460,115791,46801],{"class":887},[460,115793,115794],{"class":466}," mujoco\n",[460,115796,115797],{"class":462,"line":476},[460,115798,522],{"emptyLinePlaceholder":521},[460,115800,115801],{"class":462,"line":482},[460,115802,522],{"emptyLinePlaceholder":521},[460,115804,115805,115808,115810],{"class":462,"line":488},[460,115806,115807],{"class":900},"XML",[460,115809,2943],{"class":887},[460,115811,115812],{"class":1353}," \"\"\"\n",[460,115814,115815],{"class":462,"line":494},[460,115816,115817],{"class":1353},"\u003Cmujoco model=\"first_sim\">\n",[460,115819,115820],{"class":462,"line":500},[460,115821,115822],{"class":1353},"  \u003Coption timestep=\"0.01\" gravity=\"0 0 -9.81\"\u002F>\n",[460,115824,115825],{"class":462,"line":506},[460,115826,522],{"emptyLinePlaceholder":521},[460,115828,115829],{"class":462,"line":512},[460,115830,115831],{"class":1353},"  \u003Cworldbody>\n",[460,115833,115834],{"class":462,"line":518},[460,115835,115836],{"class":1353},"    \u003Cgeom name=\"floor\" type=\"plane\" size=\"2 2 0.1\" rgba=\"0.8 0.8 0.8 1\"\u002F>\n",[460,115838,115839],{"class":462,"line":525},[460,115840,522],{"emptyLinePlaceholder":521},[460,115842,115843],{"class":462,"line":531},[460,115844,115845],{"class":1353},"    \u003Cbody name=\"box\" pos=\"0 0 1\">\n",[460,115847,115848],{"class":462,"line":537},[460,115849,115850],{"class":1353},"      \u003Cfreejoint name=\"box_free\"\u002F>\n",[460,115852,115853],{"class":462,"line":543},[460,115854,115855],{"class":1353},"      \u003Cgeom name=\"box_geom\" type=\"box\" size=\"0.1 0.1 0.1\" mass=\"1\" rgba=\"1 0 0 1\"\u002F>\n",[460,115857,115858],{"class":462,"line":549},[460,115859,115860],{"class":1353},"    \u003C\u002Fbody>\n",[460,115862,115863],{"class":462,"line":555},[460,115864,115865],{"class":1353},"  \u003C\u002Fworldbody>\n",[460,115867,115868],{"class":462,"line":560},[460,115869,115870],{"class":1353},"\u003C\u002Fmujoco>\n",[460,115872,115873],{"class":462,"line":566},[460,115874,110191],{"class":1353},[460,115876,115877],{"class":462,"line":572},[460,115878,522],{"emptyLinePlaceholder":521},[460,115880,115881],{"class":462,"line":578},[460,115882,522],{"emptyLinePlaceholder":521},[460,115884,115885,115887,115889,115892,115894],{"class":462,"line":812},[460,115886,48352],{"class":887},[460,115888,18514],{"class":929},[460,115890,115891],{"class":466},"() -> ",[460,115893,110179],{"class":900},[460,115895,20257],{"class":466},[460,115897,115898,115901,115903,115906,115908],{"class":462,"line":818},[460,115899,115900],{"class":466},"    model ",[460,115902,894],{"class":887},[460,115904,115905],{"class":466}," mujoco.MjModel.from_xml_string(",[460,115907,115807],{"class":900},[460,115909,3754],{"class":466},[460,115911,115912,115915,115917],{"class":462,"line":824},[460,115913,115914],{"class":466},"    data ",[460,115916,894],{"class":887},[460,115918,115919],{"class":466}," mujoco.MjData(model)\n",[460,115921,115922],{"class":462,"line":2074},[460,115923,522],{"emptyLinePlaceholder":521},[460,115925,115926,115928,115930,115933],{"class":462,"line":2088},[460,115927,47706],{"class":900},[460,115929,2174],{"class":466},[460,115931,115932],{"class":1353},"\"nq:\"",[460,115934,115935],{"class":466},", model.nq)\n",[460,115937,115938,115940,115942,115945],{"class":462,"line":2103},[460,115939,47706],{"class":900},[460,115941,2174],{"class":466},[460,115943,115944],{"class":1353},"\"nv:\"",[460,115946,115947],{"class":466},", model.nv)\n",[460,115949,115950,115952,115954,115957],{"class":462,"line":2122},[460,115951,47706],{"class":900},[460,115953,2174],{"class":466},[460,115955,115956],{"class":1353},"\"nu:\"",[460,115958,115959],{"class":466},", model.nu)\n",[460,115961,115962,115964,115966,115969],{"class":462,"line":2144},[460,115963,47706],{"class":900},[460,115965,2174],{"class":466},[460,115967,115968],{"class":1353},"\"initial time:\"",[460,115970,115971],{"class":466},", data.time)\n",[460,115973,115974,115976,115978,115981],{"class":462,"line":2158},[460,115975,47706],{"class":900},[460,115977,2174],{"class":466},[460,115979,115980],{"class":1353},"\"initial qpos:\"",[460,115982,115983],{"class":466},", data.qpos.copy())\n",[460,115985,115986],{"class":462,"line":2163},[460,115987,522],{"emptyLinePlaceholder":521},[460,115989,115990,115992,115995,115997,115999,116001,116003],{"class":462,"line":2168},[460,115991,19722],{"class":887},[460,115993,115994],{"class":466}," _ ",[460,115996,11713],{"class":887},[460,115998,48848],{"class":900},[460,116000,2174],{"class":466},[460,116002,2325],{"class":900},[460,116004,47194],{"class":466},[460,116006,116007],{"class":462,"line":2183},[460,116008,116009],{"class":466},"        mujoco.mj_step(model, data)\n",[460,116011,116012],{"class":462,"line":2194},[460,116013,522],{"emptyLinePlaceholder":521},[460,116015,116016,116018,116020,116023],{"class":462,"line":2199},[460,116017,47706],{"class":900},[460,116019,2174],{"class":466},[460,116021,116022],{"class":1353},"\"final time:\"",[460,116024,115971],{"class":466},[460,116026,116027,116029,116031,116034],{"class":462,"line":2204},[460,116028,47706],{"class":900},[460,116030,2174],{"class":466},[460,116032,116033],{"class":1353},"\"final qpos:\"",[460,116035,115983],{"class":466},[460,116037,116038],{"class":462,"line":2212},[460,116039,522],{"emptyLinePlaceholder":521},[460,116041,116042],{"class":462,"line":2257},[460,116043,522],{"emptyLinePlaceholder":521},[460,116045,116046,116048,116050,116053,116056],{"class":462,"line":2285},[460,116047,18100],{"class":887},[460,116049,47627],{"class":900},[460,116051,116052],{"class":887}," ==",[460,116054,116055],{"class":1353}," \"__main__\"",[460,116057,20257],{"class":466},[460,116059,116060],{"class":462,"line":2298},[460,116061,116062],{"class":466},"    main()\n",[23,116064,116065],{"id":116065},"代码逐段解释",[14,116067,116068],{},"导入库：",[451,116070,116072],{"className":46787,"code":116071,"language":46789,"meta":32,"style":32},"import mujoco\n",[457,116073,116074],{"__ignoreMap":32},[460,116075,116076,116078],{"class":462,"line":463},[460,116077,46801],{"class":887},[460,116079,115794],{"class":466},[14,116081,116082],{},"这里导入的是官方 Python bindings。后面所有 MuJoCo API 都从这个模块里调用。",[14,116084,116085],{},"定义 XML：",[451,116087,116089],{"className":46787,"code":116088,"language":46789,"meta":32,"style":32},"XML = \"\"\"\n...\n\"\"\"\n",[457,116090,116091,116099,116104],{"__ignoreMap":32},[460,116092,116093,116095,116097],{"class":462,"line":463},[460,116094,115807],{"class":900},[460,116096,2943],{"class":887},[460,116098,115812],{"class":1353},[460,116100,116101],{"class":462,"line":476},[460,116102,116103],{"class":1353},"...\n",[460,116105,116106],{"class":462,"line":482},[460,116107,110191],{"class":1353},[14,116109,116110,116111,116114],{},"三引号字符串里放的是 MuJoCo 模型。这个模型包含地面和一个带 ",[457,116112,116113],{},"freejoint"," 的方块。",[14,116116,116117],{},"编译模型：",[451,116119,116121],{"className":46787,"code":116120,"language":46789,"meta":32,"style":32},"model = mujoco.MjModel.from_xml_string(XML)\n",[457,116122,116123],{"__ignoreMap":32},[460,116124,116125,116128,116130,116132,116134],{"class":462,"line":463},[460,116126,116127],{"class":466},"model ",[460,116129,894],{"class":887},[460,116131,115905],{"class":466},[460,116133,115807],{"class":900},[460,116135,3754],{"class":466},[14,116137,116138],{},"这一步会检查 XML 是否合法，并把文本模型编译成 MuJoCo 内部可运行的物理模型。",[14,116140,116141],{},"创建数据：",[451,116143,116145],{"className":46787,"code":116144,"language":46789,"meta":32,"style":32},"data = mujoco.MjData(model)\n",[457,116146,116147],{"__ignoreMap":32},[460,116148,116149,116152,116154],{"class":462,"line":463},[460,116150,116151],{"class":466},"data ",[460,116153,894],{"class":887},[460,116155,115919],{"class":466},[14,116157,116158,116160,116161,116163],{},[457,116159,49729],{}," 会保存仿真当前状态。刚创建时，时间是 ",[457,116162,936],{},"，方块还在初始位置。",[14,116165,116166],{},"推进仿真：",[451,116168,116170],{"className":46787,"code":116169,"language":46789,"meta":32,"style":32},"for _ in range(100):\n    mujoco.mj_step(model, data)\n",[457,116171,116172,116188],{"__ignoreMap":32},[460,116173,116174,116176,116178,116180,116182,116184,116186],{"class":462,"line":463},[460,116175,19547],{"class":887},[460,116177,115994],{"class":466},[460,116179,11713],{"class":887},[460,116181,48848],{"class":900},[460,116183,2174],{"class":466},[460,116185,2325],{"class":900},[460,116187,47194],{"class":466},[460,116189,116190],{"class":462,"line":476},[460,116191,116192],{"class":466},"    mujoco.mj_step(model, data)\n",[14,116194,116195,116196,116198],{},"每次 ",[457,116197,115708],{}," 前进一步。这里循环 100 次，所以仿真大约运行 1 秒。",[23,116200,116201],{"id":116201},"代码逐行细讲",[14,116203,116204],{},"下面把完整代码按新手视角拆开讲。",[451,116206,116207],{"className":46787,"code":116071,"language":46789,"meta":32,"style":32},[457,116208,116209],{"__ignoreMap":32},[460,116210,116211,116213],{"class":462,"line":463},[460,116212,46801],{"class":887},[460,116214,115794],{"class":466},[14,116216,116217,116219,116220,16957,116222,16957,116224,44794],{},[457,116218,46801],{}," 是 Python 的导入语句。这里的意思是：把 MuJoCo 官方 Python 包导入进来，后面才能写 ",[457,116221,115168],{},[457,116223,115173],{},[457,116225,116226],{},"mujoco.mj_step",[451,116228,116229],{"className":46787,"code":116088,"language":46789,"meta":32,"style":32},[457,116230,116231,116239,116243],{"__ignoreMap":32},[460,116232,116233,116235,116237],{"class":462,"line":463},[460,116234,115807],{"class":900},[460,116236,2943],{"class":887},[460,116238,115812],{"class":1353},[460,116240,116241],{"class":462,"line":476},[460,116242,116103],{"class":1353},[460,116244,116245],{"class":462,"line":482},[460,116246,110191],{"class":1353},[14,116248,116249,116251,116252,116255],{},[457,116250,115807],{}," 是一个变量名。右边的三引号 ",[457,116253,116254],{},"\"\"\""," 表示多行字符串。因为 MuJoCo 模型通常有很多行，所以用三引号保存 XML 文本最方便。",[451,116257,116258],{"className":453,"code":115817,"language":455,"meta":32,"style":32},[457,116259,116260],{"__ignoreMap":32},[460,116261,116262,116264,116266,116269,116271,116274],{"class":462,"line":463},[460,116263,781],{"class":466},[460,116265,115514],{"class":470},[460,116267,116268],{"class":929}," model",[460,116270,894],{"class":466},[460,116272,116273],{"class":1353},"\"first_sim\"",[460,116275,473],{"class":466},[14,116277,116278,116279,116282,116283,44794],{},"这是 XML 的根标签。",[457,116280,116281],{},"model=\"first_sim\""," 给这个模型起了一个名字，叫 ",[457,116284,116285],{},"first_sim",[451,116287,116288],{"className":453,"code":115676,"language":455,"meta":32,"style":32},[457,116289,116290],{"__ignoreMap":32},[460,116291,116292,116294,116296,116298,116300,116302,116304,116306,116308],{"class":462,"line":463},[460,116293,781],{"class":466},[460,116295,85321],{"class":470},[460,116297,115687],{"class":929},[460,116299,894],{"class":466},[460,116301,115692],{"class":1353},[460,116303,115695],{"class":929},[460,116305,894],{"class":466},[460,116307,115700],{"class":1353},[460,116309,115637],{"class":466},[14,116311,116312,116314,116315,116318,116319,116322],{},[457,116313,85321],{}," 用来设置仿真参数。",[457,116316,116317],{},"timestep=\"0.01\""," 表示每一步是 0.01 秒。",[457,116320,116321],{},"gravity=\"0 0 -9.81\""," 表示重力方向沿 z 轴向下，大小约为 9.81。",[451,116324,116326],{"className":453,"code":116325,"language":455,"meta":32,"style":32},"\u003Cworldbody>\n",[457,116327,116328],{"__ignoreMap":32},[460,116329,116330,116332,116335],{"class":462,"line":463},[460,116331,781],{"class":466},[460,116333,116334],{"class":470},"worldbody",[460,116336,473],{"class":466},[14,116338,116339,116341],{},[457,116340,116334],{}," 表示世界里直接存在的物体都写在这里。你可以把它理解为“场景根节点”。",[451,116343,116345],{"className":453,"code":116344,"language":455,"meta":32,"style":32},"\u003Cgeom name=\"floor\" type=\"plane\" size=\"2 2 0.1\" rgba=\"0.8 0.8 0.8 1\"\u002F>\n",[457,116346,116347],{"__ignoreMap":32},[460,116348,116349,116351,116353,116355,116357,116360,116362,116364,116367,116369,116371,116374,116376,116378,116381],{"class":462,"line":463},[460,116350,781],{"class":466},[460,116352,115613],{"class":470},[460,116354,1908],{"class":929},[460,116356,894],{"class":466},[460,116358,116359],{"class":1353},"\"floor\"",[460,116361,70071],{"class":929},[460,116363,894],{"class":466},[460,116365,116366],{"class":1353},"\"plane\"",[460,116368,115629],{"class":929},[460,116370,894],{"class":466},[460,116372,116373],{"class":1353},"\"2 2 0.1\"",[460,116375,2234],{"class":929},[460,116377,894],{"class":466},[460,116379,116380],{"class":1353},"\"0.8 0.8 0.8 1\"",[460,116382,115637],{"class":466},[14,116384,116385,116386,116388,116389,116392,116393,116396,116397,116399],{},"这行创建地面。",[457,116387,115613],{}," 是几何体。",[457,116390,116391],{},"name=\"floor\""," 是名字。",[457,116394,116395],{},"type=\"plane\""," 表示平面。",[457,116398,71333],{}," 是颜色，四个数字分别表示红、绿、蓝、透明度。",[451,116401,116403],{"className":453,"code":116402,"language":455,"meta":32,"style":32},"\u003Cbody name=\"box\" pos=\"0 0 1\">\n",[457,116404,116405],{"__ignoreMap":32},[460,116406,116407,116409,116411,116413,116415,116417,116419,116421,116423],{"class":462,"line":463},[460,116408,781],{"class":466},[460,116410,1721],{"class":470},[460,116412,1908],{"class":929},[460,116414,894],{"class":466},[460,116416,13932],{"class":1353},[460,116418,115599],{"class":929},[460,116420,894],{"class":466},[460,116422,115604],{"class":1353},[460,116424,473],{"class":466},[14,116426,116427,116428,44794,116430,116433,116434,116436],{},"这行创建一个刚体，名字叫 ",[457,116429,69961],{},[457,116431,116432],{},"pos=\"0 0 1\""," 表示它一开始在世界坐标 ",[457,116435,115662],{},"，也就是离地面 1 米高。",[451,116438,116440],{"className":453,"code":116439,"language":455,"meta":32,"style":32},"\u003Cfreejoint name=\"box_free\"\u002F>\n",[457,116441,116442],{"__ignoreMap":32},[460,116443,116444,116446,116448,116450,116452,116455],{"class":462,"line":463},[460,116445,781],{"class":466},[460,116447,116113],{"class":470},[460,116449,1908],{"class":929},[460,116451,894],{"class":466},[460,116453,116454],{"class":1353},"\"box_free\"",[460,116456,115637],{"class":466},[14,116458,116459,116460,116462],{},"这行很重要。",[457,116461,116113],{}," 表示这个刚体可以在三维空间自由移动和旋转。如果没有它，box 会被固定住，不会掉下来。",[451,116464,116466],{"className":453,"code":116465,"language":455,"meta":32,"style":32},"\u003Cgeom name=\"box_geom\" type=\"box\" size=\"0.1 0.1 0.1\" mass=\"1\" rgba=\"1 0 0 1\"\u002F>\n",[457,116467,116468],{"__ignoreMap":32},[460,116469,116470,116472,116474,116476,116478,116480,116482,116484,116486,116488,116490,116492,116495,116497,116499,116501,116503,116506],{"class":462,"line":463},[460,116471,781],{"class":466},[460,116473,115613],{"class":470},[460,116475,1908],{"class":929},[460,116477,894],{"class":466},[460,116479,115620],{"class":1353},[460,116481,70071],{"class":929},[460,116483,894],{"class":466},[460,116485,13932],{"class":1353},[460,116487,115629],{"class":929},[460,116489,894],{"class":466},[460,116491,115634],{"class":1353},[460,116493,116494],{"class":929}," mass",[460,116496,894],{"class":466},[460,116498,2772],{"class":1353},[460,116500,2234],{"class":929},[460,116502,894],{"class":466},[460,116504,116505],{"class":1353},"\"1 0 0 1\"",[460,116507,115637],{"class":466},[14,116509,116510,116511,116514,116515,116518,116519,116522,116523,116526],{},"这行给 box body 添加一个盒子形状。",[457,116512,116513],{},"type=\"box\""," 表示形状是盒子。",[457,116516,116517],{},"size=\"0.1 0.1 0.1\""," 表示三个方向的半边长都是 0.1。",[457,116520,116521],{},"mass=\"1\""," 表示质量是 1。",[457,116524,116525],{},"rgba=\"1 0 0 1\""," 表示红色。",[451,116528,116530],{"className":46787,"code":116529,"language":46789,"meta":32,"style":32},"def main() -> None:\n",[457,116531,116532],{"__ignoreMap":32},[460,116533,116534,116536,116538,116540,116542],{"class":462,"line":463},[460,116535,48352],{"class":887},[460,116537,18514],{"class":929},[460,116539,115891],{"class":466},[460,116541,110179],{"class":900},[460,116543,20257],{"class":466},[14,116545,116546,116548,116549,116552,116553,116556],{},[457,116547,48352],{}," 用来定义函数。这里定义了一个叫 ",[457,116550,116551],{},"main"," 的函数。",[457,116554,116555],{},"-> None"," 是类型提示，表示这个函数不返回有意义的结果。初学时可以先把它理解成注释，不影响运行。",[451,116558,116559],{"className":46787,"code":116120,"language":46789,"meta":32,"style":32},[457,116560,116561],{"__ignoreMap":32},[460,116562,116563,116565,116567,116569,116571],{"class":462,"line":463},[460,116564,116127],{"class":466},[460,116566,894],{"class":887},[460,116568,115905],{"class":466},[460,116570,115807],{"class":900},[460,116572,3754],{"class":466},[14,116574,116575,116576,116579],{},"这行把 XML 字符串编译成 MuJoCo 模型。",[457,116577,116578],{},"model"," 保存的是“静态结构”，比如有几个 body、有几个 joint、时间步长是多少。",[451,116581,116582],{"className":46787,"code":116144,"language":46789,"meta":32,"style":32},[457,116583,116584],{"__ignoreMap":32},[460,116585,116586,116588,116590],{"class":462,"line":463},[460,116587,116151],{"class":466},[460,116589,894],{"class":887},[460,116591,115919],{"class":466},[14,116593,116594,116595,116597,116598,116600],{},"这行创建仿真数据。",[457,116596,49729],{}," 保存的是“当前状态”，比如当前时间、位置、速度。仿真每前进一步，",[457,116599,49729],{}," 都会变化。",[451,116602,116604],{"className":46787,"code":116603,"language":46789,"meta":32,"style":32},"print(\"nq:\", model.nq)\nprint(\"nv:\", model.nv)\nprint(\"nu:\", model.nu)\n",[457,116605,116606,116616,116626],{"__ignoreMap":32},[460,116607,116608,116610,116612,116614],{"class":462,"line":463},[460,116609,46824],{"class":900},[460,116611,2174],{"class":466},[460,116613,115932],{"class":1353},[460,116615,115935],{"class":466},[460,116617,116618,116620,116622,116624],{"class":462,"line":476},[460,116619,46824],{"class":900},[460,116621,2174],{"class":466},[460,116623,115944],{"class":1353},[460,116625,115947],{"class":466},[460,116627,116628,116630,116632,116634],{"class":462,"line":482},[460,116629,46824],{"class":900},[460,116631,2174],{"class":466},[460,116633,115956],{"class":1353},[460,116635,115959],{"class":466},[14,116637,116638,116640,116641,116644,116645,116648,116649,116652,116653,116656],{},[457,116639,46824],{}," 用来输出信息。",[457,116642,116643],{},"model.nq"," 是位置变量数量，",[457,116646,116647],{},"model.nv"," 是速度变量数量，",[457,116650,116651],{},"model.nu"," 是控制输入数量。这个例子没有电机，所以 ",[457,116654,116655],{},"nu"," 是 0。",[451,116658,116660],{"className":46787,"code":116659,"language":46789,"meta":32,"style":32},"print(\"initial time:\", data.time)\nprint(\"initial qpos:\", data.qpos.copy())\n",[457,116661,116662,116672],{"__ignoreMap":32},[460,116663,116664,116666,116668,116670],{"class":462,"line":463},[460,116665,46824],{"class":900},[460,116667,2174],{"class":466},[460,116669,115968],{"class":1353},[460,116671,115971],{"class":466},[460,116673,116674,116676,116678,116680],{"class":462,"line":476},[460,116675,46824],{"class":900},[460,116677,2174],{"class":466},[460,116679,115980],{"class":1353},[460,116681,115983],{"class":466},[14,116683,116684,116685,116687,116688,116690,116691,116694],{},"这里打印初始时间和初始位置。",[457,116686,115560],{}," 一开始是 0。",[457,116689,115563],{}," 是位置数组。",[457,116692,116693],{},".copy()"," 表示复制一份数组再打印，避免以后数组变化时影响你理解输出。",[451,116696,116697],{"className":46787,"code":116169,"language":46789,"meta":32,"style":32},[457,116698,116699,116715],{"__ignoreMap":32},[460,116700,116701,116703,116705,116707,116709,116711,116713],{"class":462,"line":463},[460,116702,19547],{"class":887},[460,116704,115994],{"class":466},[460,116706,11713],{"class":887},[460,116708,48848],{"class":900},[460,116710,2174],{"class":466},[460,116712,2325],{"class":900},[460,116714,47194],{"class":466},[460,116716,116717],{"class":462,"line":476},[460,116718,116192],{"class":466},[14,116720,116721,116723,116724,116727,116728,116730,116731,116733],{},[457,116722,19547],{}," 是循环。",[457,116725,116726],{},"range(100)"," 表示循环 100 次。",[457,116729,17699],{}," 是一个临时变量名，表示“我不关心当前是第几次”。每次循环都会调用一次 ",[457,116732,115708],{},"，仿真就前进一步。",[451,116735,116737],{"className":46787,"code":116736,"language":46789,"meta":32,"style":32},"print(\"final time:\", data.time)\nprint(\"final qpos:\", data.qpos.copy())\n",[457,116738,116739,116749],{"__ignoreMap":32},[460,116740,116741,116743,116745,116747],{"class":462,"line":463},[460,116742,46824],{"class":900},[460,116744,2174],{"class":466},[460,116746,116022],{"class":1353},[460,116748,115971],{"class":466},[460,116750,116751,116753,116755,116757],{"class":462,"line":476},[460,116752,46824],{"class":900},[460,116754,2174],{"class":466},[460,116756,116033],{"class":1353},[460,116758,115983],{"class":466},[14,116760,116761],{},"循环结束后，再打印最终时间和最终位置。你会看到时间从 0 变成约 1.0，方块的位置也变了。",[451,116763,116765],{"className":46787,"code":116764,"language":46789,"meta":32,"style":32},"if __name__ == \"__main__\":\n    main()\n",[457,116766,116767,116779],{"__ignoreMap":32},[460,116768,116769,116771,116773,116775,116777],{"class":462,"line":463},[460,116770,18100],{"class":887},[460,116772,47627],{"class":900},[460,116774,116052],{"class":887},[460,116776,116055],{"class":1353},[460,116778,20257],{"class":466},[460,116780,116781],{"class":462,"line":476},[460,116782,116062],{"class":466},[14,116784,116785,116786,116789,116790,44794],{},"这是 Python 常见写法。意思是：如果你直接运行这个文件，就调用 ",[457,116787,116788],{},"main()"," 函数。如果这个文件被别的文件导入，就不会自动运行 ",[457,116791,116788],{},[14,116793,116794],{},"运行:",[451,116796,116798],{"className":40235,"code":116797,"language":40237,"meta":32,"style":32},"python ch1_first_sim.py\n",[457,116799,116800],{"__ignoreMap":32},[460,116801,116802,116804],{"class":462,"line":463},[460,116803,46789],{"class":929},[460,116805,115779],{"class":1353},[18,116807,116809],{"id":116808},"_5运行结果说明","5.运行结果说明",[14,116811,116812],{},"你应该看到类似输出:",[451,116814,116817],{"className":116815,"code":116816,"language":8391,"meta":32},[21693],"nq: 7\nnv: 6\nnu: 0\ninitial time: 0.0\nfinal time: 1.0000000000000007\n",[457,116818,116816],{"__ignoreMap":32},[14,116820,116821,116823,116824,116827,116828,44794],{},[457,116822,116113],{}," 有 7 个位置变量: ",[457,116825,116826],{},"x y z qw qx qy qz","。自由刚体有 6 个速度变量: ",[457,116829,116830],{},"vx vy vz wx wy wz",[14,116832,116833,116834,116837],{},"你还会看到 ",[457,116835,116836],{},"final qpos"," 里的 z 坐标比初始时小。原因是方块受到重力作用向下掉落。如果方块撞到地面，MuJoCo 会计算碰撞，让它不会无限向下穿透。",[18,116839,116841],{"id":116840},"_6验证步骤","6.验证步骤",[14,116843,116844],{},"确认版本:",[451,116846,116847],{"className":40235,"code":115432,"language":40237,"meta":32,"style":32},[457,116848,116849],{"__ignoreMap":32},[460,116850,116851,116853,116855],{"class":462,"line":463},[460,116852,46789],{"class":929},[460,116854,46767],{"class":900},[460,116856,115443],{"class":1353},[14,116858,116859],{},"确认导入的是官方 bindings:",[451,116861,116863],{"className":40235,"code":116862,"language":40237,"meta":32,"style":32},"python -c \"import mujoco; print(mujoco)\"\n",[457,116864,116865],{"__ignoreMap":32},[460,116866,116867,116869,116871],{"class":462,"line":463},[460,116868,46789],{"class":929},[460,116870,46767],{"class":900},[460,116872,116873],{"class":1353}," \"import mujoco; print(mujoco)\"\n",[14,116875,116876],{},"运行程序:",[451,116878,116879],{"className":40235,"code":116797,"language":40237,"meta":32,"style":32},[457,116880,116881],{"__ignoreMap":32},[460,116882,116883,116885],{"class":462,"line":463},[460,116884,46789],{"class":929},[460,116886,115779],{"class":1353},[14,116888,116889,116890,116893,116894,44794],{},"检查 ",[457,116891,116892],{},"final time"," 是否约等于 ",[457,116895,116896],{},"1.0",[14,116898,116899],{},"再做几个小实验：",[103,116901,116902,116912,116920,116933],{},[43,116903,116904,116905,116907,116908,116911],{},"把 ",[457,116906,116432],{}," 改成 ",[457,116909,116910],{},"pos=\"0 0 2\"","，观察初始高度变化。",[43,116913,116904,116914,116907,116916,116919],{},[457,116915,116321],{},[457,116917,116918],{},"gravity=\"0 0 -1\"","，观察下落是否变慢。",[43,116921,116904,116922,116907,116924,116927,116928,116930,116931,44794],{},[457,116923,116317],{},[457,116925,116926],{},"timestep=\"0.005\"","，观察 100 步后的 ",[457,116929,116892],{}," 是否变成约 ",[457,116932,51634],{},[43,116934,116935,116936,116939],{},"删除 ",[457,116937,116938],{},"\u003Cfreejoint name=\"box_free\"\u002F>","，观察方块是否还会下落。",[14,116941,116942],{},"第 4 个实验很关键：没有自由关节时，body 会被固定在父节点上，不能自由运动。",[18,116944,116946],{"id":116945},"_7常见错误与解决方案","7.常见错误与解决方案",[23,116948,116950],{"id":116949},"modulenotfounderror-no-module-named-mujoco",[457,116951,116952],{},"ModuleNotFoundError: No module named 'mujoco'",[14,116954,116955],{},"解决:",[451,116957,116959],{"className":40235,"code":116958,"language":40237,"meta":32,"style":32},"pip install \"mujoco>=2.3\"\n",[457,116960,116961],{"__ignoreMap":32},[460,116962,116963,116965,116967],{"class":462,"line":463},[460,116964,40244],{"class":929},[460,116966,40247],{"class":1353},[460,116968,116969],{"class":1353}," \"mujoco>=2.3\"\n",[23,116971,116973],{"id":116972},"图形或-opengl-相关报错","图形或 OpenGL 相关报错",[14,116975,116976],{},"先安装系统依赖:",[451,116978,116980],{"className":40235,"code":116979,"language":40237,"meta":32,"style":32},"sudo dnf install -y mesa-libGL mesa-dri-drivers glfw glfw-devel libX11 libXi libXrandr\n",[457,116981,116982],{"__ignoreMap":32},[460,116983,116984,116986,116988,116990,116992,116995,116997,117000,117002,117005,117007],{"class":462,"line":463},[460,116985,40989],{"class":929},[460,116987,42726],{"class":1353},[460,116989,40247],{"class":1353},[460,116991,42811],{"class":900},[460,116993,116994],{"class":1353}," mesa-libGL",[460,116996,115307],{"class":1353},[460,116998,116999],{"class":1353}," glfw",[460,117001,115327],{"class":1353},[460,117003,117004],{"class":1353}," libX11",[460,117006,115340],{"class":1353},[460,117008,117009],{"class":1353}," libXrandr\n",[23,117011,117013],{"id":117012},"xml-解析失败","XML 解析失败",[14,117015,117016],{},"检查:",[103,117018,117019,117022,117025,117031],{},[43,117020,117021],{},"标签是否闭合",[43,117023,117024],{},"属性是否带引号",[43,117026,117027,117028],{},"根节点是否是 ",[457,117029,117030],{},"\u003Cmujoco>",[43,117032,117033,117035,117036,117039],{},[457,117034,1721],{}," 是否放在 ",[457,117037,117038],{},"\u003Cworldbody>"," 内部",[23,117041,117043,117045,117046],{"id":117042},"final-time-不是严格等于-10",[457,117044,116892],{}," 不是严格等于 ",[457,117047,116896],{},[14,117049,117050],{},"这通常不是错误。浮点数计算可能得到：",[451,117052,117055],{"className":117053,"code":117054,"language":8391,"meta":32},[21693],"1.0000000000000007\n",[457,117056,117054],{"__ignoreMap":32},[14,117058,117059,117060,117062],{},"只要接近 ",[457,117061,116896],{}," 就正常。",[23,117064,117065],{"id":117065},"方块没有掉下来",[14,117067,117068],{},"检查：",[103,117070,117071,117077,117083,117088],{},[43,117072,117073,117074],{},"方块 body 里是否有 ",[457,117075,117076],{},"\u003Cfreejoint\u002F>",[43,117078,117079,117080],{},"重力是否是 ",[457,117081,117082],{},"0 0 -9.81",[43,117084,117085,117086],{},"是否真的调用了 ",[457,117087,115178],{},[43,117089,117090,117091,117093,117094],{},"你看的是否是 ",[457,117092,116836],{},"，不是 ",[457,117095,117096],{},"initial qpos",[18,117098,117100],{"id":117099},"_8本章小结","8.本章小结",[14,117102,117103],{},"本章你已经完成了 MuJoCo 的最小闭环：",[451,117105,117108],{"className":117106,"code":117107,"language":8391,"meta":32},[21693],"XML 模型 → MjModel → MjData → mj_step → 读取状态\n",[457,117109,117107],{"__ignoreMap":32},[14,117111,117112],{},"后面所有复杂任务，本质都是在这个闭环上继续增加内容：更多 body、更多 joint、更多 actuator、更复杂的控制逻辑和奖励函数。",[1944,117114,117115],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":32,"searchDepth":476,"depth":476,"links":117117},[117118,117119,117120,117125,117129,117130,117131,117139],{"id":115139,"depth":476,"text":115140},{"id":115262,"depth":476,"text":115263},{"id":115537,"depth":476,"text":115538,"children":117121},[117122,117123,117124],{"id":115575,"depth":482,"text":115576},{"id":115669,"depth":482,"text":115670},{"id":115721,"depth":482,"text":115722},{"id":115745,"depth":476,"text":115746,"children":117126},[117127,117128],{"id":116065,"depth":482,"text":116065},{"id":116201,"depth":482,"text":116201},{"id":116808,"depth":476,"text":116809},{"id":116840,"depth":476,"text":116841},{"id":116945,"depth":476,"text":116946,"children":117132},[117133,117134,117135,117136,117138],{"id":116949,"depth":482,"text":116952},{"id":116972,"depth":482,"text":116973},{"id":117012,"depth":482,"text":117013},{"id":117042,"depth":482,"text":117137},"final time 不是严格等于 1.0",{"id":117065,"depth":482,"text":117065},{"id":117099,"depth":476,"text":117100},{},"\u002Fwiki\u002F2025-05-17-mujoco\u002Fch1-mujoco",{"title":115131,"description":32},"wiki\u002F2025-05-17-mujoco学习\u002Fch1-环境安装与第一个MuJoCo程序","QXJQc687vjITkT3uIIPeKVan841uz4ykZnCT7hX2FiY",{"id":117146,"title":117147,"body":117148,"description":32,"extension":16683,"meta":118804,"navigation":521,"path":118805,"seo":118806,"stem":118807,"__hash__":118808},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Fch2-XML与MJCF物理建模基础.md","2.XML 与 MJCF 物理建模基础",{"type":7,"value":117149,"toc":118780},[117150,117153,117155,117158,117161,117178,117273,117276,117282,117284,117286,117310,117313,117327,117330,117371,117373,117386,117388,117391,117439,117451,117454,117457,117463,117476,117543,117546,117565,117568,117571,117577,117579,117588,117591,117595,117604,117686,117695,117699,117705,117719,117729,117731,118061,118064,118076,118078,118089,118091,118094,118112,118115,118118,118136,118147,118150,118165,118175,118177,118198,118215,118235,118241,118281,118297,118313,118319,118322,118346,118362,118367,118397,118414,118439,118442,118457,118466,118481,118490,118505,118512,118514,118524,118537,118544,118547,118586,118593,118595,118647,118649,118655,118658,118665,118672,118675,118677,118695,118698,118701,118735,118747,118749,118752,118774,118777],[10,117151,117147],{"id":117152},"_2xml-与-mjcf-物理建模基础",[18,117154,115140],{"id":115139},[14,117156,117157],{},"本章学习 MuJoCo 的 MJCF XML 基础。MJCF 是 MuJoCo 使用的模型描述格式。你不需要先完整学习 XML 语言，只需要掌握 MuJoCo 常用标签，以及它们之间的层级关系。",[14,117159,117160],{},"本章结束后，你应该能看懂一个简单模型里：",[103,117162,117163,117166,117169,117172,117175],{},[43,117164,117165],{},"地面在哪里。",[43,117167,117168],{},"物体初始位置在哪里。",[43,117170,117171],{},"几何体是什么形状。",[43,117173,117174],{},"哪些 body 可以自由运动。",[43,117176,117177],{},"如何用名字在 Python 里找到 XML 中的对象。",[16884,117179,117180,117190],{},[16887,117181,117182],{},[16890,117183,117184,117187],{},[16893,117185,117186],{"align":40149},"标签",[16893,117188,117189],{"align":40149},"作用",[16930,117191,117192,117201,117211,117220,117230,117240,117253,117263],{},[16890,117193,117194,117198],{},[16935,117195,117196],{"align":40149},[457,117197,117030],{},[16935,117199,117200],{"align":40149},"根节点",[16890,117202,117203,117208],{},[16935,117204,117205],{"align":40149},[457,117206,117207],{},"\u003Coption>",[16935,117209,117210],{"align":40149},"仿真参数",[16890,117212,117213,117217],{},[16935,117214,117215],{"align":40149},[457,117216,117038],{},[16935,117218,117219],{"align":40149},"世界中的物体",[16890,117221,117222,117227],{},[16935,117223,117224],{"align":40149},[457,117225,117226],{},"\u003Cbody>",[16935,117228,117229],{"align":40149},"刚体",[16890,117231,117232,117237],{},[16935,117233,117234],{"align":40149},[457,117235,117236],{},"\u003Cgeom>",[16935,117238,117239],{"align":40149},"几何体、碰撞体、可视体",[16890,117241,117242,117250],{},[16935,117243,117244,41391,117247],{"align":40149},[457,117245,117246],{},"\u003Cjoint>",[457,117248,117249],{},"\u003Cfreejoint>",[16935,117251,117252],{"align":40149},"关节",[16890,117254,117255,117260],{},[16935,117256,117257],{"align":40149},[457,117258,117259],{},"\u003Csite>",[16935,117261,117262],{"align":40149},"标记点",[16890,117264,117265,117270],{},[16935,117266,117267],{"align":40149},[457,117268,117269],{},"\u003Cactuator>",[16935,117271,117272],{"align":40149},"控制器",[14,117274,117275],{},"初学时可以先记住：",[451,117277,117280],{"className":117278,"code":117279,"language":8391,"meta":32},[21693],"body 是刚体，geom 是形状，joint 是运动方式，site 是标记点。\n",[457,117281,117279],{"__ignoreMap":32},[18,117283,115263],{"id":115262},[14,117285,115266],{},[451,117287,117289],{"className":40235,"code":117288,"language":40237,"meta":32,"style":32},"sudo dnf install -y mesa-libGL mesa-dri-drivers glfw glfw-devel\n",[457,117290,117291],{"__ignoreMap":32},[460,117292,117293,117295,117297,117299,117301,117303,117305,117307],{"class":462,"line":463},[460,117294,40989],{"class":929},[460,117296,42726],{"class":1353},[460,117298,40247],{"class":1353},[460,117300,42811],{"class":900},[460,117302,116994],{"class":1353},[460,117304,115307],{"class":1353},[460,117306,116999],{"class":1353},[460,117308,117309],{"class":1353}," glfw-devel\n",[14,117311,117312],{},"pip:",[451,117314,117315],{"className":40235,"code":115412,"language":40237,"meta":32,"style":32},[457,117316,117317],{"__ignoreMap":32},[460,117318,117319,117321,117323,117325],{"class":462,"line":463},[460,117320,40244],{"class":929},[460,117322,40247],{"class":1353},[460,117324,115423],{"class":1353},[460,117326,115426],{"class":1353},[14,117328,117329],{},"conda:",[451,117331,117333],{"className":40235,"code":117332,"language":40237,"meta":32,"style":32},"conda create -n mujoco-xml python=3.10 -y\nconda activate mujoco-xml\npip install \"mujoco>=2.3\" numpy\n",[457,117334,117335,117352,117361],{"__ignoreMap":32},[460,117336,117337,117339,117341,117343,117346,117348,117350],{"class":462,"line":463},[460,117338,46739],{"class":929},[460,117340,45585],{"class":1353},[460,117342,41528],{"class":900},[460,117344,117345],{"class":1353}," mujoco-xml",[460,117347,115468],{"class":1353},[460,117349,115471],{"class":900},[460,117351,115474],{"class":900},[460,117353,117354,117356,117358],{"class":462,"line":476},[460,117355,46739],{"class":929},[460,117357,115481],{"class":1353},[460,117359,117360],{"class":1353}," mujoco-xml\n",[460,117362,117363,117365,117367,117369],{"class":462,"line":482},[460,117364,40244],{"class":929},[460,117366,40247],{"class":1353},[460,117368,115423],{"class":1353},[460,117370,115426],{"class":1353},[14,117372,115497],{},[103,117374,117375,117378,117383],{},[43,117376,117377],{},"MJCF XML 标签随 MuJoCo 版本会持续扩展。",[43,117379,117380,117381,44794],{},"本章使用基础标签，适用于 ",[457,117382,115520],{},[43,117384,117385],{},"某些新 XML 属性可能存在版本差异，本文避免使用高版本专属属性。",[18,117387,115538],{"id":115537},[14,117389,117390],{},"MJCF 是 MuJoCo 的 XML 建模格式。最小结构:",[451,117392,117394],{"className":453,"code":117393,"language":455,"meta":32,"style":32},"\u003Cmujoco model=\"name\">\n  \u003Cworldbody>\n    ...\n  \u003C\u002Fworldbody>\n\u003C\u002Fmujoco>\n",[457,117395,117396,117410,117418,117423,117431],{"__ignoreMap":32},[460,117397,117398,117400,117402,117404,117406,117408],{"class":462,"line":463},[460,117399,781],{"class":466},[460,117401,115514],{"class":470},[460,117403,116268],{"class":929},[460,117405,894],{"class":466},[460,117407,78848],{"class":1353},[460,117409,473],{"class":466},[460,117411,117412,117414,117416],{"class":462,"line":476},[460,117413,467],{"class":466},[460,117415,116334],{"class":470},[460,117417,473],{"class":466},[460,117419,117420],{"class":462,"line":482},[460,117421,117422],{"class":466},"    ...\n",[460,117424,117425,117427,117429],{"class":462,"line":488},[460,117426,581],{"class":466},[460,117428,116334],{"class":470},[460,117430,473],{"class":466},[460,117432,117433,117435,117437],{"class":462,"line":494},[460,117434,1776],{"class":466},[460,117436,115514],{"class":470},[460,117438,473],{"class":466},[14,117440,117441,117443,117444,117446,117447,117450],{},[457,117442,1721],{}," 表示刚体。",[457,117445,115613],{}," 表示几何形状，可以用于碰撞、质量、渲染。",[457,117448,117449],{},"joint"," 表示刚体相对父刚体如何运动。",[23,117452,117453],{"id":117453},"层级结构非常重要",[14,117455,117456],{},"MuJoCo 模型不是一堆平铺的物体，而是一棵树：",[451,117458,117461],{"className":117459,"code":117460,"language":8391,"meta":32},[21693],"worldbody\n├── floor geom\n└── red_box body\n    ├── freejoint\n    ├── red_box_geom\n    └── box_center site\n",[457,117462,117460],{"__ignoreMap":32},[14,117464,117465,115511,117468,117471,117472,117475],{},[457,117466,117467],{},"red_box_geom",[457,117469,117470],{},"box_center"," 都属于 ",[457,117473,117474],{},"red_box"," 这个 body。body 移动时，它内部的 geom 和 site 也会跟着移动。",[451,117477,117479],{"className":453,"code":117478,"language":455,"meta":32,"style":32},"\u003Cbody name=\"box\" pos=\"0 0 1\">\n  \u003Cfreejoint name=\"box_free\"\u002F>\n  \u003Cgeom type=\"box\" size=\"0.1 0.1 0.1\"\u002F>\n\u003C\u002Fbody>\n",[457,117480,117481,117501,117515,117535],{"__ignoreMap":32},[460,117482,117483,117485,117487,117489,117491,117493,117495,117497,117499],{"class":462,"line":463},[460,117484,781],{"class":466},[460,117486,1721],{"class":470},[460,117488,1908],{"class":929},[460,117490,894],{"class":466},[460,117492,13932],{"class":1353},[460,117494,115599],{"class":929},[460,117496,894],{"class":466},[460,117498,115604],{"class":1353},[460,117500,473],{"class":466},[460,117502,117503,117505,117507,117509,117511,117513],{"class":462,"line":476},[460,117504,467],{"class":466},[460,117506,116113],{"class":470},[460,117508,1908],{"class":929},[460,117510,894],{"class":466},[460,117512,116454],{"class":1353},[460,117514,115637],{"class":466},[460,117516,117517,117519,117521,117523,117525,117527,117529,117531,117533],{"class":462,"line":482},[460,117518,467],{"class":466},[460,117520,115613],{"class":470},[460,117522,70071],{"class":929},[460,117524,894],{"class":466},[460,117526,13932],{"class":1353},[460,117528,115629],{"class":929},[460,117530,894],{"class":466},[460,117532,115634],{"class":1353},[460,117534,115637],{"class":466},[460,117536,117537,117539,117541],{"class":462,"line":488},[460,117538,1776],{"class":466},[460,117540,1721],{"class":470},[460,117542,473],{"class":466},[14,117544,117545],{},"含义:",[103,117547,117548,117554,117559,117562],{},[43,117549,117550,117551,117553],{},"创建名为 ",[457,117552,69961],{}," 的刚体",[43,117555,117556,117557],{},"初始位置在世界坐标 ",[457,117558,115662],{},[43,117560,117561],{},"它有一个自由关节",[43,117563,117564],{},"它有一个盒子几何体",[23,117566,117567],{"id":117567},"坐标怎么理解",[14,117569,117570],{},"MuJoCo 默认使用三维坐标：",[451,117572,117575],{"className":117573,"code":117574,"language":8391,"meta":32},[21693],"x: 左右方向\ny: 前后方向\nz: 上下方向\n",[457,117576,117574],{"__ignoreMap":32},[14,117578,31087],{},[451,117580,117582],{"className":453,"code":117581,"language":455,"meta":32,"style":32},"pos=\"0 0 1\"\n",[457,117583,117584],{"__ignoreMap":32},[460,117585,117586],{"class":462,"line":463},[460,117587,117581],{"class":466},[14,117589,117590],{},"表示 x=0、y=0、z=1，也就是放在世界原点上方 1 米的位置。",[23,117592,117594],{"id":117593},"geom-的-size-怎么理解","geom 的 size 怎么理解",[14,117596,117597,117598,6261,117601,117603],{},"不同 ",[457,117599,117600],{},"type",[457,117602,47902],{}," 含义不同：",[16884,117605,117606,117621],{},[16887,117607,117608],{},[16890,117609,117610,117614,117619],{},[16893,117611,117612],{"align":40149},[457,117613,117600],{},[16893,117615,117616,117618],{"align":40149},[457,117617,47902],{}," 示例",[16893,117620,115193],{"align":40149},[16930,117622,117623,117637,117652,117671],{},[16890,117624,117625,117629,117634],{},[16935,117626,117627],{"align":40149},[457,117628,69961],{},[16935,117630,117631],{"align":40149},[457,117632,117633],{},"size=\"0.1 0.2 0.3\"",[16935,117635,117636],{"align":40149},"x\u002Fy\u002Fz 半边长，不是完整长度",[16890,117638,117639,117644,117649],{},[16935,117640,117641],{"align":40149},[457,117642,117643],{},"sphere",[16935,117645,117646],{"align":40149},[457,117647,117648],{},"size=\"0.1\"",[16935,117650,117651],{"align":40149},"球半径",[16890,117653,117654,117659,117664],{},[16935,117655,117656],{"align":40149},[457,117657,117658],{},"capsule",[16935,117660,117661],{"align":40149},[457,117662,117663],{},"size=\"0.03\"",[16935,117665,117666,117667,117670],{"align":40149},"胶囊半径，长度常用 ",[457,117668,117669],{},"fromto"," 指定",[16890,117672,117673,117678,117683],{},[16935,117674,117675],{"align":40149},[457,117676,117677],{},"plane",[16935,117679,117680],{"align":40149},[457,117681,117682],{},"size=\"3 3 0.1\"",[16935,117684,117685],{"align":40149},"可视平面大小，通常当地面",[14,117687,117688,117689,117691,117692,117694],{},"最容易踩坑的是 box：",[457,117690,116517],{}," 表示边长大约是 ",[457,117693,48442],{},"，因为 MuJoCo 用的是半边长。",[23,117696,117698],{"id":117697},"site-是什么","site 是什么",[14,117700,117701,117704],{},[457,117702,117703],{},"site"," 是一个不参与碰撞的小标记点。它常用于：",[103,117706,117707,117710,117713,117716],{},[43,117708,117709],{},"标记机械臂末端。",[43,117711,117712],{},"标记目标位置。",[43,117714,117715],{},"放传感器或相机参考点。",[43,117717,117718],{},"在 Python 中读取某个关键点的世界坐标。",[14,117720,117721,117722,115511,117725,117728],{},"在后面的 Reacher 任务中，",[457,117723,117724],{},"tip",[457,117726,117727],{},"target"," 就会用 site 表示。",[18,117730,115746],{"id":115745},[451,117732,117734],{"className":46787,"code":117733,"language":46789,"meta":32,"style":32},"import mujoco\nimport numpy as np\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"xml_basic\">\n  \u003Coption timestep=\"0.01\" gravity=\"0 0 -9.81\"\u002F>\n\n  \u003Cworldbody>\n    \u003Cgeom name=\"floor\" type=\"plane\" size=\"3 3 0.1\" rgba=\"0.7 0.7 0.7 1\"\u002F>\n\n    \u003Cbody name=\"red_box\" pos=\"0 0 1\">\n      \u003Cfreejoint name=\"red_box_free\"\u002F>\n      \u003Cgeom name=\"red_box_geom\" type=\"box\" size=\"0.15 0.15 0.15\" mass=\"1\" rgba=\"1 0 0 1\"\u002F>\n      \u003Csite name=\"box_center\" pos=\"0 0 0\" size=\"0.03\" rgba=\"0 1 0 1\"\u002F>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\ndef main() -> None:\n    model = mujoco.MjModel.from_xml_string(XML)\n    data = mujoco.MjData(model)\n\n    box_body_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_BODY, \"red_box\")\n    site_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SITE, \"box_center\")\n\n    if box_body_id \u003C 0:\n        raise RuntimeError(\"body red_box not found\")\n    if site_id \u003C 0:\n        raise RuntimeError(\"site box_center not found\")\n\n    for _ in range(200):\n        mujoco.mj_step(model, data)\n\n    print(\"simulation time:\", data.time)\n    print(\"box body position:\", data.xpos[box_body_id].copy())\n    print(\"site position:\", data.site_xpos[site_id].copy())\n    print(\"box qpos:\", np.array(data.qpos))\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,117735,117736,117742,117752,117756,117760,117768,117773,117777,117781,117785,117790,117794,117799,117804,117809,117814,117818,117822,117826,117830,117834,117838,117850,117862,117870,117874,117889,117904,117908,117921,117936,117949,117962,117966,117982,117986,117990,118001,118013,118025,118037,118041,118045,118057],{"__ignoreMap":32},[460,117737,117738,117740],{"class":462,"line":463},[460,117739,46801],{"class":887},[460,117741,115794],{"class":466},[460,117743,117744,117746,117748,117750],{"class":462,"line":476},[460,117745,46801],{"class":887},[460,117747,47787],{"class":466},[460,117749,47790],{"class":887},[460,117751,47793],{"class":466},[460,117753,117754],{"class":462,"line":482},[460,117755,522],{"emptyLinePlaceholder":521},[460,117757,117758],{"class":462,"line":488},[460,117759,522],{"emptyLinePlaceholder":521},[460,117761,117762,117764,117766],{"class":462,"line":494},[460,117763,115807],{"class":900},[460,117765,2943],{"class":887},[460,117767,115812],{"class":1353},[460,117769,117770],{"class":462,"line":500},[460,117771,117772],{"class":1353},"\u003Cmujoco model=\"xml_basic\">\n",[460,117774,117775],{"class":462,"line":506},[460,117776,115822],{"class":1353},[460,117778,117779],{"class":462,"line":512},[460,117780,522],{"emptyLinePlaceholder":521},[460,117782,117783],{"class":462,"line":518},[460,117784,115831],{"class":1353},[460,117786,117787],{"class":462,"line":525},[460,117788,117789],{"class":1353},"    \u003Cgeom name=\"floor\" type=\"plane\" size=\"3 3 0.1\" rgba=\"0.7 0.7 0.7 1\"\u002F>\n",[460,117791,117792],{"class":462,"line":531},[460,117793,522],{"emptyLinePlaceholder":521},[460,117795,117796],{"class":462,"line":537},[460,117797,117798],{"class":1353},"    \u003Cbody name=\"red_box\" pos=\"0 0 1\">\n",[460,117800,117801],{"class":462,"line":543},[460,117802,117803],{"class":1353},"      \u003Cfreejoint name=\"red_box_free\"\u002F>\n",[460,117805,117806],{"class":462,"line":549},[460,117807,117808],{"class":1353},"      \u003Cgeom name=\"red_box_geom\" type=\"box\" size=\"0.15 0.15 0.15\" mass=\"1\" rgba=\"1 0 0 1\"\u002F>\n",[460,117810,117811],{"class":462,"line":555},[460,117812,117813],{"class":1353},"      \u003Csite name=\"box_center\" pos=\"0 0 0\" size=\"0.03\" rgba=\"0 1 0 1\"\u002F>\n",[460,117815,117816],{"class":462,"line":560},[460,117817,115860],{"class":1353},[460,117819,117820],{"class":462,"line":566},[460,117821,115865],{"class":1353},[460,117823,117824],{"class":462,"line":572},[460,117825,115870],{"class":1353},[460,117827,117828],{"class":462,"line":578},[460,117829,110191],{"class":1353},[460,117831,117832],{"class":462,"line":812},[460,117833,522],{"emptyLinePlaceholder":521},[460,117835,117836],{"class":462,"line":818},[460,117837,522],{"emptyLinePlaceholder":521},[460,117839,117840,117842,117844,117846,117848],{"class":462,"line":824},[460,117841,48352],{"class":887},[460,117843,18514],{"class":929},[460,117845,115891],{"class":466},[460,117847,110179],{"class":900},[460,117849,20257],{"class":466},[460,117851,117852,117854,117856,117858,117860],{"class":462,"line":2074},[460,117853,115900],{"class":466},[460,117855,894],{"class":887},[460,117857,115905],{"class":466},[460,117859,115807],{"class":900},[460,117861,3754],{"class":466},[460,117863,117864,117866,117868],{"class":462,"line":2088},[460,117865,115914],{"class":466},[460,117867,894],{"class":887},[460,117869,115919],{"class":466},[460,117871,117872],{"class":462,"line":2103},[460,117873,522],{"emptyLinePlaceholder":521},[460,117875,117876,117879,117881,117884,117887],{"class":462,"line":2122},[460,117877,117878],{"class":466},"    box_body_id ",[460,117880,894],{"class":887},[460,117882,117883],{"class":466}," mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_BODY, ",[460,117885,117886],{"class":1353},"\"red_box\"",[460,117888,3754],{"class":466},[460,117890,117891,117894,117896,117899,117902],{"class":462,"line":2144},[460,117892,117893],{"class":466},"    site_id ",[460,117895,894],{"class":887},[460,117897,117898],{"class":466}," mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SITE, ",[460,117900,117901],{"class":1353},"\"box_center\"",[460,117903,3754],{"class":466},[460,117905,117906],{"class":462,"line":2158},[460,117907,522],{"emptyLinePlaceholder":521},[460,117909,117910,117912,117915,117917,117919],{"class":462,"line":2163},[460,117911,19622],{"class":887},[460,117913,117914],{"class":466}," box_body_id ",[460,117916,781],{"class":887},[460,117918,2224],{"class":900},[460,117920,20257],{"class":466},[460,117922,117923,117926,117929,117931,117934],{"class":462,"line":2168},[460,117924,117925],{"class":887},"        raise",[460,117927,117928],{"class":900}," RuntimeError",[460,117930,2174],{"class":466},[460,117932,117933],{"class":1353},"\"body red_box not found\"",[460,117935,3754],{"class":466},[460,117937,117938,117940,117943,117945,117947],{"class":462,"line":2183},[460,117939,19622],{"class":887},[460,117941,117942],{"class":466}," site_id ",[460,117944,781],{"class":887},[460,117946,2224],{"class":900},[460,117948,20257],{"class":466},[460,117950,117951,117953,117955,117957,117960],{"class":462,"line":2194},[460,117952,117925],{"class":887},[460,117954,117928],{"class":900},[460,117956,2174],{"class":466},[460,117958,117959],{"class":1353},"\"site box_center not found\"",[460,117961,3754],{"class":466},[460,117963,117964],{"class":462,"line":2199},[460,117965,522],{"emptyLinePlaceholder":521},[460,117967,117968,117970,117972,117974,117976,117978,117980],{"class":462,"line":2204},[460,117969,19722],{"class":887},[460,117971,115994],{"class":466},[460,117973,11713],{"class":887},[460,117975,48848],{"class":900},[460,117977,2174],{"class":466},[460,117979,5490],{"class":900},[460,117981,47194],{"class":466},[460,117983,117984],{"class":462,"line":2212},[460,117985,116009],{"class":466},[460,117987,117988],{"class":462,"line":2257},[460,117989,522],{"emptyLinePlaceholder":521},[460,117991,117992,117994,117996,117999],{"class":462,"line":2285},[460,117993,47706],{"class":900},[460,117995,2174],{"class":466},[460,117997,117998],{"class":1353},"\"simulation time:\"",[460,118000,115971],{"class":466},[460,118002,118003,118005,118007,118010],{"class":462,"line":2298},[460,118004,47706],{"class":900},[460,118006,2174],{"class":466},[460,118008,118009],{"class":1353},"\"box body position:\"",[460,118011,118012],{"class":466},", data.xpos[box_body_id].copy())\n",[460,118014,118015,118017,118019,118022],{"class":462,"line":2303},[460,118016,47706],{"class":900},[460,118018,2174],{"class":466},[460,118020,118021],{"class":1353},"\"site position:\"",[460,118023,118024],{"class":466},", data.site_xpos[site_id].copy())\n",[460,118026,118027,118029,118031,118034],{"class":462,"line":2308},[460,118028,47706],{"class":900},[460,118030,2174],{"class":466},[460,118032,118033],{"class":1353},"\"box qpos:\"",[460,118035,118036],{"class":466},", np.array(data.qpos))\n",[460,118038,118039],{"class":462,"line":2318},[460,118040,522],{"emptyLinePlaceholder":521},[460,118042,118043],{"class":462,"line":2333},[460,118044,522],{"emptyLinePlaceholder":521},[460,118046,118047,118049,118051,118053,118055],{"class":462,"line":2338},[460,118048,18100],{"class":887},[460,118050,47627],{"class":900},[460,118052,116052],{"class":887},[460,118054,116055],{"class":1353},[460,118056,20257],{"class":466},[460,118058,118059],{"class":462,"line":2343},[460,118060,116062],{"class":466},[14,118062,118063],{},"保存为：",[451,118065,118067],{"className":40235,"code":118066,"language":40237,"meta":32,"style":32},"touch ch2_xml_basic.py\n",[457,118068,118069],{"__ignoreMap":32},[460,118070,118071,118073],{"class":462,"line":463},[460,118072,115776],{"class":929},[460,118074,118075],{"class":1353}," ch2_xml_basic.py\n",[14,118077,116794],{},[451,118079,118081],{"className":40235,"code":118080,"language":40237,"meta":32,"style":32},"python ch2_xml_basic.py\n",[457,118082,118083],{"__ignoreMap":32},[460,118084,118085,118087],{"class":462,"line":463},[460,118086,46789],{"class":929},[460,118088,118075],{"class":1353},[23,118090,116065],{"id":116065},[14,118092,118093],{},"用名字查找 body：",[451,118095,118097],{"className":46787,"code":118096,"language":46789,"meta":32,"style":32},"box_body_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_BODY, \"red_box\")\n",[457,118098,118099],{"__ignoreMap":32},[460,118100,118101,118104,118106,118108,118110],{"class":462,"line":463},[460,118102,118103],{"class":466},"box_body_id ",[460,118105,894],{"class":887},[460,118107,117883],{"class":466},[460,118109,117886],{"class":1353},[460,118111,3754],{"class":466},[14,118113,118114],{},"MuJoCo 内部主要用数字 ID 管理对象。你在 XML 里写的是名字，Python 读取数组时常常需要先把名字转成 ID。",[14,118116,118117],{},"用名字查找 site：",[451,118119,118121],{"className":46787,"code":118120,"language":46789,"meta":32,"style":32},"site_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SITE, \"box_center\")\n",[457,118122,118123],{"__ignoreMap":32},[460,118124,118125,118128,118130,118132,118134],{"class":462,"line":463},[460,118126,118127],{"class":466},"site_id ",[460,118129,894],{"class":887},[460,118131,117898],{"class":466},[460,118133,117901],{"class":1353},[460,118135,3754],{"class":466},[14,118137,118138,118139,118142,118143,118146],{},"注意第二个参数是对象类型。查 body 就用 ",[457,118140,118141],{},"mjOBJ_BODY","，查 site 就用 ",[457,118144,118145],{},"mjOBJ_SITE","。名字相同但类型不同，也不是同一个对象。",[14,118148,118149],{},"读取世界坐标：",[451,118151,118153],{"className":46787,"code":118152,"language":46789,"meta":32,"style":32},"data.xpos[box_body_id]\ndata.site_xpos[site_id]\n",[457,118154,118155,118160],{"__ignoreMap":32},[460,118156,118157],{"class":462,"line":463},[460,118158,118159],{"class":466},"data.xpos[box_body_id]\n",[460,118161,118162],{"class":462,"line":476},[460,118163,118164],{"class":466},"data.site_xpos[site_id]\n",[14,118166,118167,118170,118171,118174],{},[457,118168,118169],{},"xpos"," 是 body 的世界坐标，",[457,118172,118173],{},"site_xpos"," 是 site 的世界坐标。",[23,118176,116201],{"id":116201},[451,118178,118180],{"className":46787,"code":118179,"language":46789,"meta":32,"style":32},"import mujoco\nimport numpy as np\n",[457,118181,118182,118188],{"__ignoreMap":32},[460,118183,118184,118186],{"class":462,"line":463},[460,118185,46801],{"class":887},[460,118187,115794],{"class":466},[460,118189,118190,118192,118194,118196],{"class":462,"line":476},[460,118191,46801],{"class":887},[460,118193,47787],{"class":466},[460,118195,47790],{"class":887},[460,118197,47793],{"class":466},[14,118199,118200,118201,118204,118205,118208,118209,16957,118212,44794],{},"第一行导入 MuJoCo。第二行导入 NumPy，并给它起别名 ",[457,118202,118203],{},"np","。NumPy 是 Python 里处理数组和数值计算最常用的库。",[457,118206,118207],{},"as np"," 是习惯写法，后面就可以写 ",[457,118210,118211],{},"np.array(...)",[457,118213,118214],{},"np.round(...)",[451,118216,118217],{"className":46787,"code":116088,"language":46789,"meta":32,"style":32},[457,118218,118219,118227,118231],{"__ignoreMap":32},[460,118220,118221,118223,118225],{"class":462,"line":463},[460,118222,115807],{"class":900},[460,118224,2943],{"class":887},[460,118226,115812],{"class":1353},[460,118228,118229],{"class":462,"line":476},[460,118230,116103],{"class":1353},[460,118232,118233],{"class":462,"line":482},[460,118234,110191],{"class":1353},[14,118236,118237,118238,44794],{},"这里把 MJCF 模型保存成字符串。Python 不会理解 XML 的物理含义，真正解析 XML 的是 ",[457,118239,118240],{},"mujoco.MjModel.from_xml_string(XML)",[451,118242,118244],{"className":453,"code":118243,"language":455,"meta":32,"style":32},"\u003Csite name=\"box_center\" pos=\"0 0 0\" size=\"0.03\" rgba=\"0 1 0 1\"\u002F>\n",[457,118245,118246],{"__ignoreMap":32},[460,118247,118248,118250,118252,118254,118256,118258,118260,118262,118265,118267,118269,118272,118274,118276,118279],{"class":462,"line":463},[460,118249,781],{"class":466},[460,118251,117703],{"class":470},[460,118253,1908],{"class":929},[460,118255,894],{"class":466},[460,118257,117901],{"class":1353},[460,118259,115599],{"class":929},[460,118261,894],{"class":466},[460,118263,118264],{"class":1353},"\"0 0 0\"",[460,118266,115629],{"class":929},[460,118268,894],{"class":466},[460,118270,118271],{"class":1353},"\"0.03\"",[460,118273,2234],{"class":929},[460,118275,894],{"class":466},[460,118277,118278],{"class":1353},"\"0 1 0 1\"",[460,118280,115637],{"class":466},[14,118282,118283,118285,118286,118289,118290,118292,118293,118296],{},[457,118284,117703],{}," 是标记点。",[457,118287,118288],{},"pos=\"0 0 0\""," 表示这个点在 red_box body 的局部原点。",[457,118291,117663],{}," 表示显示出来的小球大小。",[457,118294,118295],{},"rgba=\"0 1 0 1\""," 表示绿色。",[451,118298,118299],{"className":46787,"code":118096,"language":46789,"meta":32,"style":32},[457,118300,118301],{"__ignoreMap":32},[460,118302,118303,118305,118307,118309,118311],{"class":462,"line":463},[460,118304,118103],{"class":466},[460,118306,894],{"class":887},[460,118308,117883],{"class":466},[460,118310,117886],{"class":1353},[460,118312,3754],{"class":466},[14,118314,118315,118316,118318],{},"这行的作用是：根据名字 ",[457,118317,117886],{}," 找到对应 body 的数字 ID。MuJoCo 内部数组不用名字索引，而是用数字索引，所以要先把名字转换成 ID。",[14,118320,118321],{},"拆开看：",[103,118323,118324,118330,118335,118341],{},[43,118325,118326,118329],{},[457,118327,118328],{},"mujoco.mj_name2id"," 是 MuJoCo 提供的查找函数。",[43,118331,118332,118334],{},[457,118333,116578],{}," 是被查询的模型。",[43,118336,118337,118340],{},[457,118338,118339],{},"mujoco.mjtObj.mjOBJ_BODY"," 表示要找的是 body。",[43,118342,118343,118345],{},[457,118344,117886],{}," 是 XML 里写的名字。",[451,118347,118348],{"className":46787,"code":118120,"language":46789,"meta":32,"style":32},[457,118349,118350],{"__ignoreMap":32},[460,118351,118352,118354,118356,118358,118360],{"class":462,"line":463},[460,118353,118127],{"class":466},[460,118355,894],{"class":887},[460,118357,117898],{"class":466},[460,118359,117901],{"class":1353},[460,118361,3754],{"class":466},[14,118363,118364,118365,44794],{},"这行同理，只是查找对象类型换成了 site，名字换成了 ",[457,118366,117901],{},[451,118368,118370],{"className":46787,"code":118369,"language":46789,"meta":32,"style":32},"if box_body_id \u003C 0:\n    raise RuntimeError(\"body red_box not found\")\n",[457,118371,118372,118384],{"__ignoreMap":32},[460,118373,118374,118376,118378,118380,118382],{"class":462,"line":463},[460,118375,18100],{"class":887},[460,118377,117914],{"class":466},[460,118379,781],{"class":887},[460,118381,2224],{"class":900},[460,118383,20257],{"class":466},[460,118385,118386,118389,118391,118393,118395],{"class":462,"line":476},[460,118387,118388],{"class":887},"    raise",[460,118390,117928],{"class":900},[460,118392,2174],{"class":466},[460,118394,117933],{"class":1353},[460,118396,3754],{"class":466},[14,118398,118399,118401,118402,118405,118406,118409,118410,118413],{},[457,118400,18100],{}," 是条件判断。",[457,118403,118404],{},"mj_name2id"," 找不到对象时会返回 ",[457,118407,118408],{},"-1","。所以如果 ID 小于 0，就说明名字写错了。",[457,118411,118412],{},"raise RuntimeError(...)"," 表示主动抛出错误，让程序停下来并告诉你原因。",[451,118415,118417],{"className":46787,"code":118416,"language":46789,"meta":32,"style":32},"for _ in range(200):\n    mujoco.mj_step(model, data)\n",[457,118418,118419,118435],{"__ignoreMap":32},[460,118420,118421,118423,118425,118427,118429,118431,118433],{"class":462,"line":463},[460,118422,19547],{"class":887},[460,118424,115994],{"class":466},[460,118426,11713],{"class":887},[460,118428,48848],{"class":900},[460,118430,2174],{"class":466},[460,118432,5490],{"class":900},[460,118434,47194],{"class":466},[460,118436,118437],{"class":462,"line":476},[460,118438,116192],{"class":466},[14,118440,118441],{},"这段让仿真运行 200 步。因为 timestep 是 0.01，所以仿真时间约为 2 秒。",[451,118443,118445],{"className":46787,"code":118444,"language":46789,"meta":32,"style":32},"print(\"box body position:\", data.xpos[box_body_id].copy())\n",[457,118446,118447],{"__ignoreMap":32},[460,118448,118449,118451,118453,118455],{"class":462,"line":463},[460,118450,46824],{"class":900},[460,118452,2174],{"class":466},[460,118454,118009],{"class":1353},[460,118456,118012],{"class":466},[14,118458,118459,118461,118462,118465],{},[457,118460,115572],{}," 保存所有 body 的世界坐标。",[457,118463,118464],{},"data.xpos[box_body_id]"," 表示取出 red_box 这个 body 的世界坐标。",[451,118467,118469],{"className":46787,"code":118468,"language":46789,"meta":32,"style":32},"print(\"site position:\", data.site_xpos[site_id].copy())\n",[457,118470,118471],{"__ignoreMap":32},[460,118472,118473,118475,118477,118479],{"class":462,"line":463},[460,118474,46824],{"class":900},[460,118476,2174],{"class":466},[460,118478,118021],{"class":1353},[460,118480,118024],{"class":466},[14,118482,118483,118486,118487,118489],{},[457,118484,118485],{},"data.site_xpos"," 保存所有 site 的世界坐标。因为 ",[457,118488,117470],{}," 放在 box 的中心，所以它的位置通常和 box body 的位置接近。",[451,118491,118493],{"className":46787,"code":118492,"language":46789,"meta":32,"style":32},"print(\"box qpos:\", np.array(data.qpos))\n",[457,118494,118495],{"__ignoreMap":32},[460,118496,118497,118499,118501,118503],{"class":462,"line":463},[460,118498,46824],{"class":900},[460,118500,2174],{"class":466},[460,118502,118033],{"class":1353},[460,118504,118036],{"class":466},[14,118506,118507,118508,118511],{},"这里打印广义位置数组。",[457,118509,118510],{},"np.array(data.qpos)"," 把 MuJoCo 内部数组转成 NumPy 数组，方便显示和后续计算。",[18,118513,116809],{"id":116808},[14,118515,118516,118517,118520,118521,44794],{},"程序会输出 ",[457,118518,118519],{},"simulation time","、box 的世界坐标、site 的世界坐标和 ",[457,118522,118523],{},"qpos",[14,118525,118526,118528,118529,118532,118533,118536],{},[457,118527,118464],{}," 是 body 的世界坐标位置。",[457,118530,118531],{},"data.site_xpos[site_id]"," 是 site 的世界坐标位置。",[457,118534,118535],{},"mujoco.mj_name2id(...)"," 用名字查找模型元素 ID。",[14,118538,5949,118539,6261,118541,118543],{},[457,118540,117470],{},[457,118542,118288],{},"，那么它位于 box body 的局部原点。由于这个例子里 site 放在 body 中心，所以 body position 和 site position 通常非常接近。",[14,118545,118546],{},"如果你把 site 改成：",[451,118548,118550],{"className":453,"code":118549,"language":455,"meta":32,"style":32},"\u003Csite name=\"box_top\" pos=\"0 0 0.15\" size=\"0.03\" rgba=\"0 1 0 1\"\u002F>\n",[457,118551,118552],{"__ignoreMap":32},[460,118553,118554,118556,118558,118560,118562,118565,118567,118569,118572,118574,118576,118578,118580,118582,118584],{"class":462,"line":463},[460,118555,781],{"class":466},[460,118557,117703],{"class":470},[460,118559,1908],{"class":929},[460,118561,894],{"class":466},[460,118563,118564],{"class":1353},"\"box_top\"",[460,118566,115599],{"class":929},[460,118568,894],{"class":466},[460,118570,118571],{"class":1353},"\"0 0 0.15\"",[460,118573,115629],{"class":929},[460,118575,894],{"class":466},[460,118577,118271],{"class":1353},[460,118579,2234],{"class":929},[460,118581,894],{"class":466},[460,118583,118278],{"class":1353},[460,118585,115637],{"class":466},[14,118587,118588,118589,118592],{},"那么 site 会在盒子局部坐标的上方，输出的 ",[457,118590,118591],{},"site position"," 就会比 body position 的 z 坐标更高。",[18,118594,116841],{"id":116840},[103,118596,118597,118606,118609,118616,118622,118633],{},[43,118598,116904,118599,118601,118602,116907,118604,44794],{},[457,118600,117474],{}," 的初始高度从 ",[457,118603,901],{},[457,118605,907],{},[43,118607,118608],{},"重新运行程序。",[43,118610,118611,118612,118615],{},"观察 ",[457,118613,118614],{},"box qpos"," 和最终位置是否变化。",[43,118617,118618,118619,118621],{},"故意把 ",[457,118620,117703],{}," 名称改错，确认程序能报错。",[43,118623,116904,118624,118626,118627,116907,118629,118632],{},[457,118625,115613],{}," 的颜色 ",[457,118628,116525],{},[457,118630,118631],{},"rgba=\"0 0 1 1\"","，后面用 viewer 看颜色变化。",[43,118634,116904,118635,6261,118637,116907,118640,118643,118644,118646],{},[457,118636,117470],{},[457,118638,118639],{},"pos",[457,118641,118642],{},"0 0 0.2","，观察 ",[457,118645,118591],{}," 如何变化。",[18,118648,116946],{"id":116945},[23,118650,118652],{"id":118651},"xml-error-schema-violation",[457,118653,118654],{},"XML Error: Schema violation",[14,118656,118657],{},"说明 XML 标签或属性不合法。查官方 XML Reference，确认标签放在正确父标签下面，属性名拼写正确。",[23,118659,118661,4997,118663],{"id":118660},"mj_name2id-返回-1",[457,118662,118404],{},[457,118664,118408],{},[14,118666,118667,118668,118671],{},"说明名字没有找到。检查 XML 中 ",[457,118669,118670],{},"name=\"...\"","，并确认对象类型正确。",[23,118673,118674],{"id":118674},"物体不下落",[14,118676,117016],{},[103,118678,118679,118684,118689],{},[43,118680,118681,118682],{},"body 是否有 ",[457,118683,116113],{},[43,118685,118686,118687],{},"gravity 是否为 ",[457,118688,117082],{},[43,118690,118691,118692,118694],{},"body 是否被固定在 ",[457,118693,116334],{}," 中",[23,118696,118697],{"id":118697},"坐标看起来不符合预期",[14,118699,118700],{},"先区分两种坐标：",[16884,118702,118703,118712],{},[16887,118704,118705],{},[16890,118706,118707,118710],{},[16893,118708,118709],{"align":40149},"坐标",[16893,118711,115193],{"align":40149},[16930,118713,118714,118724],{},[16890,118715,118716,118721],{},[16935,118717,118718,118719],{"align":40149},"XML 里的 ",[457,118720,118639],{},[16935,118722,118723],{"align":40149},"相对父 body 的局部坐标",[16890,118725,118726,118732],{},[16935,118727,118728,41391,118730],{"align":40149},[457,118729,115572],{},[457,118731,118485],{},[16935,118733,118734],{"align":40149},"仿真更新后的世界坐标",[14,118736,118737,118738,118740,118741,6271,118744,118746],{},"如果你修改了 ",[457,118739,115563],{},"，但还没调用 ",[457,118742,118743],{},"mj_forward",[457,118745,115708],{},"，世界坐标可能还没有更新。",[18,118748,117100],{"id":117099},[14,118750,118751],{},"MJCF 建模先掌握四件事：",[103,118753,118754,118759,118764,118769],{},[43,118755,118756,118758],{},[457,118757,1721],{}," 表示刚体层级。",[43,118760,118761,118763],{},[457,118762,115613],{}," 表示形状、碰撞和质量。",[43,118765,118766,118768],{},[457,118767,117449],{}," 决定 body 能不能动、怎么动。",[43,118770,118771,118773],{},[457,118772,117703],{}," 用来标记关键点，方便 Python 读取位置。",[14,118775,118776],{},"只要能看懂 body、geom、joint、site，后面搭建 Cartpole 和 Reacher 就不会迷路。",[1944,118778,118779],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":32,"searchDepth":476,"depth":476,"links":118781},[118782,118783,118784,118790,118794,118795,118796,118803],{"id":115139,"depth":476,"text":115140},{"id":115262,"depth":476,"text":115263},{"id":115537,"depth":476,"text":115538,"children":118785},[118786,118787,118788,118789],{"id":117453,"depth":482,"text":117453},{"id":117567,"depth":482,"text":117567},{"id":117593,"depth":482,"text":117594},{"id":117697,"depth":482,"text":117698},{"id":115745,"depth":476,"text":115746,"children":118791},[118792,118793],{"id":116065,"depth":482,"text":116065},{"id":116201,"depth":482,"text":116201},{"id":116808,"depth":476,"text":116809},{"id":116840,"depth":476,"text":116841},{"id":116945,"depth":476,"text":116946,"children":118797},[118798,118799,118801,118802],{"id":118651,"depth":482,"text":118654},{"id":118660,"depth":482,"text":118800},"mj_name2id 返回 -1",{"id":118674,"depth":482,"text":118674},{"id":118697,"depth":482,"text":118697},{"id":117099,"depth":476,"text":117100},{},"\u002Fwiki\u002F2025-05-17-mujoco\u002Fch2-xmlmjcf",{"title":117147,"description":32},"wiki\u002F2025-05-17-mujoco学习\u002Fch2-XML与MJCF物理建模基础","Y8Y5A098PzvFI7G-_y7JK19FBEdoto95izJP4Ykw-IM",{"id":118810,"title":118811,"body":118812,"description":32,"extension":16683,"meta":120307,"navigation":521,"path":120308,"seo":120309,"stem":120310,"__hash__":120311},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Fch3-Python控制接口.md","3.Python 控制接口：读取状态与推进仿真",{"type":7,"value":118813,"toc":120279},[118814,118817,118819,118822,118825,118863,118866,118872,118875,118877,118879,118906,118908,118922,118924,118965,118967,118991,118993,118996,119005,119014,119017,119026,119034,119043,119046,119056,119059,119111,119118,119124,119132,119180,119183,119202,119205,119213,119217,119226,119259,119261,119609,119611,119623,119625,119636,119638,119641,119662,119668,119671,119696,119706,119709,119717,119720,119723,119744,119755,119757,119777,119780,119801,119810,119829,119835,119860,119863,119877,119884,119908,119911,119919,119928,119944,119956,119964,119973,119975,119978,120002,120007,120010,120032,120034,120073,120075,120082,120084,120092,120095,120098,120110,120151,120158,120169,120176,120179,120228,120231,120234,120240,120242,120247,120273,120276],[10,118815,118811],{"id":118816},"_3python-控制接口读取状态与推进仿真",[18,118818,115140],{"id":115139},[14,118820,118821],{},"本章理解 Python 如何控制 MuJoCo 仿真。",[14,118823,118824],{},"你将学习:",[103,118826,118827,118832,118837,118841,118846,118857],{},[43,118828,118829],{},[457,118830,118831],{},"MjModel.from_xml_string",[43,118833,118834],{},[457,118835,118836],{},"MjData(model)",[43,118838,118839],{},[457,118840,115708],{},[43,118842,118843],{},[457,118844,118845],{},"mj_resetData",[43,118847,118848,118849,16957,118851,16957,118854],{},"读取 ",[457,118850,118523],{},[457,118852,118853],{},"qvel",[457,118855,118856],{},"ctrl",[43,118858,118859,118860],{},"使用 ",[457,118861,118862],{},"model.opt.timestep",[14,118864,118865],{},"从这一章开始，你要把 MuJoCo 当成一个“状态机”来看：",[451,118867,118870],{"className":118868,"code":118869,"language":8391,"meta":32},[21693],"当前状态 data\n    + 当前控制 data.ctrl\n    + 模型参数 model\n          ↓\n      mj_step\n          ↓\n新的状态 data\n",[457,118871,118869],{"__ignoreMap":32},[14,118873,118874],{},"后面写控制器、奖励函数、强化学习环境，都是围绕这个状态机展开。",[18,118876,115263],{"id":115262},[14,118878,115266],{},[451,118880,118882],{"className":40235,"code":118881,"language":40237,"meta":32,"style":32},"sudo dnf install -y python3 python3-pip mesa-libGL mesa-dri-drivers glfw\n",[457,118883,118884],{"__ignoreMap":32},[460,118885,118886,118888,118890,118892,118894,118897,118899,118901,118903],{"class":462,"line":463},[460,118887,40989],{"class":929},[460,118889,42726],{"class":1353},[460,118891,40247],{"class":1353},[460,118893,42811],{"class":900},[460,118895,118896],{"class":1353}," python3",[460,118898,115291],{"class":1353},[460,118900,116994],{"class":1353},[460,118902,115307],{"class":1353},[460,118904,118905],{"class":1353}," glfw\n",[14,118907,117312],{},[451,118909,118910],{"className":40235,"code":115412,"language":40237,"meta":32,"style":32},[457,118911,118912],{"__ignoreMap":32},[460,118913,118914,118916,118918,118920],{"class":462,"line":463},[460,118915,40244],{"class":929},[460,118917,40247],{"class":1353},[460,118919,115423],{"class":1353},[460,118921,115426],{"class":1353},[14,118923,117329],{},[451,118925,118927],{"className":40235,"code":118926,"language":40237,"meta":32,"style":32},"conda create -n mujoco-python-api python=3.10 -y\nconda activate mujoco-python-api\npip install \"mujoco>=2.3\" numpy\n",[457,118928,118929,118946,118955],{"__ignoreMap":32},[460,118930,118931,118933,118935,118937,118940,118942,118944],{"class":462,"line":463},[460,118932,46739],{"class":929},[460,118934,45585],{"class":1353},[460,118936,41528],{"class":900},[460,118938,118939],{"class":1353}," mujoco-python-api",[460,118941,115468],{"class":1353},[460,118943,115471],{"class":900},[460,118945,115474],{"class":900},[460,118947,118948,118950,118952],{"class":462,"line":476},[460,118949,46739],{"class":929},[460,118951,115481],{"class":1353},[460,118953,118954],{"class":1353}," mujoco-python-api\n",[460,118956,118957,118959,118961,118963],{"class":462,"line":482},[460,118958,40244],{"class":929},[460,118960,40247],{"class":1353},[460,118962,115423],{"class":1353},[460,118964,115426],{"class":1353},[14,118966,115497],{},[103,118968,118969,118976,118985],{},[43,118970,118971,115511,118973,118975],{},[457,118972,115168],{},[457,118974,115173],{}," 是官方 Python bindings 的类名。",[43,118977,118978,118979,118982,118983,44794],{},"官方 Python API 中结构体名称使用大写开头，例如 C API 的 ",[457,118980,118981],{},"mjModel"," 在 Python 中是 ",[457,118984,115202],{},[43,118986,118987,118988,44794],{},"不要使用 ",[457,118989,118990],{},"sim = mujoco_py.MjSim(...)",[18,118992,115538],{"id":115537},[14,118994,118995],{},"仿真推进核心代码:",[451,118997,118999],{"className":46787,"code":118998,"language":46789,"meta":32,"style":32},"mujoco.mj_step(model, data)\n",[457,119000,119001],{"__ignoreMap":32},[460,119002,119003],{"class":462,"line":463},[460,119004,118998],{"class":466},[14,119006,119007,119008,16957,119010,16957,119012,44794],{},"这一步会根据当前状态和控制量计算力，推进动力学，并更新 ",[457,119009,115563],{},[457,119011,115566],{},[457,119013,115560],{},[14,119015,119016],{},"重置仿真:",[451,119018,119020],{"className":46787,"code":119019,"language":46789,"meta":32,"style":32},"mujoco.mj_resetData(model, data)\n",[457,119021,119022],{"__ignoreMap":32},[460,119023,119024],{"class":462,"line":463},[460,119025,119019],{"class":466},[14,119027,119028,119029,6271,119031,119033],{},"如果手动修改了 ",[457,119030,115563],{},[457,119032,115566],{},"，通常应调用:",[451,119035,119037],{"className":46787,"code":119036,"language":46789,"meta":32,"style":32},"mujoco.mj_forward(model, data)\n",[457,119038,119039],{"__ignoreMap":32},[460,119040,119041],{"class":462,"line":463},[460,119042,119036],{"class":466},[14,119044,119045],{},"让 MuJoCo 根据新状态更新派生量，例如 body 世界坐标。",[23,119047,119049,16957,119051,16957,119053,119055],{"id":119048},"qposqvelctrl-是什么",[457,119050,118523],{},[457,119052,118853],{},[457,119054,118856],{}," 是什么",[14,119057,119058],{},"这三个数组是 MuJoCo Python 控制里最常见的数组：",[16884,119060,119061,119073],{},[16887,119062,119063],{},[16890,119064,119065,119068,119070],{},[16893,119066,119067],{"align":40149},"字段",[16893,119069,115193],{"align":40149},[16893,119071,119072],{"align":40149},"谁来修改",[16930,119074,119075,119087,119099],{},[16890,119076,119077,119081,119084],{},[16935,119078,119079],{"align":40149},[457,119080,115563],{},[16935,119082,119083],{"align":40149},"广义位置，例如小车位置、关节角、自由物体位置姿态",[16935,119085,119086],{"align":40149},"MuJoCo 更新，也可以手动设置初始状态",[16890,119088,119089,119093,119096],{},[16935,119090,119091],{"align":40149},[457,119092,115566],{},[16935,119094,119095],{"align":40149},"广义速度，例如小车速度、关节角速度",[16935,119097,119098],{"align":40149},"MuJoCo 更新，也可以手动清零",[16890,119100,119101,119105,119108],{},[16935,119102,119103],{"align":40149},[457,119104,115569],{},[16935,119106,119107],{"align":40149},"actuator 的控制输入",[16935,119109,119110],{"align":40149},"主要由你的控制代码写入",[14,119112,25511,119113,115511,119115,119117],{},[457,119114,118523],{},[457,119116,118853],{}," 不一定同维。自由刚体就是典型例子：",[451,119119,119122],{"className":119120,"code":119121,"language":8391,"meta":32},[21693],"freejoint: qpos 7 维，qvel 6 维\n",[457,119123,119121],{"__ignoreMap":32},[23,119125,119127,115511,119129,119131],{"id":119126},"mj_step-和-mj_forward-的区别",[457,119128,115708],{},[457,119130,118743],{}," 的区别",[16884,119133,119134,119147],{},[16887,119135,119136],{},[16890,119137,119138,119141,119144],{},[16893,119139,119140],{"align":40149},"函数",[16893,119142,119143],{"align":40149},"是否推进时间",[16893,119145,119146],{"align":40149},"什么时候用",[16930,119148,119149,119162],{},[16890,119150,119151,119156,119159],{},[16935,119152,119153],{"align":40149},[457,119154,119155],{},"mj_step(model, data)",[16935,119157,119158],{"align":40149},"是",[16935,119160,119161],{"align":40149},"正常仿真循环，每调用一次前进一步",[16890,119163,119164,119169,119172],{},[16935,119165,119166],{"align":40149},[457,119167,119168],{},"mj_forward(model, data)",[16935,119170,119171],{"align":40149},"否",[16935,119173,119174,119175,16957,119177,119179],{"align":40149},"手动改了 ",[457,119176,118523],{},[457,119178,118853],{}," 后，刷新派生量",[14,119181,119182],{},"例如你写：",[451,119184,119186],{"className":46787,"code":119185,"language":46789,"meta":32,"style":32},"data.qpos[2] = 2.0\n",[457,119187,119188],{"__ignoreMap":32},[460,119189,119190,119193,119195,119197,119199],{"class":462,"line":463},[460,119191,119192],{"class":466},"data.qpos[",[460,119194,907],{"class":900},[460,119196,11884],{"class":466},[460,119198,894],{"class":887},[460,119200,119201],{"class":900}," 2.0\n",[14,119203,119204],{},"这只是改了“原始状态数组”。MuJoCo 还没有重新计算 body 世界坐标、site 世界坐标等派生数据，所以要接着调用：",[451,119206,119207],{"className":46787,"code":119036,"language":46789,"meta":32,"style":32},[457,119208,119209],{"__ignoreMap":32},[460,119210,119211],{"class":462,"line":463},[460,119212,119036],{"class":466},[23,119214,119216],{"id":119215},"为什么-reset-后要重新设置状态","为什么 reset 后要重新设置状态",[14,119218,119219,119222,119223,119225],{},[457,119220,119221],{},"mujoco.mj_resetData(model, data)"," 会把 ",[457,119224,49729],{}," 重置回模型默认状态。如果你想每次 episode 从随机姿态开始，常见写法是：",[451,119227,119229],{"className":46787,"code":119228,"language":46789,"meta":32,"style":32},"mujoco.mj_resetData(model, data)\ndata.qpos[:] = random_qpos\ndata.qvel[:] = 0.0\nmujoco.mj_forward(model, data)\n",[457,119230,119231,119235,119245,119255],{"__ignoreMap":32},[460,119232,119233],{"class":462,"line":463},[460,119234,119019],{"class":466},[460,119236,119237,119240,119242],{"class":462,"line":476},[460,119238,119239],{"class":466},"data.qpos[:] ",[460,119241,894],{"class":887},[460,119243,119244],{"class":466}," random_qpos\n",[460,119246,119247,119250,119252],{"class":462,"line":482},[460,119248,119249],{"class":466},"data.qvel[:] ",[460,119251,894],{"class":887},[460,119253,119254],{"class":900}," 0.0\n",[460,119256,119257],{"class":462,"line":488},[460,119258,119036],{"class":466},[18,119260,115746],{"id":115745},[451,119262,119264],{"className":46787,"code":119263,"language":46789,"meta":32,"style":32},"import mujoco\nimport numpy as np\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"state_api\">\n  \u003Coption timestep=\"0.01\" gravity=\"0 0 -9.81\"\u002F>\n\n  \u003Cworldbody>\n    \u003Cgeom name=\"floor\" type=\"plane\" size=\"3 3 0.1\"\u002F>\n\n    \u003Cbody name=\"ball\" pos=\"0 0 1\">\n      \u003Cfreejoint name=\"ball_free\"\u002F>\n      \u003Cgeom name=\"ball_geom\" type=\"sphere\" size=\"0.1\" mass=\"1\" rgba=\"0 0.2 1 1\"\u002F>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\ndef print_state(prefix: str, model: mujoco.MjModel, data: mujoco.MjData) -> None:\n    print(prefix)\n    print(\"  timestep:\", model.opt.timestep)\n    print(\"  time:\", data.time)\n    print(\"  qpos:\", np.round(data.qpos.copy(), 4))\n    print(\"  qvel:\", np.round(data.qvel.copy(), 4))\n\n\ndef main() -> None:\n    model = mujoco.MjModel.from_xml_string(XML)\n    data = mujoco.MjData(model)\n\n    print_state(\"initial\", model, data)\n\n    for _ in range(50):\n        mujoco.mj_step(model, data)\n\n    print_state(\"after 50 steps\", model, data)\n\n    mujoco.mj_resetData(model, data)\n    print_state(\"after reset\", model, data)\n\n    data.qpos[2] = 2.0\n    mujoco.mj_forward(model, data)\n    print_state(\"after manual qpos edit\", model, data)\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,119265,119266,119272,119282,119286,119290,119298,119303,119307,119311,119315,119320,119324,119329,119334,119339,119343,119347,119351,119355,119359,119363,119382,119389,119401,119412,119428,119444,119448,119452,119464,119476,119484,119488,119499,119503,119519,119523,119527,119536,119540,119545,119554,119558,119571,119576,119585,119589,119593,119605],{"__ignoreMap":32},[460,119267,119268,119270],{"class":462,"line":463},[460,119269,46801],{"class":887},[460,119271,115794],{"class":466},[460,119273,119274,119276,119278,119280],{"class":462,"line":476},[460,119275,46801],{"class":887},[460,119277,47787],{"class":466},[460,119279,47790],{"class":887},[460,119281,47793],{"class":466},[460,119283,119284],{"class":462,"line":482},[460,119285,522],{"emptyLinePlaceholder":521},[460,119287,119288],{"class":462,"line":488},[460,119289,522],{"emptyLinePlaceholder":521},[460,119291,119292,119294,119296],{"class":462,"line":494},[460,119293,115807],{"class":900},[460,119295,2943],{"class":887},[460,119297,115812],{"class":1353},[460,119299,119300],{"class":462,"line":500},[460,119301,119302],{"class":1353},"\u003Cmujoco model=\"state_api\">\n",[460,119304,119305],{"class":462,"line":506},[460,119306,115822],{"class":1353},[460,119308,119309],{"class":462,"line":512},[460,119310,522],{"emptyLinePlaceholder":521},[460,119312,119313],{"class":462,"line":518},[460,119314,115831],{"class":1353},[460,119316,119317],{"class":462,"line":525},[460,119318,119319],{"class":1353},"    \u003Cgeom name=\"floor\" type=\"plane\" size=\"3 3 0.1\"\u002F>\n",[460,119321,119322],{"class":462,"line":531},[460,119323,522],{"emptyLinePlaceholder":521},[460,119325,119326],{"class":462,"line":537},[460,119327,119328],{"class":1353},"    \u003Cbody name=\"ball\" pos=\"0 0 1\">\n",[460,119330,119331],{"class":462,"line":543},[460,119332,119333],{"class":1353},"      \u003Cfreejoint name=\"ball_free\"\u002F>\n",[460,119335,119336],{"class":462,"line":549},[460,119337,119338],{"class":1353},"      \u003Cgeom name=\"ball_geom\" type=\"sphere\" size=\"0.1\" mass=\"1\" rgba=\"0 0.2 1 1\"\u002F>\n",[460,119340,119341],{"class":462,"line":555},[460,119342,115860],{"class":1353},[460,119344,119345],{"class":462,"line":560},[460,119346,115865],{"class":1353},[460,119348,119349],{"class":462,"line":566},[460,119350,115870],{"class":1353},[460,119352,119353],{"class":462,"line":572},[460,119354,110191],{"class":1353},[460,119356,119357],{"class":462,"line":578},[460,119358,522],{"emptyLinePlaceholder":521},[460,119360,119361],{"class":462,"line":812},[460,119362,522],{"emptyLinePlaceholder":521},[460,119364,119365,119367,119370,119373,119375,119378,119380],{"class":462,"line":818},[460,119366,48352],{"class":887},[460,119368,119369],{"class":929}," print_state",[460,119371,119372],{"class":466},"(prefix: ",[460,119374,6393],{"class":900},[460,119376,119377],{"class":466},", model: mujoco.MjModel, data: mujoco.MjData) -> ",[460,119379,110179],{"class":900},[460,119381,20257],{"class":466},[460,119383,119384,119386],{"class":462,"line":824},[460,119385,47706],{"class":900},[460,119387,119388],{"class":466},"(prefix)\n",[460,119390,119391,119393,119395,119398],{"class":462,"line":2074},[460,119392,47706],{"class":900},[460,119394,2174],{"class":466},[460,119396,119397],{"class":1353},"\"  timestep:\"",[460,119399,119400],{"class":466},", model.opt.timestep)\n",[460,119402,119403,119405,119407,119410],{"class":462,"line":2088},[460,119404,47706],{"class":900},[460,119406,2174],{"class":466},[460,119408,119409],{"class":1353},"\"  time:\"",[460,119411,115971],{"class":466},[460,119413,119414,119416,119418,119421,119424,119426],{"class":462,"line":2103},[460,119415,47706],{"class":900},[460,119417,2174],{"class":466},[460,119419,119420],{"class":1353},"\"  qpos:\"",[460,119422,119423],{"class":466},", np.round(data.qpos.copy(), ",[460,119425,918],{"class":900},[460,119427,6311],{"class":466},[460,119429,119430,119432,119434,119437,119440,119442],{"class":462,"line":2122},[460,119431,47706],{"class":900},[460,119433,2174],{"class":466},[460,119435,119436],{"class":1353},"\"  qvel:\"",[460,119438,119439],{"class":466},", np.round(data.qvel.copy(), ",[460,119441,918],{"class":900},[460,119443,6311],{"class":466},[460,119445,119446],{"class":462,"line":2144},[460,119447,522],{"emptyLinePlaceholder":521},[460,119449,119450],{"class":462,"line":2158},[460,119451,522],{"emptyLinePlaceholder":521},[460,119453,119454,119456,119458,119460,119462],{"class":462,"line":2163},[460,119455,48352],{"class":887},[460,119457,18514],{"class":929},[460,119459,115891],{"class":466},[460,119461,110179],{"class":900},[460,119463,20257],{"class":466},[460,119465,119466,119468,119470,119472,119474],{"class":462,"line":2168},[460,119467,115900],{"class":466},[460,119469,894],{"class":887},[460,119471,115905],{"class":466},[460,119473,115807],{"class":900},[460,119475,3754],{"class":466},[460,119477,119478,119480,119482],{"class":462,"line":2183},[460,119479,115914],{"class":466},[460,119481,894],{"class":887},[460,119483,115919],{"class":466},[460,119485,119486],{"class":462,"line":2194},[460,119487,522],{"emptyLinePlaceholder":521},[460,119489,119490,119493,119496],{"class":462,"line":2199},[460,119491,119492],{"class":466},"    print_state(",[460,119494,119495],{"class":1353},"\"initial\"",[460,119497,119498],{"class":466},", model, data)\n",[460,119500,119501],{"class":462,"line":2204},[460,119502,522],{"emptyLinePlaceholder":521},[460,119504,119505,119507,119509,119511,119513,119515,119517],{"class":462,"line":2212},[460,119506,19722],{"class":887},[460,119508,115994],{"class":466},[460,119510,11713],{"class":887},[460,119512,48848],{"class":900},[460,119514,2174],{"class":466},[460,119516,2549],{"class":900},[460,119518,47194],{"class":466},[460,119520,119521],{"class":462,"line":2257},[460,119522,116009],{"class":466},[460,119524,119525],{"class":462,"line":2285},[460,119526,522],{"emptyLinePlaceholder":521},[460,119528,119529,119531,119534],{"class":462,"line":2298},[460,119530,119492],{"class":466},[460,119532,119533],{"class":1353},"\"after 50 steps\"",[460,119535,119498],{"class":466},[460,119537,119538],{"class":462,"line":2303},[460,119539,522],{"emptyLinePlaceholder":521},[460,119541,119542],{"class":462,"line":2308},[460,119543,119544],{"class":466},"    mujoco.mj_resetData(model, data)\n",[460,119546,119547,119549,119552],{"class":462,"line":2318},[460,119548,119492],{"class":466},[460,119550,119551],{"class":1353},"\"after reset\"",[460,119553,119498],{"class":466},[460,119555,119556],{"class":462,"line":2333},[460,119557,522],{"emptyLinePlaceholder":521},[460,119559,119560,119563,119565,119567,119569],{"class":462,"line":2338},[460,119561,119562],{"class":466},"    data.qpos[",[460,119564,907],{"class":900},[460,119566,11884],{"class":466},[460,119568,894],{"class":887},[460,119570,119201],{"class":900},[460,119572,119573],{"class":462,"line":2343},[460,119574,119575],{"class":466},"    mujoco.mj_forward(model, data)\n",[460,119577,119578,119580,119583],{"class":462,"line":2353},[460,119579,119492],{"class":466},[460,119581,119582],{"class":1353},"\"after manual qpos edit\"",[460,119584,119498],{"class":466},[460,119586,119587],{"class":462,"line":2368},[460,119588,522],{"emptyLinePlaceholder":521},[460,119590,119591],{"class":462,"line":2381},[460,119592,522],{"emptyLinePlaceholder":521},[460,119594,119595,119597,119599,119601,119603],{"class":462,"line":2394},[460,119596,18100],{"class":887},[460,119598,47627],{"class":900},[460,119600,116052],{"class":887},[460,119602,116055],{"class":1353},[460,119604,20257],{"class":466},[460,119606,119607],{"class":462,"line":2399},[460,119608,116062],{"class":466},[14,119610,118063],{},[451,119612,119614],{"className":40235,"code":119613,"language":40237,"meta":32,"style":32},"touch ch3_python_state.py\n",[457,119615,119616],{"__ignoreMap":32},[460,119617,119618,119620],{"class":462,"line":463},[460,119619,115776],{"class":929},[460,119621,119622],{"class":1353}," ch3_python_state.py\n",[14,119624,116794],{},[451,119626,119628],{"className":40235,"code":119627,"language":40237,"meta":32,"style":32},"python ch3_python_state.py\n",[457,119629,119630],{"__ignoreMap":32},[460,119631,119632,119634],{"class":462,"line":463},[460,119633,46789],{"class":929},[460,119635,119622],{"class":1353},[23,119637,116065],{"id":116065},[14,119639,119640],{},"打印状态的函数：",[451,119642,119644],{"className":46787,"code":119643,"language":46789,"meta":32,"style":32},"def print_state(prefix: str, model: mujoco.MjModel, data: mujoco.MjData) -> None:\n",[457,119645,119646],{"__ignoreMap":32},[460,119647,119648,119650,119652,119654,119656,119658,119660],{"class":462,"line":463},[460,119649,48352],{"class":887},[460,119651,119369],{"class":929},[460,119653,119372],{"class":466},[460,119655,6393],{"class":900},[460,119657,119377],{"class":466},[460,119659,110179],{"class":900},[460,119661,20257],{"class":466},[14,119663,119664,119665,119667],{},"这个函数不是 MuJoCo 必需的，只是为了让你更清楚地看到每个阶段 ",[457,119666,49729],{}," 里发生了什么。",[14,119669,119670],{},"推进 50 步：",[451,119672,119674],{"className":46787,"code":119673,"language":46789,"meta":32,"style":32},"for _ in range(50):\n    mujoco.mj_step(model, data)\n",[457,119675,119676,119692],{"__ignoreMap":32},[460,119677,119678,119680,119682,119684,119686,119688,119690],{"class":462,"line":463},[460,119679,19547],{"class":887},[460,119681,115994],{"class":466},[460,119683,11713],{"class":887},[460,119685,48848],{"class":900},[460,119687,2174],{"class":466},[460,119689,2549],{"class":900},[460,119691,47194],{"class":466},[460,119693,119694],{"class":462,"line":476},[460,119695,116192],{"class":466},[14,119697,119698,119699,119702,119703,119705],{},"由于 ",[457,119700,119701],{},"timestep=0.01","，所以 50 步后时间约为 ",[457,119704,51634],{}," 秒。",[14,119707,119708],{},"重置：",[451,119710,119711],{"className":46787,"code":119019,"language":46789,"meta":32,"style":32},[457,119712,119713],{"__ignoreMap":32},[460,119714,119715],{"class":462,"line":463},[460,119716,119019],{"class":466},[14,119718,119719],{},"这会把时间、位置、速度恢复到初始状态。",[14,119721,119722],{},"手动改高度：",[451,119724,119726],{"className":46787,"code":119725,"language":46789,"meta":32,"style":32},"data.qpos[2] = 2.0\nmujoco.mj_forward(model, data)\n",[457,119727,119728,119740],{"__ignoreMap":32},[460,119729,119730,119732,119734,119736,119738],{"class":462,"line":463},[460,119731,119192],{"class":466},[460,119733,907],{"class":900},[460,119735,11884],{"class":466},[460,119737,894],{"class":887},[460,119739,119201],{"class":900},[460,119741,119742],{"class":462,"line":476},[460,119743,119036],{"class":466},[14,119745,119746,119747,119750,119751,119754],{},"这个例子里 ",[457,119748,119749],{},"qpos[2]"," 是 freejoint 的 z 坐标。改成 ",[457,119752,119753],{},"2.0"," 表示把小球放到更高的位置。",[23,119756,116201],{"id":116201},[451,119758,119759],{"className":46787,"code":119643,"language":46789,"meta":32,"style":32},[457,119760,119761],{"__ignoreMap":32},[460,119762,119763,119765,119767,119769,119771,119773,119775],{"class":462,"line":463},[460,119764,48352],{"class":887},[460,119766,119369],{"class":929},[460,119768,119372],{"class":466},[460,119770,6393],{"class":900},[460,119772,119377],{"class":466},[460,119774,110179],{"class":900},[460,119776,20257],{"class":466},[14,119778,119779],{},"这里定义了一个辅助函数，用来打印状态。括号里的三个参数分别是：",[103,119781,119782,119791,119796],{},[43,119783,119784,119787,119788,119790],{},[457,119785,119786],{},"prefix","：一段文字，比如 ",[457,119789,119495],{},"，用来说明现在打印的是哪个阶段。",[43,119792,119793,119795],{},[457,119794,116578],{},"：MuJoCo 模型。",[43,119797,119798,119800],{},[457,119799,49729],{},"：MuJoCo 当前状态。",[14,119802,119803,16957,119806,119809],{},[457,119804,119805],{},"prefix: str",[457,119807,119808],{},"model: mujoco.MjModel"," 这些是类型提示。它们帮助人和编辑器理解变量类型，不会改变程序运行逻辑。",[451,119811,119813],{"className":46787,"code":119812,"language":46789,"meta":32,"style":32},"print(\"  qpos:\", np.round(data.qpos.copy(), 4))\n",[457,119814,119815],{"__ignoreMap":32},[460,119816,119817,119819,119821,119823,119825,119827],{"class":462,"line":463},[460,119818,46824],{"class":900},[460,119820,2174],{"class":466},[460,119822,119420],{"class":1353},[460,119824,119423],{"class":466},[460,119826,918],{"class":900},[460,119828,6311],{"class":466},[14,119830,119831,119834],{},[457,119832,119833],{},"np.round(..., 4)"," 表示保留 4 位小数。仿真输出可能有很多小数，保留 4 位更容易看。",[451,119836,119838],{"className":46787,"code":119837,"language":46789,"meta":32,"style":32},"model = mujoco.MjModel.from_xml_string(XML)\ndata = mujoco.MjData(model)\n",[457,119839,119840,119852],{"__ignoreMap":32},[460,119841,119842,119844,119846,119848,119850],{"class":462,"line":463},[460,119843,116127],{"class":466},[460,119845,894],{"class":887},[460,119847,115905],{"class":466},[460,119849,115807],{"class":900},[460,119851,3754],{"class":466},[460,119853,119854,119856,119858],{"class":462,"line":476},[460,119855,116151],{"class":466},[460,119857,894],{"class":887},[460,119859,115919],{"class":466},[14,119861,119862],{},"这两行是所有 MuJoCo 程序的常见开头：先编译模型，再创建运行数据。",[451,119864,119866],{"className":46787,"code":119865,"language":46789,"meta":32,"style":32},"print_state(\"initial\", model, data)\n",[457,119867,119868],{"__ignoreMap":32},[460,119869,119870,119873,119875],{"class":462,"line":463},[460,119871,119872],{"class":466},"print_state(",[460,119874,119495],{"class":1353},[460,119876,119498],{"class":466},[14,119878,119879,119880,119883],{},"调用刚才定义的 ",[457,119881,119882],{},"print_state"," 函数，打印初始状态。",[451,119885,119886],{"className":46787,"code":119673,"language":46789,"meta":32,"style":32},[457,119887,119888,119904],{"__ignoreMap":32},[460,119889,119890,119892,119894,119896,119898,119900,119902],{"class":462,"line":463},[460,119891,19547],{"class":887},[460,119893,115994],{"class":466},[460,119895,11713],{"class":887},[460,119897,48848],{"class":900},[460,119899,2174],{"class":466},[460,119901,2549],{"class":900},[460,119903,47194],{"class":466},[460,119905,119906],{"class":462,"line":476},[460,119907,116192],{"class":466},[14,119909,119910],{},"循环 50 次，每次推进 0.01 秒，所以最后时间约为 0.5 秒。",[451,119912,119913],{"className":46787,"code":119019,"language":46789,"meta":32,"style":32},[457,119914,119915],{"__ignoreMap":32},[460,119916,119917],{"class":462,"line":463},[460,119918,119019],{"class":466},[14,119920,119921,119922,119924,119925,119927],{},"重置 ",[457,119923,49729],{},"。注意它不会重新创建 ",[457,119926,116578],{},"，因为模型结构没有变，只是状态回到初始值。",[451,119929,119930],{"className":46787,"code":119185,"language":46789,"meta":32,"style":32},[457,119931,119932],{"__ignoreMap":32},[460,119933,119934,119936,119938,119940,119942],{"class":462,"line":463},[460,119935,119192],{"class":466},[460,119937,907],{"class":900},[460,119939,11884],{"class":466},[460,119941,894],{"class":887},[460,119943,119201],{"class":900},[14,119945,119946,119947,16957,119950,16957,119953,119955],{},"这行是“手动改状态”。在 freejoint 中，",[457,119948,119949],{},"qpos[0]",[457,119951,119952],{},"qpos[1]",[457,119954,119749],{}," 分别是 x、y、z 坐标，所以这里把小球高度改成 2.0。",[451,119957,119958],{"className":46787,"code":119036,"language":46789,"meta":32,"style":32},[457,119959,119960],{"__ignoreMap":32},[460,119961,119962],{"class":462,"line":463},[460,119963,119036],{"class":466},[14,119965,119966,119967,119969,119970,119972],{},"手动改完 ",[457,119968,118523],{}," 后，调用 ",[457,119971,118743],{}," 让 MuJoCo 重新计算派生状态。它不推进时间，只刷新当前状态对应的世界坐标、碰撞信息等。",[18,119974,116809],{"id":116808},[14,119976,119977],{},"你会看到:",[103,119979,119980,119985,119990,119993],{},[43,119981,119982,119983],{},"初始时间为 ",[457,119984,936],{},[43,119986,119987,119988],{},"50 步后时间约为 ",[457,119989,51634],{},[43,119991,119992],{},"reset 后状态恢复",[43,119994,119995,119996,119999,120000],{},"手动修改 ",[457,119997,119998],{},"data.qpos[2]"," 后，小球高度变为 ",[457,120001,119753],{},[14,120003,120004,120006],{},[457,120005,119749],{}," 在这个例子中表示自由刚体的 z 坐标。",[14,120008,120009],{},"输出里可以重点看三件事：",[103,120011,120012,120020,120025],{},[43,120013,120014,120016,120017,120019],{},[457,120015,18922],{}," 是否随着 ",[457,120018,115708],{}," 增加。",[43,120021,120022,120024],{},[457,120023,118523],{}," 的 z 坐标是否因为下落而变化。",[43,120026,120027,120029,120030,44794],{},[457,120028,118845],{}," 后时间是否回到 ",[457,120031,936],{},[18,120033,116841],{"id":116840},[103,120035,120036,120042,120048,120054,120057,120066],{},[43,120037,120038,120039,44794],{},"修改 timestep 为 ",[457,120040,120041],{},"0.005",[43,120043,120044,120045,44794],{},"重新运行，检查 50 步后时间是否约为 ",[457,120046,120047],{},"0.25",[43,120049,120050,120051,44794],{},"修改重力为 ",[457,120052,120053],{},"0 0 -1.0",[43,120055,120056],{},"观察小球下降速度是否变慢。",[43,120058,116904,120059,116907,120062,120065],{},[457,120060,120061],{},"data.qpos[2] = 2.0",[457,120063,120064],{},"data.qpos[0] = 1.0","，观察 x 坐标是否变化。",[43,120067,120068,120069,120072],{},"注释掉 ",[457,120070,120071],{},"mujoco.mj_forward(model, data)","，观察派生状态是否可能没有及时更新。",[18,120074,116946],{"id":116945},[23,120076,120078,120079,120081],{"id":120077},"修改-dataqpos-后位置没有更新","修改 ",[457,120080,115563],{}," 后位置没有更新",[14,120083,116955],{},[451,120085,120086],{"className":46787,"code":119036,"language":46789,"meta":32,"style":32},[457,120087,120088],{"__ignoreMap":32},[460,120089,120090],{"class":462,"line":463},[460,120091,119036],{"class":466},[23,120093,120094],{"id":120094},"数组维度看不懂",[14,120096,120097],{},"打印模型维度:",[451,120099,120101],{"className":46787,"code":120100,"language":46789,"meta":32,"style":32},"print(model.nq, model.nv, model.nu)\n",[457,120102,120103],{"__ignoreMap":32},[460,120104,120105,120107],{"class":462,"line":463},[460,120106,46824],{"class":900},[460,120108,120109],{"class":466},"(model.nq, model.nv, model.nu)\n",[16884,120111,120112,120120],{},[16887,120113,120114],{},[16890,120115,120116,120118],{},[16893,120117,119067],{"align":40149},[16893,120119,115193],{"align":40149},[16930,120121,120122,120132,120142],{},[16890,120123,120124,120129],{},[16935,120125,120126],{"align":40149},[457,120127,120128],{},"nq",[16935,120130,120131],{"align":40149},"位置变量数量",[16890,120133,120134,120139],{},[16935,120135,120136],{"align":40149},[457,120137,120138],{},"nv",[16935,120140,120141],{"align":40149},"速度变量数量",[16890,120143,120144,120148],{},[16935,120145,120146],{"align":40149},[457,120147,116655],{},[16935,120149,120150],{"align":40149},"控制输入数量",[23,120152,120154,120155,120157],{"id":120153},"误以为-qpos-一定等于关节数","误以为 ",[457,120156,118523],{}," 一定等于关节数",[14,120159,120160,120161,6261,120163,120165,120166,120168],{},"不是。例如 ",[457,120162,116113],{},[457,120164,118523],{}," 是 7 维，但 ",[457,120167,118853],{}," 是 6 维。",[23,120170,120172,120173,120175],{"id":120171},"不知道某个元素在-qpos-的第几位","不知道某个元素在 ",[457,120174,118523],{}," 的第几位",[14,120177,120178],{},"初学时可以先打印：",[451,120180,120182],{"className":46787,"code":120181,"language":46789,"meta":32,"style":32},"print(\"nq:\", model.nq)\nprint(\"nv:\", model.nv)\nprint(\"qpos:\", data.qpos)\nprint(\"qvel:\", data.qvel)\n",[457,120183,120184,120194,120204,120216],{"__ignoreMap":32},[460,120185,120186,120188,120190,120192],{"class":462,"line":463},[460,120187,46824],{"class":900},[460,120189,2174],{"class":466},[460,120191,115932],{"class":1353},[460,120193,115935],{"class":466},[460,120195,120196,120198,120200,120202],{"class":462,"line":476},[460,120197,46824],{"class":900},[460,120199,2174],{"class":466},[460,120201,115944],{"class":1353},[460,120203,115947],{"class":466},[460,120205,120206,120208,120210,120213],{"class":462,"line":482},[460,120207,46824],{"class":900},[460,120209,2174],{"class":466},[460,120211,120212],{"class":1353},"\"qpos:\"",[460,120214,120215],{"class":466},", data.qpos)\n",[460,120217,120218,120220,120222,120225],{"class":462,"line":488},[460,120219,46824],{"class":900},[460,120221,2174],{"class":466},[460,120223,120224],{"class":1353},"\"qvel:\"",[460,120226,120227],{"class":466},", data.qvel)\n",[14,120229,120230],{},"更复杂模型中，可以用 MuJoCo 的 joint 地址字段查询，不过本教程先保持简单。前几章的模型维度都很小，直接打印数组就能看懂。",[23,120232,120233],{"id":120233},"仿真结果每次都一样",[14,120235,120236,120237,120239],{},"这是正常的。MuJoCo 本身是确定性仿真，只要初始状态、模型参数、控制输入一样，结果通常就一样。想要每次不同，需要你自己在 reset 时随机化 ",[457,120238,118523],{},"、目标点或控制输入。",[18,120241,117100],{"id":117099},[14,120243,120244,120245,41031],{},"Python 控制 MuJoCo 的核心就是读写 ",[457,120246,49729],{},[103,120248,120249,120257,120262,120267],{},[43,120250,120251,120252,115511,120254,120256],{},"用 ",[457,120253,115563],{},[457,120255,115566],{}," 读取状态。",[43,120258,120251,120259,120261],{},[457,120260,115569],{}," 写入控制。",[43,120263,120251,120264,120266],{},[457,120265,115708],{}," 推进时间。",[43,120268,120269,120270,120272],{},"手动改状态后用 ",[457,120271,118743],{}," 刷新派生量。",[14,120274,120275],{},"理解这一章后，就可以进入关节和 actuator 控制。",[1944,120277,120278],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":32,"searchDepth":476,"depth":476,"links":120280},[120281,120282,120283,120290,120294,120295,120296,120306],{"id":115139,"depth":476,"text":115140},{"id":115262,"depth":476,"text":115263},{"id":115537,"depth":476,"text":115538,"children":120284},[120285,120287,120289],{"id":119048,"depth":482,"text":120286},"qpos、qvel、ctrl 是什么",{"id":119126,"depth":482,"text":120288},"mj_step 和 mj_forward 的区别",{"id":119215,"depth":482,"text":119216},{"id":115745,"depth":476,"text":115746,"children":120291},[120292,120293],{"id":116065,"depth":482,"text":116065},{"id":116201,"depth":482,"text":116201},{"id":116808,"depth":476,"text":116809},{"id":116840,"depth":476,"text":116841},{"id":116945,"depth":476,"text":116946,"children":120297},[120298,120300,120301,120303,120305],{"id":120077,"depth":482,"text":120299},"修改 data.qpos 后位置没有更新",{"id":120094,"depth":482,"text":120094},{"id":120153,"depth":482,"text":120302},"误以为 qpos 一定等于关节数",{"id":120171,"depth":482,"text":120304},"不知道某个元素在 qpos 的第几位",{"id":120233,"depth":482,"text":120233},{"id":117099,"depth":476,"text":117100},{},"\u002Fwiki\u002F2025-05-17-mujoco\u002Fch3-python",{"title":118811,"description":32},"wiki\u002F2025-05-17-mujoco学习\u002Fch3-Python控制接口","FAugzO4y0q2LsXaOuxDoqmSxVFhJdD5Lw49NR_xgjZI",{"id":120313,"title":120314,"body":120315,"description":32,"extension":16683,"meta":122005,"navigation":521,"path":122006,"seo":122007,"stem":122008,"__hash__":122009},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Fch4-关节Actuator与力控制.md","4.关节、Actuator 与力控制",{"type":7,"value":120316,"toc":121981},[120317,120320,120322,120325,120327,120352,120355,120374,120377,120379,120381,120405,120407,120421,120423,120464,120466,120490,120492,120495,120529,120531,120544,120547,120615,120624,120628,120631,120665,120671,120674,120678,120717,120720,120740,120744,120787,120789,120818,120821,120827,120830,120832,121226,121228,121240,121242,121253,121255,121258,121287,121295,121298,121333,121336,121338,121346,121349,121351,121362,121372,121392,121395,121431,121443,121491,121510,121552,121565,121593,121598,121619,121629,121647,121650,121684,121687,121707,121710,121729,121735,121737,121740,121746,121752,121762,121765,121771,121780,121782,121828,121830,121836,121842,121845,121848,121868,121871,121877,121883,121885,121908,121911,121914,121923,121926,121964,121966,121969,121975,121978],[10,120318,120314],{"id":120319},"_4关节actuator-与力控制",[18,120321,115140],{"id":115139},[14,120323,120324],{},"本章用 MuJoCo 搭建一个单关节摆杆，并通过 actuator 控制它运动。",[14,120326,118824],{},[103,120328,120329,120335,120340,120344,120349],{},[43,120330,120331,120334],{},[457,120332,120333],{},"hinge"," 关节",[43,120336,120337],{},[457,120338,120339],{},"\u003Cactuator>\u003Cmotor ...\u002F>\u003C\u002Factuator>",[43,120341,120342],{},[457,120343,115569],{},[43,120345,120346],{},[457,120347,120348],{},"ctrlrange",[43,120350,120351],{},"读取关节角和角速度",[14,120353,120354],{},"这章是从“物体自己掉落”进入“我主动控制物体”的关键一步。你会第一次写：",[451,120356,120358],{"className":46787,"code":120357,"language":46789,"meta":32,"style":32},"data.ctrl[0] = ...\n",[457,120359,120360],{"__ignoreMap":32},[460,120361,120362,120365,120367,120369,120371],{"class":462,"line":463},[460,120363,120364],{"class":466},"data.ctrl[",[460,120366,936],{"class":900},[460,120368,11884],{"class":466},[460,120370,894],{"class":887},[460,120372,120373],{"class":900}," ...\n",[14,120375,120376],{},"这行代码就是控制算法和 MuJoCo 物理世界之间的接口。",[18,120378,115263],{"id":115262},[14,120380,115266],{},[451,120382,120383],{"className":40235,"code":118881,"language":40237,"meta":32,"style":32},[457,120384,120385],{"__ignoreMap":32},[460,120386,120387,120389,120391,120393,120395,120397,120399,120401,120403],{"class":462,"line":463},[460,120388,40989],{"class":929},[460,120390,42726],{"class":1353},[460,120392,40247],{"class":1353},[460,120394,42811],{"class":900},[460,120396,118896],{"class":1353},[460,120398,115291],{"class":1353},[460,120400,116994],{"class":1353},[460,120402,115307],{"class":1353},[460,120404,118905],{"class":1353},[14,120406,117312],{},[451,120408,120409],{"className":40235,"code":115412,"language":40237,"meta":32,"style":32},[457,120410,120411],{"__ignoreMap":32},[460,120412,120413,120415,120417,120419],{"class":462,"line":463},[460,120414,40244],{"class":929},[460,120416,40247],{"class":1353},[460,120418,115423],{"class":1353},[460,120420,115426],{"class":1353},[14,120422,117329],{},[451,120424,120426],{"className":40235,"code":120425,"language":40237,"meta":32,"style":32},"conda create -n mujoco-control python=3.10 -y\nconda activate mujoco-control\npip install \"mujoco>=2.3\" numpy\n",[457,120427,120428,120445,120454],{"__ignoreMap":32},[460,120429,120430,120432,120434,120436,120439,120441,120443],{"class":462,"line":463},[460,120431,46739],{"class":929},[460,120433,45585],{"class":1353},[460,120435,41528],{"class":900},[460,120437,120438],{"class":1353}," mujoco-control",[460,120440,115468],{"class":1353},[460,120442,115471],{"class":900},[460,120444,115474],{"class":900},[460,120446,120447,120449,120451],{"class":462,"line":476},[460,120448,46739],{"class":929},[460,120450,115481],{"class":1353},[460,120452,120453],{"class":1353}," mujoco-control\n",[460,120455,120456,120458,120460,120462],{"class":462,"line":482},[460,120457,40244],{"class":929},[460,120459,40247],{"class":1353},[460,120461,115423],{"class":1353},[460,120463,115426],{"class":1353},[14,120465,115497],{},[103,120467,120468,120474,120481,120487],{},[43,120469,120470,120473],{},[457,120471,120472],{},"\u003Cmotor>"," 是 MuJoCo XML Reference 中的 actuator shortcut。",[43,120475,120476,120478,120479,44794],{},[457,120477,115569],{}," 长度等于 ",[457,120480,116651],{},[43,120482,5949,120483,120486],{},[457,120484,120485],{},"model.nu == 0","，说明 XML 没有定义 actuator。",[43,120488,120489],{},"actuator 细节在 MuJoCo 不同版本中有扩展，本文只使用基础 motor。",[18,120491,115538],{"id":115537},[14,120493,120494],{},"关节决定 body 如何运动:",[451,120496,120498],{"className":453,"code":120497,"language":455,"meta":32,"style":32},"\u003Cjoint name=\"hinge\" type=\"hinge\" axis=\"0 1 0\"\u002F>\n",[457,120499,120500],{"__ignoreMap":32},[460,120501,120502,120504,120506,120508,120510,120513,120515,120517,120519,120522,120524,120527],{"class":462,"line":463},[460,120503,781],{"class":466},[460,120505,117449],{"class":470},[460,120507,1908],{"class":929},[460,120509,894],{"class":466},[460,120511,120512],{"class":1353},"\"hinge\"",[460,120514,70071],{"class":929},[460,120516,894],{"class":466},[460,120518,120512],{"class":1353},[460,120520,120521],{"class":929}," axis",[460,120523,894],{"class":466},[460,120525,120526],{"class":1353},"\"0 1 0\"",[460,120528,115637],{"class":466},[14,120530,117545],{},[103,120532,120533,120538,120541],{},[43,120534,120535,120536],{},"名字是 ",[457,120537,120333],{},[43,120539,120540],{},"类型是旋转关节",[43,120542,120543],{},"绕 y 轴旋转",[14,120545,120546],{},"actuator 决定如何施加控制:",[451,120548,120550],{"className":453,"code":120549,"language":455,"meta":32,"style":32},"\u003Cactuator>\n  \u003Cmotor name=\"hinge_motor\" joint=\"hinge\" gear=\"1\" ctrlrange=\"-2 2\" ctrllimited=\"true\"\u002F>\n\u003C\u002Factuator>\n",[457,120551,120552,120561,120607],{"__ignoreMap":32},[460,120553,120554,120556,120559],{"class":462,"line":463},[460,120555,781],{"class":466},[460,120557,120558],{"class":470},"actuator",[460,120560,473],{"class":466},[460,120562,120563,120565,120568,120570,120572,120575,120578,120580,120582,120585,120587,120589,120592,120594,120597,120600,120602,120605],{"class":462,"line":476},[460,120564,467],{"class":466},[460,120566,120567],{"class":470},"motor",[460,120569,1908],{"class":929},[460,120571,894],{"class":466},[460,120573,120574],{"class":1353},"\"hinge_motor\"",[460,120576,120577],{"class":929}," joint",[460,120579,894],{"class":466},[460,120581,120512],{"class":1353},[460,120583,120584],{"class":929}," gear",[460,120586,894],{"class":466},[460,120588,2772],{"class":1353},[460,120590,120591],{"class":929}," ctrlrange",[460,120593,894],{"class":466},[460,120595,120596],{"class":1353},"\"-2 2\"",[460,120598,120599],{"class":929}," ctrllimited",[460,120601,894],{"class":466},[460,120603,120604],{"class":1353},"\"true\"",[460,120606,115637],{"class":466},[460,120608,120609,120611,120613],{"class":462,"line":482},[460,120610,1776],{"class":466},[460,120612,120558],{"class":470},[460,120614,473],{"class":466},[14,120616,120617,120620,120621,44794],{},[457,120618,120619],{},"data.ctrl[0]"," 会变成电机输入，控制输入限制在 ",[457,120622,120623],{},"[-2, 2]",[23,120625,120627],{"id":120626},"joint-和-actuator-的关系","joint 和 actuator 的关系",[14,120629,120630],{},"很多新手会把 joint 和 actuator 混在一起。它们不是一回事：",[16884,120632,120633,120643],{},[16887,120634,120635],{},[16890,120636,120637,120639,120641],{},[16893,120638,42165],{"align":40149},[16893,120640,117189],{"align":40149},[16893,120642,115227],{"align":40149},[16930,120644,120645,120655],{},[16890,120646,120647,120649,120652],{},[16935,120648,117449],{"align":40149},[16935,120650,120651],{"align":40149},"定义能怎么动",[16935,120653,120654],{"align":40149},"门轴允许门旋转",[16890,120656,120657,120659,120662],{},[16935,120658,120558],{"align":40149},[16935,120660,120661],{"align":40149},"定义怎么施力或控制",[16935,120663,120664],{"align":40149},"人推门、马达带动门",[14,120666,120667,120668,120670],{},"只有 joint，没有 actuator，物体仍然可能因为重力、碰撞、初速度而动，但你不能通过 ",[457,120669,115569],{}," 主动控制它。",[14,120672,120673],{},"只有 actuator，没有正确引用 joint，模型会编译失败或没有控制效果。",[23,120675,120677],{"id":120676},"hinge-joint","hinge joint",[451,120679,120681],{"className":453,"code":120680,"language":455,"meta":32,"style":32},"\u003Cjoint name=\"hinge\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n",[457,120682,120683],{"__ignoreMap":32},[460,120684,120685,120687,120689,120691,120693,120695,120697,120699,120701,120703,120705,120707,120710,120712,120715],{"class":462,"line":463},[460,120686,781],{"class":466},[460,120688,117449],{"class":470},[460,120690,1908],{"class":929},[460,120692,894],{"class":466},[460,120694,120512],{"class":1353},[460,120696,70071],{"class":929},[460,120698,894],{"class":466},[460,120700,120512],{"class":1353},[460,120702,120521],{"class":929},[460,120704,894],{"class":466},[460,120706,120526],{"class":1353},[460,120708,120709],{"class":929}," damping",[460,120711,894],{"class":466},[460,120713,120714],{"class":1353},"\"0.1\"",[460,120716,115637],{"class":466},[14,120718,120719],{},"含义：",[103,120721,120722,120728,120734],{},[43,120723,120724,120727],{},[457,120725,120726],{},"type=\"hinge\"","：只能绕一个轴旋转。",[43,120729,120730,120733],{},[457,120731,120732],{},"axis=\"0 1 0\"","：绕 y 轴旋转。",[43,120735,120736,120739],{},[457,120737,120738],{},"damping=\"0.1\"","：阻尼，类似摩擦，会让运动慢慢衰减。",[23,120741,120743],{"id":120742},"motor-actuator","motor actuator",[451,120745,120747],{"className":453,"code":120746,"language":455,"meta":32,"style":32},"\u003Cmotor name=\"hinge_motor\" joint=\"hinge\" gear=\"1\" ctrlrange=\"-2 2\" ctrllimited=\"true\"\u002F>\n",[457,120748,120749],{"__ignoreMap":32},[460,120750,120751,120753,120755,120757,120759,120761,120763,120765,120767,120769,120771,120773,120775,120777,120779,120781,120783,120785],{"class":462,"line":463},[460,120752,781],{"class":466},[460,120754,120567],{"class":470},[460,120756,1908],{"class":929},[460,120758,894],{"class":466},[460,120760,120574],{"class":1353},[460,120762,120577],{"class":929},[460,120764,894],{"class":466},[460,120766,120512],{"class":1353},[460,120768,120584],{"class":929},[460,120770,894],{"class":466},[460,120772,2772],{"class":1353},[460,120774,120591],{"class":929},[460,120776,894],{"class":466},[460,120778,120596],{"class":1353},[460,120780,120599],{"class":929},[460,120782,894],{"class":466},[460,120784,120604],{"class":1353},[460,120786,115637],{"class":466},[14,120788,120719],{},[103,120790,120791,120800,120806,120812],{},[43,120792,120793,120796,120797,120799],{},[457,120794,120795],{},"joint=\"hinge\"","：这个电机作用在名为 ",[457,120798,120333],{}," 的关节上。",[43,120801,120802,120805],{},[457,120803,120804],{},"gear=\"1\"","：控制输入到力\u002F力矩的放大比例。",[43,120807,120808,120811],{},[457,120809,120810],{},"ctrlrange=\"-2 2\"","：允许的控制输入范围。",[43,120813,120814,120817],{},[457,120815,120816],{},"ctrllimited=\"true\"","：启用控制范围限制。",[14,120819,120820],{},"简单理解：",[451,120822,120825],{"className":120823,"code":120824,"language":8391,"meta":32},[21693],"实际施加效果 ≈ data.ctrl[0] * gear\n",[457,120826,120824],{"__ignoreMap":32},[14,120828,120829],{},"真实细节比这更复杂，但这个近似足够帮助入门。",[18,120831,115746],{"id":115745},[451,120833,120835],{"className":46787,"code":120834,"language":46789,"meta":32,"style":32},"import math\n\nimport mujoco\nimport numpy as np\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"one_link_motor\">\n  \u003Coption timestep=\"0.002\" gravity=\"0 0 -9.81\"\u002F>\n\n  \u003Cworldbody>\n    \u003Cbody name=\"base\" pos=\"0 0 0.5\">\n      \u003Cgeom name=\"base_geom\" type=\"sphere\" size=\"0.05\" rgba=\"0.2 0.2 0.2 1\"\u002F>\n\n      \u003Cbody name=\"link\" pos=\"0 0 0\">\n        \u003Cjoint name=\"hinge\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n        \u003Cgeom name=\"link_geom\" type=\"capsule\" fromto=\"0 0 0 0 0 0.5\" size=\"0.03\" mass=\"0.5\" rgba=\"0.1 0.4 1 1\"\u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\n  \u003Cactuator>\n    \u003Cmotor name=\"hinge_motor\" joint=\"hinge\" gear=\"1\" ctrlrange=\"-2 2\" ctrllimited=\"true\"\u002F>\n  \u003C\u002Factuator>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\ndef main() -> None:\n    model = mujoco.MjModel.from_xml_string(XML)\n    data = mujoco.MjData(model)\n\n    print(\"nq:\", model.nq)\n    print(\"nv:\", model.nv)\n    print(\"nu:\", model.nu)\n\n    if model.nu != 1:\n        raise RuntimeError(\"expected exactly one actuator\")\n\n    for step in range(2000):\n        t = step * model.opt.timestep\n        data.ctrl[0] = 1.5 * math.sin(2.0 * math.pi * 0.5 * t)\n        mujoco.mj_step(model, data)\n\n    print(\"time:\", data.time)\n    print(\"joint qpos:\", np.round(data.qpos.copy(), 4))\n    print(\"joint qvel:\", np.round(data.qvel.copy(), 4))\n    print(\"last ctrl:\", data.ctrl.copy())\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,120836,120837,120844,120848,120854,120864,120868,120872,120880,120885,120890,120894,120898,120903,120908,120912,120917,120922,120927,120932,120936,120940,120944,120949,120954,120959,120963,120967,120971,120975,120987,120999,121007,121011,121021,121031,121041,121045,121058,121071,121075,121092,121106,121141,121145,121149,121160,121175,121190,121202,121206,121210,121222],{"__ignoreMap":32},[460,120838,120839,120841],{"class":462,"line":463},[460,120840,46801],{"class":887},[460,120842,120843],{"class":466}," math\n",[460,120845,120846],{"class":462,"line":476},[460,120847,522],{"emptyLinePlaceholder":521},[460,120849,120850,120852],{"class":462,"line":482},[460,120851,46801],{"class":887},[460,120853,115794],{"class":466},[460,120855,120856,120858,120860,120862],{"class":462,"line":488},[460,120857,46801],{"class":887},[460,120859,47787],{"class":466},[460,120861,47790],{"class":887},[460,120863,47793],{"class":466},[460,120865,120866],{"class":462,"line":494},[460,120867,522],{"emptyLinePlaceholder":521},[460,120869,120870],{"class":462,"line":500},[460,120871,522],{"emptyLinePlaceholder":521},[460,120873,120874,120876,120878],{"class":462,"line":506},[460,120875,115807],{"class":900},[460,120877,2943],{"class":887},[460,120879,115812],{"class":1353},[460,120881,120882],{"class":462,"line":512},[460,120883,120884],{"class":1353},"\u003Cmujoco model=\"one_link_motor\">\n",[460,120886,120887],{"class":462,"line":518},[460,120888,120889],{"class":1353},"  \u003Coption timestep=\"0.002\" gravity=\"0 0 -9.81\"\u002F>\n",[460,120891,120892],{"class":462,"line":525},[460,120893,522],{"emptyLinePlaceholder":521},[460,120895,120896],{"class":462,"line":531},[460,120897,115831],{"class":1353},[460,120899,120900],{"class":462,"line":537},[460,120901,120902],{"class":1353},"    \u003Cbody name=\"base\" pos=\"0 0 0.5\">\n",[460,120904,120905],{"class":462,"line":543},[460,120906,120907],{"class":1353},"      \u003Cgeom name=\"base_geom\" type=\"sphere\" size=\"0.05\" rgba=\"0.2 0.2 0.2 1\"\u002F>\n",[460,120909,120910],{"class":462,"line":549},[460,120911,522],{"emptyLinePlaceholder":521},[460,120913,120914],{"class":462,"line":555},[460,120915,120916],{"class":1353},"      \u003Cbody name=\"link\" pos=\"0 0 0\">\n",[460,120918,120919],{"class":462,"line":560},[460,120920,120921],{"class":1353},"        \u003Cjoint name=\"hinge\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n",[460,120923,120924],{"class":462,"line":566},[460,120925,120926],{"class":1353},"        \u003Cgeom name=\"link_geom\" type=\"capsule\" fromto=\"0 0 0 0 0 0.5\" size=\"0.03\" mass=\"0.5\" rgba=\"0.1 0.4 1 1\"\u002F>\n",[460,120928,120929],{"class":462,"line":572},[460,120930,120931],{"class":1353},"      \u003C\u002Fbody>\n",[460,120933,120934],{"class":462,"line":578},[460,120935,115860],{"class":1353},[460,120937,120938],{"class":462,"line":812},[460,120939,115865],{"class":1353},[460,120941,120942],{"class":462,"line":818},[460,120943,522],{"emptyLinePlaceholder":521},[460,120945,120946],{"class":462,"line":824},[460,120947,120948],{"class":1353},"  \u003Cactuator>\n",[460,120950,120951],{"class":462,"line":2074},[460,120952,120953],{"class":1353},"    \u003Cmotor name=\"hinge_motor\" joint=\"hinge\" gear=\"1\" ctrlrange=\"-2 2\" ctrllimited=\"true\"\u002F>\n",[460,120955,120956],{"class":462,"line":2088},[460,120957,120958],{"class":1353},"  \u003C\u002Factuator>\n",[460,120960,120961],{"class":462,"line":2103},[460,120962,115870],{"class":1353},[460,120964,120965],{"class":462,"line":2122},[460,120966,110191],{"class":1353},[460,120968,120969],{"class":462,"line":2144},[460,120970,522],{"emptyLinePlaceholder":521},[460,120972,120973],{"class":462,"line":2158},[460,120974,522],{"emptyLinePlaceholder":521},[460,120976,120977,120979,120981,120983,120985],{"class":462,"line":2163},[460,120978,48352],{"class":887},[460,120980,18514],{"class":929},[460,120982,115891],{"class":466},[460,120984,110179],{"class":900},[460,120986,20257],{"class":466},[460,120988,120989,120991,120993,120995,120997],{"class":462,"line":2168},[460,120990,115900],{"class":466},[460,120992,894],{"class":887},[460,120994,115905],{"class":466},[460,120996,115807],{"class":900},[460,120998,3754],{"class":466},[460,121000,121001,121003,121005],{"class":462,"line":2183},[460,121002,115914],{"class":466},[460,121004,894],{"class":887},[460,121006,115919],{"class":466},[460,121008,121009],{"class":462,"line":2194},[460,121010,522],{"emptyLinePlaceholder":521},[460,121012,121013,121015,121017,121019],{"class":462,"line":2199},[460,121014,47706],{"class":900},[460,121016,2174],{"class":466},[460,121018,115932],{"class":1353},[460,121020,115935],{"class":466},[460,121022,121023,121025,121027,121029],{"class":462,"line":2204},[460,121024,47706],{"class":900},[460,121026,2174],{"class":466},[460,121028,115944],{"class":1353},[460,121030,115947],{"class":466},[460,121032,121033,121035,121037,121039],{"class":462,"line":2212},[460,121034,47706],{"class":900},[460,121036,2174],{"class":466},[460,121038,115956],{"class":1353},[460,121040,115959],{"class":466},[460,121042,121043],{"class":462,"line":2257},[460,121044,522],{"emptyLinePlaceholder":521},[460,121046,121047,121049,121052,121054,121056],{"class":462,"line":2285},[460,121048,19622],{"class":887},[460,121050,121051],{"class":466}," model.nu ",[460,121053,37365],{"class":887},[460,121055,1400],{"class":900},[460,121057,20257],{"class":466},[460,121059,121060,121062,121064,121066,121069],{"class":462,"line":2298},[460,121061,117925],{"class":887},[460,121063,117928],{"class":900},[460,121065,2174],{"class":466},[460,121067,121068],{"class":1353},"\"expected exactly one actuator\"",[460,121070,3754],{"class":466},[460,121072,121073],{"class":462,"line":2303},[460,121074,522],{"emptyLinePlaceholder":521},[460,121076,121077,121079,121081,121083,121085,121087,121090],{"class":462,"line":2308},[460,121078,19722],{"class":887},[460,121080,48021],{"class":466},[460,121082,11713],{"class":887},[460,121084,48848],{"class":900},[460,121086,2174],{"class":466},[460,121088,121089],{"class":900},"2000",[460,121091,47194],{"class":466},[460,121093,121094,121097,121099,121101,121103],{"class":462,"line":2318},[460,121095,121096],{"class":466},"        t ",[460,121098,894],{"class":887},[460,121100,48021],{"class":466},[460,121102,8320],{"class":887},[460,121104,121105],{"class":466}," model.opt.timestep\n",[460,121107,121108,121111,121113,121115,121117,121120,121122,121125,121127,121129,121132,121134,121136,121138],{"class":462,"line":2333},[460,121109,121110],{"class":466},"        data.ctrl[",[460,121112,936],{"class":900},[460,121114,11884],{"class":466},[460,121116,894],{"class":887},[460,121118,121119],{"class":900}," 1.5",[460,121121,8325],{"class":887},[460,121123,121124],{"class":466}," math.sin(",[460,121126,119753],{"class":900},[460,121128,8325],{"class":887},[460,121130,121131],{"class":466}," math.pi ",[460,121133,8320],{"class":887},[460,121135,78048],{"class":900},[460,121137,8325],{"class":887},[460,121139,121140],{"class":466}," t)\n",[460,121142,121143],{"class":462,"line":2338},[460,121144,116009],{"class":466},[460,121146,121147],{"class":462,"line":2343},[460,121148,522],{"emptyLinePlaceholder":521},[460,121150,121151,121153,121155,121158],{"class":462,"line":2353},[460,121152,47706],{"class":900},[460,121154,2174],{"class":466},[460,121156,121157],{"class":1353},"\"time:\"",[460,121159,115971],{"class":466},[460,121161,121162,121164,121166,121169,121171,121173],{"class":462,"line":2368},[460,121163,47706],{"class":900},[460,121165,2174],{"class":466},[460,121167,121168],{"class":1353},"\"joint qpos:\"",[460,121170,119423],{"class":466},[460,121172,918],{"class":900},[460,121174,6311],{"class":466},[460,121176,121177,121179,121181,121184,121186,121188],{"class":462,"line":2381},[460,121178,47706],{"class":900},[460,121180,2174],{"class":466},[460,121182,121183],{"class":1353},"\"joint qvel:\"",[460,121185,119439],{"class":466},[460,121187,918],{"class":900},[460,121189,6311],{"class":466},[460,121191,121192,121194,121196,121199],{"class":462,"line":2394},[460,121193,47706],{"class":900},[460,121195,2174],{"class":466},[460,121197,121198],{"class":1353},"\"last ctrl:\"",[460,121200,121201],{"class":466},", data.ctrl.copy())\n",[460,121203,121204],{"class":462,"line":2399},[460,121205,522],{"emptyLinePlaceholder":521},[460,121207,121208],{"class":462,"line":2404},[460,121209,522],{"emptyLinePlaceholder":521},[460,121211,121212,121214,121216,121218,121220],{"class":462,"line":2414},[460,121213,18100],{"class":887},[460,121215,47627],{"class":900},[460,121217,116052],{"class":887},[460,121219,116055],{"class":1353},[460,121221,20257],{"class":466},[460,121223,121224],{"class":462,"line":2428},[460,121225,116062],{"class":466},[14,121227,118063],{},[451,121229,121231],{"className":40235,"code":121230,"language":40237,"meta":32,"style":32},"touch ch4_joint_motor.py\n",[457,121232,121233],{"__ignoreMap":32},[460,121234,121235,121237],{"class":462,"line":463},[460,121236,115776],{"class":929},[460,121238,121239],{"class":1353}," ch4_joint_motor.py\n",[14,121241,116794],{},[451,121243,121245],{"className":40235,"code":121244,"language":40237,"meta":32,"style":32},"python ch4_joint_motor.py\n",[457,121246,121247],{"__ignoreMap":32},[460,121248,121249,121251],{"class":462,"line":463},[460,121250,46789],{"class":929},[460,121252,121239],{"class":1353},[23,121254,116065],{"id":116065},[14,121256,121257],{},"检查 actuator 数量：",[451,121259,121261],{"className":46787,"code":121260,"language":46789,"meta":32,"style":32},"if model.nu != 1:\n    raise RuntimeError(\"expected exactly one actuator\")\n",[457,121262,121263,121275],{"__ignoreMap":32},[460,121264,121265,121267,121269,121271,121273],{"class":462,"line":463},[460,121266,18100],{"class":887},[460,121268,121051],{"class":466},[460,121270,37365],{"class":887},[460,121272,1400],{"class":900},[460,121274,20257],{"class":466},[460,121276,121277,121279,121281,121283,121285],{"class":462,"line":476},[460,121278,118388],{"class":887},[460,121280,117928],{"class":900},[460,121282,2174],{"class":466},[460,121284,121068],{"class":1353},[460,121286,3754],{"class":466},[14,121288,121289,121291,121292,121294],{},[457,121290,116651],{}," 是控制输入维度。这个模型只有一个 motor，所以 ",[457,121293,115569],{}," 长度应该是 1。",[14,121296,121297],{},"产生正弦控制信号：",[451,121299,121301],{"className":46787,"code":121300,"language":46789,"meta":32,"style":32},"data.ctrl[0] = 1.5 * math.sin(2.0 * math.pi * 0.5 * t)\n",[457,121302,121303],{"__ignoreMap":32},[460,121304,121305,121307,121309,121311,121313,121315,121317,121319,121321,121323,121325,121327,121329,121331],{"class":462,"line":463},[460,121306,120364],{"class":466},[460,121308,936],{"class":900},[460,121310,11884],{"class":466},[460,121312,894],{"class":887},[460,121314,121119],{"class":900},[460,121316,8325],{"class":887},[460,121318,121124],{"class":466},[460,121320,119753],{"class":900},[460,121322,8325],{"class":887},[460,121324,121131],{"class":466},[460,121326,8320],{"class":887},[460,121328,78048],{"class":900},[460,121330,8325],{"class":887},[460,121332,121140],{"class":466},[14,121334,121335],{},"这表示电机输入会在正负之间周期变化。你可以把它理解成一会儿往一个方向推，一会儿往反方向推。",[14,121337,116166],{},[451,121339,121340],{"className":46787,"code":118998,"language":46789,"meta":32,"style":32},[457,121341,121342],{"__ignoreMap":32},[460,121343,121344],{"class":462,"line":463},[460,121345,118998],{"class":466},[14,121347,121348],{},"MuJoCo 根据当前电机输入、重力、阻尼、质量等参数计算下一步状态。",[23,121350,116201],{"id":116201},[451,121352,121354],{"className":46787,"code":121353,"language":46789,"meta":32,"style":32},"import math\n",[457,121355,121356],{"__ignoreMap":32},[460,121357,121358,121360],{"class":462,"line":463},[460,121359,46801],{"class":887},[460,121361,120843],{"class":466},[14,121363,121364,121365,115511,121368,121371],{},"导入 Python 标准库里的数学模块。后面要用 ",[457,121366,121367],{},"math.sin",[457,121369,121370],{},"math.pi"," 生成周期变化的控制信号。",[451,121373,121374],{"className":46787,"code":118179,"language":46789,"meta":32,"style":32},[457,121375,121376,121382],{"__ignoreMap":32},[460,121377,121378,121380],{"class":462,"line":463},[460,121379,46801],{"class":887},[460,121381,115794],{"class":466},[460,121383,121384,121386,121388,121390],{"class":462,"line":476},[460,121385,46801],{"class":887},[460,121387,47787],{"class":466},[460,121389,47790],{"class":887},[460,121391,47793],{"class":466},[14,121393,121394],{},"导入 MuJoCo 和 NumPy。MuJoCo 负责仿真，NumPy 负责数组显示和数值处理。",[451,121396,121397],{"className":453,"code":120680,"language":455,"meta":32,"style":32},[457,121398,121399],{"__ignoreMap":32},[460,121400,121401,121403,121405,121407,121409,121411,121413,121415,121417,121419,121421,121423,121425,121427,121429],{"class":462,"line":463},[460,121402,781],{"class":466},[460,121404,117449],{"class":470},[460,121406,1908],{"class":929},[460,121408,894],{"class":466},[460,121410,120512],{"class":1353},[460,121412,70071],{"class":929},[460,121414,894],{"class":466},[460,121416,120512],{"class":1353},[460,121418,120521],{"class":929},[460,121420,894],{"class":466},[460,121422,120526],{"class":1353},[460,121424,120709],{"class":929},[460,121426,894],{"class":466},[460,121428,120714],{"class":1353},[460,121430,115637],{"class":466},[14,121432,121433,121434,121436,121437,121439,121440,121442],{},"这行定义关节。",[457,121435,120333],{}," 表示旋转关节。",[457,121438,120732],{}," 表示绕 y 轴旋转。",[457,121441,120738],{}," 表示有一点阻尼，运动不会完全无损耗。",[451,121444,121446],{"className":453,"code":121445,"language":455,"meta":32,"style":32},"\u003Cgeom name=\"link_geom\" type=\"capsule\" fromto=\"0 0 0 0 0 0.5\" size=\"0.03\" mass=\"0.5\"\u002F>\n",[457,121447,121448],{"__ignoreMap":32},[460,121449,121450,121452,121454,121456,121458,121461,121463,121465,121468,121471,121473,121476,121478,121480,121482,121484,121486,121489],{"class":462,"line":463},[460,121451,781],{"class":466},[460,121453,115613],{"class":470},[460,121455,1908],{"class":929},[460,121457,894],{"class":466},[460,121459,121460],{"class":1353},"\"link_geom\"",[460,121462,70071],{"class":929},[460,121464,894],{"class":466},[460,121466,121467],{"class":1353},"\"capsule\"",[460,121469,121470],{"class":929}," fromto",[460,121472,894],{"class":466},[460,121474,121475],{"class":1353},"\"0 0 0 0 0 0.5\"",[460,121477,115629],{"class":929},[460,121479,894],{"class":466},[460,121481,118271],{"class":1353},[460,121483,116494],{"class":929},[460,121485,894],{"class":466},[460,121487,121488],{"class":1353},"\"0.5\"",[460,121490,115637],{"class":466},[14,121492,121493,121494,121496,121497,121499,121500,121503,121504,44794,121507,121509],{},"这行定义摆杆的形状。",[457,121495,117658],{}," 是胶囊体，适合表示杆子。",[457,121498,117669],{}," 前三个数是起点，后三个数是终点，所以这根杆从 ",[457,121501,121502],{},"(0,0,0)"," 延伸到 ",[457,121505,121506],{},"(0,0,0.5)",[457,121508,117663],{}," 是半径。",[451,121511,121512],{"className":453,"code":120746,"language":455,"meta":32,"style":32},[457,121513,121514],{"__ignoreMap":32},[460,121515,121516,121518,121520,121522,121524,121526,121528,121530,121532,121534,121536,121538,121540,121542,121544,121546,121548,121550],{"class":462,"line":463},[460,121517,781],{"class":466},[460,121519,120567],{"class":470},[460,121521,1908],{"class":929},[460,121523,894],{"class":466},[460,121525,120574],{"class":1353},[460,121527,120577],{"class":929},[460,121529,894],{"class":466},[460,121531,120512],{"class":1353},[460,121533,120584],{"class":929},[460,121535,894],{"class":466},[460,121537,2772],{"class":1353},[460,121539,120591],{"class":929},[460,121541,894],{"class":466},[460,121543,120596],{"class":1353},[460,121545,120599],{"class":929},[460,121547,894],{"class":466},[460,121549,120604],{"class":1353},[460,121551,115637],{"class":466},[14,121553,121554,121555,121557,121558,121561,121562,121564],{},"这行定义电机。它作用在 ",[457,121556,120333],{}," 关节上。",[457,121559,121560],{},"gear"," 可以理解成放大倍数。",[457,121563,120348],{}," 限制控制输入范围。",[451,121566,121567],{"className":46787,"code":121260,"language":46789,"meta":32,"style":32},[457,121568,121569,121581],{"__ignoreMap":32},[460,121570,121571,121573,121575,121577,121579],{"class":462,"line":463},[460,121572,18100],{"class":887},[460,121574,121051],{"class":466},[460,121576,37365],{"class":887},[460,121578,1400],{"class":900},[460,121580,20257],{"class":466},[460,121582,121583,121585,121587,121589,121591],{"class":462,"line":476},[460,121584,118388],{"class":887},[460,121586,117928],{"class":900},[460,121588,2174],{"class":466},[460,121590,121068],{"class":1353},[460,121592,3754],{"class":466},[14,121594,121595,121597],{},[457,121596,116651],{}," 是控制输入数量。这个 XML 只定义了一个 motor，所以应该等于 1。如果不是 1，说明模型和预期不一致，继续运行可能会出错。",[451,121599,121601],{"className":46787,"code":121600,"language":46789,"meta":32,"style":32},"for step in range(2000):\n",[457,121602,121603],{"__ignoreMap":32},[460,121604,121605,121607,121609,121611,121613,121615,121617],{"class":462,"line":463},[460,121606,19547],{"class":887},[460,121608,48021],{"class":466},[460,121610,11713],{"class":887},[460,121612,48848],{"class":900},[460,121614,2174],{"class":466},[460,121616,121089],{"class":900},[460,121618,47194],{"class":466},[14,121620,121621,121622,121624,121625,121628],{},"循环 2000 步。这里没有用 ",[457,121623,17699],{},"，而是用 ",[457,121626,121627],{},"step","，因为后面要用当前步数计算时间。",[451,121630,121632],{"className":46787,"code":121631,"language":46789,"meta":32,"style":32},"t = step * model.opt.timestep\n",[457,121633,121634],{"__ignoreMap":32},[460,121635,121636,121639,121641,121643,121645],{"class":462,"line":463},[460,121637,121638],{"class":466},"t ",[460,121640,894],{"class":887},[460,121642,48021],{"class":466},[460,121644,8320],{"class":887},[460,121646,121105],{"class":466},[14,121648,121649],{},"当前仿真时间可以用“步数乘以时间步长”估算。比如 step=100，timestep=0.002，那么 t=0.2 秒。",[451,121651,121652],{"className":46787,"code":121300,"language":46789,"meta":32,"style":32},[457,121653,121654],{"__ignoreMap":32},[460,121655,121656,121658,121660,121662,121664,121666,121668,121670,121672,121674,121676,121678,121680,121682],{"class":462,"line":463},[460,121657,120364],{"class":466},[460,121659,936],{"class":900},[460,121661,11884],{"class":466},[460,121663,894],{"class":887},[460,121665,121119],{"class":900},[460,121667,8325],{"class":887},[460,121669,121124],{"class":466},[460,121671,119753],{"class":900},[460,121673,8325],{"class":887},[460,121675,121131],{"class":466},[460,121677,8320],{"class":887},[460,121679,78048],{"class":900},[460,121681,8325],{"class":887},[460,121683,121140],{"class":466},[14,121685,121686],{},"这行给电机输入一个正弦波。拆开看：",[103,121688,121689,121695,121701],{},[43,121690,121691,121694],{},[457,121692,121693],{},"math.sin(...)"," 产生 -1 到 1 之间周期变化的值。",[43,121696,121697,121700],{},[457,121698,121699],{},"1.5 *"," 把范围放大成 -1.5 到 1.5。",[43,121702,121703,121706],{},[457,121704,121705],{},"data.ctrl[0] = ..."," 把结果写入第 0 个 actuator。",[14,121708,121709],{},"因为正弦值一会儿正一会儿负，所以电机会来回推动关节。",[451,121711,121713],{"className":46787,"code":121712,"language":46789,"meta":32,"style":32},"print(\"joint qpos:\", np.round(data.qpos.copy(), 4))\n",[457,121714,121715],{"__ignoreMap":32},[460,121716,121717,121719,121721,121723,121725,121727],{"class":462,"line":463},[460,121718,46824],{"class":900},[460,121720,2174],{"class":466},[460,121722,121168],{"class":1353},[460,121724,119423],{"class":466},[460,121726,918],{"class":900},[460,121728,6311],{"class":466},[14,121730,121731,121732,121734],{},"打印关节角度。这个模型只有一个 hinge joint，所以 ",[457,121733,115563],{}," 只有一个数。",[18,121736,116809],{"id":116808},[14,121738,121739],{},"输出类似:",[451,121741,121744],{"className":121742,"code":121743,"language":8391,"meta":32},[21693],"nq: 1\nnv: 1\nnu: 1\ntime: 4.0\njoint qpos: [...]\njoint qvel: [...]\nlast ctrl: [...]\n",[457,121745,121743],{"__ignoreMap":32},[14,121747,121748,121749,121751],{},"这里 ",[457,121750,120619],{}," 是电机输入。",[14,121753,121754,121757,121758,121761],{},[457,121755,121756],{},"joint qpos"," 是关节角度，单位通常是弧度。",[457,121759,121760],{},"joint qvel"," 是角速度，单位通常是弧度每秒。",[14,121763,121764],{},"角度单位提示：",[451,121766,121769],{"className":121767,"code":121768,"language":8391,"meta":32},[21693],"pi rad ≈ 180 degrees\n1 rad ≈ 57.3 degrees\n",[457,121770,121768],{"__ignoreMap":32},[14,121772,121773,121774,121776,121777,121779],{},"如果你看到 ",[457,121775,118523],{}," 是 ",[457,121778,51634],{},"，大约就是 28.6 度。",[18,121781,116841],{"id":116840},[103,121783,121784,121791,121794,121801,121804,121812,121820],{},[43,121785,116904,121786,116907,121788,44794],{},[457,121787,120804],{},[457,121789,121790],{},"gear=\"5\"",[43,121792,121793],{},"重新运行，观察关节运动是否更剧烈。",[43,121795,116904,121796,116907,121798,44794],{},[457,121797,120348],{},[457,121799,121800],{},"-0.2 0.2",[43,121802,121803],{},"重新运行，观察控制能力是否变弱。",[43,121805,121806,121807,121809,121810,44794],{},"去掉 actuator，确认 ",[457,121808,116651],{}," 变成 ",[457,121811,936],{},[43,121813,116904,121814,116907,121816,121819],{},[457,121815,120738],{},[457,121817,121818],{},"damping=\"2.0\"","，观察运动是否更难被带动。",[43,121821,116904,121822,116907,121824,121827],{},[457,121823,120732],{},[457,121825,121826],{},"axis=\"1 0 0\"","，用 viewer 观察旋转方向变化。",[18,121829,116946],{"id":116945},[23,121831,121833],{"id":121832},"indexerror-index-0-is-out-of-bounds",[457,121834,121835],{},"IndexError: index 0 is out of bounds",[14,121837,121838,121839,121841],{},"原因是 ",[457,121840,120485],{},"，没有 actuator。",[23,121843,121844],{"id":121844},"关节几乎不动",[14,121846,121847],{},"可能原因:",[103,121849,121850,121855,121859,121865],{},[43,121851,121852,121854],{},[457,121853,121560],{}," 太小",[43,121856,121857,121854],{},[457,121858,120348],{},[43,121860,121861,121864],{},[457,121862,121863],{},"damping"," 太大",[43,121866,121867],{},"重力方向导致运动不明显",[23,121869,121870],{"id":121870},"模型编译失败",[14,121872,121873,121874,121876],{},"检查 actuator 引用的 ",[457,121875,120795],{}," 是否存在，joint 名称是否拼写一致。",[23,121878,121880,121882],{"id":121879},"datactrl0-写了但没有效果",[457,121881,120619],{}," 写了但没有效果",[14,121884,117068],{},[103,121886,121887,121892,121895,121900,121905],{},[43,121888,121889,121891],{},[457,121890,116651],{}," 是否大于 0。",[43,121893,121894],{},"motor 是否引用了正确 joint。",[43,121896,121897,121899],{},[457,121898,121560],{}," 是否太小。",[43,121901,121902,121904],{},[457,121903,120348],{}," 是否把输入限制得太小。",[43,121906,121907],{},"body 是否真的有可动 joint。",[23,121909,121910],{"id":121910},"控制输入超过范围会怎样",[14,121912,121913],{},"如果设置了：",[451,121915,121917],{"className":453,"code":121916,"language":455,"meta":32,"style":32},"ctrlrange=\"-2 2\" ctrllimited=\"true\"\n",[457,121918,121919],{"__ignoreMap":32},[460,121920,121921],{"class":462,"line":463},[460,121922,121916],{"class":466},[14,121924,121925],{},"MuJoCo 会把控制输入限制在这个范围附近。为了让代码更清晰，实际控制任务里仍建议在 Python 里自己写：",[451,121927,121929],{"className":46787,"code":121928,"language":46789,"meta":32,"style":32},"action = np.clip(action, -2.0, 2.0)\ndata.ctrl[0] = action\n",[457,121930,121931,121951],{"__ignoreMap":32},[460,121932,121933,121936,121938,121941,121943,121945,121947,121949],{"class":462,"line":463},[460,121934,121935],{"class":466},"action ",[460,121937,894],{"class":887},[460,121939,121940],{"class":466}," np.clip(action, ",[460,121942,17259],{"class":887},[460,121944,119753],{"class":900},[460,121946,904],{"class":466},[460,121948,119753],{"class":900},[460,121950,3754],{"class":466},[460,121952,121953,121955,121957,121959,121961],{"class":462,"line":476},[460,121954,120364],{"class":466},[460,121956,936],{"class":900},[460,121958,11884],{"class":466},[460,121960,894],{"class":887},[460,121962,121963],{"class":466}," action\n",[18,121965,117100],{"id":117099},[14,121967,121968],{},"这一章建立了控制任务的基本形式：",[451,121970,121973],{"className":121971,"code":121972,"language":8391,"meta":32},[21693],"读取状态 qpos\u002Fqvel\n→ 计算控制 ctrl\n→ 写入 data.ctrl\n→ mj_step 推进仿真\n",[457,121974,121972],{"__ignoreMap":32},[14,121976,121977],{},"后面的 Cartpole 和 Reacher 只是把这个形式扩展到更多关节和更复杂的观测、奖励。",[1944,121979,121980],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":32,"searchDepth":476,"depth":476,"links":121982},[121983,121984,121985,121990,121994,121995,121996,122004],{"id":115139,"depth":476,"text":115140},{"id":115262,"depth":476,"text":115263},{"id":115537,"depth":476,"text":115538,"children":121986},[121987,121988,121989],{"id":120626,"depth":482,"text":120627},{"id":120676,"depth":482,"text":120677},{"id":120742,"depth":482,"text":120743},{"id":115745,"depth":476,"text":115746,"children":121991},[121992,121993],{"id":116065,"depth":482,"text":116065},{"id":116201,"depth":482,"text":116201},{"id":116808,"depth":476,"text":116809},{"id":116840,"depth":476,"text":116841},{"id":116945,"depth":476,"text":116946,"children":121997},[121998,121999,122000,122001,122003],{"id":121832,"depth":482,"text":121835},{"id":121844,"depth":482,"text":121844},{"id":121870,"depth":482,"text":121870},{"id":121879,"depth":482,"text":122002},"data.ctrl[0] 写了但没有效果",{"id":121910,"depth":482,"text":121910},{"id":117099,"depth":476,"text":117100},{},"\u002Fwiki\u002F2025-05-17-mujoco\u002Fch4-actuator",{"title":120314,"description":32},"wiki\u002F2025-05-17-mujoco学习\u002Fch4-关节Actuator与力控制","mt4nnL0lFlzEpGWxxST3l_nQ01XJuTf2fsJ_L9rP9Ag",{"id":122011,"title":122012,"body":122013,"description":32,"extension":16683,"meta":123922,"navigation":521,"path":123923,"seo":123924,"stem":123925,"__hash__":123926},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Fch5-Viewer与Renderer.md","5.Viewer 可视化与 Renderer 离屏渲染",{"type":7,"value":122014,"toc":123898},[122015,122018,122020,122023,122031,122034,122051,122054,122079,122082,122128,122130,122132,122187,122189,122208,122210,122253,122256,122273,122276,122292,122302,122309,122311,122314,122317,122351,122354,122402,122406,122409,122423,122432,122436,122439,122464,122467,122471,122484,122487,122493,122496,122511,122513,122516,122776,122778,122790,122793,123105,123107,123119,123121,123124,123139,123144,123147,123169,123172,123175,123209,123212,123216,123227,123230,123247,123250,123264,123271,123291,123298,123312,123315,123327,123342,123362,123365,123387,123390,123394,123409,123420,123435,123438,123468,123484,123513,123521,123545,123548,123566,123576,123588,123595,123604,123610,123619,123622,123624,123633,123636,123651,123653,123656,123667,123670,123681,123684,123702,123704,123721,123724,123752,123754,123758,123761,123791,123797,123800,123804,123812,123815,123817,123838,123841,123844,123860,123863,123879,123881,123884,123895],[10,122016,122012],{"id":122017},"_5viewer-可视化与-renderer-离屏渲染",[18,122019,115140],{"id":115139},[14,122021,122022],{},"本章掌握两类可视化方式:",[103,122024,122025,122028],{},[43,122026,122027],{},"交互式 viewer: 适合人工观察仿真",[43,122029,122030],{},"离屏 renderer: 适合生成图像观测、保存数据、训练视觉策略",[14,122032,122033],{},"使用官方接口:",[451,122035,122037],{"className":46787,"code":122036,"language":46789,"meta":32,"style":32},"import mujoco.viewer\nmujoco.viewer.launch_passive(model, data)\n",[457,122038,122039,122046],{"__ignoreMap":32},[460,122040,122041,122043],{"class":462,"line":463},[460,122042,46801],{"class":887},[460,122044,122045],{"class":466}," mujoco.viewer\n",[460,122047,122048],{"class":462,"line":476},[460,122049,122050],{"class":466},"mujoco.viewer.launch_passive(model, data)\n",[14,122052,122053],{},"以及:",[451,122055,122057],{"className":46787,"code":122056,"language":46789,"meta":32,"style":32},"renderer = mujoco.Renderer(model)\nimage = renderer.render()\n",[457,122058,122059,122069],{"__ignoreMap":32},[460,122060,122061,122064,122066],{"class":462,"line":463},[460,122062,122063],{"class":466},"renderer ",[460,122065,894],{"class":887},[460,122067,122068],{"class":466}," mujoco.Renderer(model)\n",[460,122070,122071,122074,122076],{"class":462,"line":476},[460,122072,122073],{"class":466},"image ",[460,122075,894],{"class":887},[460,122077,122078],{"class":466}," renderer.render()\n",[14,122080,122081],{},"新手建议先理解二者区别：",[16884,122083,122084,122100],{},[16887,122085,122086],{},[16890,122087,122088,122091,122094,122097],{},[16893,122089,122090],{"align":40149},"工具",[16893,122092,122093],{"align":40149},"用途",[16893,122095,122096],{"align":40149},"是否打开窗口",[16893,122098,122099],{"align":40149},"常见场景",[16930,122101,122102,122115],{},[16890,122103,122104,122107,122110,122112],{},[16935,122105,122106],{"align":40149},"Viewer",[16935,122108,122109],{"align":40149},"人眼实时观察仿真",[16935,122111,119158],{"align":40149},[16935,122113,122114],{"align":40149},"调试模型、看控制效果",[16890,122116,122117,122120,122123,122125],{},[16935,122118,122119],{"align":40149},"Renderer",[16935,122121,122122],{"align":40149},"生成图像数组",[16935,122124,119171],{"align":40149},[16935,122126,122127],{"align":40149},"保存图片、训练视觉策略、服务器批量采集",[18,122129,115263],{"id":115262},[14,122131,115266],{},[451,122133,122135],{"className":40235,"code":122134,"language":40237,"meta":32,"style":32},"sudo dnf install -y \\\n  mesa-libGL mesa-libGLU mesa-dri-drivers \\\n  libglvnd-glx libglvnd-opengl \\\n  glfw glfw-devel \\\n  libX11 libXcursor libXi libXinerama libXrandr\n",[457,122136,122137,122149,122159,122167,122175],{"__ignoreMap":32},[460,122138,122139,122141,122143,122145,122147],{"class":462,"line":463},[460,122140,40989],{"class":929},[460,122142,42726],{"class":1353},[460,122144,40247],{"class":1353},[460,122146,42811],{"class":900},[460,122148,41091],{"class":900},[460,122150,122151,122153,122155,122157],{"class":462,"line":476},[460,122152,115301],{"class":1353},[460,122154,115304],{"class":1353},[460,122156,115307],{"class":1353},[460,122158,41091],{"class":900},[460,122160,122161,122163,122165],{"class":462,"line":482},[460,122162,115314],{"class":1353},[460,122164,115317],{"class":1353},[460,122166,41091],{"class":900},[460,122168,122169,122171,122173],{"class":462,"line":488},[460,122170,115324],{"class":1353},[460,122172,115327],{"class":1353},[460,122174,41091],{"class":900},[460,122176,122177,122179,122181,122183,122185],{"class":462,"line":494},[460,122178,115334],{"class":1353},[460,122180,115337],{"class":1353},[460,122182,115340],{"class":1353},[460,122184,115343],{"class":1353},[460,122186,117009],{"class":1353},[14,122188,117312],{},[451,122190,122192],{"className":40235,"code":122191,"language":40237,"meta":32,"style":32},"pip install \"mujoco>=2.3\" numpy pillow\n",[457,122193,122194],{"__ignoreMap":32},[460,122195,122196,122198,122200,122202,122205],{"class":462,"line":463},[460,122197,40244],{"class":929},[460,122199,40247],{"class":1353},[460,122201,115423],{"class":1353},[460,122203,122204],{"class":1353}," numpy",[460,122206,122207],{"class":1353}," pillow\n",[14,122209,117329],{},[451,122211,122213],{"className":40235,"code":122212,"language":40237,"meta":32,"style":32},"conda create -n mujoco-render python=3.10 -y\nconda activate mujoco-render\npip install \"mujoco>=2.3\" numpy pillow\n",[457,122214,122215,122232,122241],{"__ignoreMap":32},[460,122216,122217,122219,122221,122223,122226,122228,122230],{"class":462,"line":463},[460,122218,46739],{"class":929},[460,122220,45585],{"class":1353},[460,122222,41528],{"class":900},[460,122224,122225],{"class":1353}," mujoco-render",[460,122227,115468],{"class":1353},[460,122229,115471],{"class":900},[460,122231,115474],{"class":900},[460,122233,122234,122236,122238],{"class":462,"line":476},[460,122235,46739],{"class":929},[460,122237,115481],{"class":1353},[460,122239,122240],{"class":1353}," mujoco-render\n",[460,122242,122243,122245,122247,122249,122251],{"class":462,"line":482},[460,122244,40244],{"class":929},[460,122246,40247],{"class":1353},[460,122248,115423],{"class":1353},[460,122250,122204],{"class":1353},[460,122252,122207],{"class":1353},[14,122254,122255],{},"离屏渲染后端:",[451,122257,122259],{"className":40235,"code":122258,"language":40237,"meta":32,"style":32},"export MUJOCO_GL=egl\n",[457,122260,122261],{"__ignoreMap":32},[460,122262,122263,122265,122268,122270],{"class":462,"line":463},[460,122264,41455],{"class":887},[460,122266,122267],{"class":466}," MUJOCO_GL",[460,122269,894],{"class":887},[460,122271,122272],{"class":466},"egl\n",[14,122274,122275],{},"或:",[451,122277,122279],{"className":40235,"code":122278,"language":40237,"meta":32,"style":32},"export MUJOCO_GL=osmesa\n",[457,122280,122281],{"__ignoreMap":32},[460,122282,122283,122285,122287,122289],{"class":462,"line":463},[460,122284,41455],{"class":887},[460,122286,122267],{"class":466},[460,122288,894],{"class":887},[460,122290,122291],{"class":466},"osmesa\n",[14,122293,122294,122295,122298,122299,44794],{},"可能存在版本差异: 不同显卡驱动、Mesa、EGL 支持情况不同。如果 ",[457,122296,122297],{},"egl"," 失败，再尝试 ",[457,122300,122301],{},"osmesa",[14,122303,122304,122305,122308],{},"如果你在本机桌面环境运行，通常先不要设置 ",[457,122306,122307],{},"MUJOCO_GL","，直接运行 viewer。只有在远程服务器、无显示器环境或保存离屏图片时报 OpenGL 错误时，再尝试设置。",[18,122310,115538],{"id":115537},[14,122312,122313],{},"Viewer 是实时窗口。Renderer 是把仿真画面渲染成 NumPy 图像数组。",[14,122315,122316],{},"典型 viewer 流程:",[451,122318,122320],{"className":46787,"code":122319,"language":46789,"meta":32,"style":32},"with mujoco.viewer.launch_passive(model, data) as viewer:\n    while viewer.is_running():\n        mujoco.mj_step(model, data)\n        viewer.sync()\n",[457,122321,122322,122335,122342,122346],{"__ignoreMap":32},[460,122323,122324,122327,122330,122332],{"class":462,"line":463},[460,122325,122326],{"class":887},"with",[460,122328,122329],{"class":466}," mujoco.viewer.launch_passive(model, data) ",[460,122331,47790],{"class":887},[460,122333,122334],{"class":466}," viewer:\n",[460,122336,122337,122339],{"class":462,"line":476},[460,122338,18787],{"class":887},[460,122340,122341],{"class":466}," viewer.is_running():\n",[460,122343,122344],{"class":462,"line":482},[460,122345,116009],{"class":466},[460,122347,122348],{"class":462,"line":488},[460,122349,122350],{"class":466},"        viewer.sync()\n",[14,122352,122353],{},"典型 renderer 流程:",[451,122355,122357],{"className":46787,"code":122356,"language":46789,"meta":32,"style":32},"renderer = mujoco.Renderer(model, height=480, width=640)\nmujoco.mj_step(model, data)\nrenderer.update_scene(data)\nimage = renderer.render()\n",[457,122358,122359,122385,122389,122394],{"__ignoreMap":32},[460,122360,122361,122363,122365,122368,122370,122372,122374,122376,122378,122380,122383],{"class":462,"line":463},[460,122362,122063],{"class":466},[460,122364,894],{"class":887},[460,122366,122367],{"class":466}," mujoco.Renderer(model, ",[460,122369,41394],{"class":3380},[460,122371,894],{"class":887},[460,122373,58646],{"class":900},[460,122375,904],{"class":466},[460,122377,41390],{"class":3380},[460,122379,894],{"class":887},[460,122381,122382],{"class":900},"640",[460,122384,3754],{"class":466},[460,122386,122387],{"class":462,"line":476},[460,122388,118998],{"class":466},[460,122390,122391],{"class":462,"line":482},[460,122392,122393],{"class":466},"renderer.update_scene(data)\n",[460,122395,122396,122398,122400],{"class":462,"line":488},[460,122397,122073],{"class":466},[460,122399,894],{"class":887},[460,122401,122078],{"class":466},[23,122403,122405],{"id":122404},"viewer-的同步逻辑","viewer 的同步逻辑",[14,122407,122408],{},"viewer 只是显示窗口，不会自动帮你推进仿真。你仍然需要：",[451,122410,122412],{"className":46787,"code":122411,"language":46789,"meta":32,"style":32},"mujoco.mj_step(model, data)\nviewer.sync()\n",[457,122413,122414,122418],{"__ignoreMap":32},[460,122415,122416],{"class":462,"line":463},[460,122417,118998],{"class":466},[460,122419,122420],{"class":462,"line":476},[460,122421,122422],{"class":466},"viewer.sync()\n",[14,122424,122425,122427,122428,122431],{},[457,122426,115708],{}," 负责算物理，",[457,122429,122430],{},"viewer.sync()"," 负责把最新状态同步到窗口。",[23,122433,122435],{"id":122434},"为什么要-sleep","为什么要 sleep",[14,122437,122438],{},"如果不控制循环速度，仿真可能跑得非常快，窗口里一闪而过。示例代码用：",[451,122440,122442],{"className":46787,"code":122441,"language":46789,"meta":32,"style":32},"sleep_time = model.opt.timestep - (time.time() - step_start)\n",[457,122443,122444],{"__ignoreMap":32},[460,122445,122446,122449,122451,122454,122456,122459,122461],{"class":462,"line":463},[460,122447,122448],{"class":466},"sleep_time ",[460,122450,894],{"class":887},[460,122452,122453],{"class":466}," model.opt.timestep ",[460,122455,17259],{"class":887},[460,122457,122458],{"class":466}," (time.time() ",[460,122460,17259],{"class":887},[460,122462,122463],{"class":466}," step_start)\n",[14,122465,122466],{},"让真实时间尽量接近仿真时间。例如 timestep 是 0.01 秒，就尽量每 0.01 秒显示一步。",[23,122468,122470],{"id":122469},"renderer-输出是什么","renderer 输出是什么",[451,122472,122474],{"className":46787,"code":122473,"language":46789,"meta":32,"style":32},"image = renderer.render()\n",[457,122475,122476],{"__ignoreMap":32},[460,122477,122478,122480,122482],{"class":462,"line":463},[460,122479,122073],{"class":466},[460,122481,894],{"class":887},[460,122483,122078],{"class":466},[14,122485,122486],{},"得到的是 NumPy 数组，形状通常是：",[451,122488,122491],{"className":122489,"code":122490,"language":8391,"meta":32},[21693],"(height, width, 3)\n",[457,122492,122490],{"__ignoreMap":32},[14,122494,122495],{},"最后一维的 3 表示 RGB 三个颜色通道。保存图片时可以交给 Pillow：",[451,122497,122499],{"className":46787,"code":122498,"language":46789,"meta":32,"style":32},"Image.fromarray(image).save(\"render_output.png\")\n",[457,122500,122501],{"__ignoreMap":32},[460,122502,122503,122506,122509],{"class":462,"line":463},[460,122504,122505],{"class":466},"Image.fromarray(image).save(",[460,122507,122508],{"class":1353},"\"render_output.png\"",[460,122510,3754],{"class":466},[18,122512,115746],{"id":115745},[14,122514,122515],{},"交互式 Viewer:",[451,122517,122519],{"className":46787,"code":122518,"language":46789,"meta":32,"style":32},"import time\n\nimport mujoco\nimport mujoco.viewer\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"viewer_demo\">\n  \u003Coption timestep=\"0.01\" gravity=\"0 0 -9.81\"\u002F>\n\n  \u003Cworldbody>\n    \u003Clight name=\"top_light\" pos=\"0 0 3\"\u002F>\n    \u003Cgeom name=\"floor\" type=\"plane\" size=\"3 3 0.1\" rgba=\"0.8 0.8 0.8 1\"\u002F>\n\n    \u003Cbody name=\"box\" pos=\"0 0 1\">\n      \u003Cfreejoint name=\"box_free\"\u002F>\n      \u003Cgeom name=\"box_geom\" type=\"box\" size=\"0.15 0.15 0.15\" mass=\"1\" rgba=\"1 0 0 1\"\u002F>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\ndef main() -> None:\n    model = mujoco.MjModel.from_xml_string(XML)\n    data = mujoco.MjData(model)\n\n    with mujoco.viewer.launch_passive(model, data) as viewer:\n        while viewer.is_running() and data.time \u003C 5.0:\n            step_start = time.time()\n            mujoco.mj_step(model, data)\n            viewer.sync()\n\n            sleep_time = model.opt.timestep - (time.time() - step_start)\n            if sleep_time > 0:\n                time.sleep(sleep_time)\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,122520,122521,122527,122531,122537,122543,122547,122551,122559,122564,122568,122572,122576,122581,122586,122590,122594,122598,122603,122607,122611,122615,122619,122623,122627,122639,122651,122659,122663,122673,122693,122703,122708,122713,122717,122734,122747,122752,122756,122760,122772],{"__ignoreMap":32},[460,122522,122523,122525],{"class":462,"line":463},[460,122524,46801],{"class":887},[460,122526,48234],{"class":466},[460,122528,122529],{"class":462,"line":476},[460,122530,522],{"emptyLinePlaceholder":521},[460,122532,122533,122535],{"class":462,"line":482},[460,122534,46801],{"class":887},[460,122536,115794],{"class":466},[460,122538,122539,122541],{"class":462,"line":488},[460,122540,46801],{"class":887},[460,122542,122045],{"class":466},[460,122544,122545],{"class":462,"line":494},[460,122546,522],{"emptyLinePlaceholder":521},[460,122548,122549],{"class":462,"line":500},[460,122550,522],{"emptyLinePlaceholder":521},[460,122552,122553,122555,122557],{"class":462,"line":506},[460,122554,115807],{"class":900},[460,122556,2943],{"class":887},[460,122558,115812],{"class":1353},[460,122560,122561],{"class":462,"line":512},[460,122562,122563],{"class":1353},"\u003Cmujoco model=\"viewer_demo\">\n",[460,122565,122566],{"class":462,"line":518},[460,122567,115822],{"class":1353},[460,122569,122570],{"class":462,"line":525},[460,122571,522],{"emptyLinePlaceholder":521},[460,122573,122574],{"class":462,"line":531},[460,122575,115831],{"class":1353},[460,122577,122578],{"class":462,"line":537},[460,122579,122580],{"class":1353},"    \u003Clight name=\"top_light\" pos=\"0 0 3\"\u002F>\n",[460,122582,122583],{"class":462,"line":543},[460,122584,122585],{"class":1353},"    \u003Cgeom name=\"floor\" type=\"plane\" size=\"3 3 0.1\" rgba=\"0.8 0.8 0.8 1\"\u002F>\n",[460,122587,122588],{"class":462,"line":549},[460,122589,522],{"emptyLinePlaceholder":521},[460,122591,122592],{"class":462,"line":555},[460,122593,115845],{"class":1353},[460,122595,122596],{"class":462,"line":560},[460,122597,115850],{"class":1353},[460,122599,122600],{"class":462,"line":566},[460,122601,122602],{"class":1353},"      \u003Cgeom name=\"box_geom\" type=\"box\" size=\"0.15 0.15 0.15\" mass=\"1\" rgba=\"1 0 0 1\"\u002F>\n",[460,122604,122605],{"class":462,"line":572},[460,122606,115860],{"class":1353},[460,122608,122609],{"class":462,"line":578},[460,122610,115865],{"class":1353},[460,122612,122613],{"class":462,"line":812},[460,122614,115870],{"class":1353},[460,122616,122617],{"class":462,"line":818},[460,122618,110191],{"class":1353},[460,122620,122621],{"class":462,"line":824},[460,122622,522],{"emptyLinePlaceholder":521},[460,122624,122625],{"class":462,"line":2074},[460,122626,522],{"emptyLinePlaceholder":521},[460,122628,122629,122631,122633,122635,122637],{"class":462,"line":2088},[460,122630,48352],{"class":887},[460,122632,18514],{"class":929},[460,122634,115891],{"class":466},[460,122636,110179],{"class":900},[460,122638,20257],{"class":466},[460,122640,122641,122643,122645,122647,122649],{"class":462,"line":2103},[460,122642,115900],{"class":466},[460,122644,894],{"class":887},[460,122646,115905],{"class":466},[460,122648,115807],{"class":900},[460,122650,3754],{"class":466},[460,122652,122653,122655,122657],{"class":462,"line":2122},[460,122654,115914],{"class":466},[460,122656,894],{"class":887},[460,122658,115919],{"class":466},[460,122660,122661],{"class":462,"line":2144},[460,122662,522],{"emptyLinePlaceholder":521},[460,122664,122665,122667,122669,122671],{"class":462,"line":2158},[460,122666,50483],{"class":887},[460,122668,122329],{"class":466},[460,122670,47790],{"class":887},[460,122672,122334],{"class":466},[460,122674,122675,122678,122681,122683,122686,122688,122691],{"class":462,"line":2163},[460,122676,122677],{"class":887},"        while",[460,122679,122680],{"class":466}," viewer.is_running() ",[460,122682,46871],{"class":887},[460,122684,122685],{"class":466}," data.time ",[460,122687,781],{"class":887},[460,122689,122690],{"class":900}," 5.0",[460,122692,20257],{"class":466},[460,122694,122695,122698,122700],{"class":462,"line":2168},[460,122696,122697],{"class":466},"            step_start ",[460,122699,894],{"class":887},[460,122701,122702],{"class":466}," time.time()\n",[460,122704,122705],{"class":462,"line":2183},[460,122706,122707],{"class":466},"            mujoco.mj_step(model, data)\n",[460,122709,122710],{"class":462,"line":2194},[460,122711,122712],{"class":466},"            viewer.sync()\n",[460,122714,122715],{"class":462,"line":2199},[460,122716,522],{"emptyLinePlaceholder":521},[460,122718,122719,122722,122724,122726,122728,122730,122732],{"class":462,"line":2204},[460,122720,122721],{"class":466},"            sleep_time ",[460,122723,894],{"class":887},[460,122725,122453],{"class":466},[460,122727,17259],{"class":887},[460,122729,122458],{"class":466},[460,122731,17259],{"class":887},[460,122733,122463],{"class":466},[460,122735,122736,122738,122741,122743,122745],{"class":462,"line":2212},[460,122737,21153],{"class":887},[460,122739,122740],{"class":466}," sleep_time ",[460,122742,17668],{"class":887},[460,122744,2224],{"class":900},[460,122746,20257],{"class":466},[460,122748,122749],{"class":462,"line":2257},[460,122750,122751],{"class":466},"                time.sleep(sleep_time)\n",[460,122753,122754],{"class":462,"line":2285},[460,122755,522],{"emptyLinePlaceholder":521},[460,122757,122758],{"class":462,"line":2298},[460,122759,522],{"emptyLinePlaceholder":521},[460,122761,122762,122764,122766,122768,122770],{"class":462,"line":2303},[460,122763,18100],{"class":887},[460,122765,47627],{"class":900},[460,122767,116052],{"class":887},[460,122769,116055],{"class":1353},[460,122771,20257],{"class":466},[460,122773,122774],{"class":462,"line":2308},[460,122775,116062],{"class":466},[14,122777,118063],{},[451,122779,122781],{"className":40235,"code":122780,"language":40237,"meta":32,"style":32},"touch ch5_viewer.py\n",[457,122782,122783],{"__ignoreMap":32},[460,122784,122785,122787],{"class":462,"line":463},[460,122786,115776],{"class":929},[460,122788,122789],{"class":1353}," ch5_viewer.py\n",[14,122791,122792],{},"离屏 Renderer 保存图片:",[451,122794,122796],{"className":46787,"code":122795,"language":46789,"meta":32,"style":32},"from pathlib import Path\n\nimport mujoco\nfrom PIL import Image\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"renderer_demo\">\n  \u003Coption timestep=\"0.01\" gravity=\"0 0 -9.81\"\u002F>\n\n  \u003Cworldbody>\n    \u003Clight name=\"top_light\" pos=\"0 0 3\"\u002F>\n    \u003Ccamera name=\"fixed_camera\" pos=\"1.5 -2.0 1.2\" xyaxes=\"1 0.75 0 0 0 1\"\u002F>\n    \u003Cgeom name=\"floor\" type=\"plane\" size=\"3 3 0.1\" rgba=\"0.8 0.8 0.8 1\"\u002F>\n\n    \u003Cbody name=\"box\" pos=\"0 0 1\">\n      \u003Cfreejoint name=\"box_free\"\u002F>\n      \u003Cgeom name=\"box_geom\" type=\"box\" size=\"0.15 0.15 0.15\" mass=\"1\" rgba=\"1 0 0 1\"\u002F>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\ndef main() -> None:\n    model = mujoco.MjModel.from_xml_string(XML)\n    data = mujoco.MjData(model)\n    renderer = mujoco.Renderer(model, height=480, width=640)\n\n    for _ in range(100):\n        mujoco.mj_step(model, data)\n\n    renderer.update_scene(data, camera=\"fixed_camera\")\n    image = renderer.render()\n\n    output_path = Path(\"render_output.png\")\n    Image.fromarray(image).save(output_path)\n    renderer.close()\n\n    print(\"saved:\", output_path.resolve())\n    print(\"image shape:\", image.shape)\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,122797,122798,122810,122814,122820,122830,122834,122838,122846,122851,122855,122859,122863,122867,122872,122876,122880,122884,122888,122892,122896,122900,122904,122908,122912,122916,122928,122940,122948,122973,122977,122993,122997,123001,123016,123025,123029,123043,123048,123053,123057,123069,123081,123085,123089,123101],{"__ignoreMap":32},[460,122799,122800,122802,122805,122807],{"class":462,"line":463},[460,122801,47145],{"class":887},[460,122803,122804],{"class":466}," pathlib ",[460,122806,46801],{"class":887},[460,122808,122809],{"class":466}," Path\n",[460,122811,122812],{"class":462,"line":476},[460,122813,522],{"emptyLinePlaceholder":521},[460,122815,122816,122818],{"class":462,"line":482},[460,122817,46801],{"class":887},[460,122819,115794],{"class":466},[460,122821,122822,122824,122826,122828],{"class":462,"line":488},[460,122823,47145],{"class":887},[460,122825,63567],{"class":900},[460,122827,63570],{"class":887},[460,122829,63573],{"class":466},[460,122831,122832],{"class":462,"line":494},[460,122833,522],{"emptyLinePlaceholder":521},[460,122835,122836],{"class":462,"line":500},[460,122837,522],{"emptyLinePlaceholder":521},[460,122839,122840,122842,122844],{"class":462,"line":506},[460,122841,115807],{"class":900},[460,122843,2943],{"class":887},[460,122845,115812],{"class":1353},[460,122847,122848],{"class":462,"line":512},[460,122849,122850],{"class":1353},"\u003Cmujoco model=\"renderer_demo\">\n",[460,122852,122853],{"class":462,"line":518},[460,122854,115822],{"class":1353},[460,122856,122857],{"class":462,"line":525},[460,122858,522],{"emptyLinePlaceholder":521},[460,122860,122861],{"class":462,"line":531},[460,122862,115831],{"class":1353},[460,122864,122865],{"class":462,"line":537},[460,122866,122580],{"class":1353},[460,122868,122869],{"class":462,"line":543},[460,122870,122871],{"class":1353},"    \u003Ccamera name=\"fixed_camera\" pos=\"1.5 -2.0 1.2\" xyaxes=\"1 0.75 0 0 0 1\"\u002F>\n",[460,122873,122874],{"class":462,"line":549},[460,122875,122585],{"class":1353},[460,122877,122878],{"class":462,"line":555},[460,122879,522],{"emptyLinePlaceholder":521},[460,122881,122882],{"class":462,"line":560},[460,122883,115845],{"class":1353},[460,122885,122886],{"class":462,"line":566},[460,122887,115850],{"class":1353},[460,122889,122890],{"class":462,"line":572},[460,122891,122602],{"class":1353},[460,122893,122894],{"class":462,"line":578},[460,122895,115860],{"class":1353},[460,122897,122898],{"class":462,"line":812},[460,122899,115865],{"class":1353},[460,122901,122902],{"class":462,"line":818},[460,122903,115870],{"class":1353},[460,122905,122906],{"class":462,"line":824},[460,122907,110191],{"class":1353},[460,122909,122910],{"class":462,"line":2074},[460,122911,522],{"emptyLinePlaceholder":521},[460,122913,122914],{"class":462,"line":2088},[460,122915,522],{"emptyLinePlaceholder":521},[460,122917,122918,122920,122922,122924,122926],{"class":462,"line":2103},[460,122919,48352],{"class":887},[460,122921,18514],{"class":929},[460,122923,115891],{"class":466},[460,122925,110179],{"class":900},[460,122927,20257],{"class":466},[460,122929,122930,122932,122934,122936,122938],{"class":462,"line":2122},[460,122931,115900],{"class":466},[460,122933,894],{"class":887},[460,122935,115905],{"class":466},[460,122937,115807],{"class":900},[460,122939,3754],{"class":466},[460,122941,122942,122944,122946],{"class":462,"line":2144},[460,122943,115914],{"class":466},[460,122945,894],{"class":887},[460,122947,115919],{"class":466},[460,122949,122950,122953,122955,122957,122959,122961,122963,122965,122967,122969,122971],{"class":462,"line":2158},[460,122951,122952],{"class":466},"    renderer ",[460,122954,894],{"class":887},[460,122956,122367],{"class":466},[460,122958,41394],{"class":3380},[460,122960,894],{"class":887},[460,122962,58646],{"class":900},[460,122964,904],{"class":466},[460,122966,41390],{"class":3380},[460,122968,894],{"class":887},[460,122970,122382],{"class":900},[460,122972,3754],{"class":466},[460,122974,122975],{"class":462,"line":2163},[460,122976,522],{"emptyLinePlaceholder":521},[460,122978,122979,122981,122983,122985,122987,122989,122991],{"class":462,"line":2168},[460,122980,19722],{"class":887},[460,122982,115994],{"class":466},[460,122984,11713],{"class":887},[460,122986,48848],{"class":900},[460,122988,2174],{"class":466},[460,122990,2325],{"class":900},[460,122992,47194],{"class":466},[460,122994,122995],{"class":462,"line":2183},[460,122996,116009],{"class":466},[460,122998,122999],{"class":462,"line":2194},[460,123000,522],{"emptyLinePlaceholder":521},[460,123002,123003,123006,123009,123011,123014],{"class":462,"line":2199},[460,123004,123005],{"class":466},"    renderer.update_scene(data, ",[460,123007,123008],{"class":3380},"camera",[460,123010,894],{"class":887},[460,123012,123013],{"class":1353},"\"fixed_camera\"",[460,123015,3754],{"class":466},[460,123017,123018,123021,123023],{"class":462,"line":2204},[460,123019,123020],{"class":466},"    image ",[460,123022,894],{"class":887},[460,123024,122078],{"class":466},[460,123026,123027],{"class":462,"line":2212},[460,123028,522],{"emptyLinePlaceholder":521},[460,123030,123031,123034,123036,123039,123041],{"class":462,"line":2257},[460,123032,123033],{"class":466},"    output_path ",[460,123035,894],{"class":887},[460,123037,123038],{"class":466}," Path(",[460,123040,122508],{"class":1353},[460,123042,3754],{"class":466},[460,123044,123045],{"class":462,"line":2285},[460,123046,123047],{"class":466},"    Image.fromarray(image).save(output_path)\n",[460,123049,123050],{"class":462,"line":2298},[460,123051,123052],{"class":466},"    renderer.close()\n",[460,123054,123055],{"class":462,"line":2303},[460,123056,522],{"emptyLinePlaceholder":521},[460,123058,123059,123061,123063,123066],{"class":462,"line":2308},[460,123060,47706],{"class":900},[460,123062,2174],{"class":466},[460,123064,123065],{"class":1353},"\"saved:\"",[460,123067,123068],{"class":466},", output_path.resolve())\n",[460,123070,123071,123073,123075,123078],{"class":462,"line":2318},[460,123072,47706],{"class":900},[460,123074,2174],{"class":466},[460,123076,123077],{"class":1353},"\"image shape:\"",[460,123079,123080],{"class":466},", image.shape)\n",[460,123082,123083],{"class":462,"line":2333},[460,123084,522],{"emptyLinePlaceholder":521},[460,123086,123087],{"class":462,"line":2338},[460,123088,522],{"emptyLinePlaceholder":521},[460,123090,123091,123093,123095,123097,123099],{"class":462,"line":2343},[460,123092,18100],{"class":887},[460,123094,47627],{"class":900},[460,123096,116052],{"class":887},[460,123098,116055],{"class":1353},[460,123100,20257],{"class":466},[460,123102,123103],{"class":462,"line":2353},[460,123104,116062],{"class":466},[14,123106,118063],{},[451,123108,123110],{"className":40235,"code":123109,"language":40237,"meta":32,"style":32},"touch ch5_renderer.py\n",[457,123111,123112],{"__ignoreMap":32},[460,123113,123114,123116],{"class":462,"line":463},[460,123115,115776],{"class":929},[460,123117,123118],{"class":1353}," ch5_renderer.py\n",[23,123120,116065],{"id":116065},[14,123122,123123],{},"viewer 上下文：",[451,123125,123127],{"className":46787,"code":123126,"language":46789,"meta":32,"style":32},"with mujoco.viewer.launch_passive(model, data) as viewer:\n",[457,123128,123129],{"__ignoreMap":32},[460,123130,123131,123133,123135,123137],{"class":462,"line":463},[460,123132,122326],{"class":887},[460,123134,122329],{"class":466},[460,123136,47790],{"class":887},[460,123138,122334],{"class":466},[14,123140,123141,123143],{},[457,123142,122326],{}," 语句会创建窗口，并在退出时自动清理资源。",[14,123145,123146],{},"窗口循环：",[451,123148,123150],{"className":46787,"code":123149,"language":46789,"meta":32,"style":32},"while viewer.is_running() and data.time \u003C 5.0:\n",[457,123151,123152],{"__ignoreMap":32},[460,123153,123154,123157,123159,123161,123163,123165,123167],{"class":462,"line":463},[460,123155,123156],{"class":887},"while",[460,123158,122680],{"class":466},[460,123160,46871],{"class":887},[460,123162,122685],{"class":466},[460,123164,781],{"class":887},[460,123166,122690],{"class":900},[460,123168,20257],{"class":466},[14,123170,123171],{},"只要窗口没有被关闭，并且仿真时间还没到 5 秒，就继续运行。",[14,123173,123174],{},"固定相机：",[451,123176,123178],{"className":453,"code":123177,"language":455,"meta":32,"style":32},"\u003Ccamera name=\"fixed_camera\" pos=\"1.5 -2.0 1.2\" xyaxes=\"1 0.75 0 0 0 1\"\u002F>\n",[457,123179,123180],{"__ignoreMap":32},[460,123181,123182,123184,123186,123188,123190,123192,123194,123196,123199,123202,123204,123207],{"class":462,"line":463},[460,123183,781],{"class":466},[460,123185,123008],{"class":470},[460,123187,1908],{"class":929},[460,123189,894],{"class":466},[460,123191,123013],{"class":1353},[460,123193,115599],{"class":929},[460,123195,894],{"class":466},[460,123197,123198],{"class":1353},"\"1.5 -2.0 1.2\"",[460,123200,123201],{"class":929}," xyaxes",[460,123203,894],{"class":466},[460,123205,123206],{"class":1353},"\"1 0.75 0 0 0 1\"",[460,123208,115637],{"class":466},[14,123210,123211],{},"Renderer 示例中定义了一个固定相机。这样每次保存的图片视角一致，适合做数据采集。",[23,123213,123215],{"id":123214},"viewer-代码逐行细讲","Viewer 代码逐行细讲",[451,123217,123219],{"className":46787,"code":123218,"language":46789,"meta":32,"style":32},"import time\n",[457,123220,123221],{"__ignoreMap":32},[460,123222,123223,123225],{"class":462,"line":463},[460,123224,46801],{"class":887},[460,123226,48234],{"class":466},[14,123228,123229],{},"导入时间模块。后面用它控制 viewer 循环速度，让画面不要跑得太快。",[451,123231,123233],{"className":46787,"code":123232,"language":46789,"meta":32,"style":32},"import mujoco\nimport mujoco.viewer\n",[457,123234,123235,123241],{"__ignoreMap":32},[460,123236,123237,123239],{"class":462,"line":463},[460,123238,46801],{"class":887},[460,123240,115794],{"class":466},[460,123242,123243,123245],{"class":462,"line":476},[460,123244,46801],{"class":887},[460,123246,122045],{"class":466},[14,123248,123249],{},"第一行导入 MuJoCo 基础功能。第二行导入 MuJoCo 的 viewer 模块，用来打开交互式窗口。",[451,123251,123252],{"className":46787,"code":123126,"language":46789,"meta":32,"style":32},[457,123253,123254],{"__ignoreMap":32},[460,123255,123256,123258,123260,123262],{"class":462,"line":463},[460,123257,122326],{"class":887},[460,123259,122329],{"class":466},[460,123261,47790],{"class":887},[460,123263,122334],{"class":466},[14,123265,123266,123267,123270],{},"打开一个 viewer 窗口。",[457,123268,123269],{},"launch_passive"," 的意思是“被动 viewer”：它负责显示，但仿真推进仍然由你的 Python 代码控制。",[451,123272,123273],{"className":46787,"code":123149,"language":46789,"meta":32,"style":32},[457,123274,123275],{"__ignoreMap":32},[460,123276,123277,123279,123281,123283,123285,123287,123289],{"class":462,"line":463},[460,123278,123156],{"class":887},[460,123280,122680],{"class":466},[460,123282,46871],{"class":887},[460,123284,122685],{"class":466},[460,123286,781],{"class":887},[460,123288,122690],{"class":900},[460,123290,20257],{"class":466},[14,123292,123293,123294,123297],{},"只要窗口还开着，并且仿真时间小于 5 秒，就继续循环。如果你手动关闭窗口，",[457,123295,123296],{},"viewer.is_running()"," 会变成 false，循环结束。",[451,123299,123301],{"className":46787,"code":123300,"language":46789,"meta":32,"style":32},"step_start = time.time()\n",[457,123302,123303],{"__ignoreMap":32},[460,123304,123305,123308,123310],{"class":462,"line":463},[460,123306,123307],{"class":466},"step_start ",[460,123309,894],{"class":887},[460,123311,122702],{"class":466},[14,123313,123314],{},"记录当前真实时间。后面用它计算这一轮循环花了多久。",[451,123316,123317],{"className":46787,"code":122411,"language":46789,"meta":32,"style":32},[457,123318,123319,123323],{"__ignoreMap":32},[460,123320,123321],{"class":462,"line":463},[460,123322,118998],{"class":466},[460,123324,123325],{"class":462,"line":476},[460,123326,122422],{"class":466},[14,123328,123329,123331,123332,123334,123335,123337,123338,123341],{},[457,123330,115708],{}," 推进物理仿真。",[457,123333,122430],{}," 把最新的 ",[457,123336,49729],{}," 同步到窗口里显示。没有 ",[457,123339,123340],{},"sync()","，窗口可能看不到最新状态。",[451,123343,123344],{"className":46787,"code":122441,"language":46789,"meta":32,"style":32},[457,123345,123346],{"__ignoreMap":32},[460,123347,123348,123350,123352,123354,123356,123358,123360],{"class":462,"line":463},[460,123349,122448],{"class":466},[460,123351,894],{"class":887},[460,123353,122453],{"class":466},[460,123355,17259],{"class":887},[460,123357,122458],{"class":466},[460,123359,17259],{"class":887},[460,123361,122463],{"class":466},[14,123363,123364],{},"计算还需要等待多久。假设 timestep 是 0.01 秒，而这一轮计算只花了 0.003 秒，那就 sleep 约 0.007 秒。",[451,123366,123368],{"className":46787,"code":123367,"language":46789,"meta":32,"style":32},"if sleep_time > 0:\n    time.sleep(sleep_time)\n",[457,123369,123370,123382],{"__ignoreMap":32},[460,123371,123372,123374,123376,123378,123380],{"class":462,"line":463},[460,123373,18100],{"class":887},[460,123375,122740],{"class":466},[460,123377,17668],{"class":887},[460,123379,2224],{"class":900},[460,123381,20257],{"class":466},[460,123383,123384],{"class":462,"line":476},[460,123385,123386],{"class":466},"    time.sleep(sleep_time)\n",[14,123388,123389],{},"如果还有剩余时间，就暂停一会儿。这样 viewer 看起来更接近真实速度。",[23,123391,123393],{"id":123392},"renderer-代码逐行细讲","Renderer 代码逐行细讲",[451,123395,123397],{"className":46787,"code":123396,"language":46789,"meta":32,"style":32},"from pathlib import Path\n",[457,123398,123399],{"__ignoreMap":32},[460,123400,123401,123403,123405,123407],{"class":462,"line":463},[460,123402,47145],{"class":887},[460,123404,122804],{"class":466},[460,123406,46801],{"class":887},[460,123408,122809],{"class":466},[14,123410,123411,123412,123415,123416,123419],{},"导入 ",[457,123413,123414],{},"Path","，用来处理文件路径。相比直接写字符串，",[457,123417,123418],{},"Path(\"render_output.png\")"," 更清晰。",[451,123421,123423],{"className":46787,"code":123422,"language":46789,"meta":32,"style":32},"from PIL import Image\n",[457,123424,123425],{"__ignoreMap":32},[460,123426,123427,123429,123431,123433],{"class":462,"line":463},[460,123428,47145],{"class":887},[460,123430,63567],{"class":900},[460,123432,63570],{"class":887},[460,123434,63573],{"class":466},[14,123436,123437],{},"导入 Pillow 的图片工具。MuJoCo Renderer 输出的是数组，Pillow 可以把数组保存成 PNG 图片。",[451,123439,123440],{"className":453,"code":123177,"language":455,"meta":32,"style":32},[457,123441,123442],{"__ignoreMap":32},[460,123443,123444,123446,123448,123450,123452,123454,123456,123458,123460,123462,123464,123466],{"class":462,"line":463},[460,123445,781],{"class":466},[460,123447,123008],{"class":470},[460,123449,1908],{"class":929},[460,123451,894],{"class":466},[460,123453,123013],{"class":1353},[460,123455,115599],{"class":929},[460,123457,894],{"class":466},[460,123459,123198],{"class":1353},[460,123461,123201],{"class":929},[460,123463,894],{"class":466},[460,123465,123206],{"class":1353},[460,123467,115637],{"class":466},[14,123469,123470,123471,123473,123474,123476,123477,123480,123481,123483],{},"定义一个相机。",[457,123472,3440],{}," 是相机名字。",[457,123475,118639],{}," 是相机在世界里的位置。",[457,123478,123479],{},"xyaxes"," 控制相机朝向，初学时可以先照抄，后面通过改 ",[457,123482,118639],{}," 来调视角。",[451,123485,123487],{"className":46787,"code":123486,"language":46789,"meta":32,"style":32},"renderer = mujoco.Renderer(model, height=480, width=640)\n",[457,123488,123489],{"__ignoreMap":32},[460,123490,123491,123493,123495,123497,123499,123501,123503,123505,123507,123509,123511],{"class":462,"line":463},[460,123492,122063],{"class":466},[460,123494,894],{"class":887},[460,123496,122367],{"class":466},[460,123498,41394],{"class":3380},[460,123500,894],{"class":887},[460,123502,58646],{"class":900},[460,123504,904],{"class":466},[460,123506,41390],{"class":3380},[460,123508,894],{"class":887},[460,123510,122382],{"class":900},[460,123512,3754],{"class":466},[14,123514,123515,123516,115511,123518,123520],{},"创建离屏渲染器。",[457,123517,41394],{},[457,123519,41390],{}," 决定输出图片大小。",[451,123522,123523],{"className":46787,"code":116169,"language":46789,"meta":32,"style":32},[457,123524,123525,123541],{"__ignoreMap":32},[460,123526,123527,123529,123531,123533,123535,123537,123539],{"class":462,"line":463},[460,123528,19547],{"class":887},[460,123530,115994],{"class":466},[460,123532,11713],{"class":887},[460,123534,48848],{"class":900},[460,123536,2174],{"class":466},[460,123538,2325],{"class":900},[460,123540,47194],{"class":466},[460,123542,123543],{"class":462,"line":476},[460,123544,116192],{"class":466},[14,123546,123547],{},"先让仿真跑 100 步。这样保存图片时，方块已经下落了一段时间。",[451,123549,123551],{"className":46787,"code":123550,"language":46789,"meta":32,"style":32},"renderer.update_scene(data, camera=\"fixed_camera\")\n",[457,123552,123553],{"__ignoreMap":32},[460,123554,123555,123558,123560,123562,123564],{"class":462,"line":463},[460,123556,123557],{"class":466},"renderer.update_scene(data, ",[460,123559,123008],{"class":3380},[460,123561,894],{"class":887},[460,123563,123013],{"class":1353},[460,123565,3754],{"class":466},[14,123567,123568,123569,123571,123572,123575],{},"告诉 renderer：用当前 ",[457,123570,49729],{}," 的状态更新画面，并使用名为 ",[457,123573,123574],{},"fixed_camera"," 的相机视角。",[451,123577,123578],{"className":46787,"code":122473,"language":46789,"meta":32,"style":32},[457,123579,123580],{"__ignoreMap":32},[460,123581,123582,123584,123586],{"class":462,"line":463},[460,123583,122073],{"class":466},[460,123585,894],{"class":887},[460,123587,122078],{"class":466},[14,123589,123590,123591,123594],{},"真正渲染出图像。",[457,123592,123593],{},"image"," 是一个 NumPy 数组，不是文件。",[451,123596,123598],{"className":46787,"code":123597,"language":46789,"meta":32,"style":32},"Image.fromarray(image).save(output_path)\n",[457,123599,123600],{"__ignoreMap":32},[460,123601,123602],{"class":462,"line":463},[460,123603,123597],{"class":466},[14,123605,123606,123607,44794],{},"把数组转换成图片，并保存到 ",[457,123608,123609],{},"render_output.png",[451,123611,123613],{"className":46787,"code":123612,"language":46789,"meta":32,"style":32},"renderer.close()\n",[457,123614,123615],{"__ignoreMap":32},[460,123616,123617],{"class":462,"line":463},[460,123618,123612],{"class":466},[14,123620,123621],{},"关闭 renderer，释放图形资源。写小脚本时不一定马上出问题，但养成关闭资源的习惯更好。",[18,123623,116809],{"id":116808},[14,123625,123626,123627,123629,123630,44794],{},"Viewer 示例会打开窗口，显示红色方块下落。Renderer 示例会生成 ",[457,123628,123609],{},"，并输出图像数组形状，例如 ",[457,123631,123632],{},"(480, 640, 3)",[14,123634,123635],{},"如果图片里看不到方块，先检查：",[103,123637,123638,123641,123644],{},[43,123639,123640],{},"方块是否掉到相机视野外。",[43,123642,123643],{},"camera 位置是否合理。",[43,123645,123646,123647,123650],{},"是否在 ",[457,123648,123649],{},"renderer.update_scene(data, camera=\"fixed_camera\")"," 里指定了正确相机名。",[18,123652,116841],{"id":116840},[14,123654,123655],{},"运行 viewer:",[451,123657,123659],{"className":40235,"code":123658,"language":40237,"meta":32,"style":32},"python ch5_viewer.py\n",[457,123660,123661],{"__ignoreMap":32},[460,123662,123663,123665],{"class":462,"line":463},[460,123664,46789],{"class":929},[460,123666,122789],{"class":1353},[14,123668,123669],{},"运行 renderer:",[451,123671,123673],{"className":40235,"code":123672,"language":40237,"meta":32,"style":32},"python ch5_renderer.py\n",[457,123674,123675],{"__ignoreMap":32},[460,123676,123677,123679],{"class":462,"line":463},[460,123678,46789],{"class":929},[460,123680,123118],{"class":1353},[14,123682,123683],{},"如果在服务器上运行:",[451,123685,123687],{"className":40235,"code":123686,"language":40237,"meta":32,"style":32},"MUJOCO_GL=egl python ch5_renderer.py\n",[457,123688,123689],{"__ignoreMap":32},[460,123690,123691,123693,123695,123697,123700],{"class":462,"line":463},[460,123692,122307],{"class":466},[460,123694,894],{"class":887},[460,123696,122297],{"class":1353},[460,123698,123699],{"class":929}," python",[460,123701,123118],{"class":1353},[14,123703,122275],{},[451,123705,123707],{"className":40235,"code":123706,"language":40237,"meta":32,"style":32},"MUJOCO_GL=osmesa python ch5_renderer.py\n",[457,123708,123709],{"__ignoreMap":32},[460,123710,123711,123713,123715,123717,123719],{"class":462,"line":463},[460,123712,122307],{"class":466},[460,123714,894],{"class":887},[460,123716,122301],{"class":1353},[460,123718,123699],{"class":929},[460,123720,123118],{"class":1353},[14,123722,123723],{},"再做几个练习：",[103,123725,123726,123733,123736,123742],{},[43,123727,123728,123729,123732],{},"把 renderer 分辨率改成 ",[457,123730,123731],{},"height=240, width=320","，观察输出 shape。",[43,123734,123735],{},"把方块颜色改成蓝色，重新保存图片。",[43,123737,123738,123739,123741],{},"把相机 ",[457,123740,118639],{}," 改远一点，观察画面中物体是否变小。",[43,123743,123744,123745,116907,123748,123751],{},"把 viewer 示例中的 ",[457,123746,123747],{},"data.time \u003C 5.0",[457,123749,123750],{},"data.time \u003C 20.0","，观察更长时间。",[18,123753,116946],{"id":116945},[23,123755,123757],{"id":123756},"viewer-窗口打不开","viewer 窗口打不开",[14,123759,123760],{},"安装:",[451,123762,123764],{"className":40235,"code":123763,"language":40237,"meta":32,"style":32},"sudo dnf install -y glfw glfw-devel libX11 libXi libXrandr libXcursor libXinerama\n",[457,123765,123766],{"__ignoreMap":32},[460,123767,123768,123770,123772,123774,123776,123778,123780,123782,123784,123786,123788],{"class":462,"line":463},[460,123769,40989],{"class":929},[460,123771,42726],{"class":1353},[460,123773,40247],{"class":1353},[460,123775,42811],{"class":900},[460,123777,116999],{"class":1353},[460,123779,115327],{"class":1353},[460,123781,117004],{"class":1353},[460,123783,115340],{"class":1353},[460,123785,115346],{"class":1353},[460,123787,115337],{"class":1353},[460,123789,123790],{"class":1353}," libXinerama\n",[23,123792,123794],{"id":123793},"glfwerror",[457,123795,123796],{},"GLFWError",[14,123798,123799],{},"可能是图形环境不可用。本机桌面优先测试 X11；远程服务器优先使用 Renderer 离屏渲染。",[23,123801,123803],{"id":123802},"renderer-报-opengl-后端错误","Renderer 报 OpenGL 后端错误",[14,123805,123806,123807,6271,123809,123811],{},"尝试 ",[457,123808,115530],{},[457,123810,115533],{},"。可能存在版本差异。",[23,123813,123814],{"id":123814},"保存图片是黑的",[14,123816,117068],{},[103,123818,123819,123822,123825,123835],{},[43,123820,123821],{},"XML 里是否有 light。",[43,123823,123824],{},"相机是否对着模型。",[43,123826,123827,123828,123831,123832,44794],{},"是否先 ",[457,123829,123830],{},"renderer.update_scene(data, camera=\"...\")"," 再 ",[457,123833,123834],{},"renderer.render()",[43,123836,123837],{},"物体是否已经掉出视野。",[23,123839,123840],{"id":123840},"远程服务器没有显示器",[14,123842,123843],{},"不要强行打开 viewer。优先使用 Renderer，并尝试：",[451,123845,123846],{"className":40235,"code":123686,"language":40237,"meta":32,"style":32},[457,123847,123848],{"__ignoreMap":32},[460,123849,123850,123852,123854,123856,123858],{"class":462,"line":463},[460,123851,122307],{"class":466},[460,123853,894],{"class":887},[460,123855,122297],{"class":1353},[460,123857,123699],{"class":929},[460,123859,123118],{"class":1353},[14,123861,123862],{},"如果 EGL 不可用，再尝试：",[451,123864,123865],{"className":40235,"code":123706,"language":40237,"meta":32,"style":32},[457,123866,123867],{"__ignoreMap":32},[460,123868,123869,123871,123873,123875,123877],{"class":462,"line":463},[460,123870,122307],{"class":466},[460,123872,894],{"class":887},[460,123874,122301],{"class":1353},[460,123876,123699],{"class":929},[460,123878,123118],{"class":1353},[18,123880,117100],{"id":117099},[14,123882,123883],{},"Viewer 用来调试，Renderer 用来生成图像。实际项目里常见流程是：",[103,123885,123886,123889,123892],{},[43,123887,123888],{},"先用 viewer 看模型和控制是否正常。",[43,123890,123891],{},"再用 renderer 保存图片或构造视觉观测。",[43,123893,123894],{},"最后把状态、动作、图像、奖励组织成训练数据。",[1944,123896,123897],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":32,"searchDepth":476,"depth":476,"links":123899},[123900,123901,123902,123907,123912,123913,123914,123921],{"id":115139,"depth":476,"text":115140},{"id":115262,"depth":476,"text":115263},{"id":115537,"depth":476,"text":115538,"children":123903},[123904,123905,123906],{"id":122404,"depth":482,"text":122405},{"id":122434,"depth":482,"text":122435},{"id":122469,"depth":482,"text":122470},{"id":115745,"depth":476,"text":115746,"children":123908},[123909,123910,123911],{"id":116065,"depth":482,"text":116065},{"id":123214,"depth":482,"text":123215},{"id":123392,"depth":482,"text":123393},{"id":116808,"depth":476,"text":116809},{"id":116840,"depth":476,"text":116841},{"id":116945,"depth":476,"text":116946,"children":123915},[123916,123917,123918,123919,123920],{"id":123756,"depth":482,"text":123757},{"id":123793,"depth":482,"text":123796},{"id":123802,"depth":482,"text":123803},{"id":123814,"depth":482,"text":123814},{"id":123840,"depth":482,"text":123840},{"id":117099,"depth":476,"text":117100},{},"\u002Fwiki\u002F2025-05-17-mujoco\u002Fch5-viewerrenderer",{"title":122012,"description":32},"wiki\u002F2025-05-17-mujoco学习\u002Fch5-Viewer与Renderer","jkU4Bk_-8dFZQfBSHYyB6vru9sna8eICeXSnh5-FQI8",{"id":123928,"title":123929,"body":123930,"description":32,"extension":16683,"meta":125841,"navigation":521,"path":125842,"seo":125843,"stem":125844,"__hash__":125845},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Fch6-Cartpole控制任务.md","6.控制任务：Cartpole",{"type":7,"value":123931,"toc":125817},[123932,123935,123937,123940,123942,123961,123964,123970,123973,123975,123977,124001,124003,124017,124019,124060,124062,124073,124075,124078,124084,124087,124121,124124,124156,124159,124191,124195,124198,124238,124241,124247,124250,124256,124260,124263,124269,124272,124276,124279,124319,124321,124334,124337,124339,124921,124923,124935,124938,124949,124951,124954,124973,124985,124988,125009,125012,125015,125058,125061,125064,125084,125091,125093,125111,125126,125129,125135,125138,125144,125161,125168,125199,125210,125244,125255,125272,125281,125289,125294,125308,125311,125332,125338,125352,125357,125387,125397,125422,125430,125453,125456,125472,125475,125483,125489,125511,125524,125545,125554,125593,125604,125606,125609,125615,125618,125621,125627,125630,125650,125653,125655,125694,125696,125699,125707,125710,125713,125740,125743,125753,125759,125762,125768,125770,125776,125780,125783,125785,125788,125812,125815],[10,123933,123929],{"id":123934},"_6控制任务cartpole",[18,123936,115140],{"id":115139},[14,123938,123939],{},"本章搭建一个最小 Cartpole 控制任务。",[14,123941,118824],{},[103,123943,123944,123947,123949,123952,123955,123958],{},[43,123945,123946],{},"slide joint",[43,123948,120677],{},[43,123950,123951],{},"cart force actuator",[43,123953,123954],{},"状态观测",[43,123956,123957],{},"简单控制循环",[43,123959,123960],{},"reward 设计雏形",[14,123962,123963],{},"Cartpole 是强化学习里最经典的入门任务之一。它的目标很直观：",[451,123965,123968],{"className":123966,"code":123967,"language":8391,"meta":32},[21693],"小车可以左右移动\n杆子铰接在小车上\n控制小车左右施力\n尽量让杆子保持不倒\n",[457,123969,123967],{"__ignoreMap":32},[14,123971,123972],{},"这章不是为了做出最强控制器，而是为了让你看懂一个 MuJoCo 控制任务由哪些部分组成。",[18,123974,115263],{"id":115262},[14,123976,115266],{},[451,123978,123979],{"className":40235,"code":118881,"language":40237,"meta":32,"style":32},[457,123980,123981],{"__ignoreMap":32},[460,123982,123983,123985,123987,123989,123991,123993,123995,123997,123999],{"class":462,"line":463},[460,123984,40989],{"class":929},[460,123986,42726],{"class":1353},[460,123988,40247],{"class":1353},[460,123990,42811],{"class":900},[460,123992,118896],{"class":1353},[460,123994,115291],{"class":1353},[460,123996,116994],{"class":1353},[460,123998,115307],{"class":1353},[460,124000,118905],{"class":1353},[14,124002,117312],{},[451,124004,124005],{"className":40235,"code":115412,"language":40237,"meta":32,"style":32},[457,124006,124007],{"__ignoreMap":32},[460,124008,124009,124011,124013,124015],{"class":462,"line":463},[460,124010,40244],{"class":929},[460,124012,40247],{"class":1353},[460,124014,115423],{"class":1353},[460,124016,115426],{"class":1353},[14,124018,117329],{},[451,124020,124022],{"className":40235,"code":124021,"language":40237,"meta":32,"style":32},"conda create -n mujoco-cartpole python=3.10 -y\nconda activate mujoco-cartpole\npip install \"mujoco>=2.3\" numpy\n",[457,124023,124024,124041,124050],{"__ignoreMap":32},[460,124025,124026,124028,124030,124032,124035,124037,124039],{"class":462,"line":463},[460,124027,46739],{"class":929},[460,124029,45585],{"class":1353},[460,124031,41528],{"class":900},[460,124033,124034],{"class":1353}," mujoco-cartpole",[460,124036,115468],{"class":1353},[460,124038,115471],{"class":900},[460,124040,115474],{"class":900},[460,124042,124043,124045,124047],{"class":462,"line":476},[460,124044,46739],{"class":929},[460,124046,115481],{"class":1353},[460,124048,124049],{"class":1353}," mujoco-cartpole\n",[460,124051,124052,124054,124056,124058],{"class":462,"line":482},[460,124053,40244],{"class":929},[460,124055,40247],{"class":1353},[460,124057,115423],{"class":1353},[460,124059,115426],{"class":1353},[14,124061,115497],{},[103,124063,124064,124067,124070],{},[43,124065,124066],{},"本章不依赖 Gymnasium。",[43,124068,124069],{},"Cartpole XML 是简化教学模型，不等同于 Gymnasium 官方 CartPole 参数。",[43,124071,124072],{},"如果后续要对齐 Gymnasium，需要单独匹配质量、长度、奖励、终止条件。",[18,124074,115538],{"id":115537},[14,124076,124077],{},"Cartpole 的模型结构:",[451,124079,124082],{"className":124080,"code":124081,"language":8391,"meta":32},[21693],"world\n└── cart body\n    ├── slide joint: cart_x\n    └── pole body\n        └── hinge joint: pole_hinge\n",[457,124083,124081],{"__ignoreMap":32},[14,124085,124086],{},"小车通过 slide joint 左右移动:",[451,124088,124090],{"className":453,"code":124089,"language":455,"meta":32,"style":32},"\u003Cjoint name=\"cart_x\" type=\"slide\" axis=\"1 0 0\"\u002F>\n",[457,124091,124092],{"__ignoreMap":32},[460,124093,124094,124096,124098,124100,124102,124105,124107,124109,124112,124114,124116,124119],{"class":462,"line":463},[460,124095,781],{"class":466},[460,124097,117449],{"class":470},[460,124099,1908],{"class":929},[460,124101,894],{"class":466},[460,124103,124104],{"class":1353},"\"cart_x\"",[460,124106,70071],{"class":929},[460,124108,894],{"class":466},[460,124110,124111],{"class":1353},"\"slide\"",[460,124113,120521],{"class":929},[460,124115,894],{"class":466},[460,124117,124118],{"class":1353},"\"1 0 0\"",[460,124120,115637],{"class":466},[14,124122,124123],{},"杆子通过 hinge joint 旋转:",[451,124125,124127],{"className":453,"code":124126,"language":455,"meta":32,"style":32},"\u003Cjoint name=\"pole_hinge\" type=\"hinge\" axis=\"0 1 0\"\u002F>\n",[457,124128,124129],{"__ignoreMap":32},[460,124130,124131,124133,124135,124137,124139,124142,124144,124146,124148,124150,124152,124154],{"class":462,"line":463},[460,124132,781],{"class":466},[460,124134,117449],{"class":470},[460,124136,1908],{"class":929},[460,124138,894],{"class":466},[460,124140,124141],{"class":1353},"\"pole_hinge\"",[460,124143,70071],{"class":929},[460,124145,894],{"class":466},[460,124147,120512],{"class":1353},[460,124149,120521],{"class":929},[460,124151,894],{"class":466},[460,124153,120526],{"class":1353},[460,124155,115637],{"class":466},[14,124157,124158],{},"控制力作用在小车 slide joint 上:",[451,124160,124162],{"className":453,"code":124161,"language":455,"meta":32,"style":32},"\u003Cmotor name=\"cart_motor\" joint=\"cart_x\" gear=\"10\"\u002F>\n",[457,124163,124164],{"__ignoreMap":32},[460,124165,124166,124168,124170,124172,124174,124177,124179,124181,124183,124185,124187,124189],{"class":462,"line":463},[460,124167,781],{"class":466},[460,124169,120567],{"class":470},[460,124171,1908],{"class":929},[460,124173,894],{"class":466},[460,124175,124176],{"class":1353},"\"cart_motor\"",[460,124178,120577],{"class":929},[460,124180,894],{"class":466},[460,124182,124104],{"class":1353},[460,124184,120584],{"class":929},[460,124186,894],{"class":466},[460,124188,70562],{"class":1353},[460,124190,115637],{"class":466},[23,124192,124194],{"id":124193},"cartpole-的状态是什么","Cartpole 的状态是什么",[14,124196,124197],{},"这个简化模型有两个关节：",[16884,124199,124200,124211],{},[16887,124201,124202],{},[16890,124203,124204,124206,124208],{},[16893,124205,117252],{"align":40149},[16893,124207,40150],{"align":40149},[16893,124209,124210],{"align":40149},"对应状态",[16930,124212,124213,124226],{},[16890,124214,124215,124220,124223],{},[16935,124216,124217],{"align":40149},[457,124218,124219],{},"cart_x",[16935,124221,124222],{"align":40149},"slide",[16935,124224,124225],{"align":40149},"小车 x 位置",[16890,124227,124228,124233,124235],{},[16935,124229,124230],{"align":40149},[457,124231,124232],{},"pole_hinge",[16935,124234,120333],{"align":40149},[16935,124236,124237],{"align":40149},"杆子角度",[14,124239,124240],{},"所以：",[451,124242,124245],{"className":124243,"code":124244,"language":8391,"meta":32},[21693],"data.qpos = [cart_x, pole_angle]\ndata.qvel = [cart_x_velocity, pole_angular_velocity]\n",[457,124246,124244],{"__ignoreMap":32},[14,124248,124249],{},"把它们拼起来就是观测：",[451,124251,124254],{"className":124252,"code":124253,"language":8391,"meta":32},[21693],"obs = [cart_x, pole_angle, cart_x_velocity, pole_angular_velocity]\n",[457,124255,124253],{"__ignoreMap":32},[23,124257,124259],{"id":124258},"action-是什么","action 是什么",[14,124261,124262],{},"本章只有一个 actuator：",[451,124264,124267],{"className":124265,"code":124266,"language":8391,"meta":32},[21693],"data.ctrl[0] = action\n",[457,124268,124266],{"__ignoreMap":32},[14,124270,124271],{},"这个 action 会通过 motor 作用在小车的 slide joint 上。action 为正，小车倾向于向 x 正方向运动；action 为负，小车倾向于向 x 负方向运动。",[23,124273,124275],{"id":124274},"reward-是什么","reward 是什么",[14,124277,124278],{},"奖励函数：",[451,124280,124282],{"className":46787,"code":124281,"language":46789,"meta":32,"style":32},"return float(1.0 - 0.1 * cart_x * cart_x - pole_angle * pole_angle)\n",[457,124283,124284],{"__ignoreMap":32},[460,124285,124286,124288,124291,124293,124295,124297,124300,124302,124305,124307,124309,124311,124314,124316],{"class":462,"line":463},[460,124287,33464],{"class":887},[460,124289,124290],{"class":900}," float",[460,124292,2174],{"class":466},[460,124294,116896],{"class":900},[460,124296,68531],{"class":887},[460,124298,124299],{"class":900}," 0.1",[460,124301,8325],{"class":887},[460,124303,124304],{"class":466}," cart_x ",[460,124306,8320],{"class":887},[460,124308,124304],{"class":466},[460,124310,17259],{"class":887},[460,124312,124313],{"class":466}," pole_angle ",[460,124315,8320],{"class":887},[460,124317,124318],{"class":466}," pole_angle)\n",[14,124320,120719],{},[103,124322,124323,124328,124331],{},[43,124324,124325,124326,44794],{},"基础奖励是 ",[457,124327,116896],{},[43,124329,124330],{},"小车离中心越远，扣分越多。",[43,124332,124333],{},"杆子角度越大，扣分越多。",[14,124335,124336],{},"这只是教学用 reward。真实任务还可能加入终止条件、角速度惩罚、动作惩罚等。",[18,124338,115746],{"id":115745},[451,124340,124342],{"className":46787,"code":124341,"language":46789,"meta":32,"style":32},"import mujoco\nimport numpy as np\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"cartpole\">\n  \u003Coption timestep=\"0.01\" gravity=\"0 0 -9.81\"\u002F>\n\n  \u003Cworldbody>\n    \u003Cgeom name=\"floor\" type=\"plane\" size=\"4 1 0.1\" rgba=\"0.8 0.8 0.8 1\"\u002F>\n\n    \u003Cbody name=\"cart\" pos=\"0 0 0.2\">\n      \u003Cjoint name=\"cart_x\" type=\"slide\" axis=\"1 0 0\" damping=\"0.05\"\u002F>\n      \u003Cgeom name=\"cart_geom\" type=\"box\" size=\"0.2 0.1 0.1\" mass=\"1\" rgba=\"0.1 0.3 1 1\"\u002F>\n\n      \u003Cbody name=\"pole\" pos=\"0 0 0.1\">\n        \u003Cjoint name=\"pole_hinge\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.01\"\u002F>\n        \u003Cgeom name=\"pole_geom\" type=\"capsule\" fromto=\"0 0 0 0 0 0.8\" size=\"0.03\" mass=\"0.2\" rgba=\"1 0.2 0.1 1\"\u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\n  \u003Cactuator>\n    \u003Cmotor name=\"cart_motor\" joint=\"cart_x\" gear=\"10\" ctrlrange=\"-1 1\" ctrllimited=\"true\"\u002F>\n  \u003C\u002Factuator>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\ndef get_observation(data: mujoco.MjData) -> np.ndarray:\n    return np.concatenate([data.qpos.copy(), data.qvel.copy()])\n\n\ndef compute_reward(obs: np.ndarray) -> float:\n    cart_x = obs[0]\n    pole_angle = obs[1]\n    return float(1.0 - 0.1 * cart_x * cart_x - pole_angle * pole_angle)\n\n\ndef main() -> None:\n    model = mujoco.MjModel.from_xml_string(XML)\n    data = mujoco.MjData(model)\n\n    data.qpos[1] = 0.1\n    mujoco.mj_forward(model, data)\n\n    total_reward = 0.0\n\n    for step in range(1000):\n        obs = get_observation(data)\n        pole_angle = obs[1]\n        pole_angular_velocity = obs[3]\n\n        action = 2.0 * pole_angle + 0.5 * pole_angular_velocity\n        action = np.clip(action, -1.0, 1.0)\n\n        data.ctrl[0] = action\n        mujoco.mj_step(model, data)\n\n        reward = compute_reward(get_observation(data))\n        total_reward += reward\n\n        if step % 100 == 0:\n            print(\"step:\", step, \"obs:\", np.round(obs, 3), \"action:\", round(float(action), 3))\n\n    print(\"total_reward:\", round(total_reward, 3))\n    print(\"final obs:\", np.round(get_observation(data), 3))\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,124343,124344,124350,124360,124364,124368,124376,124381,124385,124389,124393,124398,124402,124407,124412,124417,124421,124426,124431,124436,124440,124444,124448,124452,124456,124461,124465,124469,124473,124477,124481,124491,124498,124502,124506,124520,124534,124547,124577,124581,124585,124597,124609,124617,124621,124634,124638,124642,124651,124655,124671,124681,124694,124707,124711,124734,124752,124756,124768,124772,124776,124786,124796,124800,124816,124857,124861,124881,124897,124901,124905,124917],{"__ignoreMap":32},[460,124345,124346,124348],{"class":462,"line":463},[460,124347,46801],{"class":887},[460,124349,115794],{"class":466},[460,124351,124352,124354,124356,124358],{"class":462,"line":476},[460,124353,46801],{"class":887},[460,124355,47787],{"class":466},[460,124357,47790],{"class":887},[460,124359,47793],{"class":466},[460,124361,124362],{"class":462,"line":482},[460,124363,522],{"emptyLinePlaceholder":521},[460,124365,124366],{"class":462,"line":488},[460,124367,522],{"emptyLinePlaceholder":521},[460,124369,124370,124372,124374],{"class":462,"line":494},[460,124371,115807],{"class":900},[460,124373,2943],{"class":887},[460,124375,115812],{"class":1353},[460,124377,124378],{"class":462,"line":500},[460,124379,124380],{"class":1353},"\u003Cmujoco model=\"cartpole\">\n",[460,124382,124383],{"class":462,"line":506},[460,124384,115822],{"class":1353},[460,124386,124387],{"class":462,"line":512},[460,124388,522],{"emptyLinePlaceholder":521},[460,124390,124391],{"class":462,"line":518},[460,124392,115831],{"class":1353},[460,124394,124395],{"class":462,"line":525},[460,124396,124397],{"class":1353},"    \u003Cgeom name=\"floor\" type=\"plane\" size=\"4 1 0.1\" rgba=\"0.8 0.8 0.8 1\"\u002F>\n",[460,124399,124400],{"class":462,"line":531},[460,124401,522],{"emptyLinePlaceholder":521},[460,124403,124404],{"class":462,"line":537},[460,124405,124406],{"class":1353},"    \u003Cbody name=\"cart\" pos=\"0 0 0.2\">\n",[460,124408,124409],{"class":462,"line":543},[460,124410,124411],{"class":1353},"      \u003Cjoint name=\"cart_x\" type=\"slide\" axis=\"1 0 0\" damping=\"0.05\"\u002F>\n",[460,124413,124414],{"class":462,"line":549},[460,124415,124416],{"class":1353},"      \u003Cgeom name=\"cart_geom\" type=\"box\" size=\"0.2 0.1 0.1\" mass=\"1\" rgba=\"0.1 0.3 1 1\"\u002F>\n",[460,124418,124419],{"class":462,"line":555},[460,124420,522],{"emptyLinePlaceholder":521},[460,124422,124423],{"class":462,"line":560},[460,124424,124425],{"class":1353},"      \u003Cbody name=\"pole\" pos=\"0 0 0.1\">\n",[460,124427,124428],{"class":462,"line":566},[460,124429,124430],{"class":1353},"        \u003Cjoint name=\"pole_hinge\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.01\"\u002F>\n",[460,124432,124433],{"class":462,"line":572},[460,124434,124435],{"class":1353},"        \u003Cgeom name=\"pole_geom\" type=\"capsule\" fromto=\"0 0 0 0 0 0.8\" size=\"0.03\" mass=\"0.2\" rgba=\"1 0.2 0.1 1\"\u002F>\n",[460,124437,124438],{"class":462,"line":578},[460,124439,120931],{"class":1353},[460,124441,124442],{"class":462,"line":812},[460,124443,115860],{"class":1353},[460,124445,124446],{"class":462,"line":818},[460,124447,115865],{"class":1353},[460,124449,124450],{"class":462,"line":824},[460,124451,522],{"emptyLinePlaceholder":521},[460,124453,124454],{"class":462,"line":2074},[460,124455,120948],{"class":1353},[460,124457,124458],{"class":462,"line":2088},[460,124459,124460],{"class":1353},"    \u003Cmotor name=\"cart_motor\" joint=\"cart_x\" gear=\"10\" ctrlrange=\"-1 1\" ctrllimited=\"true\"\u002F>\n",[460,124462,124463],{"class":462,"line":2103},[460,124464,120958],{"class":1353},[460,124466,124467],{"class":462,"line":2122},[460,124468,115870],{"class":1353},[460,124470,124471],{"class":462,"line":2144},[460,124472,110191],{"class":1353},[460,124474,124475],{"class":462,"line":2158},[460,124476,522],{"emptyLinePlaceholder":521},[460,124478,124479],{"class":462,"line":2163},[460,124480,522],{"emptyLinePlaceholder":521},[460,124482,124483,124485,124488],{"class":462,"line":2168},[460,124484,48352],{"class":887},[460,124486,124487],{"class":929}," get_observation",[460,124489,124490],{"class":466},"(data: mujoco.MjData) -> np.ndarray:\n",[460,124492,124493,124495],{"class":462,"line":2183},[460,124494,20605],{"class":887},[460,124496,124497],{"class":466}," np.concatenate([data.qpos.copy(), data.qvel.copy()])\n",[460,124499,124500],{"class":462,"line":2194},[460,124501,522],{"emptyLinePlaceholder":521},[460,124503,124504],{"class":462,"line":2199},[460,124505,522],{"emptyLinePlaceholder":521},[460,124507,124508,124510,124513,124516,124518],{"class":462,"line":2204},[460,124509,48352],{"class":887},[460,124511,124512],{"class":929}," compute_reward",[460,124514,124515],{"class":466},"(obs: np.ndarray) -> ",[460,124517,16793],{"class":900},[460,124519,20257],{"class":466},[460,124521,124522,124525,124527,124530,124532],{"class":462,"line":2212},[460,124523,124524],{"class":466},"    cart_x ",[460,124526,894],{"class":887},[460,124528,124529],{"class":466}," obs[",[460,124531,936],{"class":900},[460,124533,13307],{"class":466},[460,124535,124536,124539,124541,124543,124545],{"class":462,"line":2257},[460,124537,124538],{"class":466},"    pole_angle ",[460,124540,894],{"class":887},[460,124542,124529],{"class":466},[460,124544,901],{"class":900},[460,124546,13307],{"class":466},[460,124548,124549,124551,124553,124555,124557,124559,124561,124563,124565,124567,124569,124571,124573,124575],{"class":462,"line":2285},[460,124550,20605],{"class":887},[460,124552,124290],{"class":900},[460,124554,2174],{"class":466},[460,124556,116896],{"class":900},[460,124558,68531],{"class":887},[460,124560,124299],{"class":900},[460,124562,8325],{"class":887},[460,124564,124304],{"class":466},[460,124566,8320],{"class":887},[460,124568,124304],{"class":466},[460,124570,17259],{"class":887},[460,124572,124313],{"class":466},[460,124574,8320],{"class":887},[460,124576,124318],{"class":466},[460,124578,124579],{"class":462,"line":2298},[460,124580,522],{"emptyLinePlaceholder":521},[460,124582,124583],{"class":462,"line":2303},[460,124584,522],{"emptyLinePlaceholder":521},[460,124586,124587,124589,124591,124593,124595],{"class":462,"line":2308},[460,124588,48352],{"class":887},[460,124590,18514],{"class":929},[460,124592,115891],{"class":466},[460,124594,110179],{"class":900},[460,124596,20257],{"class":466},[460,124598,124599,124601,124603,124605,124607],{"class":462,"line":2318},[460,124600,115900],{"class":466},[460,124602,894],{"class":887},[460,124604,115905],{"class":466},[460,124606,115807],{"class":900},[460,124608,3754],{"class":466},[460,124610,124611,124613,124615],{"class":462,"line":2333},[460,124612,115914],{"class":466},[460,124614,894],{"class":887},[460,124616,115919],{"class":466},[460,124618,124619],{"class":462,"line":2338},[460,124620,522],{"emptyLinePlaceholder":521},[460,124622,124623,124625,124627,124629,124631],{"class":462,"line":2343},[460,124624,119562],{"class":466},[460,124626,901],{"class":900},[460,124628,11884],{"class":466},[460,124630,894],{"class":887},[460,124632,124633],{"class":900}," 0.1\n",[460,124635,124636],{"class":462,"line":2353},[460,124637,119575],{"class":466},[460,124639,124640],{"class":462,"line":2368},[460,124641,522],{"emptyLinePlaceholder":521},[460,124643,124644,124647,124649],{"class":462,"line":2381},[460,124645,124646],{"class":466},"    total_reward ",[460,124648,894],{"class":887},[460,124650,119254],{"class":900},[460,124652,124653],{"class":462,"line":2394},[460,124654,522],{"emptyLinePlaceholder":521},[460,124656,124657,124659,124661,124663,124665,124667,124669],{"class":462,"line":2399},[460,124658,19722],{"class":887},[460,124660,48021],{"class":466},[460,124662,11713],{"class":887},[460,124664,48848],{"class":900},[460,124666,2174],{"class":466},[460,124668,11412],{"class":900},[460,124670,47194],{"class":466},[460,124672,124673,124676,124678],{"class":462,"line":2404},[460,124674,124675],{"class":466},"        obs ",[460,124677,894],{"class":887},[460,124679,124680],{"class":466}," get_observation(data)\n",[460,124682,124683,124686,124688,124690,124692],{"class":462,"line":2414},[460,124684,124685],{"class":466},"        pole_angle ",[460,124687,894],{"class":887},[460,124689,124529],{"class":466},[460,124691,901],{"class":900},[460,124693,13307],{"class":466},[460,124695,124696,124699,124701,124703,124705],{"class":462,"line":2428},[460,124697,124698],{"class":466},"        pole_angular_velocity ",[460,124700,894],{"class":887},[460,124702,124529],{"class":466},[460,124704,913],{"class":900},[460,124706,13307],{"class":466},[460,124708,124709],{"class":462,"line":2440},[460,124710,522],{"emptyLinePlaceholder":521},[460,124712,124713,124716,124718,124721,124723,124725,124727,124729,124731],{"class":462,"line":2445},[460,124714,124715],{"class":466},"        action ",[460,124717,894],{"class":887},[460,124719,124720],{"class":900}," 2.0",[460,124722,8325],{"class":887},[460,124724,124313],{"class":466},[460,124726,8495],{"class":887},[460,124728,78048],{"class":900},[460,124730,8325],{"class":887},[460,124732,124733],{"class":466}," pole_angular_velocity\n",[460,124735,124736,124738,124740,124742,124744,124746,124748,124750],{"class":462,"line":2450},[460,124737,124715],{"class":466},[460,124739,894],{"class":887},[460,124741,121940],{"class":466},[460,124743,17259],{"class":887},[460,124745,116896],{"class":900},[460,124747,904],{"class":466},[460,124749,116896],{"class":900},[460,124751,3754],{"class":466},[460,124753,124754],{"class":462,"line":2460},[460,124755,522],{"emptyLinePlaceholder":521},[460,124757,124758,124760,124762,124764,124766],{"class":462,"line":2473},[460,124759,121110],{"class":466},[460,124761,936],{"class":900},[460,124763,11884],{"class":466},[460,124765,894],{"class":887},[460,124767,121963],{"class":466},[460,124769,124770],{"class":462,"line":2487},[460,124771,116009],{"class":466},[460,124773,124774],{"class":462,"line":2492},[460,124775,522],{"emptyLinePlaceholder":521},[460,124777,124778,124781,124783],{"class":462,"line":2497},[460,124779,124780],{"class":466},"        reward ",[460,124782,894],{"class":887},[460,124784,124785],{"class":466}," compute_reward(get_observation(data))\n",[460,124787,124788,124791,124793],{"class":462,"line":2505},[460,124789,124790],{"class":466},"        total_reward ",[460,124792,3467],{"class":887},[460,124794,124795],{"class":466}," reward\n",[460,124797,124798],{"class":462,"line":2516},[460,124799,522],{"emptyLinePlaceholder":521},[460,124801,124802,124804,124806,124808,124810,124812,124814],{"class":462,"line":2529},[460,124803,3702],{"class":887},[460,124805,48021],{"class":466},[460,124807,2328],{"class":887},[460,124809,3751],{"class":900},[460,124811,116052],{"class":887},[460,124813,2224],{"class":900},[460,124815,20257],{"class":466},[460,124817,124818,124820,124822,124825,124828,124831,124834,124836,124839,124842,124844,124846,124848,124850,124853,124855],{"class":462,"line":2542},[460,124819,50955],{"class":900},[460,124821,2174],{"class":466},[460,124823,124824],{"class":1353},"\"step:\"",[460,124826,124827],{"class":466},", step, ",[460,124829,124830],{"class":1353},"\"obs:\"",[460,124832,124833],{"class":466},", np.round(obs, ",[460,124835,913],{"class":900},[460,124837,124838],{"class":466},"), ",[460,124840,124841],{"class":1353},"\"action:\"",[460,124843,904],{"class":466},[460,124845,48423],{"class":900},[460,124847,2174],{"class":466},[460,124849,16793],{"class":900},[460,124851,124852],{"class":466},"(action), ",[460,124854,913],{"class":900},[460,124856,6311],{"class":466},[460,124858,124859],{"class":462,"line":2559},[460,124860,522],{"emptyLinePlaceholder":521},[460,124862,124863,124865,124867,124870,124872,124874,124877,124879],{"class":462,"line":2564},[460,124864,47706],{"class":900},[460,124866,2174],{"class":466},[460,124868,124869],{"class":1353},"\"total_reward:\"",[460,124871,904],{"class":466},[460,124873,48423],{"class":900},[460,124875,124876],{"class":466},"(total_reward, ",[460,124878,913],{"class":900},[460,124880,6311],{"class":466},[460,124882,124883,124885,124887,124890,124893,124895],{"class":462,"line":2569},[460,124884,47706],{"class":900},[460,124886,2174],{"class":466},[460,124888,124889],{"class":1353},"\"final obs:\"",[460,124891,124892],{"class":466},", np.round(get_observation(data), ",[460,124894,913],{"class":900},[460,124896,6311],{"class":466},[460,124898,124899],{"class":462,"line":2579},[460,124900,522],{"emptyLinePlaceholder":521},[460,124902,124903],{"class":462,"line":2597},[460,124904,522],{"emptyLinePlaceholder":521},[460,124906,124907,124909,124911,124913,124915],{"class":462,"line":2610},[460,124908,18100],{"class":887},[460,124910,47627],{"class":900},[460,124912,116052],{"class":887},[460,124914,116055],{"class":1353},[460,124916,20257],{"class":466},[460,124918,124919],{"class":462,"line":2621},[460,124920,116062],{"class":466},[14,124922,118063],{},[451,124924,124926],{"className":40235,"code":124925,"language":40237,"meta":32,"style":32},"touch ch6_cartpole.py\n",[457,124927,124928],{"__ignoreMap":32},[460,124929,124930,124932],{"class":462,"line":463},[460,124931,115776],{"class":929},[460,124933,124934],{"class":1353}," ch6_cartpole.py\n",[14,124936,124937],{},"运行：",[451,124939,124941],{"className":40235,"code":124940,"language":40237,"meta":32,"style":32},"python ch6_cartpole.py\n",[457,124942,124943],{"__ignoreMap":32},[460,124944,124945,124947],{"class":462,"line":463},[460,124946,46789],{"class":929},[460,124948,124934],{"class":1353},[23,124950,116065],{"id":116065},[14,124952,124953],{},"构造观测：",[451,124955,124957],{"className":46787,"code":124956,"language":46789,"meta":32,"style":32},"def get_observation(data: mujoco.MjData) -> np.ndarray:\n    return np.concatenate([data.qpos.copy(), data.qvel.copy()])\n",[457,124958,124959,124967],{"__ignoreMap":32},[460,124960,124961,124963,124965],{"class":462,"line":463},[460,124962,48352],{"class":887},[460,124964,124487],{"class":929},[460,124966,124490],{"class":466},[460,124968,124969,124971],{"class":462,"line":476},[460,124970,20605],{"class":887},[460,124972,124497],{"class":466},[14,124974,124975,124978,124979,124981,124982,124984],{},[457,124976,124977],{},"np.concatenate"," 把位置数组和速度数组拼成一个更长的数组。这里 ",[457,124980,118523],{}," 2 维，",[457,124983,118853],{}," 2 维，所以 obs 是 4 维。",[14,124986,124987],{},"设置初始角度：",[451,124989,124991],{"className":46787,"code":124990,"language":46789,"meta":32,"style":32},"data.qpos[1] = 0.1\nmujoco.mj_forward(model, data)\n",[457,124992,124993,125005],{"__ignoreMap":32},[460,124994,124995,124997,124999,125001,125003],{"class":462,"line":463},[460,124996,119192],{"class":466},[460,124998,901],{"class":900},[460,125000,11884],{"class":466},[460,125002,894],{"class":887},[460,125004,124633],{"class":900},[460,125006,125007],{"class":462,"line":476},[460,125008,119036],{"class":466},[14,125010,125011],{},"这让杆子一开始有一点倾斜。如果完全竖直且没有扰动，系统可能太“安静”，不利于观察控制效果。",[14,125013,125014],{},"简单反馈控制：",[451,125016,125018],{"className":46787,"code":125017,"language":46789,"meta":32,"style":32},"action = 2.0 * pole_angle + 0.5 * pole_angular_velocity\naction = np.clip(action, -1.0, 1.0)\n",[457,125019,125020,125040],{"__ignoreMap":32},[460,125021,125022,125024,125026,125028,125030,125032,125034,125036,125038],{"class":462,"line":463},[460,125023,121935],{"class":466},[460,125025,894],{"class":887},[460,125027,124720],{"class":900},[460,125029,8325],{"class":887},[460,125031,124313],{"class":466},[460,125033,8495],{"class":887},[460,125035,78048],{"class":900},[460,125037,8325],{"class":887},[460,125039,124733],{"class":466},[460,125041,125042,125044,125046,125048,125050,125052,125054,125056],{"class":462,"line":476},[460,125043,121935],{"class":466},[460,125045,894],{"class":887},[460,125047,121940],{"class":466},[460,125049,17259],{"class":887},[460,125051,116896],{"class":900},[460,125053,904],{"class":466},[460,125055,116896],{"class":900},[460,125057,3754],{"class":466},[14,125059,125060],{},"这不是严格推导出来的最优控制，只是一个教学例子：根据杆子的角度和角速度，决定给小车施加多大力。",[14,125062,125063],{},"限制动作：",[451,125065,125067],{"className":46787,"code":125066,"language":46789,"meta":32,"style":32},"np.clip(action, -1.0, 1.0)\n",[457,125068,125069],{"__ignoreMap":32},[460,125070,125071,125074,125076,125078,125080,125082],{"class":462,"line":463},[460,125072,125073],{"class":466},"np.clip(action, ",[460,125075,17259],{"class":887},[460,125077,116896],{"class":900},[460,125079,904],{"class":466},[460,125081,116896],{"class":900},[460,125083,3754],{"class":466},[14,125085,125086,125087,125090],{},"因为 XML 里 ",[457,125088,125089],{},"ctrlrange=\"-1 1\"","，所以 Python 里也把 action 限制在这个范围内。",[23,125092,116201],{"id":116201},[451,125094,125095],{"className":46787,"code":124956,"language":46789,"meta":32,"style":32},[457,125096,125097,125105],{"__ignoreMap":32},[460,125098,125099,125101,125103],{"class":462,"line":463},[460,125100,48352],{"class":887},[460,125102,124487],{"class":929},[460,125104,124490],{"class":466},[460,125106,125107,125109],{"class":462,"line":476},[460,125108,20605],{"class":887},[460,125110,124497],{"class":466},[14,125112,125113,125114,125117,125118,125121,125122,125125],{},"这段定义了一个函数，用来获取当前观测。",[457,125115,125116],{},"data.qpos.copy()"," 是位置数组副本，",[457,125119,125120],{},"data.qvel.copy()"," 是速度数组副本。",[457,125123,125124],{},"np.concatenate(...)"," 把两个数组首尾拼接起来。",[14,125127,125128],{},"在本章模型里：",[451,125130,125133],{"className":125131,"code":125132,"language":8391,"meta":32},[21693],"data.qpos = [小车位置, 杆子角度]\ndata.qvel = [小车速度, 杆子角速度]\n",[457,125134,125132],{"__ignoreMap":32},[14,125136,125137],{},"所以返回的 obs 是：",[451,125139,125142],{"className":125140,"code":125141,"language":8391,"meta":32},[21693],"[小车位置, 杆子角度, 小车速度, 杆子角速度]\n",[457,125143,125141],{"__ignoreMap":32},[451,125145,125147],{"className":46787,"code":125146,"language":46789,"meta":32,"style":32},"def compute_reward(obs: np.ndarray) -> float:\n",[457,125148,125149],{"__ignoreMap":32},[460,125150,125151,125153,125155,125157,125159],{"class":462,"line":463},[460,125152,48352],{"class":887},[460,125154,124512],{"class":929},[460,125156,124515],{"class":466},[460,125158,16793],{"class":900},[460,125160,20257],{"class":466},[14,125162,125163,125164,125167],{},"这行定义奖励函数。输入是观测 ",[457,125165,125166],{},"obs","，输出是一个浮点数奖励。",[451,125169,125171],{"className":46787,"code":125170,"language":46789,"meta":32,"style":32},"cart_x = obs[0]\npole_angle = obs[1]\n",[457,125172,125173,125186],{"__ignoreMap":32},[460,125174,125175,125178,125180,125182,125184],{"class":462,"line":463},[460,125176,125177],{"class":466},"cart_x ",[460,125179,894],{"class":887},[460,125181,124529],{"class":466},[460,125183,936],{"class":900},[460,125185,13307],{"class":466},[460,125187,125188,125191,125193,125195,125197],{"class":462,"line":476},[460,125189,125190],{"class":466},"pole_angle ",[460,125192,894],{"class":887},[460,125194,124529],{"class":466},[460,125196,901],{"class":900},[460,125198,13307],{"class":466},[14,125200,125201,125202,125205,125206,125209],{},"数组索引从 0 开始。",[457,125203,125204],{},"obs[0]"," 是第一个元素，也就是小车位置。",[457,125207,125208],{},"obs[1]"," 是第二个元素，也就是杆子角度。",[451,125211,125212],{"className":46787,"code":124281,"language":46789,"meta":32,"style":32},[457,125213,125214],{"__ignoreMap":32},[460,125215,125216,125218,125220,125222,125224,125226,125228,125230,125232,125234,125236,125238,125240,125242],{"class":462,"line":463},[460,125217,33464],{"class":887},[460,125219,124290],{"class":900},[460,125221,2174],{"class":466},[460,125223,116896],{"class":900},[460,125225,68531],{"class":887},[460,125227,124299],{"class":900},[460,125229,8325],{"class":887},[460,125231,124304],{"class":466},[460,125233,8320],{"class":887},[460,125235,124304],{"class":466},[460,125237,17259],{"class":887},[460,125239,124313],{"class":466},[460,125241,8320],{"class":887},[460,125243,124318],{"class":466},[14,125245,125246,125247,125250,125251,125254],{},"这行计算奖励。",[457,125248,125249],{},"cart_x * cart_x"," 是小车位置的平方，",[457,125252,125253],{},"pole_angle * pole_angle"," 是杆子角度的平方。平方的特点是无论正负都会变成正数，所以偏离中心和角度偏离都会扣分。",[451,125256,125258],{"className":46787,"code":125257,"language":46789,"meta":32,"style":32},"data.qpos[1] = 0.1\n",[457,125259,125260],{"__ignoreMap":32},[460,125261,125262,125264,125266,125268,125270],{"class":462,"line":463},[460,125263,119192],{"class":466},[460,125265,901],{"class":900},[460,125267,11884],{"class":466},[460,125269,894],{"class":887},[460,125271,124633],{"class":900},[14,125273,125274,125275,125277,125278,125280],{},"手动设置杆子的初始角度。因为 ",[457,125276,119949],{}," 是小车位置，",[457,125279,119952],{}," 是杆子角度，所以这里改的是杆子。",[451,125282,125283],{"className":46787,"code":119036,"language":46789,"meta":32,"style":32},[457,125284,125285],{"__ignoreMap":32},[460,125286,125287],{"class":462,"line":463},[460,125288,119036],{"class":466},[14,125290,119995,125291,125293],{},[457,125292,118523],{}," 后，刷新 MuJoCo 内部派生状态。否则有些坐标、碰撞或可视化信息可能还停留在旧状态。",[451,125295,125297],{"className":46787,"code":125296,"language":46789,"meta":32,"style":32},"total_reward = 0.0\n",[457,125298,125299],{"__ignoreMap":32},[460,125300,125301,125304,125306],{"class":462,"line":463},[460,125302,125303],{"class":466},"total_reward ",[460,125305,894],{"class":887},[460,125307,119254],{"class":900},[14,125309,125310],{},"创建一个变量，用来累计整个 episode 的奖励。初始值是 0。",[451,125312,125314],{"className":46787,"code":125313,"language":46789,"meta":32,"style":32},"for step in range(1000):\n",[457,125315,125316],{"__ignoreMap":32},[460,125317,125318,125320,125322,125324,125326,125328,125330],{"class":462,"line":463},[460,125319,19547],{"class":887},[460,125321,48021],{"class":466},[460,125323,11713],{"class":887},[460,125325,48848],{"class":900},[460,125327,2174],{"class":466},[460,125329,11412],{"class":900},[460,125331,47194],{"class":466},[14,125333,125334,125335,125337],{},"循环 1000 步。",[457,125336,121627],{}," 是当前步数，从 0 到 999。",[451,125339,125341],{"className":46787,"code":125340,"language":46789,"meta":32,"style":32},"obs = get_observation(data)\n",[457,125342,125343],{"__ignoreMap":32},[460,125344,125345,125348,125350],{"class":462,"line":463},[460,125346,125347],{"class":466},"obs ",[460,125349,894],{"class":887},[460,125351,124680],{"class":466},[14,125353,125354,125355,44794],{},"读取当前状态，保存到 ",[457,125356,125166],{},[451,125358,125360],{"className":46787,"code":125359,"language":46789,"meta":32,"style":32},"pole_angle = obs[1]\npole_angular_velocity = obs[3]\n",[457,125361,125362,125374],{"__ignoreMap":32},[460,125363,125364,125366,125368,125370,125372],{"class":462,"line":463},[460,125365,125190],{"class":466},[460,125367,894],{"class":887},[460,125369,124529],{"class":466},[460,125371,901],{"class":900},[460,125373,13307],{"class":466},[460,125375,125376,125379,125381,125383,125385],{"class":462,"line":476},[460,125377,125378],{"class":466},"pole_angular_velocity ",[460,125380,894],{"class":887},[460,125382,124529],{"class":466},[460,125384,913],{"class":900},[460,125386,13307],{"class":466},[14,125388,125389,125390,125393,125394,44794],{},"取出杆子角度和杆子角速度。为什么角速度是 ",[457,125391,125392],{},"obs[3]","？因为 obs 的顺序是 ",[457,125395,125396],{},"[cart_x, pole_angle, cart_x_velocity, pole_angular_velocity]",[451,125398,125400],{"className":46787,"code":125399,"language":46789,"meta":32,"style":32},"action = 2.0 * pole_angle + 0.5 * pole_angular_velocity\n",[457,125401,125402],{"__ignoreMap":32},[460,125403,125404,125406,125408,125410,125412,125414,125416,125418,125420],{"class":462,"line":463},[460,125405,121935],{"class":466},[460,125407,894],{"class":887},[460,125409,124720],{"class":900},[460,125411,8325],{"class":887},[460,125413,124313],{"class":466},[460,125415,8495],{"class":887},[460,125417,78048],{"class":900},[460,125419,8325],{"class":887},[460,125421,124733],{"class":466},[14,125423,125424,125425,115511,125427,125429],{},"这是一个简单反馈控制器。它根据杆子当前角度和角速度算出动作。",[457,125426,119753],{},[457,125428,51634],{}," 是人为设置的系数，不是固定公式。",[451,125431,125433],{"className":46787,"code":125432,"language":46789,"meta":32,"style":32},"action = np.clip(action, -1.0, 1.0)\n",[457,125434,125435],{"__ignoreMap":32},[460,125436,125437,125439,125441,125443,125445,125447,125449,125451],{"class":462,"line":463},[460,125438,121935],{"class":466},[460,125440,894],{"class":887},[460,125442,121940],{"class":466},[460,125444,17259],{"class":887},[460,125446,116896],{"class":900},[460,125448,904],{"class":466},[460,125450,116896],{"class":900},[460,125452,3754],{"class":466},[14,125454,125455],{},"把 action 限制在 -1 到 1 之间。如果 action 算出来是 3，会变成 1；如果是 -4，会变成 -1。",[451,125457,125458],{"className":46787,"code":124266,"language":46789,"meta":32,"style":32},[457,125459,125460],{"__ignoreMap":32},[460,125461,125462,125464,125466,125468,125470],{"class":462,"line":463},[460,125463,120364],{"class":466},[460,125465,936],{"class":900},[460,125467,11884],{"class":466},[460,125469,894],{"class":887},[460,125471,121963],{"class":466},[14,125473,125474],{},"把动作写入第 0 个 actuator，也就是小车电机。真正的“控制 MuJoCo”就是通过这行发生的。",[451,125476,125477],{"className":46787,"code":118998,"language":46789,"meta":32,"style":32},[457,125478,125479],{"__ignoreMap":32},[460,125480,125481],{"class":462,"line":463},[460,125482,118998],{"class":466},[14,125484,125485,125486,125488],{},"让仿真前进一步。MuJoCo 会根据刚刚写入的 ",[457,125487,120619],{}," 计算小车和杆子的下一刻状态。",[451,125490,125492],{"className":46787,"code":125491,"language":46789,"meta":32,"style":32},"reward = compute_reward(get_observation(data))\ntotal_reward += reward\n",[457,125493,125494,125503],{"__ignoreMap":32},[460,125495,125496,125499,125501],{"class":462,"line":463},[460,125497,125498],{"class":466},"reward ",[460,125500,894],{"class":887},[460,125502,124785],{"class":466},[460,125504,125505,125507,125509],{"class":462,"line":476},[460,125506,125303],{"class":466},[460,125508,3467],{"class":887},[460,125510,124795],{"class":466},[14,125512,125513,125514,125516,125517,125520,125521,44794],{},"先根据新状态计算奖励，再把它加到累计奖励中。",[457,125515,3467],{}," 是简写，",[457,125518,125519],{},"total_reward += reward"," 等价于 ",[457,125522,125523],{},"total_reward = total_reward + reward",[451,125525,125527],{"className":46787,"code":125526,"language":46789,"meta":32,"style":32},"if step % 100 == 0:\n",[457,125528,125529],{"__ignoreMap":32},[460,125530,125531,125533,125535,125537,125539,125541,125543],{"class":462,"line":463},[460,125532,18100],{"class":887},[460,125534,48021],{"class":466},[460,125536,2328],{"class":887},[460,125538,3751],{"class":900},[460,125540,116052],{"class":887},[460,125542,2224],{"class":900},[460,125544,20257],{"class":466},[14,125546,125547,125549,125550,125553],{},[457,125548,2328],{}," 是取余数。",[457,125551,125552],{},"step % 100 == 0"," 表示每 100 步打印一次，比如第 0、100、200 步。",[451,125555,125557],{"className":46787,"code":125556,"language":46789,"meta":32,"style":32},"print(\"step:\", step, \"obs:\", np.round(obs, 3), \"action:\", round(float(action), 3))\n",[457,125558,125559],{"__ignoreMap":32},[460,125560,125561,125563,125565,125567,125569,125571,125573,125575,125577,125579,125581,125583,125585,125587,125589,125591],{"class":462,"line":463},[460,125562,46824],{"class":900},[460,125564,2174],{"class":466},[460,125566,124824],{"class":1353},[460,125568,124827],{"class":466},[460,125570,124830],{"class":1353},[460,125572,124833],{"class":466},[460,125574,913],{"class":900},[460,125576,124838],{"class":466},[460,125578,124841],{"class":1353},[460,125580,904],{"class":466},[460,125582,48423],{"class":900},[460,125584,2174],{"class":466},[460,125586,16793],{"class":900},[460,125588,124852],{"class":466},[460,125590,913],{"class":900},[460,125592,6311],{"class":466},[14,125594,125595,125596,125599,125600,125603],{},"打印当前步数、观测和动作。",[457,125597,125598],{},"np.round(obs, 3)"," 表示 obs 保留 3 位小数。",[457,125601,125602],{},"round(float(action), 3)"," 表示 action 保留 3 位小数。",[18,125605,116809],{"id":116808},[14,125607,125608],{},"观测向量:",[451,125610,125613],{"className":125611,"code":125612,"language":8391,"meta":32},[21693],"[cart_x, pole_angle, cart_x_velocity, pole_angular_velocity]\n",[457,125614,125612],{"__ignoreMap":32},[14,125616,125617],{},"控制器是教学用的简单线性反馈，不保证最优。",[14,125619,125620],{},"每隔 100 步会打印一次：",[451,125622,125625],{"className":125623,"code":125624,"language":8391,"meta":32},[21693],"step: 当前步数\nobs: 当前观测\naction: 当前控制输入\n",[457,125626,125624],{"__ignoreMap":32},[14,125628,125629],{},"重点观察：",[103,125631,125632,125638,125643],{},[43,125633,125634,125637],{},[457,125635,125636],{},"pole_angle"," 是否越来越大。",[43,125639,125640,125642],{},[457,125641,124219],{}," 是否跑得太远。",[43,125644,125645,125646,6271,125648,44794],{},"action 是否经常被 clip 到 ",[457,125647,118408],{},[457,125649,901],{},[14,125651,125652],{},"如果 action 长期贴着边界，说明控制器可能太激进，或者 actuator 力不够。",[18,125654,116841],{"id":116840},[103,125656,125657,125663,125666,125672,125682,125688,125691],{},[43,125658,125659,125660,44794],{},"把初始角度改为 ",[457,125661,125662],{},"data.qpos[1] = 0.3",[43,125664,125665],{},"重新运行，观察控制是否变差。",[43,125667,125668,125669,125671],{},"把 actuator ",[457,125670,121560],{}," 改小。",[43,125673,125674,125675,125678,125679,44794],{},"打印 ",[457,125676,125677],{},"model.nq, model.nv, model.nu","，应为 ",[457,125680,125681],{},"2 2 1",[43,125683,125684,125685,125687],{},"把 reward 里的 ",[457,125686,125253],{}," 系数改大，观察总奖励变化。",[43,125689,125690],{},"把控制器改成反号，观察杆子是否更容易倒。",[43,125692,125693],{},"用第 5 章 viewer 把这个 XML 放进去，可视化看小车和杆子的运动。",[18,125695,116946],{"id":116945},[23,125697,125698],{"id":125698},"杆子方向和预期不一致",[14,125700,116889,125701,125703,125704,125706],{},[457,125702,120732],{}," 和 capsule 的 ",[457,125705,117669],{},"，必要时用 viewer 可视化确认。",[23,125708,125709],{"id":125709},"控制器越控越倒",[14,125711,125712],{},"说明反馈符号可能反了，尝试:",[451,125714,125716],{"className":46787,"code":125715,"language":46789,"meta":32,"style":32},"action = -2.0 * pole_angle - 0.5 * pole_angular_velocity\n",[457,125717,125718],{"__ignoreMap":32},[460,125719,125720,125722,125724,125726,125728,125730,125732,125734,125736,125738],{"class":462,"line":463},[460,125721,121935],{"class":466},[460,125723,894],{"class":887},[460,125725,68531],{"class":887},[460,125727,119753],{"class":900},[460,125729,8325],{"class":887},[460,125731,124313],{"class":466},[460,125733,17259],{"class":887},[460,125735,78048],{"class":900},[460,125737,8325],{"class":887},[460,125739,124733],{"class":466},[23,125741,125742],{"id":125742},"小车飞走",[14,125744,125745,125746,125748,125749,125752],{},"降低 ",[457,125747,121560],{}," 或缩小 ",[457,125750,125751],{},"action"," 的 clip 范围。",[23,125754,125756,125758],{"id":125755},"obs3-为什么是杆子角速度",[457,125757,125392],{}," 为什么是杆子角速度",[14,125760,125761],{},"因为这个模型里：",[451,125763,125766],{"className":125764,"code":125765,"language":8391,"meta":32},[21693],"qpos = [cart_x, pole_angle]\nqvel = [cart_x_velocity, pole_angular_velocity]\nobs = qpos + qvel\n",[457,125767,125765],{"__ignoreMap":32},[14,125769,124240],{},[451,125771,125774],{"className":125772,"code":125773,"language":8391,"meta":32},[21693],"obs[0] = cart_x\nobs[1] = pole_angle\nobs[2] = cart_x_velocity\nobs[3] = pole_angular_velocity\n",[457,125775,125773],{"__ignoreMap":32},[23,125777,125779],{"id":125778},"reward-变成负数是否错误","reward 变成负数是否错误",[14,125781,125782],{},"不是。reward 可以是负数。它只是一个分数，强化学习算法关心的是“长期总奖励尽量大”。如果杆子角度很大或小车离中心很远，reward 变负是合理的。",[18,125784,117100],{"id":117099},[14,125786,125787],{},"一个控制任务通常包含：",[103,125789,125790,125793,125801,125806,125809],{},[43,125791,125792],{},"模型：Cartpole 的 body、joint、actuator。",[43,125794,125795,125796,16957,125798,125800],{},"观测：从 ",[457,125797,118523],{},[457,125799,118853],{}," 里取状态。",[43,125802,125803,125804,44794],{},"动作：写入 ",[457,125805,115569],{},[43,125807,125808],{},"奖励：根据任务目标打分。",[43,125810,125811],{},"循环：obs -> action -> step -> reward。",[14,125813,125814],{},"这就是后面 Gymnasium 环境的基本骨架。",[1944,125816,118779],{},{"title":32,"searchDepth":476,"depth":476,"links":125818},[125819,125820,125821,125826,125830,125831,125832,125840],{"id":115139,"depth":476,"text":115140},{"id":115262,"depth":476,"text":115263},{"id":115537,"depth":476,"text":115538,"children":125822},[125823,125824,125825],{"id":124193,"depth":482,"text":124194},{"id":124258,"depth":482,"text":124259},{"id":124274,"depth":482,"text":124275},{"id":115745,"depth":476,"text":115746,"children":125827},[125828,125829],{"id":116065,"depth":482,"text":116065},{"id":116201,"depth":482,"text":116201},{"id":116808,"depth":476,"text":116809},{"id":116840,"depth":476,"text":116841},{"id":116945,"depth":476,"text":116946,"children":125833},[125834,125835,125836,125837,125839],{"id":125698,"depth":482,"text":125698},{"id":125709,"depth":482,"text":125709},{"id":125742,"depth":482,"text":125742},{"id":125755,"depth":482,"text":125838},"obs[3] 为什么是杆子角速度",{"id":125778,"depth":482,"text":125779},{"id":117099,"depth":476,"text":117100},{},"\u002Fwiki\u002F2025-05-17-mujoco\u002Fch6-cartpole",{"title":123929,"description":32},"wiki\u002F2025-05-17-mujoco学习\u002Fch6-Cartpole控制任务","8dC1kTOiSwNp3zaPqtqpgrKIv_o7u33VnKDYsswth_E",{"id":125847,"title":125848,"body":125849,"description":32,"extension":16683,"meta":127863,"navigation":521,"path":127864,"seo":127865,"stem":127866,"__hash__":127867},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Fch7-Reacher控制任务.md","7.控制任务：Reacher 机械臂到达目标",{"type":7,"value":125850,"toc":127839},[125851,125854,125856,125859,125861,125878,125881,125884,125890,125893,125895,125897,125921,125923,125937,125939,125980,125982,126000,126002,126005,126011,126014,126042,126046,126052,126077,126080,126111,126118,126121,126124,126130,126133,126139,126142,126148,126152,126155,126180,126183,126185,126945,126947,126959,126961,126972,126974,126977,126994,126997,126999,127010,127013,127015,127061,127064,127077,127080,127162,127165,127167,127183,127193,127206,127209,127248,127258,127269,127279,127292,127295,127324,127327,127337,127340,127346,127363,127374,127376,127382,127399,127410,127431,127434,127446,127449,127470,127473,127481,127489,127506,127509,127578,127585,127593,127596,127609,127616,127618,127621,127627,127630,127633,127639,127645,127647,127687,127689,127695,127704,127707,127709,127729,127732,127735,127741,127745,127747,127774,127777,127780,127807,127813,127816,127819,127821,127824,127827,127833,127836],[10,125852,125848],{"id":125853},"_7控制任务reacher-机械臂到达目标",[18,125855,115140],{"id":115139},[14,125857,125858],{},"本章搭建一个二维两关节 reacher 任务。",[14,125860,118824],{},[103,125862,125863,125866,125869,125872,125875],{},[43,125864,125865],{},"两个 hinge joint",[43,125867,125868],{},"两个 motor actuator",[43,125870,125871],{},"site 作为末端点和目标点",[43,125873,125874],{},"根据末端和目标距离设计 reward",[43,125876,125877],{},"构造机械臂任务的基本形式",[14,125879,125880],{},"这是后续机械臂模仿学习、VLA 任务的基础。",[14,125882,125883],{},"Reacher 任务可以理解为：",[451,125885,125888],{"className":125886,"code":125887,"language":8391,"meta":32},[21693],"一条两段机械臂\n末端有一个蓝色 tip\n空间里有一个红色 target\n控制两个关节转动\n让 tip 靠近 target\n",[457,125889,125887],{"__ignoreMap":32},[14,125891,125892],{},"相比 Cartpole，Reacher 更接近机械臂任务，因为它开始关注“末端位置”和“目标位置”。",[18,125894,115263],{"id":115262},[14,125896,115266],{},[451,125898,125899],{"className":40235,"code":118881,"language":40237,"meta":32,"style":32},[457,125900,125901],{"__ignoreMap":32},[460,125902,125903,125905,125907,125909,125911,125913,125915,125917,125919],{"class":462,"line":463},[460,125904,40989],{"class":929},[460,125906,42726],{"class":1353},[460,125908,40247],{"class":1353},[460,125910,42811],{"class":900},[460,125912,118896],{"class":1353},[460,125914,115291],{"class":1353},[460,125916,116994],{"class":1353},[460,125918,115307],{"class":1353},[460,125920,118905],{"class":1353},[14,125922,117312],{},[451,125924,125925],{"className":40235,"code":115412,"language":40237,"meta":32,"style":32},[457,125926,125927],{"__ignoreMap":32},[460,125928,125929,125931,125933,125935],{"class":462,"line":463},[460,125930,40244],{"class":929},[460,125932,40247],{"class":1353},[460,125934,115423],{"class":1353},[460,125936,115426],{"class":1353},[14,125938,117329],{},[451,125940,125942],{"className":40235,"code":125941,"language":40237,"meta":32,"style":32},"conda create -n mujoco-reacher python=3.10 -y\nconda activate mujoco-reacher\npip install \"mujoco>=2.3\" numpy\n",[457,125943,125944,125961,125970],{"__ignoreMap":32},[460,125945,125946,125948,125950,125952,125955,125957,125959],{"class":462,"line":463},[460,125947,46739],{"class":929},[460,125949,45585],{"class":1353},[460,125951,41528],{"class":900},[460,125953,125954],{"class":1353}," mujoco-reacher",[460,125956,115468],{"class":1353},[460,125958,115471],{"class":900},[460,125960,115474],{"class":900},[460,125962,125963,125965,125967],{"class":462,"line":476},[460,125964,46739],{"class":929},[460,125966,115481],{"class":1353},[460,125968,125969],{"class":1353}," mujoco-reacher\n",[460,125971,125972,125974,125976,125978],{"class":462,"line":482},[460,125973,40244],{"class":929},[460,125975,40247],{"class":1353},[460,125977,115423],{"class":1353},[460,125979,115426],{"class":1353},[14,125981,115497],{},[103,125983,125984,125987,125990],{},[43,125985,125986],{},"本章使用低维状态，不使用图像输入。",[43,125988,125989],{},"机械臂是教学模型，不是 Franka、UR5 等真实机器人模型。",[43,125991,125992,125993,16957,125995,16957,125997,125999],{},"如果后续使用 MuJoCo Menagerie，模型结构会更复杂，但读取 ",[457,125994,118523],{},[457,125996,118853],{},[457,125998,118173],{}," 的方法一致。",[18,126001,115538],{"id":115537},[14,126003,126004],{},"Reacher 任务核心:",[451,126006,126009],{"className":126007,"code":126008,"language":8391,"meta":32},[21693],"观测：关节角、关节速度、末端位置、目标位置\n动作：两个关节的 motor 输入\n奖励：末端到目标距离越小越好\n",[457,126010,126008],{"__ignoreMap":32},[14,126012,126013],{},"读取 site 世界坐标:",[451,126015,126017],{"className":46787,"code":126016,"language":46789,"meta":32,"style":32},"site_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SITE, \"tip\")\ntip_pos = data.site_xpos[site_id]\n",[457,126018,126019,126032],{"__ignoreMap":32},[460,126020,126021,126023,126025,126027,126030],{"class":462,"line":463},[460,126022,118127],{"class":466},[460,126024,894],{"class":887},[460,126026,117898],{"class":466},[460,126028,126029],{"class":1353},"\"tip\"",[460,126031,3754],{"class":466},[460,126033,126034,126037,126039],{"class":462,"line":476},[460,126035,126036],{"class":466},"tip_pos ",[460,126038,894],{"class":887},[460,126040,126041],{"class":466}," data.site_xpos[site_id]\n",[23,126043,126045],{"id":126044},"为什么用-site-表示-tip-和-target","为什么用 site 表示 tip 和 target",[14,126047,126048,126049,126051],{},"机械臂控制里经常关心“末端执行器在哪里”。如果只看关节角 ",[457,126050,118523],{},"，你还要自己做正运动学计算。MuJoCo 已经帮你算好了 site 的世界坐标，所以可以直接读：",[451,126053,126055],{"className":46787,"code":126054,"language":46789,"meta":32,"style":32},"tip = data.site_xpos[tip_site_id]\ntarget = data.site_xpos[target_site_id]\n",[457,126056,126057,126067],{"__ignoreMap":32},[460,126058,126059,126062,126064],{"class":462,"line":463},[460,126060,126061],{"class":466},"tip ",[460,126063,894],{"class":887},[460,126065,126066],{"class":466}," data.site_xpos[tip_site_id]\n",[460,126068,126069,126072,126074],{"class":462,"line":476},[460,126070,126071],{"class":466},"target ",[460,126073,894],{"class":887},[460,126075,126076],{"class":466}," data.site_xpos[target_site_id]\n",[14,126078,126079],{},"这样 reward 就很容易写：",[451,126081,126083],{"className":46787,"code":126082,"language":46789,"meta":32,"style":32},"dist = np.linalg.norm(tip - target)\nreward = -dist\n",[457,126084,126085,126100],{"__ignoreMap":32},[460,126086,126087,126090,126092,126095,126097],{"class":462,"line":463},[460,126088,126089],{"class":466},"dist ",[460,126091,894],{"class":887},[460,126093,126094],{"class":466}," np.linalg.norm(tip ",[460,126096,17259],{"class":887},[460,126098,126099],{"class":466}," target)\n",[460,126101,126102,126104,126106,126108],{"class":462,"line":476},[460,126103,125498],{"class":466},[460,126105,894],{"class":887},[460,126107,68531],{"class":887},[460,126109,126110],{"class":466},"dist\n",[14,126112,126113,126114,126117],{},"距离越小，",[457,126115,126116],{},"-dist"," 越接近 0，奖励越高。",[23,126119,126120],{"id":126120},"两关节机械臂的状态",[14,126122,126123],{},"这个模型有两个 hinge joint：",[451,126125,126128],{"className":126126,"code":126127,"language":8391,"meta":32},[21693],"data.qpos = [joint1_angle, joint2_angle]\ndata.qvel = [joint1_velocity, joint2_velocity]\n",[457,126129,126127],{"__ignoreMap":32},[14,126131,126132],{},"再加上末端和目标位置：",[451,126134,126137],{"className":126135,"code":126136,"language":8391,"meta":32},[21693],"obs = [qpos, qvel, tip_xyz, target_xyz]\n",[457,126138,126136],{"__ignoreMap":32},[14,126140,126141],{},"总维度：",[451,126143,126146],{"className":126144,"code":126145,"language":8391,"meta":32},[21693],"2 + 2 + 3 + 3 = 10\n",[457,126147,126145],{"__ignoreMap":32},[23,126149,126151],{"id":126150},"为什么-gravity-是-0","为什么 gravity 是 0",[14,126153,126154],{},"本章把重力设为：",[451,126156,126158],{"className":453,"code":126157,"language":455,"meta":32,"style":32},"\u003Coption timestep=\"0.01\" gravity=\"0 0 0\"\u002F>\n",[457,126159,126160],{"__ignoreMap":32},[460,126161,126162,126164,126166,126168,126170,126172,126174,126176,126178],{"class":462,"line":463},[460,126163,781],{"class":466},[460,126165,85321],{"class":470},[460,126167,115687],{"class":929},[460,126169,894],{"class":466},[460,126171,115692],{"class":1353},[460,126173,115695],{"class":929},[460,126175,894],{"class":466},[460,126177,118264],{"class":1353},[460,126179,115637],{"class":466},[14,126181,126182],{},"这是为了让问题更简单。没有重力时，控制器只需要考虑让末端靠近目标，不需要额外对抗机械臂下垂。真实机器人任务通常会有重力，并需要更好的控制器或重力补偿。",[18,126184,115746],{"id":115745},[451,126186,126188],{"className":46787,"code":126187,"language":46789,"meta":32,"style":32},"import mujoco\nimport numpy as np\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"two_link_reacher\">\n  \u003Coption timestep=\"0.01\" gravity=\"0 0 0\"\u002F>\n\n  \u003Cworldbody>\n    \u003Cgeom name=\"floor\" type=\"plane\" size=\"2 2 0.1\" rgba=\"0.9 0.9 0.9 1\"\u002F>\n    \u003Csite name=\"target\" pos=\"0.5 0 0.4\" size=\"0.04\" rgba=\"1 0 0 1\"\u002F>\n\n    \u003Cbody name=\"link1\" pos=\"0 0 0.4\">\n      \u003Cjoint name=\"joint1\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n      \u003Cgeom name=\"link1_geom\" type=\"capsule\" fromto=\"0 0 0 0.3 0 0\" size=\"0.025\" mass=\"0.2\" rgba=\"0.1 0.3 1 1\"\u002F>\n\n      \u003Cbody name=\"link2\" pos=\"0.3 0 0\">\n        \u003Cjoint name=\"joint2\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n        \u003Cgeom name=\"link2_geom\" type=\"capsule\" fromto=\"0 0 0 0.3 0 0\" size=\"0.025\" mass=\"0.2\" rgba=\"0.1 0.8 0.3 1\"\u002F>\n        \u003Csite name=\"tip\" pos=\"0.3 0 0\" size=\"0.03\" rgba=\"0 0 1 1\"\u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\n  \u003Cactuator>\n    \u003Cmotor name=\"motor1\" joint=\"joint1\" gear=\"1\" ctrlrange=\"-1 1\" ctrllimited=\"true\"\u002F>\n    \u003Cmotor name=\"motor2\" joint=\"joint2\" gear=\"1\" ctrlrange=\"-1 1\" ctrllimited=\"true\"\u002F>\n  \u003C\u002Factuator>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\ndef site_position(model: mujoco.MjModel, data: mujoco.MjData, name: str) -> np.ndarray:\n    site_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SITE, name)\n    if site_id \u003C 0:\n        raise RuntimeError(f\"site not found: {name}\")\n    return data.site_xpos[site_id].copy()\n\n\ndef get_obs(model: mujoco.MjModel, data: mujoco.MjData) -> np.ndarray:\n    tip = site_position(model, data, \"tip\")\n    target = site_position(model, data, \"target\")\n    return np.concatenate([data.qpos.copy(), data.qvel.copy(), tip, target])\n\n\ndef reward(model: mujoco.MjModel, data: mujoco.MjData) -> float:\n    tip = site_position(model, data, \"tip\")\n    target = site_position(model, data, \"target\")\n    dist = np.linalg.norm(tip - target)\n    control_cost = 0.01 * np.sum(np.square(data.ctrl))\n    return float(-dist - control_cost)\n\n\ndef main() -> None:\n    model = mujoco.MjModel.from_xml_string(XML)\n    data = mujoco.MjData(model)\n    total_reward = 0.0\n\n    for step in range(500):\n        mujoco.mj_forward(model, data)\n        tip = site_position(model, data, \"tip\")\n        target = site_position(model, data, \"target\")\n        error = target - tip\n\n        data.ctrl[0] = np.clip(2.0 * error[2], -1.0, 1.0)\n        data.ctrl[1] = np.clip(2.0 * error[0], -1.0, 1.0)\n\n        mujoco.mj_step(model, data)\n        total_reward += reward(model, data)\n\n        if step % 100 == 0:\n            obs = get_obs(model, data)\n            print(\"step:\", step)\n            print(\"  tip:\", np.round(tip, 3))\n            print(\"  target:\", np.round(target, 3))\n            print(\"  ctrl:\", np.round(data.ctrl.copy(), 3))\n            print(\"  obs_dim:\", obs.shape[0])\n\n    print(\"total_reward:\", round(total_reward, 3))\n    print(\"final tip:\", np.round(site_position(model, data, \"tip\"), 3))\n    print(\"target:\", np.round(site_position(model, data, \"target\"), 3))\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,126189,126190,126196,126206,126210,126214,126222,126227,126232,126236,126240,126245,126250,126254,126259,126264,126269,126273,126278,126283,126288,126293,126297,126301,126305,126309,126313,126318,126323,126327,126331,126335,126339,126343,126358,126367,126379,126402,126409,126413,126417,126427,126441,126455,126462,126466,126470,126484,126496,126508,126521,126536,126553,126557,126561,126573,126585,126593,126601,126605,126621,126626,126639,126652,126667,126671,126706,126738,126742,126746,126755,126759,126775,126785,126796,126812,126828,126844,126860,126864,126882,126902,126921,126925,126929,126941],{"__ignoreMap":32},[460,126191,126192,126194],{"class":462,"line":463},[460,126193,46801],{"class":887},[460,126195,115794],{"class":466},[460,126197,126198,126200,126202,126204],{"class":462,"line":476},[460,126199,46801],{"class":887},[460,126201,47787],{"class":466},[460,126203,47790],{"class":887},[460,126205,47793],{"class":466},[460,126207,126208],{"class":462,"line":482},[460,126209,522],{"emptyLinePlaceholder":521},[460,126211,126212],{"class":462,"line":488},[460,126213,522],{"emptyLinePlaceholder":521},[460,126215,126216,126218,126220],{"class":462,"line":494},[460,126217,115807],{"class":900},[460,126219,2943],{"class":887},[460,126221,115812],{"class":1353},[460,126223,126224],{"class":462,"line":500},[460,126225,126226],{"class":1353},"\u003Cmujoco model=\"two_link_reacher\">\n",[460,126228,126229],{"class":462,"line":506},[460,126230,126231],{"class":1353},"  \u003Coption timestep=\"0.01\" gravity=\"0 0 0\"\u002F>\n",[460,126233,126234],{"class":462,"line":512},[460,126235,522],{"emptyLinePlaceholder":521},[460,126237,126238],{"class":462,"line":518},[460,126239,115831],{"class":1353},[460,126241,126242],{"class":462,"line":525},[460,126243,126244],{"class":1353},"    \u003Cgeom name=\"floor\" type=\"plane\" size=\"2 2 0.1\" rgba=\"0.9 0.9 0.9 1\"\u002F>\n",[460,126246,126247],{"class":462,"line":531},[460,126248,126249],{"class":1353},"    \u003Csite name=\"target\" pos=\"0.5 0 0.4\" size=\"0.04\" rgba=\"1 0 0 1\"\u002F>\n",[460,126251,126252],{"class":462,"line":537},[460,126253,522],{"emptyLinePlaceholder":521},[460,126255,126256],{"class":462,"line":543},[460,126257,126258],{"class":1353},"    \u003Cbody name=\"link1\" pos=\"0 0 0.4\">\n",[460,126260,126261],{"class":462,"line":549},[460,126262,126263],{"class":1353},"      \u003Cjoint name=\"joint1\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n",[460,126265,126266],{"class":462,"line":555},[460,126267,126268],{"class":1353},"      \u003Cgeom name=\"link1_geom\" type=\"capsule\" fromto=\"0 0 0 0.3 0 0\" size=\"0.025\" mass=\"0.2\" rgba=\"0.1 0.3 1 1\"\u002F>\n",[460,126270,126271],{"class":462,"line":560},[460,126272,522],{"emptyLinePlaceholder":521},[460,126274,126275],{"class":462,"line":566},[460,126276,126277],{"class":1353},"      \u003Cbody name=\"link2\" pos=\"0.3 0 0\">\n",[460,126279,126280],{"class":462,"line":572},[460,126281,126282],{"class":1353},"        \u003Cjoint name=\"joint2\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n",[460,126284,126285],{"class":462,"line":578},[460,126286,126287],{"class":1353},"        \u003Cgeom name=\"link2_geom\" type=\"capsule\" fromto=\"0 0 0 0.3 0 0\" size=\"0.025\" mass=\"0.2\" rgba=\"0.1 0.8 0.3 1\"\u002F>\n",[460,126289,126290],{"class":462,"line":812},[460,126291,126292],{"class":1353},"        \u003Csite name=\"tip\" pos=\"0.3 0 0\" size=\"0.03\" rgba=\"0 0 1 1\"\u002F>\n",[460,126294,126295],{"class":462,"line":818},[460,126296,120931],{"class":1353},[460,126298,126299],{"class":462,"line":824},[460,126300,115860],{"class":1353},[460,126302,126303],{"class":462,"line":2074},[460,126304,115865],{"class":1353},[460,126306,126307],{"class":462,"line":2088},[460,126308,522],{"emptyLinePlaceholder":521},[460,126310,126311],{"class":462,"line":2103},[460,126312,120948],{"class":1353},[460,126314,126315],{"class":462,"line":2122},[460,126316,126317],{"class":1353},"    \u003Cmotor name=\"motor1\" joint=\"joint1\" gear=\"1\" ctrlrange=\"-1 1\" ctrllimited=\"true\"\u002F>\n",[460,126319,126320],{"class":462,"line":2144},[460,126321,126322],{"class":1353},"    \u003Cmotor name=\"motor2\" joint=\"joint2\" gear=\"1\" ctrlrange=\"-1 1\" ctrllimited=\"true\"\u002F>\n",[460,126324,126325],{"class":462,"line":2158},[460,126326,120958],{"class":1353},[460,126328,126329],{"class":462,"line":2163},[460,126330,115870],{"class":1353},[460,126332,126333],{"class":462,"line":2168},[460,126334,110191],{"class":1353},[460,126336,126337],{"class":462,"line":2183},[460,126338,522],{"emptyLinePlaceholder":521},[460,126340,126341],{"class":462,"line":2194},[460,126342,522],{"emptyLinePlaceholder":521},[460,126344,126345,126347,126350,126353,126355],{"class":462,"line":2199},[460,126346,48352],{"class":887},[460,126348,126349],{"class":929}," site_position",[460,126351,126352],{"class":466},"(model: mujoco.MjModel, data: mujoco.MjData, name: ",[460,126354,6393],{"class":900},[460,126356,126357],{"class":466},") -> np.ndarray:\n",[460,126359,126360,126362,126364],{"class":462,"line":2204},[460,126361,117893],{"class":466},[460,126363,894],{"class":887},[460,126365,126366],{"class":466}," mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SITE, name)\n",[460,126368,126369,126371,126373,126375,126377],{"class":462,"line":2212},[460,126370,19622],{"class":887},[460,126372,117942],{"class":466},[460,126374,781],{"class":887},[460,126376,2224],{"class":900},[460,126378,20257],{"class":466},[460,126380,126381,126383,126385,126387,126389,126392,126394,126396,126398,126400],{"class":462,"line":2257},[460,126382,117925],{"class":887},[460,126384,117928],{"class":900},[460,126386,2174],{"class":466},[460,126388,16804],{"class":887},[460,126390,126391],{"class":1353},"\"site not found: ",[460,126393,17607],{"class":900},[460,126395,3440],{"class":466},[460,126397,612],{"class":900},[460,126399,16993],{"class":1353},[460,126401,3754],{"class":466},[460,126403,126404,126406],{"class":462,"line":2285},[460,126405,20605],{"class":887},[460,126407,126408],{"class":466}," data.site_xpos[site_id].copy()\n",[460,126410,126411],{"class":462,"line":2298},[460,126412,522],{"emptyLinePlaceholder":521},[460,126414,126415],{"class":462,"line":2303},[460,126416,522],{"emptyLinePlaceholder":521},[460,126418,126419,126421,126424],{"class":462,"line":2308},[460,126420,48352],{"class":887},[460,126422,126423],{"class":929}," get_obs",[460,126425,126426],{"class":466},"(model: mujoco.MjModel, data: mujoco.MjData) -> np.ndarray:\n",[460,126428,126429,126432,126434,126437,126439],{"class":462,"line":2318},[460,126430,126431],{"class":466},"    tip ",[460,126433,894],{"class":887},[460,126435,126436],{"class":466}," site_position(model, data, ",[460,126438,126029],{"class":1353},[460,126440,3754],{"class":466},[460,126442,126443,126446,126448,126450,126453],{"class":462,"line":2333},[460,126444,126445],{"class":466},"    target ",[460,126447,894],{"class":887},[460,126449,126436],{"class":466},[460,126451,126452],{"class":1353},"\"target\"",[460,126454,3754],{"class":466},[460,126456,126457,126459],{"class":462,"line":2338},[460,126458,20605],{"class":887},[460,126460,126461],{"class":466}," np.concatenate([data.qpos.copy(), data.qvel.copy(), tip, target])\n",[460,126463,126464],{"class":462,"line":2343},[460,126465,522],{"emptyLinePlaceholder":521},[460,126467,126468],{"class":462,"line":2353},[460,126469,522],{"emptyLinePlaceholder":521},[460,126471,126472,126474,126477,126480,126482],{"class":462,"line":2368},[460,126473,48352],{"class":887},[460,126475,126476],{"class":929}," reward",[460,126478,126479],{"class":466},"(model: mujoco.MjModel, data: mujoco.MjData) -> ",[460,126481,16793],{"class":900},[460,126483,20257],{"class":466},[460,126485,126486,126488,126490,126492,126494],{"class":462,"line":2381},[460,126487,126431],{"class":466},[460,126489,894],{"class":887},[460,126491,126436],{"class":466},[460,126493,126029],{"class":1353},[460,126495,3754],{"class":466},[460,126497,126498,126500,126502,126504,126506],{"class":462,"line":2394},[460,126499,126445],{"class":466},[460,126501,894],{"class":887},[460,126503,126436],{"class":466},[460,126505,126452],{"class":1353},[460,126507,3754],{"class":466},[460,126509,126510,126513,126515,126517,126519],{"class":462,"line":2399},[460,126511,126512],{"class":466},"    dist ",[460,126514,894],{"class":887},[460,126516,126094],{"class":466},[460,126518,17259],{"class":887},[460,126520,126099],{"class":466},[460,126522,126523,126526,126528,126531,126533],{"class":462,"line":2404},[460,126524,126525],{"class":466},"    control_cost ",[460,126527,894],{"class":887},[460,126529,126530],{"class":900}," 0.01",[460,126532,8325],{"class":887},[460,126534,126535],{"class":466}," np.sum(np.square(data.ctrl))\n",[460,126537,126538,126540,126542,126544,126546,126548,126550],{"class":462,"line":2414},[460,126539,20605],{"class":887},[460,126541,124290],{"class":900},[460,126543,2174],{"class":466},[460,126545,17259],{"class":887},[460,126547,126089],{"class":466},[460,126549,17259],{"class":887},[460,126551,126552],{"class":466}," control_cost)\n",[460,126554,126555],{"class":462,"line":2428},[460,126556,522],{"emptyLinePlaceholder":521},[460,126558,126559],{"class":462,"line":2440},[460,126560,522],{"emptyLinePlaceholder":521},[460,126562,126563,126565,126567,126569,126571],{"class":462,"line":2445},[460,126564,48352],{"class":887},[460,126566,18514],{"class":929},[460,126568,115891],{"class":466},[460,126570,110179],{"class":900},[460,126572,20257],{"class":466},[460,126574,126575,126577,126579,126581,126583],{"class":462,"line":2450},[460,126576,115900],{"class":466},[460,126578,894],{"class":887},[460,126580,115905],{"class":466},[460,126582,115807],{"class":900},[460,126584,3754],{"class":466},[460,126586,126587,126589,126591],{"class":462,"line":2460},[460,126588,115914],{"class":466},[460,126590,894],{"class":887},[460,126592,115919],{"class":466},[460,126594,126595,126597,126599],{"class":462,"line":2473},[460,126596,124646],{"class":466},[460,126598,894],{"class":887},[460,126600,119254],{"class":900},[460,126602,126603],{"class":462,"line":2487},[460,126604,522],{"emptyLinePlaceholder":521},[460,126606,126607,126609,126611,126613,126615,126617,126619],{"class":462,"line":2492},[460,126608,19722],{"class":887},[460,126610,48021],{"class":466},[460,126612,11713],{"class":887},[460,126614,48848],{"class":900},[460,126616,2174],{"class":466},[460,126618,14065],{"class":900},[460,126620,47194],{"class":466},[460,126622,126623],{"class":462,"line":2497},[460,126624,126625],{"class":466},"        mujoco.mj_forward(model, data)\n",[460,126627,126628,126631,126633,126635,126637],{"class":462,"line":2505},[460,126629,126630],{"class":466},"        tip ",[460,126632,894],{"class":887},[460,126634,126436],{"class":466},[460,126636,126029],{"class":1353},[460,126638,3754],{"class":466},[460,126640,126641,126644,126646,126648,126650],{"class":462,"line":2516},[460,126642,126643],{"class":466},"        target ",[460,126645,894],{"class":887},[460,126647,126436],{"class":466},[460,126649,126452],{"class":1353},[460,126651,3754],{"class":466},[460,126653,126654,126657,126659,126662,126664],{"class":462,"line":2529},[460,126655,126656],{"class":466},"        error ",[460,126658,894],{"class":887},[460,126660,126661],{"class":466}," target ",[460,126663,17259],{"class":887},[460,126665,126666],{"class":466}," tip\n",[460,126668,126669],{"class":462,"line":2542},[460,126670,522],{"emptyLinePlaceholder":521},[460,126672,126673,126675,126677,126679,126681,126684,126686,126688,126691,126693,126696,126698,126700,126702,126704],{"class":462,"line":2559},[460,126674,121110],{"class":466},[460,126676,936],{"class":900},[460,126678,11884],{"class":466},[460,126680,894],{"class":887},[460,126682,126683],{"class":466}," np.clip(",[460,126685,119753],{"class":900},[460,126687,8325],{"class":887},[460,126689,126690],{"class":466}," error[",[460,126692,907],{"class":900},[460,126694,126695],{"class":466},"], ",[460,126697,17259],{"class":887},[460,126699,116896],{"class":900},[460,126701,904],{"class":466},[460,126703,116896],{"class":900},[460,126705,3754],{"class":466},[460,126707,126708,126710,126712,126714,126716,126718,126720,126722,126724,126726,126728,126730,126732,126734,126736],{"class":462,"line":2564},[460,126709,121110],{"class":466},[460,126711,901],{"class":900},[460,126713,11884],{"class":466},[460,126715,894],{"class":887},[460,126717,126683],{"class":466},[460,126719,119753],{"class":900},[460,126721,8325],{"class":887},[460,126723,126690],{"class":466},[460,126725,936],{"class":900},[460,126727,126695],{"class":466},[460,126729,17259],{"class":887},[460,126731,116896],{"class":900},[460,126733,904],{"class":466},[460,126735,116896],{"class":900},[460,126737,3754],{"class":466},[460,126739,126740],{"class":462,"line":2569},[460,126741,522],{"emptyLinePlaceholder":521},[460,126743,126744],{"class":462,"line":2579},[460,126745,116009],{"class":466},[460,126747,126748,126750,126752],{"class":462,"line":2597},[460,126749,124790],{"class":466},[460,126751,3467],{"class":887},[460,126753,126754],{"class":466}," reward(model, data)\n",[460,126756,126757],{"class":462,"line":2610},[460,126758,522],{"emptyLinePlaceholder":521},[460,126760,126761,126763,126765,126767,126769,126771,126773],{"class":462,"line":2621},[460,126762,3702],{"class":887},[460,126764,48021],{"class":466},[460,126766,2328],{"class":887},[460,126768,3751],{"class":900},[460,126770,116052],{"class":887},[460,126772,2224],{"class":900},[460,126774,20257],{"class":466},[460,126776,126777,126780,126782],{"class":462,"line":2634},[460,126778,126779],{"class":466},"            obs ",[460,126781,894],{"class":887},[460,126783,126784],{"class":466}," get_obs(model, data)\n",[460,126786,126787,126789,126791,126793],{"class":462,"line":2648},[460,126788,50955],{"class":900},[460,126790,2174],{"class":466},[460,126792,124824],{"class":1353},[460,126794,126795],{"class":466},", step)\n",[460,126797,126798,126800,126802,126805,126808,126810],{"class":462,"line":2653},[460,126799,50955],{"class":900},[460,126801,2174],{"class":466},[460,126803,126804],{"class":1353},"\"  tip:\"",[460,126806,126807],{"class":466},", np.round(tip, ",[460,126809,913],{"class":900},[460,126811,6311],{"class":466},[460,126813,126814,126816,126818,126821,126824,126826],{"class":462,"line":2658},[460,126815,50955],{"class":900},[460,126817,2174],{"class":466},[460,126819,126820],{"class":1353},"\"  target:\"",[460,126822,126823],{"class":466},", np.round(target, ",[460,126825,913],{"class":900},[460,126827,6311],{"class":466},[460,126829,126830,126832,126834,126837,126840,126842],{"class":462,"line":2670},[460,126831,50955],{"class":900},[460,126833,2174],{"class":466},[460,126835,126836],{"class":1353},"\"  ctrl:\"",[460,126838,126839],{"class":466},", np.round(data.ctrl.copy(), ",[460,126841,913],{"class":900},[460,126843,6311],{"class":466},[460,126845,126846,126848,126850,126853,126856,126858],{"class":462,"line":2683},[460,126847,50955],{"class":900},[460,126849,2174],{"class":466},[460,126851,126852],{"class":1353},"\"  obs_dim:\"",[460,126854,126855],{"class":466},", obs.shape[",[460,126857,936],{"class":900},[460,126859,13249],{"class":466},[460,126861,126862],{"class":462,"line":2695},[460,126863,522],{"emptyLinePlaceholder":521},[460,126865,126866,126868,126870,126872,126874,126876,126878,126880],{"class":462,"line":2700},[460,126867,47706],{"class":900},[460,126869,2174],{"class":466},[460,126871,124869],{"class":1353},[460,126873,904],{"class":466},[460,126875,48423],{"class":900},[460,126877,124876],{"class":466},[460,126879,913],{"class":900},[460,126881,6311],{"class":466},[460,126883,126884,126886,126888,126891,126894,126896,126898,126900],{"class":462,"line":2709},[460,126885,47706],{"class":900},[460,126887,2174],{"class":466},[460,126889,126890],{"class":1353},"\"final tip:\"",[460,126892,126893],{"class":466},", np.round(site_position(model, data, ",[460,126895,126029],{"class":1353},[460,126897,124838],{"class":466},[460,126899,913],{"class":900},[460,126901,6311],{"class":466},[460,126903,126904,126906,126908,126911,126913,126915,126917,126919],{"class":462,"line":2718},[460,126905,47706],{"class":900},[460,126907,2174],{"class":466},[460,126909,126910],{"class":1353},"\"target:\"",[460,126912,126893],{"class":466},[460,126914,126452],{"class":1353},[460,126916,124838],{"class":466},[460,126918,913],{"class":900},[460,126920,6311],{"class":466},[460,126922,126923],{"class":462,"line":2723},[460,126924,522],{"emptyLinePlaceholder":521},[460,126926,126927],{"class":462,"line":2732},[460,126928,522],{"emptyLinePlaceholder":521},[460,126930,126931,126933,126935,126937,126939],{"class":462,"line":2750},[460,126932,18100],{"class":887},[460,126934,47627],{"class":900},[460,126936,116052],{"class":887},[460,126938,116055],{"class":1353},[460,126940,20257],{"class":466},[460,126942,126943],{"class":462,"line":2782},[460,126944,116062],{"class":466},[14,126946,118063],{},[451,126948,126950],{"className":40235,"code":126949,"language":40237,"meta":32,"style":32},"touch ch7_reacher.py\n",[457,126951,126952],{"__ignoreMap":32},[460,126953,126954,126956],{"class":462,"line":463},[460,126955,115776],{"class":929},[460,126957,126958],{"class":1353}," ch7_reacher.py\n",[14,126960,124937],{},[451,126962,126964],{"className":40235,"code":126963,"language":40237,"meta":32,"style":32},"python ch7_reacher.py\n",[457,126965,126966],{"__ignoreMap":32},[460,126967,126968,126970],{"class":462,"line":463},[460,126969,46789],{"class":929},[460,126971,126958],{"class":1353},[23,126973,116065],{"id":116065},[14,126975,126976],{},"读取 site 坐标：",[451,126978,126980],{"className":46787,"code":126979,"language":46789,"meta":32,"style":32},"def site_position(model: mujoco.MjModel, data: mujoco.MjData, name: str) -> np.ndarray:\n",[457,126981,126982],{"__ignoreMap":32},[460,126983,126984,126986,126988,126990,126992],{"class":462,"line":463},[460,126985,48352],{"class":887},[460,126987,126349],{"class":929},[460,126989,126352],{"class":466},[460,126991,6393],{"class":900},[460,126993,126357],{"class":466},[14,126995,126996],{},"这个函数把“按名字查找 site ID”和“读取 site 世界坐标”封装到一起，避免重复写。",[14,126998,124953],{},[451,127000,127002],{"className":46787,"code":127001,"language":46789,"meta":32,"style":32},"return np.concatenate([data.qpos.copy(), data.qvel.copy(), tip, target])\n",[457,127003,127004],{"__ignoreMap":32},[460,127005,127006,127008],{"class":462,"line":463},[460,127007,33464],{"class":887},[460,127009,126461],{"class":466},[14,127011,127012],{},"这让策略或控制器能同时看到关节状态、末端位置和目标位置。",[14,127014,124278],{},[451,127016,127018],{"className":46787,"code":127017,"language":46789,"meta":32,"style":32},"dist = np.linalg.norm(tip - target)\ncontrol_cost = 0.01 * np.sum(np.square(data.ctrl))\nreturn float(-dist - control_cost)\n",[457,127019,127020,127032,127045],{"__ignoreMap":32},[460,127021,127022,127024,127026,127028,127030],{"class":462,"line":463},[460,127023,126089],{"class":466},[460,127025,894],{"class":887},[460,127027,126094],{"class":466},[460,127029,17259],{"class":887},[460,127031,126099],{"class":466},[460,127033,127034,127037,127039,127041,127043],{"class":462,"line":476},[460,127035,127036],{"class":466},"control_cost ",[460,127038,894],{"class":887},[460,127040,126530],{"class":900},[460,127042,8325],{"class":887},[460,127044,126535],{"class":466},[460,127046,127047,127049,127051,127053,127055,127057,127059],{"class":462,"line":482},[460,127048,33464],{"class":887},[460,127050,124290],{"class":900},[460,127052,2174],{"class":466},[460,127054,17259],{"class":887},[460,127056,126089],{"class":466},[460,127058,17259],{"class":887},[460,127060,126552],{"class":466},[14,127062,127063],{},"奖励由两部分组成：",[103,127065,127066,127071],{},[43,127067,127068,127070],{},[457,127069,126116],{},"：末端离目标越远，奖励越低。",[43,127072,127073,127076],{},[457,127074,127075],{},"control_cost","：动作越大，扣分越多，避免控制输入过于剧烈。",[14,127078,127079],{},"简单控制器：",[451,127081,127083],{"className":46787,"code":127082,"language":46789,"meta":32,"style":32},"error = target - tip\ndata.ctrl[0] = np.clip(2.0 * error[2], -1.0, 1.0)\ndata.ctrl[1] = np.clip(2.0 * error[0], -1.0, 1.0)\n",[457,127084,127085,127098,127130],{"__ignoreMap":32},[460,127086,127087,127090,127092,127094,127096],{"class":462,"line":463},[460,127088,127089],{"class":466},"error ",[460,127091,894],{"class":887},[460,127093,126661],{"class":466},[460,127095,17259],{"class":887},[460,127097,126666],{"class":466},[460,127099,127100,127102,127104,127106,127108,127110,127112,127114,127116,127118,127120,127122,127124,127126,127128],{"class":462,"line":476},[460,127101,120364],{"class":466},[460,127103,936],{"class":900},[460,127105,11884],{"class":466},[460,127107,894],{"class":887},[460,127109,126683],{"class":466},[460,127111,119753],{"class":900},[460,127113,8325],{"class":887},[460,127115,126690],{"class":466},[460,127117,907],{"class":900},[460,127119,126695],{"class":466},[460,127121,17259],{"class":887},[460,127123,116896],{"class":900},[460,127125,904],{"class":466},[460,127127,116896],{"class":900},[460,127129,3754],{"class":466},[460,127131,127132,127134,127136,127138,127140,127142,127144,127146,127148,127150,127152,127154,127156,127158,127160],{"class":462,"line":482},[460,127133,120364],{"class":466},[460,127135,901],{"class":900},[460,127137,11884],{"class":466},[460,127139,894],{"class":887},[460,127141,126683],{"class":466},[460,127143,119753],{"class":900},[460,127145,8325],{"class":887},[460,127147,126690],{"class":466},[460,127149,936],{"class":900},[460,127151,126695],{"class":466},[460,127153,17259],{"class":887},[460,127155,116896],{"class":900},[460,127157,904],{"class":466},[460,127159,116896],{"class":900},[460,127161,3754],{"class":466},[14,127163,127164],{},"这只是为了演示控制闭环，不是严格的逆运动学。真实 reacher 通常需要更系统的方法。",[23,127166,116201],{"id":116201},[451,127168,127169],{"className":46787,"code":126979,"language":46789,"meta":32,"style":32},[457,127170,127171],{"__ignoreMap":32},[460,127172,127173,127175,127177,127179,127181],{"class":462,"line":463},[460,127174,48352],{"class":887},[460,127176,126349],{"class":929},[460,127178,126352],{"class":466},[460,127180,6393],{"class":900},[460,127182,126357],{"class":466},[14,127184,127185,127186,127188,127189,6271,127191,44794],{},"定义一个函数，用名字读取 site 的世界坐标。参数 ",[457,127187,3440],{}," 是 site 的名字，比如 ",[457,127190,126029],{},[457,127192,126452],{},[451,127194,127196],{"className":46787,"code":127195,"language":46789,"meta":32,"style":32},"site_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SITE, name)\n",[457,127197,127198],{"__ignoreMap":32},[460,127199,127200,127202,127204],{"class":462,"line":463},[460,127201,118127],{"class":466},[460,127203,894],{"class":887},[460,127205,126366],{"class":466},[14,127207,127208],{},"根据 site 名字查找数字 ID。MuJoCo 内部数组需要用 ID 访问，不能直接用字符串名字访问。",[451,127210,127212],{"className":46787,"code":127211,"language":46789,"meta":32,"style":32},"if site_id \u003C 0:\n    raise RuntimeError(f\"site not found: {name}\")\n",[457,127213,127214,127226],{"__ignoreMap":32},[460,127215,127216,127218,127220,127222,127224],{"class":462,"line":463},[460,127217,18100],{"class":887},[460,127219,117942],{"class":466},[460,127221,781],{"class":887},[460,127223,2224],{"class":900},[460,127225,20257],{"class":466},[460,127227,127228,127230,127232,127234,127236,127238,127240,127242,127244,127246],{"class":462,"line":476},[460,127229,118388],{"class":887},[460,127231,117928],{"class":900},[460,127233,2174],{"class":466},[460,127235,16804],{"class":887},[460,127237,126391],{"class":1353},[460,127239,17607],{"class":900},[460,127241,3440],{"class":466},[460,127243,612],{"class":900},[460,127245,16993],{"class":1353},[460,127247,3754],{"class":466},[14,127249,127250,127251,127254,127255,127257],{},"如果 site 没找到，就主动报错。",[457,127252,127253],{},"f\"site not found: {name}\""," 是 Python 的 f-string，会把变量 ",[457,127256,3440],{}," 的值放进字符串里。",[451,127259,127261],{"className":46787,"code":127260,"language":46789,"meta":32,"style":32},"return data.site_xpos[site_id].copy()\n",[457,127262,127263],{"__ignoreMap":32},[460,127264,127265,127267],{"class":462,"line":463},[460,127266,33464],{"class":887},[460,127268,126408],{"class":466},[14,127270,127271,127272,127274,127275,127278],{},"返回这个 site 的世界坐标。",[457,127273,118173],{}," 里的每一行都是一个 site 的 ",[457,127276,127277],{},"(x, y, z)"," 坐标。",[451,127280,127282],{"className":46787,"code":127281,"language":46789,"meta":32,"style":32},"def get_obs(model: mujoco.MjModel, data: mujoco.MjData) -> np.ndarray:\n",[457,127283,127284],{"__ignoreMap":32},[460,127285,127286,127288,127290],{"class":462,"line":463},[460,127287,48352],{"class":887},[460,127289,126423],{"class":929},[460,127291,126426],{"class":466},[14,127293,127294],{},"定义获取观测的函数。Reacher 的观测不仅包含关节角和速度，还包含末端位置和目标位置。",[451,127296,127298],{"className":46787,"code":127297,"language":46789,"meta":32,"style":32},"tip = site_position(model, data, \"tip\")\ntarget = site_position(model, data, \"target\")\n",[457,127299,127300,127312],{"__ignoreMap":32},[460,127301,127302,127304,127306,127308,127310],{"class":462,"line":463},[460,127303,126061],{"class":466},[460,127305,894],{"class":887},[460,127307,126436],{"class":466},[460,127309,126029],{"class":1353},[460,127311,3754],{"class":466},[460,127313,127314,127316,127318,127320,127322],{"class":462,"line":476},[460,127315,126071],{"class":466},[460,127317,894],{"class":887},[460,127319,126436],{"class":466},[460,127321,126452],{"class":1353},[460,127323,3754],{"class":466},[14,127325,127326],{},"分别读取末端点和目标点的世界坐标。",[451,127328,127329],{"className":46787,"code":127001,"language":46789,"meta":32,"style":32},[457,127330,127331],{"__ignoreMap":32},[460,127332,127333,127335],{"class":462,"line":463},[460,127334,33464],{"class":887},[460,127336,126461],{"class":466},[14,127338,127339],{},"把四部分拼成一个观测数组：",[451,127341,127344],{"className":127342,"code":127343,"language":8391,"meta":32},[21693],"关节角 qpos\n关节速度 qvel\n末端坐标 tip\n目标坐标 target\n",[457,127345,127343],{"__ignoreMap":32},[451,127347,127349],{"className":46787,"code":127348,"language":46789,"meta":32,"style":32},"dist = np.linalg.norm(tip - target)\n",[457,127350,127351],{"__ignoreMap":32},[460,127352,127353,127355,127357,127359,127361],{"class":462,"line":463},[460,127354,126089],{"class":466},[460,127356,894],{"class":887},[460,127358,126094],{"class":466},[460,127360,17259],{"class":887},[460,127362,126099],{"class":466},[14,127364,127365,127366,127369,127370,127373],{},"计算 tip 到 target 的距离。",[457,127367,127368],{},"tip - target"," 得到一个三维向量，",[457,127371,127372],{},"np.linalg.norm(...)"," 计算这个向量的长度。",[14,127375,31087],{},[451,127377,127380],{"className":127378,"code":127379,"language":8391,"meta":32},[21693],"tip    = [0.3, 0.0, 0.4]\ntarget = [0.5, 0.0, 0.4]\ntip - target = [-0.2, 0.0, 0.0]\ndistance = 0.2\n",[457,127381,127379],{"__ignoreMap":32},[451,127383,127385],{"className":46787,"code":127384,"language":46789,"meta":32,"style":32},"control_cost = 0.01 * np.sum(np.square(data.ctrl))\n",[457,127386,127387],{"__ignoreMap":32},[460,127388,127389,127391,127393,127395,127397],{"class":462,"line":463},[460,127390,127036],{"class":466},[460,127392,894],{"class":887},[460,127394,126530],{"class":900},[460,127396,8325],{"class":887},[460,127398,126535],{"class":466},[14,127400,127401,127402,127405,127406,127409],{},"计算动作惩罚。",[457,127403,127404],{},"np.square(data.ctrl)"," 把每个控制输入平方，",[457,127407,127408],{},"np.sum(...)"," 把它们加起来。动作越大，惩罚越大。",[451,127411,127413],{"className":46787,"code":127412,"language":46789,"meta":32,"style":32},"return float(-dist - control_cost)\n",[457,127414,127415],{"__ignoreMap":32},[460,127416,127417,127419,127421,127423,127425,127427,127429],{"class":462,"line":463},[460,127418,33464],{"class":887},[460,127420,124290],{"class":900},[460,127422,2174],{"class":466},[460,127424,17259],{"class":887},[460,127426,126089],{"class":466},[460,127428,17259],{"class":887},[460,127430,126552],{"class":466},[14,127432,127433],{},"奖励是负距离再减去动作惩罚。距离越小，奖励越接近 0；动作越大，奖励越低。",[451,127435,127436],{"className":46787,"code":125296,"language":46789,"meta":32,"style":32},[457,127437,127438],{"__ignoreMap":32},[460,127439,127440,127442,127444],{"class":462,"line":463},[460,127441,125303],{"class":466},[460,127443,894],{"class":887},[460,127445,119254],{"class":900},[14,127447,127448],{},"累计奖励变量，记录整个运行过程的总分。",[451,127450,127452],{"className":46787,"code":127451,"language":46789,"meta":32,"style":32},"for step in range(500):\n",[457,127453,127454],{"__ignoreMap":32},[460,127455,127456,127458,127460,127462,127464,127466,127468],{"class":462,"line":463},[460,127457,19547],{"class":887},[460,127459,48021],{"class":466},[460,127461,11713],{"class":887},[460,127463,48848],{"class":900},[460,127465,2174],{"class":466},[460,127467,14065],{"class":900},[460,127469,47194],{"class":466},[14,127471,127472],{},"运行 500 个控制步。",[451,127474,127475],{"className":46787,"code":119036,"language":46789,"meta":32,"style":32},[457,127476,127477],{"__ignoreMap":32},[460,127478,127479],{"class":462,"line":463},[460,127480,119036],{"class":466},[14,127482,127483,127484,115511,127486,127488],{},"刷新当前状态对应的 site 坐标。这里每步开头调用一次，确保读取到的 ",[457,127485,117724],{},[457,127487,117727],{}," 是当前状态下的坐标。",[451,127490,127492],{"className":46787,"code":127491,"language":46789,"meta":32,"style":32},"error = target - tip\n",[457,127493,127494],{"__ignoreMap":32},[460,127495,127496,127498,127500,127502,127504],{"class":462,"line":463},[460,127497,127089],{"class":466},[460,127499,894],{"class":887},[460,127501,126661],{"class":466},[460,127503,17259],{"class":887},[460,127505,126666],{"class":466},[14,127507,127508],{},"计算目标点相对末端点的误差向量。它表示“从 tip 指向 target 还差多少”。",[451,127510,127512],{"className":46787,"code":127511,"language":46789,"meta":32,"style":32},"data.ctrl[0] = np.clip(2.0 * error[2], -1.0, 1.0)\ndata.ctrl[1] = np.clip(2.0 * error[0], -1.0, 1.0)\n",[457,127513,127514,127546],{"__ignoreMap":32},[460,127515,127516,127518,127520,127522,127524,127526,127528,127530,127532,127534,127536,127538,127540,127542,127544],{"class":462,"line":463},[460,127517,120364],{"class":466},[460,127519,936],{"class":900},[460,127521,11884],{"class":466},[460,127523,894],{"class":887},[460,127525,126683],{"class":466},[460,127527,119753],{"class":900},[460,127529,8325],{"class":887},[460,127531,126690],{"class":466},[460,127533,907],{"class":900},[460,127535,126695],{"class":466},[460,127537,17259],{"class":887},[460,127539,116896],{"class":900},[460,127541,904],{"class":466},[460,127543,116896],{"class":900},[460,127545,3754],{"class":466},[460,127547,127548,127550,127552,127554,127556,127558,127560,127562,127564,127566,127568,127570,127572,127574,127576],{"class":462,"line":476},[460,127549,120364],{"class":466},[460,127551,901],{"class":900},[460,127553,11884],{"class":466},[460,127555,894],{"class":887},[460,127557,126683],{"class":466},[460,127559,119753],{"class":900},[460,127561,8325],{"class":887},[460,127563,126690],{"class":466},[460,127565,936],{"class":900},[460,127567,126695],{"class":466},[460,127569,17259],{"class":887},[460,127571,116896],{"class":900},[460,127573,904],{"class":466},[460,127575,116896],{"class":900},[460,127577,3754],{"class":466},[14,127579,127580,127581,127584],{},"给两个关节写控制输入。这里用 z 方向误差控制第一个关节，用 x 方向误差控制第二个关节。这是非常粗糙的教学控制器，只是为了展示 ",[457,127582,127583],{},"error -> ctrl -> step"," 的流程。",[451,127586,127587],{"className":46787,"code":118998,"language":46789,"meta":32,"style":32},[457,127588,127589],{"__ignoreMap":32},[460,127590,127591],{"class":462,"line":463},[460,127592,118998],{"class":466},[14,127594,127595],{},"推进仿真。机械臂会根据两个 motor 的输入改变姿态。",[451,127597,127599],{"className":46787,"code":127598,"language":46789,"meta":32,"style":32},"obs = get_obs(model, data)\n",[457,127600,127601],{"__ignoreMap":32},[460,127602,127603,127605,127607],{"class":462,"line":463},[460,127604,125347],{"class":466},[460,127606,894],{"class":887},[460,127608,126784],{"class":466},[14,127610,127611,127612,127615],{},"读取最新观测。后面打印 ",[457,127613,127614],{},"obs.shape[0]","，用来确认观测维度是 10。",[18,127617,116809],{"id":116808},[14,127619,127620],{},"观测维度为:",[451,127622,127625],{"className":127623,"code":127624,"language":8391,"meta":32},[21693],"2 个 qpos\n2 个 qvel\n3 个 tip position\n3 个 target position\n= 10\n",[457,127626,127624],{"__ignoreMap":32},[14,127628,127629],{},"控制器只是教学控制器。真实机械臂 reacher 通常会用逆运动学、Operational Space Control、RL policy 或模仿学习 policy。",[14,127631,127632],{},"程序每 100 步打印：",[451,127634,127637],{"className":127635,"code":127636,"language":8391,"meta":32},[21693],"tip: 末端点世界坐标\ntarget: 目标点世界坐标\nctrl: 两个关节的控制输入\nobs_dim: 观测维度\n",[457,127638,127636],{"__ignoreMap":32},[14,127640,127641,127642,127644],{},"如果控制有效，你应该看到最终 ",[457,127643,117724],{}," 的位置相对初始位置发生变化。它不一定能精准到达目标，因为这个控制器很粗糙。",[18,127646,116841],{"id":116840},[103,127648,127649,127652,127655,127661,127667,127674,127684],{},[43,127650,127651],{},"修改目标点位置。",[43,127653,127654],{},"重新运行，观察最终 tip 是否变化。",[43,127656,127657,127658,127660],{},"把 gravity 改成 ",[457,127659,117082],{},"，观察控制是否变差。",[43,127662,125674,127663,125678,127665,44794],{},[457,127664,116651],{},[457,127666,907],{},[43,127668,116904,127669,116907,127671,127673],{},[457,127670,125089],{},[457,127672,121800],{},"，观察机械臂是否更难移动。",[43,127675,116904,127676,6261,127678,116907,127680,127683],{},[457,127677,117727],{},[457,127679,118639],{},[457,127681,127682],{},"0.2 0 0.6","，观察 reward 和 final tip。",[43,127685,127686],{},"用 viewer 可视化，确认 link1、link2 和 target 的位置符合预期。",[18,127688,116946],{"id":116945},[23,127690,127692],{"id":127691},"site-not-found",[457,127693,127694],{},"site not found",[14,127696,127697,127698,115511,127701,44794],{},"检查 XML 中是否有 ",[457,127699,127700],{},"site name=\"tip\"",[457,127702,127703],{},"site name=\"target\"",[23,127705,127706],{"id":127706},"机械臂完全不动",[14,127708,117016],{},[103,127710,127711,127716,127719,127724],{},[43,127712,127713,127715],{},[457,127714,116651],{}," 是否为 2",[43,127717,127718],{},"actuator 是否引用正确 joint",[43,127720,127721,127723],{},[457,127722,115569],{}," 是否被赋值",[43,127725,127726,127727],{},"是否执行了 ",[457,127728,115178],{},[23,127730,127731],{"id":127731},"控制效果不好",[14,127733,127734],{},"正常。本章重点不是控制器最优，而是任务结构:",[451,127736,127739],{"className":127737,"code":127738,"language":8391,"meta":32},[21693],"obs → action → mj_step → reward → next_obs\n",[457,127740,127738],{"__ignoreMap":32},[23,127742,127744],{"id":127743},"tip-坐标不变化","tip 坐标不变化",[14,127746,117068],{},[103,127748,127749,127754,127762,127771],{},[43,127750,127751,127752,44794],{},"是否每步调用了 ",[457,127753,115178],{},[43,127755,127756,127757,115511,127759,44794],{},"是否写入了 ",[457,127758,120619],{},[457,127760,127761],{},"data.ctrl[1]",[43,127763,127764,127765,16957,127768,44794],{},"actuator 是否正确引用 ",[457,127766,127767],{},"joint1",[457,127769,127770],{},"joint2",[43,127772,127773],{},"控制输入是否太小。",[23,127775,127776],{"id":127776},"目标点不会动",[14,127778,127779],{},"本章的 target 是固定 site：",[451,127781,127783],{"className":453,"code":127782,"language":455,"meta":32,"style":32},"\u003Csite name=\"target\" pos=\"0.5 0 0.4\" ...\u002F>\n",[457,127784,127785],{"__ignoreMap":32},[460,127786,127787,127789,127791,127793,127795,127797,127799,127801,127804],{"class":462,"line":463},[460,127788,781],{"class":466},[460,127790,117703],{"class":470},[460,127792,1908],{"class":929},[460,127794,894],{"class":466},[460,127796,126452],{"class":1353},[460,127798,115599],{"class":929},[460,127800,894],{"class":466},[460,127802,127803],{"class":1353},"\"0.5 0 0.4\"",[460,127805,127806],{"class":466}," ...\u002F>\n",[14,127808,127809,127810,127812],{},"它直接挂在 ",[457,127811,116334],{}," 下，所以不会随机械臂运动。如果你想每次 reset 随机目标，后续可以把目标放在 mocap body 或通过修改模型\u002F数据实现，本章先不展开。",[23,127814,127815],{"id":127815},"机械臂不像真实机械臂",[14,127817,127818],{},"正常。本章模型是教学用二维两连杆，没有电机真实参数、关节限位、摩擦、真实机器人 URDF\u002FMJCF 结构。它的价值是帮你理解任务结构，而不是模拟某台真实机器人。",[18,127820,117100],{"id":117099},[14,127822,127823],{},"Reacher 比 Cartpole 多了一个关键概念：任务目标往往不是直接由关节角定义，而是由末端点和目标点的空间关系定义。",[14,127825,127826],{},"核心公式：",[451,127828,127831],{"className":127829,"code":127830,"language":8391,"meta":32},[21693],"distance = ||tip - target||\nreward = -distance - action_cost\n",[457,127832,127830],{"__ignoreMap":32},[14,127834,127835],{},"掌握这个模式后，就能理解很多机械臂 reach、push、pick、place 任务的基本奖励设计。",[1944,127837,127838],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":32,"searchDepth":476,"depth":476,"links":127840},[127841,127842,127843,127848,127852,127853,127854,127862],{"id":115139,"depth":476,"text":115140},{"id":115262,"depth":476,"text":115263},{"id":115537,"depth":476,"text":115538,"children":127844},[127845,127846,127847],{"id":126044,"depth":482,"text":126045},{"id":126120,"depth":482,"text":126120},{"id":126150,"depth":482,"text":126151},{"id":115745,"depth":476,"text":115746,"children":127849},[127850,127851],{"id":116065,"depth":482,"text":116065},{"id":116201,"depth":482,"text":116201},{"id":116808,"depth":476,"text":116809},{"id":116840,"depth":476,"text":116841},{"id":116945,"depth":476,"text":116946,"children":127855},[127856,127857,127858,127859,127860,127861],{"id":127691,"depth":482,"text":127694},{"id":127706,"depth":482,"text":127706},{"id":127731,"depth":482,"text":127731},{"id":127743,"depth":482,"text":127744},{"id":127776,"depth":482,"text":127776},{"id":127815,"depth":482,"text":127815},{"id":117099,"depth":476,"text":117100},{},"\u002Fwiki\u002F2025-05-17-mujoco\u002Fch7-reacher",{"title":125848,"description":32},"wiki\u002F2025-05-17-mujoco学习\u002Fch7-Reacher控制任务","7afYiYudLCszldKNM9vonhx27bDG_0sI4vgwQYeRqd4",{"id":127869,"title":127870,"body":127871,"description":32,"extension":16683,"meta":131333,"navigation":521,"path":131334,"seo":131335,"stem":131336,"__hash__":131337},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Fch8-Gymnasium接口基础.md","8.Gymnasium 风格强化学习接口基础",{"type":7,"value":127872,"toc":131304},[127873,127876,127878,127881,127884,127909,127912,127918,127921,127927,127929,127931,127955,127957,127975,127977,128020,128022,128049,128051,128054,128106,128109,128115,128124,128127,128165,128168,128207,128210,128218,128225,128228,128234,128236,128290,128297,128342,128345,128349,128365,128375,128377,129638,129640,129652,129654,129665,129667,129670,129691,129694,129697,129730,129736,129739,129772,129775,129778,129819,129824,129838,129841,129854,129859,129882,129884,129899,129909,129924,129931,129951,129966,129984,129987,130004,130012,130028,130034,130066,130079,130111,130121,130156,130170,130216,130230,130272,130283,130296,130302,130335,130338,130365,130375,130415,130425,130442,130449,130467,130470,130511,130524,130539,130542,130565,130568,130580,130583,130602,130607,130628,130631,130646,130649,130683,130695,130710,130713,130738,130741,130760,130763,130795,130798,130822,130828,130858,130865,130878,130881,130883,130885,130891,130894,130897,130909,130912,130914,130968,130970,130974,130980,130989,130992,130999,131001,131024,131027,131031,131033,131051,131057,131059,131092,131095,131101,131105,131108,131128,131133,131137,131144,131164,131169,131173,131176,131196,131199,131285,131289,131292,131298,131301],[10,127874,127870],{"id":127875},"_8gymnasium-风格强化学习接口基础",[18,127877,115140],{"id":115139},[14,127879,127880],{},"本章把 MuJoCo 任务封装成类似 Gymnasium 的接口。",[14,127882,127883],{},"你将实现:",[451,127885,127887],{"className":46787,"code":127886,"language":46789,"meta":32,"style":32},"obs, info = env.reset()\nobs, reward, terminated, truncated, info = env.step(action)\n",[457,127888,127889,127899],{"__ignoreMap":32},[460,127890,127891,127894,127896],{"class":462,"line":463},[460,127892,127893],{"class":466},"obs, info ",[460,127895,894],{"class":887},[460,127897,127898],{"class":466}," env.reset()\n",[460,127900,127901,127904,127906],{"class":462,"line":476},[460,127902,127903],{"class":466},"obs, reward, terminated, truncated, info ",[460,127905,894],{"class":887},[460,127907,127908],{"class":466}," env.step(action)\n",[14,127910,127911],{},"这为后续强化学习、模仿学习、VLA 数据采集打基础。",[14,127913,127914,127915,127917],{},"前面章节的代码都是“脚本式”的：在 ",[457,127916,116788],{}," 里写循环。本章要把同样的逻辑封装成环境类。这样强化学习算法就可以用统一方式调用你的 MuJoCo 任务。",[14,127919,127920],{},"可以先记住 Gymnasium 环境的核心交互：",[451,127922,127925],{"className":127923,"code":127924,"language":8391,"meta":32},[21693],"reset 得到初始 obs\n循环：\n  policy 根据 obs 产生 action\n  env.step(action) 返回 next_obs、reward、done 信息\n",[457,127926,127924],{"__ignoreMap":32},[18,127928,115263],{"id":115262},[14,127930,115266],{},[451,127932,127933],{"className":40235,"code":118881,"language":40237,"meta":32,"style":32},[457,127934,127935],{"__ignoreMap":32},[460,127936,127937,127939,127941,127943,127945,127947,127949,127951,127953],{"class":462,"line":463},[460,127938,40989],{"class":929},[460,127940,42726],{"class":1353},[460,127942,40247],{"class":1353},[460,127944,42811],{"class":900},[460,127946,118896],{"class":1353},[460,127948,115291],{"class":1353},[460,127950,116994],{"class":1353},[460,127952,115307],{"class":1353},[460,127954,118905],{"class":1353},[14,127956,117312],{},[451,127958,127960],{"className":40235,"code":127959,"language":40237,"meta":32,"style":32},"pip install \"mujoco>=2.3\" numpy gymnasium\n",[457,127961,127962],{"__ignoreMap":32},[460,127963,127964,127966,127968,127970,127972],{"class":462,"line":463},[460,127965,40244],{"class":929},[460,127967,40247],{"class":1353},[460,127969,115423],{"class":1353},[460,127971,122204],{"class":1353},[460,127973,127974],{"class":1353}," gymnasium\n",[14,127976,117329],{},[451,127978,127980],{"className":40235,"code":127979,"language":40237,"meta":32,"style":32},"conda create -n mujoco-gym-api python=3.10 -y\nconda activate mujoco-gym-api\npip install \"mujoco>=2.3\" numpy gymnasium\n",[457,127981,127982,127999,128008],{"__ignoreMap":32},[460,127983,127984,127986,127988,127990,127993,127995,127997],{"class":462,"line":463},[460,127985,46739],{"class":929},[460,127987,45585],{"class":1353},[460,127989,41528],{"class":900},[460,127991,127992],{"class":1353}," mujoco-gym-api",[460,127994,115468],{"class":1353},[460,127996,115471],{"class":900},[460,127998,115474],{"class":900},[460,128000,128001,128003,128005],{"class":462,"line":476},[460,128002,46739],{"class":929},[460,128004,115481],{"class":1353},[460,128006,128007],{"class":1353}," mujoco-gym-api\n",[460,128009,128010,128012,128014,128016,128018],{"class":462,"line":482},[460,128011,40244],{"class":929},[460,128013,40247],{"class":1353},[460,128015,115423],{"class":1353},[460,128017,122204],{"class":1353},[460,128019,127974],{"class":1353},[14,128021,115497],{},[103,128023,128024,128034,128037,128043],{},[43,128025,128026,128027,128030,128031,44794],{},"本章使用 ",[457,128028,128029],{},"gymnasium","，不是旧版 ",[457,128032,128033],{},"gym",[43,128035,128036],{},"Gymnasium API 与旧 Gym API 有差异。",[43,128038,128039,128040,44794],{},"旧 Gym 常见返回值是 4 个: ",[457,128041,128042],{},"obs, reward, done, info",[43,128044,128045,128046,44794],{},"Gymnasium 返回值是 5 个: ",[457,128047,128048],{},"obs, reward, terminated, truncated, info",[18,128050,115538],{"id":115537},[14,128052,128053],{},"强化学习环境接口包含:",[16884,128055,128056,128065],{},[16887,128057,128058],{},[16890,128059,128060,128063],{},[16893,128061,128062],{"align":40149},"方法",[16893,128064,117189],{"align":40149},[16930,128066,128067,128077,128087,128097],{},[16890,128068,128069,128074],{},[16935,128070,128071],{"align":40149},[457,128072,128073],{},"reset()",[16935,128075,128076],{"align":40149},"重置环境",[16890,128078,128079,128084],{},[16935,128080,128081],{"align":40149},[457,128082,128083],{},"step(action)",[16935,128085,128086],{"align":40149},"执行动作",[16890,128088,128089,128094],{},[16935,128090,128091],{"align":40149},[457,128092,128093],{},"observation_space",[16935,128095,128096],{"align":40149},"观测空间",[16890,128098,128099,128104],{},[16935,128100,128101],{"align":40149},[457,128102,128103],{},"action_space",[16935,128105,40067],{"align":40149},[14,128107,128108],{},"一个最小环境需要完成:",[451,128110,128113],{"className":128111,"code":128112,"language":8391,"meta":32},[21693],"reset 初始化状态\nstep 写入 data.ctrl\nmj_step 推进仿真\n计算 obs\u002Freward\u002Fdone\n返回结果\n",[457,128114,128112],{"__ignoreMap":32},[23,128116,128118,115511,128121,119131],{"id":128117},"terminated-和-truncated-的区别",[457,128119,128120],{},"terminated",[457,128122,128123],{},"truncated",[14,128125,128126],{},"Gymnasium 把“结束”拆成两个概念：",[16884,128128,128129,128139],{},[16887,128130,128131],{},[16890,128132,128133,128135,128137],{},[16893,128134,119067],{"align":40149},[16893,128136,115193],{"align":40149},[16893,128138,37604],{"align":40149},[16930,128140,128141,128153],{},[16890,128142,128143,128147,128150],{},[16935,128144,128145],{"align":40149},[457,128146,128120],{},[16935,128148,128149],{"align":40149},"任务自然结束",[16935,128151,128152],{"align":40149},"机械臂到达目标、机器人摔倒",[16890,128154,128155,128159,128162],{},[16935,128156,128157],{"align":40149},[457,128158,128123],{},[16935,128160,128161],{"align":40149},"因外部限制截断",[16935,128163,128164],{"align":40149},"达到最大步数、时间限制",[14,128166,128167],{},"本章中：",[451,128169,128171],{"className":46787,"code":128170,"language":46789,"meta":32,"style":32},"terminated = dist \u003C 0.05\ntruncated = self.steps >= self.max_steps\n",[457,128172,128173,128188],{"__ignoreMap":32},[460,128174,128175,128178,128180,128183,128185],{"class":462,"line":463},[460,128176,128177],{"class":466},"terminated ",[460,128179,894],{"class":887},[460,128181,128182],{"class":466}," dist ",[460,128184,781],{"class":887},[460,128186,128187],{"class":900}," 0.05\n",[460,128189,128190,128193,128195,128197,128200,128202,128204],{"class":462,"line":476},[460,128191,128192],{"class":466},"truncated ",[460,128194,894],{"class":887},[460,128196,55178],{"class":900},[460,128198,128199],{"class":466},".steps ",[460,128201,3738],{"class":887},[460,128203,55178],{"class":900},[460,128205,128206],{"class":466},".max_steps\n",[14,128208,128209],{},"也就是：",[103,128211,128212,128215],{},[43,128213,128214],{},"末端距离目标小于 0.05，任务成功结束。",[43,128216,128217],{},"步数超过上限，episode 被截断。",[23,128219,128221,115511,128223],{"id":128220},"observation_space-和-action_space",[457,128222,128093],{},[457,128224,128103],{},[14,128226,128227],{},"这两个对象告诉算法：",[451,128229,128232],{"className":128230,"code":128231,"language":8391,"meta":32},[21693],"观测长什么样\n动作允许多大\n",[457,128233,128231],{"__ignoreMap":32},[14,128235,31087],{},[451,128237,128239],{"className":46787,"code":128238,"language":46789,"meta":32,"style":32},"self.action_space = spaces.Box(low=-1.0, high=1.0, shape=(2,), dtype=np.float32)\n",[457,128240,128241],{"__ignoreMap":32},[460,128242,128243,128245,128248,128250,128253,128256,128259,128261,128263,128266,128268,128270,128272,128274,128276,128278,128280,128283,128285,128287],{"class":462,"line":463},[460,128244,47231],{"class":900},[460,128246,128247],{"class":466},".action_space ",[460,128249,894],{"class":887},[460,128251,128252],{"class":466}," spaces.Box(",[460,128254,128255],{"class":3380},"low",[460,128257,128258],{"class":887},"=-",[460,128260,116896],{"class":900},[460,128262,904],{"class":466},[460,128264,128265],{"class":3380},"high",[460,128267,894],{"class":887},[460,128269,116896],{"class":900},[460,128271,904],{"class":466},[460,128273,110456],{"class":3380},[460,128275,894],{"class":887},[460,128277,2174],{"class":466},[460,128279,907],{"class":900},[460,128281,128282],{"class":466},",), ",[460,128284,107993],{"class":3380},[460,128286,894],{"class":887},[460,128288,128289],{"class":466},"np.float32)\n",[14,128291,128292,128293,128296],{},"表示动作是 2 维数组，每个值都在 ",[457,128294,128295],{},"[-1, 1]"," 范围内。",[451,128298,128300],{"className":46787,"code":128299,"language":46789,"meta":32,"style":32},"self.observation_space = spaces.Box(low=-np.inf, high=np.inf, shape=(10,), dtype=np.float32)\n",[457,128301,128302],{"__ignoreMap":32},[460,128303,128304,128306,128309,128311,128313,128315,128317,128320,128322,128324,128326,128328,128330,128332,128334,128336,128338,128340],{"class":462,"line":463},[460,128305,47231],{"class":900},[460,128307,128308],{"class":466},".observation_space ",[460,128310,894],{"class":887},[460,128312,128252],{"class":466},[460,128314,128255],{"class":3380},[460,128316,128258],{"class":887},[460,128318,128319],{"class":466},"np.inf, ",[460,128321,128265],{"class":3380},[460,128323,894],{"class":887},[460,128325,128319],{"class":466},[460,128327,110456],{"class":3380},[460,128329,894],{"class":887},[460,128331,2174],{"class":466},[460,128333,2096],{"class":900},[460,128335,128282],{"class":466},[460,128337,107993],{"class":3380},[460,128339,894],{"class":887},[460,128341,128289],{"class":466},[14,128343,128344],{},"表示观测是 10 维浮点数组，数值范围不强行限制。",[23,128346,128348],{"id":128347},"frame_skip-是什么","frame_skip 是什么",[451,128350,128352],{"className":46787,"code":128351,"language":46789,"meta":32,"style":32},"self.frame_skip = 5\n",[457,128353,128354],{"__ignoreMap":32},[460,128355,128356,128358,128361,128363],{"class":462,"line":463},[460,128357,47231],{"class":900},[460,128359,128360],{"class":466},".frame_skip ",[460,128362,894],{"class":887},[460,128364,70671],{"class":900},[14,128366,128367,128368,128371,128372,128374],{},"表示外部调用一次 ",[457,128369,128370],{},"env.step(action)","，内部连续执行 5 次 MuJoCo ",[457,128373,115708],{},"。这样做很常见，因为控制策略不一定需要每个物理时间步都重新给动作。",[18,128376,115746],{"id":115745},[451,128378,128380],{"className":46787,"code":128379,"language":46789,"meta":32,"style":32},"import gymnasium as gym\nimport mujoco\nimport numpy as np\nfrom gymnasium import spaces\n\n\nXML = \"\"\"\n\u003Cmujoco model=\"gym_reacher\">\n  \u003Coption timestep=\"0.01\" gravity=\"0 0 0\"\u002F>\n\n  \u003Cworldbody>\n    \u003Csite name=\"target\" pos=\"0.5 0 0.4\" size=\"0.04\" rgba=\"1 0 0 1\"\u002F>\n\n    \u003Cbody name=\"link1\" pos=\"0 0 0.4\">\n      \u003Cjoint name=\"joint1\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n      \u003Cgeom name=\"link1_geom\" type=\"capsule\" fromto=\"0 0 0 0.3 0 0\" size=\"0.025\" mass=\"0.2\"\u002F>\n\n      \u003Cbody name=\"link2\" pos=\"0.3 0 0\">\n        \u003Cjoint name=\"joint2\" type=\"hinge\" axis=\"0 1 0\" damping=\"0.1\"\u002F>\n        \u003Cgeom name=\"link2_geom\" type=\"capsule\" fromto=\"0 0 0 0.3 0 0\" size=\"0.025\" mass=\"0.2\"\u002F>\n        \u003Csite name=\"tip\" pos=\"0.3 0 0\" size=\"0.03\" rgba=\"0 0 1 1\"\u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fbody>\n  \u003C\u002Fworldbody>\n\n  \u003Cactuator>\n    \u003Cmotor name=\"motor1\" joint=\"joint1\" gear=\"1\" ctrlrange=\"-1 1\" ctrllimited=\"true\"\u002F>\n    \u003Cmotor name=\"motor2\" joint=\"joint2\" gear=\"1\" ctrlrange=\"-1 1\" ctrllimited=\"true\"\u002F>\n  \u003C\u002Factuator>\n\u003C\u002Fmujoco>\n\"\"\"\n\n\nclass ReacherEnv(gym.Env):\n    metadata = {\"render_modes\": []}\n\n    def __init__(self) -> None:\n        super().__init__()\n        self.model = mujoco.MjModel.from_xml_string(XML)\n        self.data = mujoco.MjData(self.model)\n\n        self.tip_site_id = mujoco.mj_name2id(self.model, mujoco.mjtObj.mjOBJ_SITE, \"tip\")\n        self.target_site_id = mujoco.mj_name2id(self.model, mujoco.mjtObj.mjOBJ_SITE, \"target\")\n        if self.tip_site_id \u003C 0 or self.target_site_id \u003C 0:\n            raise RuntimeError(\"required sites not found\")\n\n        self.frame_skip = 5\n        self.max_steps = 200\n        self.steps = 0\n\n        self.action_space = spaces.Box(low=-1.0, high=1.0, shape=(2,), dtype=np.float32)\n        self.observation_space = spaces.Box(low=-np.inf, high=np.inf, shape=(10,), dtype=np.float32)\n\n    def _get_obs(self) -> np.ndarray:\n        tip = self.data.site_xpos[self.tip_site_id].copy()\n        target = self.data.site_xpos[self.target_site_id].copy()\n        obs = np.concatenate([self.data.qpos.copy(), self.data.qvel.copy(), tip, target])\n        return obs.astype(np.float32)\n\n    def _get_reward(self) -> float:\n        tip = self.data.site_xpos[self.tip_site_id]\n        target = self.data.site_xpos[self.target_site_id]\n        dist = np.linalg.norm(tip - target)\n        control_cost = 0.01 * np.sum(np.square(self.data.ctrl))\n        return float(-dist - control_cost)\n\n    def reset(self, *, seed: int | None = None, options: dict | None = None):\n        super().reset(seed=seed)\n        mujoco.mj_resetData(self.model, self.data)\n\n        self.data.qpos[:] = self.np_random.uniform(low=-0.1, high=0.1, size=self.model.nq)\n        self.data.qvel[:] = 0.0\n        mujoco.mj_forward(self.model, self.data)\n\n        self.steps = 0\n        return self._get_obs(), {}\n\n    def step(self, action):\n        action = np.asarray(action, dtype=np.float32)\n        action = np.clip(action, self.action_space.low, self.action_space.high)\n\n        self.data.ctrl[:] = action\n        for _ in range(self.frame_skip):\n            mujoco.mj_step(self.model, self.data)\n\n        self.steps += 1\n\n        obs = self._get_obs()\n        reward = self._get_reward()\n\n        tip = self.data.site_xpos[self.tip_site_id]\n        target = self.data.site_xpos[self.target_site_id]\n        dist = float(np.linalg.norm(tip - target))\n\n        terminated = dist \u003C 0.05\n        truncated = self.steps >= self.max_steps\n        info = {\"distance\": dist}\n        return obs, reward, terminated, truncated, info\n\n\ndef main() -> None:\n    env = ReacherEnv()\n    obs, info = env.reset(seed=0)\n    print(\"initial obs shape:\", obs.shape)\n    print(\"initial info:\", info)\n\n    total_reward = 0.0\n    for step in range(20):\n        action = env.action_space.sample()\n        obs, reward, terminated, truncated, info = env.step(action)\n        total_reward += reward\n        print(\"step:\", step, \"reward:\", round(reward, 3), \"distance:\", round(info[\"distance\"], 3))\n        if terminated or truncated:\n            break\n\n    print(\"total_reward:\", round(total_reward, 3))\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,128381,128382,128394,128400,128410,128421,128425,128429,128437,128442,128446,128450,128454,128458,128462,128466,128470,128475,128479,128483,128487,128492,128496,128500,128504,128508,128512,128516,128520,128524,128528,128532,128536,128540,128544,128562,128577,128581,128594,128604,128619,128636,128640,128661,128680,128705,128719,128723,128733,128745,128755,128759,128801,128839,128843,128853,128869,128884,128903,128910,128914,128927,128942,128957,128970,128989,129005,129009,129050,129065,129080,129084,129123,129134,129147,129151,129161,129170,129174,129184,129199,129217,129221,129232,129249,129262,129266,129276,129280,129291,129302,129306,129320,129334,129350,129354,129367,129384,129399,129406,129410,129414,129426,129436,129454,129466,129478,129482,129490,129506,129515,129524,129532,129574,129587,129592,129596,129614,129618,129622,129634],{"__ignoreMap":32},[460,128383,128384,128386,128389,128391],{"class":462,"line":463},[460,128385,46801],{"class":887},[460,128387,128388],{"class":466}," gymnasium ",[460,128390,47790],{"class":887},[460,128392,128393],{"class":466}," gym\n",[460,128395,128396,128398],{"class":462,"line":476},[460,128397,46801],{"class":887},[460,128399,115794],{"class":466},[460,128401,128402,128404,128406,128408],{"class":462,"line":482},[460,128403,46801],{"class":887},[460,128405,47787],{"class":466},[460,128407,47790],{"class":887},[460,128409,47793],{"class":466},[460,128411,128412,128414,128416,128418],{"class":462,"line":488},[460,128413,47145],{"class":887},[460,128415,128388],{"class":466},[460,128417,46801],{"class":887},[460,128419,128420],{"class":466}," spaces\n",[460,128422,128423],{"class":462,"line":494},[460,128424,522],{"emptyLinePlaceholder":521},[460,128426,128427],{"class":462,"line":500},[460,128428,522],{"emptyLinePlaceholder":521},[460,128430,128431,128433,128435],{"class":462,"line":506},[460,128432,115807],{"class":900},[460,128434,2943],{"class":887},[460,128436,115812],{"class":1353},[460,128438,128439],{"class":462,"line":512},[460,128440,128441],{"class":1353},"\u003Cmujoco model=\"gym_reacher\">\n",[460,128443,128444],{"class":462,"line":518},[460,128445,126231],{"class":1353},[460,128447,128448],{"class":462,"line":525},[460,128449,522],{"emptyLinePlaceholder":521},[460,128451,128452],{"class":462,"line":531},[460,128453,115831],{"class":1353},[460,128455,128456],{"class":462,"line":537},[460,128457,126249],{"class":1353},[460,128459,128460],{"class":462,"line":543},[460,128461,522],{"emptyLinePlaceholder":521},[460,128463,128464],{"class":462,"line":549},[460,128465,126258],{"class":1353},[460,128467,128468],{"class":462,"line":555},[460,128469,126263],{"class":1353},[460,128471,128472],{"class":462,"line":560},[460,128473,128474],{"class":1353},"      \u003Cgeom name=\"link1_geom\" type=\"capsule\" fromto=\"0 0 0 0.3 0 0\" size=\"0.025\" mass=\"0.2\"\u002F>\n",[460,128476,128477],{"class":462,"line":566},[460,128478,522],{"emptyLinePlaceholder":521},[460,128480,128481],{"class":462,"line":572},[460,128482,126277],{"class":1353},[460,128484,128485],{"class":462,"line":578},[460,128486,126282],{"class":1353},[460,128488,128489],{"class":462,"line":812},[460,128490,128491],{"class":1353},"        \u003Cgeom name=\"link2_geom\" type=\"capsule\" fromto=\"0 0 0 0.3 0 0\" size=\"0.025\" mass=\"0.2\"\u002F>\n",[460,128493,128494],{"class":462,"line":818},[460,128495,126292],{"class":1353},[460,128497,128498],{"class":462,"line":824},[460,128499,120931],{"class":1353},[460,128501,128502],{"class":462,"line":2074},[460,128503,115860],{"class":1353},[460,128505,128506],{"class":462,"line":2088},[460,128507,115865],{"class":1353},[460,128509,128510],{"class":462,"line":2103},[460,128511,522],{"emptyLinePlaceholder":521},[460,128513,128514],{"class":462,"line":2122},[460,128515,120948],{"class":1353},[460,128517,128518],{"class":462,"line":2144},[460,128519,126317],{"class":1353},[460,128521,128522],{"class":462,"line":2158},[460,128523,126322],{"class":1353},[460,128525,128526],{"class":462,"line":2163},[460,128527,120958],{"class":1353},[460,128529,128530],{"class":462,"line":2168},[460,128531,115870],{"class":1353},[460,128533,128534],{"class":462,"line":2183},[460,128535,110191],{"class":1353},[460,128537,128538],{"class":462,"line":2194},[460,128539,522],{"emptyLinePlaceholder":521},[460,128541,128542],{"class":462,"line":2199},[460,128543,522],{"emptyLinePlaceholder":521},[460,128545,128546,128548,128551,128553,128555,128557,128560],{"class":462,"line":2204},[460,128547,31148],{"class":887},[460,128549,128550],{"class":929}," ReacherEnv",[460,128552,2174],{"class":466},[460,128554,128033],{"class":929},[460,128556,6000],{"class":466},[460,128558,128559],{"class":929},"Env",[460,128561,47194],{"class":466},[460,128563,128564,128567,128569,128571,128574],{"class":462,"line":2212},[460,128565,128566],{"class":466},"    metadata ",[460,128568,894],{"class":887},[460,128570,20959],{"class":466},[460,128572,128573],{"class":1353},"\"render_modes\"",[460,128575,128576],{"class":466},": []}\n",[460,128578,128579],{"class":462,"line":2257},[460,128580,522],{"emptyLinePlaceholder":521},[460,128582,128583,128585,128587,128590,128592],{"class":462,"line":2285},[460,128584,47209],{"class":887},[460,128586,47212],{"class":900},[460,128588,128589],{"class":466},"(self) -> ",[460,128591,110179],{"class":900},[460,128593,20257],{"class":466},[460,128595,128596,128598,128600,128602],{"class":462,"line":2298},[460,128597,47225],{"class":900},[460,128599,11396],{"class":466},[460,128601,47236],{"class":900},[460,128603,10758],{"class":466},[460,128605,128606,128608,128611,128613,128615,128617],{"class":462,"line":2303},[460,128607,47252],{"class":900},[460,128609,128610],{"class":466},".model ",[460,128612,894],{"class":887},[460,128614,115905],{"class":466},[460,128616,115807],{"class":900},[460,128618,3754],{"class":466},[460,128620,128621,128623,128626,128628,128631,128633],{"class":462,"line":2308},[460,128622,47252],{"class":900},[460,128624,128625],{"class":466},".data ",[460,128627,894],{"class":887},[460,128629,128630],{"class":466}," mujoco.MjData(",[460,128632,47231],{"class":900},[460,128634,128635],{"class":466},".model)\n",[460,128637,128638],{"class":462,"line":2318},[460,128639,522],{"emptyLinePlaceholder":521},[460,128641,128642,128644,128647,128649,128652,128654,128657,128659],{"class":462,"line":2333},[460,128643,47252],{"class":900},[460,128645,128646],{"class":466},".tip_site_id ",[460,128648,894],{"class":887},[460,128650,128651],{"class":466}," mujoco.mj_name2id(",[460,128653,47231],{"class":900},[460,128655,128656],{"class":466},".model, mujoco.mjtObj.mjOBJ_SITE, ",[460,128658,126029],{"class":1353},[460,128660,3754],{"class":466},[460,128662,128663,128665,128668,128670,128672,128674,128676,128678],{"class":462,"line":2338},[460,128664,47252],{"class":900},[460,128666,128667],{"class":466},".target_site_id ",[460,128669,894],{"class":887},[460,128671,128651],{"class":466},[460,128673,47231],{"class":900},[460,128675,128656],{"class":466},[460,128677,126452],{"class":1353},[460,128679,3754],{"class":466},[460,128681,128682,128684,128686,128688,128690,128692,128695,128697,128699,128701,128703],{"class":462,"line":2343},[460,128683,3702],{"class":887},[460,128685,55178],{"class":900},[460,128687,128646],{"class":466},[460,128689,781],{"class":887},[460,128691,2224],{"class":900},[460,128693,128694],{"class":887}," or",[460,128696,55178],{"class":900},[460,128698,128667],{"class":466},[460,128700,781],{"class":887},[460,128702,2224],{"class":900},[460,128704,20257],{"class":466},[460,128706,128707,128710,128712,128714,128717],{"class":462,"line":2353},[460,128708,128709],{"class":887},"            raise",[460,128711,117928],{"class":900},[460,128713,2174],{"class":466},[460,128715,128716],{"class":1353},"\"required sites not found\"",[460,128718,3754],{"class":466},[460,128720,128721],{"class":462,"line":2368},[460,128722,522],{"emptyLinePlaceholder":521},[460,128724,128725,128727,128729,128731],{"class":462,"line":2381},[460,128726,47252],{"class":900},[460,128728,128360],{"class":466},[460,128730,894],{"class":887},[460,128732,70671],{"class":900},[460,128734,128735,128737,128740,128742],{"class":462,"line":2394},[460,128736,47252],{"class":900},[460,128738,128739],{"class":466},".max_steps ",[460,128741,894],{"class":887},[460,128743,128744],{"class":900}," 200\n",[460,128746,128747,128749,128751,128753],{"class":462,"line":2399},[460,128748,47252],{"class":900},[460,128750,128199],{"class":466},[460,128752,894],{"class":887},[460,128754,13996],{"class":900},[460,128756,128757],{"class":462,"line":2404},[460,128758,522],{"emptyLinePlaceholder":521},[460,128760,128761,128763,128765,128767,128769,128771,128773,128775,128777,128779,128781,128783,128785,128787,128789,128791,128793,128795,128797,128799],{"class":462,"line":2414},[460,128762,47252],{"class":900},[460,128764,128247],{"class":466},[460,128766,894],{"class":887},[460,128768,128252],{"class":466},[460,128770,128255],{"class":3380},[460,128772,128258],{"class":887},[460,128774,116896],{"class":900},[460,128776,904],{"class":466},[460,128778,128265],{"class":3380},[460,128780,894],{"class":887},[460,128782,116896],{"class":900},[460,128784,904],{"class":466},[460,128786,110456],{"class":3380},[460,128788,894],{"class":887},[460,128790,2174],{"class":466},[460,128792,907],{"class":900},[460,128794,128282],{"class":466},[460,128796,107993],{"class":3380},[460,128798,894],{"class":887},[460,128800,128289],{"class":466},[460,128802,128803,128805,128807,128809,128811,128813,128815,128817,128819,128821,128823,128825,128827,128829,128831,128833,128835,128837],{"class":462,"line":2428},[460,128804,47252],{"class":900},[460,128806,128308],{"class":466},[460,128808,894],{"class":887},[460,128810,128252],{"class":466},[460,128812,128255],{"class":3380},[460,128814,128258],{"class":887},[460,128816,128319],{"class":466},[460,128818,128265],{"class":3380},[460,128820,894],{"class":887},[460,128822,128319],{"class":466},[460,128824,110456],{"class":3380},[460,128826,894],{"class":887},[460,128828,2174],{"class":466},[460,128830,2096],{"class":900},[460,128832,128282],{"class":466},[460,128834,107993],{"class":3380},[460,128836,894],{"class":887},[460,128838,128289],{"class":466},[460,128840,128841],{"class":462,"line":2440},[460,128842,522],{"emptyLinePlaceholder":521},[460,128844,128845,128847,128850],{"class":462,"line":2445},[460,128846,47209],{"class":887},[460,128848,128849],{"class":929}," _get_obs",[460,128851,128852],{"class":466},"(self) -> np.ndarray:\n",[460,128854,128855,128857,128859,128861,128864,128866],{"class":462,"line":2450},[460,128856,126630],{"class":466},[460,128858,894],{"class":887},[460,128860,55178],{"class":900},[460,128862,128863],{"class":466},".data.site_xpos[",[460,128865,47231],{"class":900},[460,128867,128868],{"class":466},".tip_site_id].copy()\n",[460,128870,128871,128873,128875,128877,128879,128881],{"class":462,"line":2460},[460,128872,126643],{"class":466},[460,128874,894],{"class":887},[460,128876,55178],{"class":900},[460,128878,128863],{"class":466},[460,128880,47231],{"class":900},[460,128882,128883],{"class":466},".target_site_id].copy()\n",[460,128885,128886,128888,128890,128893,128895,128898,128900],{"class":462,"line":2473},[460,128887,124675],{"class":466},[460,128889,894],{"class":887},[460,128891,128892],{"class":466}," np.concatenate([",[460,128894,47231],{"class":900},[460,128896,128897],{"class":466},".data.qpos.copy(), ",[460,128899,47231],{"class":900},[460,128901,128902],{"class":466},".data.qvel.copy(), tip, target])\n",[460,128904,128905,128907],{"class":462,"line":2487},[460,128906,31206],{"class":887},[460,128908,128909],{"class":466}," obs.astype(np.float32)\n",[460,128911,128912],{"class":462,"line":2492},[460,128913,522],{"emptyLinePlaceholder":521},[460,128915,128916,128918,128921,128923,128925],{"class":462,"line":2497},[460,128917,47209],{"class":887},[460,128919,128920],{"class":929}," _get_reward",[460,128922,128589],{"class":466},[460,128924,16793],{"class":900},[460,128926,20257],{"class":466},[460,128928,128929,128931,128933,128935,128937,128939],{"class":462,"line":2505},[460,128930,126630],{"class":466},[460,128932,894],{"class":887},[460,128934,55178],{"class":900},[460,128936,128863],{"class":466},[460,128938,47231],{"class":900},[460,128940,128941],{"class":466},".tip_site_id]\n",[460,128943,128944,128946,128948,128950,128952,128954],{"class":462,"line":2516},[460,128945,126643],{"class":466},[460,128947,894],{"class":887},[460,128949,55178],{"class":900},[460,128951,128863],{"class":466},[460,128953,47231],{"class":900},[460,128955,128956],{"class":466},".target_site_id]\n",[460,128958,128959,128962,128964,128966,128968],{"class":462,"line":2529},[460,128960,128961],{"class":466},"        dist ",[460,128963,894],{"class":887},[460,128965,126094],{"class":466},[460,128967,17259],{"class":887},[460,128969,126099],{"class":466},[460,128971,128972,128975,128977,128979,128981,128984,128986],{"class":462,"line":2542},[460,128973,128974],{"class":466},"        control_cost ",[460,128976,894],{"class":887},[460,128978,126530],{"class":900},[460,128980,8325],{"class":887},[460,128982,128983],{"class":466}," np.sum(np.square(",[460,128985,47231],{"class":900},[460,128987,128988],{"class":466},".data.ctrl))\n",[460,128990,128991,128993,128995,128997,128999,129001,129003],{"class":462,"line":2559},[460,128992,31206],{"class":887},[460,128994,124290],{"class":900},[460,128996,2174],{"class":466},[460,128998,17259],{"class":887},[460,129000,126089],{"class":466},[460,129002,17259],{"class":887},[460,129004,126552],{"class":466},[460,129006,129007],{"class":462,"line":2564},[460,129008,522],{"emptyLinePlaceholder":521},[460,129010,129011,129013,129016,129019,129021,129024,129026,129028,129030,129032,129034,129037,129040,129042,129044,129046,129048],{"class":462,"line":2569},[460,129012,47209],{"class":887},[460,129014,129015],{"class":929}," reset",[460,129017,129018],{"class":466},"(self, ",[460,129020,8320],{"class":887},[460,129022,129023],{"class":466},", seed: ",[460,129025,16759],{"class":900},[460,129027,41522],{"class":887},[460,129029,55238],{"class":900},[460,129031,2943],{"class":887},[460,129033,55238],{"class":900},[460,129035,129036],{"class":466},", options: ",[460,129038,129039],{"class":900},"dict",[460,129041,41522],{"class":887},[460,129043,55238],{"class":900},[460,129045,2943],{"class":887},[460,129047,55238],{"class":900},[460,129049,47194],{"class":466},[460,129051,129052,129054,129057,129060,129062],{"class":462,"line":2579},[460,129053,47225],{"class":900},[460,129055,129056],{"class":466},"().reset(",[460,129058,129059],{"class":3380},"seed",[460,129061,894],{"class":887},[460,129063,129064],{"class":466},"seed)\n",[460,129066,129067,129070,129072,129075,129077],{"class":462,"line":2597},[460,129068,129069],{"class":466},"        mujoco.mj_resetData(",[460,129071,47231],{"class":900},[460,129073,129074],{"class":466},".model, ",[460,129076,47231],{"class":900},[460,129078,129079],{"class":466},".data)\n",[460,129081,129082],{"class":462,"line":2610},[460,129083,522],{"emptyLinePlaceholder":521},[460,129085,129086,129088,129091,129093,129095,129098,129100,129102,129104,129106,129108,129110,129112,129114,129116,129118,129120],{"class":462,"line":2621},[460,129087,47252],{"class":900},[460,129089,129090],{"class":466},".data.qpos[:] ",[460,129092,894],{"class":887},[460,129094,55178],{"class":900},[460,129096,129097],{"class":466},".np_random.uniform(",[460,129099,128255],{"class":3380},[460,129101,128258],{"class":887},[460,129103,9984],{"class":900},[460,129105,904],{"class":466},[460,129107,128265],{"class":3380},[460,129109,894],{"class":887},[460,129111,9984],{"class":900},[460,129113,904],{"class":466},[460,129115,47902],{"class":3380},[460,129117,894],{"class":887},[460,129119,47231],{"class":900},[460,129121,129122],{"class":466},".model.nq)\n",[460,129124,129125,129127,129130,129132],{"class":462,"line":2634},[460,129126,47252],{"class":900},[460,129128,129129],{"class":466},".data.qvel[:] ",[460,129131,894],{"class":887},[460,129133,119254],{"class":900},[460,129135,129136,129139,129141,129143,129145],{"class":462,"line":2648},[460,129137,129138],{"class":466},"        mujoco.mj_forward(",[460,129140,47231],{"class":900},[460,129142,129074],{"class":466},[460,129144,47231],{"class":900},[460,129146,129079],{"class":466},[460,129148,129149],{"class":462,"line":2653},[460,129150,522],{"emptyLinePlaceholder":521},[460,129152,129153,129155,129157,129159],{"class":462,"line":2658},[460,129154,47252],{"class":900},[460,129156,128199],{"class":466},[460,129158,894],{"class":887},[460,129160,13996],{"class":900},[460,129162,129163,129165,129167],{"class":462,"line":2670},[460,129164,31206],{"class":887},[460,129166,55178],{"class":900},[460,129168,129169],{"class":466},"._get_obs(), {}\n",[460,129171,129172],{"class":462,"line":2683},[460,129173,522],{"emptyLinePlaceholder":521},[460,129175,129176,129178,129181],{"class":462,"line":2695},[460,129177,47209],{"class":887},[460,129179,129180],{"class":929}," step",[460,129182,129183],{"class":466},"(self, action):\n",[460,129185,129186,129188,129190,129193,129195,129197],{"class":462,"line":2700},[460,129187,124715],{"class":466},[460,129189,894],{"class":887},[460,129191,129192],{"class":466}," np.asarray(action, ",[460,129194,107993],{"class":3380},[460,129196,894],{"class":887},[460,129198,128289],{"class":466},[460,129200,129201,129203,129205,129207,129209,129212,129214],{"class":462,"line":2709},[460,129202,124715],{"class":466},[460,129204,894],{"class":887},[460,129206,121940],{"class":466},[460,129208,47231],{"class":900},[460,129210,129211],{"class":466},".action_space.low, ",[460,129213,47231],{"class":900},[460,129215,129216],{"class":466},".action_space.high)\n",[460,129218,129219],{"class":462,"line":2718},[460,129220,522],{"emptyLinePlaceholder":521},[460,129222,129223,129225,129228,129230],{"class":462,"line":2723},[460,129224,47252],{"class":900},[460,129226,129227],{"class":466},".data.ctrl[:] ",[460,129229,894],{"class":887},[460,129231,121963],{"class":466},[460,129233,129234,129236,129238,129240,129242,129244,129246],{"class":462,"line":2732},[460,129235,19924],{"class":887},[460,129237,115994],{"class":466},[460,129239,11713],{"class":887},[460,129241,48848],{"class":900},[460,129243,2174],{"class":466},[460,129245,47231],{"class":900},[460,129247,129248],{"class":466},".frame_skip):\n",[460,129250,129251,129254,129256,129258,129260],{"class":462,"line":2750},[460,129252,129253],{"class":466},"            mujoco.mj_step(",[460,129255,47231],{"class":900},[460,129257,129074],{"class":466},[460,129259,47231],{"class":900},[460,129261,129079],{"class":466},[460,129263,129264],{"class":462,"line":2782},[460,129265,522],{"emptyLinePlaceholder":521},[460,129267,129268,129270,129272,129274],{"class":462,"line":2809},[460,129269,47252],{"class":900},[460,129271,128199],{"class":466},[460,129273,3467],{"class":887},[460,129275,71910],{"class":900},[460,129277,129278],{"class":462,"line":2836},[460,129279,522],{"emptyLinePlaceholder":521},[460,129281,129282,129284,129286,129288],{"class":462,"line":2856},[460,129283,124675],{"class":466},[460,129285,894],{"class":887},[460,129287,55178],{"class":900},[460,129289,129290],{"class":466},"._get_obs()\n",[460,129292,129293,129295,129297,129299],{"class":462,"line":2865},[460,129294,124780],{"class":466},[460,129296,894],{"class":887},[460,129298,55178],{"class":900},[460,129300,129301],{"class":466},"._get_reward()\n",[460,129303,129304],{"class":462,"line":2881},[460,129305,522],{"emptyLinePlaceholder":521},[460,129307,129308,129310,129312,129314,129316,129318],{"class":462,"line":2887},[460,129309,126630],{"class":466},[460,129311,894],{"class":887},[460,129313,55178],{"class":900},[460,129315,128863],{"class":466},[460,129317,47231],{"class":900},[460,129319,128941],{"class":466},[460,129321,129322,129324,129326,129328,129330,129332],{"class":462,"line":2893},[460,129323,126643],{"class":466},[460,129325,894],{"class":887},[460,129327,55178],{"class":900},[460,129329,128863],{"class":466},[460,129331,47231],{"class":900},[460,129333,128956],{"class":466},[460,129335,129336,129338,129340,129342,129345,129347],{"class":462,"line":2899},[460,129337,128961],{"class":466},[460,129339,894],{"class":887},[460,129341,124290],{"class":900},[460,129343,129344],{"class":466},"(np.linalg.norm(tip ",[460,129346,17259],{"class":887},[460,129348,129349],{"class":466}," target))\n",[460,129351,129352],{"class":462,"line":2905},[460,129353,522],{"emptyLinePlaceholder":521},[460,129355,129356,129359,129361,129363,129365],{"class":462,"line":2911},[460,129357,129358],{"class":466},"        terminated ",[460,129360,894],{"class":887},[460,129362,128182],{"class":466},[460,129364,781],{"class":887},[460,129366,128187],{"class":900},[460,129368,129369,129372,129374,129376,129378,129380,129382],{"class":462,"line":2920},[460,129370,129371],{"class":466},"        truncated ",[460,129373,894],{"class":887},[460,129375,55178],{"class":900},[460,129377,128199],{"class":466},[460,129379,3738],{"class":887},[460,129381,55178],{"class":900},[460,129383,128206],{"class":466},[460,129385,129386,129389,129391,129393,129396],{"class":462,"line":2929},[460,129387,129388],{"class":466},"        info ",[460,129390,894],{"class":887},[460,129392,20959],{"class":466},[460,129394,129395],{"class":1353},"\"distance\"",[460,129397,129398],{"class":466},": dist}\n",[460,129400,129401,129403],{"class":462,"line":2935},[460,129402,31206],{"class":887},[460,129404,129405],{"class":466}," obs, reward, terminated, truncated, info\n",[460,129407,129408],{"class":462,"line":2948},[460,129409,522],{"emptyLinePlaceholder":521},[460,129411,129412],{"class":462,"line":2954},[460,129413,522],{"emptyLinePlaceholder":521},[460,129415,129416,129418,129420,129422,129424],{"class":462,"line":2965},[460,129417,48352],{"class":887},[460,129419,18514],{"class":929},[460,129421,115891],{"class":466},[460,129423,110179],{"class":900},[460,129425,20257],{"class":466},[460,129427,129428,129431,129433],{"class":462,"line":2976},[460,129429,129430],{"class":466},"    env ",[460,129432,894],{"class":887},[460,129434,129435],{"class":466}," ReacherEnv()\n",[460,129437,129438,129441,129443,129446,129448,129450,129452],{"class":462,"line":2987},[460,129439,129440],{"class":466},"    obs, info ",[460,129442,894],{"class":887},[460,129444,129445],{"class":466}," env.reset(",[460,129447,129059],{"class":3380},[460,129449,894],{"class":887},[460,129451,936],{"class":900},[460,129453,3754],{"class":466},[460,129455,129456,129458,129460,129463],{"class":462,"line":2998},[460,129457,47706],{"class":900},[460,129459,2174],{"class":466},[460,129461,129462],{"class":1353},"\"initial obs shape:\"",[460,129464,129465],{"class":466},", obs.shape)\n",[460,129467,129468,129470,129472,129475],{"class":462,"line":3003},[460,129469,47706],{"class":900},[460,129471,2174],{"class":466},[460,129473,129474],{"class":1353},"\"initial info:\"",[460,129476,129477],{"class":466},", info)\n",[460,129479,129480],{"class":462,"line":3008},[460,129481,522],{"emptyLinePlaceholder":521},[460,129483,129484,129486,129488],{"class":462,"line":3018},[460,129485,124646],{"class":466},[460,129487,894],{"class":887},[460,129489,119254],{"class":900},[460,129491,129492,129494,129496,129498,129500,129502,129504],{"class":462,"line":3028},[460,129493,19722],{"class":887},[460,129495,48021],{"class":466},[460,129497,11713],{"class":887},[460,129499,48848],{"class":900},[460,129501,2174],{"class":466},[460,129503,2110],{"class":900},[460,129505,47194],{"class":466},[460,129507,129508,129510,129512],{"class":462,"line":3038},[460,129509,124715],{"class":466},[460,129511,894],{"class":887},[460,129513,129514],{"class":466}," env.action_space.sample()\n",[460,129516,129517,129520,129522],{"class":462,"line":3048},[460,129518,129519],{"class":466},"        obs, reward, terminated, truncated, info ",[460,129521,894],{"class":887},[460,129523,127908],{"class":466},[460,129525,129526,129528,129530],{"class":462,"line":3053},[460,129527,124790],{"class":466},[460,129529,3467],{"class":887},[460,129531,124795],{"class":466},[460,129533,129534,129536,129538,129540,129542,129545,129547,129549,129552,129554,129556,129559,129561,129563,129566,129568,129570,129572],{"class":462,"line":3058},[460,129535,48856],{"class":900},[460,129537,2174],{"class":466},[460,129539,124824],{"class":1353},[460,129541,124827],{"class":466},[460,129543,129544],{"class":1353},"\"reward:\"",[460,129546,904],{"class":466},[460,129548,48423],{"class":900},[460,129550,129551],{"class":466},"(reward, ",[460,129553,913],{"class":900},[460,129555,124838],{"class":466},[460,129557,129558],{"class":1353},"\"distance:\"",[460,129560,904],{"class":466},[460,129562,48423],{"class":900},[460,129564,129565],{"class":466},"(info[",[460,129567,129395],{"class":1353},[460,129569,126695],{"class":466},[460,129571,913],{"class":900},[460,129573,6311],{"class":466},[460,129575,129576,129578,129581,129584],{"class":462,"line":3068},[460,129577,3702],{"class":887},[460,129579,129580],{"class":466}," terminated ",[460,129582,129583],{"class":887},"or",[460,129585,129586],{"class":466}," truncated:\n",[460,129588,129589],{"class":462,"line":3078},[460,129590,129591],{"class":887},"            break\n",[460,129593,129594],{"class":462,"line":3088},[460,129595,522],{"emptyLinePlaceholder":521},[460,129597,129598,129600,129602,129604,129606,129608,129610,129612],{"class":462,"line":3098},[460,129599,47706],{"class":900},[460,129601,2174],{"class":466},[460,129603,124869],{"class":1353},[460,129605,904],{"class":466},[460,129607,48423],{"class":900},[460,129609,124876],{"class":466},[460,129611,913],{"class":900},[460,129613,6311],{"class":466},[460,129615,129616],{"class":462,"line":3103},[460,129617,522],{"emptyLinePlaceholder":521},[460,129619,129620],{"class":462,"line":3108},[460,129621,522],{"emptyLinePlaceholder":521},[460,129623,129624,129626,129628,129630,129632],{"class":462,"line":3118},[460,129625,18100],{"class":887},[460,129627,47627],{"class":900},[460,129629,116052],{"class":887},[460,129631,116055],{"class":1353},[460,129633,20257],{"class":466},[460,129635,129636],{"class":462,"line":3128},[460,129637,116062],{"class":466},[14,129639,118063],{},[451,129641,129643],{"className":40235,"code":129642,"language":40237,"meta":32,"style":32},"touch ch8_gym_env.py\n",[457,129644,129645],{"__ignoreMap":32},[460,129646,129647,129649],{"class":462,"line":463},[460,129648,115776],{"class":929},[460,129650,129651],{"class":1353}," ch8_gym_env.py\n",[14,129653,124937],{},[451,129655,129657],{"className":40235,"code":129656,"language":40237,"meta":32,"style":32},"python ch8_gym_env.py\n",[457,129658,129659],{"__ignoreMap":32},[460,129660,129661,129663],{"class":462,"line":463},[460,129662,46789],{"class":929},[460,129664,129651],{"class":1353},[23,129666,116065],{"id":116065},[14,129668,129669],{},"继承 Gymnasium 环境：",[451,129671,129673],{"className":46787,"code":129672,"language":46789,"meta":32,"style":32},"class ReacherEnv(gym.Env):\n",[457,129674,129675],{"__ignoreMap":32},[460,129676,129677,129679,129681,129683,129685,129687,129689],{"class":462,"line":463},[460,129678,31148],{"class":887},[460,129680,128550],{"class":929},[460,129682,2174],{"class":466},[460,129684,128033],{"class":929},[460,129686,6000],{"class":466},[460,129688,128559],{"class":929},[460,129690,47194],{"class":466},[14,129692,129693],{},"这表示你在定义一个符合 Gymnasium 规范的环境。",[14,129695,129696],{},"初始化模型：",[451,129698,129700],{"className":46787,"code":129699,"language":46789,"meta":32,"style":32},"self.model = mujoco.MjModel.from_xml_string(XML)\nself.data = mujoco.MjData(self.model)\n",[457,129701,129702,129716],{"__ignoreMap":32},[460,129703,129704,129706,129708,129710,129712,129714],{"class":462,"line":463},[460,129705,47231],{"class":900},[460,129707,128610],{"class":466},[460,129709,894],{"class":887},[460,129711,115905],{"class":466},[460,129713,115807],{"class":900},[460,129715,3754],{"class":466},[460,129717,129718,129720,129722,129724,129726,129728],{"class":462,"line":476},[460,129719,47231],{"class":900},[460,129721,128625],{"class":466},[460,129723,894],{"class":887},[460,129725,128630],{"class":466},[460,129727,47231],{"class":900},[460,129729,128635],{"class":466},[14,129731,129732,129733,129735],{},"这和前面章节一样，只是现在放到了类的 ",[457,129734,47236],{}," 里。",[14,129737,129738],{},"缓存 site ID：",[451,129740,129742],{"className":46787,"code":129741,"language":46789,"meta":32,"style":32},"self.tip_site_id = mujoco.mj_name2id(...)\nself.target_site_id = mujoco.mj_name2id(...)\n",[457,129743,129744,129758],{"__ignoreMap":32},[460,129745,129746,129748,129750,129752,129754,129756],{"class":462,"line":463},[460,129747,47231],{"class":900},[460,129749,128646],{"class":466},[460,129751,894],{"class":887},[460,129753,128651],{"class":466},[460,129755,13383],{"class":900},[460,129757,3754],{"class":466},[460,129759,129760,129762,129764,129766,129768,129770],{"class":462,"line":476},[460,129761,47231],{"class":900},[460,129763,128667],{"class":466},[460,129765,894],{"class":887},[460,129767,128651],{"class":466},[460,129769,13383],{"class":900},[460,129771,3754],{"class":466},[14,129773,129774],{},"不要每次 step 都重复查名字。初始化时查一次 ID，后面直接用 ID 读取数组更清晰。",[14,129776,129777],{},"reset：",[451,129779,129781],{"className":46787,"code":129780,"language":46789,"meta":32,"style":32},"def reset(self, *, seed: int | None = None, options: dict | None = None):\n",[457,129782,129783],{"__ignoreMap":32},[460,129784,129785,129787,129789,129791,129793,129795,129797,129799,129801,129803,129805,129807,129809,129811,129813,129815,129817],{"class":462,"line":463},[460,129786,48352],{"class":887},[460,129788,129015],{"class":929},[460,129790,129018],{"class":466},[460,129792,8320],{"class":887},[460,129794,129023],{"class":466},[460,129796,16759],{"class":900},[460,129798,41522],{"class":887},[460,129800,55238],{"class":900},[460,129802,2943],{"class":887},[460,129804,55238],{"class":900},[460,129806,129036],{"class":466},[460,129808,129039],{"class":900},[460,129810,41522],{"class":887},[460,129812,55238],{"class":900},[460,129814,2943],{"class":887},[460,129816,55238],{"class":900},[460,129818,47194],{"class":466},[14,129820,129821,129823],{},[457,129822,86207],{}," 做四件事：",[103,129825,129826,129829,129832,129835],{},[43,129827,129828],{},"设置随机种子。",[43,129830,129831],{},"重置 MuJoCo data。",[43,129833,129834],{},"随机初始化关节角。",[43,129836,129837],{},"返回初始观测和 info。",[14,129839,129840],{},"step：",[451,129842,129844],{"className":46787,"code":129843,"language":46789,"meta":32,"style":32},"def step(self, action):\n",[457,129845,129846],{"__ignoreMap":32},[460,129847,129848,129850,129852],{"class":462,"line":463},[460,129849,48352],{"class":887},[460,129851,129180],{"class":929},[460,129853,129183],{"class":466},[14,129855,129856,129858],{},[457,129857,121627],{}," 做六件事：",[103,129860,129861,129864,129870,129873,129876,129879],{},[43,129862,129863],{},"检查并裁剪 action。",[43,129865,129866,129867,44794],{},"写入 ",[457,129868,129869],{},"self.data.ctrl",[43,129871,129872],{},"连续推进若干个 MuJoCo 物理步。",[43,129874,129875],{},"计算新观测。",[43,129877,129878],{},"计算奖励和结束条件。",[43,129880,129881],{},"返回 Gymnasium 标准五元组。",[23,129883,116201],{"id":116201},[451,129885,129887],{"className":46787,"code":129886,"language":46789,"meta":32,"style":32},"import gymnasium as gym\n",[457,129888,129889],{"__ignoreMap":32},[460,129890,129891,129893,129895,129897],{"class":462,"line":463},[460,129892,46801],{"class":887},[460,129894,128388],{"class":466},[460,129896,47790],{"class":887},[460,129898,128393],{"class":466},[14,129900,129901,129902,129904,129905,129908],{},"导入 Gymnasium，并起别名 ",[457,129903,128033],{},"。后面写 ",[457,129906,129907],{},"gym.Env"," 就表示 Gymnasium 的环境基类。",[451,129910,129912],{"className":46787,"code":129911,"language":46789,"meta":32,"style":32},"from gymnasium import spaces\n",[457,129913,129914],{"__ignoreMap":32},[460,129915,129916,129918,129920,129922],{"class":462,"line":463},[460,129917,47145],{"class":887},[460,129919,128388],{"class":466},[460,129921,46801],{"class":887},[460,129923,128420],{"class":466},[14,129925,129926,129927,129930],{},"导入空间定义工具。",[457,129928,129929],{},"spaces.Box"," 用来描述连续动作空间和连续观测空间。",[451,129932,129933],{"className":46787,"code":129672,"language":46789,"meta":32,"style":32},[457,129934,129935],{"__ignoreMap":32},[460,129936,129937,129939,129941,129943,129945,129947,129949],{"class":462,"line":463},[460,129938,31148],{"class":887},[460,129940,128550],{"class":929},[460,129942,2174],{"class":466},[460,129944,128033],{"class":929},[460,129946,6000],{"class":466},[460,129948,128559],{"class":929},[460,129950,47194],{"class":466},[14,129952,129953,129954,129957,129958,129960,129961,115511,129963,129965],{},"定义一个类，名字叫 ",[457,129955,129956],{},"ReacherEnv","。括号里的 ",[457,129959,129907],{}," 表示它继承 Gymnasium 环境基类。继承后，你需要实现 ",[457,129962,86207],{},[457,129964,121627],{}," 这两个核心方法。",[451,129967,129969],{"className":46787,"code":129968,"language":46789,"meta":32,"style":32},"metadata = {\"render_modes\": []}\n",[457,129970,129971],{"__ignoreMap":32},[460,129972,129973,129976,129978,129980,129982],{"class":462,"line":463},[460,129974,129975],{"class":466},"metadata ",[460,129977,894],{"class":887},[460,129979,20959],{"class":466},[460,129981,128573],{"class":1353},[460,129983,128576],{"class":466},[14,129985,129986],{},"Gymnasium 环境可以声明支持哪些渲染模式。这里暂时不实现 render，所以写空列表。",[451,129988,129990],{"className":46787,"code":129989,"language":46789,"meta":32,"style":32},"def __init__(self) -> None:\n",[457,129991,129992],{"__ignoreMap":32},[460,129993,129994,129996,129998,130000,130002],{"class":462,"line":463},[460,129995,48352],{"class":887},[460,129997,47212],{"class":900},[460,129999,128589],{"class":466},[460,130001,110179],{"class":900},[460,130003,20257],{"class":466},[14,130005,130006,130008,130009,44794],{},[457,130007,47236],{}," 是类的初始化函数。创建环境时会自动调用，比如 ",[457,130010,130011],{},"env = ReacherEnv()",[451,130013,130015],{"className":46787,"code":130014,"language":46789,"meta":32,"style":32},"super().__init__()\n",[457,130016,130017],{"__ignoreMap":32},[460,130018,130019,130022,130024,130026],{"class":462,"line":463},[460,130020,130021],{"class":900},"super",[460,130023,11396],{"class":466},[460,130025,47236],{"class":900},[460,130027,10758],{"class":466},[14,130029,130030,130031,130033],{},"调用父类 ",[457,130032,129907],{}," 的初始化逻辑。写自定义 Gymnasium 环境时通常保留这行。",[451,130035,130036],{"className":46787,"code":129699,"language":46789,"meta":32,"style":32},[457,130037,130038,130052],{"__ignoreMap":32},[460,130039,130040,130042,130044,130046,130048,130050],{"class":462,"line":463},[460,130041,47231],{"class":900},[460,130043,128610],{"class":466},[460,130045,894],{"class":887},[460,130047,115905],{"class":466},[460,130049,115807],{"class":900},[460,130051,3754],{"class":466},[460,130053,130054,130056,130058,130060,130062,130064],{"class":462,"line":476},[460,130055,47231],{"class":900},[460,130057,128625],{"class":466},[460,130059,894],{"class":887},[460,130061,128630],{"class":466},[460,130063,47231],{"class":900},[460,130065,128635],{"class":466},[14,130067,130068,130069,130071,130072,115511,130075,130078],{},"把 MuJoCo 模型和状态保存到 ",[457,130070,47231],{}," 上。",[457,130073,130074],{},"self.model",[457,130076,130077],{},"self.data"," 表示这个环境对象自己的模型和状态。",[451,130080,130081],{"className":46787,"code":129741,"language":46789,"meta":32,"style":32},[457,130082,130083,130097],{"__ignoreMap":32},[460,130084,130085,130087,130089,130091,130093,130095],{"class":462,"line":463},[460,130086,47231],{"class":900},[460,130088,128646],{"class":466},[460,130090,894],{"class":887},[460,130092,128651],{"class":466},[460,130094,13383],{"class":900},[460,130096,3754],{"class":466},[460,130098,130099,130101,130103,130105,130107,130109],{"class":462,"line":476},[460,130100,47231],{"class":900},[460,130102,128667],{"class":466},[460,130104,894],{"class":887},[460,130106,128651],{"class":466},[460,130108,13383],{"class":900},[460,130110,3754],{"class":466},[14,130112,130113,130114,115511,130117,130120],{},"提前查好 tip 和 target 的 site ID。这样 ",[457,130115,130116],{},"_get_obs",[457,130118,130119],{},"_get_reward"," 里就不用每次按名字查找。",[451,130122,130124],{"className":46787,"code":130123,"language":46789,"meta":32,"style":32},"self.frame_skip = 5\nself.max_steps = 200\nself.steps = 0\n",[457,130125,130126,130136,130146],{"__ignoreMap":32},[460,130127,130128,130130,130132,130134],{"class":462,"line":463},[460,130129,47231],{"class":900},[460,130131,128360],{"class":466},[460,130133,894],{"class":887},[460,130135,70671],{"class":900},[460,130137,130138,130140,130142,130144],{"class":462,"line":476},[460,130139,47231],{"class":900},[460,130141,128739],{"class":466},[460,130143,894],{"class":887},[460,130145,128744],{"class":900},[460,130147,130148,130150,130152,130154],{"class":462,"line":482},[460,130149,47231],{"class":900},[460,130151,128199],{"class":466},[460,130153,894],{"class":887},[460,130155,13996],{"class":900},[14,130157,130158,130161,130162,130165,130166,130169],{},[457,130159,130160],{},"frame_skip"," 表示一次环境 step 内部跑几个 MuJoCo 物理步。",[457,130163,130164],{},"max_steps"," 是一个 episode 最多运行多少步。",[457,130167,130168],{},"steps"," 记录当前 episode 已经走了多少步。",[451,130171,130172],{"className":46787,"code":128238,"language":46789,"meta":32,"style":32},[457,130173,130174],{"__ignoreMap":32},[460,130175,130176,130178,130180,130182,130184,130186,130188,130190,130192,130194,130196,130198,130200,130202,130204,130206,130208,130210,130212,130214],{"class":462,"line":463},[460,130177,47231],{"class":900},[460,130179,128247],{"class":466},[460,130181,894],{"class":887},[460,130183,128252],{"class":466},[460,130185,128255],{"class":3380},[460,130187,128258],{"class":887},[460,130189,116896],{"class":900},[460,130191,904],{"class":466},[460,130193,128265],{"class":3380},[460,130195,894],{"class":887},[460,130197,116896],{"class":900},[460,130199,904],{"class":466},[460,130201,110456],{"class":3380},[460,130203,894],{"class":887},[460,130205,2174],{"class":466},[460,130207,907],{"class":900},[460,130209,128282],{"class":466},[460,130211,107993],{"class":3380},[460,130213,894],{"class":887},[460,130215,128289],{"class":466},[14,130217,130218,130219,130222,130223,115511,130226,130229],{},"定义动作空间。",[457,130220,130221],{},"shape=(2,)"," 表示动作是两个数，因为有两个 motor。",[457,130224,130225],{},"low=-1.0",[457,130227,130228],{},"high=1.0"," 表示每个动作值都限制在 -1 到 1。",[451,130231,130232],{"className":46787,"code":128299,"language":46789,"meta":32,"style":32},[457,130233,130234],{"__ignoreMap":32},[460,130235,130236,130238,130240,130242,130244,130246,130248,130250,130252,130254,130256,130258,130260,130262,130264,130266,130268,130270],{"class":462,"line":463},[460,130237,47231],{"class":900},[460,130239,128308],{"class":466},[460,130241,894],{"class":887},[460,130243,128252],{"class":466},[460,130245,128255],{"class":3380},[460,130247,128258],{"class":887},[460,130249,128319],{"class":466},[460,130251,128265],{"class":3380},[460,130253,894],{"class":887},[460,130255,128319],{"class":466},[460,130257,110456],{"class":3380},[460,130259,894],{"class":887},[460,130261,2174],{"class":466},[460,130263,2096],{"class":900},[460,130265,128282],{"class":466},[460,130267,107993],{"class":3380},[460,130269,894],{"class":887},[460,130271,128289],{"class":466},[14,130273,130274,130275,130278,130279,130282],{},"定义观测空间。",[457,130276,130277],{},"shape=(10,)"," 表示观测是 10 个数。",[457,130280,130281],{},"np.inf"," 表示无穷大，这里表示不限制观测数值范围。",[451,130284,130286],{"className":46787,"code":130285,"language":46789,"meta":32,"style":32},"def _get_obs(self) -> np.ndarray:\n",[457,130287,130288],{"__ignoreMap":32},[460,130289,130290,130292,130294],{"class":462,"line":463},[460,130291,48352],{"class":887},[460,130293,128849],{"class":929},[460,130295,128852],{"class":466},[14,130297,130298,130299,130301],{},"定义内部函数，用来生成观测。函数名前面的 ",[457,130300,17699],{}," 是习惯写法，表示这是类内部使用的辅助函数。",[451,130303,130305],{"className":46787,"code":130304,"language":46789,"meta":32,"style":32},"tip = self.data.site_xpos[self.tip_site_id].copy()\ntarget = self.data.site_xpos[self.target_site_id].copy()\n",[457,130306,130307,130321],{"__ignoreMap":32},[460,130308,130309,130311,130313,130315,130317,130319],{"class":462,"line":463},[460,130310,126061],{"class":466},[460,130312,894],{"class":887},[460,130314,55178],{"class":900},[460,130316,128863],{"class":466},[460,130318,47231],{"class":900},[460,130320,128868],{"class":466},[460,130322,130323,130325,130327,130329,130331,130333],{"class":462,"line":476},[460,130324,126071],{"class":466},[460,130326,894],{"class":887},[460,130328,55178],{"class":900},[460,130330,128863],{"class":466},[460,130332,47231],{"class":900},[460,130334,128883],{"class":466},[14,130336,130337],{},"从 MuJoCo data 中读取末端点和目标点坐标。",[451,130339,130341],{"className":46787,"code":130340,"language":46789,"meta":32,"style":32},"obs = np.concatenate([self.data.qpos.copy(), self.data.qvel.copy(), tip, target])\nreturn obs.astype(np.float32)\n",[457,130342,130343,130359],{"__ignoreMap":32},[460,130344,130345,130347,130349,130351,130353,130355,130357],{"class":462,"line":463},[460,130346,125347],{"class":466},[460,130348,894],{"class":887},[460,130350,128892],{"class":466},[460,130352,47231],{"class":900},[460,130354,128897],{"class":466},[460,130356,47231],{"class":900},[460,130358,128902],{"class":466},[460,130360,130361,130363],{"class":462,"line":476},[460,130362,33464],{"class":887},[460,130364,128909],{"class":466},[14,130366,130367,130368,130371,130372,130374],{},"拼接观测，并转换成 ",[457,130369,130370],{},"float32","。很多强化学习库默认使用 ",[457,130373,130370],{},"，所以这里主动转换。",[451,130376,130377],{"className":46787,"code":129780,"language":46789,"meta":32,"style":32},[457,130378,130379],{"__ignoreMap":32},[460,130380,130381,130383,130385,130387,130389,130391,130393,130395,130397,130399,130401,130403,130405,130407,130409,130411,130413],{"class":462,"line":463},[460,130382,48352],{"class":887},[460,130384,129015],{"class":929},[460,130386,129018],{"class":466},[460,130388,8320],{"class":887},[460,130390,129023],{"class":466},[460,130392,16759],{"class":900},[460,130394,41522],{"class":887},[460,130396,55238],{"class":900},[460,130398,2943],{"class":887},[460,130400,55238],{"class":900},[460,130402,129036],{"class":466},[460,130404,129039],{"class":900},[460,130406,41522],{"class":887},[460,130408,55238],{"class":900},[460,130410,2943],{"class":887},[460,130412,55238],{"class":900},[460,130414,47194],{"class":466},[14,130416,130417,130418,130420,130421,130424],{},"定义 reset。",[457,130419,129059],{}," 用来控制随机数，保证实验可以复现。",[457,130422,130423],{},"options"," 用来接收额外配置，本章暂时不用。",[451,130426,130428],{"className":46787,"code":130427,"language":46789,"meta":32,"style":32},"super().reset(seed=seed)\n",[457,130429,130430],{"__ignoreMap":32},[460,130431,130432,130434,130436,130438,130440],{"class":462,"line":463},[460,130433,130021],{"class":900},[460,130435,129056],{"class":466},[460,130437,129059],{"class":3380},[460,130439,894],{"class":887},[460,130441,129064],{"class":466},[14,130443,130444,130445,130448],{},"把随机种子交给 Gymnasium 父类处理。之后可以使用 ",[457,130446,130447],{},"self.np_random"," 生成可复现的随机数。",[451,130450,130452],{"className":46787,"code":130451,"language":46789,"meta":32,"style":32},"mujoco.mj_resetData(self.model, self.data)\n",[457,130453,130454],{"__ignoreMap":32},[460,130455,130456,130459,130461,130463,130465],{"class":462,"line":463},[460,130457,130458],{"class":466},"mujoco.mj_resetData(",[460,130460,47231],{"class":900},[460,130462,129074],{"class":466},[460,130464,47231],{"class":900},[460,130466,129079],{"class":466},[14,130468,130469],{},"把 MuJoCo 状态重置到默认状态。",[451,130471,130473],{"className":46787,"code":130472,"language":46789,"meta":32,"style":32},"self.data.qpos[:] = self.np_random.uniform(low=-0.1, high=0.1, size=self.model.nq)\n",[457,130474,130475],{"__ignoreMap":32},[460,130476,130477,130479,130481,130483,130485,130487,130489,130491,130493,130495,130497,130499,130501,130503,130505,130507,130509],{"class":462,"line":463},[460,130478,47231],{"class":900},[460,130480,129090],{"class":466},[460,130482,894],{"class":887},[460,130484,55178],{"class":900},[460,130486,129097],{"class":466},[460,130488,128255],{"class":3380},[460,130490,128258],{"class":887},[460,130492,9984],{"class":900},[460,130494,904],{"class":466},[460,130496,128265],{"class":3380},[460,130498,894],{"class":887},[460,130500,9984],{"class":900},[460,130502,904],{"class":466},[460,130504,47902],{"class":3380},[460,130506,894],{"class":887},[460,130508,47231],{"class":900},[460,130510,129122],{"class":466},[14,130512,129834,130513,130516,130517,130520,130521,130523],{},[457,130514,130515],{},"[:]"," 表示修改整个数组。",[457,130518,130519],{},"uniform(low=-0.1, high=0.1, size=self.model.nq)"," 表示生成 ",[457,130522,116643],{}," 个随机数，每个数在 -0.1 到 0.1 之间。",[451,130525,130527],{"className":46787,"code":130526,"language":46789,"meta":32,"style":32},"self.data.qvel[:] = 0.0\n",[457,130528,130529],{"__ignoreMap":32},[460,130530,130531,130533,130535,130537],{"class":462,"line":463},[460,130532,47231],{"class":900},[460,130534,129129],{"class":466},[460,130536,894],{"class":887},[460,130538,119254],{"class":900},[14,130540,130541],{},"把所有速度清零。也就是每次 reset 时，机械臂从静止开始。",[451,130543,130545],{"className":46787,"code":130544,"language":46789,"meta":32,"style":32},"self.steps = 0\nreturn self._get_obs(), {}\n",[457,130546,130547,130557],{"__ignoreMap":32},[460,130548,130549,130551,130553,130555],{"class":462,"line":463},[460,130550,47231],{"class":900},[460,130552,128199],{"class":466},[460,130554,894],{"class":887},[460,130556,13996],{"class":900},[460,130558,130559,130561,130563],{"class":462,"line":476},[460,130560,33464],{"class":887},[460,130562,55178],{"class":900},[460,130564,129169],{"class":466},[14,130566,130567],{},"步数清零，并返回初始观测和空 info。Gymnasium 要求 reset 返回两个值。",[451,130569,130570],{"className":46787,"code":129843,"language":46789,"meta":32,"style":32},[457,130571,130572],{"__ignoreMap":32},[460,130573,130574,130576,130578],{"class":462,"line":463},[460,130575,48352],{"class":887},[460,130577,129180],{"class":929},[460,130579,129183],{"class":466},[14,130581,130582],{},"定义 step。外部算法传入动作，环境返回下一步结果。",[451,130584,130586],{"className":46787,"code":130585,"language":46789,"meta":32,"style":32},"action = np.asarray(action, dtype=np.float32)\n",[457,130587,130588],{"__ignoreMap":32},[460,130589,130590,130592,130594,130596,130598,130600],{"class":462,"line":463},[460,130591,121935],{"class":466},[460,130593,894],{"class":887},[460,130595,129192],{"class":466},[460,130597,107993],{"class":3380},[460,130599,894],{"class":887},[460,130601,128289],{"class":466},[14,130603,130604,130605,44794],{},"把传入的 action 转成 NumPy 数组，并指定类型为 ",[457,130606,130370],{},[451,130608,130610],{"className":46787,"code":130609,"language":46789,"meta":32,"style":32},"action = np.clip(action, self.action_space.low, self.action_space.high)\n",[457,130611,130612],{"__ignoreMap":32},[460,130613,130614,130616,130618,130620,130622,130624,130626],{"class":462,"line":463},[460,130615,121935],{"class":466},[460,130617,894],{"class":887},[460,130619,121940],{"class":466},[460,130621,47231],{"class":900},[460,130623,129211],{"class":466},[460,130625,47231],{"class":900},[460,130627,129216],{"class":466},[14,130629,130630],{},"把动作裁剪到动作空间允许范围内，避免传入过大控制值。",[451,130632,130634],{"className":46787,"code":130633,"language":46789,"meta":32,"style":32},"self.data.ctrl[:] = action\n",[457,130635,130636],{"__ignoreMap":32},[460,130637,130638,130640,130642,130644],{"class":462,"line":463},[460,130639,47231],{"class":900},[460,130641,129227],{"class":466},[460,130643,894],{"class":887},[460,130645,121963],{"class":466},[14,130647,130648],{},"把动作写入 MuJoCo 控制数组。因为这个环境有两个 actuator，所以 action 也必须是两个数。",[451,130650,130652],{"className":46787,"code":130651,"language":46789,"meta":32,"style":32},"for _ in range(self.frame_skip):\n    mujoco.mj_step(self.model, self.data)\n",[457,130653,130654,130670],{"__ignoreMap":32},[460,130655,130656,130658,130660,130662,130664,130666,130668],{"class":462,"line":463},[460,130657,19547],{"class":887},[460,130659,115994],{"class":466},[460,130661,11713],{"class":887},[460,130663,48848],{"class":900},[460,130665,2174],{"class":466},[460,130667,47231],{"class":900},[460,130669,129248],{"class":466},[460,130671,130672,130675,130677,130679,130681],{"class":462,"line":476},[460,130673,130674],{"class":466},"    mujoco.mj_step(",[460,130676,47231],{"class":900},[460,130678,129074],{"class":466},[460,130680,47231],{"class":900},[460,130682,129079],{"class":466},[14,130684,130685,130686,130689,130690,130692,130693,44794],{},"一次环境 step 内部推进多个 MuJoCo 物理步。这里 ",[457,130687,130688],{},"frame_skip=5","，所以外部调用一次 ",[457,130691,128370],{},"，内部实际执行 5 次 ",[457,130694,115708],{},[451,130696,130698],{"className":46787,"code":130697,"language":46789,"meta":32,"style":32},"self.steps += 1\n",[457,130699,130700],{"__ignoreMap":32},[460,130701,130702,130704,130706,130708],{"class":462,"line":463},[460,130703,47231],{"class":900},[460,130705,128199],{"class":466},[460,130707,3467],{"class":887},[460,130709,71910],{"class":900},[14,130711,130712],{},"环境步数加 1。注意这里加的是环境 step，不是 MuJoCo 物理步。",[451,130714,130716],{"className":46787,"code":130715,"language":46789,"meta":32,"style":32},"obs = self._get_obs()\nreward = self._get_reward()\n",[457,130717,130718,130728],{"__ignoreMap":32},[460,130719,130720,130722,130724,130726],{"class":462,"line":463},[460,130721,125347],{"class":466},[460,130723,894],{"class":887},[460,130725,55178],{"class":900},[460,130727,129290],{"class":466},[460,130729,130730,130732,130734,130736],{"class":462,"line":476},[460,130731,125498],{"class":466},[460,130733,894],{"class":887},[460,130735,55178],{"class":900},[460,130737,129301],{"class":466},[14,130739,130740],{},"计算新的观测和奖励。",[451,130742,130744],{"className":46787,"code":130743,"language":46789,"meta":32,"style":32},"dist = float(np.linalg.norm(tip - target))\n",[457,130745,130746],{"__ignoreMap":32},[460,130747,130748,130750,130752,130754,130756,130758],{"class":462,"line":463},[460,130749,126089],{"class":466},[460,130751,894],{"class":887},[460,130753,124290],{"class":900},[460,130755,129344],{"class":466},[460,130757,17259],{"class":887},[460,130759,129349],{"class":466},[14,130761,130762],{},"计算末端到目标的距离，并转换成 Python float。",[451,130764,130765],{"className":46787,"code":128170,"language":46789,"meta":32,"style":32},[457,130766,130767,130779],{"__ignoreMap":32},[460,130768,130769,130771,130773,130775,130777],{"class":462,"line":463},[460,130770,128177],{"class":466},[460,130772,894],{"class":887},[460,130774,128182],{"class":466},[460,130776,781],{"class":887},[460,130778,128187],{"class":900},[460,130780,130781,130783,130785,130787,130789,130791,130793],{"class":462,"line":476},[460,130782,128192],{"class":466},[460,130784,894],{"class":887},[460,130786,55178],{"class":900},[460,130788,128199],{"class":466},[460,130790,3738],{"class":887},[460,130792,55178],{"class":900},[460,130794,128206],{"class":466},[14,130796,130797],{},"如果距离小于 0.05，任务成功结束。若步数达到上限，episode 被截断。",[451,130799,130801],{"className":46787,"code":130800,"language":46789,"meta":32,"style":32},"info = {\"distance\": dist}\nreturn obs, reward, terminated, truncated, info\n",[457,130802,130803,130816],{"__ignoreMap":32},[460,130804,130805,130808,130810,130812,130814],{"class":462,"line":463},[460,130806,130807],{"class":466},"info ",[460,130809,894],{"class":887},[460,130811,20959],{"class":466},[460,130813,129395],{"class":1353},[460,130815,129398],{"class":466},[460,130817,130818,130820],{"class":462,"line":476},[460,130819,33464],{"class":887},[460,130821,129405],{"class":466},[14,130823,130824,130827],{},[457,130825,130826],{},"info"," 用来放调试信息。最后返回 Gymnasium 标准五元组。",[451,130829,130831],{"className":46787,"code":130830,"language":46789,"meta":32,"style":32},"env = ReacherEnv()\nobs, info = env.reset(seed=0)\n",[457,130832,130833,130842],{"__ignoreMap":32},[460,130834,130835,130838,130840],{"class":462,"line":463},[460,130836,130837],{"class":466},"env ",[460,130839,894],{"class":887},[460,130841,129435],{"class":466},[460,130843,130844,130846,130848,130850,130852,130854,130856],{"class":462,"line":476},[460,130845,127893],{"class":466},[460,130847,894],{"class":887},[460,130849,129445],{"class":466},[460,130851,129059],{"class":3380},[460,130853,894],{"class":887},[460,130855,936],{"class":900},[460,130857,3754],{"class":466},[14,130859,130860,130861,130864],{},"创建环境并重置。",[457,130862,130863],{},"seed=0"," 表示使用固定随机种子，方便复现实验。",[451,130866,130868],{"className":46787,"code":130867,"language":46789,"meta":32,"style":32},"action = env.action_space.sample()\n",[457,130869,130870],{"__ignoreMap":32},[460,130871,130872,130874,130876],{"class":462,"line":463},[460,130873,121935],{"class":466},[460,130875,894],{"class":887},[460,130877,129514],{"class":466},[14,130879,130880],{},"从动作空间里随机采样一个动作。这里还没有训练策略，所以用随机动作测试环境是否能跑。",[18,130882,116809],{"id":116808},[14,130884,119977],{},[451,130886,130889],{"className":130887,"code":130888,"language":8391,"meta":32},[21693],"initial obs shape: (10,)\ninitial info: {}\nstep: 0 reward: ...\n...\ntotal_reward: ...\n",[457,130890,130888],{"__ignoreMap":32},[14,130892,130893],{},"这个环境已经具备强化学习环境的基本结构。",[14,130895,130896],{},"主函数里使用随机动作：",[451,130898,130899],{"className":46787,"code":130867,"language":46789,"meta":32,"style":32},[457,130900,130901],{"__ignoreMap":32},[460,130902,130903,130905,130907],{"class":462,"line":463},[460,130904,121935],{"class":466},[460,130906,894],{"class":887},[460,130908,129514],{"class":466},[14,130910,130911],{},"所以每次运行的 reward 可能不同。这里的目标不是训练成功，而是验证环境接口能正常工作。",[18,130913,116841],{"id":116840},[103,130915,130916,130919,130925,130934,130943,130952,130958],{},[43,130917,130918],{},"运行程序。",[43,130920,130921,130922,44794],{},"确认 ",[457,130923,130924],{},"obs.shape == (10,)",[43,130926,125674,130927,130930,130931,44794],{},[457,130928,130929],{},"env.action_space","，应类似 ",[457,130932,130933],{},"Box(-1.0, 1.0, (2,), float32)",[43,130935,120078,130936,130939,130940,44794],{},[457,130937,130938],{},"self.max_steps = 10","，确认环境会更快 ",[457,130941,130942],{},"truncated=True",[43,130944,116904,130945,116907,130948,130951],{},[457,130946,130947],{},"terminated = dist \u003C 0.05",[457,130949,130950],{},"dist \u003C 0.2","，观察是否更容易结束。",[43,130953,116904,130954,130957],{},[457,130955,130956],{},"self.frame_skip = 1","，观察每次 step 的物理推进变少。",[43,130959,130960,130961,130963,130964,130967],{},"在 ",[457,130962,130826],{}," 里加入 ",[457,130965,130966],{},"\"is_success\": dist \u003C 0.05","，模拟常见机器人环境输出。",[18,130969,116946],{"id":116945},[23,130971,130973],{"id":130972},"gymnasium-返回值数量不匹配","Gymnasium 返回值数量不匹配",[14,130975,130976,130977,130979],{},"Gymnasium 的 ",[457,130978,121627],{}," 返回 5 个值:",[451,130981,130983],{"className":46787,"code":130982,"language":46789,"meta":32,"style":32},"obs, reward, terminated, truncated, info\n",[457,130984,130985],{"__ignoreMap":32},[460,130986,130987],{"class":462,"line":463},[460,130988,130982],{"class":466},[14,130990,130991],{},"不是旧 Gym 的 4 个值。",[23,130993,130995,130998],{"id":130994},"datactrl-action-维度错误",[457,130996,130997],{},"data.ctrl[:] = action"," 维度错误",[14,131000,117016],{},[451,131002,131004],{"className":46787,"code":131003,"language":46789,"meta":32,"style":32},"print(self.model.nu)\nprint(action.shape)\n",[457,131005,131006,131017],{"__ignoreMap":32},[460,131007,131008,131010,131012,131014],{"class":462,"line":463},[460,131009,46824],{"class":900},[460,131011,2174],{"class":466},[460,131013,47231],{"class":900},[460,131015,131016],{"class":466},".model.nu)\n",[460,131018,131019,131021],{"class":462,"line":476},[460,131020,46824],{"class":900},[460,131022,131023],{"class":466},"(action.shape)\n",[14,131025,131026],{},"两者必须匹配。",[23,131028,131030],{"id":131029},"reset-后-site-坐标不更新","reset 后 site 坐标不更新",[14,131032,116955],{},[451,131034,131036],{"className":46787,"code":131035,"language":46789,"meta":32,"style":32},"mujoco.mj_forward(self.model, self.data)\n",[457,131037,131038],{"__ignoreMap":32},[460,131039,131040,131043,131045,131047,131049],{"class":462,"line":463},[460,131041,131042],{"class":466},"mujoco.mj_forward(",[460,131044,47231],{"class":900},[460,131046,129074],{"class":466},[460,131048,47231],{"class":900},[460,131050,129079],{"class":466},[23,131052,131054,131056],{"id":131053},"observation_space-维度和-obs-不一致",[457,131055,128093],{}," 维度和 obs 不一致",[14,131058,117068],{},[451,131060,131062],{"className":46787,"code":131061,"language":46789,"meta":32,"style":32},"obs = self._get_obs()\nprint(obs.shape)\nprint(self.observation_space.shape)\n",[457,131063,131064,131074,131081],{"__ignoreMap":32},[460,131065,131066,131068,131070,131072],{"class":462,"line":463},[460,131067,125347],{"class":466},[460,131069,894],{"class":887},[460,131071,55178],{"class":900},[460,131073,129290],{"class":466},[460,131075,131076,131078],{"class":462,"line":476},[460,131077,46824],{"class":900},[460,131079,131080],{"class":466},"(obs.shape)\n",[460,131082,131083,131085,131087,131089],{"class":462,"line":482},[460,131084,46824],{"class":900},[460,131086,2174],{"class":466},[460,131088,47231],{"class":900},[460,131090,131091],{"class":466},".observation_space.shape)\n",[14,131093,131094],{},"两者必须一致。本章观测是：",[451,131096,131099],{"className":131097,"code":131098,"language":8391,"meta":32},[21693],"qpos 2 + qvel 2 + tip 3 + target 3 = 10\n",[457,131100,131098],{"__ignoreMap":32},[23,131102,131104],{"id":131103},"action-超过范围","action 超过范围",[14,131106,131107],{},"外部算法可能传入超过 action space 的值，所以 step 里要写：",[451,131109,131110],{"className":46787,"code":130609,"language":46789,"meta":32,"style":32},[457,131111,131112],{"__ignoreMap":32},[460,131113,131114,131116,131118,131120,131122,131124,131126],{"class":462,"line":463},[460,131115,121935],{"class":466},[460,131117,894],{"class":887},[460,131119,121940],{"class":466},[460,131121,47231],{"class":900},[460,131123,129211],{"class":466},[460,131125,47231],{"class":900},[460,131127,129216],{"class":466},[14,131129,131130,131131,44794],{},"这能避免无效动作直接写入 ",[457,131132,115569],{},[23,131134,131136],{"id":131135},"忘记返回-info","忘记返回 info",[14,131138,130976,131139,115511,131141,131143],{},[457,131140,86207],{},[457,131142,121627],{}," 都会返回 info：",[451,131145,131146],{"className":46787,"code":127886,"language":46789,"meta":32,"style":32},[457,131147,131148,131156],{"__ignoreMap":32},[460,131149,131150,131152,131154],{"class":462,"line":463},[460,131151,127893],{"class":466},[460,131153,894],{"class":887},[460,131155,127898],{"class":466},[460,131157,131158,131160,131162],{"class":462,"line":476},[460,131159,127903],{"class":466},[460,131161,894],{"class":887},[460,131163,127908],{"class":466},[14,131165,131166,131167,44794],{},"即使暂时没有额外信息，也返回 ",[457,131168,48864],{},[18,131170,131172],{"id":131171},"_8下一步怎么接强化学习","8.下一步怎么接强化学习",[14,131174,131175],{},"这个环境已经可以被很多强化学习库包装，但正式训练前还应补充：",[103,131177,131178,131181,131184,131187,131190,131193],{},[43,131179,131180],{},"更稳定的 reward。",[43,131182,131183],{},"合理的 episode 长度。",[43,131185,131186],{},"可重复的随机目标采样。",[43,131188,131189],{},"render 接口。",[43,131191,131192],{},"环境注册代码。",[43,131194,131195],{},"单元测试，检查 reset\u002Fstep 返回值维度和 dtype。",[14,131197,131198],{},"如果只是自己写训练循环，最小形式是：",[451,131200,131202],{"className":46787,"code":131201,"language":46789,"meta":32,"style":32},"env = ReacherEnv()\nobs, info = env.reset(seed=0)\n\nfor _ in range(1000):\n    action = env.action_space.sample()\n    obs, reward, terminated, truncated, info = env.step(action)\n    if terminated or truncated:\n        obs, info = env.reset()\n",[457,131203,131204,131212,131228,131232,131248,131257,131266,131276],{"__ignoreMap":32},[460,131205,131206,131208,131210],{"class":462,"line":463},[460,131207,130837],{"class":466},[460,131209,894],{"class":887},[460,131211,129435],{"class":466},[460,131213,131214,131216,131218,131220,131222,131224,131226],{"class":462,"line":476},[460,131215,127893],{"class":466},[460,131217,894],{"class":887},[460,131219,129445],{"class":466},[460,131221,129059],{"class":3380},[460,131223,894],{"class":887},[460,131225,936],{"class":900},[460,131227,3754],{"class":466},[460,131229,131230],{"class":462,"line":482},[460,131231,522],{"emptyLinePlaceholder":521},[460,131233,131234,131236,131238,131240,131242,131244,131246],{"class":462,"line":488},[460,131235,19547],{"class":887},[460,131237,115994],{"class":466},[460,131239,11713],{"class":887},[460,131241,48848],{"class":900},[460,131243,2174],{"class":466},[460,131245,11412],{"class":900},[460,131247,47194],{"class":466},[460,131249,131250,131253,131255],{"class":462,"line":494},[460,131251,131252],{"class":466},"    action ",[460,131254,894],{"class":887},[460,131256,129514],{"class":466},[460,131258,131259,131262,131264],{"class":462,"line":500},[460,131260,131261],{"class":466},"    obs, reward, terminated, truncated, info ",[460,131263,894],{"class":887},[460,131265,127908],{"class":466},[460,131267,131268,131270,131272,131274],{"class":462,"line":506},[460,131269,19622],{"class":887},[460,131271,129580],{"class":466},[460,131273,129583],{"class":887},[460,131275,129586],{"class":466},[460,131277,131278,131281,131283],{"class":462,"line":512},[460,131279,131280],{"class":466},"        obs, info ",[460,131282,894],{"class":887},[460,131284,127898],{"class":466},[18,131286,131288],{"id":131287},"_9本章小结","9.本章小结",[14,131290,131291],{},"Gymnasium 封装并没有改变 MuJoCo 的本质。它只是把前面章节的流程整理成标准接口：",[451,131293,131296],{"className":131294,"code":131295,"language":8391,"meta":32},[21693],"reset:\n  mj_resetData → 设置初始状态 → mj_forward → obs\n\nstep:\n  action → data.ctrl → mj_step → obs\u002Freward\u002Fterminated\u002Ftruncated\u002Finfo\n",[457,131297,131295],{"__ignoreMap":32},[14,131299,131300],{},"掌握这个接口后，你就可以把 MuJoCo 模型接入强化学习、模仿学习和数据采集流程。",[1944,131302,131303],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":131305},[131306,131307,131308,131315,131319,131320,131321,131331,131332],{"id":115139,"depth":476,"text":115140},{"id":115262,"depth":476,"text":115263},{"id":115537,"depth":476,"text":115538,"children":131309},[131310,131312,131314],{"id":128117,"depth":482,"text":131311},"terminated 和 truncated 的区别",{"id":128220,"depth":482,"text":131313},"observation_space 和 action_space",{"id":128347,"depth":482,"text":128348},{"id":115745,"depth":476,"text":115746,"children":131316},[131317,131318],{"id":116065,"depth":482,"text":116065},{"id":116201,"depth":482,"text":116201},{"id":116808,"depth":476,"text":116809},{"id":116840,"depth":476,"text":116841},{"id":116945,"depth":476,"text":116946,"children":131322},[131323,131324,131326,131327,131329,131330],{"id":130972,"depth":482,"text":130973},{"id":130994,"depth":482,"text":131325},"data.ctrl[:] = action 维度错误",{"id":131029,"depth":482,"text":131030},{"id":131053,"depth":482,"text":131328},"observation_space 维度和 obs 不一致",{"id":131103,"depth":482,"text":131104},{"id":131135,"depth":482,"text":131136},{"id":131171,"depth":476,"text":131172},{"id":131287,"depth":476,"text":131288},{},"\u002Fwiki\u002F2025-05-17-mujoco\u002Fch8-gymnasium",{"title":127870,"description":32},"wiki\u002F2025-05-17-mujoco学习\u002Fch8-Gymnasium接口基础","KSF1Xw_aHmvJI12WCxfcd5RyipozYaMsgXOORoNp9lo",{"id":131339,"title":131340,"body":131341,"description":131764,"extension":16683,"meta":131765,"navigation":521,"path":131766,"seo":131767,"stem":131768,"__hash__":131769},"wiki\u002Fwiki\u002F2025-05-17-mujoco学习\u002Findex.md","mujoco学习",{"type":7,"value":131342,"toc":131754},[131343,131347,131350,131353,131373,131379,131385,131395,131398,131401,131421,131424,131428,131431,131437,131440,131454,131457,131460,131534,131537,131543,131546,131569,131572,131622,131625,131631,131634,131637,131640,131659,131662,131668,131671,131674,131677,131697,131700,131703,131706,131751],[10,131344,131346],{"id":131345},"mujoco-学习","MuJoCo 学习",[14,131348,131349],{},"初版",[14,131351,131352],{},"这套笔记面向从零开始学习 MuJoCo 的工程复现路线。目标不是只让你复制代码跑通，而是让你看懂：",[103,131354,131355,131358,131361,131370],{},[43,131356,131357],{},"MuJoCo 模型文件在描述什么。",[43,131359,131360],{},"Python 代码怎样读取和推进仿真。",[43,131362,131363,16957,131365,16957,131367,131369],{},[457,131364,118523],{},[457,131366,118853],{},[457,131368,118856],{}," 这些数组为什么重要。",[43,131371,131372],{},"如何从一个会掉落的小方块，逐步搭出 Cartpole、Reacher 和 Gymnasium 风格环境。",[14,131374,131375,131376,131378],{},"默认环境为 Fedora 44、Python >= 3.10、",[457,131377,115520],{}," 官方 Python bindings。",[14,131380,131381,131382,131384],{},"注意：本文禁止使用 ",[457,131383,115505],{},"。所有示例均使用：",[451,131386,131387],{"className":46787,"code":116071,"language":46789,"meta":32,"style":32},[457,131388,131389],{"__ignoreMap":32},[460,131390,131391,131393],{"class":462,"line":463},[460,131392,46801],{"class":887},[460,131394,115794],{"class":466},[18,131396,131397],{"id":131397},"适合谁阅读",[14,131399,131400],{},"如果你符合下面任意一种情况，可以从第 1 章开始按顺序学：",[103,131402,131403,131406,131409,131412],{},[43,131404,131405],{},"没学过 MuJoCo，只会一点 Python。",[43,131407,131408],{},"看过强化学习环境，但不知道 MuJoCo 环境是怎么写出来的。",[43,131410,131411],{},"想复现机器人控制、模仿学习、VLA 数据采集，但对仿真模型没有概念。",[43,131413,131414,131415,131417,131418,131420],{},"以前接触过 ",[457,131416,115505],{},"，现在想迁移到官方 ",[457,131419,115514],{}," Python bindings。",[14,131422,131423],{},"阅读前只需要知道 Python 的变量、函数、列表或数组大概是什么。NumPy 不熟也没关系，教程会尽量解释每个数组的含义。",[18,131425,131427],{"id":131426},"mujoco-到底是什么","MuJoCo 到底是什么",[14,131429,131430],{},"MuJoCo 是一个物理仿真引擎。你可以把它理解成一个“机器人和物体的虚拟实验室”：",[451,131432,131435],{"className":131433,"code":131434,"language":8391,"meta":32},[21693],"你写 XML 描述世界里有什么\n          ↓\nMuJoCo 编译成物理模型\n          ↓\nPython 程序给关节或电机输入控制量\n          ↓\nMuJoCo 按物理规律更新位置、速度、碰撞、力\n          ↓\n你读取状态、计算奖励、保存数据或训练策略\n",[457,131436,131434],{"__ignoreMap":32},[14,131438,131439],{},"在机器人、强化学习和具身智能里，MuJoCo 常用于：",[103,131441,131442,131445,131448,131451],{},[43,131443,131444],{},"搭建机械臂、小车、摆杆、多足机器人等模型。",[43,131446,131447],{},"快速测试控制算法，不必一开始就上真实机器人。",[43,131449,131450],{},"生成强化学习环境。",[43,131452,131453],{},"采集状态、动作、图像、奖励等训练数据。",[18,131455,131456],{"id":131456},"学习前的心智模型",[14,131458,131459],{},"新手最容易卡在“XML 和 Python 代码到底谁负责什么”。可以先记住这个分工：",[16884,131461,131462,131474],{},[16887,131463,131464],{},[16890,131465,131466,131469,131472],{},[16893,131467,131468],{"align":40149},"部分",[16893,131470,131471],{"align":40149},"负责什么",[16893,131473,37604],{"align":40149},[16930,131475,131476,131487,131499,131511,131523],{},[16890,131477,131478,131481,131484],{},[16935,131479,131480],{"align":40149},"MJCF XML",[16935,131482,131483],{"align":40149},"定义世界和机器人结构",[16935,131485,131486],{"align":40149},"地面、盒子、关节、电机、摄像头",[16890,131488,131489,131493,131496],{},[16935,131490,131491],{"align":40149},[457,131492,115202],{},[16935,131494,131495],{"align":40149},"编译后的静态模型",[16935,131497,131498],{"align":40149},"有几个关节、有几个电机、时间步长是多少",[16890,131500,131501,131505,131508],{},[16935,131502,131503],{"align":40149},[457,131504,115212],{},[16935,131506,131507],{"align":40149},"运行中的动态状态",[16935,131509,131510],{"align":40149},"当前时间、位置、速度、电机输入",[16890,131512,131513,131517,131520],{},[16935,131514,131515],{"align":40149},[457,131516,115708],{},[16935,131518,131519],{"align":40149},"推进一步物理仿真",[16935,131521,131522],{"align":40149},"根据重力、力、碰撞更新状态",[16890,131524,131525,131528,131531],{},[16935,131526,131527],{"align":40149},"Viewer \u002F Renderer",[16935,131529,131530],{"align":40149},"把仿真显示出来",[16935,131532,131533],{"align":40149},"打开窗口或保存图片",[14,131535,131536],{},"一句话总结：",[451,131538,131541],{"className":131539,"code":131540,"language":8391,"meta":32},[21693],"XML 决定“有什么”，MjModel 记住“结构”，MjData 记录“现在怎样”，mj_step 让时间往前走。\n",[457,131542,131540],{"__ignoreMap":32},[14,131544,131545],{},"参考来源：",[40,131547,131548,131555,131562],{},[43,131549,131550,131551],{},"MuJoCo Python 官方文档：",[2756,131552,131553],{"href":131553,"rel":131554},"https:\u002F\u002Fmujoco.readthedocs.io\u002Fen\u002Fstable\u002Fpython.html",[4943],[43,131556,131557,131558],{},"MuJoCo XML Reference：",[2756,131559,131560],{"href":131560,"rel":131561},"https:\u002F\u002Fmujoco.readthedocs.io\u002Fen\u002Fstable\u002FXMLreference.html",[4943],[43,131563,131564,131565],{},"MuJoCo Overview：",[2756,131566,131567],{"href":131567,"rel":131568},"https:\u002F\u002Fmujoco.readthedocs.io\u002Fen\u002Fstable\u002Foverview.html",[4943],[18,131570,131571],{"id":131571},"章节目录",[103,131573,131574,131580,131586,131592,131598,131604,131610,131616],{},[43,131575,131576],{},[2756,131577,131579],{"href":131578},"\u002Fwiki\u002F2025-05-17-mujoco-xue-xi\u002Fch1-huan-jing-an-zhuang-yu-di-yi-ge-mujoco-cheng-xu","环境安装与第一个 MuJoCo 程序",[43,131581,131582],{},[2756,131583,131585],{"href":131584},"\u002Fwiki\u002F2025-05-17-mujoco-xue-xi\u002Fch2-xml-yu-mjcf-wu-li-jian-mo-ji-chu","XML 与 MJCF 物理建模基础",[43,131587,131588],{},[2756,131589,131591],{"href":131590},"\u002Fwiki\u002F2025-05-17-mujoco-xue-xi\u002Fch3-python-kong-zhi-jie-kou","Python 控制接口：读取状态与推进仿真",[43,131593,131594],{},[2756,131595,131597],{"href":131596},"\u002Fwiki\u002F2025-05-17-mujoco-xue-xi\u002Fch4-guan-jie-actuator-yu-li-kong-zhi","关节、Actuator 与力控制",[43,131599,131600],{},[2756,131601,131603],{"href":131602},"\u002Fwiki\u002F2025-05-17-mujoco-xue-xi\u002Fch5-viewer-yu-renderer","Viewer 可视化与 Renderer 离屏渲染",[43,131605,131606],{},[2756,131607,131609],{"href":131608},"\u002Fwiki\u002F2025-05-17-mujoco-xue-xi\u002Fch6-cartpole-kong-zhi-ren-wu","控制任务：Cartpole",[43,131611,131612],{},[2756,131613,131615],{"href":131614},"\u002Fwiki\u002F2025-05-17-mujoco-xue-xi\u002Fch7-reacher-kong-zhi-ren-wu","控制任务：Reacher 机械臂到达目标",[43,131617,131618],{},[2756,131619,131621],{"href":131620},"\u002Fwiki\u002F2025-05-17-mujoco-xue-xi\u002Fch8-gymnasium-jie-kou-ji-chu","Gymnasium 风格强化学习接口基础",[18,131623,131624],{"id":131624},"推荐学习路线",[451,131626,131629],{"className":131627,"code":131628,"language":8391,"meta":32},[21693],"环境安装\n→ XML \u002F MJCF 建模\n→ MjModel \u002F MjData\n→ mj_step 控制循环\n→ joint \u002F actuator\n→ viewer \u002F renderer\n→ cartpole \u002F reacher\n→ Gymnasium 环境接口\n→ imitation learning \u002F VLA 数据采集\n",[457,131630,131628],{"__ignoreMap":32},[14,131632,131633],{},"不要跳过第 1 到第 4 章。后面的 Cartpole、Reacher 和 Gymnasium 环境，本质上都是在反复使用前面这几个核心概念。",[18,131635,131636],{"id":131636},"建议的目录结构",[14,131638,131639],{},"为了避免代码散落，建议你在任意工作目录下新建一个学习文件夹：",[451,131641,131643],{"className":40235,"code":131642,"language":40237,"meta":32,"style":32},"mkdir -p mujoco_tutorial\ncd mujoco_tutorial\n",[457,131644,131645,131653],{"__ignoreMap":32},[460,131646,131647,131649,131651],{"class":462,"line":463},[460,131648,115759],{"class":929},[460,131650,45625],{"class":900},[460,131652,115764],{"class":1353},[460,131654,131655,131657],{"class":462,"line":476},[460,131656,115769],{"class":900},[460,131658,115764],{"class":1353},[14,131660,131661],{},"每一章的代码都单独保存：",[451,131663,131666],{"className":131664,"code":131665,"language":8391,"meta":32},[21693],"mujoco_tutorial\u002F\n├── ch1_first_sim.py\n├── ch2_xml_basic.py\n├── ch3_python_state.py\n├── ch4_joint_motor.py\n├── ch5_viewer.py\n├── ch5_renderer.py\n├── ch6_cartpole.py\n├── ch7_reacher.py\n└── ch8_gym_env.py\n",[457,131667,131665],{"__ignoreMap":32},[14,131669,131670],{},"这样出错时，你可以确认到底是哪一章的代码有问题。",[18,131672,131673],{"id":131673},"学习方法",[14,131675,131676],{},"每章建议按这个顺序操作：",[103,131678,131679,131682,131685,131688,131691,131694],{},[43,131680,131681],{},"先读“核心概念解释”，不用追求一次看懂所有细节。",[43,131683,131684],{},"复制最小可运行代码，保存成指定文件。",[43,131686,131687],{},"运行代码，确认没有报错。",[43,131689,131690],{},"对照“运行结果说明”理解输出。",[43,131692,131693],{},"做“验证步骤”，主动改一两个参数。",[43,131695,131696],{},"遇到报错先看“常见错误与解决方案”。",[14,131698,131699],{},"不要只看不跑。MuJoCo 的学习重点是“改参数以后观察物理结果”，比如把重力变小、把电机力变大、把初始高度变高。只要你能预测并解释这些变化，就说明你真正理解了。",[18,131701,131702],{"id":131702},"全局排错顺序",[14,131704,131705],{},"遇到问题时，按下面顺序查：",[103,131707,131708,131714,131720,131725,131728,131731,131738,131748],{},[43,131709,131710,131711],{},"Python 环境是否激活：",[457,131712,131713],{},"which python",[43,131715,131716,131717],{},"MuJoCo 是否能导入：",[457,131718,131719],{},"python -c \"import mujoco; print(mujoco.__version__)\"",[43,131721,131722,131723],{},"是否误装了 ",[457,131724,115505],{},[43,131726,131727],{},"XML 标签是否闭合、属性是否拼写正确",[43,131729,131730],{},"actuator 引用的 joint 名字是否存在",[43,131732,131733,131735,131736],{},[457,131734,115569],{}," 的长度是否等于 ",[457,131737,116651],{},[43,131739,120078,131740,6271,131742,131744,131745],{},[457,131741,118523],{},[457,131743,118853],{}," 后是否调用了 ",[457,131746,131747],{},"mujoco.mj_forward",[43,131749,131750],{},"图形显示问题是否和 OpenGL、GLFW、远程服务器有关",[1944,131752,131753],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":131755},[131756,131757,131758,131759,131760,131761,131762,131763],{"id":131397,"depth":476,"text":131397},{"id":131426,"depth":476,"text":131427},{"id":131456,"depth":476,"text":131456},{"id":131571,"depth":476,"text":131571},{"id":131624,"depth":476,"text":131624},{"id":131636,"depth":476,"text":131636},{"id":131673,"depth":476,"text":131673},{"id":131702,"depth":476,"text":131702},"仿真搭建。",{"category":39791},"\u002Fwiki\u002F2025-05-17-mujoco",{"title":131340,"description":131764},"wiki\u002F2025-05-17-mujoco学习\u002Findex","Y9Rv9JgXjVCbeZHS_U4izJnnZcIId184s39EpFx-Co4",{"id":131771,"title":131772,"body":131773,"description":16682,"extension":16683,"meta":132228,"navigation":521,"path":132229,"seo":132230,"stem":132231,"__hash__":132232},"wiki\u002Fwiki\u002F2025-01-27-Linux基本操作\u002Fch1-最常用的基本操作（更新）.md","1. 最常用的基本操作（更新）",{"type":7,"value":131774,"toc":132226},[131775,131778,131781,131787,132223],[10,131776,131772],{"id":131777},"_1-最常用的基本操作更新",[14,131779,131780],{},"装linux系统教程：",[14,131782,131783],{},[2756,131784,131785],{"href":131785,"rel":131786},"https:\u002F\u002Fme.tungchiahui.cn\u002Fblog\u002Flinux-tutorial\u002F",[4943],[451,131788,131792],{"className":131789,"code":131790,"language":131791,"meta":32,"style":32},"language-Bash shiki shiki-themes github-light github-dark","#更新相关的知识\n# 更新软件包列表（从服务器获取最新软件信息）\nsudo apt update\n# 升级所有可更新的软件包（不删除旧包）\nsudo apt upgrade\n#更新和升级软件包\nsudo apt update && sudo apt upgrade -y\n#列出可更新的软件包及版本信息\napt list --upgradable\n#彻底升级（处理依赖关系，可能删除旧包）\nsudo apt full-upgrade\n#设置指定版本\nsudo apt install \u003Cpackage_name>=\u003Cversion_number>\n#只安装软件包不升级\nsudo apt install \u003Cpackage_name> --no-upgrade\n#只升级，不存在就不安装\nsudo apt install \u003Cpackage_name> --only-upgrade\n\n#安装指定的软件命令\nsudo apt install \u003Cpackage_name>\n\n#安装多个软件包\nsudo apt install \u003Cpackage_1> \u003Cpackage_2> \u003Cpackage_3>\n\n#更新指定的软件命令\nsudo apt update \u003Cpackage_name>\n\n#显示软件包具体信息,例如：版本号，安装大小，依赖关系等等\napt show \u003Cpackage_name>\n\n#删除软件包命令\nsudo apt remove \u003Cpackage_name>\n\n# 清理旧版本和缓存（释放磁盘空间）\nsudo apt autoremove  # 删除不再需要的依赖和库文件\nsudo apt clean       # 清理下载的缓存包\n\n#移除软件包及配置文件\nsudo apt purge \u003Cpackage_name>\n\n#查找软件包命令\nsudo apt search \u003Ckeyword>\n\n#列出所有已安装的包\napt list --installed\n\n#列出所有已安装的包的版本信息\napt list --all-versions\n","Bash",[457,131793,131794,131799,131804,131813,131818,131827,131832,131852,131857,131868,131873,131882,131887,131915,131920,131939,131944,131963,131967,131972,131988,131992,131997,132027,132031,132036,132052,132056,132061,132076,132080,132085,132101,132105,132110,132122,132134,132138,132143,132160,132164,132169,132187,132191,132196,132205,132209,132214],{"__ignoreMap":32},[460,131795,131796],{"class":462,"line":463},[460,131797,131798],{"class":942},"#更新相关的知识\n",[460,131800,131801],{"class":462,"line":476},[460,131802,131803],{"class":942},"# 更新软件包列表（从服务器获取最新软件信息）\n",[460,131805,131806,131808,131811],{"class":462,"line":482},[460,131807,40989],{"class":929},[460,131809,131810],{"class":1353}," apt",[460,131812,42653],{"class":1353},[460,131814,131815],{"class":462,"line":488},[460,131816,131817],{"class":942},"# 升级所有可更新的软件包（不删除旧包）\n",[460,131819,131820,131822,131824],{"class":462,"line":494},[460,131821,40989],{"class":929},[460,131823,131810],{"class":1353},[460,131825,131826],{"class":1353}," upgrade\n",[460,131828,131829],{"class":462,"line":500},[460,131830,131831],{"class":942},"#更新和升级软件包\n",[460,131833,131834,131836,131838,131841,131843,131845,131847,131850],{"class":462,"line":506},[460,131835,40989],{"class":929},[460,131837,131810],{"class":1353},[460,131839,131840],{"class":1353}," update",[460,131842,42601],{"class":466},[460,131844,40989],{"class":929},[460,131846,131810],{"class":1353},[460,131848,131849],{"class":1353}," upgrade",[460,131851,115474],{"class":900},[460,131853,131854],{"class":462,"line":512},[460,131855,131856],{"class":942},"#列出可更新的软件包及版本信息\n",[460,131858,131859,131862,131865],{"class":462,"line":518},[460,131860,131861],{"class":929},"apt",[460,131863,131864],{"class":1353}," list",[460,131866,131867],{"class":900}," --upgradable\n",[460,131869,131870],{"class":462,"line":525},[460,131871,131872],{"class":942},"#彻底升级（处理依赖关系，可能删除旧包）\n",[460,131874,131875,131877,131879],{"class":462,"line":531},[460,131876,40989],{"class":929},[460,131878,131810],{"class":1353},[460,131880,131881],{"class":1353}," full-upgrade\n",[460,131883,131884],{"class":462,"line":537},[460,131885,131886],{"class":942},"#设置指定版本\n",[460,131888,131889,131891,131893,131895,131897,131900,131902,131904,131906,131908,131911,131913],{"class":462,"line":543},[460,131890,40989],{"class":929},[460,131892,131810],{"class":1353},[460,131894,40247],{"class":1353},[460,131896,45311],{"class":887},[460,131898,131899],{"class":1353},"package_nam",[460,131901,3609],{"class":466},[460,131903,17668],{"class":887},[460,131905,894],{"class":1353},[460,131907,781],{"class":887},[460,131909,131910],{"class":1353},"version_numbe",[460,131912,17389],{"class":466},[460,131914,473],{"class":887},[460,131916,131917],{"class":462,"line":549},[460,131918,131919],{"class":942},"#只安装软件包不升级\n",[460,131921,131922,131924,131926,131928,131930,131932,131934,131936],{"class":462,"line":555},[460,131923,40989],{"class":929},[460,131925,131810],{"class":1353},[460,131927,40247],{"class":1353},[460,131929,45311],{"class":887},[460,131931,131899],{"class":1353},[460,131933,3609],{"class":466},[460,131935,17668],{"class":887},[460,131937,131938],{"class":900}," --no-upgrade\n",[460,131940,131941],{"class":462,"line":560},[460,131942,131943],{"class":942},"#只升级，不存在就不安装\n",[460,131945,131946,131948,131950,131952,131954,131956,131958,131960],{"class":462,"line":566},[460,131947,40989],{"class":929},[460,131949,131810],{"class":1353},[460,131951,40247],{"class":1353},[460,131953,45311],{"class":887},[460,131955,131899],{"class":1353},[460,131957,3609],{"class":466},[460,131959,17668],{"class":887},[460,131961,131962],{"class":900}," --only-upgrade\n",[460,131964,131965],{"class":462,"line":572},[460,131966,522],{"emptyLinePlaceholder":521},[460,131968,131969],{"class":462,"line":578},[460,131970,131971],{"class":942},"#安装指定的软件命令\n",[460,131973,131974,131976,131978,131980,131982,131984,131986],{"class":462,"line":812},[460,131975,40989],{"class":929},[460,131977,131810],{"class":1353},[460,131979,40247],{"class":1353},[460,131981,45311],{"class":887},[460,131983,131899],{"class":1353},[460,131985,3609],{"class":466},[460,131987,473],{"class":887},[460,131989,131990],{"class":462,"line":818},[460,131991,522],{"emptyLinePlaceholder":521},[460,131993,131994],{"class":462,"line":824},[460,131995,131996],{"class":942},"#安装多个软件包\n",[460,131998,131999,132001,132003,132005,132007,132010,132013,132015,132017,132020,132022,132024],{"class":462,"line":2074},[460,132000,40989],{"class":929},[460,132002,131810],{"class":1353},[460,132004,40247],{"class":1353},[460,132006,45311],{"class":887},[460,132008,132009],{"class":1353},"package_",[460,132011,132012],{"class":887},"1>",[460,132014,45311],{"class":887},[460,132016,132009],{"class":1353},[460,132018,132019],{"class":887},"2>",[460,132021,45311],{"class":887},[460,132023,132009],{"class":1353},[460,132025,132026],{"class":887},"3>\n",[460,132028,132029],{"class":462,"line":2088},[460,132030,522],{"emptyLinePlaceholder":521},[460,132032,132033],{"class":462,"line":2103},[460,132034,132035],{"class":942},"#更新指定的软件命令\n",[460,132037,132038,132040,132042,132044,132046,132048,132050],{"class":462,"line":2122},[460,132039,40989],{"class":929},[460,132041,131810],{"class":1353},[460,132043,131840],{"class":1353},[460,132045,45311],{"class":887},[460,132047,131899],{"class":1353},[460,132049,3609],{"class":466},[460,132051,473],{"class":887},[460,132053,132054],{"class":462,"line":2144},[460,132055,522],{"emptyLinePlaceholder":521},[460,132057,132058],{"class":462,"line":2158},[460,132059,132060],{"class":942},"#显示软件包具体信息,例如：版本号，安装大小，依赖关系等等\n",[460,132062,132063,132065,132068,132070,132072,132074],{"class":462,"line":2163},[460,132064,131861],{"class":929},[460,132066,132067],{"class":1353}," show",[460,132069,45311],{"class":887},[460,132071,131899],{"class":1353},[460,132073,3609],{"class":466},[460,132075,473],{"class":887},[460,132077,132078],{"class":462,"line":2168},[460,132079,522],{"emptyLinePlaceholder":521},[460,132081,132082],{"class":462,"line":2183},[460,132083,132084],{"class":942},"#删除软件包命令\n",[460,132086,132087,132089,132091,132093,132095,132097,132099],{"class":462,"line":2194},[460,132088,40989],{"class":929},[460,132090,131810],{"class":1353},[460,132092,42490],{"class":1353},[460,132094,45311],{"class":887},[460,132096,131899],{"class":1353},[460,132098,3609],{"class":466},[460,132100,473],{"class":887},[460,132102,132103],{"class":462,"line":2199},[460,132104,522],{"emptyLinePlaceholder":521},[460,132106,132107],{"class":462,"line":2204},[460,132108,132109],{"class":942},"# 清理旧版本和缓存（释放磁盘空间）\n",[460,132111,132112,132114,132116,132119],{"class":462,"line":2212},[460,132113,40989],{"class":929},[460,132115,131810],{"class":1353},[460,132117,132118],{"class":1353}," autoremove",[460,132120,132121],{"class":942},"  # 删除不再需要的依赖和库文件\n",[460,132123,132124,132126,132128,132131],{"class":462,"line":2257},[460,132125,40989],{"class":929},[460,132127,131810],{"class":1353},[460,132129,132130],{"class":1353}," clean",[460,132132,132133],{"class":942},"       # 清理下载的缓存包\n",[460,132135,132136],{"class":462,"line":2285},[460,132137,522],{"emptyLinePlaceholder":521},[460,132139,132140],{"class":462,"line":2298},[460,132141,132142],{"class":942},"#移除软件包及配置文件\n",[460,132144,132145,132147,132149,132152,132154,132156,132158],{"class":462,"line":2303},[460,132146,40989],{"class":929},[460,132148,131810],{"class":1353},[460,132150,132151],{"class":1353}," purge",[460,132153,45311],{"class":887},[460,132155,131899],{"class":1353},[460,132157,3609],{"class":466},[460,132159,473],{"class":887},[460,132161,132162],{"class":462,"line":2308},[460,132163,522],{"emptyLinePlaceholder":521},[460,132165,132166],{"class":462,"line":2318},[460,132167,132168],{"class":942},"#查找软件包命令\n",[460,132170,132171,132173,132175,132178,132180,132183,132185],{"class":462,"line":2333},[460,132172,40989],{"class":929},[460,132174,131810],{"class":1353},[460,132176,132177],{"class":1353}," search",[460,132179,45311],{"class":887},[460,132181,132182],{"class":1353},"keywor",[460,132184,17054],{"class":466},[460,132186,473],{"class":887},[460,132188,132189],{"class":462,"line":2338},[460,132190,522],{"emptyLinePlaceholder":521},[460,132192,132193],{"class":462,"line":2343},[460,132194,132195],{"class":942},"#列出所有已安装的包\n",[460,132197,132198,132200,132202],{"class":462,"line":2353},[460,132199,131861],{"class":929},[460,132201,131864],{"class":1353},[460,132203,132204],{"class":900}," --installed\n",[460,132206,132207],{"class":462,"line":2368},[460,132208,522],{"emptyLinePlaceholder":521},[460,132210,132211],{"class":462,"line":2381},[460,132212,132213],{"class":942},"#列出所有已安装的包的版本信息\n",[460,132215,132216,132218,132220],{"class":462,"line":2394},[460,132217,131861],{"class":929},[460,132219,131864],{"class":1353},[460,132221,132222],{"class":900}," --all-versions\n",[1944,132224,132225],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}",{"title":32,"searchDepth":476,"depth":476,"links":132227},[],{},"\u002Fwiki\u002F2025-01-27-linux\u002Fch1",{"title":131772,"description":16682},"wiki\u002F2025-01-27-Linux基本操作\u002Fch1-最常用的基本操作（更新）","0qHSF2CcfIvVp9KNbVlIRaabWQyFrf-TGaOhET23zi8",{"id":132234,"title":132235,"body":132236,"description":16682,"extension":16683,"meta":132977,"navigation":521,"path":132978,"seo":132979,"stem":132980,"__hash__":132981},"wiki\u002Fwiki\u002F2025-01-27-Linux基本操作\u002Fch2-Linux装机教程.md","2. Linux装机教程",{"type":7,"value":132237,"toc":132964},[132238,132241,132245,132248,132254,132258,132262,132268,132273,132278,132283,132288,132293,132296,132299,132302,132305,132309,132312,132317,132320,132325,132328,132333,132340,132343,132346,132349,132352,132355,132366,132370,132374,132379,132384,132388,132393,132397,132402,132406,132410,132415,132418,132463,132468,132472,132476,132481,132487,132492,132502,132507,132517,132522,132527,132554,132558,132561,132566,132569,132594,132598,132603,132606,132611,132616,132636,132641,132644,132659,132663,132716,132719,132724,132728,132731,132746,132749,132752,132757,132761,132765,132768,132772,132776,132779,132784,132789,132793,132800,132808,132811,132818,132823,132828,132831,132836,132843,132848,132855,132859,132861,132866,132870,132873,132876,132881,132884,132889,132892,132897,132902,132907,132911,132916,132920,132961],[10,132239,132235],{"id":132240},"_2-linux装机教程",[18,132242,132244],{"id":132243},"_21-实体机","2.1 实体机",[14,132246,132247],{},"使用清华源：（Ubuntu24.04）",[14,132249,132250],{},[2756,132251,132252],{"href":132252,"rel":132253},"https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fubuntu-releases\u002F24.04\u002F",[4943],[18,132255,132257],{"id":132256},"_22-普通虚拟机","2.2 普通虚拟机",[23,132259,132261],{"id":132260},"_221-下载virtualbox虚拟机","2.2.1 下载VirtualBox虚拟机",[14,132263,132264],{},[2756,132265,132266],{"href":132266,"rel":132267},"https:\u002F\u002Fwww.virtualbox.org\u002Fwiki\u002FDownload_Old_Builds_7_0",[4943],[14,132269,132270],{},[30,132271],{"alt":32,"src":132272},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-001.png",[14,132274,132275],{},[30,132276],{"alt":32,"src":132277},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-002.png",[14,132279,132280],{},[30,132281],{"alt":32,"src":132282},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-003.png",[14,132284,132285],{},[30,132286],{"alt":32,"src":132287},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-004.png",[14,132289,132290],{},[30,132291],{"alt":32,"src":132292},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-005.png",[14,132294,132295],{},"内存4G（4096MB）；",[14,132297,132298],{},"CPU给4个核；",[14,132300,132301],{},"硬盘动态分配60G；",[14,132303,132304],{},"除了上面这三项，其它的默认即可，最后点击“Finish”。",[23,132306,132308],{"id":132307},"_222-安装ubuntu","2.2.2 安装Ubuntu",[14,132310,132311],{},"按照1.1的步骤下载Ubuntu",[14,132313,132314],{},[30,132315],{"alt":32,"src":132316},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-006.png",[14,132318,132319],{},"点击启动(绿色大箭头)，过一段时间出现下图中的小界面，往下拉选择中文简体，然后点击“安装Ubuntu”",[14,132321,132322],{},[30,132323],{"alt":32,"src":132324},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-007.png",[14,132326,132327],{},"键盘布局默认“Chinese”并点击“继续”，如果找不到“继续”就用Alt+F7，然后往上拖鼠标即可看到（注意拖鼠标的过程中不要点击鼠标，拖到目标位置后再点击鼠标）。",[14,132329,132330],{},[30,132331],{"alt":32,"src":132332},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-008.png",[14,132334,132335,132336,132339],{},"选择“正常安装”(找不到都用Alt+F7)， ",[3944,132337,132338],{},"不选"," “安装Ubuntu时下载更新”，其余都默认并继续",[14,132341,132342],{},"清除整个磁盘并安装Ubuntu，现在安装。(不会清除windows的磁盘，放心安装)",[14,132344,132345],{},"将改动写入磁盘吗 继续",[14,132347,132348],{},"选择东八区（shanghai，大致在地图上点一下），继续",[14,132350,132351],{},"姓名、计算机名、用户名、密码都自己设置，越简单越好(密码需牢记)。 自动登录 继续",[14,132353,132354],{},"就开始安装了,比较耗时，只要Skip高亮了就点击之（这样省时，光标是圆圈也能点击）",[14,132356,132357,132358,132361,132362,132365],{},"安装完成后，现在重启，重启过程中根据提示按回车键。 进入系统后不要升级，且第一次进系统需设置一些信息，根据提示 ",[3944,132359,132360],{},"除了"," 选不发送系统信息与不升级之外， ",[3944,132363,132364],{},"其它"," 都跳过或前进）",[23,132367,132369],{"id":132368},"_223-增强虚拟机体验感","2.2.3 增强虚拟机体验感",[115,132371,132373],{"id":132372},"_2231-全屏","2.2.3.1 全屏",[14,132375,132376],{},[30,132377],{"alt":32,"src":132378},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-009.png",[14,132380,132381],{},[30,132382],{"alt":32,"src":132383},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-010.png",[115,132385,132387],{"id":132386},"_2232-文件交换","2.2.3.2 文件交换",[14,132389,132390],{},[30,132391],{"alt":32,"src":132392},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-011.png",[115,132394,132396],{"id":132395},"_2233-新建文本文档","2.2.3.3 新建文本文档",[14,132398,132399],{},[30,132400],{"alt":32,"src":132401},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-012.png",[18,132403,132405],{"id":132404},"_23-windows-subsystem-for-linux-2windows的linux子系统2","2.3 Windows Subsystem For Linux 2(Windows的Linux子系统2)",[23,132407,132409],{"id":132408},"_231-简介与优缺点","2.3.1 简介与优缺点",[103,132411,132412],{},[43,132413,132414],{},"什么情况下推荐？",[14,132416,132417],{},"无多余硬盘，没法实体装Linux。此时最优选择就是WSL2。而非VMware等虚拟机。",[103,132419,132420],{"start":476},[43,132421,132422,132423],{},"优缺点：",[103,132424,132425,132455],{},[43,132426,132427,132428],{},"优点：",[103,132429,132430,132433,132440,132443,132446,132449,132452],{},[43,132431,132432],{},"WSL2是最好的Linux发行版;(bushi)",[43,132434,132435,132436,132439],{},"性能损耗极低。且比在Windows上跑深度性能 ",[3944,132437,132438],{},"强非常非常多;"," （如下图，时间的数值越低证明性能越高）",[43,132441,132442],{},"非常方便调用USB设备，可以USB直通;",[43,132444,132445],{},"非常方便使用英伟达显卡的CUDA与cuDNN;",[43,132447,132448],{},"非常方便Win与WSL2互相传文件等协同操作;",[43,132450,132451],{},"WSL2中甚至可以在Linux的终端中使用Windows软件;",[43,132453,132454],{},"非常方便使用Windows的VScode远程开发;",[43,132456,132457,132458],{},"缺点：",[103,132459,132460],{},[43,132461,132462],{},"无法调用本机摄像头，或说调用本机摄像头会巨麻烦。（虽无法调用本机摄像头，但是可以使用USB的摄像头）",[14,132464,132465],{},[30,132466],{"alt":32,"src":132467},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-013.png",[23,132469,132471],{"id":132470},"_232-安装教程","2.3.2 安装教程",[115,132473,132475],{"id":132474},"_2321-启动wsl2子系统和虚拟平台","2.3.2.1 启动WSL2子系统和虚拟平台",[103,132477,132478],{},[43,132479,132480],{},"方法一(图形界面)",[14,132482,132483,132484,41031],{},"用Win+R输入",[457,132485,132486],{},"appwiz.cpl",[14,132488,132489],{},[30,132490],{"alt":32,"src":132491},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-014.png",[14,132493,132494,132495,132498,132499,42884],{},"点击OK进入 ",[3944,132496,132497],{},"程序和功能\u002FPrograms and Features"," 界面，点击 ",[3944,132500,132501],{},"启用或关闭Windows功能\u002FTurn Windows features on or off",[14,132503,132504],{},[30,132505],{"alt":32,"src":132506},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-015.png",[14,132508,132509,132510,115511,132513,132516],{},"选择 ",[3944,132511,132512],{},"适用于Linux的Windows子系统\u002FWindows Subsystem for Linux",[3944,132514,132515],{},"虚拟机平台\u002FVirtual Machine Platform"," 功能：",[14,132518,132519],{},[30,132520],{"alt":32,"src":132521},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-016.png",[103,132523,132524],{"start":476},[43,132525,132526],{},"方法二(命令行)",[451,132528,132532],{"className":132529,"code":132530,"language":132531,"meta":32,"style":32},"language-PowerShell shiki shiki-themes github-light github-dark","# 开启 Linux 子系统\ndism.exe \u002Fonline \u002Fenable-feature \u002Ffeaturename:Microsoft-Windows-Subsystem-Linux \u002Fall \u002Fnorestart\n# 开启虚拟机平台\ndism.exe \u002Fonline \u002Fenable-feature \u002Ffeaturename:VirtualMachinePlatform \u002Fall \u002Fnorestart\n","PowerShell",[457,132533,132534,132539,132544,132549],{"__ignoreMap":32},[460,132535,132536],{"class":462,"line":463},[460,132537,132538],{},"# 开启 Linux 子系统\n",[460,132540,132541],{"class":462,"line":476},[460,132542,132543],{},"dism.exe \u002Fonline \u002Fenable-feature \u002Ffeaturename:Microsoft-Windows-Subsystem-Linux \u002Fall \u002Fnorestart\n",[460,132545,132546],{"class":462,"line":482},[460,132547,132548],{},"# 开启虚拟机平台\n",[460,132550,132551],{"class":462,"line":488},[460,132552,132553],{},"dism.exe \u002Fonline \u002Fenable-feature \u002Ffeaturename:VirtualMachinePlatform \u002Fall \u002Fnorestart\n",[115,132555,132557],{"id":132556},"_2322-将wsl2设置为默认版本","2.3.2.2 将WSL2设置为默认版本",[14,132559,132560],{},"用管理员权限打开powershell",[14,132562,132563],{},[30,132564],{"alt":32,"src":132565},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-017.png",[14,132567,132568],{},"升级WSL并设置默认版本为WSL2",[451,132570,132572],{"className":132529,"code":132571,"language":132531,"meta":32,"style":32},"# 更新 wsl\nwsl --update\n# 将 wsl 版本设置为 wsl2\nwsl --set-default-version 2\n",[457,132573,132574,132579,132584,132589],{"__ignoreMap":32},[460,132575,132576],{"class":462,"line":463},[460,132577,132578],{},"# 更新 wsl\n",[460,132580,132581],{"class":462,"line":476},[460,132582,132583],{},"wsl --update\n",[460,132585,132586],{"class":462,"line":482},[460,132587,132588],{},"# 将 wsl 版本设置为 wsl2\n",[460,132590,132591],{"class":462,"line":488},[460,132592,132593],{},"wsl --set-default-version 2\n",[115,132595,132597],{"id":132596},"_2323-安装linux发行版","2.3.2.3 安装Linux发行版",[103,132599,132600],{},[43,132601,132602],{},"方式一(商店下载)",[14,132604,132605],{},"直接打开Microsoft Store搜索对应的发行版下载即可(比如Ubuntu 24.04 LTS)",[14,132607,132608],{},[30,132609],{"alt":32,"src":132610},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-018.png",[103,132612,132613],{"start":476},[43,132614,132615],{},"方式二(命令行安装)",[451,132617,132619],{"className":132529,"code":132618,"language":132531,"meta":32,"style":32},"# 列出可安装的 Linux 版本\n#（需要科学手段）\nwsl --list --online\n",[457,132620,132621,132626,132631],{"__ignoreMap":32},[460,132622,132623],{"class":462,"line":463},[460,132624,132625],{},"# 列出可安装的 Linux 版本\n",[460,132627,132628],{"class":462,"line":476},[460,132629,132630],{},"#（需要科学手段）\n",[460,132632,132633],{"class":462,"line":482},[460,132634,132635],{},"wsl --list --online\n",[14,132637,132638],{},[30,132639],{"alt":32,"src":132640},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-019.png",[14,132642,132643],{},"选择对应发行版并安装",[451,132645,132647],{"className":132529,"code":132646,"language":132531,"meta":32,"style":32},"# Ubuntu安装完毕后需要重启系统\nwsl --install -d Ubuntu-24.04\n",[457,132648,132649,132654],{"__ignoreMap":32},[460,132650,132651],{"class":462,"line":463},[460,132652,132653],{},"# Ubuntu安装完毕后需要重启系统\n",[460,132655,132656],{"class":462,"line":476},[460,132657,132658],{},"wsl --install -d Ubuntu-24.04\n",[115,132660,132662],{"id":132661},"_2324-查看系统状态","2.3.2.4 查看系统状态",[451,132664,132666],{"className":132529,"code":132665,"language":132531,"meta":32,"style":32},"# 查看 wsl\nwsl -l\n# 查看 wsl 运行版本或模式\nwsl -l -v\n\n\n# 设置发行版为使用 wsl 2 （如果版本为 2 则不需要）\nwsl --set-version \u003Cdistro> 2\n# 选择要注销的版本 （如果想卸载再用此命令）\nwsl --unregister \u003Cdistro>\n",[457,132667,132668,132673,132678,132683,132688,132692,132696,132701,132706,132711],{"__ignoreMap":32},[460,132669,132670],{"class":462,"line":463},[460,132671,132672],{},"# 查看 wsl\n",[460,132674,132675],{"class":462,"line":476},[460,132676,132677],{},"wsl -l\n",[460,132679,132680],{"class":462,"line":482},[460,132681,132682],{},"# 查看 wsl 运行版本或模式\n",[460,132684,132685],{"class":462,"line":488},[460,132686,132687],{},"wsl -l -v\n",[460,132689,132690],{"class":462,"line":494},[460,132691,522],{"emptyLinePlaceholder":521},[460,132693,132694],{"class":462,"line":500},[460,132695,522],{"emptyLinePlaceholder":521},[460,132697,132698],{"class":462,"line":506},[460,132699,132700],{},"# 设置发行版为使用 wsl 2 （如果版本为 2 则不需要）\n",[460,132702,132703],{"class":462,"line":512},[460,132704,132705],{},"wsl --set-version \u003Cdistro> 2\n",[460,132707,132708],{"class":462,"line":518},[460,132709,132710],{},"# 选择要注销的版本 （如果想卸载再用此命令）\n",[460,132712,132713],{"class":462,"line":525},[460,132714,132715],{},"wsl --unregister \u003Cdistro>\n",[14,132717,132718],{},"输出Version为2即正常",[14,132720,132721],{},[30,132722],{"alt":32,"src":132723},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-020.png",[115,132725,132727],{"id":132726},"_2325-设置用户名与密码","2.3.2.5 设置用户名与密码",[14,132729,132730],{},"直接在Powershell里输入wsl命令进入子系统",[451,132732,132734],{"className":132529,"code":132733,"language":132531,"meta":32,"style":32},"# 进入子系统\nwsl\n",[457,132735,132736,132741],{"__ignoreMap":32},[460,132737,132738],{"class":462,"line":463},[460,132739,132740],{},"# 进入子系统\n",[460,132742,132743],{"class":462,"line":476},[460,132744,132745],{},"wsl\n",[14,132747,132748],{},"输入用户名(随便设置，建议字母+数字，或者纯字母)",[14,132750,132751],{},"输入密码(建议低于6位的数字，并且在输入密码时，终端上不会显示输入的字符，但是已经正常输入了)",[14,132753,132754],{},[30,132755],{"alt":32,"src":132756},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-021.png",[23,132758,132760],{"id":132759},"_233-配置各种环境","2.3.3 配置各种环境",[115,132762,132764],{"id":132763},"_2331-换源","2.3.3.1 换源",[14,132766,132767],{},"(同实体机LINUX，往下找教程)",[115,132769,132771],{"id":132770},"_2332-英伟达显卡","2.3.3.2 英伟达显卡",[4287,132773,132775],{"id":132774},"_23321-显卡驱动","2.3.3.2.1 显卡驱动",[14,132777,132778],{},"不用安装，只要你的Windows安装了驱动，你的WSL2就已经安装好驱动了。",[14,132780,132781],{},[30,132782],{"alt":32,"src":132783},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-022.png",[14,132785,132786],{},[30,132787],{"alt":32,"src":132788},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-023.png",[4287,132790,132792],{"id":132791},"_23322-cuda","2.3.3.2.2 CUDA",[14,132794,132795,132796],{},"前往 NVIDIA CUDA Toolkit 下载页面：",[2756,132797,132798],{"href":132798,"rel":132799},"https:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-downloads",[4943],[14,132801,132802,132805],{},[30,132803],{"alt":32,"src":132804},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-024.png",[30,132806],{"alt":32,"src":132807},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-025.png",[14,132809,132810],{},"在下方的网站，选择合适的版本。",[14,132812,132813,132814],{},"WSL2 专属 CUDA 指南：",[2756,132815,132816],{"href":132816,"rel":132817},"https:\u002F\u002Fdocs.nvidia.com\u002Fcuda\u002Fwsl-user-guide\u002Findex.html",[4943],[14,132819,132820],{},[3944,132821,132822],{},"(同实体机LINUX，往下找教程，唯一与实体机不同的地方如下图)",[14,132824,132825],{},[30,132826],{"alt":32,"src":132827},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-026.png",[14,132829,132830],{},"挨行敲一遍",[14,132832,132833],{},[30,132834],{"alt":32,"src":132835},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-027.png",[14,132837,132838,132839,132842],{},"敲完后，输入",[457,132840,132841],{},"nvcc -V","检测是否安装成功，如果出现下图，证明没配置环境。",[14,132844,132845],{},[30,132846],{"alt":32,"src":132847},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-028.png",[14,132849,132850,132851,132854],{},"（请详看下方教程的",[3944,132852,132853],{},"安装CUDA的配置环境来看","如何配置环境）",[4287,132856,132858],{"id":132857},"_23323-cudnn","2.3.3.2.3 cuDNN",[14,132860,132767],{},[14,132862,132863],{},[30,132864],{"alt":32,"src":132865},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-029.png",[115,132867,132869],{"id":132868},"_2333-vscode远程开发","2.3.3.3 VScode远程开发",[14,132871,132872],{},"(一定要把工程放在Linux中开发，别放在Win磁盘中，否则I\u002FO效率会很低)",[14,132874,132875],{},"安装该插件(WSL2有自己的远程开发插件，无需使用SSH）。",[14,132877,132878],{},[30,132879],{"alt":32,"src":132880},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-030.png",[14,132882,132883],{},"连接WSL2",[14,132885,132886],{},[30,132887],{"alt":32,"src":132888},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-031.png",[14,132890,132891],{},"远程开发成功。",[14,132893,132894],{},[30,132895],{"alt":32,"src":132896},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-032.png",[14,132898,132899],{},[30,132900],{"alt":32,"src":132901},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-033.png",[14,132903,132904],{},[30,132905],{"alt":32,"src":132906},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-034.png",[115,132908,132910],{"id":132909},"_2334-linux终端使用windows软件","2.3.3.4 Linux终端使用Windows软件",[14,132912,132913],{},[30,132914],{"alt":32,"src":132915},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-035.png",[115,132917,132919],{"id":132918},"_2335-opengl有问题","2.3.3.5 OpenGL有问题",[451,132921,132923],{"className":131789,"code":132922,"language":131791,"meta":32,"style":32},"sudo apt update\nsudo apt upgrade\nsudo apt install mesa-utils\n\n#然后重启wsl2即可\n",[457,132924,132925,132933,132941,132952,132956],{"__ignoreMap":32},[460,132926,132927,132929,132931],{"class":462,"line":463},[460,132928,40989],{"class":929},[460,132930,131810],{"class":1353},[460,132932,42653],{"class":1353},[460,132934,132935,132937,132939],{"class":462,"line":476},[460,132936,40989],{"class":929},[460,132938,131810],{"class":1353},[460,132940,131826],{"class":1353},[460,132942,132943,132945,132947,132949],{"class":462,"line":482},[460,132944,40989],{"class":929},[460,132946,131810],{"class":1353},[460,132948,40247],{"class":1353},[460,132950,132951],{"class":1353}," mesa-utils\n",[460,132953,132954],{"class":462,"line":488},[460,132955,522],{"emptyLinePlaceholder":521},[460,132957,132958],{"class":462,"line":494},[460,132959,132960],{"class":942},"#然后重启wsl2即可\n",[1944,132962,132963],{},"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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":32,"searchDepth":476,"depth":476,"links":132965},[132966,132967,132972],{"id":132243,"depth":476,"text":132244},{"id":132256,"depth":476,"text":132257,"children":132968},[132969,132970,132971],{"id":132260,"depth":482,"text":132261},{"id":132307,"depth":482,"text":132308},{"id":132368,"depth":482,"text":132369},{"id":132404,"depth":476,"text":132405,"children":132973},[132974,132975,132976],{"id":132408,"depth":482,"text":132409},{"id":132470,"depth":482,"text":132471},{"id":132759,"depth":482,"text":132760},{},"\u002Fwiki\u002F2025-01-27-linux\u002Fch2-linux",{"title":132235,"description":16682},"wiki\u002F2025-01-27-Linux基本操作\u002Fch2-Linux装机教程","z8-bvEu-95_o87t1vYlvhP_0vkUfK8DDJy87xhuIF4E",{"id":132983,"title":132984,"body":132985,"description":16682,"extension":16683,"meta":135921,"navigation":521,"path":135922,"seo":135923,"stem":135924,"__hash__":135925},"wiki\u002Fwiki\u002F2025-01-27-Linux基本操作\u002Fch3-安装必备配置.md","3. 安装必备配置",{"type":7,"value":132986,"toc":135893},[132987,132990,132994,133000,133004,133010,133014,133202,133205,133210,133214,133218,133221,133224,133230,133235,133238,133241,133246,133279,133284,133288,133365,133368,133373,133377,133380,133419,133422,133431,133449,133454,133461,133578,133583,133586,133613,133618,133622,133631,133681,133688,133692,133695,133709,133716,133750,133755,133759,133782,133785,133790,133794,133797,133800,133803,133845,133849,133852,133855,133896,133900,133904,133907,133912,133917,133920,133943,133946,133954,133959,133962,133967,133972,133975,133980,133984,133989,134012,134017,134079,134087,134092,134097,134100,134105,134108,134113,134118,134136,134141,134147,134152,134166,134170,134173,134176,134179,134222,134225,134230,134331,134334,134339,134343,134347,134384,134388,134392,134396,134442,134446,134491,134495,134502,134510,134565,134568,134645,134648,134671,134675,134678,134683,134688,134696,134699,134704,134709,134714,134717,134722,134731,134734,134739,134742,134813,134818,134821,134826,134829,134834,134837,134842,134845,134850,134855,134858,134933,134936,134949,134954,134957,134971,134974,135003,135008,135037,135040,135045,135049,135054,135063,135066,135071,135074,135079,135082,135085,135090,135093,135098,135103,135106,135111,135114,135239,135244,135274,135277,135282,135287,135304,135307,135350,135353,135380,135385,135398,135541,135545,135550,135564,135567,135618,135621,135651,135654,135670,135675,135689,135692,135759,135764,135773,135778,135781,135793,135798,135805,135829,135832,135837,135840,135859,135864,135871,135883,135890],[10,132988,132984],{"id":132989},"_3-安装必备配置",[18,132991,132993],{"id":132992},"_31-软件包换源以debian系的发行版为例","3.1 软件包换源（以Debian系的发行版为例）",[451,132995,132998],{"className":132996,"code":132997,"language":8391},[21693],"  打开下方网站（注意，该Ubuntu仓库版本是X86、amd64的仓库，ARM的仓库并非该网站（99.9%的人的电脑是X86的，很多工控机是ARM的，但工控机也有X86的，请看[Vinci机器人队单片机教程](https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fdocx\u002FPRAodvrWvoXTrVxP1EDcMKM7nXb)中讲的了解一下，或者自行百度。）\n\n  下方这俩学校二选一。\n\n1.  清华大学开源软件镜像站：https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\n\n2.  中国科学技术大学镜像站：https:\u002F\u002Fmirrors.ustc.edu.cn\n\n  可以测速，选择出速度最快的源。\n\n```Bash\ncurl https:\u002F\u002Fmirrors.cernet.edu.cn\u002Foh-my-mirrorz.py | python3\n```\n\n  在北方（山东）测速如下：\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-036.png)\n\n  在南方（广东）测速如下：\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-037.png)\n\n  在南北都比较快的是`北京外国语大学BFSU`和`南方科技大学SUSTech`，不想测速可以无脑选，也可以测速选择最好的源。\n\n  \n",[457,132999,132997],{"__ignoreMap":32},[23,133001,133003],{"id":133002},"_311-ubuntu2204及debian10及以下版本","3.1.1 Ubuntu22.04(及Debian10)及以下版本",[451,133005,133008],{"className":133006,"code":133007,"language":8391},[21693],"  输入以下命令\n\n```Bash\nsudo apt update\nsudo apt install vim\nsudo vim \u002Fetc\u002Fapt\u002Fsources.list\n```\n\n  在以下界面，用键盘按ggdG（注意区分大小写）\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-038.png)\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-039.png)\n\n  选择好Ubuntu版本后，\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-040.png)\n\n  粘贴进去\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-041.png)\n\n  按一下ESC，然后英文冒号，输入 `:wq!`然后回车\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-042.png)\n\n  输入以下命令\n\n```Bash\nsudo apt update\n```\n\n  下方出现对应学校源网站则成功\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-043.png)\n\n  至此换源结束\n",[457,133009,133007],{"__ignoreMap":32},[23,133011,133013],{"id":133012},"_312-ubuntu2404及debian12及以上版本","3.1.2 Ubuntu24.04(及Debian12)及以上版本",[451,133015,133019],{"className":133016,"code":133017,"language":133018,"meta":32,"style":32},"language-Shell shiki shiki-themes github-light github-dark","sudo apt update\nsudo apt install vim\nsudo rm -rf \u002Fetc\u002Fapt\u002Fsources.list\nsudo rm -rf \u002Fetc\u002Fapt\u002Fsources.list.d\u002F**\n\nsudo vim \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fubuntu.sources\n```\n\n\n选择好Ubuntu版本后，复制下方的内容。\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-044.png)\n\n粘贴进去\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-045.png)\n\n按一下ESC，然后英文冒号，输入 `:wq!`然后回车\n\n![](\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-046.png)\n\n输入以下命令\n\n```Bash\nsudo apt update\n","Shell",[457,133020,133021,133029,133040,133052,133066,133070,133080,133085,133089,133093,133098,133102,133114,133118,133123,133127,133138,133142,133158,133162,133173,133177,133182,133186,133194],{"__ignoreMap":32},[460,133022,133023,133025,133027],{"class":462,"line":463},[460,133024,40989],{"class":929},[460,133026,131810],{"class":1353},[460,133028,42653],{"class":1353},[460,133030,133031,133033,133035,133037],{"class":462,"line":476},[460,133032,40989],{"class":929},[460,133034,131810],{"class":1353},[460,133036,40247],{"class":1353},[460,133038,133039],{"class":1353}," vim\n",[460,133041,133042,133044,133047,133049],{"class":462,"line":482},[460,133043,40989],{"class":929},[460,133045,133046],{"class":1353}," rm",[460,133048,41737],{"class":900},[460,133050,133051],{"class":1353}," \u002Fetc\u002Fapt\u002Fsources.list\n",[460,133053,133054,133056,133058,133060,133063],{"class":462,"line":488},[460,133055,40989],{"class":929},[460,133057,133046],{"class":1353},[460,133059,41737],{"class":900},[460,133061,133062],{"class":1353}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002F",[460,133064,133065],{"class":900},"**\n",[460,133067,133068],{"class":462,"line":494},[460,133069,522],{"emptyLinePlaceholder":521},[460,133071,133072,133074,133077],{"class":462,"line":500},[460,133073,40989],{"class":929},[460,133075,133076],{"class":1353}," vim",[460,133078,133079],{"class":1353}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fubuntu.sources\n",[460,133081,133082],{"class":462,"line":506},[460,133083,133084],{"class":1353},"```\n",[460,133086,133087],{"class":462,"line":512},[460,133088,522],{"emptyLinePlaceholder":521},[460,133090,133091],{"class":462,"line":518},[460,133092,522],{"emptyLinePlaceholder":521},[460,133094,133095],{"class":462,"line":525},[460,133096,133097],{"class":929},"选择好Ubuntu版本后，复制下方的内容。\n",[460,133099,133100],{"class":462,"line":531},[460,133101,522],{"emptyLinePlaceholder":521},[460,133103,133104,133106,133109,133112],{"class":462,"line":537},[460,133105,15458],{"class":887},[460,133107,133108],{"class":1353},"[](",[460,133110,133111],{"class":929},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-044.png",[460,133113,3754],{"class":1353},[460,133115,133116],{"class":462,"line":543},[460,133117,522],{"emptyLinePlaceholder":521},[460,133119,133120],{"class":462,"line":549},[460,133121,133122],{"class":929},"粘贴进去\n",[460,133124,133125],{"class":462,"line":555},[460,133126,522],{"emptyLinePlaceholder":521},[460,133128,133129,133131,133133,133136],{"class":462,"line":560},[460,133130,15458],{"class":887},[460,133132,133108],{"class":1353},[460,133134,133135],{"class":929},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-045.png",[460,133137,3754],{"class":1353},[460,133139,133140],{"class":462,"line":566},[460,133141,522],{"emptyLinePlaceholder":521},[460,133143,133144,133147,133150,133153,133155],{"class":462,"line":572},[460,133145,133146],{"class":929},"按一下ESC，然后英文冒号，输入",[460,133148,133149],{"class":1353}," `",[460,133151,133152],{"class":929},":wq!",[460,133154,17680],{"class":1353},[460,133156,133157],{"class":929},"然后回车\n",[460,133159,133160],{"class":462,"line":578},[460,133161,522],{"emptyLinePlaceholder":521},[460,133163,133164,133166,133168,133171],{"class":462,"line":812},[460,133165,15458],{"class":887},[460,133167,133108],{"class":1353},[460,133169,133170],{"class":929},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux基本操作-046.png",[460,133172,3754],{"class":1353},[460,133174,133175],{"class":462,"line":818},[460,133176,522],{"emptyLinePlaceholder":521},[460,133178,133179],{"class":462,"line":824},[460,133180,133181],{"class":929},"输入以下命令\n",[460,133183,133184],{"class":462,"line":2074},[460,133185,522],{"emptyLinePlaceholder":521},[460,133187,133188,133191],{"class":462,"line":2088},[460,133189,133190],{"class":1353},"```",[460,133192,133193],{"class":929},"Bash\n",[460,133195,133196,133198,133200],{"class":462,"line":2103},[460,133197,40989],{"class":929},[460,133199,131810],{"class":1353},[460,133201,42653],{"class":1353},[14,133203,133204],{},"这里被替换成对应学校则成功",[14,133206,133207],{},[30,133208],{"alt":32,"src":133209},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-047.png",[18,133211,133213],{"id":133212},"_32-卸载恶心的snapubuntu及其衍生版","3.2 卸载恶心的snap(Ubuntu及其衍生版)",[23,133215,133217],{"id":133216},"_321-安装非firefox浏览器","3.2.1 安装非firefox浏览器",[14,133219,133220],{},"卸载snap前，请先安装一个浏览器（以Google Chrome为例）(这里是因为Ubuntu默认安装的是snap版本的FireFox)",[14,133222,133223],{},"以下是Google上海服务器的Chrome官网（无需挂梯）",[14,133225,133226],{},[2756,133227,133228],{"href":133228,"rel":133229},"https:\u002F\u002Fwww.google.com\u002Fchrome\u002F",[4943],[14,133231,133232],{},[30,133233],{"alt":32,"src":133234},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-048.png",[14,133236,133237],{},"咱们这里是Ubuntu所以是Debian系的系统，所以选deb扩展名的程序包。（也就是红色框框）",[14,133239,133240],{},"红帽系则需要安装的是rpm扩展名程序包。（也就是蓝色框框）",[14,133242,133243],{},[30,133244],{"alt":32,"src":133245},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-049.png",[451,133247,133249],{"className":131789,"code":133248,"language":131791,"meta":32,"style":32},"#某些发行版中，可能Downloads是中文下载，所以就需要  cd ~\u002F下载\ncd ~\u002FDownloads\n#下方chrome安装包名不一定是这个，根据名字来看\nsudo apt install .\u002Fgoogle-chrome-stable_current_amd64.deb\n",[457,133250,133251,133256,133263,133268],{"__ignoreMap":32},[460,133252,133253],{"class":462,"line":463},[460,133254,133255],{"class":942},"#某些发行版中，可能Downloads是中文下载，所以就需要  cd ~\u002F下载\n",[460,133257,133258,133260],{"class":462,"line":476},[460,133259,115769],{"class":900},[460,133261,133262],{"class":1353}," ~\u002FDownloads\n",[460,133264,133265],{"class":462,"line":482},[460,133266,133267],{"class":942},"#下方chrome安装包名不一定是这个，根据名字来看\n",[460,133269,133270,133272,133274,133276],{"class":462,"line":488},[460,133271,40989],{"class":929},[460,133273,131810],{"class":1353},[460,133275,40247],{"class":1353},[460,133277,133278],{"class":1353}," .\u002Fgoogle-chrome-stable_current_amd64.deb\n",[14,133280,133281],{},[30,133282],{"alt":32,"src":133283},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-050.png",[23,133285,133287],{"id":133286},"_322-查看snap包应用数量","3.2.2 查看snap包应用数量",[451,133289,133291],{"className":131789,"code":133290,"language":131791,"meta":32,"style":32},"# 老版\nsudo apt update\nsudo apt install neofetch\nneofetch\n\n# 新版\nsudo add-apt-repository ppa:zhangsongcui3371\u002Ffastfetch\nsudo apt update\nsudo apt install fastfetch\nfastfetch\n",[457,133292,133293,133298,133306,133317,133322,133326,133331,133341,133349,133360],{"__ignoreMap":32},[460,133294,133295],{"class":462,"line":463},[460,133296,133297],{"class":942},"# 老版\n",[460,133299,133300,133302,133304],{"class":462,"line":476},[460,133301,40989],{"class":929},[460,133303,131810],{"class":1353},[460,133305,42653],{"class":1353},[460,133307,133308,133310,133312,133314],{"class":462,"line":482},[460,133309,40989],{"class":929},[460,133311,131810],{"class":1353},[460,133313,40247],{"class":1353},[460,133315,133316],{"class":1353}," neofetch\n",[460,133318,133319],{"class":462,"line":488},[460,133320,133321],{"class":929},"neofetch\n",[460,133323,133324],{"class":462,"line":494},[460,133325,522],{"emptyLinePlaceholder":521},[460,133327,133328],{"class":462,"line":500},[460,133329,133330],{"class":942},"# 新版\n",[460,133332,133333,133335,133338],{"class":462,"line":506},[460,133334,40989],{"class":929},[460,133336,133337],{"class":1353}," add-apt-repository",[460,133339,133340],{"class":1353}," ppa:zhangsongcui3371\u002Ffastfetch\n",[460,133342,133343,133345,133347],{"class":462,"line":512},[460,133344,40989],{"class":929},[460,133346,131810],{"class":1353},[460,133348,42653],{"class":1353},[460,133350,133351,133353,133355,133357],{"class":462,"line":518},[460,133352,40989],{"class":929},[460,133354,131810],{"class":1353},[460,133356,40247],{"class":1353},[460,133358,133359],{"class":1353}," fastfetch\n",[460,133361,133362],{"class":462,"line":525},[460,133363,133364],{"class":929},"fastfetch\n",[14,133366,133367],{},"这里显示，一共有3162个debian的程序，7个snap程序",[14,133369,133370],{},[30,133371],{"alt":32,"src":133372},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-051.png",[23,133374,133376],{"id":133375},"_323-移除snap应用","3.2.3 移除snap应用",[14,133378,133379],{},"系统在启动时，会自动启动Snap相关服务，我们先禁用掉这些服务",[451,133381,133383],{"className":131789,"code":133382,"language":131791,"meta":32,"style":32},"sudo systemctl disable snapd.service\nsudo systemctl disable snapd.socket\nsudo systemctl disable snapd.seeded.service\n",[457,133384,133385,133397,133408],{"__ignoreMap":32},[460,133386,133387,133389,133391,133394],{"class":462,"line":463},[460,133388,40989],{"class":929},[460,133390,42924],{"class":1353},[460,133392,133393],{"class":1353}," disable",[460,133395,133396],{"class":1353}," snapd.service\n",[460,133398,133399,133401,133403,133405],{"class":462,"line":476},[460,133400,40989],{"class":929},[460,133402,42924],{"class":1353},[460,133404,133393],{"class":1353},[460,133406,133407],{"class":1353}," snapd.socket\n",[460,133409,133410,133412,133414,133416],{"class":462,"line":482},[460,133411,40989],{"class":929},[460,133413,42924],{"class":1353},[460,133415,133393],{"class":1353},[460,133417,133418],{"class":1353}," snapd.seeded.service\n",[14,133420,133421],{},"然后查看snap应用列表",[14,133423,133424,133425,133430],{},"根据你安装的选择不同（最小安装或普通安装），有",[2756,133426,133429],{"href":133427,"rel":133428},"https:\u002F\u002Fso.csdn.net\u002Fso\u002Fsearch?q=%E4%B8%8D%E5%90%8C%E7%9A%84&spm=1001.2101.3001.7020",[4943],"不同的","Snap软件会被预装到系统，在删除Snap服务之前，我们需要移除Snap安装的这些",[451,133432,133434],{"className":131789,"code":133433,"language":131791,"meta":32,"style":32},"# 查询当前系统上snap安装了哪些app\nsnap list\n",[457,133435,133436,133441],{"__ignoreMap":32},[460,133437,133438],{"class":462,"line":463},[460,133439,133440],{"class":942},"# 查询当前系统上snap安装了哪些app\n",[460,133442,133443,133446],{"class":462,"line":476},[460,133444,133445],{"class":929},"snap",[460,133447,133448],{"class":1353}," list\n",[14,133450,133451],{},[30,133452],{"alt":32,"src":133453},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-052.png",[14,133455,133456,133457,133460],{},"卸载掉图中所有应用，按照 ",[3944,133458,133459],{},"先删除应用软件，再删除非应用软件"," 的顺序进行删除",[451,133462,133464],{"className":131789,"code":133463,"language":131791,"meta":32,"style":32},"#移除snap-store，如果是Kubuntu，则没有这个东西，测不需要卸载\nsudo snap remove snap-store\n#移除firefox浏览器\nsudo snap remove firefox\n#移除gnome-42-2204\nsudo snap remove gnome-42-2204\n#移除gtk-common-themes\nsudo snap remove gtk-common-themes\n#移除其它...\n \n#移除core22,bare以及snapd\nsudo snap remove core22\nsudo snap remove bare\nsudo snap remove snapd\n",[457,133465,133466,133471,133483,133488,133499,133504,133515,133520,133531,133536,133540,133545,133556,133567],{"__ignoreMap":32},[460,133467,133468],{"class":462,"line":463},[460,133469,133470],{"class":942},"#移除snap-store，如果是Kubuntu，则没有这个东西，测不需要卸载\n",[460,133472,133473,133475,133478,133480],{"class":462,"line":476},[460,133474,40989],{"class":929},[460,133476,133477],{"class":1353}," snap",[460,133479,42490],{"class":1353},[460,133481,133482],{"class":1353}," snap-store\n",[460,133484,133485],{"class":462,"line":482},[460,133486,133487],{"class":942},"#移除firefox浏览器\n",[460,133489,133490,133492,133494,133496],{"class":462,"line":488},[460,133491,40989],{"class":929},[460,133493,133477],{"class":1353},[460,133495,42490],{"class":1353},[460,133497,133498],{"class":1353}," firefox\n",[460,133500,133501],{"class":462,"line":494},[460,133502,133503],{"class":942},"#移除gnome-42-2204\n",[460,133505,133506,133508,133510,133512],{"class":462,"line":500},[460,133507,40989],{"class":929},[460,133509,133477],{"class":1353},[460,133511,42490],{"class":1353},[460,133513,133514],{"class":1353}," gnome-42-2204\n",[460,133516,133517],{"class":462,"line":506},[460,133518,133519],{"class":942},"#移除gtk-common-themes\n",[460,133521,133522,133524,133526,133528],{"class":462,"line":512},[460,133523,40989],{"class":929},[460,133525,133477],{"class":1353},[460,133527,42490],{"class":1353},[460,133529,133530],{"class":1353}," gtk-common-themes\n",[460,133532,133533],{"class":462,"line":518},[460,133534,133535],{"class":942},"#移除其它...\n",[460,133537,133538],{"class":462,"line":525},[460,133539,19198],{"class":466},[460,133541,133542],{"class":462,"line":531},[460,133543,133544],{"class":942},"#移除core22,bare以及snapd\n",[460,133546,133547,133549,133551,133553],{"class":462,"line":537},[460,133548,40989],{"class":929},[460,133550,133477],{"class":1353},[460,133552,42490],{"class":1353},[460,133554,133555],{"class":1353}," core22\n",[460,133557,133558,133560,133562,133564],{"class":462,"line":543},[460,133559,40989],{"class":929},[460,133561,133477],{"class":1353},[460,133563,42490],{"class":1353},[460,133565,133566],{"class":1353}," bare\n",[460,133568,133569,133571,133573,133575],{"class":462,"line":549},[460,133570,40989],{"class":929},[460,133572,133477],{"class":1353},[460,133574,42490],{"class":1353},[460,133576,133577],{"class":1353}," snapd\n",[14,133579,133580],{},[30,133581],{"alt":32,"src":133582},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-053.png",[14,133584,133585],{},"输入以下命令查看是否还有snap包",[451,133587,133589],{"className":131789,"code":133588,"language":131791,"meta":32,"style":32},"snap list\n# 老版\nneofetch\n# 新版\nfastfetch\n",[457,133590,133591,133597,133601,133605,133609],{"__ignoreMap":32},[460,133592,133593,133595],{"class":462,"line":463},[460,133594,133445],{"class":929},[460,133596,133448],{"class":1353},[460,133598,133599],{"class":462,"line":476},[460,133600,133297],{"class":942},[460,133602,133603],{"class":462,"line":482},[460,133604,133321],{"class":929},[460,133606,133607],{"class":462,"line":488},[460,133608,133330],{"class":942},[460,133610,133611],{"class":462,"line":494},[460,133612,133364],{"class":929},[14,133614,133615],{},[30,133616],{"alt":32,"src":133617},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-054.png",[23,133619,133621],{"id":133620},"_324-移除snap","3.2.4 移除snap",[14,133623,133624,133625,133630],{},"在删除掉",[2756,133626,133629],{"href":133627,"rel":133628},"https:\u002F\u002Fso.csdn.net\u002Fso\u002Fsearch?q=Snap%E5%AE%89%E8%A3%85&spm=1001.2101.3001.7020",[4943],"Snap安装","的软件后，下一步就是把Snap本身也删除掉，这里需要使用Apt来实现",[451,133632,133634],{"className":131789,"code":133633,"language":131791,"meta":32,"style":32}," #使用apt移除掉snap\nsudo apt autoremove --purge snapd\n#移除snapd的一些目录\nsudo rm -rf \u002Fvar\u002Fcache\u002Fsnapd\nsudo rm -rf ~\u002Fsnap\n",[457,133635,133636,133641,133654,133659,133670],{"__ignoreMap":32},[460,133637,133638],{"class":462,"line":463},[460,133639,133640],{"class":942}," #使用apt移除掉snap\n",[460,133642,133643,133645,133647,133649,133652],{"class":462,"line":476},[460,133644,40989],{"class":929},[460,133646,131810],{"class":1353},[460,133648,132118],{"class":1353},[460,133650,133651],{"class":900}," --purge",[460,133653,133577],{"class":1353},[460,133655,133656],{"class":462,"line":482},[460,133657,133658],{"class":942},"#移除snapd的一些目录\n",[460,133660,133661,133663,133665,133667],{"class":462,"line":488},[460,133662,40989],{"class":929},[460,133664,133046],{"class":1353},[460,133666,41737],{"class":900},[460,133668,133669],{"class":1353}," \u002Fvar\u002Fcache\u002Fsnapd\n",[460,133671,133672,133674,133676,133678],{"class":462,"line":494},[460,133673,40989],{"class":929},[460,133675,133046],{"class":1353},[460,133677,41737],{"class":900},[460,133679,133680],{"class":1353}," ~\u002Fsnap\n",[14,133682,133683,133684,133687],{},"至此，其实snap已经被删除掉了。但是这个并不足够，如果你使用apt安装一些软件 ",[457,133685,133686],{},"sudo apt install firefox","时，会自动下载并重新安装snap服务。因为Ubuntu源中的一些软件已经是snap版本，而非deb版本，下载snap版本时，会自动检查并在必要时重新安装snap服务。这也是Canonical为了推广自己的Snap Store而做的一些额外的努力吧。(这一点最被很多人不喜欢)",[23,133689,133691],{"id":133690},"_325-禁止系统自动安装snap","3.2.5 禁止系统自动安装snap",[14,133693,133694],{},"我们可以利用APT可配置禁用安装哪些依赖的特性，来实现禁止重新自动安装Snap服务",[451,133696,133698],{"className":131789,"code":133697,"language":131791,"meta":32,"style":32},"sudo vim \u002Fetc\u002Fapt\u002Fpreferences.d\u002Fnosnap.pref\n",[457,133699,133700],{"__ignoreMap":32},[460,133701,133702,133704,133706],{"class":462,"line":463},[460,133703,40989],{"class":929},[460,133705,133076],{"class":1353},[460,133707,133708],{"class":1353}," \u002Fetc\u002Fapt\u002Fpreferences.d\u002Fnosnap.pref\n",[14,133710,133711,133712,133715],{},"按insert进入编辑模式，然后复制以下内容，最后按ESC，切换为英文输入法模式，然后敲 ",[457,133713,133714],{},":wq"," 回车",[451,133717,133719],{"className":131789,"code":133718,"language":131791,"meta":32,"style":32},"Package: snapd\nPin: release a=*\nPin-Priority: -10\n",[457,133720,133721,133728,133742],{"__ignoreMap":32},[460,133722,133723,133726],{"class":462,"line":463},[460,133724,133725],{"class":929},"Package:",[460,133727,133577],{"class":1353},[460,133729,133730,133733,133736,133739],{"class":462,"line":476},[460,133731,133732],{"class":929},"Pin:",[460,133734,133735],{"class":1353}," release",[460,133737,133738],{"class":1353}," a=",[460,133740,133741],{"class":900},"*\n",[460,133743,133744,133747],{"class":462,"line":482},[460,133745,133746],{"class":929},"Pin-Priority:",[460,133748,133749],{"class":900}," -10\n",[14,133751,133752],{},[30,133753],{"alt":32,"src":133754},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-055.png",[23,133756,133758],{"id":133757},"_326-测试是否成功","3.2.6 测试是否成功",[451,133760,133762],{"className":131789,"code":133761,"language":131791,"meta":32,"style":32},"sudo apt update\nsudo apt install firefox\n",[457,133763,133764,133772],{"__ignoreMap":32},[460,133765,133766,133768,133770],{"class":462,"line":463},[460,133767,40989],{"class":929},[460,133769,131810],{"class":1353},[460,133771,42653],{"class":1353},[460,133773,133774,133776,133778,133780],{"class":462,"line":476},[460,133775,40989],{"class":929},[460,133777,131810],{"class":1353},[460,133779,40247],{"class":1353},[460,133781,133498],{"class":1353},[14,133783,133784],{},"这里提示snapd无法被安装，就证明成功了",[14,133786,133787],{},[30,133788],{"alt":32,"src":133789},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-056.png",[23,133791,133793],{"id":133792},"_327-重新安装firefox浏览器没大有必要","3.2.7 重新安装FireFox浏览器（没大有必要）",[14,133795,133796],{},"我个人其实更偏好Google Chrome浏览器，浏览器是从Chrome官网下载deb进行安装的。所以我有浏览器了，就没必要安装火狐浏览器了，",[14,133798,133799],{},"但如果你确实喜欢Firefox，在删除掉Snap后，其实没法再通过Snap或Apt来安装Firefox了，而Firefox官网提供的下载，又没有deb包，没有桌面快捷方式，不是非常方便。",[14,133801,133802],{},"所以，你可以考虑使用Mozilla提供的源来安装debian版本的Firefox",[451,133804,133806],{"className":131789,"code":133805,"language":131791,"meta":32,"style":32},"# 添加Mozilla提供的源\nsudo add-apt-repository ppa:mozillateam\u002Fppa\n# 安装Firefox\nsudo apt update\nsudo apt install firefox\n",[457,133807,133808,133813,133822,133827,133835],{"__ignoreMap":32},[460,133809,133810],{"class":462,"line":463},[460,133811,133812],{"class":942},"# 添加Mozilla提供的源\n",[460,133814,133815,133817,133819],{"class":462,"line":476},[460,133816,40989],{"class":929},[460,133818,133337],{"class":1353},[460,133820,133821],{"class":1353}," ppa:mozillateam\u002Fppa\n",[460,133823,133824],{"class":462,"line":482},[460,133825,133826],{"class":942},"# 安装Firefox\n",[460,133828,133829,133831,133833],{"class":462,"line":488},[460,133830,40989],{"class":929},[460,133832,131810],{"class":1353},[460,133834,42653],{"class":1353},[460,133836,133837,133839,133841,133843],{"class":462,"line":494},[460,133838,40989],{"class":929},[460,133840,131810],{"class":1353},[460,133842,40247],{"class":1353},[460,133844,133498],{"class":1353},[23,133846,133848],{"id":133847},"_328-跨ubuntu大版本更新","3.2.8 跨Ubuntu大版本更新",[14,133850,133851],{},"跨Ubuntu大版本更新，是指从Ubuntu22.04LTS更新到Ubuntu24.04LTS这种大版本更新。",[14,133853,133854],{},"跨Ubuntu大版本更新时，建议恢复snap，等更新完毕后再删掉snap，以防止Canonical公司从中作妖。",[451,133856,133858],{"className":131789,"code":133857,"language":131791,"meta":32,"style":32},"#删掉禁止安装snap的配置文件\nsudo rm -rf \u002Fetc\u002Fapt\u002Fpreferences.d\u002Fnosnap.pref\nsudo apt update\n\nsudo apt dist-update\n",[457,133859,133860,133865,133875,133883,133887],{"__ignoreMap":32},[460,133861,133862],{"class":462,"line":463},[460,133863,133864],{"class":942},"#删掉禁止安装snap的配置文件\n",[460,133866,133867,133869,133871,133873],{"class":462,"line":476},[460,133868,40989],{"class":929},[460,133870,133046],{"class":1353},[460,133872,41737],{"class":900},[460,133874,133708],{"class":1353},[460,133876,133877,133879,133881],{"class":462,"line":482},[460,133878,40989],{"class":929},[460,133880,131810],{"class":1353},[460,133882,42653],{"class":1353},[460,133884,133885],{"class":462,"line":488},[460,133886,522],{"emptyLinePlaceholder":521},[460,133888,133889,133891,133893],{"class":462,"line":494},[460,133890,40989],{"class":929},[460,133892,131810],{"class":1353},[460,133894,133895],{"class":1353}," dist-update\n",[18,133897,133899],{"id":133898},"_33-中文输入法","3.3 中文输入法",[23,133901,133903],{"id":133902},"_331-搜狗ubuntu2204及以下","3.3.1 搜狗(Ubuntu22.04及以下)",[14,133905,133906],{},"官网下载搜狗输入法",[14,133908,133909],{},[30,133910],{"alt":32,"src":133911},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-057.png",[14,133913,133914],{},[30,133915],{"alt":32,"src":133916},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-058.png",[14,133918,133919],{},"打开终端输入如下",[451,133921,133923],{"className":131789,"code":133922,"language":131791,"meta":32,"style":32},"cd ~\u002FDownloads\u002F\nsudo apt install .\u002Fsogoupinyin_4.2.1.145_amd64.deb\n",[457,133924,133925,133932],{"__ignoreMap":32},[460,133926,133927,133929],{"class":462,"line":463},[460,133928,115769],{"class":900},[460,133930,133931],{"class":1353}," ~\u002FDownloads\u002F\n",[460,133933,133934,133936,133938,133940],{"class":462,"line":476},[460,133935,40989],{"class":929},[460,133937,131810],{"class":1353},[460,133939,40247],{"class":1353},[460,133941,133942],{"class":1353}," .\u002Fsogoupinyin_4.2.1.145_amd64.deb\n",[14,133944,133945],{},"打开Fcitx",[14,133947,133948,133951],{},[30,133949],{"alt":32,"src":133950},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-059.png",[30,133952],{"alt":32,"src":133953},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-060.png",[14,133955,133956],{},[30,133957],{"alt":32,"src":133958},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-061.png",[14,133960,133961],{},"添加搜狗输入法",[14,133963,133964],{},[30,133965],{"alt":32,"src":133966},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-062.png",[14,133968,133969],{},[30,133970],{"alt":32,"src":133971},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-063.png",[14,133973,133974],{},"将搜狗输入法设置为唯一输入法",[14,133976,133977],{},[30,133978],{"alt":32,"src":133979},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-064.png",[23,133981,133983],{"id":133982},"_332-fcitx5ubuntu2204及以上debian12及以上","3.3.2 Fcitx5(Ubuntu22.04及以上、Debian12及以上)",[103,133985,133986],{},[43,133987,133988],{},"卸载旧输入法",[451,133990,133992],{"className":133016,"code":133991,"language":133018,"meta":32,"style":32},"sudo apt purge fcitx* ibus*\n",[457,133993,133994],{"__ignoreMap":32},[460,133995,133996,133998,134000,134002,134005,134007,134010],{"class":462,"line":463},[460,133997,40989],{"class":929},[460,133999,131810],{"class":1353},[460,134001,132151],{"class":1353},[460,134003,134004],{"class":1353}," fcitx",[460,134006,8320],{"class":900},[460,134008,134009],{"class":1353}," ibus",[460,134011,133741],{"class":900},[103,134013,134014],{"start":476},[43,134015,134016],{},"安装Fcitx5",[451,134018,134020],{"className":131789,"code":134019,"language":131791,"meta":32,"style":32},"# Ubuntu22.04及以上、Debian12及以上\nsudo apt install fcitx5 fcitx5-chinese-addons\n\n# Ubuntu20.04\nsudo add-apt-repository ppa:zhsj\u002Ffcitx5\nsudo apt update\nsudo apt install fcitx5 fcitx5-chinese-addons\n",[457,134021,134022,134027,134041,134045,134050,134059,134067],{"__ignoreMap":32},[460,134023,134024],{"class":462,"line":463},[460,134025,134026],{"class":942},"# Ubuntu22.04及以上、Debian12及以上\n",[460,134028,134029,134031,134033,134035,134038],{"class":462,"line":476},[460,134030,40989],{"class":929},[460,134032,131810],{"class":1353},[460,134034,40247],{"class":1353},[460,134036,134037],{"class":1353}," fcitx5",[460,134039,134040],{"class":1353}," fcitx5-chinese-addons\n",[460,134042,134043],{"class":462,"line":482},[460,134044,522],{"emptyLinePlaceholder":521},[460,134046,134047],{"class":462,"line":488},[460,134048,134049],{"class":942},"# Ubuntu20.04\n",[460,134051,134052,134054,134056],{"class":462,"line":494},[460,134053,40989],{"class":929},[460,134055,133337],{"class":1353},[460,134057,134058],{"class":1353}," ppa:zhsj\u002Ffcitx5\n",[460,134060,134061,134063,134065],{"class":462,"line":500},[460,134062,40989],{"class":929},[460,134064,131810],{"class":1353},[460,134066,42653],{"class":1353},[460,134068,134069,134071,134073,134075,134077],{"class":462,"line":506},[460,134070,40989],{"class":929},[460,134072,131810],{"class":1353},[460,134074,40247],{"class":1353},[460,134076,134037],{"class":1353},[460,134078,134040],{"class":1353},[103,134080,134081,134084],{"start":482},[43,134082,134083],{},"Reboot System",[43,134085,134086],{},"启动Fcitx5",[14,134088,134089],{},[30,134090],{"alt":32,"src":134091},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-065.png",[103,134093,134094],{"start":494},[43,134095,134096],{},"修改一些设置",[14,134098,134099],{},"将Pinyin和Keyboard - English US加入到左边。",[14,134101,134102],{},[30,134103],{"alt":32,"src":134104},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-066.png",[14,134106,134107],{},"添加快捷键以便于更好切换中英文",[14,134109,134110],{},[30,134111],{"alt":32,"src":134112},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-067.png",[103,134114,134115],{"start":500},[43,134116,134117],{},"重启",[451,134119,134121],{"className":133016,"code":134120,"language":133018,"meta":32,"style":32},"sudo shutdown -r now\n",[457,134122,134123],{"__ignoreMap":32},[460,134124,134125,134127,134130,134133],{"class":462,"line":463},[460,134126,40989],{"class":929},[460,134128,134129],{"class":1353}," shutdown",[460,134131,134132],{"class":900}," -r",[460,134134,134135],{"class":1353}," now\n",[103,134137,134138],{"start":506},[43,134139,134140],{},"使用Fcitx5工具箱优化Fcitx5(进入Github自己看说明书安装)",[14,134142,134143],{},[2756,134144,134145],{"href":134145,"rel":134146},"https:\u002F\u002Fgithub.com\u002Ffcitx\u002Ffcitx5",[4943],[103,134148,134149],{"start":512},[43,134150,134151],{},"再重启",[451,134153,134154],{"className":133016,"code":134120,"language":133018,"meta":32,"style":32},[457,134155,134156],{"__ignoreMap":32},[460,134157,134158,134160,134162,134164],{"class":462,"line":463},[460,134159,40989],{"class":929},[460,134161,134129],{"class":1353},[460,134163,134132],{"class":900},[460,134165,134135],{"class":1353},[18,134167,134169],{"id":134168},"_34-pip3源替换","3.4 pip3源替换",[14,134171,134172],{},"非Debian系发行版需要做。",[14,134174,134175],{},"像Ubuntu、Debian这类使用apt工具的发行版不需要此操作。",[14,134177,134178],{},"使用dnf的系统也可能不用做。",[451,134180,134182],{"className":131789,"code":134181,"language":131791,"meta":32,"style":32},"# 检查是否已安装 pip\npip3 --version\n# 如果未安装，先安装 pip3（见下方）\n# 配置 pip 使用清华源\npip3 config set global.index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n",[457,134183,134184,134189,134196,134201,134206],{"__ignoreMap":32},[460,134185,134186],{"class":462,"line":463},[460,134187,134188],{"class":942},"# 检查是否已安装 pip\n",[460,134190,134191,134194],{"class":462,"line":476},[460,134192,134193],{"class":929},"pip3",[460,134195,42704],{"class":900},[460,134197,134198],{"class":462,"line":482},[460,134199,134200],{"class":942},"# 如果未安装，先安装 pip3（见下方）\n",[460,134202,134203],{"class":462,"line":488},[460,134204,134205],{"class":942},"# 配置 pip 使用清华源\n",[460,134207,134208,134210,134213,134216,134219],{"class":462,"line":494},[460,134209,134193],{"class":929},[460,134211,134212],{"class":1353}," config",[460,134214,134215],{"class":1353}," set",[460,134217,134218],{"class":1353}," global.index-url",[460,134220,134221],{"class":1353}," https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n",[14,134223,134224],{},"按图中顺序敲，但是不出意外的话，会报错，因为大部分发行版不自带pip，所以请接着往下看。",[14,134226,134227],{},[30,134228],{"alt":32,"src":134229},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-068.png",[451,134231,134233],{"className":131789,"code":134232,"language":131791,"meta":32,"style":32},"#安装pip3\nsudo apt update\nsudo apt-get install python3-pip\n\n#更新pip3\npython3 -m pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple --upgrade pip\n\n#设置pip源为清华源\npip3 config set global.index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n\n#测试\npython3 -m pip install --upgrade pip\n",[457,134234,134235,134240,134248,134259,134263,134268,134287,134291,134296,134308,134312,134317],{"__ignoreMap":32},[460,134236,134237],{"class":462,"line":463},[460,134238,134239],{"class":942},"#安装pip3\n",[460,134241,134242,134244,134246],{"class":462,"line":476},[460,134243,40989],{"class":929},[460,134245,131810],{"class":1353},[460,134247,42653],{"class":1353},[460,134249,134250,134252,134254,134256],{"class":462,"line":482},[460,134251,40989],{"class":929},[460,134253,42487],{"class":1353},[460,134255,40247],{"class":1353},[460,134257,134258],{"class":1353}," python3-pip\n",[460,134260,134261],{"class":462,"line":488},[460,134262,522],{"emptyLinePlaceholder":521},[460,134264,134265],{"class":462,"line":494},[460,134266,134267],{"class":942},"#更新pip3\n",[460,134269,134270,134272,134274,134276,134278,134280,134283,134285],{"class":462,"line":500},[460,134271,115372],{"class":929},[460,134273,115375],{"class":900},[460,134275,115398],{"class":1353},[460,134277,40247],{"class":1353},[460,134279,42841],{"class":900},[460,134281,134282],{"class":1353}," https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple",[460,134284,115403],{"class":900},[460,134286,115406],{"class":1353},[460,134288,134289],{"class":462,"line":506},[460,134290,522],{"emptyLinePlaceholder":521},[460,134292,134293],{"class":462,"line":512},[460,134294,134295],{"class":942},"#设置pip源为清华源\n",[460,134297,134298,134300,134302,134304,134306],{"class":462,"line":518},[460,134299,134193],{"class":929},[460,134301,134212],{"class":1353},[460,134303,134215],{"class":1353},[460,134305,134218],{"class":1353},[460,134307,134221],{"class":1353},[460,134309,134310],{"class":462,"line":525},[460,134311,522],{"emptyLinePlaceholder":521},[460,134313,134314],{"class":462,"line":531},[460,134315,134316],{"class":942},"#测试\n",[460,134318,134319,134321,134323,134325,134327,134329],{"class":462,"line":537},[460,134320,115372],{"class":929},[460,134322,115375],{"class":900},[460,134324,115398],{"class":1353},[460,134326,40247],{"class":1353},[460,134328,115403],{"class":900},[460,134330,115406],{"class":1353},[14,134332,134333],{},"成功的话，会看到Looking后面是tsinghua字样。",[14,134335,134336],{},[30,134337],{"alt":32,"src":134338},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-069.png",[18,134340,134342],{"id":134341},"_35-显卡驱动安装","3.5 显卡驱动安装",[23,134344,134346],{"id":134345},"_351-卸载显卡驱动卸载干净","3.5.1 卸载显卡驱动(卸载干净)",[451,134348,134350],{"className":133016,"code":134349,"language":133018,"meta":32,"style":32},"# 如果是使用apt安装的驱动\nsudo apt-get remove --purge nvidia*\n# 如果使用了.run文件进行安装的，再使用下面命令卸载干净\nsudo \u002Fusr\u002Fbin\u002Fnvidia-uninstall\n",[457,134351,134352,134357,134372,134377],{"__ignoreMap":32},[460,134353,134354],{"class":462,"line":463},[460,134355,134356],{"class":942},"# 如果是使用apt安装的驱动\n",[460,134358,134359,134361,134363,134365,134367,134370],{"class":462,"line":476},[460,134360,40989],{"class":929},[460,134362,42487],{"class":1353},[460,134364,42490],{"class":1353},[460,134366,133651],{"class":900},[460,134368,134369],{"class":1353}," nvidia",[460,134371,133741],{"class":900},[460,134373,134374],{"class":462,"line":482},[460,134375,134376],{"class":942},"# 如果使用了.run文件进行安装的，再使用下面命令卸载干净\n",[460,134378,134379,134381],{"class":462,"line":488},[460,134380,40989],{"class":929},[460,134382,134383],{"class":1353}," \u002Fusr\u002Fbin\u002Fnvidia-uninstall\n",[23,134385,134387],{"id":134386},"_352-安装显卡驱动","3.5.2 安装显卡驱动",[115,134389,134391],{"id":134390},"_3521-apt安装英伟达驱动方式一","3.5.2.1 APT安装英伟达驱动（方式一）",[4287,134393,134395],{"id":134394},"_35211-ubuntu","3.5.2.1.1 Ubuntu",[451,134397,134399],{"className":133016,"code":134398,"language":133018,"meta":32,"style":32},"# 安装英伟达驱动\nsudo apt install nvidia-driver-版本号\n# 重启 \nsudo shutdown -r now\n# 检查驱动是否安装成功\nnvidia-smi\n",[457,134400,134401,134406,134417,134422,134432,134437],{"__ignoreMap":32},[460,134402,134403],{"class":462,"line":463},[460,134404,134405],{"class":942},"# 安装英伟达驱动\n",[460,134407,134408,134410,134412,134414],{"class":462,"line":476},[460,134409,40989],{"class":929},[460,134411,131810],{"class":1353},[460,134413,40247],{"class":1353},[460,134415,134416],{"class":1353}," nvidia-driver-版本号\n",[460,134418,134419],{"class":462,"line":482},[460,134420,134421],{"class":942},"# 重启 \n",[460,134423,134424,134426,134428,134430],{"class":462,"line":488},[460,134425,40989],{"class":929},[460,134427,134129],{"class":1353},[460,134429,134132],{"class":900},[460,134431,134135],{"class":1353},[460,134433,134434],{"class":462,"line":494},[460,134435,134436],{"class":942},"# 检查驱动是否安装成功\n",[460,134438,134439],{"class":462,"line":500},[460,134440,134441],{"class":929},"nvidia-smi\n",[4287,134443,134445],{"id":134444},"_35212-debian","3.5.2.1.2 Debian",[451,134447,134449],{"className":133016,"code":134448,"language":133018,"meta":32,"style":32},"# 安装英伟达驱动\nsudo apt install nvidia-driver nvidia-settings\n# 重启 \nsudo shutdown -r now\n# 检查驱动是否安装成功\nnvidia-smi\n",[457,134450,134451,134455,134469,134473,134483,134487],{"__ignoreMap":32},[460,134452,134453],{"class":462,"line":463},[460,134454,134405],{"class":942},[460,134456,134457,134459,134461,134463,134466],{"class":462,"line":476},[460,134458,40989],{"class":929},[460,134460,131810],{"class":1353},[460,134462,40247],{"class":1353},[460,134464,134465],{"class":1353}," nvidia-driver",[460,134467,134468],{"class":1353}," nvidia-settings\n",[460,134470,134471],{"class":462,"line":482},[460,134472,134421],{"class":942},[460,134474,134475,134477,134479,134481],{"class":462,"line":488},[460,134476,40989],{"class":929},[460,134478,134129],{"class":1353},[460,134480,134132],{"class":900},[460,134482,134135],{"class":1353},[460,134484,134485],{"class":462,"line":494},[460,134486,134436],{"class":942},[460,134488,134489],{"class":462,"line":500},[460,134490,134441],{"class":929},[115,134492,134494],{"id":134493},"_3522-官网下载驱动方式二","3.5.2.2 官网下载驱动（方式二）",[14,134496,134497,134498,134501],{},"使用这种方式安装，需要先禁用掉nouveau，请先往下翻，找到",[3944,134499,134500],{},"常见问题","那节内容里的禁用nouveau，将nouveau禁用。",[14,134503,134504,134505],{},"用以下命令停止可视化桌面环境（用ctrl alt f*也可以）",[39966,134506,134507],{},[3944,134508,134509],{},"（也可以不禁用桌面环境，直接进行下一步。）",[451,134511,134513],{"className":133016,"code":134512,"language":133018,"meta":32,"style":32},"# 通用的命令（sudo telinit 5是打开图形界面）\nsudo telinit 3\n# ubuntu 使用下方命令\nsudo service lightdm stop\n# Fedora 使用下方命令\nsudo systemctl isolate multi-user.target\n",[457,134514,134515,134520,134530,134535,134548,134553],{"__ignoreMap":32},[460,134516,134517],{"class":462,"line":463},[460,134518,134519],{"class":942},"# 通用的命令（sudo telinit 5是打开图形界面）\n",[460,134521,134522,134524,134527],{"class":462,"line":476},[460,134523,40989],{"class":929},[460,134525,134526],{"class":1353}," telinit",[460,134528,134529],{"class":900}," 3\n",[460,134531,134532],{"class":462,"line":482},[460,134533,134534],{"class":942},"# ubuntu 使用下方命令\n",[460,134536,134537,134539,134542,134545],{"class":462,"line":488},[460,134538,40989],{"class":929},[460,134540,134541],{"class":1353}," service",[460,134543,134544],{"class":1353}," lightdm",[460,134546,134547],{"class":1353}," stop\n",[460,134549,134550],{"class":462,"line":494},[460,134551,134552],{"class":942},"# Fedora 使用下方命令\n",[460,134554,134555,134557,134559,134562],{"class":462,"line":500},[460,134556,40989],{"class":929},[460,134558,42924],{"class":1353},[460,134560,134561],{"class":1353}," isolate",[460,134563,134564],{"class":1353}," multi-user.target\n",[14,134566,134567],{},"之后会进入一个新的命令行会话，使用当前的用户名密码登录。(不用使用root用户)",[451,134569,134571],{"className":133016,"code":134570,"language":133018,"meta":32,"style":32},"# 编译环境+准备工作\nsudo apt install build-essential\n# 进入到.run目录中\ncd \u002Fhome\u002Ftungchiahui\u002FDownloads\u002F\n# 给驱动文件增加可执行权限：\nsudo chmod a+x NVIDIA-Linux-x86_64-550.107.02.run\n# 然后执行安装：\nsudo .\u002FNVIDIA-Linux-x86_64-550.107.02.run\n# 如果有异常则：(一般不用下方这条，会导致OPENGL没法被安装，这样ROS有些功能无法使用)\nsudo .\u002FNVIDIA-Linux-x86_64-550.107.02.run  --no-opengl-files\n",[457,134572,134573,134578,134589,134594,134601,134606,134618,134623,134630,134635],{"__ignoreMap":32},[460,134574,134575],{"class":462,"line":463},[460,134576,134577],{"class":942},"# 编译环境+准备工作\n",[460,134579,134580,134582,134584,134586],{"class":462,"line":476},[460,134581,40989],{"class":929},[460,134583,131810],{"class":1353},[460,134585,40247],{"class":1353},[460,134587,134588],{"class":1353}," build-essential\n",[460,134590,134591],{"class":462,"line":482},[460,134592,134593],{"class":942},"# 进入到.run目录中\n",[460,134595,134596,134598],{"class":462,"line":488},[460,134597,115769],{"class":900},[460,134599,134600],{"class":1353}," \u002Fhome\u002Ftungchiahui\u002FDownloads\u002F\n",[460,134602,134603],{"class":462,"line":494},[460,134604,134605],{"class":942},"# 给驱动文件增加可执行权限：\n",[460,134607,134608,134610,134612,134615],{"class":462,"line":500},[460,134609,40989],{"class":929},[460,134611,40992],{"class":1353},[460,134613,134614],{"class":1353}," a+x",[460,134616,134617],{"class":1353}," NVIDIA-Linux-x86_64-550.107.02.run\n",[460,134619,134620],{"class":462,"line":506},[460,134621,134622],{"class":942},"# 然后执行安装：\n",[460,134624,134625,134627],{"class":462,"line":512},[460,134626,40989],{"class":929},[460,134628,134629],{"class":1353}," .\u002FNVIDIA-Linux-x86_64-550.107.02.run\n",[460,134631,134632],{"class":462,"line":518},[460,134633,134634],{"class":942},"# 如果有异常则：(一般不用下方这条，会导致OPENGL没法被安装，这样ROS有些功能无法使用)\n",[460,134636,134637,134639,134642],{"class":462,"line":525},[460,134638,40989],{"class":929},[460,134640,134641],{"class":1353}," .\u002FNVIDIA-Linux-x86_64-550.107.02.run",[460,134643,134644],{"class":900},"  --no-opengl-files\n",[14,134646,134647],{},"安装完毕重启即可",[451,134649,134651],{"className":133016,"code":134650,"language":133018,"meta":32,"style":32},"# 重启 \nsudo reboot\n# 检查驱动是否安装成功\nnvidia-smi\n",[457,134652,134653,134657,134663,134667],{"__ignoreMap":32},[460,134654,134655],{"class":462,"line":463},[460,134656,134421],{"class":942},[460,134658,134659,134661],{"class":462,"line":476},[460,134660,40989],{"class":929},[460,134662,43058],{"class":1353},[460,134664,134665],{"class":462,"line":482},[460,134666,134436],{"class":942},[460,134668,134669],{"class":462,"line":488},[460,134670,134441],{"class":929},[23,134672,134674],{"id":134673},"_353-安装cuda","3.5.3 安装CUDA",[14,134676,134677],{},"（此教程以Debian 12 Bookworm和RTX3060Laptop为例）(Ubuntu也类似)",[14,134679,134680],{},[30,134681],{"alt":32,"src":134682},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-070.png",[103,134684,134685],{},[43,134686,134687],{},"先查看显卡驱动所支持的最高CUDA版本",[451,134689,134690],{"className":133016,"code":134441,"language":133018,"meta":32,"style":32},[457,134691,134692],{"__ignoreMap":32},[460,134693,134694],{"class":462,"line":463},[460,134695,134441],{"class":929},[14,134697,134698],{},"左边是英伟达驱动版本，右边是所支持CUDA的最高版本，注意是最高版本，比这个版本低的CUDA都是可以安装的。(不用追求最高，稳定即可，虽然都很稳定)",[14,134700,134701],{},[30,134702],{"alt":32,"src":134703},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-071.png",[103,134705,134706],{"start":476},[43,134707,134708],{},"下载CUDA并安装CUDA",[14,134710,132795,134711],{},[2756,134712,132798],{"href":132798,"rel":134713},[4943],[14,134715,134716],{},"选择一个版本，这里以CUDA12.4为例（绿色框住的都是我这台电脑对应可安装的版本，而红色框则不能）",[14,134718,134719],{},[30,134720],{"alt":32,"src":134721},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-072.png",[14,134723,134724,134725,134730],{},"我这里是Intel CPU(X86_64架构或者叫amd64架构)，所以选择X86_64。（AMD和Intel全是X86的，如果分不清，请看",[2756,134726,134729],{"href":134727,"rel":134728},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fwiki\u002FPqsGwcPCuidbN6k13jfcGWtWn0b",[4943],"Vinci机器人队单片机教程","）",[14,134732,134733],{},"我是Debian12，所以选择了Debian12 ,(你是Ubuntu要选择Ubuntu)如下图所示，建议选择runfile文件进行安装。",[14,134735,134736],{},[30,134737],{"alt":32,"src":134738},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-073.png",[14,134740,134741],{},"将最下方框框里的命令敲入终端",[451,134743,134745],{"className":133016,"code":134744,"language":133018,"meta":32,"style":32},"# 在当前文件夹下创建一个ttt的子文件夹\nmkdir -p .\u002Fttt\n# 进入ttt文件夹\ncd ttt\n# 输入复制的第一条命令（用来下载cuda的runfile文件）\nwget https:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002F12.4.0\u002Flocal_installers\u002Fcuda_12.4.0_550.54.14_linux.run\n# 给予权限\nsudo chmod a+x .\u002Fcuda_12.4.0_550.54.14_linux.run\n# 运行脚本\nsudo .\u002Fcuda_12.4.0_550.54.14_linux.run\n",[457,134746,134747,134752,134761,134766,134773,134778,134786,134791,134802,134807],{"__ignoreMap":32},[460,134748,134749],{"class":462,"line":463},[460,134750,134751],{"class":942},"# 在当前文件夹下创建一个ttt的子文件夹\n",[460,134753,134754,134756,134758],{"class":462,"line":476},[460,134755,115759],{"class":929},[460,134757,45625],{"class":900},[460,134759,134760],{"class":1353}," .\u002Fttt\n",[460,134762,134763],{"class":462,"line":482},[460,134764,134765],{"class":942},"# 进入ttt文件夹\n",[460,134767,134768,134770],{"class":462,"line":488},[460,134769,115769],{"class":900},[460,134771,134772],{"class":1353}," ttt\n",[460,134774,134775],{"class":462,"line":494},[460,134776,134777],{"class":942},"# 输入复制的第一条命令（用来下载cuda的runfile文件）\n",[460,134779,134780,134783],{"class":462,"line":500},[460,134781,134782],{"class":929},"wget",[460,134784,134785],{"class":1353}," https:\u002F\u002Fdeveloper.download.nvidia.com\u002Fcompute\u002Fcuda\u002F12.4.0\u002Flocal_installers\u002Fcuda_12.4.0_550.54.14_linux.run\n",[460,134787,134788],{"class":462,"line":506},[460,134789,134790],{"class":942},"# 给予权限\n",[460,134792,134793,134795,134797,134799],{"class":462,"line":512},[460,134794,40989],{"class":929},[460,134796,40992],{"class":1353},[460,134798,134614],{"class":1353},[460,134800,134801],{"class":1353}," .\u002Fcuda_12.4.0_550.54.14_linux.run\n",[460,134803,134804],{"class":462,"line":518},[460,134805,134806],{"class":942},"# 运行脚本\n",[460,134808,134809,134811],{"class":462,"line":525},[460,134810,40989],{"class":929},[460,134812,134801],{"class":1353},[14,134814,134815],{},[30,134816],{"alt":32,"src":134817},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-074.png",[14,134819,134820],{},"正在安装中：",[14,134822,134823],{},[30,134824],{"alt":32,"src":134825},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-075.png",[14,134827,134828],{},"输入accept接受即可",[14,134830,134831],{},[30,134832],{"alt":32,"src":134833},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-076.png",[14,134835,134836],{},"因为我们已经安装了驱动，所以删掉该项，Install即可。",[14,134838,134839],{},[30,134840],{"alt":32,"src":134841},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-077.png",[14,134843,134844],{},"等待片刻后，一般不出红色字体就是安装成功了，可以读读英语确认一下。(顺便确定一下位置)",[14,134846,134847],{},[30,134848],{"alt":32,"src":134849},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-078.png",[103,134851,134852],{"start":482},[43,134853,134854],{},"配置环境",[14,134856,134857],{},"根据上方确认一下路径，比如我上面红色框起来的为",[451,134859,134861],{"className":133016,"code":134860,"language":133018,"meta":32,"style":32},"Please make sure that \n -   PATH includes \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Fbin \n -   LD_LIBRARY_PATH includes \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Flib64, or, add \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Flib64 to \u002Fetc\u002Fld.so.conf and run ldconfig as root\n",[457,134862,134863,134879,134894],{"__ignoreMap":32},[460,134864,134865,134868,134871,134874,134877],{"class":462,"line":463},[460,134866,134867],{"class":929},"Please",[460,134869,134870],{"class":1353}," make",[460,134872,134873],{"class":1353}," sure",[460,134875,134876],{"class":1353}," that",[460,134878,19198],{"class":466},[460,134880,134881,134883,134886,134889,134892],{"class":462,"line":476},[460,134882,68531],{"class":929},[460,134884,134885],{"class":1353},"   PATH",[460,134887,134888],{"class":1353}," includes",[460,134890,134891],{"class":1353}," \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Fbin",[460,134893,19198],{"class":466},[460,134895,134896,134898,134901,134903,134906,134909,134911,134914,134917,134920,134923,134925,134928,134930],{"class":462,"line":482},[460,134897,68531],{"class":929},[460,134899,134900],{"class":1353},"   LD_LIBRARY_PATH",[460,134902,134888],{"class":1353},[460,134904,134905],{"class":1353}," \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Flib64,",[460,134907,134908],{"class":1353}," or,",[460,134910,21716],{"class":1353},[460,134912,134913],{"class":1353}," \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Flib64",[460,134915,134916],{"class":1353}," to",[460,134918,134919],{"class":1353}," \u002Fetc\u002Fld.so.conf",[460,134921,134922],{"class":1353}," and",[460,134924,43641],{"class":1353},[460,134926,134927],{"class":1353}," ldconfig",[460,134929,80767],{"class":1353},[460,134931,134932],{"class":1353}," root\n",[14,134934,134935],{},"如果刚才忘记查看了，也可以使用下方命令查看路径：",[451,134937,134939],{"className":133016,"code":134938,"language":133018,"meta":32,"style":32},"which nvcc\n",[457,134940,134941],{"__ignoreMap":32},[460,134942,134943,134946],{"class":462,"line":463},[460,134944,134945],{"class":900},"which",[460,134947,134948],{"class":1353}," nvcc\n",[14,134950,134951],{},[30,134952],{"alt":32,"src":134953},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-079.png",[14,134955,134956],{},"所以我进行以下操作：",[451,134958,134960],{"className":133016,"code":134959,"language":133018,"meta":32,"style":32},"sudo vim ~\u002F.bashrc\n",[457,134961,134962],{"__ignoreMap":32},[460,134963,134964,134966,134968],{"class":462,"line":463},[460,134965,40989],{"class":929},[460,134967,133076],{"class":1353},[460,134969,134970],{"class":1353}," ~\u002F.bashrc\n",[14,134972,134973],{},"复制下面这一串到~\u002F.bashrc文件中，并保存，不会用vim编辑器的请自行百度。",[451,134975,134977],{"className":133016,"code":134976,"language":133018,"meta":32,"style":32},"export PATH=\u002Fusr\u002Flocal\u002Fcuda-12.4\u002Fbin:$PATH\nexport LD_LIBRARY_PATH=\u002Fusr\u002Flocal\u002Fcuda-12.4\u002Flib64:$LD_LIBRARY_PATH\n",[457,134978,134979,134991],{"__ignoreMap":32},[460,134980,134981,134983,134986,134988],{"class":462,"line":463},[460,134982,41455],{"class":887},[460,134984,134985],{"class":466}," PATH",[460,134987,894],{"class":887},[460,134989,134990],{"class":466},"\u002Fusr\u002Flocal\u002Fcuda-12.4\u002Fbin:$PATH\n",[460,134992,134993,134995,134998,135000],{"class":462,"line":476},[460,134994,41455],{"class":887},[460,134996,134997],{"class":466}," LD_LIBRARY_PATH",[460,134999,894],{"class":887},[460,135001,135002],{"class":466},"\u002Fusr\u002Flocal\u002Fcuda-12.4\u002Flib64:$LD_LIBRARY_PATH\n",[14,135004,135005],{},[30,135006],{"alt":32,"src":135007},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-080.png",[451,135009,135011],{"className":133016,"code":135010,"language":133018,"meta":32,"style":32},"# 刷新当前终端的环境变量\nsource ~\u002F.bashrc\n# 验证CUDA是否安装成功\nnvcc -V\n",[457,135012,135013,135018,135024,135029],{"__ignoreMap":32},[460,135014,135015],{"class":462,"line":463},[460,135016,135017],{"class":942},"# 刷新当前终端的环境变量\n",[460,135019,135020,135022],{"class":462,"line":476},[460,135021,115386],{"class":900},[460,135023,134970],{"class":1353},[460,135025,135026],{"class":462,"line":482},[460,135027,135028],{"class":942},"# 验证CUDA是否安装成功\n",[460,135030,135031,135034],{"class":462,"line":488},[460,135032,135033],{"class":929},"nvcc",[460,135035,135036],{"class":900}," -V\n",[14,135038,135039],{},"出现下图这种则安装成功。",[14,135041,135042],{},[30,135043],{"alt":32,"src":135044},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-081.png",[23,135046,135048],{"id":135047},"_354-安装cudnn","3.5.4 安装cuDNN",[103,135050,135051],{},[43,135052,135053],{},"据安装好的CUDA版本选择合适的cuDNN版本进行下载，注意这里是需要注册登录的：",[14,135055,135056,135057,135062],{},"前往 NVIDIA cuDNN 下载页面：",[2756,135058,135061],{"href":135059,"rel":135060},"https:\u002F\u002Fdeveloper.nvidia.com\u002Fcudnn%EF%BC%88%E9%9C%80%E8%A6%81%E6%B3%A8%E5%86%8C",[4943],"https:\u002F\u002Fdeveloper.nvidia.com\u002Fcudnn（需要注册"," NVIDIA 开发者账号并登录）",[14,135064,135065],{},"因为我是CUDA12.4，所以下方红圈版本都是可以安装的，越新越好。",[14,135067,135068],{},[30,135069],{"alt":32,"src":135070},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-082.png",[14,135072,135073],{},"红色是X86架构的所有Linux通用的，所以我选择红色的。",[14,135075,135076],{},[30,135077],{"alt":32,"src":135078},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-083.png",[14,135080,135081],{},"绿色的是X86架构的Ubuntu，是Ubuntu且CPU为X86架构的可以选择下载。",[14,135083,135084],{},"蓝色的是arm64(aarch64)架构的Ubuntu，是Ubuntu且CPU为arm64(aarch64)架构的可以选择下载。",[14,135086,135087],{},[3944,135088,135089],{},"我这里选择所有Linux X86_64最通用的办法：",[14,135091,135092],{},"下载好的：",[14,135094,135095],{},[30,135096],{"alt":32,"src":135097},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-084.png",[103,135099,135100],{"start":476},[43,135101,135102],{},"安装cuDNN",[14,135104,135105],{},"找到该文件所在目录，并打开终端，cd到该目录。",[14,135107,135108],{},[30,135109],{"alt":32,"src":135110},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-085.png",[14,135112,135113],{},"解压文件，并复制到对应位置完成安装",[451,135115,135117],{"className":133016,"code":135116,"language":133018,"meta":32,"style":32},"# 解压cuDNN文件\ntar -xvf .\u002Fcudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz\n# cd进文件夹\ncd .\u002Fcudnn-linux-x86_64-8.9.7.29_cuda12-archive\n# 复制cuDNN文件到CUDA目录\nsudo cp include\u002Fcudnn*    \u002Fusr\u002Flocal\u002Fcuda\u002Finclude \nsudo cp lib\u002Flibcudnn*    \u002Fusr\u002Flocal\u002Fcuda\u002Flib64\n# 对比一下有没有缺文件\nls \u002Fusr\u002Flocal\u002Fcuda\u002Finclude\u002Fcudnn* \nls \u002Fusr\u002Flocal\u002Fcuda\u002Flib64\u002Flibcudnn*\n# 给予权限\nsudo chmod a+r \u002Fusr\u002Flocal\u002Fcuda\u002Finclude\u002Fcudnn*   \nsudo chmod a+r \u002Fusr\u002Flocal\u002Fcuda\u002Flib64\u002Flibcudnn*\n",[457,135118,135119,135124,135135,135140,135147,135152,135168,135182,135187,135198,135207,135211,135227],{"__ignoreMap":32},[460,135120,135121],{"class":462,"line":463},[460,135122,135123],{"class":942},"# 解压cuDNN文件\n",[460,135125,135126,135129,135132],{"class":462,"line":476},[460,135127,135128],{"class":929},"tar",[460,135130,135131],{"class":900}," -xvf",[460,135133,135134],{"class":1353}," .\u002Fcudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz\n",[460,135136,135137],{"class":462,"line":482},[460,135138,135139],{"class":942},"# cd进文件夹\n",[460,135141,135142,135144],{"class":462,"line":488},[460,135143,115769],{"class":900},[460,135145,135146],{"class":1353}," .\u002Fcudnn-linux-x86_64-8.9.7.29_cuda12-archive\n",[460,135148,135149],{"class":462,"line":494},[460,135150,135151],{"class":942},"# 复制cuDNN文件到CUDA目录\n",[460,135153,135154,135156,135158,135161,135163,135166],{"class":462,"line":500},[460,135155,40989],{"class":929},[460,135157,44272],{"class":1353},[460,135159,135160],{"class":1353}," include\u002Fcudnn",[460,135162,8320],{"class":900},[460,135164,135165],{"class":1353},"    \u002Fusr\u002Flocal\u002Fcuda\u002Finclude",[460,135167,19198],{"class":466},[460,135169,135170,135172,135174,135177,135179],{"class":462,"line":506},[460,135171,40989],{"class":929},[460,135173,44272],{"class":1353},[460,135175,135176],{"class":1353}," lib\u002Flibcudnn",[460,135178,8320],{"class":900},[460,135180,135181],{"class":1353},"    \u002Fusr\u002Flocal\u002Fcuda\u002Flib64\n",[460,135183,135184],{"class":462,"line":512},[460,135185,135186],{"class":942},"# 对比一下有没有缺文件\n",[460,135188,135189,135191,135194,135196],{"class":462,"line":518},[460,135190,43172],{"class":929},[460,135192,135193],{"class":1353}," \u002Fusr\u002Flocal\u002Fcuda\u002Finclude\u002Fcudnn",[460,135195,8320],{"class":900},[460,135197,19198],{"class":466},[460,135199,135200,135202,135205],{"class":462,"line":525},[460,135201,43172],{"class":929},[460,135203,135204],{"class":1353}," \u002Fusr\u002Flocal\u002Fcuda\u002Flib64\u002Flibcudnn",[460,135206,133741],{"class":900},[460,135208,135209],{"class":462,"line":531},[460,135210,134790],{"class":942},[460,135212,135213,135215,135217,135220,135222,135224],{"class":462,"line":537},[460,135214,40989],{"class":929},[460,135216,40992],{"class":1353},[460,135218,135219],{"class":1353}," a+r",[460,135221,135193],{"class":1353},[460,135223,8320],{"class":900},[460,135225,135226],{"class":466},"   \n",[460,135228,135229,135231,135233,135235,135237],{"class":462,"line":543},[460,135230,40989],{"class":929},[460,135232,40992],{"class":1353},[460,135234,135219],{"class":1353},[460,135236,135204],{"class":1353},[460,135238,133741],{"class":900},[103,135240,135241],{"start":482},[43,135242,135243],{},"检查是否安装成功",[451,135245,135247],{"className":133016,"code":135246,"language":133018,"meta":32,"style":32},"# 检查cuDNN版本命令\ncat \u002Fusr\u002Flocal\u002Fcuda\u002Finclude\u002Fcudnn_version.h | grep CUDNN_MAJOR -A 2\n",[457,135248,135249,135254],{"__ignoreMap":32},[460,135250,135251],{"class":462,"line":463},[460,135252,135253],{"class":942},"# 检查cuDNN版本命令\n",[460,135255,135256,135259,135262,135264,135266,135269,135272],{"class":462,"line":476},[460,135257,135258],{"class":929},"cat",[460,135260,135261],{"class":1353}," \u002Fusr\u002Flocal\u002Fcuda\u002Finclude\u002Fcudnn_version.h",[460,135263,41522],{"class":887},[460,135265,46645],{"class":929},[460,135267,135268],{"class":1353}," CUDNN_MAJOR",[460,135270,135271],{"class":900}," -A",[460,135273,64026],{"class":900},[14,135275,135276],{},"出现下图这样的就是安装成功了",[14,135278,135279],{},[30,135280],{"alt":32,"src":135281},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-086.png",[103,135283,135284],{"start":488},[43,135285,135286],{},"软链接(一般不需要)",[451,135288,135290],{"className":133016,"code":135289,"language":133018,"meta":32,"style":32},"# 运行 ldconfig 以更新库缓存：（如果运行 ldconfig 后没有出现任何错误，说明配置已经完成。）\nsudo ldconfig\n",[457,135291,135292,135297],{"__ignoreMap":32},[460,135293,135294],{"class":462,"line":463},[460,135295,135296],{"class":942},"# 运行 ldconfig 以更新库缓存：（如果运行 ldconfig 后没有出现任何错误，说明配置已经完成。）\n",[460,135298,135299,135301],{"class":462,"line":476},[460,135300,40989],{"class":929},[460,135302,135303],{"class":1353}," ldconfig\n",[14,135305,135306],{},"如果出现下列提示，则需要软链接**(如果没有下列提示，则什么都不需要做)**",[451,135308,135313],{"className":135309,"code":135310,"language":135311,"meta":135312,"style":32},"language-Plain shiki shiki-themes github-light github-dark","ldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_cnn_train.so.8 is not a symbolic link  \nldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_ops_train.so.8 is not a symbolic link  \nldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_ops_infer.so.8 is not a symbolic link  \nldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_adv_infer.so.8 is not a symbolic link  \nldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_cnn_infer.so.8 is not a symbolic link  \nldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn.so.8 is not a symbolic link  \nldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_adv_train.so.8 is not a symbolic link\n","Plain","Text",[457,135314,135315,135320,135325,135330,135335,135340,135345],{"__ignoreMap":32},[460,135316,135317],{"class":462,"line":463},[460,135318,135319],{},"ldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_cnn_train.so.8 is not a symbolic link  \n",[460,135321,135322],{"class":462,"line":476},[460,135323,135324],{},"ldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_ops_train.so.8 is not a symbolic link  \n",[460,135326,135327],{"class":462,"line":482},[460,135328,135329],{},"ldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_ops_infer.so.8 is not a symbolic link  \n",[460,135331,135332],{"class":462,"line":488},[460,135333,135334],{},"ldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_adv_infer.so.8 is not a symbolic link  \n",[460,135336,135337],{"class":462,"line":494},[460,135338,135339],{},"ldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_cnn_infer.so.8 is not a symbolic link  \n",[460,135341,135342],{"class":462,"line":500},[460,135343,135344],{},"ldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn.so.8 is not a symbolic link  \n",[460,135346,135347],{"class":462,"line":506},[460,135348,135349],{},"ldconfig: \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_adv_train.so.8 is not a symbolic link\n",[14,135351,135352],{},"运行下方的命令",[451,135354,135356],{"className":133016,"code":135355,"language":133018,"meta":32,"style":32},"# cd进入CUDA路径\ncd \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\n # 查看本路径下的需要软链接的文件名\n ls\n",[457,135357,135358,135363,135370,135375],{"__ignoreMap":32},[460,135359,135360],{"class":462,"line":463},[460,135361,135362],{"class":942},"# cd进入CUDA路径\n",[460,135364,135365,135367],{"class":462,"line":476},[460,135366,115769],{"class":900},[460,135368,135369],{"class":1353}," \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\n",[460,135371,135372],{"class":462,"line":482},[460,135373,135374],{"class":942}," # 查看本路径下的需要软链接的文件名\n",[460,135376,135377],{"class":462,"line":488},[460,135378,135379],{"class":929}," ls\n",[14,135381,135382],{},[30,135383],{"alt":32,"src":135384},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-087.png",[14,135386,135387,135388,34827,135391,34827,135394,135397],{},"如上图，我需要将",[457,135389,135390],{},"libcudnn_xxx_xxxxx.so.8.9.7",[457,135392,135393],{},"libcudnn_xxx_xxxxx.so.8",[457,135395,135396],{},"libcudnn_xxx_xxxxx.so","软链接",[451,135399,135401],{"className":133016,"code":135400,"language":133018,"meta":32,"style":32},"# 创建符号链接。对于每个 .so.8 文件，需要创建一个指向该文件的符号链接，通常链接的名称是不包含 .8 的文件名。\nsudo ln -sf libcudnn_cnn_train.so.8.9.7 libcudnn_cnn_train.so.8\nsudo ln -sf libcudnn_adv_infer.so.8.9.7 libcudnn_adv_infer.so.8\nsudo ln -sf libcudnn_adv_train.so.8.9.7 libcudnn_adv_train.so.8\nsudo ln -sf libcudnn_cnn_infer.so.8.9.7 libcudnn_cnn_infer.so.8\nsudo ln -sf libcudnn.so.8.9.7 libcudnn.so.8\nsudo ln -sf libcudnn_ops_infer.so.8.9.7 libcudnn_ops_infer.so.8\nsudo ln -sf libcudnn_ops_train.so.8.9.7 libcudnn_ops_train.so.8\n# 运行 ldconfig 以更新库缓存：（如果运行 ldconfig 后没有出现任何提示，说明配置已经完成。）\nsudo ldconfig\n# 使用 ls -l 来确认符号链接是否创建成功：(再次确认链接）\nls -l \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_*.so*\n",[457,135402,135403,135408,135424,135438,135452,135466,135480,135494,135508,135513,135519,135524],{"__ignoreMap":32},[460,135404,135405],{"class":462,"line":463},[460,135406,135407],{"class":942},"# 创建符号链接。对于每个 .so.8 文件，需要创建一个指向该文件的符号链接，通常链接的名称是不包含 .8 的文件名。\n",[460,135409,135410,135412,135415,135418,135421],{"class":462,"line":476},[460,135411,40989],{"class":929},[460,135413,135414],{"class":1353}," ln",[460,135416,135417],{"class":900}," -sf",[460,135419,135420],{"class":1353}," libcudnn_cnn_train.so.8.9.7",[460,135422,135423],{"class":1353}," libcudnn_cnn_train.so.8\n",[460,135425,135426,135428,135430,135432,135435],{"class":462,"line":482},[460,135427,40989],{"class":929},[460,135429,135414],{"class":1353},[460,135431,135417],{"class":900},[460,135433,135434],{"class":1353}," libcudnn_adv_infer.so.8.9.7",[460,135436,135437],{"class":1353}," libcudnn_adv_infer.so.8\n",[460,135439,135440,135442,135444,135446,135449],{"class":462,"line":488},[460,135441,40989],{"class":929},[460,135443,135414],{"class":1353},[460,135445,135417],{"class":900},[460,135447,135448],{"class":1353}," libcudnn_adv_train.so.8.9.7",[460,135450,135451],{"class":1353}," libcudnn_adv_train.so.8\n",[460,135453,135454,135456,135458,135460,135463],{"class":462,"line":494},[460,135455,40989],{"class":929},[460,135457,135414],{"class":1353},[460,135459,135417],{"class":900},[460,135461,135462],{"class":1353}," libcudnn_cnn_infer.so.8.9.7",[460,135464,135465],{"class":1353}," libcudnn_cnn_infer.so.8\n",[460,135467,135468,135470,135472,135474,135477],{"class":462,"line":500},[460,135469,40989],{"class":929},[460,135471,135414],{"class":1353},[460,135473,135417],{"class":900},[460,135475,135476],{"class":1353}," libcudnn.so.8.9.7",[460,135478,135479],{"class":1353}," libcudnn.so.8\n",[460,135481,135482,135484,135486,135488,135491],{"class":462,"line":506},[460,135483,40989],{"class":929},[460,135485,135414],{"class":1353},[460,135487,135417],{"class":900},[460,135489,135490],{"class":1353}," libcudnn_ops_infer.so.8.9.7",[460,135492,135493],{"class":1353}," libcudnn_ops_infer.so.8\n",[460,135495,135496,135498,135500,135502,135505],{"class":462,"line":512},[460,135497,40989],{"class":929},[460,135499,135414],{"class":1353},[460,135501,135417],{"class":900},[460,135503,135504],{"class":1353}," libcudnn_ops_train.so.8.9.7",[460,135506,135507],{"class":1353}," libcudnn_ops_train.so.8\n",[460,135509,135510],{"class":462,"line":518},[460,135511,135512],{"class":942},"# 运行 ldconfig 以更新库缓存：（如果运行 ldconfig 后没有出现任何提示，说明配置已经完成。）\n",[460,135514,135515,135517],{"class":462,"line":525},[460,135516,40989],{"class":929},[460,135518,135303],{"class":1353},[460,135520,135521],{"class":462,"line":531},[460,135522,135523],{"class":942},"# 使用 ls -l 来确认符号链接是否创建成功：(再次确认链接）\n",[460,135525,135526,135528,135531,135534,135536,135539],{"class":462,"line":537},[460,135527,43172],{"class":929},[460,135529,135530],{"class":900}," -l",[460,135532,135533],{"class":1353}," \u002Fusr\u002Flocal\u002Fcuda-12.4\u002Ftargets\u002Fx86_64-linux\u002Flib\u002Flibcudnn_",[460,135535,8320],{"class":900},[460,135537,135538],{"class":1353},".so",[460,135540,133741],{"class":900},[23,135542,135544],{"id":135543},"_355-常见问题","3.5.5 常见问题",[103,135546,135547],{},[43,135548,135549],{},"禁用开源驱动nouveau，nouveau经常会引起卡顿黑屏，所以要禁用",[451,135551,135553],{"className":133016,"code":135552,"language":133018,"meta":32,"style":32},"sudo vim \u002Fetc\u002Fmodprobe.d\u002Fblacklist-nouveau.conf\n",[457,135554,135555],{"__ignoreMap":32},[460,135556,135557,135559,135561],{"class":462,"line":463},[460,135558,40989],{"class":929},[460,135560,133076],{"class":1353},[460,135562,135563],{"class":1353}," \u002Fetc\u002Fmodprobe.d\u002Fblacklist-nouveau.conf\n",[14,135565,135566],{},"blacklist-nouveau.conf文件内容如下：",[451,135568,135570],{"className":133016,"code":135569,"language":133018,"meta":32,"style":32},"blacklist nouveau\nblacklist lbm-nouveau\noptions nouveau modeset=0\nalias nouveau off\nalias lbm-nouveau off\n",[457,135571,135572,135580,135587,135599,135609],{"__ignoreMap":32},[460,135573,135574,135577],{"class":462,"line":463},[460,135575,135576],{"class":929},"blacklist",[460,135578,135579],{"class":1353}," nouveau\n",[460,135581,135582,135584],{"class":462,"line":476},[460,135583,135576],{"class":929},[460,135585,135586],{"class":1353}," lbm-nouveau\n",[460,135588,135589,135591,135594,135597],{"class":462,"line":482},[460,135590,130423],{"class":929},[460,135592,135593],{"class":1353}," nouveau",[460,135595,135596],{"class":1353}," modeset=",[460,135598,19606],{"class":900},[460,135600,135601,135604,135606],{"class":462,"line":488},[460,135602,135603],{"class":900},"alias",[460,135605,135593],{"class":1353},[460,135607,135608],{"class":1353}," off\n",[460,135610,135611,135613,135616],{"class":462,"line":494},[460,135612,135603],{"class":900},[460,135614,135615],{"class":1353}," lbm-nouveau",[460,135617,135608],{"class":1353},[14,135619,135620],{},"接着运行下方命令",[451,135622,135624],{"className":133016,"code":135623,"language":133018,"meta":32,"style":32},"sudo update-initramfs -u\n或者\nsudo dracut --force\n",[457,135625,135626,135636,135641],{"__ignoreMap":32},[460,135627,135628,135630,135633],{"class":462,"line":463},[460,135629,40989],{"class":929},[460,135631,135632],{"class":1353}," update-initramfs",[460,135634,135635],{"class":900}," -u\n",[460,135637,135638],{"class":462,"line":476},[460,135639,135640],{"class":929},"或者\n",[460,135642,135643,135645,135648],{"class":462,"line":482},[460,135644,40989],{"class":929},[460,135646,135647],{"class":1353}," dracut",[460,135649,135650],{"class":900}," --force\n",[14,135652,135653],{},"重启后，查询nouveau是否还开着，如果什么都不出现，说明禁用成功。",[451,135655,135657],{"className":133016,"code":135656,"language":133018,"meta":32,"style":32},"lsmod | grep nouveau\n",[457,135658,135659],{"__ignoreMap":32},[460,135660,135661,135664,135666,135668],{"class":462,"line":463},[460,135662,135663],{"class":929},"lsmod",[460,135665,41522],{"class":887},[460,135667,46645],{"class":929},[460,135669,135579],{"class":1353},[103,135671,135672],{"start":476},[43,135673,135674],{},"无法调节屏幕亮度，无法使用HDMI插口(这是因为xorg文件没配置)",[451,135676,135678],{"className":133016,"code":135677,"language":133018,"meta":32,"style":32},"sudo vim \u002Fusr\u002Fshare\u002FX11\u002Fxorg.conf.d\u002F10-nvidia.conf\n",[457,135679,135680],{"__ignoreMap":32},[460,135681,135682,135684,135686],{"class":462,"line":463},[460,135683,40989],{"class":929},[460,135685,133076],{"class":1353},[460,135687,135688],{"class":1353}," \u002Fusr\u002Fshare\u002FX11\u002Fxorg.conf.d\u002F10-nvidia.conf\n",[14,135690,135691],{},"并把10-nvidia.conf里的内容修改为下方内容并保存，然后重启即可。",[451,135693,135695],{"className":133016,"code":135694,"language":133018,"meta":32,"style":32},"Section \"OutputClass\"\n   Identifier \"nvidia\"\n   MatchDriver \"nvidia-drm\"\n   Driver \"nvidia\"\n   Option \"AllowEmptyInitialConfiguration\"\n   Option \"PrimaryGPU\" \"yes\"\n   ModulePath \"\u002Fusr\u002Flib\u002Fx86_64-linux-gnu\u002Fnvidia\u002Fxorg\"\nEndSection\n",[457,135696,135697,135705,135713,135721,135728,135736,135746,135754],{"__ignoreMap":32},[460,135698,135699,135702],{"class":462,"line":463},[460,135700,135701],{"class":929},"Section",[460,135703,135704],{"class":1353}," \"OutputClass\"\n",[460,135706,135707,135710],{"class":462,"line":476},[460,135708,135709],{"class":929},"   Identifier",[460,135711,135712],{"class":1353}," \"nvidia\"\n",[460,135714,135715,135718],{"class":462,"line":482},[460,135716,135717],{"class":929},"   MatchDriver",[460,135719,135720],{"class":1353}," \"nvidia-drm\"\n",[460,135722,135723,135726],{"class":462,"line":488},[460,135724,135725],{"class":929},"   Driver",[460,135727,135712],{"class":1353},[460,135729,135730,135733],{"class":462,"line":494},[460,135731,135732],{"class":929},"   Option",[460,135734,135735],{"class":1353}," \"AllowEmptyInitialConfiguration\"\n",[460,135737,135738,135740,135743],{"class":462,"line":500},[460,135739,135732],{"class":929},[460,135741,135742],{"class":1353}," \"PrimaryGPU\"",[460,135744,135745],{"class":1353}," \"yes\"\n",[460,135747,135748,135751],{"class":462,"line":506},[460,135749,135750],{"class":929},"   ModulePath",[460,135752,135753],{"class":1353}," \"\u002Fusr\u002Flib\u002Fx86_64-linux-gnu\u002Fnvidia\u002Fxorg\"\n",[460,135755,135756],{"class":462,"line":512},[460,135757,135758],{"class":929},"EndSection\n",[103,135760,135761],{"start":482},[43,135762,135763],{},"安装N卡驱动提示错误",[451,135765,135767],{"className":135309,"code":135766,"language":135311,"meta":135312,"style":32},"Unable to find the kernel source tree for the currently running kernel.  Please make sure you have installed the kernel source files for your kernel and that they are properly configured; on Red Hat Linux systems, for example, be sure you have the 'kernel-source' or 'kernel-devel' RPM installed.If you know the correct kernel source files are installed, you may specify the kernel source path with the '--kernel-source-path' command line option.\n",[457,135768,135769],{"__ignoreMap":32},[460,135770,135771],{"class":462,"line":463},[460,135772,135766],{},[103,135774,135775],{},[43,135776,135777],{},"检查当前运行的内核版本：",[14,135779,135780],{},"运行以下命令以查看你当前正在使用的内核版本：",[451,135782,135784],{"className":131789,"code":135783,"language":131791,"meta":32,"style":32},"uname -r\n",[457,135785,135786],{"__ignoreMap":32},[460,135787,135788,135790],{"class":462,"line":463},[460,135789,86349],{"class":929},[460,135791,135792],{"class":900}," -r\n",[103,135794,135795],{"start":476},[43,135796,135797],{},"安装内核开发文件：",[14,135799,135800,135801,135804],{},"确保你已经安装了与当前内核版本相匹配的 ",[457,135802,135803],{},"kernel-devel"," 包。运行以下命令来安装：",[451,135806,135808],{"className":131789,"code":135807,"language":131791,"meta":32,"style":32},"sudo dnf install kernel-devel-$(uname -r)\n",[457,135809,135810],{"__ignoreMap":32},[460,135811,135812,135814,135816,135818,135821,135823,135825,135827],{"class":462,"line":463},[460,135813,40989],{"class":929},[460,135815,42726],{"class":1353},[460,135817,40247],{"class":1353},[460,135819,135820],{"class":1353}," kernel-devel-",[460,135822,41512],{"class":466},[460,135824,86349],{"class":929},[460,135826,134132],{"class":900},[460,135828,3754],{"class":466},[14,135830,135831],{},"这将自动安装与你当前内核版本匹配的内核开发包。",[103,135833,135834],{"start":482},[43,135835,135836],{},"安装内核源代码（如果需要）：",[14,135838,135839],{},"如果需要访问完整的内核源代码，你可以运行以下命令来安装它：",[451,135841,135843],{"className":131789,"code":135842,"language":131791,"meta":32,"style":32},"sudo dnf install kernel-headers kernel-source\n",[457,135844,135845],{"__ignoreMap":32},[460,135846,135847,135849,135851,135853,135856],{"class":462,"line":463},[460,135848,40989],{"class":929},[460,135850,42726],{"class":1353},[460,135852,40247],{"class":1353},[460,135854,135855],{"class":1353}," kernel-headers",[460,135857,135858],{"class":1353}," kernel-source\n",[103,135860,135861],{"start":488},[43,135862,135863],{},"检查安装：",[14,135865,135866,135867,135870],{},"安装完成后，确认路径是否正确。内核源文件通常位于 ",[457,135868,135869],{},"\u002Fusr\u002Fsrc\u002Fkernels\u002F"," 目录下，你可以使用以下命令来检查该目录是否存在：",[451,135872,135874],{"className":131789,"code":135873,"language":131791,"meta":32,"style":32},"ls \u002Fusr\u002Fsrc\u002Fkernels\u002F\n",[457,135875,135876],{"__ignoreMap":32},[460,135877,135878,135880],{"class":462,"line":463},[460,135879,43172],{"class":929},[460,135881,135882],{"class":1353}," \u002Fusr\u002Fsrc\u002Fkernels\u002F\n",[14,135884,135885,135886,135889],{},"如果仍然遇到问题，可以通过 ",[457,135887,135888],{},"--kernel-source-path"," 选项手动指定内核源文件路径。",[1944,135891,135892],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":32,"searchDepth":476,"depth":476,"links":135894},[135895,135899,135909,135913,135914],{"id":132992,"depth":476,"text":132993,"children":135896},[135897,135898],{"id":133002,"depth":482,"text":133003},{"id":133012,"depth":482,"text":133013},{"id":133212,"depth":476,"text":133213,"children":135900},[135901,135902,135903,135904,135905,135906,135907,135908],{"id":133216,"depth":482,"text":133217},{"id":133286,"depth":482,"text":133287},{"id":133375,"depth":482,"text":133376},{"id":133620,"depth":482,"text":133621},{"id":133690,"depth":482,"text":133691},{"id":133757,"depth":482,"text":133758},{"id":133792,"depth":482,"text":133793},{"id":133847,"depth":482,"text":133848},{"id":133898,"depth":476,"text":133899,"children":135910},[135911,135912],{"id":133902,"depth":482,"text":133903},{"id":133982,"depth":482,"text":133983},{"id":134168,"depth":476,"text":134169},{"id":134341,"depth":476,"text":134342,"children":135915},[135916,135917,135918,135919,135920],{"id":134345,"depth":482,"text":134346},{"id":134386,"depth":482,"text":134387},{"id":134673,"depth":482,"text":134674},{"id":135047,"depth":482,"text":135048},{"id":135543,"depth":482,"text":135544},{},"\u002Fwiki\u002F2025-01-27-linux\u002Fch3",{"title":132984,"description":16682},"wiki\u002F2025-01-27-Linux基本操作\u002Fch3-安装必备配置","WWF6akXAqWzKqM4dMry9y9TJVEbZQNwxOIpkPoo5nX0",{"id":135927,"title":135928,"body":135929,"description":16682,"extension":16683,"meta":136269,"navigation":521,"path":136270,"seo":136271,"stem":136272,"__hash__":136273},"wiki\u002Fwiki\u002F2025-01-27-Linux基本操作\u002Fch4-命令教程(长期积累).md","4. 命令教程(长期积累)",{"type":7,"value":135930,"toc":136267},[135931,135934,135939,135942,136188,136193,136196,136232,136235,136264],[10,135932,135928],{"id":135933},"_4-命令教程长期积累",[103,135935,135936],{},[43,135937,135938],{},"大多数命令",[14,135940,135941],{},"常用 Linux 命令速查：",[451,135943,135945],{"className":131789,"code":135944,"language":131791,"meta":32,"style":32},"# 文件与目录\nls        # 列出目录内容\ncd        # 切换目录\npwd       # 显示当前路径\nmkdir     # 创建目录\nrm        # 删除文件或目录\ncp        # 复制文件或目录\nmv        # 移动\u002F重命名文件或目录\ntouch     # 创建空文件\ncat       # 查看文件内容\nhead\u002Ftail # 查看文件头部\u002F尾部\n\n# 权限管理\nchmod     # 修改文件权限\nchown     # 修改文件所有者\nsudo      # 以管理员身份执行\n\n# 系统信息\nuname     # 系统信息\ndf        # 磁盘使用情况\nfree      # 内存使用情况\ntop\u002Fhtop  # 进程监控\nps        # 查看进程\n\n# 网络\nping      # 测试网络连通性\ncurl      # 发送 HTTP 请求\nwget      # 下载文件\nssh       # 远程登录\nscp       # 远程文件传输\n\n# 包管理（Debian\u002FUbuntu）\napt update   # 更新软件源\napt install  # 安装软件包\napt remove   # 卸载软件包\n",[457,135946,135947,135952,135959,135966,135974,135981,135988,135996,136004,136011,136018,136026,136030,136035,136042,136050,136057,136061,136066,136073,136081,136089,136097,136105,136109,136114,136122,136129,136136,136144,136152,136156,136161,136170,136179],{"__ignoreMap":32},[460,135948,135949],{"class":462,"line":463},[460,135950,135951],{"class":942},"# 文件与目录\n",[460,135953,135954,135956],{"class":462,"line":476},[460,135955,43172],{"class":929},[460,135957,135958],{"class":942},"        # 列出目录内容\n",[460,135960,135961,135963],{"class":462,"line":482},[460,135962,115769],{"class":900},[460,135964,135965],{"class":942},"        # 切换目录\n",[460,135967,135968,135971],{"class":462,"line":488},[460,135969,135970],{"class":900},"pwd",[460,135972,135973],{"class":942},"       # 显示当前路径\n",[460,135975,135976,135978],{"class":462,"line":494},[460,135977,115759],{"class":929},[460,135979,135980],{"class":942},"     # 创建目录\n",[460,135982,135983,135985],{"class":462,"line":500},[460,135984,41734],{"class":929},[460,135986,135987],{"class":942},"        # 删除文件或目录\n",[460,135989,135990,135993],{"class":462,"line":506},[460,135991,135992],{"class":929},"cp",[460,135994,135995],{"class":942},"        # 复制文件或目录\n",[460,135997,135998,136001],{"class":462,"line":512},[460,135999,136000],{"class":929},"mv",[460,136002,136003],{"class":942},"        # 移动\u002F重命名文件或目录\n",[460,136005,136006,136008],{"class":462,"line":518},[460,136007,115776],{"class":929},[460,136009,136010],{"class":942},"     # 创建空文件\n",[460,136012,136013,136015],{"class":462,"line":525},[460,136014,135258],{"class":929},[460,136016,136017],{"class":942},"       # 查看文件内容\n",[460,136019,136020,136023],{"class":462,"line":531},[460,136021,136022],{"class":929},"head\u002Ftail",[460,136024,136025],{"class":942}," # 查看文件头部\u002F尾部\n",[460,136027,136028],{"class":462,"line":537},[460,136029,522],{"emptyLinePlaceholder":521},[460,136031,136032],{"class":462,"line":543},[460,136033,136034],{"class":942},"# 权限管理\n",[460,136036,136037,136039],{"class":462,"line":549},[460,136038,41024],{"class":929},[460,136040,136041],{"class":942},"     # 修改文件权限\n",[460,136043,136044,136047],{"class":462,"line":555},[460,136045,136046],{"class":929},"chown",[460,136048,136049],{"class":942},"     # 修改文件所有者\n",[460,136051,136052,136054],{"class":462,"line":560},[460,136053,40989],{"class":929},[460,136055,136056],{"class":942},"      # 以管理员身份执行\n",[460,136058,136059],{"class":462,"line":566},[460,136060,522],{"emptyLinePlaceholder":521},[460,136062,136063],{"class":462,"line":572},[460,136064,136065],{"class":942},"# 系统信息\n",[460,136067,136068,136070],{"class":462,"line":578},[460,136069,86349],{"class":929},[460,136071,136072],{"class":942},"     # 系统信息\n",[460,136074,136075,136078],{"class":462,"line":812},[460,136076,136077],{"class":929},"df",[460,136079,136080],{"class":942},"        # 磁盘使用情况\n",[460,136082,136083,136086],{"class":462,"line":818},[460,136084,136085],{"class":929},"free",[460,136087,136088],{"class":942},"      # 内存使用情况\n",[460,136090,136091,136094],{"class":462,"line":824},[460,136092,136093],{"class":929},"top\u002Fhtop",[460,136095,136096],{"class":942},"  # 进程监控\n",[460,136098,136099,136102],{"class":462,"line":2074},[460,136100,136101],{"class":929},"ps",[460,136103,136104],{"class":942},"        # 查看进程\n",[460,136106,136107],{"class":462,"line":2088},[460,136108,522],{"emptyLinePlaceholder":521},[460,136110,136111],{"class":462,"line":2103},[460,136112,136113],{"class":942},"# 网络\n",[460,136115,136116,136119],{"class":462,"line":2122},[460,136117,136118],{"class":929},"ping",[460,136120,136121],{"class":942},"      # 测试网络连通性\n",[460,136123,136124,136126],{"class":462,"line":2144},[460,136125,43260],{"class":929},[460,136127,136128],{"class":942},"      # 发送 HTTP 请求\n",[460,136130,136131,136133],{"class":462,"line":2158},[460,136132,134782],{"class":929},[460,136134,136135],{"class":942},"      # 下载文件\n",[460,136137,136138,136141],{"class":462,"line":2163},[460,136139,136140],{"class":929},"ssh",[460,136142,136143],{"class":942},"       # 远程登录\n",[460,136145,136146,136149],{"class":462,"line":2168},[460,136147,136148],{"class":929},"scp",[460,136150,136151],{"class":942},"       # 远程文件传输\n",[460,136153,136154],{"class":462,"line":2183},[460,136155,522],{"emptyLinePlaceholder":521},[460,136157,136158],{"class":462,"line":2194},[460,136159,136160],{"class":942},"# 包管理（Debian\u002FUbuntu）\n",[460,136162,136163,136165,136167],{"class":462,"line":2199},[460,136164,131861],{"class":929},[460,136166,131840],{"class":1353},[460,136168,136169],{"class":942},"   # 更新软件源\n",[460,136171,136172,136174,136176],{"class":462,"line":2204},[460,136173,131861],{"class":929},[460,136175,40247],{"class":1353},[460,136177,136178],{"class":942},"  # 安装软件包\n",[460,136180,136181,136183,136185],{"class":462,"line":2212},[460,136182,131861],{"class":929},[460,136184,42490],{"class":1353},[460,136186,136187],{"class":942},"   # 卸载软件包\n",[103,136189,136190],{"start":476},[43,136191,136192],{},"KDE Dolphin 以root打开",[14,136194,136195],{},"kde5",[451,136197,136199],{"className":131789,"code":136198,"language":131791,"meta":32,"style":32},"pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dolphin\n",[457,136200,136201],{"__ignoreMap":32},[460,136202,136203,136206,136209,136212,136214,136216,136219,136222,136224,136227,136229],{"class":462,"line":463},[460,136204,136205],{"class":929},"pkexec",[460,136207,136208],{"class":1353}," env",[460,136210,136211],{"class":1353}," DISPLAY=",[460,136213,44553],{"class":466},[460,136215,44610],{"class":1353},[460,136217,136218],{"class":466},"$XAUTHORITY ",[460,136220,136221],{"class":1353},"KDE_SESSION_VERSION=",[460,136223,7290],{"class":900},[460,136225,136226],{"class":1353}," KDE_FULL_SESSION=",[460,136228,6270],{"class":900},[460,136230,136231],{"class":1353}," dolphin\n",[14,136233,136234],{},"kde6",[451,136236,136238],{"className":131789,"code":136237,"language":131791,"meta":32,"style":32},"pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=6 KDE_FULL_SESSION=true dolphin\n",[457,136239,136240],{"__ignoreMap":32},[460,136241,136242,136244,136246,136248,136250,136252,136254,136256,136258,136260,136262],{"class":462,"line":463},[460,136243,136205],{"class":929},[460,136245,136208],{"class":1353},[460,136247,136211],{"class":1353},[460,136249,44553],{"class":466},[460,136251,44610],{"class":1353},[460,136253,136218],{"class":466},[460,136255,136221],{"class":1353},[460,136257,4064],{"class":900},[460,136259,136226],{"class":1353},[460,136261,6270],{"class":900},[460,136263,136231],{"class":1353},[1944,136265,136266],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":32,"searchDepth":476,"depth":476,"links":136268},[],{},"\u002Fwiki\u002F2025-01-27-linux\u002Fch4-()",{"title":135928,"description":16682},"wiki\u002F2025-01-27-Linux基本操作\u002Fch4-命令教程(长期积累)","-0A6CbI0z8eUQ30QPo9buhLpXQXBgXgQ7JWiF4O_YiE",{"id":136275,"title":136276,"body":136277,"description":16682,"extension":16683,"meta":136291,"navigation":521,"path":136292,"seo":136293,"stem":136294,"__hash__":136295},"wiki\u002Fwiki\u002F2025-01-27-Linux基本操作\u002Fch5-各种环境配置.md","5. 各种环境配置",{"type":7,"value":136278,"toc":136289},[136279,136282],[10,136280,136276],{"id":136281},"_5-各种环境配置",[14,136283,136284],{},[2756,136285,136288],{"href":136286,"rel":136287},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fwiki\u002FFQszwXIR5iQgCfk7pRwc9rYpnqg",[4943],"电控组环境搭建大全",{"title":32,"searchDepth":476,"depth":476,"links":136290},[],{},"\u002Fwiki\u002F2025-01-27-linux\u002Fch5",{"title":136276,"description":16682},"wiki\u002F2025-01-27-Linux基本操作\u002Fch5-各种环境配置","yOHCbneTdzOs8sgJI44X3D1tralTicDJM2N-2uZmoZQ",{"id":136297,"title":136298,"body":136299,"description":16682,"extension":16683,"meta":136647,"navigation":521,"path":136648,"seo":136649,"stem":136650,"__hash__":136651},"wiki\u002Fwiki\u002F2025-01-27-Linux基本操作\u002Fch6-拓展功能.md","6. 拓展功能",{"type":7,"value":136300,"toc":136639},[136301,136304,136308,136312,136316,136321,136328,136332,136625,136629,136636],[10,136302,136298],{"id":136303},"_6-拓展功能",[18,136305,136307],{"id":136306},"_61-wine","6.1 Wine",[18,136309,136311],{"id":136310},"_62-android","6.2 Android",[23,136313,136315],{"id":136314},"_621-i卡a卡","6.2.1 I卡、A卡",[103,136317,136318],{},[43,136319,136320],{},"Wayland-Waydroid(体验超级好)",[14,136322,136323,136324],{},"Waydroid 官网与安装指南：",[2756,136325,136326],{"href":136326,"rel":136327},"https:\u002F\u002Fwaydro.id\u002F",[4943],[23,136329,136331],{"id":136330},"_622-n卡so-nvidia-fxxk-u","6.2.2 N卡(So Nvidia Fxxk U!)",[103,136333,136334],{},[43,136335,136336,136337,136339,136340,136344,136346,136349,136354,136551],{},"QEMU-KVM虚拟机 + BlissOS-X86",[69963,136338],{},"BlissOS 官网下载：",[2756,136341,136342],{"href":136342,"rel":136343},"https:\u002F\u002Fblissos.org\u002F",[4943],[69963,136345],{},[30,136347],{"alt":32,"src":136348},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-088.png",[103,136350,136351],{"start":482},[43,136352,136353],{},"比较推荐的配置",[451,136355,136357],{"className":131789,"code":136356,"language":131791,"meta":32,"style":32},"qemu-system-x86_64 \\\n        -M q35,vmport=off \\\n        -accel kvm \\\n        -cpu qemu64,+sse3,+sse4.2 \\\n        -smp 8,cores=4 \\\n        -m 6G \\\n        -usb \\\n        -device virtio-tablet \\\n        -device virtio-keyboard \\\n        -device usb-tablet \\\n        -bios OVMF-pure-efi64.fd \\\n        -net user,hostfwd=tcp::5555-:5555,hostfwd=tcp::8022-:8022 \\\n        -net nic,model=virtio \\\n        -audio sdl,model=hda \\\n        -display sdl,gl=on,show-cursor=on \\\n        -device virtio-vga-gl,xres=1920,yres=1080 \\\n        -drive file=disk.qcow2,media=disk,if=virtio,cache=writeback \\\n        -drive file=Bliss-v16.9.7-x86_64-OFFICIAL-gapps-20240911.iso,media=cdrom \\\n        -monitor stdio \\\n        -serial none\n",[457,136358,136359,136366,136376,136386,136396,136408,136418,136425,136435,136444,136453,136463,136473,136482,136492,136502,136514,136524,136533,136543],{"__ignoreMap":32},[460,136360,136361,136364],{"class":462,"line":463},[460,136362,136363],{"class":929},"qemu-system-x86_64",[460,136365,41091],{"class":900},[460,136367,136368,136371,136374],{"class":462,"line":476},[460,136369,136370],{"class":900},"        -M",[460,136372,136373],{"class":1353}," q35,vmport=off",[460,136375,41091],{"class":900},[460,136377,136378,136381,136384],{"class":462,"line":482},[460,136379,136380],{"class":900},"        -accel",[460,136382,136383],{"class":1353}," kvm",[460,136385,41091],{"class":900},[460,136387,136388,136391,136394],{"class":462,"line":488},[460,136389,136390],{"class":900},"        -cpu",[460,136392,136393],{"class":1353}," qemu64,+sse3,+sse4.2",[460,136395,41091],{"class":900},[460,136397,136398,136401,136404,136406],{"class":462,"line":494},[460,136399,136400],{"class":900},"        -smp",[460,136402,136403],{"class":1353}," 8,cores=",[460,136405,918],{"class":900},[460,136407,41091],{"class":900},[460,136409,136410,136413,136416],{"class":462,"line":500},[460,136411,136412],{"class":900},"        -m",[460,136414,136415],{"class":1353}," 6G",[460,136417,41091],{"class":900},[460,136419,136420,136423],{"class":462,"line":506},[460,136421,136422],{"class":900},"        -usb",[460,136424,41091],{"class":900},[460,136426,136427,136430,136433],{"class":462,"line":512},[460,136428,136429],{"class":900},"        -device",[460,136431,136432],{"class":1353}," virtio-tablet",[460,136434,41091],{"class":900},[460,136436,136437,136439,136442],{"class":462,"line":518},[460,136438,136429],{"class":900},[460,136440,136441],{"class":1353}," virtio-keyboard",[460,136443,41091],{"class":900},[460,136445,136446,136448,136451],{"class":462,"line":525},[460,136447,136429],{"class":900},[460,136449,136450],{"class":1353}," usb-tablet",[460,136452,41091],{"class":900},[460,136454,136455,136458,136461],{"class":462,"line":531},[460,136456,136457],{"class":900},"        -bios",[460,136459,136460],{"class":1353}," OVMF-pure-efi64.fd",[460,136462,41091],{"class":900},[460,136464,136465,136468,136471],{"class":462,"line":537},[460,136466,136467],{"class":900},"        -net",[460,136469,136470],{"class":1353}," user,hostfwd=tcp::5555-:5555,hostfwd=tcp::8022-:8022",[460,136472,41091],{"class":900},[460,136474,136475,136477,136480],{"class":462,"line":543},[460,136476,136467],{"class":900},[460,136478,136479],{"class":1353}," nic,model=virtio",[460,136481,41091],{"class":900},[460,136483,136484,136487,136490],{"class":462,"line":549},[460,136485,136486],{"class":900},"        -audio",[460,136488,136489],{"class":1353}," sdl,model=hda",[460,136491,41091],{"class":900},[460,136493,136494,136497,136500],{"class":462,"line":555},[460,136495,136496],{"class":900},"        -display",[460,136498,136499],{"class":1353}," sdl,gl=on,show-cursor=on",[460,136501,41091],{"class":900},[460,136503,136504,136506,136509,136512],{"class":462,"line":560},[460,136505,136429],{"class":900},[460,136507,136508],{"class":1353}," virtio-vga-gl,xres=1920,yres=",[460,136510,136511],{"class":900},"1080",[460,136513,41091],{"class":900},[460,136515,136516,136519,136522],{"class":462,"line":566},[460,136517,136518],{"class":900},"        -drive",[460,136520,136521],{"class":1353}," file=disk.qcow2,media=disk,if=virtio,cache=writeback",[460,136523,41091],{"class":900},[460,136525,136526,136528,136531],{"class":462,"line":572},[460,136527,136518],{"class":900},[460,136529,136530],{"class":1353}," file=Bliss-v16.9.7-x86_64-OFFICIAL-gapps-20240911.iso,media=cdrom",[460,136532,41091],{"class":900},[460,136534,136535,136538,136541],{"class":462,"line":578},[460,136536,136537],{"class":900},"        -monitor",[460,136539,136540],{"class":1353}," stdio",[460,136542,41091],{"class":900},[460,136544,136545,136548],{"class":462,"line":812},[460,136546,136547],{"class":900},"        -serial",[460,136549,136550],{"class":1353}," none\n",[103,136552,136553],{"start":494},[43,136554,136555,136556],{},"常用操作：",[103,136557,136558,136561,136617],{},[43,136559,136560],{},"全屏：Ctrl+Alt+F",[43,136562,136563,136564,136569],{},"adb调试",[103,136565,136566],{},[43,136567,136568],{},"使Linux与Android用ADB连接。",[451,136570,136572],{"className":131789,"code":136571,"language":131791,"meta":32,"style":32},"# 连接安卓\nadb connect 127.0.0.1\n# 打开shell\nadb -s 127.0.0.1:5555 shell\n# 使用root权限\nsu\n",[457,136573,136574,136579,136590,136595,136607,136612],{"__ignoreMap":32},[460,136575,136576],{"class":462,"line":463},[460,136577,136578],{"class":942},"# 连接安卓\n",[460,136580,136581,136584,136587],{"class":462,"line":476},[460,136582,136583],{"class":929},"adb",[460,136585,136586],{"class":1353}," connect",[460,136588,136589],{"class":900}," 127.0.0.1\n",[460,136591,136592],{"class":462,"line":482},[460,136593,136594],{"class":942},"# 打开shell\n",[460,136596,136597,136599,136601,136604],{"class":462,"line":488},[460,136598,136583],{"class":929},[460,136600,43294],{"class":900},[460,136602,136603],{"class":1353}," 127.0.0.1:5555",[460,136605,136606],{"class":1353}," shell\n",[460,136608,136609],{"class":462,"line":494},[460,136610,136611],{"class":942},"# 使用root权限\n",[460,136613,136614],{"class":462,"line":500},[460,136615,136616],{"class":929},"su\n",[43,136618,136619,136620],{},"中文输入法",[103,136621,136622],{},[43,136623,136624],{},"可以下载google输入法：按Shift+space进行中英文切换（这样有效防止与linux本机的中英文切换冲突）",[18,136626,136628],{"id":136627},"_63-好看点的uefi启动界面refind","6.3 好看点的UEFI启动界面rEFInd",[14,136630,136631,136632],{},"rEFInd 官网与文档：",[2756,136633,136634],{"href":136634,"rel":136635},"https:\u002F\u002Fwww.rodsbooks.com\u002Frefind\u002F",[4943],[1944,136637,136638],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":32,"searchDepth":476,"depth":476,"links":136640},[136641,136642,136646],{"id":136306,"depth":476,"text":136307},{"id":136310,"depth":476,"text":136311,"children":136643},[136644,136645],{"id":136314,"depth":482,"text":136315},{"id":136330,"depth":482,"text":136331},{"id":136627,"depth":476,"text":136628},{},"\u002Fwiki\u002F2025-01-27-linux\u002Fch6",{"title":136298,"description":16682},"wiki\u002F2025-01-27-Linux基本操作\u002Fch6-拓展功能","QYYeVozwQSLjdsxnTnMgRQGi_b8v38BhBh0gp8PtboY",{"id":136653,"title":136654,"body":136655,"description":16682,"extension":16683,"meta":139954,"navigation":521,"path":139955,"seo":139956,"stem":139957,"__hash__":139958},"wiki\u002Fwiki\u002F2025-01-27-Linux基本操作\u002Fch7-其他操作.md","7. 其他操作",{"type":7,"value":136656,"toc":139928},[136657,136660,136664,136667,136674,136924,136927,136999,137002,137006,137010,137015,137018,137021,137024,137029,137032,137035,137038,137043,137046,137051,137054,137057,137062,137065,137070,137073,137077,137081,137084,137089,137092,137106,137109,137112,137121,137124,137133,137136,137139,137148,137151,137160,137163,137166,137175,137178,137181,137196,137199,137202,137211,137216,137219,137222,137231,137234,137243,137246,137255,137258,137267,137272,137275,137283,137288,137291,137300,137303,137311,137316,137319,137328,137331,137334,137338,137341,137346,137349,137354,137368,137373,137378,137389,137394,137400,137405,137420,137425,137428,137433,137438,137443,137451,137456,137463,137468,137479,137484,137487,137491,137494,137497,137502,137505,137524,137529,137532,137541,137546,137549,137571,137574,137604,137607,137612,137615,137629,137634,137653,137656,137659,137664,137676,137681,137686,137689,137694,137697,137712,137715,137720,137725,137729,137734,137774,137777,137781,137787,137793,137798,137801,137808,137813,137820,137823,137826,137833,137847,137850,137910,137913,137927,137939,137942,137945,137948,138012,138015,138018,138021,138041,138044,138049,138056,138060,138063,138067,138072,138077,138081,138084,138087,138129,138134,138137,138159,138174,138176,138181,138193,138253,138255,138257,138311,138313,138315,138321,138326,138329,138334,138338,138341,138403,138408,138411,138413,138417,138429,138511,138513,138515,138569,138575,138577,138581,138586,138588,138593,138597,138617,138652,138656,138659,138662,138665,138672,138675,138687,138690,138705,138708,138727,138775,138778,138795,138798,138812,138817,138820,138829,138844,138856,138894,138899,138908,138913,138918,138944,138953,138957,138961,138966,138969,138973,138977,138982,138985,138990,138993,138998,139001,139006,139009,139013,139018,139021,139026,139029,139033,139038,139041,139046,139049,139054,139057,139061,139066,139069,139074,139077,139082,139085,139089,139094,139097,139102,139105,139110,139113,139118,139121,139126,139129,139134,139137,139141,139146,139149,139154,139161,139165,139170,139173,139178,139181,139185,139190,139193,139196,139199,139202,139205,139209,139212,139222,139227,139232,139254,139259,139264,139271,139275,139280,139283,139286,139291,139294,139297,139300,139303,139306,139309,139312,139315,139318,139321,139324,139327,139332,139337,139342,139347,139352,139357,139362,139365,139369,139372,139376,139381,139386,139391,139396,139400,139406,139414,139419,139422,139427,139442,139445,139450,139484,139499,139502,139557,139583,139595,139598,139607,139610,139625,139630,139633,139639,139644,139647,139652,139655,139660,139665,139672,139675,139690,139693,139728,139733,139741,139779,139782,139785,139790,139793,139798,139809,139843,139848,139851,139860,139865,139871,139874,139879,139888,139893,139896,139899,139904,139912,139915,139920,139925],[10,136658,136654],{"id":136659},"_7-其他操作",[18,136661,136663],{"id":136662},"_71-工控机如何连wifi","7.1 工控机如何连wifi",[14,136665,136666],{},"当我们工控机从一个环境移动到另一个环境，且新的环境的wifi我们没有连接过，我们没有屏幕如何让工控机连上网呢？",[14,136668,136669,136670,136673],{},"进入工控机的硬盘目录，进入",[457,136671,136672],{},"\u002Fetc\u002Fnetplan\u002F","，底下有很多yaml,找到一个最符合下方格式的yaml:",[451,136675,136679],{"className":136676,"code":136677,"language":136678,"meta":32,"style":32},"language-YAML shiki shiki-themes github-light github-dark","network: \n  version: 2 \n  wifis: \n    NM-6f414fe0-2658-48ff-89ee-c7981b87bc96: \n      renderer: NetworkManager \n      match: \n        name: \"wlan0\" \n      dhcp4: true \n      dhcp6: true \n      access-points: \n        \"EMIS_Vinci_Robocon_5G\": \n          auth: \n            key-management: \"psk\" \n            password: \"vinci666\" \n          networkmanager: \n            uuid: \"6f414fe0-2658-48ff-89ee-c7981b87bc96\" \n            name: \"EMIS_Vinci_Robocon_5G\" \n            passthrough: \n              wifi-security.auth-alg: \"open\" \n              ipv6.addr-gen-mode: \"default\" \n              ipv6.ip6-privacy: \"-1\" \n              proxy._: \"\" \n      networkmanager: \n        uuid: \"6f414fe0-2658-48ff-89ee-c7981b87bc96\" \n        name: \"EMIS_Vinci_Robocon_5G\"\n \n","YAML",[457,136680,136681,136689,136700,136707,136714,136726,136733,136745,136756,136767,136774,136781,136788,136800,136812,136819,136831,136843,136850,136862,136874,136886,136897,136904,136915],{"__ignoreMap":32},[460,136682,136683,136686],{"class":462,"line":463},[460,136684,136685],{"class":470},"network",[460,136687,136688],{"class":466},": \n",[460,136690,136691,136694,136696,136698],{"class":462,"line":476},[460,136692,136693],{"class":470},"  version",[460,136695,1961],{"class":466},[460,136697,907],{"class":900},[460,136699,19198],{"class":466},[460,136701,136702,136705],{"class":462,"line":482},[460,136703,136704],{"class":470},"  wifis",[460,136706,136688],{"class":466},[460,136708,136709,136712],{"class":462,"line":488},[460,136710,136711],{"class":470},"    NM-6f414fe0-2658-48ff-89ee-c7981b87bc96",[460,136713,136688],{"class":466},[460,136715,136716,136719,136721,136724],{"class":462,"line":494},[460,136717,136718],{"class":470},"      renderer",[460,136720,1961],{"class":466},[460,136722,136723],{"class":1353},"NetworkManager",[460,136725,19198],{"class":466},[460,136727,136728,136731],{"class":462,"line":500},[460,136729,136730],{"class":470},"      match",[460,136732,136688],{"class":466},[460,136734,136735,136738,136740,136743],{"class":462,"line":506},[460,136736,136737],{"class":470},"        name",[460,136739,1961],{"class":466},[460,136741,136742],{"class":1353},"\"wlan0\"",[460,136744,19198],{"class":466},[460,136746,136747,136750,136752,136754],{"class":462,"line":512},[460,136748,136749],{"class":470},"      dhcp4",[460,136751,1961],{"class":466},[460,136753,6270],{"class":900},[460,136755,19198],{"class":466},[460,136757,136758,136761,136763,136765],{"class":462,"line":518},[460,136759,136760],{"class":470},"      dhcp6",[460,136762,1961],{"class":466},[460,136764,6270],{"class":900},[460,136766,19198],{"class":466},[460,136768,136769,136772],{"class":462,"line":525},[460,136770,136771],{"class":470},"      access-points",[460,136773,136688],{"class":466},[460,136775,136776,136779],{"class":462,"line":531},[460,136777,136778],{"class":1353},"        \"EMIS_Vinci_Robocon_5G\"",[460,136780,136688],{"class":466},[460,136782,136783,136786],{"class":462,"line":537},[460,136784,136785],{"class":470},"          auth",[460,136787,136688],{"class":466},[460,136789,136790,136793,136795,136798],{"class":462,"line":543},[460,136791,136792],{"class":470},"            key-management",[460,136794,1961],{"class":466},[460,136796,136797],{"class":1353},"\"psk\"",[460,136799,19198],{"class":466},[460,136801,136802,136805,136807,136810],{"class":462,"line":549},[460,136803,136804],{"class":470},"            password",[460,136806,1961],{"class":466},[460,136808,136809],{"class":1353},"\"vinci666\"",[460,136811,19198],{"class":466},[460,136813,136814,136817],{"class":462,"line":555},[460,136815,136816],{"class":470},"          networkmanager",[460,136818,136688],{"class":466},[460,136820,136821,136824,136826,136829],{"class":462,"line":560},[460,136822,136823],{"class":470},"            uuid",[460,136825,1961],{"class":466},[460,136827,136828],{"class":1353},"\"6f414fe0-2658-48ff-89ee-c7981b87bc96\"",[460,136830,19198],{"class":466},[460,136832,136833,136836,136838,136841],{"class":462,"line":566},[460,136834,136835],{"class":470},"            name",[460,136837,1961],{"class":466},[460,136839,136840],{"class":1353},"\"EMIS_Vinci_Robocon_5G\"",[460,136842,19198],{"class":466},[460,136844,136845,136848],{"class":462,"line":572},[460,136846,136847],{"class":470},"            passthrough",[460,136849,136688],{"class":466},[460,136851,136852,136855,136857,136860],{"class":462,"line":578},[460,136853,136854],{"class":470},"              wifi-security.auth-alg",[460,136856,1961],{"class":466},[460,136858,136859],{"class":1353},"\"open\"",[460,136861,19198],{"class":466},[460,136863,136864,136867,136869,136872],{"class":462,"line":812},[460,136865,136866],{"class":470},"              ipv6.addr-gen-mode",[460,136868,1961],{"class":466},[460,136870,136871],{"class":1353},"\"default\"",[460,136873,19198],{"class":466},[460,136875,136876,136879,136881,136884],{"class":462,"line":818},[460,136877,136878],{"class":470},"              ipv6.ip6-privacy",[460,136880,1961],{"class":466},[460,136882,136883],{"class":1353},"\"-1\"",[460,136885,19198],{"class":466},[460,136887,136888,136891,136893,136895],{"class":462,"line":824},[460,136889,136890],{"class":470},"              proxy._",[460,136892,1961],{"class":466},[460,136894,6606],{"class":1353},[460,136896,19198],{"class":466},[460,136898,136899,136902],{"class":462,"line":2074},[460,136900,136901],{"class":470},"      networkmanager",[460,136903,136688],{"class":466},[460,136905,136906,136909,136911,136913],{"class":462,"line":2088},[460,136907,136908],{"class":470},"        uuid",[460,136910,1961],{"class":466},[460,136912,136828],{"class":1353},[460,136914,19198],{"class":466},[460,136916,136917,136919,136921],{"class":462,"line":2103},[460,136918,136737],{"class":470},[460,136920,1961],{"class":466},[460,136922,136923],{"class":1353},"\"EMIS_Vinci_Robocon_5G\"\n",[14,136925,136926],{},"将其改为新wifi的名和密码：",[451,136928,136930],{"className":136676,"code":136929,"language":136678,"meta":32,"style":32},"network:\n  version: 2\n  wifis:\n    wlan0:\n      dhcp4: true\n      dhcp6: true\n      access-points:\n        \"EMIS_Vinci_Robocon_5G\":\n          password: \"vinci666\"\n\n",[457,136931,136932,136938,136947,136953,136960,136969,136977,136983,136989],{"__ignoreMap":32},[460,136933,136934,136936],{"class":462,"line":463},[460,136935,136685],{"class":470},[460,136937,20257],{"class":466},[460,136939,136940,136942,136944],{"class":462,"line":476},[460,136941,136693],{"class":470},[460,136943,1961],{"class":466},[460,136945,136946],{"class":900},"2\n",[460,136948,136949,136951],{"class":462,"line":482},[460,136950,136704],{"class":470},[460,136952,20257],{"class":466},[460,136954,136955,136958],{"class":462,"line":488},[460,136956,136957],{"class":470},"    wlan0",[460,136959,20257],{"class":466},[460,136961,136962,136964,136966],{"class":462,"line":494},[460,136963,136749],{"class":470},[460,136965,1961],{"class":466},[460,136967,136968],{"class":900},"true\n",[460,136970,136971,136973,136975],{"class":462,"line":500},[460,136972,136760],{"class":470},[460,136974,1961],{"class":466},[460,136976,136968],{"class":900},[460,136978,136979,136981],{"class":462,"line":506},[460,136980,136771],{"class":470},[460,136982,20257],{"class":466},[460,136984,136985,136987],{"class":462,"line":512},[460,136986,136778],{"class":1353},[460,136988,20257],{"class":466},[460,136990,136991,136994,136996],{"class":462,"line":518},[460,136992,136993],{"class":470},"          password",[460,136995,1961],{"class":466},[460,136997,136998],{"class":1353},"\"vinci666\"\n",[14,137000,137001],{},"工控机开机即可连上网。",[18,137003,137005],{"id":137004},"_72-ssh远程开发","7.2 SSH远程开发",[23,137007,137009],{"id":137008},"_721-环境准备","7.2.1 环境准备",[14,137011,137012],{},[3944,137013,137014],{},"1.硬件准备",[14,137016,137017],{},"首先要有一台工控机（X68小型电脑，专业工控机，树莓派等等）。",[14,137019,137020],{},"控制系统的硬件载体是具有多样性的，常用的多是基于ARM、x86等架构的处理器，比如：PC、工控机、树莓派、NVIDIA Jetson...。不同的处理器都存在一定的优缺点，PC和工控机，处理器性能强大，但是功耗高、体积大、灵活性差，嵌入式系统则反之。对于我们而言，可以根据机器人平台的电气、载重、空间以及用途等诸多要素自主选择合适的控制系统。",[14,137022,137023],{},"无论选用何种处理器，只要是要进行机器人的开发，安装了ROS或者ROS2，那么对于开发人员而言，在使用上，没有任何本质的区别，或者换言之，作为软件工程师，部分场景下无需关注于硬件的选型。",[14,137025,137026],{},[3944,137027,137028],{},"2.设置固定IP",[14,137030,137031],{},"远程连接时，不管使用何种工具，需要根据IP地址定位到被连接的主机，再通过账号和密码登录该主机，因此，我们需要先获取该IP地址。并且每次连接时，都需要使用到IP，为了保证连接的便利性和稳定性，最好将被连接主机的IP地址设置为固定IP，具体操作如下。",[14,137033,137034],{},"1.进入设置界面",[14,137036,137037],{},"启动被连接的主机（启动时需要连接显示器或使用HDMI采集卡，并且配置完SSH远程访问之后，可以不再使用显示器或HDMI采集卡），并进入设置界面。",[14,137039,137040],{},[30,137041],{"alt":32,"src":137042},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-089.png",[14,137044,137045],{},"2.配置所连接的网络",[14,137047,137048],{},[30,137049],{"alt":32,"src":137050},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-090.png",[14,137052,137053],{},"3.设置固定IP",[14,137055,137056],{},"查看当前IP地址。",[14,137058,137059],{},[30,137060],{"alt":32,"src":137061},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-091.png",[14,137063,137064],{},"设置固定IP。",[14,137066,137067],{},[30,137068],{"alt":32,"src":137069},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-092.png",[14,137071,137072],{},"至此，IP配置完毕。",[23,137074,137076],{"id":137075},"_722-环境搭建","7.2.2 环境搭建",[14,137078,137079],{},[3944,137080,42165],{},[14,137082,137083],{},"SSH（Secure Shell）是一种通用的、功能强大的、基于软件的网络安全解决方案。计算机每次向网络发送数据时，SSH都会自动对其进行加密。数据到达目的地时，SSH自动对加密数据进行解密。整个过程都是透明的，使用OpenSSH工具将会增进你的系统安全性。SSH安装容易、使用简单。",[14,137085,137086],{},[3944,137087,137088],{},"实现",[14,137090,137091],{},"SSH实现架构上分为客户端和服务器端两大部分，客户端是数据的发送方，服务端是数据的接收方，当前场景下，我们需要从本地主机发送数据到远程主机，那么本地主机需要安装并启动SSH客户端，而远程主机则需要安装并启动SSH服务端，整个实现具体流程如下：",[103,137093,137094,137097,137100,137103],{},[43,137095,137096],{},"本地主机安装SSH客户端，远程主机安装SSH服务端；",[43,137098,137099],{},"远程主机启动SSH服务；",[43,137101,137102],{},"本地主机登陆远程主机；",[43,137104,137105],{},"实现数据传输。",[14,137107,137108],{},"1.安装SSH客户端与服务端",[14,137110,137111],{},"默认情况下，Ubuntu系统已经安装了SSH客户端，因此只需要在远程主机安装SSH服务端即可，安装命令如下：",[451,137113,137115],{"className":135309,"code":137114,"language":135311,"meta":135312,"style":32}," sudo apt install openssh-server\n",[457,137116,137117],{"__ignoreMap":32},[460,137118,137119],{"class":462,"line":463},[460,137120,137114],{},[14,137122,137123],{},"如果SSH客户端需要自行安装，那么调用如下命令:",[451,137125,137127],{"className":135309,"code":137126,"language":135311,"meta":135312,"style":32},"sudo apt install openssh-client\n",[457,137128,137129],{"__ignoreMap":32},[460,137130,137131],{"class":462,"line":463},[460,137132,137126],{},[14,137134,137135],{},"2.远程主机启动SSH服务",[14,137137,137138],{},"远程主机启动 ssh 服务命令如下：",[451,137140,137142],{"className":135309,"code":137141,"language":135311,"meta":135312,"style":32},"sudo \u002Fetc\u002Finit.d\u002Fssh start\n",[457,137143,137144],{"__ignoreMap":32},[460,137145,137146],{"class":462,"line":463},[460,137147,137141],{},[14,137149,137150],{},"启动后可使用如下命令查看服务是否正常运行：",[451,137152,137154],{"className":135309,"code":137153,"language":135311,"meta":135312,"style":32},"ps -e | grep ssh\n",[457,137155,137156],{"__ignoreMap":32},[460,137157,137158],{"class":462,"line":463},[460,137159,137153],{},[14,137161,137162],{},"如果启动成功，会包含 sshd 程序。",[14,137164,137165],{},"以后需要频繁的使用ssh远程登录，为了简化实现，可以将远程主机的ssh服务设置为开机自启动，命令如下：",[451,137167,137169],{"className":135309,"code":137168,"language":135311,"meta":135312,"style":32},"sudo systemctl enable ssh\n",[457,137170,137171],{"__ignoreMap":32},[460,137172,137173],{"class":462,"line":463},[460,137174,137168],{},[14,137176,137177],{},"3.本地远程登录",[14,137179,137180],{},"登录远程主机可以调用如下命令:",[451,137182,137184],{"className":131789,"code":137183,"language":131791,"meta":32,"style":32},"ssh -X 用户名@ip地址\n",[457,137185,137186],{"__ignoreMap":32},[460,137187,137188,137190,137193],{"class":462,"line":463},[460,137189,136140],{"class":929},[460,137191,137192],{"class":900}," -X",[460,137194,137195],{"class":1353}," 用户名@ip地址\n",[14,137197,137198],{},"然后根据提示，录入登陆密码，即可成功登录。",[14,137200,137201],{},"如果退出，可以调用exit命令：",[451,137203,137205],{"className":135309,"code":137204,"language":135311,"meta":135312,"style":32},"exit\n",[457,137206,137207],{"__ignoreMap":32},[460,137208,137209],{"class":462,"line":463},[460,137210,137204],{},[14,137212,137213],{},[3944,137214,137215],{},"4.实现数据传输",[14,137217,137218],{},"通过SSH在本地主机只需调用相关指令，便可方便的实现与远程主机的数据上传或下载，指令格式如下所示：",[14,137220,137221],{},"上传文件指令格式如下：",[451,137223,137225],{"className":135309,"code":137224,"language":135311,"meta":135312,"style":32},"scp 本地文件路径 账号@ip:路径\n",[457,137226,137227],{"__ignoreMap":32},[460,137228,137229],{"class":462,"line":463},[460,137230,137224],{},[14,137232,137233],{},"上传文件夹指令格式如下：",[451,137235,137237],{"className":135309,"code":137236,"language":135311,"meta":135312,"style":32},"scp -r 本地文件夹路径 账号@ip:路径\n",[457,137238,137239],{"__ignoreMap":32},[460,137240,137241],{"class":462,"line":463},[460,137242,137236],{},[14,137244,137245],{},"下载文件指令格式如下：",[451,137247,137249],{"className":135309,"code":137248,"language":135311,"meta":135312,"style":32},"scp 账号@ip:路径 本地文件夹路径\n",[457,137250,137251],{"__ignoreMap":32},[460,137252,137253],{"class":462,"line":463},[460,137254,137248],{},[14,137256,137257],{},"下载文件夹指令格式如下：",[451,137259,137261],{"className":135309,"code":137260,"language":135311,"meta":135312,"style":32},"scp -r 账号@ip:路径 本地文件夹路径\n",[457,137262,137263],{"__ignoreMap":32},[460,137264,137265],{"class":462,"line":463},[460,137266,137260],{},[14,137268,137269],{},[3944,137270,137271],{},"优化",[14,137273,137274],{},"每次远程登录时，都需要输入密码，使用不方便，可以借助密钥简化登录过程，实现免密登录，提高操作效率。实现思想是：生成一对公钥私钥，私钥存储在本地，公钥上传至服务器，每次登录时，本地直接上传私钥到服务器，服务器有匹配的公钥就认为是合法用户，直接创建SSH连接即可。具体实现步骤只有两步：",[103,137276,137277,137280],{},[43,137278,137279],{},"本地生成密钥对；",[43,137281,137282],{},"将公钥上传至远程主机。",[14,137284,137285],{},[3944,137286,137287],{},"1.生成密钥对",[14,137289,137290],{},"本地客户端生成公私钥：（一路回车默认即可）",[451,137292,137294],{"className":135309,"code":137293,"language":135311,"meta":135312,"style":32},"ssh-keygen\n",[457,137295,137296],{"__ignoreMap":32},[460,137297,137298],{"class":462,"line":463},[460,137299,137293],{},[14,137301,137302],{},"上面这个命令会在用户目录.ssh文件夹下创建公私钥：",[103,137304,137305,137308],{},[43,137306,137307],{},"id_rsa （私钥）；",[43,137309,137310],{},"id_rsa.pub (公钥)。",[14,137312,137313],{},[3944,137314,137315],{},"2.公钥上传",[14,137317,137318],{},"上传指令如下：",[451,137320,137322],{"className":135309,"code":137321,"language":135311,"meta":135312,"style":32},"ssh-copy-id -i ~\u002F.ssh\u002Fid_rsa.pub 账号@ip\n",[457,137323,137324],{"__ignoreMap":32},[460,137325,137326],{"class":462,"line":463},[460,137327,137321],{},[14,137329,137330],{},"上面这条指令是将本地公钥上传到远程主机的ssh目录下，该目录下有文件authorized_keys保存了公钥内容。",[14,137332,137333],{},"以后再远程登录就无需录入密码了。",[23,137335,137337],{"id":137336},"_723-使用vscode优化","7.2.3 使用VScode优化",[14,137339,137340],{},"上一节，我们介绍了ssh远程连接的使用，但是如果只是纯粹使用ssh也存在一些不足，比如：编辑文件内容时，需要使用vi编辑器，且在一个终端内，无法同时编辑多个文件。本节将介绍一更为实用的功能——VSCode结合插件实现远程开发，这使我们可以以图形化的方式实现远程开发，比ssh的使用更方便快捷，可以大大的提高程序开发效率。",[14,137342,137343],{},[3944,137344,137345],{},"1.准备工作",[14,137347,137348],{},"VScode远程开发依赖于ssh，请首先按照上一节内容配置ssh远程连接。",[14,137350,137351],{},[3944,137352,137353],{},"2.为VScode安装远程开发插件",[14,137355,137356,137357,137360,137361,137364,137365,44794],{},"启动VScode，首先点击侧边栏的扩展按钮，然后在",[457,137358,137359],{},"扩展：商店","的搜索栏输入",[457,137362,137363],{},"Remote Development","并点击同名插件，最后在右侧显示区中点击",[457,137366,137367],{},"安装",[14,137369,137370],{},[30,137371],{"alt":32,"src":137372},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-093.png",[14,137374,137375],{},[3944,137376,137377],{},"3.配置远程连接",[14,137379,137380,137381,137384,137385,137388],{},"步骤1：使用快捷键",[457,137382,137383],{},"ctrl + shift + p","打开命令输入窗口，并输入",[457,137386,137387],{},"Remote-SSH:Connect to Host...","，弹出列表中选择与之同名的选项。",[14,137390,137391],{},[30,137392],{"alt":32,"src":137393},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-094.png",[14,137395,137396,137397,44794],{},"步骤2：步骤1完成将弹出一个新的命令窗口如下，选择下拉列表中的 ",[457,137398,137399],{},"Add New SSH Host",[14,137401,137402],{},[30,137403],{"alt":32,"src":137404},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-095.png",[14,137406,137407,137408,137411,137412,137415,137416,137419],{},"步骤3：步骤2完成又将弹出一个新的命令窗口，在其中输入：",[457,137409,137410],{},"ssh +X ubuntu@192.168.43.164","，其中，",[457,137413,137414],{},"ubuntu","需要替换为你的登录用户名，",[457,137417,137418],{},"192.18.43.164"," 则替换为被远程连接主机的ip地址。",[14,137421,137422],{},[30,137423],{"alt":32,"src":137424},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-096.png",[14,137426,137427],{},"步骤4：选择步骤3完成后的弹窗列表中的第一个选项(或直接回车)，即可完成配置，配置成功后会有提示信息。",[14,137429,137430],{},[30,137431],{"alt":32,"src":137432},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-097.png",[14,137434,137435],{},[30,137436],{"alt":32,"src":137437},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-098.png",[14,137439,137440],{},[3944,137441,137442],{},"4.使用",[14,137444,137445,137446,137384,137448,137450],{},"步骤1：继续使用快捷键",[457,137447,137383],{},[457,137449,137387],{},"，此时列表中将显示步骤3中配置的ip地址，直接选择，选择后，VScode将打开一个新的窗口。",[14,137452,137453],{},[30,137454],{"alt":32,"src":137455},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-099.png",[14,137457,137458,137459,137462],{},"或者，也可以点击侧边栏的",[457,137460,137461],{},"远程资源管理器","，在弹出的服务器列表中选择要连接的服务器，并右击，选择在本窗口或新窗口中实现远程连接。",[14,137464,137465],{},[30,137466],{"alt":32,"src":137467},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-100.png",[14,137469,137470,137471,137474,137475,137478],{},"步骤2：选择菜单栏的",[457,137472,137473],{},"文件","下的",[457,137476,137477],{},"打开文件夹","，在弹窗列表中选择需要打开的文件夹并点击确定即可。",[14,137480,137481],{},[30,137482],{"alt":32,"src":137483},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-101.png",[14,137485,137486],{},"最终，我们就可以像操作本地文件一样实现远程开发了。",[18,137488,137490],{"id":137489},"_73-远程桌面","7.3 远程桌面",[14,137492,137493],{},"因为用X11转发效率太低太低，所以还是要选用远程访问桌面的形式来看Rviz2和Gazebo等等（如果有需求的话）",[14,137495,137496],{},"我们选择使用VNC来看。",[103,137498,137499],{},[43,137500,137501],{},"安装VNC服务器：",[14,137503,137504],{},"这里以TigerVNC为例进行安装：",[451,137506,137508],{"className":131789,"code":137507,"language":131791,"meta":32,"style":32},"sudo apt install tigervnc-standalone-server tigervnc-common\n",[457,137509,137510],{"__ignoreMap":32},[460,137511,137512,137514,137516,137518,137521],{"class":462,"line":463},[460,137513,40989],{"class":929},[460,137515,131810],{"class":1353},[460,137517,40247],{"class":1353},[460,137519,137520],{"class":1353}," tigervnc-standalone-server",[460,137522,137523],{"class":1353}," tigervnc-common\n",[103,137525,137526],{"start":476},[43,137527,137528],{},"设置VNC密码：",[14,137530,137531],{},"为VNC用户设置密码，运行以下命令：",[451,137533,137535],{"className":131789,"code":137534,"language":131791,"meta":32,"style":32},"vncpasswd\n",[457,137536,137537],{"__ignoreMap":32},[460,137538,137539],{"class":462,"line":463},[460,137540,137534],{"class":929},[103,137542,137543],{"start":482},[43,137544,137545],{},"配置VNC启动脚本:",[14,137547,137548],{},"创建VNC配置文件，在用户家目录内的.vnc文件夹中创建启动文件：",[451,137550,137552],{"className":131789,"code":137551,"language":131791,"meta":32,"style":32},"mkdir -p ~\u002F.vnc\nnano ~\u002F.vnc\u002Fxstartup\n",[457,137553,137554,137563],{"__ignoreMap":32},[460,137555,137556,137558,137560],{"class":462,"line":463},[460,137557,115759],{"class":929},[460,137559,45625],{"class":900},[460,137561,137562],{"class":1353}," ~\u002F.vnc\n",[460,137564,137565,137568],{"class":462,"line":476},[460,137566,137567],{"class":929},"nano",[460,137569,137570],{"class":1353}," ~\u002F.vnc\u002Fxstartup\n",[14,137572,137573],{},"在打开的编辑器里面输入以下内容（以GNOME为例）：",[451,137575,137577],{"className":131789,"code":137576,"language":131791,"meta":32,"style":32},"#!\u002Fbin\u002Fsh\nunset SESSION_MANAGER\nunset DBUS_SESSION_BUS_ADDRESS\ngnome-session\n",[457,137578,137579,137584,137592,137599],{"__ignoreMap":32},[460,137580,137581],{"class":462,"line":463},[460,137582,137583],{"class":942},"#!\u002Fbin\u002Fsh\n",[460,137585,137586,137589],{"class":462,"line":476},[460,137587,137588],{"class":900},"unset",[460,137590,137591],{"class":1353}," SESSION_MANAGER\n",[460,137593,137594,137596],{"class":462,"line":482},[460,137595,137588],{"class":900},[460,137597,137598],{"class":1353}," DBUS_SESSION_BUS_ADDRESS\n",[460,137600,137601],{"class":462,"line":488},[460,137602,137603],{"class":929},"gnome-session\n",[14,137605,137606],{},"保存并退出（在nano中按Ctrl + O保存，然后按Ctrl + X退出）。",[103,137608,137609],{"start":488},[43,137610,137611],{},"给予执行权限：",[14,137613,137614],{},"为xstartup文件设置执行权限：",[451,137616,137618],{"className":131789,"code":137617,"language":131791,"meta":32,"style":32},"chmod +x ~\u002F.vnc\u002Fxstartup\n",[457,137619,137620],{"__ignoreMap":32},[460,137621,137622,137624,137627],{"class":462,"line":463},[460,137623,41024],{"class":929},[460,137625,137626],{"class":1353}," +x",[460,137628,137570],{"class":1353},[103,137630,137631],{"start":494},[43,137632,137633],{},"启动VNC服务器：",[451,137635,137637],{"className":131789,"code":137636,"language":131791,"meta":32,"style":32},"vncserver -geometry 1920x1080 -localhost=0\n",[457,137638,137639],{"__ignoreMap":32},[460,137640,137641,137644,137647,137650],{"class":462,"line":463},[460,137642,137643],{"class":929},"vncserver",[460,137645,137646],{"class":900}," -geometry",[460,137648,137649],{"class":1353}," 1920x1080",[460,137651,137652],{"class":900}," -localhost=0\n",[14,137654,137655],{},"geometry 选项指定窗口大小，localhost 选项设为 0 以开放连接。(设为1是只允许本地连接)",[14,137657,137658],{},"你将看到类似于:1的输出，这表示VNC会话的显示编号。例如，如果输出为:1，则VNC监听的端口为5901（5900 + 显示编号）。",[103,137660,137661],{"start":500},[43,137662,137663],{},"查看已开启的VNC服务器：",[451,137665,137667],{"className":131789,"code":137666,"language":131791,"meta":32,"style":32},"vncserver -list\n",[457,137668,137669],{"__ignoreMap":32},[460,137670,137671,137673],{"class":462,"line":463},[460,137672,137643],{"class":929},[460,137674,137675],{"class":900}," -list\n",[14,137677,137678],{},[30,137679],{"alt":32,"src":137680},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-102.png",[103,137682,137683],{"start":506},[43,137684,137685],{},"连接到VNC服务器：",[14,137687,137688],{},"使用VNC客户端（如vncviewer）连接到VNC服务器，输入你的服务器IP和端口。例如，如果服务器IP为192.168.31.10，且显示编号为1，你应该连接到192.168.31.10:1，或者直接输入192.168.31.10:5901。",[103,137690,137691],{"start":512},[43,137692,137693],{},"停止VNC服务器：",[14,137695,137696],{},"如果需要停止VNC服务器，可以使用以下命令：",[451,137698,137700],{"className":131789,"code":137699,"language":131791,"meta":32,"style":32},"vncserver -kill :1\n",[457,137701,137702],{"__ignoreMap":32},[460,137703,137704,137706,137709],{"class":462,"line":463},[460,137705,137643],{"class":929},[460,137707,137708],{"class":900}," -kill",[460,137710,137711],{"class":1353}," :1\n",[14,137713,137714],{},"将:1替换为你实际使用的显示编号。",[14,137716,137717],{},[30,137718],{"alt":32,"src":137719},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-103.png",[14,137721,137722],{},[30,137723],{"alt":32,"src":137724},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-104.png",[18,137726,137728],{"id":137727},"_74-usb端口设置","7.4 USB端口设置",[14,137730,137731],{},[3944,137732,137733],{},"首先先配置好权限",[451,137735,137737],{"className":131789,"code":137736,"language":131791,"meta":32,"style":32},"# 将用户权限提高\nsudo usermod -aG dialout $USER\nnewgrp dialout\n# 查看下面命令是否输出dialout（若输出才正常）\ngroups\n",[457,137738,137739,137744,137757,137764,137769],{"__ignoreMap":32},[460,137740,137741],{"class":462,"line":463},[460,137742,137743],{"class":942},"# 将用户权限提高\n",[460,137745,137746,137748,137750,137752,137755],{"class":462,"line":476},[460,137747,40989],{"class":929},[460,137749,42985],{"class":1353},[460,137751,42988],{"class":900},[460,137753,137754],{"class":1353}," dialout",[460,137756,42993],{"class":466},[460,137758,137759,137761],{"class":462,"line":482},[460,137760,43012],{"class":929},[460,137762,137763],{"class":1353}," dialout\n",[460,137765,137766],{"class":462,"line":488},[460,137767,137768],{"class":942},"# 查看下面命令是否输出dialout（若输出才正常）\n",[460,137770,137771],{"class":462,"line":494},[460,137772,137773],{"class":929},"groups\n",[14,137775,137776],{},"因为我们插拔USB设备，他的端口号可能会一直变，所以我们要给他的tty起一个固定的别名。",[23,137778,137780],{"id":137779},"_741-根据usb设备绑定端口多个不同设备","7.4.1 根据USB设备绑定端口(多个不同设备)",[14,137782,137783,137786],{},[3944,137784,137785],{},"需求："," Ubuntu系统中现接入雷达和智能小车，请为二者绑定端口。",[14,137788,137789,137792],{},[3944,137790,137791],{},"实现原理："," 可以通过USB设备本身的“标识”实现端口绑定。",[14,137794,137795],{},[3944,137796,137797],{},"流程如下：",[14,137799,137800],{},"（1）.查找设备idVendor和idProduct",[14,137802,137803,137804,137807],{},"接入两个USB设备，在终端调用指令",[457,137805,137806],{},"lsusb","查看显示系统中以及连接到系统的USB设备信息。",[14,137809,137810],{},[30,137811],{"alt":32,"src":137812},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-105.png",[14,137814,137815,137816,137819],{},"如上图所示，红色方框内数据为USB设备，ID后面的",[457,137817,137818],{},"1a86:7523","分别为USB的idVendor和idProduct（两个参数之间使用”：“分隔）。",[14,137821,137822],{},"另外：可以通过重新插拔比较的方式确定哪些数据对应接入的USB设备。",[14,137824,137825],{},"（2）.编写映射规则",[14,137827,137828,137829,137832],{},"在",[457,137830,137831],{},"\u002Fetc\u002Fudev\u002Frules.d","目录下新建文件xxx.rules（文件名自定义）",[451,137834,137836],{"className":131789,"code":137835,"language":131791,"meta":32,"style":32},"sudo vim \u002Fetc\u002Fudev\u002Frules.d\u002Fxxx.rules\n",[457,137837,137838],{"__ignoreMap":32},[460,137839,137840,137842,137844],{"class":462,"line":463},[460,137841,40989],{"class":929},[460,137843,133076],{"class":1353},[460,137845,137846],{"class":1353}," \u002Fetc\u002Fudev\u002Frules.d\u002Fxxx.rules\n",[14,137848,137849],{},"输入如下内容：",[451,137851,137853],{"className":131789,"code":137852,"language":131791,"meta":32,"style":32},"KERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea60\", MODE:=\"0777\", SYMLINK+=\"mylidar\"\nKERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", MODE:=\"0777\", SYMLINK+=\"mycar\"\n",[457,137854,137855,137885],{"__ignoreMap":32},[460,137856,137857,137860,137862,137865,137868,137871,137874,137876,137879,137882],{"class":462,"line":463},[460,137858,137859],{"class":466},"KERNEL",[460,137861,894],{"class":887},[460,137863,137864],{"class":1353},"=\"ttyUSB*\",",[460,137866,137867],{"class":929}," ATTRS",[460,137869,137870],{"class":1353},"{idVendor}==",[460,137872,137873],{"class":929},"\"10c4\"",[460,137875,3986],{"class":929},[460,137877,137878],{"class":1353}," ATTRS{idProduct}==\"ea60\",",[460,137880,137881],{"class":1353}," MODE:=\"0777\",",[460,137883,137884],{"class":1353}," SYMLINK+=\"mylidar\"\n",[460,137886,137887,137889,137891,137893,137895,137897,137900,137902,137905,137907],{"class":462,"line":476},[460,137888,137859],{"class":466},[460,137890,894],{"class":887},[460,137892,137864],{"class":1353},[460,137894,137867],{"class":929},[460,137896,137870],{"class":1353},[460,137898,137899],{"class":929},"\"1a86\"",[460,137901,3986],{"class":929},[460,137903,137904],{"class":1353}," ATTRS{idProduct}==\"7523\",",[460,137906,137881],{"class":1353},[460,137908,137909],{"class":1353}," SYMLINK+=\"mycar\"\n",[14,137911,137912],{},"代码解释：",[40,137914,137915,137918,137921,137924],{},[43,137916,137917],{},"KERNEL是内核固定名称，这里统一是“ttyUSB*”；",[43,137919,137920],{},"MODE是节点权限，通常改为“0777”，表示可读写可运行；",[43,137922,137923],{},"SYMLINK是符号连接，即绑定的别名；",[43,137925,137926],{},"ATTRS是设备厂商的唯一标识，idVendor和idProduct正好组成上面通过lsusb查找到的设备ID。",[14,137928,137929,137930,137933,137936],{},"***小提示：***",[39966,137931,137932],{},"一般的USB设备供应商都会提供类似的脚本文件，对于调用者而言，直接复制该文件到",[457,137934,137935],{},"\u002Fetc\u002Fudev\u002Frule.d",[39966,137937,137938],{},"目录即可。",[14,137940,137941],{},"表格 还在加载中，请等待加载完成后再尝试复制",[14,137943,137944],{},"（3）.使规则生效",[14,137946,137947],{},"在终端下输入如下指令：",[451,137949,137951],{"className":131789,"code":137950,"language":131791,"meta":32,"style":32},"# Ubuntu用下方命令\nsudo service udev reload\nsudo service udev restart\n\n#Fedora用下方命令\nsudo udevadm control --reload\nsudo udevadm trigger\n",[457,137952,137953,137958,137970,137981,137985,137990,138003],{"__ignoreMap":32},[460,137954,137955],{"class":462,"line":463},[460,137956,137957],{"class":942},"# Ubuntu用下方命令\n",[460,137959,137960,137962,137964,137967],{"class":462,"line":476},[460,137961,40989],{"class":929},[460,137963,134541],{"class":1353},[460,137965,137966],{"class":1353}," udev",[460,137968,137969],{"class":1353}," reload\n",[460,137971,137972,137974,137976,137978],{"class":462,"line":482},[460,137973,40989],{"class":929},[460,137975,134541],{"class":1353},[460,137977,137966],{"class":1353},[460,137979,137980],{"class":1353}," restart\n",[460,137982,137983],{"class":462,"line":488},[460,137984,522],{"emptyLinePlaceholder":521},[460,137986,137987],{"class":462,"line":494},[460,137988,137989],{"class":942},"#Fedora用下方命令\n",[460,137991,137992,137994,137997,138000],{"class":462,"line":500},[460,137993,40989],{"class":929},[460,137995,137996],{"class":1353}," udevadm",[460,137998,137999],{"class":1353}," control",[460,138001,138002],{"class":900}," --reload\n",[460,138004,138005,138007,138009],{"class":462,"line":506},[460,138006,40989],{"class":929},[460,138008,137996],{"class":1353},[460,138010,138011],{"class":1353}," trigger\n",[14,138013,138014],{},"再重新插拔设备即可。",[14,138016,138017],{},"（4）.测试",[14,138019,138020],{},"终端下输入如下指令",[451,138022,138024],{"className":131789,"code":138023,"language":131791,"meta":32,"style":32},"ll \u002Fdev | grep ttyUSB\n",[457,138025,138026],{"__ignoreMap":32},[460,138027,138028,138031,138034,138036,138038],{"class":462,"line":463},[460,138029,138030],{"class":929},"ll",[460,138032,138033],{"class":1353}," \u002Fdev",[460,138035,41522],{"class":887},[460,138037,46645],{"class":929},[460,138039,138040],{"class":1353}," ttyUSB\n",[14,138042,138043],{},"运行结果如下：",[14,138045,138046],{},[30,138047],{"alt":32,"src":138048},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-106.png",[14,138050,138051,138052,138055],{},"也可以多次插拔USB设备，会发现设备端口",[457,138053,138054],{},"ttyUSBn","中的n编号会变动，但是别名是始终可以指向对应的USB设备的。至此，就可以使用别名来关联所需使用的USB设备了。",[14,138057,138058],{},[3944,138059,132457],{},[14,138061,138062],{},"上述实现也存在一定的局限性，当Ubuntu接入两台或多台相同型号的USB设备时，由于设备ID是一样的，该种实现方式只会对其中的一台设备生效，这种情况下，就需要通过第二种策略来实现端口的绑定了。",[23,138064,138066],{"id":138065},"_742-根据主机硬件绑定端口多个相同设备","7.4.2 根据主机硬件绑定端口（多个相同设备)",[14,138068,138069,138071],{},[3944,138070,137785],{}," 无人车中现接入一前一后两台相同型号的雷达，请为二者绑定端口。",[14,138073,138074,138076],{},[3944,138075,137791],{}," USB设备所连接主机的USB接口也是有其“标识”的，可以通过这个标识实现端口绑定。",[14,138078,138079],{},[3944,138080,137797],{},[14,138082,138083],{},"（1）.查看所连接的主机USB接口的KERNELS",[14,138085,138086],{},"调用如下指令查看第一台雷达的USB信息：",[451,138088,138090],{"className":131789,"code":138089,"language":131791,"meta":32,"style":32},"udevadm info --attribute-walk --name=\u002Fdev\u002FttyUSB0 | grep KERNELS\nudevadm info --attribute-walk --name=\u002Fdev\u002FttyACM0 | grep KERNELS\n",[457,138091,138092,138112],{"__ignoreMap":32},[460,138093,138094,138097,138099,138102,138105,138107,138109],{"class":462,"line":463},[460,138095,138096],{"class":929},"udevadm",[460,138098,85976],{"class":1353},[460,138100,138101],{"class":900}," --attribute-walk",[460,138103,138104],{"class":900}," --name=\u002Fdev\u002FttyUSB0",[460,138106,41522],{"class":887},[460,138108,46645],{"class":929},[460,138110,138111],{"class":1353}," KERNELS\n",[460,138113,138114,138116,138118,138120,138123,138125,138127],{"class":462,"line":476},[460,138115,138096],{"class":929},[460,138117,85976],{"class":1353},[460,138119,138101],{"class":900},[460,138121,138122],{"class":900}," --name=\u002Fdev\u002FttyACM0",[460,138124,41522],{"class":887},[460,138126,46645],{"class":929},[460,138128,138111],{"class":1353},[14,138130,138131],{},[30,138132],{"alt":32,"src":138133},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-107.png",[14,138135,138136],{},"调用如下指令查看第二台雷达的USB信息：",[451,138138,138140],{"className":131789,"code":138139,"language":131791,"meta":32,"style":32},"udevadm info --attribute-walk --name=\u002Fdev\u002FttyUSB1 | grep KERNELS\n",[457,138141,138142],{"__ignoreMap":32},[460,138143,138144,138146,138148,138150,138153,138155,138157],{"class":462,"line":463},[460,138145,138096],{"class":929},[460,138147,85976],{"class":1353},[460,138149,138101],{"class":900},[460,138151,138152],{"class":900}," --name=\u002Fdev\u002FttyUSB1",[460,138154,41522],{"class":887},[460,138156,46645],{"class":929},[460,138158,138111],{"class":1353},[14,138160,138161,138162,138165,138166,138169,138170,138173],{},"运行结果相比较不同的KERNELS，第一台雷达端口地址为",[457,138163,138164],{},"KERNELS==1-1.3:1.0","，第二个雷达端口地址为",[457,138167,138168],{},"KERNELS==1-1.4:1.0","。可以使用此数据作为不同端口的“",[3944,138171,138172],{},"唯一性标识","”。",[14,138175,137825],{},[14,138177,137828,138178,138180],{},[457,138179,137831],{},"目录下新建文件xxx.rules（文件名自定义），输入如下内容：",[451,138182,138183],{"className":131789,"code":137835,"language":131791,"meta":32,"style":32},[457,138184,138185],{"__ignoreMap":32},[460,138186,138187,138189,138191],{"class":462,"line":463},[460,138188,40989],{"class":929},[460,138190,133076],{"class":1353},[460,138192,137846],{"class":1353},[451,138194,138196],{"className":131789,"code":138195,"language":131791,"meta":32,"style":32},"KERNEL==\"ttyUSB*\", KERNELS==\"1-1.3:1.0\", MODE:=\"0777\", SYMLINK+=\"rplidar_front\"\nKERNEL==\"ttyUSB*\", KERNELS==\"1-1.4:1.0\", MODE:=\"0777\", SYMLINK+=\"rplidar_back\"\n",[457,138197,138198,138227],{"__ignoreMap":32},[460,138199,138200,138202,138204,138206,138209,138211,138214,138217,138219,138222,138224],{"class":462,"line":463},[460,138201,137859],{"class":466},[460,138203,894],{"class":887},[460,138205,137864],{"class":1353},[460,138207,138208],{"class":466}," KERNELS",[460,138210,894],{"class":887},[460,138212,138213],{"class":1353},"=\"1-1.3:1.0\",",[460,138215,138216],{"class":929}," MODE:",[460,138218,894],{"class":1353},[460,138220,138221],{"class":929},"\"0777\"",[460,138223,3986],{"class":929},[460,138225,138226],{"class":1353}," SYMLINK+=\"rplidar_front\"\n",[460,138228,138229,138231,138233,138235,138237,138239,138242,138244,138246,138248,138250],{"class":462,"line":476},[460,138230,137859],{"class":466},[460,138232,894],{"class":887},[460,138234,137864],{"class":1353},[460,138236,138208],{"class":466},[460,138238,894],{"class":887},[460,138240,138241],{"class":1353},"=\"1-1.4:1.0\",",[460,138243,138216],{"class":929},[460,138245,894],{"class":1353},[460,138247,138221],{"class":929},[460,138249,3986],{"class":929},[460,138251,138252],{"class":1353}," SYMLINK+=\"rplidar_back\"\n",[14,138254,137944],{},[14,138256,137947],{},[451,138258,138259],{"className":131789,"code":137950,"language":131791,"meta":32,"style":32},[457,138260,138261,138265,138275,138285,138289,138293,138303],{"__ignoreMap":32},[460,138262,138263],{"class":462,"line":463},[460,138264,137957],{"class":942},[460,138266,138267,138269,138271,138273],{"class":462,"line":476},[460,138268,40989],{"class":929},[460,138270,134541],{"class":1353},[460,138272,137966],{"class":1353},[460,138274,137969],{"class":1353},[460,138276,138277,138279,138281,138283],{"class":462,"line":482},[460,138278,40989],{"class":929},[460,138280,134541],{"class":1353},[460,138282,137966],{"class":1353},[460,138284,137980],{"class":1353},[460,138286,138287],{"class":462,"line":488},[460,138288,522],{"emptyLinePlaceholder":521},[460,138290,138291],{"class":462,"line":494},[460,138292,137989],{"class":942},[460,138294,138295,138297,138299,138301],{"class":462,"line":500},[460,138296,40989],{"class":929},[460,138298,137996],{"class":1353},[460,138300,137999],{"class":1353},[460,138302,138002],{"class":900},[460,138304,138305,138307,138309],{"class":462,"line":506},[460,138306,40989],{"class":929},[460,138308,137996],{"class":1353},[460,138310,138011],{"class":1353},[14,138312,138014],{},[14,138314,138017],{},[14,138316,138020,138317,138320],{},[457,138318,138319],{},"ll \u002Fdev | grep ttyUSB","，运行结果如下：",[14,138322,138323],{},[30,138324],{"alt":32,"src":138325},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-108.png",[14,138327,138328],{},"至此，就可以使用别名来关联所需使用的USB设备了。",[14,138330,138331,138333],{},[3944,138332,132457],{}," USB设备必须连接在主机的指定端口上，否则，会导致端口绑定失败，或产生逻辑错误。(而且增加新设备可能会导致端口改变)",[23,138335,138337],{"id":138336},"_743-根据其他属性绑定端口","7.4.3 根据其他属性绑定端口",[14,138339,138340],{},"（1）.查看所连接的主机USB接口的信息",[451,138342,138344],{"className":131789,"code":138343,"language":131791,"meta":32,"style":32},"udevadm info -a -p $(udevadm info -q path -n \u002Fdev\u002FttyACM0)\nudevadm info -a -p $(udevadm info -q path -n \u002Fdev\u002FttyUSB0)\n",[457,138345,138346,138376],{"__ignoreMap":32},[460,138347,138348,138350,138352,138355,138357,138359,138361,138363,138366,138369,138371,138374],{"class":462,"line":463},[460,138349,138096],{"class":929},[460,138351,85976],{"class":1353},[460,138353,138354],{"class":900}," -a",[460,138356,45625],{"class":900},[460,138358,44831],{"class":466},[460,138360,138096],{"class":929},[460,138362,85976],{"class":1353},[460,138364,138365],{"class":900}," -q",[460,138367,138368],{"class":1353}," path",[460,138370,41528],{"class":900},[460,138372,138373],{"class":1353}," \u002Fdev\u002FttyACM0",[460,138375,3754],{"class":466},[460,138377,138378,138380,138382,138384,138386,138388,138390,138392,138394,138396,138398,138401],{"class":462,"line":476},[460,138379,138096],{"class":929},[460,138381,85976],{"class":1353},[460,138383,138354],{"class":900},[460,138385,45625],{"class":900},[460,138387,44831],{"class":466},[460,138389,138096],{"class":929},[460,138391,85976],{"class":1353},[460,138393,138365],{"class":900},[460,138395,138368],{"class":1353},[460,138397,41528],{"class":900},[460,138399,138400],{"class":1353}," \u002Fdev\u002FttyUSB0",[460,138402,3754],{"class":466},[14,138404,138405],{},[30,138406],{"alt":32,"src":138407},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-109.png",[14,138409,138410],{},"这些数据都是不会变的，所以可以拿这些数据来做标识",[14,138412,137825],{},[14,138414,137828,138415,138180],{},[457,138416,137831],{},[451,138418,138419],{"className":131789,"code":137835,"language":131791,"meta":32,"style":32},[457,138420,138421],{"__ignoreMap":32},[460,138422,138423,138425,138427],{"class":462,"line":463},[460,138424,40989],{"class":929},[460,138426,133076],{"class":1353},[460,138428,137846],{"class":1353},[451,138430,138432],{"className":131789,"code":138431,"language":131791,"meta":32,"style":32},"KERNEL==\"ttyACM*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"55d4\", ATTRS{serial}==\"0001\", MODE:=\"0777\", SYMLINK+=\"ttyACM_MCU\"\nKERNEL==\"ttyACM*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"55d4\", ATTRS{serial}==\"0002\", MODE:=\"0777\", SYMLINK+=\"ttyACM_Lidar\"\nKERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", MODE:=\"0777\", SYMLINK+=\"ttyUSB_IMU\"\n",[457,138433,138434,138462,138488],{"__ignoreMap":32},[460,138435,138436,138438,138440,138443,138445,138447,138449,138451,138454,138457,138459],{"class":462,"line":463},[460,138437,137859],{"class":466},[460,138439,894],{"class":887},[460,138441,138442],{"class":1353},"=\"ttyACM*\",",[460,138444,137867],{"class":929},[460,138446,137870],{"class":1353},[460,138448,137899],{"class":929},[460,138450,3986],{"class":929},[460,138452,138453],{"class":1353}," ATTRS{idProduct}==\"55d4\",",[460,138455,138456],{"class":1353}," ATTRS{serial}==\"0001\",",[460,138458,137881],{"class":1353},[460,138460,138461],{"class":1353}," SYMLINK+=\"ttyACM_MCU\"\n",[460,138463,138464,138466,138468,138470,138472,138474,138476,138478,138480,138483,138485],{"class":462,"line":476},[460,138465,137859],{"class":466},[460,138467,894],{"class":887},[460,138469,138442],{"class":1353},[460,138471,137867],{"class":929},[460,138473,137870],{"class":1353},[460,138475,137899],{"class":929},[460,138477,3986],{"class":929},[460,138479,138453],{"class":1353},[460,138481,138482],{"class":1353}," ATTRS{serial}==\"0002\",",[460,138484,137881],{"class":1353},[460,138486,138487],{"class":1353}," SYMLINK+=\"ttyACM_Lidar\"\n",[460,138489,138490,138492,138494,138496,138498,138500,138502,138504,138506,138508],{"class":462,"line":482},[460,138491,137859],{"class":466},[460,138493,894],{"class":887},[460,138495,137864],{"class":1353},[460,138497,137867],{"class":929},[460,138499,137870],{"class":1353},[460,138501,137899],{"class":929},[460,138503,3986],{"class":929},[460,138505,137904],{"class":1353},[460,138507,137881],{"class":1353},[460,138509,138510],{"class":1353}," SYMLINK+=\"ttyUSB_IMU\"\n",[14,138512,137944],{},[14,138514,137947],{},[451,138516,138517],{"className":131789,"code":137950,"language":131791,"meta":32,"style":32},[457,138518,138519,138523,138533,138543,138547,138551,138561],{"__ignoreMap":32},[460,138520,138521],{"class":462,"line":463},[460,138522,137957],{"class":942},[460,138524,138525,138527,138529,138531],{"class":462,"line":476},[460,138526,40989],{"class":929},[460,138528,134541],{"class":1353},[460,138530,137966],{"class":1353},[460,138532,137969],{"class":1353},[460,138534,138535,138537,138539,138541],{"class":462,"line":482},[460,138536,40989],{"class":929},[460,138538,134541],{"class":1353},[460,138540,137966],{"class":1353},[460,138542,137980],{"class":1353},[460,138544,138545],{"class":462,"line":488},[460,138546,522],{"emptyLinePlaceholder":521},[460,138548,138549],{"class":462,"line":494},[460,138550,137989],{"class":942},[460,138552,138553,138555,138557,138559],{"class":462,"line":500},[460,138554,40989],{"class":929},[460,138556,137996],{"class":1353},[460,138558,137999],{"class":1353},[460,138560,138002],{"class":900},[460,138562,138563,138565,138567],{"class":462,"line":506},[460,138564,40989],{"class":929},[460,138566,137996],{"class":1353},[460,138568,138011],{"class":1353},[14,138570,138571,138572],{},"再重新插拔设备即可，或者 ",[3944,138573,138574],{},"直接重启系统。",[14,138576,138017],{},[14,138578,138020,138579,138320],{},[457,138580,138319],{},[14,138582,138583],{},[30,138584],{"alt":32,"src":138585},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-110.png",[14,138587,138328],{},[14,138589,138590,138592],{},[3944,138591,132457],{}," 一些设备可能没有串口号等。",[23,138594,138596],{"id":138595},"_744-其他注意事项","7.4.4 其他注意事项",[14,138598,138599,138600,138602,138603,138606,138607,34827,138610,138613,138614,138616],{},"并非所有的USB设备端口号都是",[457,138601,138054],{},"的格式，比如Arduino的端口号可能是",[457,138604,138605],{},"ttyACMn","，而对于USB摄像头而言，一台设备则对应两个端口号，分别是",[457,138608,138609],{},"videon",[457,138611,138612],{},"video(n+1)","，并且启用摄像头设备一般使用的是",[457,138615,138609],{},"端口，绑定时需要关联的也是该接口。",[14,138618,138619,138620,138623,138624,138627,138628,138630,138631,138634,138635,138638,138639,138642,138643,138642,138646,138642,138649,44794],{},"但是无论是外接何种USB设备，也不管采用上述两种方案的哪一种进行端口绑定，其原理都是类似的，只是实现细节不同而已。如果是外接的Arduino设备，那么需要在rules文件中的将",[457,138621,138622],{},"KERNEL==\"ttyUSB*\"","修改为",[457,138625,138626],{},"KERNEL==\"ttyACM*\"","，如果外接的是USB摄像头，那么则需要在rules文件中的将",[457,138629,138622],{},"修改为类似于",[457,138632,138633],{},"KERNEL==\"video[0,2,4,6]\"","的格式，其中",[457,138636,138637],{},"video[0,2,4,6]","表示可以绑定的端口为",[457,138640,138641],{},"video0","或",[457,138644,138645],{},"video2",[457,138647,138648],{},"video4",[457,138650,138651],{},"video6",[18,138653,138655],{"id":138654},"_75-挂载内网网页","7.5 挂载内网网页",[14,138657,138658],{},"可以把本地的网页挂载到路由器端，或者同内网段其他设备上，甚至可以挂载在本地。",[14,138660,138661],{},"下面以安卓设备为例子，由于安卓设备暂时不能直接打开html,所以我们可以把html挂载到本地服务器，再通过浏览器查看。",[14,138663,138664],{},"由于安卓系统基于Linux内核，所以我们可以下载一个叫termux的app来敲一些Linux命令：",[14,138666,138667,138668],{},"Termux 下载地址（F-Droid）：",[2756,138669,138670],{"href":138670,"rel":138671},"https:\u002F\u002Ff-droid.org\u002Fpackages\u002Fcom.termux\u002F",[4943],[14,138673,138674],{},"首先打开app后，先更新软件缓存：",[451,138676,138678],{"className":131789,"code":138677,"language":131791,"meta":32,"style":32},"pkg update\n",[457,138679,138680],{"__ignoreMap":32},[460,138681,138682,138685],{"class":462,"line":463},[460,138683,138684],{"class":929},"pkg",[460,138686,42653],{"class":1353},[14,138688,138689],{},"然后换源",[451,138691,138693],{"className":131789,"code":138692,"language":131791,"meta":32,"style":32},"nano $PREFIX\u002Fetc\u002Fapt\u002Fsources.list\n",[457,138694,138695],{"__ignoreMap":32},[460,138696,138697,138699,138702],{"class":462,"line":463},[460,138698,137567],{"class":929},[460,138700,138701],{"class":466}," $PREFIX",[460,138703,138704],{"class":1353},"\u002Fetc\u002Fapt\u002Fsources.list\n",[14,138706,138707],{},"将该文件内容替换为下面：",[451,138709,138711],{"className":131789,"code":138710,"language":131791,"meta":32,"style":32},"deb https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Ftermux\u002Ftermux-packages-24 stable main\n",[457,138712,138713],{"__ignoreMap":32},[460,138714,138715,138718,138721,138724],{"class":462,"line":463},[460,138716,138717],{"class":929},"deb",[460,138719,138720],{"class":1353}," https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Ftermux\u002Ftermux-packages-24",[460,138722,138723],{"class":1353}," stable",[460,138725,138726],{"class":1353}," main\n",[40,138728,138729,138756],{},[43,138730,138731,138732,138734,138735],{},"如果你使用的是",[457,138733,137567],{},"编辑器：",[40,138736,138737,138744,138750],{},[43,138738,138739,138740,138743],{},"按 ",[457,138741,138742],{},"Ctrl+O"," 保存文件。",[43,138745,138739,138746,138749],{},[457,138747,138748],{},"Enter"," 确认文件名。",[43,138751,138739,138752,138755],{},[457,138753,138754],{},"Ctrl+X"," 退出编辑器。",[43,138757,138731,138758,138734,138761],{},[457,138759,138760],{},"vim",[40,138762,138763,138769],{},[43,138764,138739,138765,138768],{},[457,138766,138767],{},"Esc"," 退出编辑模式。",[43,138770,138771,138772,138774],{},"输入 ",[457,138773,133714],{}," 保存并退出。",[14,138776,138777],{},"接下来重新更新软件源：",[451,138779,138781],{"className":131789,"code":138780,"language":131791,"meta":32,"style":32},"pkg update && pkg upgrade\n",[457,138782,138783],{"__ignoreMap":32},[460,138784,138785,138787,138789,138791,138793],{"class":462,"line":463},[460,138786,138684],{"class":929},[460,138788,131840],{"class":1353},[460,138790,42601],{"class":466},[460,138792,138684],{"class":929},[460,138794,131826],{"class":1353},[14,138796,138797],{},"安装python：",[451,138799,138801],{"className":131789,"code":138800,"language":131791,"meta":32,"style":32},"pkg install python\n",[457,138802,138803],{"__ignoreMap":32},[460,138804,138805,138807,138809],{"class":462,"line":463},[460,138806,138684],{"class":929},[460,138808,40247],{"class":1353},[460,138810,138811],{"class":1353}," python\n",[14,138813,138814,42884],{},[3944,138815,138816],{},"通过Termux访问设备存储",[14,138818,138819],{},"如果文件在安卓设备上，可以使用Termux的文件管理器访问设备的存储：",[451,138821,138823],{"className":131789,"code":138822,"language":131791,"meta":32,"style":32},"termux-setup-storage\n",[457,138824,138825],{"__ignoreMap":32},[460,138826,138827],{"class":462,"line":463},[460,138828,138822],{"class":929},[103,138830,138831],{},[43,138832,138833,42884,138836],{},[3944,138834,138835],{},"进入HTML文件所在的目录",[103,138837,138838],{},[43,138839,138840,138841,138843],{},"使用",[457,138842,115769],{},"命令进入HTML文件所在的目录：",[451,138845,138847],{"className":131789,"code":138846,"language":131791,"meta":32,"style":32},"cd ~\u002Fyour_html_folder\n",[457,138848,138849],{"__ignoreMap":32},[460,138850,138851,138853],{"class":462,"line":463},[460,138852,115769],{"class":900},[460,138854,138855],{"class":1353}," ~\u002Fyour_html_folder\n",[103,138857,138858],{"start":476},[43,138859,138860,42884,138863,138868,138885],{},[3944,138861,138862],{},"启动Python HTTP服务器",[103,138864,138865],{},[43,138866,138867],{},"运行以下命令启动一个简单的HTTP服务器：",[451,138869,138871],{"className":131789,"code":138870,"language":131791,"meta":32,"style":32},"python -m http.server 8000\n",[457,138872,138873],{"__ignoreMap":32},[460,138874,138875,138877,138879,138882],{"class":462,"line":463},[460,138876,46789],{"class":929},[460,138878,115375],{"class":900},[460,138880,138881],{"class":1353}," http.server",[460,138883,138884],{"class":900}," 8000\n",[103,138886,138887],{"start":482},[43,138888,138889,138890,138893],{},"这会在端口",[457,138891,138892],{},"8000","上启动一个Web服务器。",[40,138895,138896],{},[43,138897,138898],{},"启动服务器后，Termux会显示日志信息，例如：",[451,138900,138902],{"className":135309,"code":138901,"language":135311,"meta":135312,"style":32},"Serving HTTP on 0.0.0.0 port 8000 (http:\u002F\u002F0.0.0.0:8000\u002F) ...\n",[457,138903,138904],{"__ignoreMap":32},[460,138905,138906],{"class":462,"line":463},[460,138907,138901],{},[40,138909,138910],{},[43,138911,138912],{},"这表示服务器已成功启动。",[14,138914,138915],{},[3944,138916,138917],{},"在浏览器中访问HTML文件",[103,138919,138920],{},[43,138921,138922,42884,138925,138930],{},[3944,138923,138924],{},"在同一设备上访问",[103,138926,138927],{},[43,138928,138929],{},"打开安卓设备上的浏览器（如Chrome），输入以下地址：",[451,138931,138934],{"className":138932,"code":138933,"language":12441,"meta":32,"style":32},"language-JSON shiki shiki-themes github-light github-dark","http:\u002F\u002Flocalhost:8000\n",[457,138935,138936],{"__ignoreMap":32},[460,138937,138938,138941],{"class":462,"line":463},[460,138939,138940],{"class":466},"http:",[460,138942,138943],{"class":942},"\u002F\u002Flocalhost:8000\n",[40,138945,138946],{},[43,138947,138948,138949,138952],{},"如果HTML文件中有",[457,138950,138951],{},"index.html","，它会自动加载；否则，你需要手动点击文件链接。",[18,138954,138956],{"id":138955},"_76-linux重点知识","7.6 Linux重点知识",[23,138958,138960],{"id":138959},"_761-关于点的说明","7.6.1 关于点的说明",[14,138962,138963],{},[30,138964],{"alt":32,"src":138965},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-111.png",[14,138967,138968],{},"一点本目录，两点上目录",[23,138970,138972],{"id":138971},"_762-目录","7.6.2 目录",[115,138974,138976],{"id":138975},"_7621-系统启动必须","7.6.2.1 系统启动必须",[14,138978,138979],{},[3944,138980,138981],{},"\u002Fboot:",[14,138983,138984],{},"存放启动linux时使用的一些核心文件，包括一些连接文件和镜像文件",[14,138986,138987],{},[3944,138988,138989],{},"\u002Fetc:",[14,138991,138992],{},"存放所有的系统需要的配置文件和子目录列表，更改目录下的文件可能会导致系统不能启动",[14,138994,138995],{},[3944,138996,138997],{},"\u002Flib：",[14,138999,139000],{},"存放基本代码库（比如c++库），其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库",[14,139002,139003],{},[3944,139004,139005],{},"\u002Fsys:",[14,139007,139008],{},"这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息：针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候，对应的文件和目录也在内核对象子系统中",[115,139010,139012],{"id":139011},"_7622-指令集合","7.6.2.2 指令集合",[14,139014,139015],{},[3944,139016,139017],{},"\u002Fbin:",[14,139019,139020],{},"为二进制文件的缩写，存放最经常使用的命令",[14,139022,139023],{},[3944,139024,139025],{},"\u002Fsbin:",[14,139027,139028],{},"只有系统管理员才能使用的程序和指令",[115,139030,139032],{"id":139031},"_7623-外部文件管理","7.6.2.3 外部文件管理",[14,139034,139035],{},[3944,139036,139037],{},"\u002Fdev:",[14,139039,139040],{},"Device（设备）的缩写，存放linux的外部设备，在linux中访问设备和访问文件的方式是相同的",[14,139042,139043],{},[3944,139044,139045],{},"\u002Fmedia:",[14,139047,139048],{},"类windows的其他设备，例如U盘、光驱等等，识别后linux会把设备放到这个目录下",[14,139050,139051],{},[3944,139052,139053],{},"\u002Fmnt:",[14,139055,139056],{},"临时挂载别的文件系统，我们可以将光驱挂载在\u002Fmnt\u002F上，然后进入该目录就可以查看光驱里的内容",[115,139058,139060],{"id":139059},"_7624-临时文件","7.6.2.4 临时文件",[14,139062,139063],{},[3944,139064,139065],{},"\u002Frun:",[14,139067,139068],{},"是一个临时文件系统，存储系统启动以来的信息。当系统重启时，这个目录下的文件应该被删掉或清除。如果你的系统上有 \u002Fvar\u002Frun 目录，应该让它指向 run",[14,139070,139071],{},[3944,139072,139073],{},"\u002Flost+found:",[14,139075,139076],{},"一般情况下为空的，系统非法关机后，这里就存放一些文件",[14,139078,139079],{},[3944,139080,139081],{},"\u002Ftmp:",[14,139083,139084],{},"这个目录是用来存放一些临时文件的",[115,139086,139088],{"id":139087},"_7625-账户","7.6.2.5 账户",[14,139090,139091],{},[3944,139092,139093],{},"\u002Froot：",[14,139095,139096],{},"系统管理员的用户主目录",[14,139098,139099,42884],{},[3944,139100,139101],{},"\u002Fhome",[14,139103,139104],{},"用户的主目录，以用户的账号命名的",[14,139106,139107,42884],{},[3944,139108,139109],{},"\u002Fusr",[14,139111,139112],{},"用户的很多应用程序和文件都放在这个目录下，类似于windows下的program files目录",[14,139114,139115],{},[3944,139116,139117],{},"\u002Fusr\u002Fbin：",[14,139119,139120],{},"系统用户使用的应用程序与指令",[14,139122,139123],{},[3944,139124,139125],{},"\u002Fusr\u002Fsbin：",[14,139127,139128],{},"超级用户使用的比较高级的管理程序和系统守护程序",[14,139130,139131],{},[3944,139132,139133],{},"\u002Fusr\u002Fsrc：",[14,139135,139136],{},"内核源代码默认的放置目录",[115,139138,139140],{"id":139139},"_7626-运行过程要用","7.6.2.6 运行过程要用",[14,139142,139143],{},[3944,139144,139145],{},"\u002Fvar：",[14,139147,139148],{},"存放经常修改的数据，比如程序运行的日志文件（\u002Fvar\u002Flog 目录下）",[14,139150,139151],{},[3944,139152,139153],{},"\u002Fproc:",[14,139155,139156,139157,139160],{},"管理 ",[3944,139158,139159],{},"内存空间！"," 虚拟的目录，是系统内存的映射，我们可以直接访问这个目录来，获取系统信息。这个目录的内容不在硬盘上而是在内存里，我们也可以直接修改里面的某些文件来做修改",[115,139162,139164],{"id":139163},"_7627-扩展用的","7.6.2.7 扩展用的",[14,139166,139167],{},[3944,139168,139169],{},"\u002Fopt:",[14,139171,139172],{},"默认是空的，我们安装额外软件可以放在这个里面",[14,139174,139175],{},[3944,139176,139177],{},"\u002Fsrv:",[14,139179,139180],{},"存放服务启动后需要提取的数据（不用服务器就是空）",[23,139182,139184],{"id":139183},"_763-终端利用ssh登陆远程服务器","7.6.3 终端利用ssh登陆远程服务器",[14,139186,139187],{},[30,139188],{"alt":32,"src":139189},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-112.png",[14,139191,139192],{},"windows-->linux:",[14,139194,139195],{},"远程传输文件:scp- r 本地文件目录 服务器的用户名@服务器IP:\u002Ftmp",[14,139197,139198],{},"必须传入到服务器的\u002Ftmp这个路径下，因为只有这个路径有写入权限，可以上传之后移动到你的文件到你需要的指定目录",[14,139200,139201],{},"linux传输文件到windows",[14,139203,139204],{},"scp- r 服务器的用户名@服务器IP:\u002Ftmp 本地的文件目录",[23,139206,139208],{"id":139207},"_764-易忘知识","7.6.4 易忘知识",[14,139210,139211],{},"操作系统内核查看",[451,139213,139214],{"className":131789,"code":135783,"language":131791,"meta":32,"style":32},[457,139215,139216],{"__ignoreMap":32},[460,139217,139218,139220],{"class":462,"line":463},[460,139219,86349],{"class":929},[460,139221,135792],{"class":900},[14,139223,139224],{},[30,139225],{"alt":32,"src":139226},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-113.png",[14,139228,139229],{},[30,139230],{"alt":32,"src":139231},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-114.png",[451,139233,139235],{"className":131789,"code":139234,"language":131791,"meta":32,"style":32},"mv mvtest mvtest2 \nmv不仅仅有移动文件与目录的功能，还可以实现修改名称的功能\n",[457,139236,139237,139249],{"__ignoreMap":32},[460,139238,139239,139241,139244,139247],{"class":462,"line":463},[460,139240,136000],{"class":929},[460,139242,139243],{"class":1353}," mvtest",[460,139245,139246],{"class":1353}," mvtest2",[460,139248,19198],{"class":466},[460,139250,139251],{"class":462,"line":476},[460,139252,139253],{"class":929},"mv不仅仅有移动文件与目录的功能，还可以实现修改名称的功能\n",[14,139255,139256],{},[30,139257],{"alt":32,"src":139258},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-115.png",[14,139260,139261],{},[30,139262],{"alt":32,"src":139263},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-116.png",[14,139265,139266,139267,139270],{},"当前目录中共有3个文件，每个占用4KB，目录本身因元数据占用4KB，总计16KB。通过 ",[457,139268,139269],{},"du -a"," 可以快速查看磁盘使用细节。",[23,139272,139274],{"id":139273},"_765-vim","7.6.5 Vim",[14,139276,139277],{},[30,139278],{"alt":32,"src":139279},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-117.png",[14,139281,139282],{},"（vim是一个linux使用非常广泛的编辑器，不是编译器）vscode就是编辑器，vim编辑器几乎支持所有编程语言，所以非常好用！",[14,139284,139285],{},"一开始进去为命令模式，此时点击输入的字母为命令",[14,139287,139288],{},[3944,139289,139290],{},"1.命令模式：",[14,139292,139293],{},"i 切换到输入模式，在光标当前位置开始输入文本",[14,139295,139296],{},"x 删除当前光标所在处的字符",[14,139298,139299],{},"：切换到底线命令模式，以在最底一行输入命令",[14,139301,139302],{},"a 进行插入模式，在光标下一个位置输入文本",[14,139304,139305],{},"o 在当前的下方插入一个新行，并进入插入模式",[14,139307,139308],{},"0 在当前行的上方插入一个新行，并进入插入模式",[14,139310,139311],{},"dd 剪切当前行",[14,139313,139314],{},"yy 复制当前行",[14,139316,139317],{},"p 粘贴剪贴板内容到光标下方",[14,139319,139320],{},"P 粘贴剪贴板内容到光标上方",[14,139322,139323],{},"u 撤销上一次操作",[14,139325,139326],{},"ctrl+r 重做上一次操作",[14,139328,139329,139331],{},[17510,139330],{}," 保存文件",[14,139333,139334,139336],{},[17366,139335],{}," 退出Vim编辑器",[14,139338,139339,139341],{},[17366,139340],{},"! 强制退出Vim编辑器，不保存修改",[14,139343,139344],{},[3944,139345,139346],{},"2.输入模式：",[14,139348,139349],{},[30,139350],{"alt":32,"src":139351},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-118.png",[14,139353,139354],{},[3944,139355,139356],{},"3.底线命令模式：",[14,139358,139359],{},[30,139360],{"alt":32,"src":139361},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-119.png",[14,139363,139364],{},"按下esc可以退出底线命令模式",[23,139366,139368],{"id":139367},"_766-apt","7.6.6 apt",[14,139370,139371],{},"为Linux的Debian和Ubuntu中的shell前端软件包管理器",[23,139373,139375],{"id":139374},"_767-home与root的区别","7.6.7 home与root的区别",[14,139377,139378],{},[30,139379],{"alt":32,"src":139380},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-120.png",[14,139382,139383],{},[30,139384],{"alt":32,"src":139385},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-121.png",[14,139387,139388],{},[30,139389],{"alt":32,"src":139390},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-122.png",[14,139392,139393],{},[30,139394],{"alt":32,"src":139395},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-123.png",[23,139397,139399],{"id":139398},"_768-linux系统如何安装软件5-补充","7.6.8 linux系统如何安装软件：.5 补充",[14,139401,139402],{},[2756,139403,139404],{"href":139404,"rel":139405},"https:\u002F\u002Fme.tungchiahui.cn\u002Flinux-tutorial\u002F#%E5%BD%BB%E5%BA%95%E5%88%A0%E9%99%A4linux",[4943],[103,139407,139408,139411],{},[43,139409,139410],{},"下载安装包+指令的形式进行安装 以fedora系统为例子： sudo dnf install 安装包",[43,139412,139413],{},"下载程序压缩包并进行解压，配置图标启动文件，以安装pycharm为例进行说明：： 1️⃣解压压缩包：可以手动解压；也可以通过终端进行解压tar (tar -help看有啥选项)",[14,139415,139416],{},[30,139417],{"alt":32,"src":139418},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-124.png",[14,139420,139421],{},"解压后的文件放到自己存放的位置 2️⃣查找启动文件，判断程序压缩包是正常的，在解压文件下的bin目录进行查看，在终端输入pycharm.sh或者pycharm来判断是否启动",[14,139423,139424],{},[30,139425],{"alt":32,"src":139426},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-125.png",[451,139428,139430],{"className":135309,"code":139429,"language":135311,"meta":135312,"style":32},"cd \u002Fhome\u002Fcherish\u002FUserFloder\u002FApplications\u002Fpycharm-2025.2.4\u002Fbin\n.\u002Fpycharm.sh\n",[457,139431,139432,139437],{"__ignoreMap":32},[460,139433,139434],{"class":462,"line":463},[460,139435,139436],{},"cd \u002Fhome\u002Fcherish\u002FUserFloder\u002FApplications\u002Fpycharm-2025.2.4\u002Fbin\n",[460,139438,139439],{"class":462,"line":476},[460,139440,139441],{},".\u002Fpycharm.sh\n",[14,139443,139444],{},"3️⃣创建.desktop文件",[14,139446,139447],{},[3944,139448,139449],{},"原理：",[40,139451,139452,139462],{},[43,139453,139454,139455,139461],{},"Linux 桌面环境（GNOME、KDE、XFCE 等）通过 ",[3944,139456,139457,139460],{},[457,139458,139459],{},".desktop"," 文件"," 来识别应用。",[43,139463,139464,139466,139467],{},[457,139465,139459],{}," 文件相当于一个“应用注册表”，告诉系统：",[40,139468,139469,139472,139475,139478,139481],{},[43,139470,139471],{},"应用名字（Name）",[43,139473,139474],{},"图标（Icon）",[43,139476,139477],{},"执行命令（Exec）",[43,139479,139480],{},"分类（Categories）",[43,139482,139483],{},"是否需要终端（Terminal）",[451,139485,139487],{"className":135309,"code":139486,"language":135311,"meta":135312,"style":32},"cd ~\u002F.local\u002Fshare\u002Fapplications\nnano pycharm.desktop\n",[457,139488,139489,139494],{"__ignoreMap":32},[460,139490,139491],{"class":462,"line":463},[460,139492,139493],{},"cd ~\u002F.local\u002Fshare\u002Fapplications\n",[460,139495,139496],{"class":462,"line":476},[460,139497,139498],{},"nano pycharm.desktop\n",[14,139500,139501],{},"nano是一个命令行下的编辑器，也可以使用vim",[451,139503,139505],{"className":135309,"code":139504,"language":135311,"meta":135312,"style":32},"[Desktop Entry]\nVersion=1.0\nType=Application\nName=PyCharm\nIcon=\u002Fhome\u002Fcherish\u002FUserFloder\u002FApplications\u002Fpycharm-2025.2.4\u002Fbin\u002Fpycharm.svg\nExec=\"\u002Fhome\u002Fcherish\u002FUserFloder\u002FApplications\u002Fpycharm-2025.2.4\u002Fbin\u002Fpycharm.sh\" %f\nComment=JetBrains PyCharm IDE\nCategories=Development;IDE;\nTerminal=false\nStartupWMClass=jetbrains-pycharm\n",[457,139506,139507,139512,139517,139522,139527,139532,139537,139542,139547,139552],{"__ignoreMap":32},[460,139508,139509],{"class":462,"line":463},[460,139510,139511],{},"[Desktop Entry]\n",[460,139513,139514],{"class":462,"line":476},[460,139515,139516],{},"Version=1.0\n",[460,139518,139519],{"class":462,"line":482},[460,139520,139521],{},"Type=Application\n",[460,139523,139524],{"class":462,"line":488},[460,139525,139526],{},"Name=PyCharm\n",[460,139528,139529],{"class":462,"line":494},[460,139530,139531],{},"Icon=\u002Fhome\u002Fcherish\u002FUserFloder\u002FApplications\u002Fpycharm-2025.2.4\u002Fbin\u002Fpycharm.svg\n",[460,139533,139534],{"class":462,"line":500},[460,139535,139536],{},"Exec=\"\u002Fhome\u002Fcherish\u002FUserFloder\u002FApplications\u002Fpycharm-2025.2.4\u002Fbin\u002Fpycharm.sh\" %f\n",[460,139538,139539],{"class":462,"line":506},[460,139540,139541],{},"Comment=JetBrains PyCharm IDE\n",[460,139543,139544],{"class":462,"line":512},[460,139545,139546],{},"Categories=Development;IDE;\n",[460,139548,139549],{"class":462,"line":518},[460,139550,139551],{},"Terminal=false\n",[460,139553,139554],{"class":462,"line":525},[460,139555,139556],{},"StartupWMClass=jetbrains-pycharm\n",[40,139558,139559,139565,139571,139577],{},[43,139560,139561,139564],{},[457,139562,139563],{},"Exec"," → 点击图标时执行的命令",[43,139566,139567,139570],{},[457,139568,139569],{},"Icon"," → 显示在菜单和桌面上的图标",[43,139572,139573,139576],{},[457,139574,139575],{},"Terminal=false"," → 不打开终端",[43,139578,139579,139582],{},[457,139580,139581],{},"StartupWMClass"," → GNOME 用它区分窗口实例，如果桌面环境是kde的话可以不用设置",[139584,139585,139586],"blockquote",{},[14,139587,139588,139589,139591,139592],{},"可以理解成 ",[457,139590,139459],{}," 文件是 Linux 的 ",[3944,139593,139594],{},"快捷方式配置文件",[14,139596,139597],{},"4️⃣设置可执行权限",[451,139599,139601],{"className":135309,"code":139600,"language":135311,"meta":135312,"style":32},"chmod +x ~\u002F.local\u002Fshare\u002Fapplications\u002Fpycharm.desktop\n",[457,139602,139603],{"__ignoreMap":32},[460,139604,139605],{"class":462,"line":463},[460,139606,139600],{},[14,139608,139609],{},"5️⃣桌面图标启动的话如下：",[451,139611,139613],{"className":135309,"code":139612,"language":135311,"meta":135312,"style":32},"cp ~\u002F.local\u002Fshare\u002Fapplications\u002Fpycharm.desktop ~\u002FDesktop\u002F\nchmod +x ~\u002FDesktop\u002Fpycharm.desktop\n",[457,139614,139615,139620],{"__ignoreMap":32},[460,139616,139617],{"class":462,"line":463},[460,139618,139619],{},"cp ~\u002F.local\u002Fshare\u002Fapplications\u002Fpycharm.desktop ~\u002FDesktop\u002F\n",[460,139621,139622],{"class":462,"line":476},[460,139623,139624],{},"chmod +x ~\u002FDesktop\u002Fpycharm.desktop\n",[103,139626,139627],{"start":482},[43,139628,139629],{},"下载Appimage文件实现软件的安装",[14,139631,139632],{},"1️⃣先下载appimage",[14,139634,139635],{},[2756,139636,139637],{"href":139637,"rel":139638},"https:\u002F\u002Fy.qq.com\u002Fdownload\u002Fdownload.html",[4943],[14,139640,139641],{},[30,139642],{"alt":32,"src":139643},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-126.png",[14,139645,139646],{},"2️⃣下载图标，可以去google下载qq音乐图标，.svg透明的图标",[14,139648,139649],{},[30,139650],{"alt":32,"src":139651},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-127.png",[14,139653,139654],{},"当然.png格式的也没问题，或者都可以在linux系统上更换使用图标",[14,139656,139657],{},[30,139658],{"alt":32,"src":139659},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-128.png",[14,139661,139662],{},[30,139663],{"alt":32,"src":139664},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-129.png",[14,139666,139667,139668,139671],{},"3️⃣给他们放在",[457,139669,139670],{},"\u002Fhome\u002F用户名","的某个文件夹中（可以自己定）",[14,139673,139674],{},"4️⃣给软件执行权限",[451,139676,139678],{"className":135309,"code":139677,"language":135311,"meta":135312,"style":32},"cd ~\u002FUserFloder\u002FApplications\u002Fqqmusic\nsudo chmod +x .\u002Fqqmusic-1.1.7.AppImag\n",[457,139679,139680,139685],{"__ignoreMap":32},[460,139681,139682],{"class":462,"line":463},[460,139683,139684],{},"cd ~\u002FUserFloder\u002FApplications\u002Fqqmusic\n",[460,139686,139687],{"class":462,"line":476},[460,139688,139689],{},"sudo chmod +x .\u002Fqqmusic-1.1.7.AppImag\n",[14,139691,139692],{},"5️⃣配置图标启动文件并添加执行权限（也可以继续使用nano）",[451,139694,139696],{"className":131789,"code":139695,"language":131791,"meta":32,"style":32},"cd ~\u002F.local\u002Fshare\u002Fapplications\u002F\ntouch .\u002Fqqmusic.desktop\nvim .\u002Fqqmusic.desktop\nsudo chmod +x .\u002Fqqmusic.desktop\n",[457,139697,139698,139705,139712,139718],{"__ignoreMap":32},[460,139699,139700,139702],{"class":462,"line":463},[460,139701,115769],{"class":900},[460,139703,139704],{"class":1353}," ~\u002F.local\u002Fshare\u002Fapplications\u002F\n",[460,139706,139707,139709],{"class":462,"line":476},[460,139708,115776],{"class":929},[460,139710,139711],{"class":1353}," .\u002Fqqmusic.desktop\n",[460,139713,139714,139716],{"class":462,"line":482},[460,139715,138760],{"class":929},[460,139717,139711],{"class":1353},[460,139719,139720,139722,139724,139726],{"class":462,"line":488},[460,139721,40989],{"class":929},[460,139723,40992],{"class":1353},[460,139725,137626],{"class":1353},[460,139727,139711],{"class":1353},[14,139729,139730,139732],{},[457,139731,115776],{},"：一个 Linux 命令，主要功能是：",[40,139734,139735,139738],{},[43,139736,139737],{},"如果文件不存在，就创建一个新的空文件",[43,139739,139740],{},"如果文件已存在，就更新该文件的最后修改时间",[451,139742,139744],{"className":135309,"code":139743,"language":135311,"meta":135312,"style":32},"[Desktop Entry]\nName=QQ音乐\nExec=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002Fqqmusic-1.1.7.AppImage\nIcon=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002FQQ_Music2023.svg\nType=Application\nCategories=Audio;Music;Player;\nComment=QQ Music Client for Linux\n",[457,139745,139746,139750,139755,139760,139765,139769,139774],{"__ignoreMap":32},[460,139747,139748],{"class":462,"line":463},[460,139749,139511],{},[460,139751,139752],{"class":462,"line":476},[460,139753,139754],{},"Name=QQ音乐\n",[460,139756,139757],{"class":462,"line":482},[460,139758,139759],{},"Exec=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002Fqqmusic-1.1.7.AppImage\n",[460,139761,139762],{"class":462,"line":488},[460,139763,139764],{},"Icon=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002FQQ_Music2023.svg\n",[460,139766,139767],{"class":462,"line":494},[460,139768,139521],{},[460,139770,139771],{"class":462,"line":500},[460,139772,139773],{},"Categories=Audio;Music;Player;\n",[460,139775,139776],{"class":462,"line":506},[460,139777,139778],{},"Comment=QQ Music Client for Linux\n",[14,139780,139781],{},"将文件复制进去",[14,139783,139784],{},"6️⃣此时找到软件就可以打开了，如果找不到，请重启，部分不先进的发行版刷新图标列表不会很快",[14,139786,139787],{},[30,139788],{"alt":32,"src":139789},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-130.png",[14,139791,139792],{},"6️⃣如果点击图标打不开就禁用沙盒-->如果QQ音乐闪退，这个只是QQ音乐自己软件的问题，按下图这样做",[14,139794,139795],{},[30,139796],{"alt":32,"src":139797},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-131.png",[14,139799,139800,139801,139804,139805,139808],{},"如果你用的不是KDE，那么也可以直接修改",[457,139802,139803],{},"qqmuic.desktop","：在exec的末尾加上",[457,139806,139807],{},"--no-sandbox","（通过禁用安全沙盒机制，赋予应用程序更高的系统权限，从而解决因权限限制导致的运行问题）",[451,139810,139812],{"className":135309,"code":139811,"language":135311,"meta":135312,"style":32},"[Desktop Entry]\nName=QQ音乐\nExec=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002Fqqmusic-1.1.7.AppImage --no-sandbox\nIcon=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002FQQ_Music2023.svg\nType=Application\nCategories=Audio;Music;Player;\nComment=QQ Music Client for Linux\n",[457,139813,139814,139818,139822,139827,139831,139835,139839],{"__ignoreMap":32},[460,139815,139816],{"class":462,"line":463},[460,139817,139511],{},[460,139819,139820],{"class":462,"line":476},[460,139821,139754],{},[460,139823,139824],{"class":462,"line":482},[460,139825,139826],{},"Exec=\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FApplications\u002Fqqmusic\u002Fqqmusic-1.1.7.AppImage --no-sandbox\n",[460,139828,139829],{"class":462,"line":488},[460,139830,139764],{},[460,139832,139833],{"class":462,"line":494},[460,139834,139521],{},[460,139836,139837],{"class":462,"line":500},[460,139838,139773],{},[460,139840,139841],{"class":462,"line":506},[460,139842,139778],{},[14,139844,139845],{},[30,139846],{"alt":32,"src":139847},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-132.png",[14,139849,139850],{},"在qq音乐中如果缺字体,那么请安装字体(这个字体是多种语言合一的字体)",[451,139852,139854],{"className":135309,"code":139853,"language":135311,"meta":135312,"style":32},"sudo dnf install google-noto-sans-cjk-fonts google-noto-serif-cjk-fonts\n",[457,139855,139856],{"__ignoreMap":32},[460,139857,139858],{"class":462,"line":463},[460,139859,139853],{},[103,139861,139862],{"start":488},[43,139863,139864],{},"去Flathub上安装软件",[14,139866,139867],{},[2756,139868,139869],{"href":139869,"rel":139870},"https:\u002F\u002Fflathub.org\u002F",[4943],[14,139872,139873],{},"1️⃣去上面的官网搜索软件+下载软件",[14,139875,139876],{},[30,139877],{"alt":32,"src":139878},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-133.png",[451,139880,139882],{"className":135309,"code":139881,"language":135311,"meta":135312,"style":32},"flatpak install flathub com.obsproject.Studio\n",[457,139883,139884],{"__ignoreMap":32},[460,139885,139886],{"class":462,"line":463},[460,139887,139881],{},[14,139889,139890],{},[30,139891],{"alt":32,"src":139892},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-134.png",[14,139894,139895],{},"2️⃣运行软件",[14,139897,139898],{},"a.官方方式：",[14,139900,139901],{},[30,139902],{"alt":32,"src":139903},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-135.png",[451,139905,139906],{"className":135309,"code":139881,"language":135311,"meta":135312,"style":32},[457,139907,139908],{"__ignoreMap":32},[460,139909,139910],{"class":462,"line":463},[460,139911,139881],{},[14,139913,139914],{},"b.当普通软件运行：",[14,139916,139917],{},[30,139918],{"alt":32,"src":139919},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-136.png",[14,139921,139922],{},[30,139923],{"alt":32,"src":139924},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-27-Linux%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-137.png",[1944,139926,139927],{},"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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":32,"searchDepth":476,"depth":476,"links":139929},[139930,139931,139936,139937,139943,139944],{"id":136662,"depth":476,"text":136663},{"id":137004,"depth":476,"text":137005,"children":139932},[139933,139934,139935],{"id":137008,"depth":482,"text":137009},{"id":137075,"depth":482,"text":137076},{"id":137336,"depth":482,"text":137337},{"id":137489,"depth":476,"text":137490},{"id":137727,"depth":476,"text":137728,"children":139938},[139939,139940,139941,139942],{"id":137779,"depth":482,"text":137780},{"id":138065,"depth":482,"text":138066},{"id":138336,"depth":482,"text":138337},{"id":138595,"depth":482,"text":138596},{"id":138654,"depth":476,"text":138655},{"id":138955,"depth":476,"text":138956,"children":139945},[139946,139947,139948,139949,139950,139951,139952,139953],{"id":138959,"depth":482,"text":138960},{"id":138971,"depth":482,"text":138972},{"id":139183,"depth":482,"text":139184},{"id":139207,"depth":482,"text":139208},{"id":139273,"depth":482,"text":139274},{"id":139367,"depth":482,"text":139368},{"id":139374,"depth":482,"text":139375},{"id":139398,"depth":482,"text":139399},{},"\u002Fwiki\u002F2025-01-27-linux\u002Fch7",{"title":136654,"description":16682},"wiki\u002F2025-01-27-Linux基本操作\u002Fch7-其他操作","Tg_tkQ2Az3_kc3_lK0-lGPJwMQaWApXJmN_fHk_Iamg",{"id":139960,"title":139961,"body":139962,"description":16682,"extension":16683,"meta":139966,"navigation":521,"path":139967,"seo":139968,"stem":139969,"__hash__":139970},"wiki\u002Fwiki\u002F2025-01-27-Linux基本操作\u002Findex.md","Linux基本操作",{"type":7,"value":139963,"toc":139964},[],{"title":32,"searchDepth":476,"depth":476,"links":139965},[],{"category":46672},"\u002Fwiki\u002F2025-01-27-linux",{"title":139961,"description":16682},"wiki\u002F2025-01-27-Linux基本操作\u002Findex","PoJlKpO2vYd20qfiK6eHUbmqhxxbLAcr2GCjNoWrzB0",{"id":139972,"title":139973,"body":139974,"description":139978,"extension":16683,"meta":140369,"navigation":521,"path":140370,"seo":140371,"stem":140372,"__hash__":140373},"wiki\u002Fwiki\u002F2025-01-09-Genesis-AI项目.md","Genesis AI项目",{"type":7,"value":139975,"toc":140367},[139976,139979,139983,140000,140003,140056,140060,140062,140102,140111,140115,140118,140359,140364],[14,139977,139978],{},"项目简介：Genesis是一个开源的生成式物理引擎，由卡内基梅隆大学等20多个研究机构经过两年合作开发而成，旨在为通用机器人、具身人工智能和物理人工智能应用提供支持。通过使用genesis对机器人及工程环境仿真实现实验内容。",[10,139980,139982],{"id":139981},"_1ubuntu环境配置","1.Ubuntu环境配置",[103,139984,139985,139988,139991,139994,139997],{},[43,139986,139987],{},"ubuntu环境换源",[43,139989,139990],{},"安装cuda",[43,139992,139993],{},"安装miniconda",[43,139995,139996],{},"安装pytorch",[43,139998,139999],{},"安装genesis",[14,140001,140002],{},"参考链接：",[451,140004,140006],{"className":40235,"code":140005,"language":40237,"meta":32,"style":32},"https:\u002F\u002Fblog.csdn.net\u002Fxiangshangdemayi\u002Farticle\u002Fdetails\u002F144728092?fromshare=blogdetail&sharetype=blogdetail&sharerId=144728092&sharerefer=PC&sharesource=qq_69379513&sharefrom=from_link\n",[457,140007,140008],{"__ignoreMap":32},[460,140009,140010,140013,140016,140019,140021,140024,140027,140029,140032,140035,140037,140040,140043,140045,140048,140051,140053],{"class":462,"line":463},[460,140011,140012],{"class":929},"https:\u002F\u002Fblog.csdn.net\u002Fxiangshangdemayi\u002Farticle\u002Fdetails\u002F144728092?fromshare",[460,140014,140015],{"class":1353},"=blogdetail",[460,140017,140018],{"class":466},"&sharetype",[460,140020,894],{"class":887},[460,140022,140023],{"class":1353},"blogdetail",[460,140025,140026],{"class":466},"&sharerId",[460,140028,894],{"class":887},[460,140030,140031],{"class":1353},"144728092",[460,140033,140034],{"class":466},"&sharerefer",[460,140036,894],{"class":887},[460,140038,140039],{"class":1353},"PC",[460,140041,140042],{"class":466},"&sharesource",[460,140044,894],{"class":887},[460,140046,140047],{"class":1353},"qq_69379513",[460,140049,140050],{"class":466},"&sharefrom",[460,140052,894],{"class":887},[460,140054,140055],{"class":1353},"from_link\n",[10,140057,140059],{"id":140058},"_2genesis-报错issue","2.Genesis 报错issue",[14,140061,140002],{},[451,140063,140064],{"className":40235,"code":140005,"language":40237,"meta":32,"style":32},[457,140065,140066],{"__ignoreMap":32},[460,140067,140068,140070,140072,140074,140076,140078,140080,140082,140084,140086,140088,140090,140092,140094,140096,140098,140100],{"class":462,"line":463},[460,140069,140012],{"class":929},[460,140071,140015],{"class":1353},[460,140073,140018],{"class":466},[460,140075,894],{"class":887},[460,140077,140023],{"class":1353},[460,140079,140026],{"class":466},[460,140081,894],{"class":887},[460,140083,140031],{"class":1353},[460,140085,140034],{"class":466},[460,140087,894],{"class":887},[460,140089,140039],{"class":1353},[460,140091,140042],{"class":466},[460,140093,894],{"class":887},[460,140095,140047],{"class":1353},[460,140097,140050],{"class":466},[460,140099,894],{"class":887},[460,140101,140055],{"class":1353},[451,140103,140105],{"className":40235,"code":140104,"language":40237,"meta":32,"style":32},"https:\u002F\u002Fgithub.com\u002FGenesis-Embodied-AI\u002FGenesis\u002Fissues\u002F43\n",[457,140106,140107],{"__ignoreMap":32},[460,140108,140109],{"class":462,"line":463},[460,140110,140104],{"class":929},[10,140112,140114],{"id":140113},"_3genesis-项目运行结果","3.Genesis 项目运行结果",[14,140116,140117],{},"hello_robot.py",[451,140119,140121],{"className":46787,"code":140120,"language":46789,"meta":32,"style":32},"import os\nos.environ['PYOPENGL_PLATFORM'] = 'glx'\n\nimport genesis as gs\nfrom pynput import keyboard\n\ngs.init(backend=gs.gpu)\n\nscene = gs.Scene(show_viewer=True)\nplane = scene.add_entity(gs.morphs.Plane())\nfranka = scene.add_entity(\n    gs.morphs.MJCF(file='xml\u002Ffranka_emika_panda\u002Fpanda.xml'),\n)\n\nscene.build()\n\ndef on_press(key):\n    try:\n        if key.char == 'q':\n            return False\n    except AttributeError:\n        pass\n\nlistener = keyboard.Listener(on_press=on_press)\nlistener.start()\n\nwhile listener.running:\n    scene.step()\n",[457,140122,140123,140129,140144,140148,140160,140172,140176,140189,140193,140212,140222,140232,140246,140250,140254,140259,140263,140273,140280,140294,140301,140311,140316,140320,140338,140343,140347,140354],{"__ignoreMap":32},[460,140124,140125,140127],{"class":462,"line":463},[460,140126,46801],{"class":887},[460,140128,61609],{"class":466},[460,140130,140131,140134,140137,140139,140141],{"class":462,"line":476},[460,140132,140133],{"class":466},"os.environ[",[460,140135,140136],{"class":1353},"'PYOPENGL_PLATFORM'",[460,140138,11884],{"class":466},[460,140140,894],{"class":887},[460,140142,140143],{"class":1353}," 'glx'\n",[460,140145,140146],{"class":462,"line":482},[460,140147,522],{"emptyLinePlaceholder":521},[460,140149,140150,140152,140155,140157],{"class":462,"line":488},[460,140151,46801],{"class":887},[460,140153,140154],{"class":466}," genesis ",[460,140156,47790],{"class":887},[460,140158,140159],{"class":466}," gs\n",[460,140161,140162,140164,140167,140169],{"class":462,"line":494},[460,140163,47145],{"class":887},[460,140165,140166],{"class":466}," pynput ",[460,140168,46801],{"class":887},[460,140170,140171],{"class":466}," keyboard\n",[460,140173,140174],{"class":462,"line":500},[460,140175,522],{"emptyLinePlaceholder":521},[460,140177,140178,140181,140184,140186],{"class":462,"line":506},[460,140179,140180],{"class":466},"gs.init(",[460,140182,140183],{"class":3380},"backend",[460,140185,894],{"class":887},[460,140187,140188],{"class":466},"gs.gpu)\n",[460,140190,140191],{"class":462,"line":512},[460,140192,522],{"emptyLinePlaceholder":521},[460,140194,140195,140198,140200,140203,140206,140208,140210],{"class":462,"line":518},[460,140196,140197],{"class":466},"scene ",[460,140199,894],{"class":887},[460,140201,140202],{"class":466}," gs.Scene(",[460,140204,140205],{"class":3380},"show_viewer",[460,140207,894],{"class":887},[460,140209,47882],{"class":900},[460,140211,3754],{"class":466},[460,140213,140214,140217,140219],{"class":462,"line":525},[460,140215,140216],{"class":466},"plane ",[460,140218,894],{"class":887},[460,140220,140221],{"class":466}," scene.add_entity(gs.morphs.Plane())\n",[460,140223,140224,140227,140229],{"class":462,"line":531},[460,140225,140226],{"class":466},"franka ",[460,140228,894],{"class":887},[460,140230,140231],{"class":466}," scene.add_entity(\n",[460,140233,140234,140237,140239,140241,140244],{"class":462,"line":537},[460,140235,140236],{"class":466},"    gs.morphs.MJCF(",[460,140238,61658],{"class":3380},[460,140240,894],{"class":887},[460,140242,140243],{"class":1353},"'xml\u002Ffranka_emika_panda\u002Fpanda.xml'",[460,140245,54352],{"class":466},[460,140247,140248],{"class":462,"line":543},[460,140249,3754],{"class":466},[460,140251,140252],{"class":462,"line":549},[460,140253,522],{"emptyLinePlaceholder":521},[460,140255,140256],{"class":462,"line":555},[460,140257,140258],{"class":466},"scene.build()\n",[460,140260,140261],{"class":462,"line":560},[460,140262,522],{"emptyLinePlaceholder":521},[460,140264,140265,140267,140270],{"class":462,"line":566},[460,140266,48352],{"class":887},[460,140268,140269],{"class":929}," on_press",[460,140271,140272],{"class":466},"(key):\n",[460,140274,140275,140278],{"class":462,"line":572},[460,140276,140277],{"class":887},"    try",[460,140279,20257],{"class":466},[460,140281,140282,140284,140287,140289,140292],{"class":462,"line":578},[460,140283,3702],{"class":887},[460,140285,140286],{"class":466}," key.char ",[460,140288,19471],{"class":887},[460,140290,140291],{"class":1353}," 'q'",[460,140293,20257],{"class":466},[460,140295,140296,140298],{"class":462,"line":812},[460,140297,32182],{"class":887},[460,140299,140300],{"class":900}," False\n",[460,140302,140303,140306,140309],{"class":462,"line":818},[460,140304,140305],{"class":887},"    except",[460,140307,140308],{"class":900}," AttributeError",[460,140310,20257],{"class":466},[460,140312,140313],{"class":462,"line":824},[460,140314,140315],{"class":887},"        pass\n",[460,140317,140318],{"class":462,"line":2074},[460,140319,522],{"emptyLinePlaceholder":521},[460,140321,140322,140325,140327,140330,140333,140335],{"class":462,"line":2088},[460,140323,140324],{"class":466},"listener ",[460,140326,894],{"class":887},[460,140328,140329],{"class":466}," keyboard.Listener(",[460,140331,140332],{"class":3380},"on_press",[460,140334,894],{"class":887},[460,140336,140337],{"class":466},"on_press)\n",[460,140339,140340],{"class":462,"line":2103},[460,140341,140342],{"class":466},"listener.start()\n",[460,140344,140345],{"class":462,"line":2122},[460,140346,522],{"emptyLinePlaceholder":521},[460,140348,140349,140351],{"class":462,"line":2144},[460,140350,123156],{"class":887},[460,140352,140353],{"class":466}," listener.running:\n",[460,140355,140356],{"class":462,"line":2158},[460,140357,140358],{"class":466},"    scene.step()\n",[14,140360,140361],{},[30,140362],{"alt":32,"src":140363},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2025-01-09-Genesis-AI%E9%A1%B9%E7%9B%AE-001.png",[1944,140365,140366],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":32,"searchDepth":476,"depth":476,"links":140368},[],{"category":39791},"\u002Fwiki\u002F2025-01-09-genesis-ai",{"title":139973,"description":139978},"wiki\u002F2025-01-09-Genesis-AI项目","Dtwo2HcGkJ6rJoZHinCc3gXtagXcGTSkaByZcrG9fHc",{"id":140375,"title":140376,"body":140377,"description":16682,"extension":16683,"meta":140392,"navigation":521,"path":140393,"seo":140394,"stem":140395,"__hash__":140396},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch01-基础知识.md","1. 基础知识",{"type":7,"value":140378,"toc":140389},[140379,140382,140386],[10,140380,140376],{"id":140381},"_1-基础知识",[18,140383,140385],{"id":140384},"_11-js的组成","1.1 js的组成",[14,140387,140388],{},"ECMAScript（JS的基础）与 Web APIs（分为 DOM 页面文档对象模型和 BOM 浏览器对象模型）。",{"title":32,"searchDepth":476,"depth":476,"links":140390},[140391],{"id":140384,"depth":476,"text":140385},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch01",{"title":140376,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch01-基础知识","Fx7-0TjX81PM8o5Hlfy2WWNjwvP67bOnqk3Cd2fyvJ8",{"id":140398,"title":140399,"body":140400,"description":16682,"extension":16683,"meta":140539,"navigation":521,"path":140540,"seo":140541,"stem":140542,"__hash__":140543},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch02-vscode必备内容.md","2. vscode必备内容",{"type":7,"value":140401,"toc":140527},[140402,140405,140409,140412,140416,140426,140430,140433,140436,140439,140443,140450,140456,140460,140466,140477,140481,140484,140488,140491,140495,140498,140502,140505,140509,140512,140515,140518,140521,140524],[10,140403,140399],{"id":140404},"_2-vscode必备内容",[18,140406,140408],{"id":140407},"_21-标签分类","2.1 标签分类",[14,140410,140411],{},"标签有双标签和单标签：双标签＜html＞＜\u002Fhtml＞两者是成对存在的，分为开始标签和结束标签；单标签如：＜br \u002F＞。",[18,140413,140415],{"id":140414},"_22-快速生成html骨架","2.2 快速生成HTML骨架",[14,140417,140418,140419,140421,140422,140425],{},"使用 VSCode 时，基本结构不用一个一个输入，可以输入 ",[457,140420,15458],{}," 然后按 ",[457,140423,140424],{},"Tab","，快速自动生成基本结构。",[18,140427,140429],{"id":140428},"_23-预览插件与实时预览","2.3 预览插件与实时预览",[14,140431,140432],{},"VSCode 预览页面可右键选择 Open In Default Browser，需要安装 open in browser 插件。",[14,140434,140435],{},"Live Server实时预览插件，在修改标签后看网页界面时，不需要手动刷新就可以实现自动刷新",[14,140437,140438],{},"Live Server必须在vscode打开的文件夹中的文件程序中才能使用",[18,140440,140442],{"id":140441},"_24-视图缩放","2.4 视图缩放",[14,140444,140445,140446,140449],{},"缩放视图 ",[457,140447,140448],{},"ctrl+"," 可实现代码增大。",[14,140451,140452,140455],{},[457,140453,140454],{},"ctrl-"," 可实现代码减小。",[18,140457,140459],{"id":140458},"_25-新建与保存快捷键","2.5 新建与保存快捷键",[14,140461,140462,140463,44794],{},"VSCode 新建文件快捷键为 ",[457,140464,140465],{},"ctrl+N",[14,140467,140468,140469,140472,140473,140476],{},"保存快捷键为 ",[457,140470,140471],{},"ctrl+S","，将文本保存为 ",[457,140474,140475],{},".html"," 文件。",[18,140478,140480],{"id":140479},"_26-auto-rename-tag","2.6 Auto Rename Tag",[14,140482,140483],{},"VSCode 中 Auto Rename Tag 双击前标签，改动之后，后标签都会同步修改。",[18,140485,140487],{"id":140486},"_27-vscode-icons","2.7 vscode-icons",[14,140489,140490],{},"vscode-icons 可以实现不同后缀图标显示，便于快速识别文件类型。",[18,140492,140494],{"id":140493},"_28-easy-less","2.8 Easy LESS",[14,140496,140497],{},"Easy LESS 插件可以编译 less 文件。我们写的 less 不能直接引入到 html 文件中，通过这个插件可以自动生成 css 文件。",[18,140499,140501],{"id":140500},"_29-会了吧插件","2.9 会了吧插件",[14,140503,140504],{},"会了吧插件可以展示代码中英语单词的意思。",[18,140506,140508],{"id":140507},"_210-vscode常用快捷键","2.10 vscode常用快捷键",[14,140510,140511],{},"①快速复制:shift+alt+下箭头(上箭头）或者ctrl+C然后ctrl+V",[14,140513,140514],{},"②选定多个相同的单词:ctrl+D",[14,140516,140517],{},"③添加多个光标:ctrl+Alt+上箭头(下箭头）",[14,140519,140520],{},"④全局替换某些单词:ctrl+h",[14,140522,140523],{},"⑤快速定位到某一行:ctrl+g",[14,140525,140526],{},"⑥选择某一区块:按住Shift+alt然后拖动鼠标",{"title":32,"searchDepth":476,"depth":476,"links":140528},[140529,140530,140531,140532,140533,140534,140535,140536,140537,140538],{"id":140407,"depth":476,"text":140408},{"id":140414,"depth":476,"text":140415},{"id":140428,"depth":476,"text":140429},{"id":140441,"depth":476,"text":140442},{"id":140458,"depth":476,"text":140459},{"id":140479,"depth":476,"text":140480},{"id":140486,"depth":476,"text":140487},{"id":140493,"depth":476,"text":140494},{"id":140500,"depth":476,"text":140501},{"id":140507,"depth":476,"text":140508},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch02-vscode",{"title":140399,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch02-vscode必备内容","P9smz6dHOMWyfVooCL02EBMbE4RKCFhGZKfr19IQtY4",{"id":140545,"title":140546,"body":140547,"description":16682,"extension":16683,"meta":140706,"navigation":521,"path":140707,"seo":140708,"stem":140709,"__hash__":140710},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch03-HTML文本与容器标签.md","3. HTML文本与容器标签",{"type":7,"value":140548,"toc":140698},[140549,140552,140556,140566,140572,140578,140582,140591,140595,140600,140603,140606,140610,140613,140623,140632,140641,140650,140660,140667,140672,140677,140690],[10,140550,140546],{"id":140551},"_3-html文本与容器标签",[18,140553,140555],{"id":140554},"_31-标题标签","3.1 标题标签",[14,140557,140558,140561,140562,140565],{},[457,140559,140560],{},"\u003Ch1>","我是一级标签",[457,140563,140564],{},"\u003C\u002Fh1>"," h为head的缩写，是头部、标题，作为标题使用，以此类推",[14,140567,140568,140561,140570],{},[457,140569,140560],{},[457,140571,140564],{},[14,140573,137828,140574,140577],{},[457,140575,140576],{},"\u003C\u002Fh>","后写的内容是不会在这一行就行展现的，他会在下一行来进行展现",[18,140579,140581],{"id":140580},"_32-段落标签","3.2 段落标签",[14,140583,140584,140587,140588],{},[457,140585,140586],{},"\u003Cp>","....",[457,140589,140590],{},"\u003C\u002Fp>",[18,140592,140594],{"id":140593},"_33-换行标签","3.3 换行标签",[14,140596,140597],{},[457,140598,140599],{},"\u003Cbr \u002F>",[14,140601,140602],{},"具有强制换行的作用",[14,140604,140605],{},"单标签",[18,140607,140609],{"id":140608},"_34-文本格式化标签","3.4 文本格式化标签",[14,140611,140612],{},"提供粗体、斜体和下划线等效果",[14,140614,140615,140616,6271,140619,140622],{},"加粗：",[457,140617,140618],{},"\u003Cstrong>...\u003C\u002Fstrong>",[457,140620,140621],{},"\u003Cb>.....\u003C\u002Fb>","，前者相对后者在语义上更强烈。",[14,140624,140625,140626,6271,140629,140622],{},"斜体：",[457,140627,140628],{},"\u003Cem>...\u003C\u002Fem>",[457,140630,140631],{},"\u003Ci>...\u003C\u002Fi>",[14,140633,140634,140635,6271,140638,140622],{},"删除线：",[457,140636,140637],{},"\u003Cdel>...\u003C\u002Fdel>",[457,140639,140640],{},"\u003Cs>...\u003C\u002Fs>",[14,140642,140643,140644,6271,140647,140622],{},"下划线：",[457,140645,140646],{},"\u003Cins>...\u003C\u002Fins>",[457,140648,140649],{},"\u003Cu>...\u003C\u002Fu>",[18,140651,140653,140654,34827,140657,117186],{"id":140652},"_35-div和span标签","3.5 ",[457,140655,140656],{},"\u003Cdiv>",[457,140658,140659],{},"\u003Cspan>",[14,140661,140662,115511,140664,140666],{},[457,140663,140656],{},[457,140665,140659],{}," 是没有语义的，它们就是一个盒子，用来装内容，是网页布局的基础。",[14,140668,140669],{},[457,140670,140671],{},"\u003Cdiv>这是头部\u003C\u002Fdiv>",[14,140673,140674],{},[457,140675,140676],{},"\u003Cspan>今日价格\u003C\u002Fspan>",[14,140678,140679,140680,140682,140683,140685,140686,140689],{},"两者特点：①",[457,140681,140656],{}," 标签用来布局，但一行通常只放一个 ",[457,140684,140656],{},"。可以理解为一个大盒子，独占一行，在 ",[457,140687,140688],{},"\u003C\u002Fdiv>"," 后再写内容会换到下一行显示。",[14,140691,624,140692,140694,140695,140697],{},[457,140693,140659],{}," 标签也可用于布局，一行可以放多个 ",[457,140696,140659],{},"，可理解为小盒子。",{"title":32,"searchDepth":476,"depth":476,"links":140699},[140700,140701,140702,140703,140704],{"id":140554,"depth":476,"text":140555},{"id":140580,"depth":476,"text":140581},{"id":140593,"depth":476,"text":140594},{"id":140608,"depth":476,"text":140609},{"id":140652,"depth":476,"text":140705},"3.5 \u003Cdiv>和\u003Cspan>标签",{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch03-html",{"title":140546,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch03-HTML文本与容器标签","wtuhs31JaNMAgjeyllTRtJ-HSKIZNuZi1VTfL57zQys",{"id":140712,"title":140713,"body":140714,"description":16682,"extension":16683,"meta":140911,"navigation":521,"path":140912,"seo":140913,"stem":140914,"__hash__":140915},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch04-HTML图像与链接.md","4. HTML图像与链接",{"type":7,"value":140715,"toc":140903},[140716,140719,140723,140726,140732,140739,140745,140751,140754,140757,140760,140763,140766,140769,140772,140776,140779,140782,140785,140791,140797,140803,140810,140814,140820,140826,140829,140832,140838,140844,140850,140853,140856,140860,140863,140873,140879,140883,140892,140896,140899],[10,140717,140713],{"id":140718},"_4-html图像与链接",[18,140720,140722],{"id":140721},"_41-图像标签","4.1 图像标签",[14,140724,140725],{},"（1）标签",[14,140727,140728,140731],{},[457,140729,140730],{},"\u003Cimg src=\"图像URL\"\u002F>"," 单标签",[14,140733,140734,140735,140738],{},"src是",[457,140736,140737],{},"\u003Cimg>","标签的必须属性，他用于指定图像文件的路径和文件名，所属属性：简单理解为就是属于这个图像标签的特性",[14,140740,140741,140742],{},"alt:文本，替换文本。图像不能显示的文字 ",[457,140743,140744],{},"\u003Cimg src=\"11.png\" alt=\"1\" \u002F>",[14,140746,140747,140748],{},"title:文本，提示文本。鼠标放在图像上，显示的文字 ",[457,140749,140750],{},"\u003Cimg src=\"1.png\" alt=\"1\" title=\"预推免信息\" \u002F>",[14,140752,140753],{},"width:像素，设置图像的宽度",[14,140755,140756],{},"height:像素，设置图像的高度",[14,140758,140759],{},"border：像素，设置图像的边框粗细",[14,140761,140762],{},"（2）图像标签属性的注意点：",[14,140764,140765],{},"①图像标签可以拥有多个属性，必须写在标签名的后面",[14,140767,140768],{},"②属性前后不分前后顺序，标签名与属性、属性与属性之间均以空格分开",[14,140770,140771],{},"③属性采取键值对的格式，即key=“value”的格式，属性=“属性值”",[18,140773,140775],{"id":140774},"_42-路径注意要点","4.2 路径注意要点：",[14,140777,140778],{},"（1）目录文件夹：就是普通的文件夹，里边存放着我们做页面所需的相关材料，比如图片、CSS、JS、HTML等",[14,140780,140781],{},"（2）根目录：就是打开文件夹的第一层根目录",[14,140783,140784],{},"（3）相对路径：以引用文件所在位置为参考基础，而建立出的目录路径，简单来说就是图片相对于Html页面的位置",[14,140786,140787,140788],{},"①同一级路径：图像文件位于HTML文件同一级，如",[457,140789,140790],{},"\u003Cimg src=\"baidu.gif\"\u002F>",[14,140792,140793,140794],{},"②下一级路径：\u002F 图像位于HTML文件下一级，如",[457,140795,140796],{},"\u003Cimg src=\"images\u002Fbaidu.gif\"\u002F>",[14,140798,140799,140800],{},"③上一级路径： ..\u002F 图像位于HTML文件上一级，如",[457,140801,140802],{},"\u003Cimg src=\"..\u002F..\u002Fpublic\u002Fimages\u002Fbaidu.gif\"\u002F>",[14,140804,140805,140806,16993],{},"（4）绝对路径：指目录下的绝对地址，直接到达目标位置，通常是从盘符开始的路径。例如：\"D:\\web\\img\\logo.gif\"或者完整的网络地址\"",[2756,140807,140808],{"href":140808,"rel":140809},"http:\u002F\u002Fwww.itcast.cn\u002Fimages\u002Flogo.gif",[4943],[18,140811,140813],{"id":140812},"_43-超链接标签","4.3 超链接标签",[14,140815,140816,140819],{},[457,140817,140818],{},"\u003Ca>","标签用于定义超链接，作用是从一个页面链接到另一个页面",[14,140821,140822,140823],{},"①语法格式：",[457,140824,140825],{},"\u003Ca herf=\"跳转目标\" target=\"目标窗口的弹出方式\">文本或图像\u003C\u002Fa>",[14,140827,140828],{},"②属性：href：用于指定链接目标的url地址，（必须属性）当标签应用herf属性时，它就具有了超链接的功能",[14,140830,140831],{},"target：用于指定链接页面的打开方式，其中_self为默认值，_blank为在新窗口的打开方式",[14,140833,140834,140835],{},"③链接分类：外部链接：",[457,140836,140837],{},"\u003Ca herf=\"http:\u002F\u002Fwww.baidu.com\">百度\u003C\u002Fa>",[14,140839,140840,140841],{},"内部链接：网站内部页面之间的相互链接，直接链接内部页面名称即可，例如",[457,140842,140843],{},"\u003Ca href=\"index.html\">\u003C\u002Fa>",[14,140845,140846,140847],{},"空链接：如果当时没有确定链接目标时，",[457,140848,140849],{},"\u003Ca href=\"#\">首页\u003C\u002Fa>",[14,140851,140852],{},"下载链接：如果href里面地址是一个文件或者压缩包，会下载这个文件",[14,140854,140855],{},"网页元素链接：在网页中的各种网页元素，如文本、图像、表格、音频、视频等都可添加超链接",[18,140857,140859],{"id":140858},"_44-锚点链接","4.4 锚点链接",[14,140861,140862],{},"点我们点击链接，可以快速定位到页面中的某个位置",[14,140864,140865,140866,140869,140870],{},"①在链接文本的href属性中，设置属性值为#名字的形式，如",[457,140867,140868],{},"\u003Ca href=\"#two\">","第二级",[457,140871,140872],{},"\u003C\u002Fa>",[14,140874,140875,140876],{},"②找到目标位置标签，里边添加一个 id 属性，如 ",[457,140877,140878],{},"\u003Ch3 id=\"two\">第二集\u003C\u002Fh3>",[18,140880,140882],{"id":140881},"_45-注释标签","4.5 注释标签",[14,140884,140885,140888,140889],{},[457,140886,140887],{},"\u003C!-- 注释内容 -->"," 快捷键为 ",[457,140890,140891],{},"ctrl+\u002F",[18,140893,140895],{"id":140894},"_46-特殊字符","4.6 特殊字符",[14,140897,140898],{},"可以实现添加多个空格",[30,140900],{"style":140901,"src":140902},"max-width:100%","\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-001.png",{"title":32,"searchDepth":476,"depth":476,"links":140904},[140905,140906,140907,140908,140909,140910],{"id":140721,"depth":476,"text":140722},{"id":140774,"depth":476,"text":140775},{"id":140812,"depth":476,"text":140813},{"id":140858,"depth":476,"text":140859},{"id":140881,"depth":476,"text":140882},{"id":140894,"depth":476,"text":140895},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch04-html",{"title":140713,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch04-HTML图像与链接","oVGVb72OKY9l9qkhNnjbDtFdhzjkOyiCgMJ-1MDqiDs",{"id":140917,"title":140918,"body":140919,"description":16682,"extension":16683,"meta":141212,"navigation":521,"path":141213,"seo":141214,"stem":141215,"__hash__":141216},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch05-HTML表格列表与表单.md","5. HTML表格列表与表单",{"type":7,"value":140920,"toc":141203},[140921,140924,140928,140931,140934,140937,140940,140943,140946,140949,140952,140955,140975,140981,140985,140988,140991,140994,140997,141000,141003,141007,141010,141013,141016,141019,141032,141037,141040,141043,141058,141061,141064,141067,141070,141073,141077,141080,141087,141090,141093,141096,141099,141102,141108,141111,141114,141120,141123,141126,141129,141135,141138,141141,141155,141162,141165,141168,141175,141184,141187,141190,141193,141197,141200],[10,140922,140918],{"id":140923},"_5-html表格列表与表单",[18,140925,140927],{"id":140926},"_51-表格标签","5.1 表格标签",[14,140929,140930],{},"①表格的作用：表格主要是用于显示、展示数据，因为它可以使数据显示的非常的规整，可读性非常好。",[14,140932,140933],{},"特别是后台展示数据的时候，能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据处理的很有条理。",[14,140935,140936],{},"②表格基本语法：",[30,140938],{"style":140901,"src":140939},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-002.png",[14,140941,140942],{},"③表头单元格标签：一般表头单元格位于第一行或者第一列，表头单元格里面的文本内容加粗居中显示",[30,140944],{"style":140901,"src":140945},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-003.png",[14,140947,140948],{},"④表格属性：表格属性实际在开发中不常用，基本都是用css来实现的",[30,140950],{"style":140901,"src":140951},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-004.png",[14,140953,140954],{},"⑤表格结构标签：解决表格过长问题，将表格分割成表格头部和表格主体",[14,140956,140957,140960,140961,140963,140964,140967,140968,140970,140971,140974],{},[457,140958,140959],{},"\u003Cthead>","标签表格的头部区域，用于定义表格的头部，",[457,140962,140959],{},"内部必须拥有",[457,140965,140966],{},"\u003Ctr>","标签，一般位于第一行，",[457,140969,140959],{},"比",[457,140972,140973],{},"\u003Cth>","范围广",[14,140976,140977,140980],{},[457,140978,140979],{},"\u003Ctbody>","标签表格的主体区域，用于定义表格的主体，用于放数据文本",[18,140982,140984],{"id":140983},"_52-合并单元格","5.2 合并单元格",[14,140986,140987],{},"（1）合并单元格方式：",[14,140989,140990],{},"①跨行合并：rowspan=\"合并单元格的个数\"",[14,140992,140993],{},"②跨列合并：colspan=\"合并单元格的个数\"",[14,140995,140996],{},"（2）目标单元格：",[14,140998,140999],{},"①跨行：最上侧单元格为目标单元格，写合并单元格",[14,141001,141002],{},"②跨列：最左侧单元格为目标单元格，写合并单元格",[18,141004,141006],{"id":141005},"_53-列表标签","5.3 列表标签",[14,141008,141009],{},"（1）分类：无序列表、有序列表、自定义列表",[14,141011,141012],{},"①无序列表：",[30,141014],{"style":140901,"src":141015},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-005.png",[14,141017,141018],{},"无序列表的各个列表项之间顺序级别之分，是并列的",[14,141020,141021,141024,141025,141028,141029,141031],{},[457,141022,141023],{},"\u003Cul>``\u003C\u002Ful>","中只能嵌套",[457,141026,141027],{},"\u003Cli>``\u003C\u002Fli>","，直接在",[457,141030,141023],{},"中输入其他标签或文字是不对的",[14,141033,141034,141036],{},[457,141035,141027],{},"之间相当于一个容器，可以容纳所有元素",[14,141038,141039],{},"无序列表会带有自己的样式属性，但实际还是用css来设置",[14,141041,141042],{},"在css中去除前边的小圆点采用如下代码:",[451,141044,141048],{"className":141045,"code":141046,"language":141047,"meta":32,"style":32},"language-Css shiki shiki-themes github-light github-dark","list-style: none;\n","Css",[457,141049,141050],{"__ignoreMap":32},[460,141051,141052,141055],{"class":462,"line":463},[460,141053,141054],{"class":470},"list-style",[460,141056,141057],{"class":466},": none;\n",[14,141059,141060],{},"②有序列表：",[30,141062],{"style":140901,"src":141063},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-006.png",[14,141065,141066],{},"③自定义列表：",[30,141068],{"style":140901,"src":141069},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-007.png",[30,141071],{"style":140901,"src":141072},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-008.png",[18,141074,141076],{"id":141075},"_54-表单标签","5.4 表单标签",[14,141078,141079],{},"一个完整表单通常由表单域、表单控件（也称表单元素）和提示信息3个部分组成",[14,141081,141082,141083,141086],{},"（1）表单域：包含单元素的区域，",[457,141084,141085],{},"\u003Cform>","标签可以实现信息的收集和传递。",[30,141088],{"style":140901,"src":141089},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-009.png",[14,141091,141092],{},"autocomplete属性是历史记录，记录表单输入信息，有两个值，一个off，一个on，为true时过几天点击表单，获得焦点时会显示前几天输入的信息",[14,141094,141095],{},"表单元素提交必须有name属性",[14,141097,141098],{},"注意点：①写表单元素前，应该有表单域把他们进行包含；②表单域是form标签",[14,141100,141101],{},"(2)表单控件：可以定义各种表单元素，这些表单元素就是允许用户在表单中输入或选择的内容控件",[14,141103,600,141104,141107],{},[457,141105,141106],{},"\u003Cinput>","输入表单元素",[30,141109],{"style":140901,"src":141110},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-010.png",[30,141112],{"style":140901,"src":141113},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-011.png",[14,141115,141116,141117],{},"单选按钮：",[457,141118,141119],{},"\u003Cinput type=\"radio\" name=\"danxuan\">",[30,141121],{"style":140901,"src":141122},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-012.png",[14,141124,141125],{},"写法差异源于不同版本的 HTML 或 XHTML 规范",[30,141127],{"style":140901,"src":141128},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-013.png",[14,141130,141131,141134],{},[3944,141132,141133],{},"注意点"," ：name和value是每个表单元素都有的属性值，主要给后台人员使用；name表单元素的名字，要求单选按钮和复选按钮有相同的name值；checked属性主要针对于单选按钮和复选框，主要作用一打开页面，就要可以默认选中某个表单元素；maxlength是用户可以在表单输入的最大字符数",[14,141136,141137],{},"②select下拉表单元素：可以节约页面控件",[30,141139],{"style":140901,"src":141140},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-014.png",[14,141142,141143,6464,141145,141148,141149,141151,141152,141154],{},[3944,141144,357],{},[457,141146,141147],{},"\u003Cselect>","中至少包含一对",[457,141150,117207],{},"；在",[457,141153,117207],{},"中定义selected=\"selected\"时，当前项即为默认中选项",[14,141156,141157,141158,141161],{},"③",[457,141159,141160],{},"\u003Ctextarea>",":适用于输入内容较多的场景",[30,141163],{"style":140901,"src":141164},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-015.png",[14,141166,141167],{},"3行20列",[18,141169,141171,141172,117186],{"id":141170},"_55-lable标签","5.5 ",[457,141173,141174],{},"\u003Clable>",[14,141176,141177,141178,141180,141181,141183],{},"它不是表单标签，但常常与表单标签搭配使用，",[457,141179,141174],{},"标签用于绑定一个表单标签，当点击",[457,141182,141174],{},"标签内的文本",[14,141185,141186],{},"时，浏览器就会自动将焦点（光标）转到或者选择对应的表单元素上，以增加用户体验",[30,141188],{"style":140901,"src":141189},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-016.png",[30,141191],{"style":140901,"src":141192},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-017.png",[18,141194,141196],{"id":141195},"_56-实例","5.6 实例",[30,141198],{"style":140901,"src":141199},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-018.png",[1944,141201,141202],{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}",{"title":32,"searchDepth":476,"depth":476,"links":141204},[141205,141206,141207,141208,141209,141211],{"id":140926,"depth":476,"text":140927},{"id":140983,"depth":476,"text":140984},{"id":141005,"depth":476,"text":141006},{"id":141075,"depth":476,"text":141076},{"id":141170,"depth":476,"text":141210},"5.5 \u003Clable>标签",{"id":141195,"depth":476,"text":141196},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch05-html",{"title":140918,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch05-HTML表格列表与表单","Px1T0DDoabk2X89anH-m0Cv6Hve9q1VFyw7W5L-GpEw",{"id":141218,"title":141219,"body":141220,"description":16682,"extension":16683,"meta":141769,"navigation":521,"path":141770,"seo":141771,"stem":141772,"__hash__":141773},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch06-CSS语法与文本样式.md","6. CSS语法与文本样式",{"type":7,"value":141221,"toc":141744},[141222,141225,141229,141232,141235,141239,141242,141245,141248,141251,141254,141257,141260,141264,141267,141271,141274,141277,141280,141284,141287,141290,141293,141299,141302,141305,141308,141311,141314,141317,141320,141353,141357,141360,141363,141366,141370,141373,141376,141379,141382,141385,141389,141392,141395,141398,141402,141405,141409,141412,141416,141419,141424,141428,141431,141435,141438,141441,141444,141447,141474,141477,141481,141484,141487,141492,141495,141498,141502,141505,141510,141513,141516,141519,141523,141526,141529,141532,141536,141539,141542,141545,141549,141553,141556,141596,141599,141603,141610,141613,141617,141620,141666,141670,141673,141676,141679,141707,141711,141714,141741],[10,141223,141219],{"id":141224},"_6-css语法与文本样式",[18,141226,141228],{"id":141227},"_61-css语法规范","6.1 css语法规范",[14,141230,141231],{},"由两部分组成，选择器及一条或多条声明",[30,141233],{"style":140901,"src":141234},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-019.png",[14,141236,141237],{},[3944,141238,357],{},[14,141240,141241],{},"①选择器是用于指定css样式的HTML标签，花括号是对该对象设置的具体样式",[14,141243,141244],{},"②属性与属性值以“键值对”的形式出现",[14,141246,141247],{},"③属性是对指定的对象设置的样式属性，例如字体大小、文本颜色等",[14,141249,141250],{},"④属性和属性值之间用英文“;”分开",[30,141252],{"style":140901,"src":141253},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-020.png",[30,141255],{"style":140901,"src":141256},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-021.png",[30,141258],{"style":140901,"src":141259},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-022.png",[18,141261,141263],{"id":141262},"_62-css选择器","6.2 css选择器",[14,141265,141266],{},"可以分为基础选择器和复合选择器：①基础选择器由单个选择器组成；②基础选择器包括：标签选择器、类选择器、id选择器和通配符选择器",[23,141268,141270],{"id":141269},"_621-标签选择器","6.2.1 标签选择器",[14,141272,141273],{},"①优点：能快速为页面中同类型的标签统一设置样式",[14,141275,141276],{},"②缺点：不能设计差异化样式，只能选择全部的当前标签",[30,141278],{"style":140901,"src":141279},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-023.png",[23,141281,141283],{"id":141282},"_622-类选择器","6.2.2 类选择器",[14,141285,141286],{},"①类选择器口诀：样式点定义 结构类（class）调用 一个或多个 开发最常用",[14,141288,141289],{},"②样例",[30,141291],{"style":140901,"src":141292},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-024.png",[14,141294,141295,141296,141298],{},"③ ",[3944,141297,141133],{}," ：类选择器用\".\"进行标识，后面紧跟类名（自己命名的）；",[14,141300,141301],{},"可以理解为给这个标签起了个名字，来表示；",[14,141303,141304],{},"长名称或词组可以使用横线来为选择器命名；",[14,141306,141307],{},"不要使用纯数字、中文等命名，尽量使用英文字母来表示；",[14,141309,141310],{},"命名要有意义；",[30,141312],{"style":140901,"src":141313},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-025.png",[14,141315,141316],{},"类选择器也可以指定特殊的元素p.center{}",[14,141318,141319],{},"p.center和.center都对",[451,141321,141323],{"className":141045,"code":141322,"language":141047,"meta":32,"style":32},"\u002F* 类选择器指定特殊元素 *\u002F\np.center {\n  text-align: center;\n}\n",[457,141324,141325,141330,141339,141349],{"__ignoreMap":32},[460,141326,141327],{"class":462,"line":463},[460,141328,141329],{"class":942},"\u002F* 类选择器指定特殊元素 *\u002F\n",[460,141331,141332,141334,141337],{"class":462,"line":476},[460,141333,14],{"class":470},[460,141335,141336],{"class":929},".center",[460,141338,1348],{"class":466},[460,141340,141341,141343,141345,141347],{"class":462,"line":482},[460,141342,86668],{"class":900},[460,141344,1961],{"class":466},[460,141346,5545],{"class":900},[460,141348,1966],{"class":466},[460,141350,141351],{"class":462,"line":488},[460,141352,821],{"class":466},[23,141354,141356],{"id":141355},"_623-多类名使用","6.2.3 多类名使用",[14,141358,141359],{},"①使用方式：在标签class属性中写多个类名；多个类名中间必须用空格分开；这个标签就可以分别具有这些类名的样式",[30,141361],{"style":140901,"src":141362},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-026.png",[14,141364,141365],{},"②多类名开发使用场景：可以把一些标签元素相同的样式（共同的部分）放到一个类里面；这些标签都可以调用这个公共的类，然后再调用自己独有的类；可以节省CSS代码，统一修改也非常方便；开发中要多使用",[23,141367,141369],{"id":141368},"_624-id选择器","6.2.4 id选择器",[14,141371,141372],{},"id选择器可以为标有特定id的HTML元素指定特定的样式",[14,141374,141375],{},"HTML元素以id属性来设置id选择器，css中id选择器以\"#\"来定义",[30,141377],{"style":140901,"src":141378},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-027.png",[14,141380,141381],{},"①口诀：样式#定义，结构id调用，只能给一个标签调用，别人切勿使用",[14,141383,141384],{},"②区别：类选择器可以调用多次；id选择器不能重复调用；类选择器在修改样式中用的最多，id选择器一般用于页面唯一性的元素上，经常和js搭配使用",[23,141386,141388],{"id":141387},"_625-通配符选择器","6.2.5 通配符选择器",[14,141390,141391],{},"定义用\"*\"，他表示选取页面中所有元素（标签）",[14,141393,141394],{},"* {",[14,141396,141397],{},"color=\"red\"}",[23,141399,141401],{"id":141400},"_626-总结","6.2.6 总结",[30,141403],{"style":140901,"src":141404},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-028.png",[18,141406,141408],{"id":141407},"_63-css字体属性","6.3 css字体属性",[14,141410,141411],{},"Fonts字体用于定义字体系列、大小、粗细、和文字样式（如斜体）",[23,141413,141415],{"id":141414},"_631-字体系列","6.3.1 字体系列",[14,141417,141418],{},"font-family: '宋体';",[14,141420,141421,141423],{},[3944,141422,357],{}," 各种字体之间必须使用英文状态下的逗号隔开；一般情况，如果有空格隔开的多个单词组成的字体，加引号；尽量使用系统默认自带的字体，保证任何用户浏览器中都能正确使用",[23,141425,141427],{"id":141426},"_632-字体大小","6.3.2 字体大小",[14,141429,141430],{},"font-size: 20px",[14,141432,141433,42884],{},[3944,141434,141133],{},[14,141436,141437],{},"①px（像素）大小是网页的最常用单位",[14,141439,141440],{},"②谷歌浏览器默认为16px",[14,141442,141443],{},"③不同浏览器默认显示的字号大小不一致，尽量给定明确值，不要默认",[14,141445,141446],{},"④可以给body指定整个页面的大小：会自动引用",[451,141448,141450],{"className":141045,"code":141449,"language":141047,"meta":32,"style":32},"body {\n  font-size: 16px;\n}\n",[457,141451,141452,141458,141470],{"__ignoreMap":32},[460,141453,141454,141456],{"class":462,"line":463},[460,141455,1721],{"class":470},[460,141457,1348],{"class":466},[460,141459,141460,141462,141464,141466,141468],{"class":462,"line":476},[460,141461,86768],{"class":900},[460,141463,1961],{"class":466},[460,141465,17323],{"class":900},[460,141467,2017],{"class":887},[460,141469,1966],{"class":466},[460,141471,141472],{"class":462,"line":482},[460,141473,821],{"class":466},[14,141475,141476],{},"⑤标题标签比较特殊，需要单独指定大小",[23,141478,141480],{"id":141479},"_633-字体粗细","6.3.3 字体粗细",[14,141482,141483],{},"font-weight: bold;",[14,141485,141486],{},"font-weight: 100；",[14,141488,141489,141491],{},[3944,141490,357],{}," ①粗体文字变细：尽量别用normal，多用数字",[14,141493,141494],{},"font-weight= 400;",[14,141496,141497],{},"②属性值100-700，400等同于normal，而700等同于bold，后面不需要跟单位",[23,141499,141501],{"id":141500},"_634-文字样式","6.3.4 文字样式",[14,141503,141504],{},"font-style: normal；",[14,141506,141507,42884],{},[3944,141508,141509],{},"属性值",[14,141511,141512],{},"①normal：默认值，浏览器会显示标准的字体样式 font-style：normal；",[14,141514,141515],{},"②italic：浏览器会显示斜体的字体样式",[30,141517],{"style":140901,"src":141518},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-029.png",[23,141520,141522],{"id":141521},"_635-字体符合属性","6.3.5 字体符合属性",[30,141524],{"style":140901,"src":141525},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-030.png",[30,141527],{"style":140901,"src":141528},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-031.png",[14,141530,141531],{},"以上都对√，第一个用的是类选择器，第二个用的是标签选择器",[14,141533,141534,42884],{},[3944,141535,141133],{},[14,141537,141538],{},"①样式font-style 粗细font-weight 大小\u002F行高font-size\u002Fline-height 字体font-family",[14,141540,141541],{},"②使用font属性时，必须按照语法格式书写，不能更换顺序，并且各个属性以空格隔开",[14,141543,141544],{},"③不需要设置大的属性可以省略（取默认值），但必须保留font-size和font-family属性，否则font属性将不起作用",[18,141546,141548],{"id":141547},"_64-css-test文本属性","6.4 css test文本属性",[23,141550,141552],{"id":141551},"_641-文本颜色","6.4.1 文本颜色",[14,141554,141555],{},"定义文本的外观，比如文本的颜色、对齐文本、装饰文本、文本缩进、行间距等",[451,141557,141559],{"className":141045,"code":141558,"language":141047,"meta":32,"style":32},"\u002F* 文本颜色：预定义颜色 \u002F 十六进制 \u002F RGB *\u002F\np {\n  color: red;\n  \u002F* color: #ff0000; *\u002F\n  \u002F* color: rgb(255, 0, 0); *\u002F\n}\n",[457,141560,141561,141566,141572,141582,141587,141592],{"__ignoreMap":32},[460,141562,141563],{"class":462,"line":463},[460,141564,141565],{"class":942},"\u002F* 文本颜色：预定义颜色 \u002F 十六进制 \u002F RGB *\u002F\n",[460,141567,141568,141570],{"class":462,"line":476},[460,141569,14],{"class":470},[460,141571,1348],{"class":466},[460,141573,141574,141576,141578,141580],{"class":462,"line":482},[460,141575,87047],{"class":900},[460,141577,1961],{"class":466},[460,141579,73627],{"class":900},[460,141581,1966],{"class":466},[460,141583,141584],{"class":462,"line":488},[460,141585,141586],{"class":942},"  \u002F* color: #ff0000; *\u002F\n",[460,141588,141589],{"class":462,"line":494},[460,141590,141591],{"class":942},"  \u002F* color: rgb(255, 0, 0); *\u002F\n",[460,141593,141594],{"class":462,"line":500},[460,141595,821],{"class":466},[30,141597],{"style":140901,"src":141598},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-032.png",[23,141600,141602],{"id":141601},"_642-对齐文本","6.4.2 对齐文本",[14,141604,141605,141606,141609],{},"text-align属于用于设置元素内文本内容的 ",[3944,141607,141608],{},"水平对齐"," 方式",[14,141611,141612],{},"属性值：left：左对齐（默认值）；right：右对齐；center：居中对齐",[23,141614,141616],{"id":141615},"_643-装饰文本","6.4.3 装饰文本",[14,141618,141619],{},"text-decoration属性规定添加到文本的修饰，可以给文本添加下划线、删除线、上划线等",[451,141621,141623],{"className":141045,"code":141622,"language":141047,"meta":32,"style":32},"a {\n  text-decoration: none;\n}\np {\n  text-decoration: underline;\n}\n",[457,141624,141625,141631,141641,141645,141651,141662],{"__ignoreMap":32},[460,141626,141627,141629],{"class":462,"line":463},[460,141628,2756],{"class":470},[460,141630,1348],{"class":466},[460,141632,141633,141635,141637,141639],{"class":462,"line":476},[460,141634,86644],{"class":900},[460,141636,1961],{"class":466},[460,141638,2629],{"class":900},[460,141640,1966],{"class":466},[460,141642,141643],{"class":462,"line":482},[460,141644,821],{"class":466},[460,141646,141647,141649],{"class":462,"line":488},[460,141648,14],{"class":470},[460,141650,1348],{"class":466},[460,141652,141653,141655,141657,141660],{"class":462,"line":494},[460,141654,86644],{"class":900},[460,141656,1961],{"class":466},[460,141658,141659],{"class":900},"underline",[460,141661,1966],{"class":466},[460,141663,141664],{"class":462,"line":500},[460,141665,821],{"class":466},[23,141667,141669],{"id":141668},"_644-文本缩进","6.4.4 文本缩进",[14,141671,141672],{},"实现文本的第一行首行缩进自己指定的距离",[14,141674,141675],{},"20px往右边走；-20px往左边走",[14,141677,141678],{},"em是一个相对单位，就是当前元素（font-size）1个文字的大小，如果当前元素没有设置大小，则会按照父元素的1个文字大小，如果此时写了2em则是当前元素2个文字大小的距离",[451,141680,141682],{"className":141045,"code":141681,"language":141047,"meta":32,"style":32},"p {\n  text-indent: 2em;\n}\n",[457,141683,141684,141690,141703],{"__ignoreMap":32},[460,141685,141686,141688],{"class":462,"line":463},[460,141687,14],{"class":470},[460,141689,1348],{"class":466},[460,141691,141692,141695,141697,141699,141701],{"class":462,"line":476},[460,141693,141694],{"class":900},"  text-indent",[460,141696,1961],{"class":466},[460,141698,907],{"class":900},[460,141700,39966],{"class":887},[460,141702,1966],{"class":466},[460,141704,141705],{"class":462,"line":482},[460,141706,821],{"class":466},[23,141708,141710],{"id":141709},"_645-行间距","6.4.5 行间距",[14,141712,141713],{},"行间距可以理解为由上间距、下间距和文字高度组成，实际代码改变的是上下间距的大小实现行间距改变的",[451,141715,141717],{"className":141045,"code":141716,"language":141047,"meta":32,"style":32},"p {\n  line-height: 1.6;\n}\n",[457,141718,141719,141725,141737],{"__ignoreMap":32},[460,141720,141721,141723],{"class":462,"line":463},[460,141722,14],{"class":470},[460,141724,1348],{"class":466},[460,141726,141727,141730,141732,141735],{"class":462,"line":476},[460,141728,141729],{"class":900},"  line-height",[460,141731,1961],{"class":466},[460,141733,141734],{"class":900},"1.6",[460,141736,1966],{"class":466},[460,141738,141739],{"class":462,"line":482},[460,141740,821],{"class":466},[1944,141742,141743],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":32,"searchDepth":476,"depth":476,"links":141745},[141746,141747,141755,141762],{"id":141227,"depth":476,"text":141228},{"id":141262,"depth":476,"text":141263,"children":141748},[141749,141750,141751,141752,141753,141754],{"id":141269,"depth":482,"text":141270},{"id":141282,"depth":482,"text":141283},{"id":141355,"depth":482,"text":141356},{"id":141368,"depth":482,"text":141369},{"id":141387,"depth":482,"text":141388},{"id":141400,"depth":482,"text":141401},{"id":141407,"depth":476,"text":141408,"children":141756},[141757,141758,141759,141760,141761],{"id":141414,"depth":482,"text":141415},{"id":141426,"depth":482,"text":141427},{"id":141479,"depth":482,"text":141480},{"id":141500,"depth":482,"text":141501},{"id":141521,"depth":482,"text":141522},{"id":141547,"depth":476,"text":141548,"children":141763},[141764,141765,141766,141767,141768],{"id":141551,"depth":482,"text":141552},{"id":141601,"depth":482,"text":141602},{"id":141615,"depth":482,"text":141616},{"id":141668,"depth":482,"text":141669},{"id":141709,"depth":482,"text":141710},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch06-css",{"title":141219,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch06-CSS语法与文本样式","edNbSUYKLIJ_C-TlXm4kGf1NOqNSGo0jc2I9MN2stKg",{"id":141775,"title":141776,"body":141777,"description":16682,"extension":16683,"meta":142426,"navigation":521,"path":142427,"seo":142428,"stem":142429,"__hash__":142430},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch07-CSS引入方式与选择器进阶.md","7. CSS引入方式与选择器进阶",{"type":7,"value":141778,"toc":142407},[141779,141782,141786,141790,141850,141854,141864,141867,141870,141874,141899,141903,141906,141909,141912,141915,141918,141922,141925,141928,141970,141973,141999,142005,142008,142012,142016,142022,142025,142028,142031,142034,142037,142040,142085,142089,142092,142095,142099,142103,142132,142135,142140,142143,142146,142149,142152,142156,142160,142163,142165,142168,142172,142175,142179,142182,142185,142188,142192,142196,142202,142212,142215,142218,142221,142224,142227,142350,142358,142366,142404],[10,141780,141776],{"id":141781},"_7-css引入方式与选择器进阶",[18,141783,141785],{"id":141784},"_71-css引入方式","7.1 css引入方式",[23,141787,141789],{"id":141788},"_711-内部样式表嵌入式","7.1.1 内部样式表（嵌入式）",[451,141791,141795],{"className":141792,"code":141793,"language":141794,"meta":32,"style":32},"language-Html shiki shiki-themes github-light github-dark","\u003Cstyle>\n  h1 {\n    color: blue;\n    font-size: 24px;\n  }\n\u003C\u002Fstyle>\n","Html",[457,141796,141797,141805,141812,141824,141837,141842],{"__ignoreMap":32},[460,141798,141799,141801,141803],{"class":462,"line":463},[460,141800,781],{"class":466},[460,141802,1944],{"class":470},[460,141804,473],{"class":466},[460,141806,141807,141810],{"class":462,"line":476},[460,141808,141809],{"class":470},"  h1",[460,141811,1348],{"class":466},[460,141813,141814,141817,141819,141822],{"class":462,"line":482},[460,141815,141816],{"class":900},"    color",[460,141818,1961],{"class":466},[460,141820,141821],{"class":900},"blue",[460,141823,1966],{"class":466},[460,141825,141826,141829,141831,141833,141835],{"class":462,"line":488},[460,141827,141828],{"class":900},"    font-size",[460,141830,1961],{"class":466},[460,141832,17515],{"class":900},[460,141834,2017],{"class":887},[460,141836,1966],{"class":466},[460,141838,141839],{"class":462,"line":494},[460,141840,141841],{"class":466},"  }\n",[460,141843,141844,141846,141848],{"class":462,"line":500},[460,141845,1776],{"class":466},[460,141847,1944],{"class":470},[460,141849,473],{"class":466},[14,141851,141852,42884],{},[3944,141853,141133],{},[14,141855,600,141856,141859,141860,141863],{},[457,141857,141858],{},"\u003Cstyle>","理论上可以放在HTML文档的任意位置，但一般会放在",[457,141861,141862],{},"\u003Chead>","标签中",[14,141865,141866],{},"②通过这种方式可以方便控制整个页面的元素样式设置",[14,141868,141869],{},"③代码结构清晰，但是并没有实现结构与样式的完全分离",[23,141871,141873],{"id":141872},"_712-行内样式表行内式","7.1.2 行内样式表（行内式）",[451,141875,141877],{"className":141792,"code":141876,"language":141794,"meta":32,"style":32},"\u003Cp style=\"color: red; font-size: 16px;\">这是一个段落\u003C\u002Fp>\n",[457,141878,141879],{"__ignoreMap":32},[460,141880,141881,141883,141885,141887,141889,141892,141895,141897],{"class":462,"line":463},[460,141882,781],{"class":466},[460,141884,14],{"class":470},[460,141886,78795],{"class":929},[460,141888,894],{"class":466},[460,141890,141891],{"class":1353},"\"color: red; font-size: 16px;\"",[460,141893,141894],{"class":466},">这是一个段落\u003C\u002F",[460,141896,14],{"class":470},[460,141898,473],{"class":466},[14,141900,141901,42884],{},[3944,141902,141133],{},[14,141904,141905],{},"①style其实就是标签的属性",[14,141907,141908],{},"②在双引号中间，写法要符合css规范",[14,141910,141911],{},"③可以控制当前的标签设置样式",[14,141913,141914],{},"④书写繁琐，简单时才用",[14,141916,141917],{},"⑤使用行内样式表设定css，通常也被称为行内式引入",[23,141919,141921],{"id":141920},"_713-外部样式表链接式","7.1.3 外部样式表（链接式）",[14,141923,141924],{},"使用最多，单独建一个css文件，然后html引用",[14,141926,141927],{},"①css文件部分： style.css",[451,141929,141931],{"className":141045,"code":141930,"language":141047,"meta":32,"style":32},"\u002F* style.css *\u002F\nh1 {\n  color: blue;\n  font-size: 24px;\n}\n",[457,141932,141933,141938,141944,141954,141966],{"__ignoreMap":32},[460,141934,141935],{"class":462,"line":463},[460,141936,141937],{"class":942},"\u002F* style.css *\u002F\n",[460,141939,141940,141942],{"class":462,"line":476},[460,141941,10],{"class":470},[460,141943,1348],{"class":466},[460,141945,141946,141948,141950,141952],{"class":462,"line":482},[460,141947,87047],{"class":900},[460,141949,1961],{"class":466},[460,141951,141821],{"class":900},[460,141953,1966],{"class":466},[460,141955,141956,141958,141960,141962,141964],{"class":462,"line":488},[460,141957,86768],{"class":900},[460,141959,1961],{"class":466},[460,141961,17515],{"class":900},[460,141963,2017],{"class":887},[460,141965,1966],{"class":466},[460,141967,141968],{"class":462,"line":494},[460,141969,821],{"class":466},[14,141971,141972],{},"②html部分",[451,141974,141976],{"className":141792,"code":141975,"language":141794,"meta":32,"style":32},"\u003Clink rel=\"stylesheet\" href=\"style.css\">\n",[457,141977,141978],{"__ignoreMap":32},[460,141979,141980,141982,141984,141986,141988,141990,141992,141994,141997],{"class":462,"line":463},[460,141981,781],{"class":466},[460,141983,85160],{"class":470},[460,141985,85163],{"class":929},[460,141987,894],{"class":466},[460,141989,85168],{"class":1353},[460,141991,2759],{"class":929},[460,141993,894],{"class":466},[460,141995,141996],{"class":1353},"\"style.css\"",[460,141998,473],{"class":466},[14,142000,142001,142004],{},[457,142002,142003],{},"\u003Chr>","水平线标签（但是不常用！）",[14,142006,142007],{},"ctrl+0回到页面原来大小",[18,142009,142011],{"id":142010},"_72-emmet语法-可以实现快速生成html结构语法和快速生成css样式语法","7.2 Emmet语法 可以实现快速生成HTML结构语法和快速生成CSS样式语法",[23,142013,142015],{"id":142014},"_721-快速生成html","7.2.1 快速生成html",[14,142017,142018,142019],{},"①生成标签直接输入标签名按tab键即可比如div然后tab键，就可以生成",[457,142020,142021],{},"\u003Cdiv>``\u003C\u002Fdiv>",[14,142023,142024],{},"②如果想要生成多个相同标签加上*就可以了比如div*3就可以快速生成3个div",[14,142026,142027],{},"③如果有父子级关系的标签，可以用>比如ul>li就可以了",[14,142029,142030],{},"④如果有兄弟关系的标签，用+就可以了比如div+p",[14,142032,142033],{},"⑤如果生成带有类名或者id名字的，直接写.demo或者#twotab键就可以了",[14,142035,142036],{},"⑥如果生成的div类名是有顺序的，可以用自增符号$",[14,142038,142039],{},"⑦如果想要在生成的标签内部写内容可以用{}表示",[451,142041,142043],{"className":141792,"code":142042,"language":141794,"meta":32,"style":32},"\u003C!-- Emmet 语法示例 -->\n\u003C!-- div*3        → 生成3个div -->\n\u003C!-- ul>li*5      → ul下生成5个li -->\n\u003C!-- div+p        → 兄弟div和p -->\n\u003C!-- .demo        → \u003Cdiv class=\"demo\">\u003C\u002Fdiv> -->\n\u003C!-- #two         → \u003Cdiv id=\"two\">\u003C\u002Fdiv> -->\n\u003C!-- .demo$*3     → demo1, demo2, demo3 -->\n\u003C!-- div{内容}     → \u003Cdiv>内容\u003C\u002Fdiv> -->\n",[457,142044,142045,142050,142055,142060,142065,142070,142075,142080],{"__ignoreMap":32},[460,142046,142047],{"class":462,"line":463},[460,142048,142049],{"class":942},"\u003C!-- Emmet 语法示例 -->\n",[460,142051,142052],{"class":462,"line":476},[460,142053,142054],{"class":942},"\u003C!-- div*3        → 生成3个div -->\n",[460,142056,142057],{"class":462,"line":482},[460,142058,142059],{"class":942},"\u003C!-- ul>li*5      → ul下生成5个li -->\n",[460,142061,142062],{"class":462,"line":488},[460,142063,142064],{"class":942},"\u003C!-- div+p        → 兄弟div和p -->\n",[460,142066,142067],{"class":462,"line":494},[460,142068,142069],{"class":942},"\u003C!-- .demo        → \u003Cdiv class=\"demo\">\u003C\u002Fdiv> -->\n",[460,142071,142072],{"class":462,"line":500},[460,142073,142074],{"class":942},"\u003C!-- #two         → \u003Cdiv id=\"two\">\u003C\u002Fdiv> -->\n",[460,142076,142077],{"class":462,"line":506},[460,142078,142079],{"class":942},"\u003C!-- .demo$*3     → demo1, demo2, demo3 -->\n",[460,142081,142082],{"class":462,"line":512},[460,142083,142084],{"class":942},"\u003C!-- div{内容}     → \u003Cdiv>内容\u003C\u002Fdiv> -->\n",[23,142086,142088],{"id":142087},"_722-快速生成css","7.2.2 快速生成css",[14,142090,142091],{},"简写开头",[14,142093,142094],{},"①比如w200按tab可以生成width:200px; ②比如lh26px按tab可以生成line-height:26px;",[18,142096,142098],{"id":142097},"_73-css复合选择器","7.3 css复合选择器",[23,142100,142102],{"id":142101},"_731-后代选择器","7.3.1 后代选择器",[451,142104,142106],{"className":141045,"code":142105,"language":141047,"meta":32,"style":32},".parent .child {\n  color: blue;\n}\n",[457,142107,142108,142118,142128],{"__ignoreMap":32},[460,142109,142110,142113,142116],{"class":462,"line":463},[460,142111,142112],{"class":929},".parent",[460,142114,142115],{"class":929}," .child",[460,142117,1348],{"class":466},[460,142119,142120,142122,142124,142126],{"class":462,"line":476},[460,142121,87047],{"class":900},[460,142123,1961],{"class":466},[460,142125,141821],{"class":900},[460,142127,1966],{"class":466},[460,142129,142130],{"class":462,"line":482},[460,142131,821],{"class":466},[14,142133,142134],{},"元素1 元素2 {样式声明}",[14,142136,142137],{},[3944,142138,142139],{},"注意点:",[14,142141,142142],{},"①元素1和元素2中间用空格隔开",[14,142144,142145],{},"②元素1是父级，元素2是子级，最终选择的是元素2",[14,142147,142148],{},"③元素2可以是儿子，也可以是孙子等，只要是元素1的后代即可",[14,142150,142151],{},"④元素1和元素2可以是任意基础选择器",[23,142153,142155],{"id":142154},"_732-子选择器-元素1-元素2-样式声明","7.3.2 子选择器 元素1 > 元素2 {样式声明}",[14,142157,142158],{},[3944,142159,142139],{},[14,142161,142162],{},"①元素1和元素2中间用大于号隔开",[14,142164,142145],{},[14,142166,142167],{},"③元素2必须是亲儿子，其孙子、重孙之类都不归他管.你也可以叫他亲儿子选择器",[23,142169,142171],{"id":142170},"_733-并集选择器","7.3.3 并集选择器",[14,142173,142174],{},"元素1，元素2 {样式声明}",[14,142176,142177],{},[3944,142178,142139],{},[14,142180,142181],{},"①元素1和元素2中间用逗号隔开",[14,142183,142184],{},"②逗号可以理解为和的意思",[14,142186,142187],{},"③并集选择器通常用于集体声明",[23,142189,142191],{"id":142190},"_734-链接伪类选择器","7.3.4 链接伪类选择器",[14,142193,142194],{},[3944,142195,142139],{},[14,142197,142198,142199,142201],{},"①为了确保生效，请按照 LVHA 的循顺序声明 ",[85160,142200],{},"－:visited－:hover－:active。",[14,142203,142204,142205,142208,142209,42152],{},"②伪类选择器书写最大的特点是用冒号（:）表示，比如 ",[142206,142207],"hover",{}," 、 ",[142210,142211],"first-child",{},[14,142213,142214],{},"③ 因为 a 链接在浏览器中具有默认样式，所以我们实际工作中都需要给链接单独指定样式",[14,142216,142217],{},"link对没访问的进行设置",[14,142219,142220],{},"vistied对已访问的进行改变",[14,142222,142223],{},"hover鼠标经过就会变",[14,142225,142226],{},"active常按(点)就会变",[451,142228,142230],{"className":141045,"code":142229,"language":141047,"meta":32,"style":32},"\u002F* 链接伪类选择器 —— 按 LVHA 顺序 *\u002F\na:link {\n  color: #333;\n  text-decoration: none;\n}\na:visited {\n  color: purple;\n}\na:hover {\n  color: skyblue;\n  text-decoration: underline;\n}\na:active {\n  color: green;\n}\n",[457,142231,142232,142237,142246,142256,142266,142270,142279,142290,142294,142302,142312,142322,142326,142335,142346],{"__ignoreMap":32},[460,142233,142234],{"class":462,"line":463},[460,142235,142236],{"class":942},"\u002F* 链接伪类选择器 —— 按 LVHA 顺序 *\u002F\n",[460,142238,142239,142241,142244],{"class":462,"line":476},[460,142240,2756],{"class":470},[460,142242,142243],{"class":929},":link",[460,142245,1348],{"class":466},[460,142247,142248,142250,142252,142254],{"class":462,"line":482},[460,142249,87047],{"class":900},[460,142251,1961],{"class":466},[460,142253,78540],{"class":900},[460,142255,1966],{"class":466},[460,142257,142258,142260,142262,142264],{"class":462,"line":488},[460,142259,86644],{"class":900},[460,142261,1961],{"class":466},[460,142263,2629],{"class":900},[460,142265,1966],{"class":466},[460,142267,142268],{"class":462,"line":494},[460,142269,821],{"class":466},[460,142271,142272,142274,142277],{"class":462,"line":500},[460,142273,2756],{"class":470},[460,142275,142276],{"class":929},":visited",[460,142278,1348],{"class":466},[460,142280,142281,142283,142285,142288],{"class":462,"line":506},[460,142282,87047],{"class":900},[460,142284,1961],{"class":466},[460,142286,142287],{"class":900},"purple",[460,142289,1966],{"class":466},[460,142291,142292],{"class":462,"line":512},[460,142293,821],{"class":466},[460,142295,142296,142298,142300],{"class":462,"line":518},[460,142297,2756],{"class":470},[460,142299,77129],{"class":929},[460,142301,1348],{"class":466},[460,142303,142304,142306,142308,142310],{"class":462,"line":525},[460,142305,87047],{"class":900},[460,142307,1961],{"class":466},[460,142309,71116],{"class":900},[460,142311,1966],{"class":466},[460,142313,142314,142316,142318,142320],{"class":462,"line":531},[460,142315,86644],{"class":900},[460,142317,1961],{"class":466},[460,142319,141659],{"class":900},[460,142321,1966],{"class":466},[460,142323,142324],{"class":462,"line":537},[460,142325,821],{"class":466},[460,142327,142328,142330,142333],{"class":462,"line":543},[460,142329,2756],{"class":470},[460,142331,142332],{"class":929},":active",[460,142334,1348],{"class":466},[460,142336,142337,142339,142341,142344],{"class":462,"line":549},[460,142338,87047],{"class":900},[460,142340,1961],{"class":466},[460,142342,142343],{"class":900},"green",[460,142345,1966],{"class":466},[460,142347,142348],{"class":462,"line":555},[460,142349,821],{"class":466},[23,142351,142353,142354,142357],{"id":142352},"_735-伪类选择器","7.3.5 ",[142355,142356],"focus",{},"伪类选择器",[14,142359,142360,142362,142363,142365],{},[142355,142361],{}," 伪类选择器用于选取获得焦点的表单元素。 焦点就是光标，一般情况 ",[457,142364,141106],{}," 类表单元素才能获取，因此这个选择器也主要针对于表单元素来说。",[451,142367,142369],{"className":141045,"code":142368,"language":141047,"meta":32,"style":32},"input:focus {\n  border-color: skyblue;\n  outline: none;\n}\n",[457,142370,142371,142379,142390,142400],{"__ignoreMap":32},[460,142372,142373,142375,142377],{"class":462,"line":463},[460,142374,70068],{"class":470},[460,142376,2665],{"class":929},[460,142378,1348],{"class":466},[460,142380,142381,142384,142386,142388],{"class":462,"line":476},[460,142382,142383],{"class":900},"  border-color",[460,142385,1961],{"class":466},[460,142387,71116],{"class":900},[460,142389,1966],{"class":466},[460,142391,142392,142394,142396,142398],{"class":462,"line":482},[460,142393,86940],{"class":900},[460,142395,1961],{"class":466},[460,142397,2629],{"class":900},[460,142399,1966],{"class":466},[460,142401,142402],{"class":462,"line":488},[460,142403,821],{"class":466},[1944,142405,142406],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":32,"searchDepth":476,"depth":476,"links":142408},[142409,142414,142418],{"id":141784,"depth":476,"text":141785,"children":142410},[142411,142412,142413],{"id":141788,"depth":482,"text":141789},{"id":141872,"depth":482,"text":141873},{"id":141920,"depth":482,"text":141921},{"id":142010,"depth":476,"text":142011,"children":142415},[142416,142417],{"id":142014,"depth":482,"text":142015},{"id":142087,"depth":482,"text":142088},{"id":142097,"depth":476,"text":142098,"children":142419},[142420,142421,142422,142423,142424],{"id":142101,"depth":482,"text":142102},{"id":142154,"depth":482,"text":142155},{"id":142170,"depth":482,"text":142171},{"id":142190,"depth":482,"text":142191},{"id":142352,"depth":482,"text":142425},"7.3.5 伪类选择器",{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch07-css",{"title":141776,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch07-CSS引入方式与选择器进阶","5XV5_YAJT4dZrDp1IubvvQckZ5rLDX2qDFIIitfWb20",{"id":142432,"title":142433,"body":142434,"description":16682,"extension":16683,"meta":144357,"navigation":521,"path":144358,"seo":144359,"stem":144360,"__hash__":144361},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch08-CSS显示模式与背景特性.md","8. CSS显示模式与背景特性",{"type":7,"value":142435,"toc":144331},[142436,142439,142443,142452,142456,142482,142487,142490,142493,142496,142499,142503,142506,142516,142524,142528,142563,142568,142571,142574,142577,142580,142584,142587,142596,142600,142613,142618,142621,142624,142627,142631,142634,142638,142641,142696,142699,142730,142733,142787,142791,142794,142960,143083,143086,143089,143092,143095,143099,143102,143106,143109,143112,143116,143119,143150,143177,143205,143208,143212,143238,143281,143285,143379,143382,143409,143412,143415,143418,143421,143424,143427,143430,143433,143436,143440,143497,143524,143528,143576,143580,143621,143623,143626,143629,143632,143635,143639,143731,143734,143737,143740,143744,143867,144068,144072,144076,144079,144082,144085,144089,144092,144095,144120,144123,144126,144129,144132,144135,144139,144147,144209,144212,144270,144273,144276,144279,144282,144285,144288,144291,144328],[10,142437,142433],{"id":142438},"_8-css显示模式与背景特性",[18,142440,142442],{"id":142441},"_81-css元素显示模式","8.1 css元素显示模式",[14,142444,142445,142446,142448,142449,142451],{},"显示模式的作用是更好布局页面，元素显示模式就是元素（标签）以什么方式进行显示，比如",[457,142447,140656],{},"自己占一行，比如一行可以放多个",[457,142450,140659],{},"，HTML 元素一般分为块元素和行内元素两种类型",[23,142453,142455],{"id":142454},"_811-块元素","8.1.1 块元素",[14,142457,142458,142459,142461,142462,16957,142465,16957,142467,16957,142469,16957,142472,16957,142475,142478,142479,142481],{},"常见的块元素有",[457,142460,140560],{},"~",[457,142463,142464],{},"\u003Ch6>",[457,142466,140586],{},[457,142468,140656],{},[457,142470,142471],{},"\u003Cul>",[457,142473,142474],{},"\u003Col>",[457,142476,142477],{},"\u003Cli>","等，其中 ",[457,142480,140656],{}," 标签是最典型的块元素",[14,142483,142484],{},[3944,142485,142486],{},"块级元素的特点：",[14,142488,142489],{},"① 比较霸道，自己独占一行。",[14,142491,142492],{},"② 高度，宽度、外边距以及内边距都可以控制。",[14,142494,142495],{},"③ 宽度默认是容器（父级宽度）的100%。",[14,142497,142498],{},"④ 是一个容器及盒子，里面可以放行内或者块级元素。",[14,142500,142501],{},[3944,142502,357],{},[14,142504,142505],{},"①文字类的元素内不能使用块级元素",[14,142507,624,142508,142510,142511,142513,142514],{},[457,142509,140586],{}," 标签主要用于存放文字，因此 ",[457,142512,140586],{}," 里面不能放块级元素，特别是不能放",[457,142515,140656],{},[14,142517,142518,142519,142461,142521,142523],{},"⑥同理， ",[457,142520,140560],{},[457,142522,142464],{},"等都是文字类块级标签，里面也不能放其他块级元素",[23,142525,142527],{"id":142526},"_812-行内元素","8.1.2 行内元素",[14,142529,142530,142531,16957,142533,16957,142536,16957,142539,16957,142542,16957,142545,16957,142548,16957,142551,16957,142554,16957,142557,142559,142560,142562],{},"常见的行内元素有 ",[457,142532,140818],{},[457,142534,142535],{},"\u003Cstrong>",[457,142537,142538],{},"\u003Cb>",[457,142540,142541],{},"\u003Cem>",[457,142543,142544],{},"\u003Ci>",[457,142546,142547],{},"\u003Cdel>",[457,142549,142550],{},"\u003Cs>",[457,142552,142553],{},"\u003Cins>",[457,142555,142556],{},"\u003Cu>",[457,142558,140659],{}," 等，其中 ",[457,142561,140659],{}," 标签是最典型的行内元素。有的地方也将行内元素称为内联元素。",[14,142564,142565],{},[3944,142566,142567],{},"特点：",[14,142569,142570],{},"① 相邻行内元素在一行上，一行可以显示多个。",[14,142572,142573],{},"② 高、宽直接设置是无效的。",[14,142575,142576],{},"③ 默认宽度就是它本身内容的宽度。",[14,142578,142579],{},"④ 行内元素只能容纳文本或其他行内元素。",[14,142581,142582],{},[3944,142583,357],{},[14,142585,142586],{},"① 链接里面不能再放链接，也就是a里面不能再放a",[14,142588,142589,142590,142592,142593,142595],{},"②特殊情况链接 ",[457,142591,140818],{}," 里面可以放块级元素，但是给 ",[457,142594,140818],{}," 转换一下块级模式最安全",[23,142597,142599],{"id":142598},"_813-行内块元素","8.1.3 行内块元素",[14,142601,142602,142603,16957,142606,16957,142609,142612],{},"在行内元素中有几个特殊的标签 —— ",[457,142604,142605],{},"\u003Cimg \u002F>",[457,142607,142608],{},"\u003Cinput \u002F>",[457,142610,142611],{},"\u003Ctd>","，它们同时具有块元素和行内元素的特点。有些资料称它们为行内块元素",[14,142614,142615],{},[3944,142616,142617],{},"行内块元素的特点：",[14,142619,142620],{},"① 和相邻行内元素（行内块）在一行上，但是他们之间会有空白缝隙。一行可以显示多个（行内元素特点）",[14,142622,142623],{},"② 默认宽度就是它本身内容的宽度（行内元素特点）",[14,142625,142626],{},"③ 高度，行高、外边距以及内边距都可以控制（块级元素特点）",[23,142628,142630],{"id":142629},"_814-总结","8.1.4 总结",[30,142632],{"style":140901,"src":142633},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-033.png",[23,142635,142637],{"id":142636},"_815-元素显示模式的转换","8.1.5 元素显示模式的转换",[14,142639,142640],{},"①转换为块元素：display:block;",[451,142642,142644],{"className":141045,"code":142643,"language":141047,"meta":32,"style":32},"\u002F* 将行内元素 a 转换为块级元素 *\u002F\na {\n  display: block;\n  width: 100px;\n  height: 40px;\n}\n",[457,142645,142646,142651,142657,142668,142680,142692],{"__ignoreMap":32},[460,142647,142648],{"class":462,"line":463},[460,142649,142650],{"class":942},"\u002F* 将行内元素 a 转换为块级元素 *\u002F\n",[460,142652,142653,142655],{"class":462,"line":476},[460,142654,2756],{"class":470},[460,142656,1348],{"class":466},[460,142658,142659,142662,142664,142666],{"class":462,"line":482},[460,142660,142661],{"class":900},"  display",[460,142663,1961],{"class":466},[460,142665,7350],{"class":900},[460,142667,1966],{"class":466},[460,142669,142670,142672,142674,142676,142678],{"class":462,"line":488},[460,142671,86710],{"class":900},[460,142673,1961],{"class":466},[460,142675,2325],{"class":900},[460,142677,2017],{"class":887},[460,142679,1966],{"class":466},[460,142681,142682,142684,142686,142688,142690],{"class":462,"line":494},[460,142683,86930],{"class":900},[460,142685,1961],{"class":466},[460,142687,5504],{"class":900},[460,142689,2017],{"class":887},[460,142691,1966],{"class":466},[460,142693,142694],{"class":462,"line":500},[460,142695,821],{"class":466},[14,142697,142698],{},"②转换为行内元素：display:inline;",[451,142700,142702],{"className":141045,"code":142701,"language":141047,"meta":32,"style":32},"\u002F* 将块级元素 div 转换为行内元素 *\u002F\ndiv {\n  display: inline;\n}\n",[457,142703,142704,142709,142715,142726],{"__ignoreMap":32},[460,142705,142706],{"class":462,"line":463},[460,142707,142708],{"class":942},"\u002F* 将块级元素 div 转换为行内元素 *\u002F\n",[460,142710,142711,142713],{"class":462,"line":476},[460,142712,2737],{"class":470},[460,142714,1348],{"class":466},[460,142716,142717,142719,142721,142724],{"class":462,"line":482},[460,142718,142661],{"class":900},[460,142720,1961],{"class":466},[460,142722,142723],{"class":900},"inline",[460,142725,1966],{"class":466},[460,142727,142728],{"class":462,"line":488},[460,142729,821],{"class":466},[14,142731,142732],{},"③转换为行内块：display:inline-block;",[451,142734,142736],{"className":141045,"code":142735,"language":141047,"meta":32,"style":32},"\u002F* 将行内元素 span 转换为行内块元素 *\u002F\nspan {\n  display: inline-block;\n  width: 80px;\n  height: 30px;\n}\n",[457,142737,142738,142743,142749,142759,142771,142783],{"__ignoreMap":32},[460,142739,142740],{"class":462,"line":463},[460,142741,142742],{"class":942},"\u002F* 将行内元素 span 转换为行内块元素 *\u002F\n",[460,142744,142745,142747],{"class":462,"line":476},[460,142746,460],{"class":470},[460,142748,1348],{"class":466},[460,142750,142751,142753,142755,142757],{"class":462,"line":482},[460,142752,142661],{"class":900},[460,142754,1961],{"class":466},[460,142756,88513],{"class":900},[460,142758,1966],{"class":466},[460,142760,142761,142763,142765,142767,142769],{"class":462,"line":488},[460,142762,86710],{"class":900},[460,142764,1961],{"class":466},[460,142766,7265],{"class":900},[460,142768,2017],{"class":887},[460,142770,1966],{"class":466},[460,142772,142773,142775,142777,142779,142781],{"class":462,"line":494},[460,142774,86930],{"class":900},[460,142776,1961],{"class":466},[460,142778,17659],{"class":900},[460,142780,2017],{"class":887},[460,142782,1966],{"class":466},[460,142784,142785],{"class":462,"line":500},[460,142786,821],{"class":466},[23,142788,142790],{"id":142789},"_816-小米侧边栏","8.1.6 小米侧边栏",[30,142792],{"style":140901,"src":142793},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-034.png",[451,142795,142797],{"className":141792,"code":142796,"language":141794,"meta":32,"style":32},"\u003C!-- 小米侧边栏案例 -->\n\u003Cdiv class=\"sidebar\">\n  \u003Ca href=\"#\">手机 电话卡\u003C\u002Fa>\n  \u003Ca href=\"#\">电视 盒子\u003C\u002Fa>\n  \u003Ca href=\"#\">笔记本 平板\u003C\u002Fa>\n  \u003Ca href=\"#\">出行 穿戴\u003C\u002Fa>\n  \u003Ca href=\"#\">智能 路由器\u003C\u002Fa>\n  \u003Ca href=\"#\">健康 儿童\u003C\u002Fa>\n  \u003Ca href=\"#\">耳机 音响\u003C\u002Fa>\n\u003C\u002Fdiv>\n",[457,142798,142799,142804,142819,142838,142857,142876,142895,142914,142933,142952],{"__ignoreMap":32},[460,142800,142801],{"class":462,"line":463},[460,142802,142803],{"class":942},"\u003C!-- 小米侧边栏案例 -->\n",[460,142805,142806,142808,142810,142812,142814,142817],{"class":462,"line":476},[460,142807,781],{"class":466},[460,142809,2737],{"class":470},[460,142811,2740],{"class":929},[460,142813,894],{"class":466},[460,142815,142816],{"class":1353},"\"sidebar\"",[460,142818,473],{"class":466},[460,142820,142821,142823,142825,142827,142829,142831,142834,142836],{"class":462,"line":482},[460,142822,467],{"class":466},[460,142824,2756],{"class":470},[460,142826,2759],{"class":929},[460,142828,894],{"class":466},[460,142830,2764],{"class":1353},[460,142832,142833],{"class":466},">手机 电话卡\u003C\u002F",[460,142835,2756],{"class":470},[460,142837,473],{"class":466},[460,142839,142840,142842,142844,142846,142848,142850,142853,142855],{"class":462,"line":488},[460,142841,467],{"class":466},[460,142843,2756],{"class":470},[460,142845,2759],{"class":929},[460,142847,894],{"class":466},[460,142849,2764],{"class":1353},[460,142851,142852],{"class":466},">电视 盒子\u003C\u002F",[460,142854,2756],{"class":470},[460,142856,473],{"class":466},[460,142858,142859,142861,142863,142865,142867,142869,142872,142874],{"class":462,"line":494},[460,142860,467],{"class":466},[460,142862,2756],{"class":470},[460,142864,2759],{"class":929},[460,142866,894],{"class":466},[460,142868,2764],{"class":1353},[460,142870,142871],{"class":466},">笔记本 平板\u003C\u002F",[460,142873,2756],{"class":470},[460,142875,473],{"class":466},[460,142877,142878,142880,142882,142884,142886,142888,142891,142893],{"class":462,"line":500},[460,142879,467],{"class":466},[460,142881,2756],{"class":470},[460,142883,2759],{"class":929},[460,142885,894],{"class":466},[460,142887,2764],{"class":1353},[460,142889,142890],{"class":466},">出行 穿戴\u003C\u002F",[460,142892,2756],{"class":470},[460,142894,473],{"class":466},[460,142896,142897,142899,142901,142903,142905,142907,142910,142912],{"class":462,"line":506},[460,142898,467],{"class":466},[460,142900,2756],{"class":470},[460,142902,2759],{"class":929},[460,142904,894],{"class":466},[460,142906,2764],{"class":1353},[460,142908,142909],{"class":466},">智能 路由器\u003C\u002F",[460,142911,2756],{"class":470},[460,142913,473],{"class":466},[460,142915,142916,142918,142920,142922,142924,142926,142929,142931],{"class":462,"line":512},[460,142917,467],{"class":466},[460,142919,2756],{"class":470},[460,142921,2759],{"class":929},[460,142923,894],{"class":466},[460,142925,2764],{"class":1353},[460,142927,142928],{"class":466},">健康 儿童\u003C\u002F",[460,142930,2756],{"class":470},[460,142932,473],{"class":466},[460,142934,142935,142937,142939,142941,142943,142945,142948,142950],{"class":462,"line":518},[460,142936,467],{"class":466},[460,142938,2756],{"class":470},[460,142940,2759],{"class":929},[460,142942,894],{"class":466},[460,142944,2764],{"class":1353},[460,142946,142947],{"class":466},">耳机 音响\u003C\u002F",[460,142949,2756],{"class":470},[460,142951,473],{"class":466},[460,142953,142954,142956,142958],{"class":462,"line":525},[460,142955,1776],{"class":466},[460,142957,2737],{"class":470},[460,142959,473],{"class":466},[451,142961,142963],{"className":141045,"code":142962,"language":141047,"meta":32,"style":32},".sidebar a {\n  display: block;\n  width: 234px;\n  height: 42px;\n  line-height: 42px;\n  padding-left: 30px;\n  color: #fff;\n  background-color: #55585a;\n}\n.sidebar a:hover {\n  background-color: #ff6700;\n}\n",[457,142964,142965,142974,142984,142997,143009,143021,143033,143043,143054,143058,143068,143079],{"__ignoreMap":32},[460,142966,142967,142970,142972],{"class":462,"line":463},[460,142968,142969],{"class":929},".sidebar",[460,142971,2574],{"class":470},[460,142973,1348],{"class":466},[460,142975,142976,142978,142980,142982],{"class":462,"line":476},[460,142977,142661],{"class":900},[460,142979,1961],{"class":466},[460,142981,7350],{"class":900},[460,142983,1966],{"class":466},[460,142985,142986,142988,142990,142993,142995],{"class":462,"line":482},[460,142987,86710],{"class":900},[460,142989,1961],{"class":466},[460,142991,142992],{"class":900},"234",[460,142994,2017],{"class":887},[460,142996,1966],{"class":466},[460,142998,142999,143001,143003,143005,143007],{"class":462,"line":488},[460,143000,86930],{"class":900},[460,143002,1961],{"class":466},[460,143004,17184],{"class":900},[460,143006,2017],{"class":887},[460,143008,1966],{"class":466},[460,143010,143011,143013,143015,143017,143019],{"class":462,"line":494},[460,143012,141729],{"class":900},[460,143014,1961],{"class":466},[460,143016,17184],{"class":900},[460,143018,2017],{"class":887},[460,143020,1966],{"class":466},[460,143022,143023,143025,143027,143029,143031],{"class":462,"line":500},[460,143024,86965],{"class":900},[460,143026,1961],{"class":466},[460,143028,17659],{"class":900},[460,143030,2017],{"class":887},[460,143032,1966],{"class":466},[460,143034,143035,143037,143039,143041],{"class":462,"line":506},[460,143036,87047],{"class":900},[460,143038,1961],{"class":466},[460,143040,2690],{"class":900},[460,143042,1966],{"class":466},[460,143044,143045,143047,143049,143052],{"class":462,"line":512},[460,143046,87020],{"class":900},[460,143048,1961],{"class":466},[460,143050,143051],{"class":900},"#55585a",[460,143053,1966],{"class":466},[460,143055,143056],{"class":462,"line":518},[460,143057,821],{"class":466},[460,143059,143060,143062,143064,143066],{"class":462,"line":525},[460,143061,142969],{"class":929},[460,143063,2574],{"class":470},[460,143065,77129],{"class":929},[460,143067,1348],{"class":466},[460,143069,143070,143072,143074,143077],{"class":462,"line":531},[460,143071,87020],{"class":900},[460,143073,1961],{"class":466},[460,143075,143076],{"class":900},"#ff6700",[460,143078,1966],{"class":466},[460,143080,143081],{"class":462,"line":537},[460,143082,821],{"class":466},[30,143084],{"style":140901,"src":143085},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-035.png",[14,143087,143088],{},"行高=盒子高度：实现文字的垂直居中",[14,143090,143091],{},"原理讲解：",[30,143093],{"style":140901,"src":143094},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-036.png",[18,143096,143098],{"id":143097},"_82-css背景","8.2 css背景",[14,143100,143101],{},"背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等",[23,143103,143105],{"id":143104},"_821-背景颜色","8.2.1 背景颜色",[14,143107,143108],{},"background-color:颜色值;",[14,143110,143111],{},"一般情况下元素背景颜色默认值是 transparent（透明）",[23,143113,143115],{"id":143114},"_822-背景图片","8.2.2 背景图片",[14,143117,143118],{},"用于logo 或者一些装饰性的小图片或者是超大的背景图片, 优点是非常便于控制位置. (精灵图也是一种运用场景)",[451,143120,143122],{"className":141045,"code":143121,"language":141047,"meta":32,"style":32},"div {\n  background-image: url(images\u002Fbg.png);\n}\n",[457,143123,143124,143130,143146],{"__ignoreMap":32},[460,143125,143126,143128],{"class":462,"line":463},[460,143127,2737],{"class":470},[460,143129,1348],{"class":466},[460,143131,143132,143135,143137,143139,143141,143144],{"class":462,"line":476},[460,143133,143134],{"class":900},"  background-image",[460,143136,1961],{"class":466},[460,143138,77911],{"class":900},[460,143140,2174],{"class":466},[460,143142,143143],{"class":3380},"images\u002Fbg.png",[460,143145,2254],{"class":466},[460,143147,143148],{"class":462,"line":482},[460,143149,821],{"class":466},[16884,143151,143152,143161],{},[16887,143153,143154],{},[16890,143155,143156,143159],{},[16893,143157,143158],{"align":40149},"参数值",[16893,143160,117189],{"align":40149},[16930,143162,143163,143170],{},[16890,143164,143165,143167],{},[16935,143166,2629],{"align":40149},[16935,143168,143169],{"align":40149},"无背景图（默认的）",[16890,143171,143172,143174],{},[16935,143173,77911],{"align":40149},[16935,143175,143176],{"align":40149},"使用绝对或相对地址指定背景图像",[451,143178,143179],{"className":141045,"code":143121,"language":141047,"meta":32,"style":32},[457,143180,143181,143187,143201],{"__ignoreMap":32},[460,143182,143183,143185],{"class":462,"line":463},[460,143184,2737],{"class":470},[460,143186,1348],{"class":466},[460,143188,143189,143191,143193,143195,143197,143199],{"class":462,"line":476},[460,143190,143134],{"class":900},[460,143192,1961],{"class":466},[460,143194,77911],{"class":900},[460,143196,2174],{"class":466},[460,143198,143143],{"class":3380},[460,143200,2254],{"class":466},[460,143202,143203],{"class":462,"line":482},[460,143204,821],{"class":466},[14,143206,143207],{},"注意：背景图片后面的地址，不能忘记加url,也不能加引号",[23,143209,143211],{"id":143210},"_823-背景平铺","8.2.3 背景平铺",[451,143213,143215],{"className":141045,"code":143214,"language":141047,"meta":32,"style":32},"div {\n  background-repeat: no-repeat;\n}\n",[457,143216,143217,143223,143234],{"__ignoreMap":32},[460,143218,143219,143221],{"class":462,"line":463},[460,143220,2737],{"class":470},[460,143222,1348],{"class":466},[460,143224,143225,143228,143230,143232],{"class":462,"line":476},[460,143226,143227],{"class":900},"  background-repeat",[460,143229,1961],{"class":466},[460,143231,77921],{"class":900},[460,143233,1966],{"class":466},[460,143235,143236],{"class":462,"line":482},[460,143237,821],{"class":466},[16884,143239,143240,143248],{},[16887,143241,143242],{},[16890,143243,143244,143246],{},[16893,143245,143158],{"align":40149},[16893,143247,117189],{"align":40149},[16930,143249,143250,143258,143265,143273],{},[16890,143251,143252,143255],{},[16935,143253,143254],{"align":40149},"repeat",[16935,143256,143257],{"align":40149},"背景图像在纵向和横向上平铺（默认的）",[16890,143259,143260,143262],{},[16935,143261,77921],{"align":40149},[16935,143263,143264],{"align":40149},"背景图像不平铺",[16890,143266,143267,143270],{},[16935,143268,143269],{"align":40149},"repeat-x",[16935,143271,143272],{"align":40149},"背景图像在横向上平铺",[16890,143274,143275,143278],{},[16935,143276,143277],{"align":40149},"repeat-y",[16935,143279,143280],{"align":40149},"背景图像在纵向平铺",[23,143282,143284],{"id":143283},"_824-背景图片位置","8.2.4 背景图片位置",[451,143286,143288],{"className":141045,"code":143287,"language":141047,"meta":32,"style":32},"\u002F* 方位名词 *\u002F\ndiv {\n  background-position: center top;\n}\n\u002F* 精确单位 *\u002F\ndiv {\n  background-position: 20px 50px;\n}\n\u002F* 混合单位 *\u002F\ndiv {\n  background-position: 20px center;\n}\n",[457,143289,143290,143295,143301,143315,143319,143324,143330,143346,143350,143355,143361,143375],{"__ignoreMap":32},[460,143291,143292],{"class":462,"line":463},[460,143293,143294],{"class":942},"\u002F* 方位名词 *\u002F\n",[460,143296,143297,143299],{"class":462,"line":476},[460,143298,2737],{"class":470},[460,143300,1348],{"class":466},[460,143302,143303,143306,143308,143310,143313],{"class":462,"line":482},[460,143304,143305],{"class":900},"  background-position",[460,143307,1961],{"class":466},[460,143309,5545],{"class":900},[460,143311,143312],{"class":900}," top",[460,143314,1966],{"class":466},[460,143316,143317],{"class":462,"line":488},[460,143318,821],{"class":466},[460,143320,143321],{"class":462,"line":494},[460,143322,143323],{"class":942},"\u002F* 精确单位 *\u002F\n",[460,143325,143326,143328],{"class":462,"line":500},[460,143327,2737],{"class":470},[460,143329,1348],{"class":466},[460,143331,143332,143334,143336,143338,143340,143342,143344],{"class":462,"line":506},[460,143333,143305],{"class":900},[460,143335,1961],{"class":466},[460,143337,2110],{"class":900},[460,143339,2017],{"class":887},[460,143341,73710],{"class":900},[460,143343,2017],{"class":887},[460,143345,1966],{"class":466},[460,143347,143348],{"class":462,"line":512},[460,143349,821],{"class":466},[460,143351,143352],{"class":462,"line":518},[460,143353,143354],{"class":942},"\u002F* 混合单位 *\u002F\n",[460,143356,143357,143359],{"class":462,"line":525},[460,143358,2737],{"class":470},[460,143360,1348],{"class":466},[460,143362,143363,143365,143367,143369,143371,143373],{"class":462,"line":531},[460,143364,143305],{"class":900},[460,143366,1961],{"class":466},[460,143368,2110],{"class":900},[460,143370,2017],{"class":887},[460,143372,33562],{"class":900},[460,143374,1966],{"class":466},[460,143376,143377],{"class":462,"line":537},[460,143378,821],{"class":466},[14,143380,143381],{},"参数代表的意思是：x 坐标和 y 坐标。 可以使用 方位名词 或者 精确单位",[16884,143383,143384,143392],{},[16887,143385,143386],{},[16890,143387,143388,143390],{},[16893,143389,143158],{"align":40149},[16893,143391,42281],{"align":40149},[16930,143393,143394,143401],{},[16890,143395,143396,143398],{},[16935,143397,68231],{"align":40149},[16935,143399,143400],{"align":40149},"百分数|由浮点数和单位标识符组成的长度值",[16890,143402,143403,143406],{},[16935,143404,143405],{"align":40149},"position",[16935,143407,143408],{"align":40149},"top|center|bottom|left|center|right 方位名词",[14,143410,143411],{},"其他说明：",[14,143413,143414],{},"①参数是方位名词",[14,143416,143417],{},"如果指定的两个值都是方位名词，则两个值前后顺序无关，比如 left top 和 top left 效果一致",[14,143419,143420],{},"如果只指定了一个方位名词，另一个值省略，则第二个值默认居中对齐",[14,143422,143423],{},"②参数是精确单位",[14,143425,143426],{},"如果参数值是精确坐标，那么第一个肯定是 x 坐标，第二个一定是 y 坐标",[14,143428,143429],{},"如果只指定一个数值，那该数值一定是 x 坐标，另一个默认垂直居中",[14,143431,143432],{},"③参数是混合单位",[14,143434,143435],{},"如果指定的两个值是精确单位和方位名词混合使用，则第一个值是 x 坐标，第二个值是 y 坐标",[23,143437,143439],{"id":143438},"_825-背景图片固定","8.2.5 背景图片固定",[451,143441,143443],{"className":141045,"code":143442,"language":141047,"meta":32,"style":32},"\u002F* 背景滚动（默认） *\u002F\ndiv {\n  background-attachment: scroll;\n}\n\u002F* 背景固定 *\u002F\ndiv {\n  background-attachment: fixed;\n}\n",[457,143444,143445,143450,143456,143468,143472,143477,143483,143493],{"__ignoreMap":32},[460,143446,143447],{"class":462,"line":463},[460,143448,143449],{"class":942},"\u002F* 背景滚动（默认） *\u002F\n",[460,143451,143452,143454],{"class":462,"line":476},[460,143453,2737],{"class":470},[460,143455,1348],{"class":466},[460,143457,143458,143461,143463,143466],{"class":462,"line":482},[460,143459,143460],{"class":900},"  background-attachment",[460,143462,1961],{"class":466},[460,143464,143465],{"class":900},"scroll",[460,143467,1966],{"class":466},[460,143469,143470],{"class":462,"line":488},[460,143471,821],{"class":466},[460,143473,143474],{"class":462,"line":494},[460,143475,143476],{"class":942},"\u002F* 背景固定 *\u002F\n",[460,143478,143479,143481],{"class":462,"line":500},[460,143480,2737],{"class":470},[460,143482,1348],{"class":466},[460,143484,143485,143487,143489,143491],{"class":462,"line":506},[460,143486,143460],{"class":900},[460,143488,1961],{"class":466},[460,143490,10009],{"class":900},[460,143492,1966],{"class":466},[460,143494,143495],{"class":462,"line":512},[460,143496,821],{"class":466},[16884,143498,143499,143508],{},[16887,143500,143501],{},[16890,143502,143503,143506],{},[16893,143504,143505],{"align":40149},"参数",[16893,143507,117189],{"align":40149},[16930,143509,143510,143517],{},[16890,143511,143512,143514],{},[16935,143513,143465],{"align":40149},[16935,143515,143516],{"align":40149},"背景图像是随对象内容滚动",[16890,143518,143519,143521],{},[16935,143520,10009],{"align":40149},[16935,143522,143523],{"align":40149},"背景图像固定",[23,143525,143527],{"id":143526},"_826-背景样式合写","8.2.6 背景样式合写",[451,143529,143531],{"className":141045,"code":143530,"language":141047,"meta":32,"style":32},"\u002F* 背景复合写法：颜色 图片 平铺 滚动 位置 *\u002F\ndiv {\n  background: #fff url(images\u002Fbg.png) no-repeat fixed center top;\n}\n",[457,143532,143533,143538,143544,143572],{"__ignoreMap":32},[460,143534,143535],{"class":462,"line":463},[460,143536,143537],{"class":942},"\u002F* 背景复合写法：颜色 图片 平铺 滚动 位置 *\u002F\n",[460,143539,143540,143542],{"class":462,"line":476},[460,143541,2737],{"class":470},[460,143543,1348],{"class":466},[460,143545,143546,143548,143550,143552,143555,143557,143559,143561,143563,143566,143568,143570],{"class":462,"line":482},[460,143547,86753],{"class":900},[460,143549,1961],{"class":466},[460,143551,2690],{"class":900},[460,143553,143554],{"class":900}," url",[460,143556,2174],{"class":466},[460,143558,143143],{"class":3380},[460,143560,8296],{"class":466},[460,143562,77921],{"class":900},[460,143564,143565],{"class":900}," fixed",[460,143567,33562],{"class":900},[460,143569,143312],{"class":900},[460,143571,1966],{"class":466},[460,143573,143574],{"class":462,"line":488},[460,143575,821],{"class":466},[23,143577,143579],{"id":143578},"_827-背景色半透明","8.2.7 背景色半透明",[451,143581,143583],{"className":141045,"code":143582,"language":141047,"meta":32,"style":32},"div {\n  background: rgba(0, 0, 0, 0.3);\n}\n",[457,143584,143585,143591,143617],{"__ignoreMap":32},[460,143586,143587,143589],{"class":462,"line":463},[460,143588,2737],{"class":470},[460,143590,1348],{"class":466},[460,143592,143593,143595,143597,143599,143601,143603,143605,143607,143609,143611,143613,143615],{"class":462,"line":476},[460,143594,86753],{"class":900},[460,143596,1961],{"class":466},[460,143598,71333],{"class":900},[460,143600,2174],{"class":466},[460,143602,936],{"class":900},[460,143604,904],{"class":466},[460,143606,936],{"class":900},[460,143608,904],{"class":466},[460,143610,936],{"class":900},[460,143612,904],{"class":466},[460,143614,115014],{"class":900},[460,143616,2254],{"class":466},[460,143618,143619],{"class":462,"line":482},[460,143620,821],{"class":466},[14,143622,113889],{},[14,143624,143625],{},"①最后一个参数是 alpha 透明度，取值范围在 0~1之间",[14,143627,143628],{},"②我们习惯把 0.3 的 0 省略掉，写为 background: rgba(0, 0, 0, .3);",[14,143630,143631],{},"③背景半透明是指盒子背景半透明，盒子里面的内容不受影响",[14,143633,143634],{},"④CSS3 新增属性，是 IE9+ 版本浏览器才支持的，但是现在实际开发,我们不太关注兼容性写法了,可以放心使用",[23,143636,143638],{"id":143637},"_828-总结","8.2.8 总结",[16884,143640,143641,143652],{},[16887,143642,143643],{},[16890,143644,143645,143648,143650],{},[16893,143646,143647],{"align":40149},"属性",[16893,143649,117189],{"align":40149},[16893,143651,16898],{"align":40149},[16930,143653,143654,143665,143676,143687,143698,143709,143720],{},[16890,143655,143656,143659,143662],{},[16935,143657,143658],{"align":40149},"background-color",[16935,143660,143661],{"align":40149},"背景颜色",[16935,143663,143664],{"align":40149},"预定义的颜色值\u002F十六进制\u002FRGB代码",[16890,143666,143667,143670,143673],{},[16935,143668,143669],{"align":40149},"background-image",[16935,143671,143672],{"align":40149},"背景图片",[16935,143674,143675],{"align":40149},"url(图片路径)",[16890,143677,143678,143681,143684],{},[16935,143679,143680],{"align":40149},"background-repeat",[16935,143682,143683],{"align":40149},"是否平铺",[16935,143685,143686],{"align":40149},"repeat\u002Fno-repeat\u002Frepeat-x\u002Frepeat-y",[16890,143688,143689,143692,143695],{},[16935,143690,143691],{"align":40149},"background-position",[16935,143693,143694],{"align":40149},"背景位置",[16935,143696,143697],{"align":40149},"length\u002Fposition 分别是x和y坐标",[16890,143699,143700,143703,143706],{},[16935,143701,143702],{"align":40149},"background-attachment",[16935,143704,143705],{"align":40149},"背景附着",[16935,143707,143708],{"align":40149},"scroll(背景滚动) \u002Ffixed (背景固定)",[16890,143710,143711,143714,143717],{},[16935,143712,143713],{"align":40149},"背景简写",[16935,143715,143716],{"align":40149},"书写更简单",[16935,143718,143719],{"align":40149},"背景颜色 背景图片地址 背景平铺 背景滚动 背景位置；",[16890,143721,143722,143725,143728],{},[16935,143723,143724],{"align":40149},"背景半透明",[16935,143726,143727],{"align":40149},"背景颜色半透明",[16935,143729,143730],{"align":40149},"background: rgba(0,0,0.3); 后面必须是4个值",[14,143732,143733],{},"颜色渐变：",[30,143735],{"style":140901,"src":143736},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-037.png",[30,143738],{"style":140901,"src":143739},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-038.png",[23,143741,143743],{"id":143742},"_829-案例-五彩导航栏","8.2.9 案例-五彩导航栏",[451,143745,143747],{"className":141792,"code":143746,"language":141794,"meta":32,"style":32},"\u003Cdiv class=\"nav\">\n  \u003Ca href=\"#\">五彩导航1\u003C\u002Fa>\n  \u003Ca href=\"#\">五彩导航2\u003C\u002Fa>\n  \u003Ca href=\"#\">五彩导航3\u003C\u002Fa>\n  \u003Ca href=\"#\">五彩导航4\u003C\u002Fa>\n  \u003Ca href=\"#\">五彩导航5\u003C\u002Fa>\n\u003C\u002Fdiv>\n",[457,143748,143749,143764,143783,143802,143821,143840,143859],{"__ignoreMap":32},[460,143750,143751,143753,143755,143757,143759,143762],{"class":462,"line":463},[460,143752,781],{"class":466},[460,143754,2737],{"class":470},[460,143756,2740],{"class":929},[460,143758,894],{"class":466},[460,143760,143761],{"class":1353},"\"nav\"",[460,143763,473],{"class":466},[460,143765,143766,143768,143770,143772,143774,143776,143779,143781],{"class":462,"line":476},[460,143767,467],{"class":466},[460,143769,2756],{"class":470},[460,143771,2759],{"class":929},[460,143773,894],{"class":466},[460,143775,2764],{"class":1353},[460,143777,143778],{"class":466},">五彩导航1\u003C\u002F",[460,143780,2756],{"class":470},[460,143782,473],{"class":466},[460,143784,143785,143787,143789,143791,143793,143795,143798,143800],{"class":462,"line":482},[460,143786,467],{"class":466},[460,143788,2756],{"class":470},[460,143790,2759],{"class":929},[460,143792,894],{"class":466},[460,143794,2764],{"class":1353},[460,143796,143797],{"class":466},">五彩导航2\u003C\u002F",[460,143799,2756],{"class":470},[460,143801,473],{"class":466},[460,143803,143804,143806,143808,143810,143812,143814,143817,143819],{"class":462,"line":488},[460,143805,467],{"class":466},[460,143807,2756],{"class":470},[460,143809,2759],{"class":929},[460,143811,894],{"class":466},[460,143813,2764],{"class":1353},[460,143815,143816],{"class":466},">五彩导航3\u003C\u002F",[460,143818,2756],{"class":470},[460,143820,473],{"class":466},[460,143822,143823,143825,143827,143829,143831,143833,143836,143838],{"class":462,"line":494},[460,143824,467],{"class":466},[460,143826,2756],{"class":470},[460,143828,2759],{"class":929},[460,143830,894],{"class":466},[460,143832,2764],{"class":1353},[460,143834,143835],{"class":466},">五彩导航4\u003C\u002F",[460,143837,2756],{"class":470},[460,143839,473],{"class":466},[460,143841,143842,143844,143846,143848,143850,143852,143855,143857],{"class":462,"line":500},[460,143843,467],{"class":466},[460,143845,2756],{"class":470},[460,143847,2759],{"class":929},[460,143849,894],{"class":466},[460,143851,2764],{"class":1353},[460,143853,143854],{"class":466},">五彩导航5\u003C\u002F",[460,143856,2756],{"class":470},[460,143858,473],{"class":466},[460,143860,143861,143863,143865],{"class":462,"line":506},[460,143862,1776],{"class":466},[460,143864,2737],{"class":470},[460,143866,473],{"class":466},[451,143868,143870],{"className":141045,"code":143869,"language":141047,"meta":32,"style":32},".nav a {\n  display: inline-block;\n  width: 120px;\n  height: 58px;\n  text-align: center;\n  line-height: 58px;\n  color: #fff;\n}\n.nav a:nth-child(1) { background-color: #ff6700; }\n.nav a:nth-child(2) { background-color: #ff0000; }\n.nav a:nth-child(3) { background-color: #00a4ff; }\n.nav a:nth-child(4) { background-color: #ff00ff; }\n.nav a:nth-child(5) { background-color: #00ff00; }\n",[457,143871,143872,143881,143891,143903,143915,143925,143937,143947,143951,143976,143999,144022,144045],{"__ignoreMap":32},[460,143873,143874,143877,143879],{"class":462,"line":463},[460,143875,143876],{"class":929},".nav",[460,143878,2574],{"class":470},[460,143880,1348],{"class":466},[460,143882,143883,143885,143887,143889],{"class":462,"line":476},[460,143884,142661],{"class":900},[460,143886,1961],{"class":466},[460,143888,88513],{"class":900},[460,143890,1966],{"class":466},[460,143892,143893,143895,143897,143899,143901],{"class":462,"line":482},[460,143894,86710],{"class":900},[460,143896,1961],{"class":466},[460,143898,17532],{"class":900},[460,143900,2017],{"class":887},[460,143902,1966],{"class":466},[460,143904,143905,143907,143909,143911,143913],{"class":462,"line":488},[460,143906,86930],{"class":900},[460,143908,1961],{"class":466},[460,143910,17568],{"class":900},[460,143912,2017],{"class":887},[460,143914,1966],{"class":466},[460,143916,143917,143919,143921,143923],{"class":462,"line":494},[460,143918,86668],{"class":900},[460,143920,1961],{"class":466},[460,143922,5545],{"class":900},[460,143924,1966],{"class":466},[460,143926,143927,143929,143931,143933,143935],{"class":462,"line":500},[460,143928,141729],{"class":900},[460,143930,1961],{"class":466},[460,143932,17568],{"class":900},[460,143934,2017],{"class":887},[460,143936,1966],{"class":466},[460,143938,143939,143941,143943,143945],{"class":462,"line":506},[460,143940,87047],{"class":900},[460,143942,1961],{"class":466},[460,143944,2690],{"class":900},[460,143946,1966],{"class":466},[460,143948,143949],{"class":462,"line":512},[460,143950,821],{"class":466},[460,143952,143953,143955,143957,143960,143962,143964,143967,143969,143971,143973],{"class":462,"line":518},[460,143954,143876],{"class":929},[460,143956,2574],{"class":470},[460,143958,143959],{"class":929},":nth-child",[460,143961,2174],{"class":466},[460,143963,901],{"class":900},[460,143965,143966],{"class":466},") { ",[460,143968,143658],{"class":900},[460,143970,1961],{"class":466},[460,143972,143076],{"class":900},[460,143974,143975],{"class":466},"; }\n",[460,143977,143978,143980,143982,143984,143986,143988,143990,143992,143994,143997],{"class":462,"line":525},[460,143979,143876],{"class":929},[460,143981,2574],{"class":470},[460,143983,143959],{"class":929},[460,143985,2174],{"class":466},[460,143987,907],{"class":900},[460,143989,143966],{"class":466},[460,143991,143658],{"class":900},[460,143993,1961],{"class":466},[460,143995,143996],{"class":900},"#ff0000",[460,143998,143975],{"class":466},[460,144000,144001,144003,144005,144007,144009,144011,144013,144015,144017,144020],{"class":462,"line":531},[460,144002,143876],{"class":929},[460,144004,2574],{"class":470},[460,144006,143959],{"class":929},[460,144008,2174],{"class":466},[460,144010,913],{"class":900},[460,144012,143966],{"class":466},[460,144014,143658],{"class":900},[460,144016,1961],{"class":466},[460,144018,144019],{"class":900},"#00a4ff",[460,144021,143975],{"class":466},[460,144023,144024,144026,144028,144030,144032,144034,144036,144038,144040,144043],{"class":462,"line":537},[460,144025,143876],{"class":929},[460,144027,2574],{"class":470},[460,144029,143959],{"class":929},[460,144031,2174],{"class":466},[460,144033,918],{"class":900},[460,144035,143966],{"class":466},[460,144037,143658],{"class":900},[460,144039,1961],{"class":466},[460,144041,144042],{"class":900},"#ff00ff",[460,144044,143975],{"class":466},[460,144046,144047,144049,144051,144053,144055,144057,144059,144061,144063,144066],{"class":462,"line":543},[460,144048,143876],{"class":929},[460,144050,2574],{"class":470},[460,144052,143959],{"class":929},[460,144054,2174],{"class":466},[460,144056,7290],{"class":900},[460,144058,143966],{"class":466},[460,144060,143658],{"class":900},[460,144062,1961],{"class":466},[460,144064,144065],{"class":900},"#00ff00",[460,144067,143975],{"class":466},[18,144069,144071],{"id":144070},"_83-css三大特性","8.3 css三大特性",[23,144073,144075],{"id":144074},"_831-层叠性","8.3.1 层叠性",[14,144077,144078],{},"为了解决样式冲突问题",[14,144080,144081],{},"原则：①样式冲突，遵循的原则是就近原则，哪个样式离结构近，就执行哪个样式",[14,144083,144084],{},"   ②样式不冲突，不会层叠",[23,144086,144088],{"id":144087},"_832-继承性","8.3.2 继承性",[14,144090,144091],{},"子标签会继承父标签的某些样式，如文本颜色和字号。恰当地使用继承可以简化代码，降低 CSS 样式的复杂性",[14,144093,144094],{},"子元素可以继承父元素的样式：text-, font-, line-和color属性",[451,144096,144098],{"className":141045,"code":144097,"language":141047,"meta":32,"style":32},"p {\n  color: #333;\n}\n",[457,144099,144100,144106,144116],{"__ignoreMap":32},[460,144101,144102,144104],{"class":462,"line":463},[460,144103,14],{"class":470},[460,144105,1348],{"class":466},[460,144107,144108,144110,144112,144114],{"class":462,"line":476},[460,144109,87047],{"class":900},[460,144111,1961],{"class":466},[460,144113,78540],{"class":900},[460,144115,1966],{"class":466},[460,144117,144118],{"class":462,"line":482},[460,144119,821],{"class":466},[30,144121],{"style":140901,"src":144122},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-039.png",[14,144124,144125],{},"解释：①行高可以跟单位也可以不跟单位",[14,144127,144128],{},"②如果子元素没有设置行高，则会继承父元素的行高为 1.5",[14,144130,144131],{},"③此时子元素的行高是：当前子元素的文字大小 * 1.5",[14,144133,144134],{},"④body 行高 1.5 这样写法最大的优势就是里面子元素可以根据自己文字大小自动调整行高",[23,144136,144138],{"id":144137},"_833-优先级","8.3.3 优先级",[103,144140,144141,144144],{},[43,144142,144143],{},"选择器相同，则执行层叠性",[43,144145,144146],{},"选择器不同，则根据选择器权重执行",[16884,144148,144149,144159],{},[16887,144150,144151],{},[16890,144152,144153,144156],{},[16893,144154,144155],{"align":40149},"选择器",[16893,144157,144158],{"align":40149},"选择器权重",[16930,144160,144161,144169,144177,144185,144193,144201],{},[16890,144162,144163,144166],{},[16935,144164,144165],{"align":40149},"继承 或者*",[16935,144167,144168],{"align":40149},"0，0，0，0",[16890,144170,144171,144174],{},[16935,144172,144173],{"align":40149},"标签选择器",[16935,144175,144176],{"align":40149},"0，0，0，1",[16890,144178,144179,144182],{},[16935,144180,144181],{"align":40149},"类选择器，伪类选择器",[16935,144183,144184],{"align":40149},"0，0，1，0",[16890,144186,144187,144190],{},[16935,144188,144189],{"align":40149},"ID选择器",[16935,144191,144192],{"align":40149},"0，1，0，0",[16890,144194,144195,144198],{},[16935,144196,144197],{"align":40149},"行内样式",[16935,144199,144200],{"align":40149},"1，0，0，0",[16890,144202,144203,144206],{},[16935,144204,144205],{"align":40149},"！important",[16935,144207,144208],{"align":40149},"无穷大",[14,144210,144211],{},"! important用法：",[451,144213,144215],{"className":141045,"code":144214,"language":141047,"meta":32,"style":32},"\u002F* !important 拥有最高优先级 *\u002F\ndiv {\n  color: pink !important;\n}\n\u002F* 以下规则不会生效，因为上面有 !important *\u002F\ndiv {\n  color: red;\n}\n",[457,144216,144217,144222,144228,144241,144245,144250,144256,144266],{"__ignoreMap":32},[460,144218,144219],{"class":462,"line":463},[460,144220,144221],{"class":942},"\u002F* !important 拥有最高优先级 *\u002F\n",[460,144223,144224,144226],{"class":462,"line":476},[460,144225,2737],{"class":470},[460,144227,1348],{"class":466},[460,144229,144230,144232,144234,144236,144239],{"class":462,"line":482},[460,144231,87047],{"class":900},[460,144233,1961],{"class":466},[460,144235,5556],{"class":900},[460,144237,144238],{"class":887}," !important",[460,144240,1966],{"class":466},[460,144242,144243],{"class":462,"line":488},[460,144244,821],{"class":466},[460,144246,144247],{"class":462,"line":494},[460,144248,144249],{"class":942},"\u002F* 以下规则不会生效，因为上面有 !important *\u002F\n",[460,144251,144252,144254],{"class":462,"line":500},[460,144253,2737],{"class":470},[460,144255,1348],{"class":466},[460,144257,144258,144260,144262,144264],{"class":462,"line":506},[460,144259,87047],{"class":900},[460,144261,1961],{"class":466},[460,144263,73627],{"class":900},[460,144265,1966],{"class":466},[460,144267,144268],{"class":462,"line":512},[460,144269,821],{"class":466},[14,144271,144272],{},"优先级注意点：",[14,144274,144275],{},"①权重是有4组数字组成,但是不会有进位",[14,144277,144278],{},"②可以理解为类选择器永远大于元素选择器, id选择器永远大于类选择器,以此类推..",[14,144280,144281],{},"③等级判断从左向右，如果某一位数值相同，则判断下一位数值",[14,144283,144284],{},"④可以简单记忆法: 通配符和继承权重为0, 标签选择器为1,类(伪类)选择器为 10, id选择器 100, 行内样式表为 1000, !important 无穷大.",[14,144286,144287],{},"⑤继承的权重是0， 如果该元素没有直接选中，不管父元素权重多高，子元素得到的权重都是 0",[14,144289,144290],{},"⑥复合选择器",[16884,144292,144293,144303],{},[16887,144294,144295],{},[16890,144296,144297,144300],{},[16893,144298,144299],{"align":40149},"div ul li",[16893,144301,144302],{"align":40149},"0,0,0,3",[16930,144304,144305,144313,144321],{},[16890,144306,144307,144310],{},[16935,144308,144309],{"align":40149},".nav ul li",[16935,144311,144312],{"align":40149},"0,0,1,1这是个带有类选择器的后代选择器，有继承关系，实际最后权重就是一个类选择器加上一个标签选择器",[16890,144314,144315,144318],{},[16935,144316,144317],{"align":40149},"a:hover",[16935,144319,144320],{"align":40149},"0,0,1,1",[16890,144322,144323,144326],{},[16935,144324,144325],{"align":40149},".nav a",[16935,144327,144320],{"align":40149},[1944,144329,144330],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":144332},[144333,144341,144352],{"id":142441,"depth":476,"text":142442,"children":144334},[144335,144336,144337,144338,144339,144340],{"id":142454,"depth":482,"text":142455},{"id":142526,"depth":482,"text":142527},{"id":142598,"depth":482,"text":142599},{"id":142629,"depth":482,"text":142630},{"id":142636,"depth":482,"text":142637},{"id":142789,"depth":482,"text":142790},{"id":143097,"depth":476,"text":143098,"children":144342},[144343,144344,144345,144346,144347,144348,144349,144350,144351],{"id":143104,"depth":482,"text":143105},{"id":143114,"depth":482,"text":143115},{"id":143210,"depth":482,"text":143211},{"id":143283,"depth":482,"text":143284},{"id":143438,"depth":482,"text":143439},{"id":143526,"depth":482,"text":143527},{"id":143578,"depth":482,"text":143579},{"id":143637,"depth":482,"text":143638},{"id":143742,"depth":482,"text":143743},{"id":144070,"depth":476,"text":144071,"children":144353},[144354,144355,144356],{"id":144074,"depth":482,"text":144075},{"id":144087,"depth":482,"text":144088},{"id":144137,"depth":482,"text":144138},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch08-css",{"title":142433,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch08-CSS显示模式与背景特性","WYPqfeTLjHk3Kq5wyAvb9PzM-XrgcbuLbMXucvM7Pf4",{"id":144363,"title":144364,"body":144365,"description":16682,"extension":16683,"meta":145955,"navigation":521,"path":145956,"seo":145957,"stem":145958,"__hash__":145959},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch09-CSS盒模型浮动与切图.md","9. CSS盒模型浮动与切图",{"type":7,"value":144366,"toc":145934},[144367,144370,144374,144377,144380,144383,144386,144389,144392,144395,144399,144407,144444,144480,144483,144497,144502,144536,144539,144632,144637,144640,144670,144673,144678,144686,144690,144697,144743,144787,144792,144795,144798,144801,144804,144807,144810,144812,144815,144819,144824,144868,144873,144876,144879,144916,144921,144924,144927,144930,144933,144965,144968,144971,144974,145006,145009,145012,145015,145019,145022,145054,145057,145061,145081,145084,145092,145095,145099,145104,145107,145139,145144,145147,145185,145189,145194,145197,145200,145231,145234,145251,145256,145308,145368,145373,145427,145465,145469,145473,145476,145480,145488,145491,145493,145504,145509,145557,145591,145594,145597,145600,145603,145647,145650,145653,145656,145659,145662,145665,145709,145712,145715,145718,145721,145724,145727,145733,145736,145780,145783,145786,145789,145792,145795,145839,145842,145844,145847,145851,145855,145893,145897,145900,145903,145907,145915,145919,145922,145925,145928,145931],[10,144368,144364],{"id":144369},"_9-css盒模型浮动与切图",[18,144371,144373],{"id":144372},"_91-盒子模型","9.1 盒子模型",[14,144375,144376],{},"利用盒子来设计网页",[14,144378,144379],{},"盒子包含：边框、外边距、内边距、实际内容",[14,144381,144382],{},"网页布局设置：",[14,144384,144385],{},"①先准备相关的网页元素，网页元素基本都是盒子box",[14,144387,144388],{},"②利用css设置好盒子样式，然后摆放到相应位置",[14,144390,144391],{},"③往盒子里装内容",[30,144393],{"style":140901,"src":144394},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-040.png",[23,144396,144398],{"id":144397},"_911-边框border","9.1.1 边框（border）",[103,144400,144401,144404],{},[43,144402,144403],{},"border可以设置元素的边框。边框有三部分组成：边框宽度(粗细) 边框样式 边框颜色；",[43,144405,144406],{},"语法",[451,144408,144410],{"className":141045,"code":144409,"language":141047,"meta":32,"style":32},"\u002F* 边框复合写法：粗细 样式 颜色 *\u002F\ndiv {\n  border: 1px solid #ccc;\n}\n",[457,144411,144412,144417,144423,144440],{"__ignoreMap":32},[460,144413,144414],{"class":462,"line":463},[460,144415,144416],{"class":942},"\u002F* 边框复合写法：粗细 样式 颜色 *\u002F\n",[460,144418,144419,144421],{"class":462,"line":476},[460,144420,2737],{"class":470},[460,144422,1348],{"class":466},[460,144424,144425,144427,144429,144431,144433,144435,144438],{"class":462,"line":482},[460,144426,87038],{"class":900},[460,144428,1961],{"class":466},[460,144430,901],{"class":900},[460,144432,2017],{"class":887},[460,144434,7201],{"class":900},[460,144436,144437],{"class":900}," #ccc",[460,144439,1966],{"class":466},[460,144441,144442],{"class":462,"line":488},[460,144443,821],{"class":466},[16884,144445,144446,144454],{},[16887,144447,144448],{},[16890,144449,144450,144452],{},[16893,144451,143647],{"align":40149},[16893,144453,117189],{"align":40149},[16930,144455,144456,144464,144472],{},[16890,144457,144458,144461],{},[16935,144459,144460],{"align":40149},"border-width",[16935,144462,144463],{"align":40149},"定义边框粗细，单位是px",[16890,144465,144466,144469],{},[16935,144467,144468],{"align":40149},"border-style",[16935,144470,144471],{"align":40149},"边框的样式",[16890,144473,144474,144477],{},[16935,144475,144476],{"align":40149},"border-color",[16935,144478,144479],{"align":40149},"边框的颜色",[14,144481,144482],{},"边框样式 border-style 可以设置如下值：",[40,144484,144485,144488,144491,144494],{},[43,144486,144487],{},"none：没有边框即忽略所有边框的宽度（默认值）",[43,144489,144490],{},"solid：边框为单实线(最为常用的)",[43,144492,144493],{},"dashed：边框为虚线",[43,144495,144496],{},"dotted：边框为点线",[103,144498,144499],{"start":482},[43,144500,144501],{},"边框的合写分写",[451,144503,144504],{"className":141045,"code":144409,"language":141047,"meta":32,"style":32},[457,144505,144506,144510,144516,144532],{"__ignoreMap":32},[460,144507,144508],{"class":462,"line":463},[460,144509,144416],{"class":942},[460,144511,144512,144514],{"class":462,"line":476},[460,144513,2737],{"class":470},[460,144515,1348],{"class":466},[460,144517,144518,144520,144522,144524,144526,144528,144530],{"class":462,"line":482},[460,144519,87038],{"class":900},[460,144521,1961],{"class":466},[460,144523,901],{"class":900},[460,144525,2017],{"class":887},[460,144527,7201],{"class":900},[460,144529,144437],{"class":900},[460,144531,1966],{"class":466},[460,144533,144534],{"class":462,"line":488},[460,144535,821],{"class":466},[14,144537,144538],{},"边框分开写法：",[451,144540,144542],{"className":141045,"code":144541,"language":141047,"meta":32,"style":32},"\u002F* 边框分开写法 *\u002F\ndiv {\n  border-top: 1px solid #000;\n  border-right: 2px dashed #333;\n  border-bottom: 3px dotted #666;\n  border-left: 1px solid #999;\n}\n",[457,144543,144544,144549,144555,144573,144591,144610,144628],{"__ignoreMap":32},[460,144545,144546],{"class":462,"line":463},[460,144547,144548],{"class":942},"\u002F* 边框分开写法 *\u002F\n",[460,144550,144551,144553],{"class":462,"line":476},[460,144552,2737],{"class":470},[460,144554,1348],{"class":466},[460,144556,144557,144560,144562,144564,144566,144568,144571],{"class":462,"line":482},[460,144558,144559],{"class":900},"  border-top",[460,144561,1961],{"class":466},[460,144563,901],{"class":900},[460,144565,2017],{"class":887},[460,144567,7201],{"class":900},[460,144569,144570],{"class":900}," #000",[460,144572,1966],{"class":466},[460,144574,144575,144578,144580,144582,144584,144586,144589],{"class":462,"line":488},[460,144576,144577],{"class":900},"  border-right",[460,144579,1961],{"class":466},[460,144581,907],{"class":900},[460,144583,2017],{"class":887},[460,144585,78415],{"class":900},[460,144587,144588],{"class":900}," #333",[460,144590,1966],{"class":466},[460,144592,144593,144596,144598,144600,144602,144605,144608],{"class":462,"line":494},[460,144594,144595],{"class":900},"  border-bottom",[460,144597,1961],{"class":466},[460,144599,913],{"class":900},[460,144601,2017],{"class":887},[460,144603,144604],{"class":900}," dotted",[460,144606,144607],{"class":900}," #666",[460,144609,1966],{"class":466},[460,144611,144612,144615,144617,144619,144621,144623,144626],{"class":462,"line":500},[460,144613,144614],{"class":900},"  border-left",[460,144616,1961],{"class":466},[460,144618,901],{"class":900},[460,144620,2017],{"class":887},[460,144622,7201],{"class":900},[460,144624,144625],{"class":900}," #999",[460,144627,1966],{"class":466},[460,144629,144630],{"class":462,"line":506},[460,144631,821],{"class":466},[103,144633,144634],{"start":488},[43,144635,144636],{},"表格的细线边框",[14,144638,144639],{},"border-collapse 属性控制浏览器绘制表格边框的方式。它控制相邻单元格的边框",[451,144641,144643],{"className":141045,"code":144642,"language":141047,"meta":32,"style":32},"\u002F* 表格细线边框合并 *\u002F\ntable {\n  border-collapse: collapse;\n}\n",[457,144644,144645,144650,144656,144666],{"__ignoreMap":32},[460,144646,144647],{"class":462,"line":463},[460,144648,144649],{"class":942},"\u002F* 表格细线边框合并 *\u002F\n",[460,144651,144652,144654],{"class":462,"line":476},[460,144653,16884],{"class":470},[460,144655,1348],{"class":466},[460,144657,144658,144660,144662,144664],{"class":462,"line":482},[460,144659,86720],{"class":900},[460,144661,1961],{"class":466},[460,144663,81196],{"class":900},[460,144665,1966],{"class":466},[460,144667,144668],{"class":462,"line":488},[460,144669,821],{"class":466},[14,144671,144672],{},"要知道如果不进行合并的话，单元格之间边框如果原来每个边框1像素，现在就变成了1+1=2像素，边框就会变宽了，所以此时非常合并单元格，保持1像素 border-collapse:collapse",[103,144674,144675],{"start":494},[43,144676,144677],{},"解决边框额外增加盒子的实际大小的方法：",[40,144679,144680,144683],{},[43,144681,144682],{},"测量盒子大小的时候,不量边框",[43,144684,144685],{},"如果测量的时候包含了边框,则需要 width\u002Fheight 减去边框宽度",[23,144687,144689],{"id":144688},"_912-内边距","9.1.2 内边距",[103,144691,144692,144695],{},[43,144693,144694],{},"padding 属性用于设置内边距，即边框与内容之间的距离",[43,144696,144406],{},[16884,144698,144699,144709],{},[16887,144700,144701],{},[16890,144702,144703,144706],{},[16893,144704,144705],{"align":40149},"值的个数",[16893,144707,144708],{"align":40149},"表达意思",[16930,144710,144711,144719,144727,144735],{},[16890,144712,144713,144716],{},[16935,144714,144715],{"align":40149},"padding: 5px;",[16935,144717,144718],{"align":40149},"1个值，代表上下左右都有5个元素",[16890,144720,144721,144724],{},[16935,144722,144723],{"align":40149},"padding: 5px 10px;",[16935,144725,144726],{"align":40149},"2个值，代表上下内边距为5像素，左右内边距为10像素",[16890,144728,144729,144732],{},[16935,144730,144731],{"align":40149},"padding: 5px 10px 20px;",[16935,144733,144734],{"align":40149},"3个值，代表上内边距5像素，左右内边距为10像素，下内边距为20像素",[16890,144736,144737,144740],{},[16935,144738,144739],{"align":40149},"padding: 5px 10px 20px 30px;",[16935,144741,144742],{"align":40149},"4个值，上是5像素，右是10像素，下是20像素，左是30像素，顺时针",[16884,144744,144745,144753],{},[16887,144746,144747],{},[16890,144748,144749,144751],{},[16893,144750,143647],{"align":40149},[16893,144752,117189],{"align":40149},[16930,144754,144755,144763,144771,144779],{},[16890,144756,144757,144760],{},[16935,144758,144759],{"align":40149},"padding-left",[16935,144761,144762],{"align":40149},"左内边距",[16890,144764,144765,144768],{},[16935,144766,144767],{"align":40149},"padding-right",[16935,144769,144770],{"align":40149},"右内边距",[16890,144772,144773,144776],{},[16935,144774,144775],{"align":40149},"padding-top",[16935,144777,144778],{"align":40149},"上内边距",[16890,144780,144781,144784],{},[16935,144782,144783],{"align":40149},"padding-bottom",[16935,144785,144786],{"align":40149},"下内边距",[103,144788,144789],{"start":482},[43,144790,144791],{},"内边距会影响盒子的实际大小",[14,144793,144794],{},"当我们给盒子指定 padding 值之后，发生了 2 件事情：",[14,144796,144797],{},"①内容和边框有了距离，添加了内边距",[14,144799,144800],{},"②padding影响了盒子实际大小",[14,144802,144803],{},"内边距对盒子大小的影响：",[14,144805,144806],{},"①如果盒子已经有了宽度和高度，此时再指定内边框，会影响盒子的实际大小，会撑大盒子",[14,144808,144809],{},"②如何盒子本身没有指定width\u002Fheight属性, 则此时padding不会撑开盒子大小",[14,144811,109713],{},[14,144813,144814],{},"如果保证盒子跟效果图大小保持一致，则让 width\u002Fheight 减去多出来的内边距大小即可",[23,144816,144818],{"id":144817},"_913-外边距","9.1.3 外边距",[103,144820,144821],{},[43,144822,144823],{},"控制盒子与盒子之间的距离",[16884,144825,144826,144834],{},[16887,144827,144828],{},[16890,144829,144830,144832],{},[16893,144831,143647],{"align":40149},[16893,144833,117189],{"align":40149},[16930,144835,144836,144844,144852,144860],{},[16890,144837,144838,144841],{},[16935,144839,144840],{"align":40149},"margin-left",[16935,144842,144843],{"align":40149},"左外边距",[16890,144845,144846,144849],{},[16935,144847,144848],{"align":40149},"margin-right",[16935,144850,144851],{"align":40149},"右外边距",[16890,144853,144854,144857],{},[16935,144855,144856],{"align":40149},"margin-top",[16935,144858,144859],{"align":40149},"上外边距",[16890,144861,144862,144865],{},[16935,144863,144864],{"align":40149},"margin-bottom",[16935,144866,144867],{"align":40149},"下外边距",[103,144869,144870],{"start":476},[43,144871,144872],{},"外边距可以让块级盒子水平居中的两个条件：",[14,144874,144875],{},"①盒子必须指定了宽度（width）",[14,144877,144878],{},"②盒子左右的外边距都设置为 auto",[451,144880,144882],{"className":141045,"code":144881,"language":141047,"meta":32,"style":32},"\u002F* margin 复合写法（同上） *\u002F\n.box {\n  margin: 0 auto;  \u002F* 块级盒子水平居中 *\u002F\n}\n",[457,144883,144884,144889,144896,144912],{"__ignoreMap":32},[460,144885,144886],{"class":462,"line":463},[460,144887,144888],{"class":942},"\u002F* margin 复合写法（同上） *\u002F\n",[460,144890,144891,144894],{"class":462,"line":476},[460,144892,144893],{"class":929},".box",[460,144895,1348],{"class":466},[460,144897,144898,144900,144902,144904,144906,144909],{"class":462,"line":482},[460,144899,86612],{"class":900},[460,144901,1961],{"class":466},[460,144903,936],{"class":900},[460,144905,2030],{"class":900},[460,144907,144908],{"class":466},";  ",[460,144910,144911],{"class":942},"\u002F* 块级盒子水平居中 *\u002F\n",[460,144913,144914],{"class":462,"line":488},[460,144915,821],{"class":466},[103,144917,144918],{"start":482},[43,144919,144920],{},"外边距塌陷问题",[14,144922,144923],{},"当盒子中嵌套盒子时，让子盒子与父盒子进行隔开时，对子盒子使用margin时，子盒子并不产生影响，子盒子与父盒子没有隔开，父盒子产生了影响，发生了类似于塌陷的效果",[30,144925],{"style":140901,"src":144926},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-041.png",[14,144928,144929],{},"解决方案：",[14,144931,144932],{},"①可以为父亲元素定义上边距",[451,144934,144935],{"className":141045,"code":144881,"language":141047,"meta":32,"style":32},[457,144936,144937,144941,144947,144961],{"__ignoreMap":32},[460,144938,144939],{"class":462,"line":463},[460,144940,144888],{"class":942},[460,144942,144943,144945],{"class":462,"line":476},[460,144944,144893],{"class":929},[460,144946,1348],{"class":466},[460,144948,144949,144951,144953,144955,144957,144959],{"class":462,"line":482},[460,144950,86612],{"class":900},[460,144952,1961],{"class":466},[460,144954,936],{"class":900},[460,144956,2030],{"class":900},[460,144958,144908],{"class":466},[460,144960,144911],{"class":942},[460,144962,144963],{"class":462,"line":488},[460,144964,821],{"class":466},[14,144966,144967],{},"②可以为父亲元素定义上内边距",[14,144969,144970],{},"③可以为父亲元素添加overflow:hidden",[30,144972],{"style":140901,"src":144973},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-042.png",[451,144975,144976],{"className":141045,"code":144881,"language":141047,"meta":32,"style":32},[457,144977,144978,144982,144988,145002],{"__ignoreMap":32},[460,144979,144980],{"class":462,"line":463},[460,144981,144888],{"class":942},[460,144983,144984,144986],{"class":462,"line":476},[460,144985,144893],{"class":929},[460,144987,1348],{"class":466},[460,144989,144990,144992,144994,144996,144998,145000],{"class":462,"line":482},[460,144991,86612],{"class":900},[460,144993,1961],{"class":466},[460,144995,936],{"class":900},[460,144997,2030],{"class":900},[460,144999,144908],{"class":466},[460,145001,144911],{"class":942},[460,145003,145004],{"class":462,"line":488},[460,145005,821],{"class":466},[30,145007],{"style":140901,"src":145008},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-043.png",[14,145010,145011],{},"以后如果父盒子给定了宽高，子盒子要实现在父盒子中的居中效果，如果不给父盒子上边框，子盒子的margin对于竖直方向就会失效，但是水平方向不会失效",[14,145013,145014],{},"解决方式：子盒子使用定位；父盒子加边框；父盒子使用overflow:hidden",[23,145016,145018],{"id":145017},"_914-清除内外边距","9.1.4 清除内外边距",[14,145020,145021],{},"网页元素很多都带有默认的内外边距，而且不同浏览器默认的也不一致。因此我们在布局前，首先要清除下网页元素的内外边距",[451,145023,145024],{"className":141045,"code":144881,"language":141047,"meta":32,"style":32},[457,145025,145026,145030,145036,145050],{"__ignoreMap":32},[460,145027,145028],{"class":462,"line":463},[460,145029,144888],{"class":942},[460,145031,145032,145034],{"class":462,"line":476},[460,145033,144893],{"class":929},[460,145035,1348],{"class":466},[460,145037,145038,145040,145042,145044,145046,145048],{"class":462,"line":482},[460,145039,86612],{"class":900},[460,145041,1961],{"class":466},[460,145043,936],{"class":900},[460,145045,2030],{"class":900},[460,145047,144908],{"class":466},[460,145049,144911],{"class":942},[460,145051,145052],{"class":462,"line":488},[460,145053,821],{"class":466},[14,145055,145056],{},"注意：行内元素为了照顾兼容性，尽量只设置左右内外边距，不要设置上下内外边距。但是转换为块级和行内块元素就可以了",[23,145058,145060],{"id":145059},"_915-常用ps的基本操作","9.1.5 常用ps的基本操作",[40,145062,145063,145066,145069,145072,145075,145078],{},[43,145064,145065],{},"文件→打开 ：可以打开我们要测量的图片",[43,145067,145068],{},"Ctrl+R：可以打开标尺，或者 视图→标尺",[43,145070,145071],{},"右击标尺，把里面的单位改为像素",[43,145073,145074],{},"Ctrl+ 加号(+)可以放大视图， Ctrl+ 减号(-)可以缩小视图",[43,145076,145077],{},"按住空格键，鼠标可以变成小手，拖动 PS 视图",[43,145079,145080],{},"用选区拖动 可以测量大小",[30,145082],{"style":140901,"src":145083},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-044.png",[40,145085,145086,145089],{},[43,145087,145088],{},"Ctrl+ D 可以取消选区，或者在旁边空白处点击一下也可以取消选区",[43,145090,145091],{},"吸管取色工具",[30,145093],{"style":140901,"src":145094},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-045.png",[23,145096,145098],{"id":145097},"_916-案例","9.1.6 案例",[103,145100,145101],{},[43,145102,145103],{},"小米商品",[30,145105],{"style":140901,"src":145106},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-046.png",[451,145108,145109],{"className":141045,"code":144881,"language":141047,"meta":32,"style":32},[457,145110,145111,145115,145121,145135],{"__ignoreMap":32},[460,145112,145113],{"class":462,"line":463},[460,145114,144888],{"class":942},[460,145116,145117,145119],{"class":462,"line":476},[460,145118,144893],{"class":929},[460,145120,1348],{"class":466},[460,145122,145123,145125,145127,145129,145131,145133],{"class":462,"line":482},[460,145124,86612],{"class":900},[460,145126,1961],{"class":466},[460,145128,936],{"class":900},[460,145130,2030],{"class":900},[460,145132,144908],{"class":466},[460,145134,144911],{"class":942},[460,145136,145137],{"class":462,"line":488},[460,145138,821],{"class":466},[103,145140,145141],{"start":476},[43,145142,145143],{},"快报模块",[30,145145],{"style":140901,"src":145146},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-047.png",[451,145148,145150],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},"\u003C!-- HTML 代码示例 -->\n\u003Cdiv class=\"example\">\n  示例内容\n\u003C\u002Fdiv>\n",[457,145151,145152,145157,145172,145177],{"__ignoreMap":32},[460,145153,145154],{"class":462,"line":463},[460,145155,145156],{"class":942},"\u003C!-- HTML 代码示例 -->\n",[460,145158,145159,145161,145163,145165,145167,145170],{"class":462,"line":476},[460,145160,781],{"class":466},[460,145162,2737],{"class":470},[460,145164,2740],{"class":929},[460,145166,894],{"class":466},[460,145168,145169],{"class":1353},"\"example\"",[460,145171,473],{"class":466},[460,145173,145174],{"class":462,"line":482},[460,145175,145176],{"class":466},"  示例内容\n",[460,145178,145179,145181,145183],{"class":462,"line":488},[460,145180,1776],{"class":466},[460,145182,2737],{"class":470},[460,145184,473],{"class":466},[23,145186,145188],{"id":145187},"_917-盒子模型css中所用到的其他样式","9.1.7 盒子模型css中所用到的其他样式",[103,145190,145191],{},[43,145192,145193],{},"圆角边框",[14,145195,145196],{},"圆角边框的原理为拿着设定半径的圆去矩形等形状的角位置去截弧",[30,145198],{"style":140901,"src":145199},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-048.png",[451,145201,145203],{"className":141045,"code":145202,"language":141047,"meta":32,"style":32},"div {\n  border: 1px solid #ccc;\n}\n",[457,145204,145205,145211,145227],{"__ignoreMap":32},[460,145206,145207,145209],{"class":462,"line":463},[460,145208,2737],{"class":470},[460,145210,1348],{"class":466},[460,145212,145213,145215,145217,145219,145221,145223,145225],{"class":462,"line":476},[460,145214,87038],{"class":900},[460,145216,1961],{"class":466},[460,145218,901],{"class":900},[460,145220,2017],{"class":887},[460,145222,7201],{"class":900},[460,145224,144437],{"class":900},[460,145226,1966],{"class":466},[460,145228,145229],{"class":462,"line":482},[460,145230,821],{"class":466},[14,145232,145233],{},"解释:",[40,145235,145236,145239,145242,145245,145248],{},[43,145237,145238],{},"参数值可以为数值或百分比的形式",[43,145240,145241],{},"如果是正方形，想要设置为一个圆，把数值修改为高度或者宽度的一半即可，或者直接写为 50%",[43,145243,145244],{},"该属性是一个简写属性，可以跟四个值，分别代表左上角、右上角、右下角、左下角",[43,145246,145247],{},"分开写：border-top-left-radius、border-top-right-radius、border-bottom-right-radius 和border-bottom-left-radius",[43,145249,145250],{},"兼容性 ie9+ 浏览器支持, 但是不会影响页面布局,可以放心使用",[103,145252,145253],{"start":476},[43,145254,145255],{},"盒子阴影",[451,145257,145259],{"className":141045,"code":145258,"language":141047,"meta":32,"style":32},"div {\n  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n}\n",[457,145260,145261,145267,145304],{"__ignoreMap":32},[460,145262,145263,145265],{"class":462,"line":463},[460,145264,2737],{"class":470},[460,145266,1348],{"class":466},[460,145268,145269,145272,145274,145276,145278,145280,145282,145284,145286,145288,145290,145292,145294,145296,145298,145300,145302],{"class":462,"line":476},[460,145270,145271],{"class":900},"  box-shadow",[460,145273,1961],{"class":466},[460,145275,936],{"class":900},[460,145277,1442],{"class":900},[460,145279,2017],{"class":887},[460,145281,5231],{"class":900},[460,145283,2017],{"class":887},[460,145285,2234],{"class":900},[460,145287,2174],{"class":466},[460,145289,936],{"class":900},[460,145291,904],{"class":466},[460,145293,936],{"class":900},[460,145295,904],{"class":466},[460,145297,936],{"class":900},[460,145299,904],{"class":466},[460,145301,9984],{"class":900},[460,145303,2254],{"class":466},[460,145305,145306],{"class":462,"line":482},[460,145307,821],{"class":466},[16884,145309,145310,145318],{},[16887,145311,145312],{},[16890,145313,145314,145316],{},[16893,145315,16898],{"align":40149},[16893,145317,43900],{"align":40149},[16930,145319,145320,145328,145336,145344,145352,145360],{},[16890,145321,145322,145325],{},[16935,145323,145324],{"align":40149},"h-shadow",[16935,145326,145327],{"align":40149},"必需,水平阴影的位置,允许负值",[16890,145329,145330,145333],{},[16935,145331,145332],{"align":40149},"v-shadow",[16935,145334,145335],{"align":40149},"必需,垂直阴影的位置,允许负值",[16890,145337,145338,145341],{},[16935,145339,145340],{"align":40149},"blur",[16935,145342,145343],{"align":40149},"可选,模糊距离,就是影子的虚实",[16890,145345,145346,145349],{},[16935,145347,145348],{"align":40149},"spread",[16935,145350,145351],{"align":40149},"可选,阴影尺寸",[16890,145353,145354,145357],{},[16935,145355,145356],{"align":40149},"color",[16935,145358,145359],{"align":40149},"可选,阴影的颜色",[16890,145361,145362,145365],{},[16935,145363,145364],{"align":40149},"inset",[16935,145366,145367],{"align":40149},"可选,将外部阴影(outset)改为内部阴影",[103,145369,145370],{"start":482},[43,145371,145372],{},"文字阴影",[451,145374,145376],{"className":141045,"code":145375,"language":141047,"meta":32,"style":32},"p {\n  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);\n}\n",[457,145377,145378,145384,145423],{"__ignoreMap":32},[460,145379,145380,145382],{"class":462,"line":463},[460,145381,14],{"class":470},[460,145383,1348],{"class":466},[460,145385,145386,145389,145391,145393,145395,145397,145399,145401,145403,145405,145407,145409,145411,145413,145415,145417,145419,145421],{"class":462,"line":476},[460,145387,145388],{"class":900},"  text-shadow",[460,145390,1961],{"class":466},[460,145392,901],{"class":900},[460,145394,2017],{"class":887},[460,145396,1400],{"class":900},[460,145398,2017],{"class":887},[460,145400,1442],{"class":900},[460,145402,2017],{"class":887},[460,145404,2234],{"class":900},[460,145406,2174],{"class":466},[460,145408,936],{"class":900},[460,145410,904],{"class":466},[460,145412,936],{"class":900},[460,145414,904],{"class":466},[460,145416,936],{"class":900},[460,145418,904],{"class":466},[460,145420,115014],{"class":900},[460,145422,2254],{"class":466},[460,145424,145425],{"class":462,"line":482},[460,145426,821],{"class":466},[16884,145428,145429,145437],{},[16887,145430,145431],{},[16890,145432,145433,145435],{},[16893,145434,16898],{"align":40149},[16893,145436,43900],{"align":40149},[16930,145438,145439,145445,145452,145459],{},[16890,145440,145441,145443],{},[16935,145442,145324],{"align":40149},[16935,145444,145327],{"align":40149},[16890,145446,145447,145449],{},[16935,145448,145332],{"align":40149},[16935,145450,145451],{"align":40149},"必需,垂直阴影位置,允许负值",[16890,145453,145454,145456],{},[16935,145455,145340],{"align":40149},[16935,145457,145458],{"align":40149},"可选,模糊的距离",[16890,145460,145461,145463],{},[16935,145462,145356],{"align":40149},[16935,145464,145359],{"align":40149},[18,145466,145468],{"id":145467},"_92-浮动","9.2 浮动",[23,145470,145472],{"id":145471},"_921-浮动介绍","9.2.1 浮动介绍",[14,145474,145475],{},"在16.2中详细介绍",[23,145477,145479],{"id":145478},"_922-清除浮动","9.2.2 清除浮动",[103,145481,145482,145485],{},[43,145483,145484],{},"原因：由于父级盒子很多情况下，不方便给高度，但是子盒子浮动又不占有位置，最后父级盒子高度为 0 时，就会影响下面的标准流盒子",[43,145486,145487],{},"清除浮动的本质",[14,145489,145490],{},"清除浮动的本质是清除浮动元素造成的影响：浮动的子标签无法撑开父盒子的高度",[14,145492,25511],{},[40,145494,145495,145498,145501],{},[43,145496,145497],{},"如果父盒子本身有高度，则不需要清除浮动",[43,145499,145500],{},"清除浮动之后，父级就会根据浮动的子盒子自动检测高度",[43,145502,145503],{},"父级有了高度，就不会影响下面的标准流了",[103,145505,145506],{"start":482},[43,145507,145508],{},"清除浮动样式",[451,145510,145512],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},".left {\n  float: left;\n}\n.right {\n  float: right;\n}\n",[457,145513,145514,145521,145532,145536,145543,145553],{"__ignoreMap":32},[460,145515,145516,145519],{"class":462,"line":463},[460,145517,145518],{"class":929},".left",[460,145520,1348],{"class":466},[460,145522,145523,145526,145528,145530],{"class":462,"line":476},[460,145524,145525],{"class":900},"  float",[460,145527,1961],{"class":466},[460,145529,40149],{"class":900},[460,145531,1966],{"class":466},[460,145533,145534],{"class":462,"line":482},[460,145535,821],{"class":466},[460,145537,145538,145541],{"class":462,"line":488},[460,145539,145540],{"class":929},".right",[460,145542,1348],{"class":466},[460,145544,145545,145547,145549,145551],{"class":462,"line":494},[460,145546,145525],{"class":900},[460,145548,1961],{"class":466},[460,145550,88651],{"class":900},[460,145552,1966],{"class":466},[460,145554,145555],{"class":462,"line":500},[460,145556,821],{"class":466},[16884,145558,145559,145567],{},[16887,145560,145561],{},[16890,145562,145563,145565],{},[16893,145564,141509],{"align":40149},[16893,145566,43900],{"align":40149},[16930,145568,145569,145576,145583],{},[16890,145570,145571,145573],{},[16935,145572,40149],{"align":40149},[16935,145574,145575],{"align":40149},"不允许左侧有浮动元素（清除左侧浮动的影响）",[16890,145577,145578,145580],{},[16935,145579,88651],{"align":40149},[16935,145581,145582],{"align":40149},"不允许右侧有浮动元素（清除右侧浮动的影响）",[16890,145584,145585,145588],{},[16935,145586,145587],{"align":40149},"both",[16935,145589,145590],{"align":40149},"同时清除左右侧浮动的影响",[14,145592,145593],{},"法一",[14,145595,145596],{},"额外标签法也称为隔墙法",[14,145598,145599],{},"使用方式：",[14,145601,145602],{},"额外标签法会在浮动元素末尾添加一个空的标签。",[451,145604,145605],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},[457,145606,145607,145613,145623,145627,145633,145643],{"__ignoreMap":32},[460,145608,145609,145611],{"class":462,"line":463},[460,145610,145518],{"class":929},[460,145612,1348],{"class":466},[460,145614,145615,145617,145619,145621],{"class":462,"line":476},[460,145616,145525],{"class":900},[460,145618,1961],{"class":466},[460,145620,40149],{"class":900},[460,145622,1966],{"class":466},[460,145624,145625],{"class":462,"line":482},[460,145626,821],{"class":466},[460,145628,145629,145631],{"class":462,"line":488},[460,145630,145540],{"class":929},[460,145632,1348],{"class":466},[460,145634,145635,145637,145639,145641],{"class":462,"line":494},[460,145636,145525],{"class":900},[460,145638,1961],{"class":466},[460,145640,88651],{"class":900},[460,145642,1966],{"class":466},[460,145644,145645],{"class":462,"line":500},[460,145646,821],{"class":466},[14,145648,145649],{},"both这个元素要清除前面所有方向（左、右）的浮动影响，自己要出现在浮动元素的下方这个元素要清除前面所有方向（左、右）的浮动影响，自己要出现在浮动元素的下方",[14,145651,145652],{},"优点： 通俗易懂，书写方便",[14,145654,145655],{},"缺点： 添加许多无意义的标签，结构化较差",[14,145657,145658],{},"注意： 要求这个新的空标签必须是块级元素。",[14,145660,145661],{},"法二",[14,145663,145664],{},"父级添加overflow属性",[451,145666,145667],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},[457,145668,145669,145675,145685,145689,145695,145705],{"__ignoreMap":32},[460,145670,145671,145673],{"class":462,"line":463},[460,145672,145518],{"class":929},[460,145674,1348],{"class":466},[460,145676,145677,145679,145681,145683],{"class":462,"line":476},[460,145678,145525],{"class":900},[460,145680,1961],{"class":466},[460,145682,40149],{"class":900},[460,145684,1966],{"class":466},[460,145686,145687],{"class":462,"line":482},[460,145688,821],{"class":466},[460,145690,145691,145693],{"class":462,"line":488},[460,145692,145540],{"class":929},[460,145694,1348],{"class":466},[460,145696,145697,145699,145701,145703],{"class":462,"line":494},[460,145698,145525],{"class":900},[460,145700,1961],{"class":466},[460,145702,88651],{"class":900},[460,145704,1966],{"class":466},[460,145706,145707],{"class":462,"line":500},[460,145708,821],{"class":466},[14,145710,145711],{},"overflow: hidden;",[14,145713,145714],{},"优点：代码简洁",[14,145716,145717],{},"缺点：无法显示溢出的部分",[14,145719,145720],{},"注意：是给父元素添加代码",[14,145722,145723],{},"法三",[14,145725,145726],{},"父级添加after伪元素",[14,145728,145729,145732],{},[145730,145731],"after",{}," 方式是额外标签法的升级版",[14,145734,145735],{},"使用的时候复制就可以",[451,145737,145738],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},[457,145739,145740,145746,145756,145760,145766,145776],{"__ignoreMap":32},[460,145741,145742,145744],{"class":462,"line":463},[460,145743,145518],{"class":929},[460,145745,1348],{"class":466},[460,145747,145748,145750,145752,145754],{"class":462,"line":476},[460,145749,145525],{"class":900},[460,145751,1961],{"class":466},[460,145753,40149],{"class":900},[460,145755,1966],{"class":466},[460,145757,145758],{"class":462,"line":482},[460,145759,821],{"class":466},[460,145761,145762,145764],{"class":462,"line":488},[460,145763,145540],{"class":929},[460,145765,1348],{"class":466},[460,145767,145768,145770,145772,145774],{"class":462,"line":494},[460,145769,145525],{"class":900},[460,145771,1961],{"class":466},[460,145773,88651],{"class":900},[460,145775,1966],{"class":466},[460,145777,145778],{"class":462,"line":500},[460,145779,821],{"class":466},[14,145781,145782],{},"优点：没有增加标签，结构更简单",[14,145784,145785],{},"缺点：照顾低版本浏览器",[14,145787,145788],{},"代表网站： 百度、淘宝网、网易等",[14,145790,145791],{},"法四",[14,145793,145794],{},"父级添加双伪元素",[451,145796,145797],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},[457,145798,145799,145805,145815,145819,145825,145835],{"__ignoreMap":32},[460,145800,145801,145803],{"class":462,"line":463},[460,145802,145518],{"class":929},[460,145804,1348],{"class":466},[460,145806,145807,145809,145811,145813],{"class":462,"line":476},[460,145808,145525],{"class":900},[460,145810,1961],{"class":466},[460,145812,40149],{"class":900},[460,145814,1966],{"class":466},[460,145816,145817],{"class":462,"line":482},[460,145818,821],{"class":466},[460,145820,145821,145823],{"class":462,"line":488},[460,145822,145540],{"class":929},[460,145824,1348],{"class":466},[460,145826,145827,145829,145831,145833],{"class":462,"line":494},[460,145828,145525],{"class":900},[460,145830,1961],{"class":466},[460,145832,88651],{"class":900},[460,145834,1966],{"class":466},[460,145836,145837],{"class":462,"line":500},[460,145838,821],{"class":466},[14,145840,145841],{},"优点：代码更简洁",[14,145843,145785],{},[14,145845,145846],{},"代表网站：小米、腾讯等",[18,145848,145850],{"id":145849},"_93-ps切图","9.3 PS切图",[23,145852,145854],{"id":145853},"_931-常见图片格式","9.3.1 常见图片格式",[16884,145856,145857,145867],{},[16887,145858,145859],{},[16890,145860,145861,145864],{},[16893,145862,145863],{"align":40149},"jpg图像格式",[16893,145865,145866],{"align":40149},"对色彩的信息保留较好，高清，颜色较多，产品类的图片经常用",[16930,145868,145869,145877,145885],{},[16890,145870,145871,145874],{},[16935,145872,145873],{"align":40149},"gif图像格式",[16935,145875,145876],{"align":40149},"最多只能储存256色，通常用来显示简单图形及字体，但是可以保存透明背景和动画效果，实际经常用于一些图片小动画效果",[16890,145878,145879,145882],{},[16935,145880,145881],{"align":40149},"png图像格式",[16935,145883,145884],{"align":40149},"是一种新型的网络图形格式，结合了GIF和JPEG的优点，具有存储形式丰富的特点，能够保持透明背景。如果想要切成背景透明的图片，选择png格式",[16890,145886,145887,145890],{},[16935,145888,145889],{"align":40149},"PSD图像格式",[16935,145891,145892],{"align":40149},"Photoshop的专用格式，里面可以存放图层、通道、遮罩等多种设计稿，对前端人员来说，最大的优点，可以直接从上面复制文字，获得图片，还可以测量大小和距离，不能直接放到页面",[23,145894,145896],{"id":145895},"_932-图层切图","9.3.2 图层切图",[14,145898,145899],{},"最简单的切图方式：右击图层 → 导出 → 切片",[14,145901,145902],{},"按住shift选中两个图层->图层菜单->合并图层",[23,145904,145906],{"id":145905},"_933-切片切图","9.3.3 切片切图",[40,145908,145909,145912],{},[43,145910,145911],{},"利用切片工具手动划出",[43,145913,145914],{},"文件菜单 → 存储为 web 设备所用格式 → 选择我们要的图片格式 → 存储",[23,145916,145918],{"id":145917},"_934-切图步骤","9.3.4 切图步骤",[14,145920,145921],{},"用切片工具选中：",[30,145923],{"style":140901,"src":145924},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-049.png",[14,145926,145927],{},"文件 -> 导出",[30,145929],{"style":140901,"src":145930},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-050.png",[1944,145932,145933],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":145935},[145936,145945,145949],{"id":144372,"depth":476,"text":144373,"children":145937},[145938,145939,145940,145941,145942,145943,145944],{"id":144397,"depth":482,"text":144398},{"id":144688,"depth":482,"text":144689},{"id":144817,"depth":482,"text":144818},{"id":145017,"depth":482,"text":145018},{"id":145059,"depth":482,"text":145060},{"id":145097,"depth":482,"text":145098},{"id":145187,"depth":482,"text":145188},{"id":145467,"depth":476,"text":145468,"children":145946},[145947,145948],{"id":145471,"depth":482,"text":145472},{"id":145478,"depth":482,"text":145479},{"id":145849,"depth":476,"text":145850,"children":145950},[145951,145952,145953,145954],{"id":145853,"depth":482,"text":145854},{"id":145895,"depth":482,"text":145896},{"id":145905,"depth":482,"text":145906},{"id":145917,"depth":482,"text":145918},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch09-css",{"title":144364,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch09-CSS盒模型浮动与切图","ylnbHzfjeKRot9DLo6XlwzZ1JmiwKHwMG_dAza53z78",{"id":145961,"title":145962,"body":145963,"description":16682,"extension":16683,"meta":146604,"navigation":521,"path":146605,"seo":146606,"stem":146607,"__hash__":146608},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch10-CSS规范与学成在线案例.md","10. CSS规范与学成在线案例",{"type":7,"value":145964,"toc":146592},[145965,145968,145972,145998,146032,146036,146040,146043,146085,146092,146102,146110,146112,146115,146118,146121,146128,146142,146146,146149,146178,146182,146185,146199,146203,146206,146234,146238,146241,146267,146271,146276,146309,146314,146342,146346,146363,146409,146414,146458,146475,146582,146590],[10,145966,145962],{"id":145967},"_10-css规范与学成在线案例",[18,145969,145971],{"id":145970},"_101-css属性书写顺序","10.1 CSS属性书写顺序",[103,145973,145974,145980,145986,145992],{},[43,145975,145976,145979],{},[3944,145977,145978],{},"布局定位属性"," ：display \u002F position \u002F float \u002F clear \u002F visibility \u002F overflow（建议 display 第一个写，毕竟关系到模式）",[43,145981,145982,145985],{},[3944,145983,145984],{},"自身属性"," ：width \u002F height \u002F margin \u002F padding \u002F border \u002F background",[43,145987,145988,145991],{},[3944,145989,145990],{},"文本属性"," ：color \u002F font \u002F text-decoration \u002F text-align \u002F vertical-align \u002F white- space \u002F break-word",[43,145993,145994,145997],{},[3944,145995,145996],{},"其他属性（CSS3）"," ：content \u002F cursor \u002F border-radius \u002F box-shadow \u002F text-shadow \u002F background:linear-gradient …",[451,145999,146000],{"className":141045,"code":144409,"language":141047,"meta":32,"style":32},[457,146001,146002,146006,146012,146028],{"__ignoreMap":32},[460,146003,146004],{"class":462,"line":463},[460,146005,144416],{"class":942},[460,146007,146008,146010],{"class":462,"line":476},[460,146009,2737],{"class":470},[460,146011,1348],{"class":466},[460,146013,146014,146016,146018,146020,146022,146024,146026],{"class":462,"line":482},[460,146015,87038],{"class":900},[460,146017,1961],{"class":466},[460,146019,901],{"class":900},[460,146021,2017],{"class":887},[460,146023,7201],{"class":900},[460,146025,144437],{"class":900},[460,146027,1966],{"class":466},[460,146029,146030],{"class":462,"line":488},[460,146031,821],{"class":466},[18,146033,146035],{"id":146034},"_102-学成在线案例反思总结","10.2 学成在线案例反思总结",[23,146037,146039],{"id":146038},"_1021-header头部制作","10.2.1 header头部制作",[30,146041],{"style":140901,"src":146042},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-051.png",[40,146044,146045,146052,146059,146065,146072,146079],{},[43,146046,146047,146048,146051],{},"1号是版心盒子 ",[3944,146049,146050],{},"header"," 1200 * 42 的盒子水平居中对齐, 上下给一个margin值就好了",[43,146053,146054,146055,146058],{},"版心盒子 里面包含 2号盒子 ",[3944,146056,146057],{},"logo"," 图标",[43,146060,146061,146062,146064],{},"版心盒子 里面包含 3号盒子 ",[3944,146063,69960],{}," 导航栏",[43,146066,146067,146068,146071],{},"版心盒子 里面包含 4号盒子 ",[3944,146069,146070],{},"search"," 搜索框",[43,146073,146074,146075,146078],{},"版心盒子 里面包含 5号盒子 ",[3944,146076,146077],{},"user"," 个人信息",[43,146080,146081,146082],{},"注意，要求里面的 ",[3944,146083,146084],{},"4个子盒子 必须都浮动",[103,146086,146087],{},[43,146088,146089],{},[3944,146090,146091],{},"导航栏注意点:",[14,146093,146094,146095,146098,146099],{},"实际开发中， ",[3944,146096,146097],{},"重要的****导航栏","，我们不会直接用链接a ，而是 ",[3944,146100,146101],{},"用 li 包含链接(li+a)的做法",[40,146103,146104,146107],{},[43,146105,146106],{},"li+a 语义更清晰，一看这就是有条理的列表型内容",[43,146108,146109],{},"如果直接用a，搜索引擎容易辨别为有堆砌关键字嫌疑（故意堆砌关键字容易被搜索引擎有降权的风险），从而影响网站排名",[14,146111,25511],{},[14,146113,146114],{},"  ①让导航栏一行显示, 给 li 加浮动, 因为 li 是块级元素, 需要一行显示",[14,146116,146117],{},"  ②这个nav导航栏可以不给宽度,将来可以继续添加其余文字",[14,146119,146120],{},"  ③因为导航栏里面文字不一样多,所以最好给链接 a 左右padding 撑开盒子,而不是指定宽度",[103,146122,146123],{"start":476},[43,146124,146125],{},[3944,146126,146127],{},"4号盒子search的细节：",[40,146129,146130,146133,146136],{},[43,146131,146132],{},"search 搜索框的意思: 一个 search 大盒子里面包含 2个 表单",[43,146134,146135],{},"技巧：input和button都，属于行内块元素，会有缝隙，使用浮动，可以去缝隙",[43,146137,146138,146141],{},[457,146139,146140],{},"\u003Cbutton>``\u003C\u002Fbutton>","按钮不能忘，按钮要手动去除边框",[23,146143,146145],{"id":146144},"_1022-banner制作","10.2.2 banner制作",[30,146147],{"style":140901,"src":146148},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-052.png",[40,146150,146151,146158,146164,146171],{},[43,146152,146153,146154,146157],{},"1号盒子是通栏的大盒子 ",[3944,146155,146156],{},"banner"," ， 不给宽度，给高度，给一个蓝色背景",[43,146159,146160,146161,146163],{},"2号盒子是版心 ",[3944,146162,17510],{}," ， 要水平居中对齐",[43,146165,146166,146167,146170],{},"3号盒子版心内，左对齐 ",[3944,146168,146169],{},"subnav"," 侧导航栏",[43,146172,146173,146174,146177],{},"4号盒子版心内，右对齐 ",[3944,146175,146176],{},"course"," 课程",[23,146179,146181],{"id":146180},"_1023-精品推荐小模块","10.2.3 精品推荐小模块",[30,146183],{"style":140901,"src":146184},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-053.png",[40,146186,146187,146190,146193,146196],{},[43,146188,146189],{},"大盒子水平居中 goods 精品 ，注意此处有个盒子阴影",[43,146191,146192],{},"1号盒子是标题 H3 左侧浮动",[43,146194,146195],{},"2号盒子 里面放链接 左侧浮动goods-item距离可以控制链接的 左右外边距（注意行内元素只给左右内外边距）",[43,146197,146198],{},"3号盒子 右浮动 mod 修改",[23,146200,146202],{"id":146201},"_1024-精品推荐大模块","10.2.4 精品推荐大模块",[30,146204],{"style":140901,"src":146205},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-054.png",[40,146207,146208,146214,146221,146228,146231],{},[43,146209,146210,146211,146213],{},"1号盒子为最大的盒子 ",[3944,146212,69961],{}," 版心水平居中对齐",[43,146215,146216,146217,146220],{},"2号盒子为上面部分 ",[3944,146218,146219],{},"box-hd"," -- 里面 左侧标题H3 左浮动 右侧 链接 a 右浮动",[43,146222,146223,146224,146227],{},"3号盒子为底下部分 ",[3944,146225,146226],{},"box-bd"," --- 里面是无序列表 有 10个 小li 组成",[43,146229,146230],{},"小li 外边距的问题， 在使用li的时候可能因为外边距的问题导致最后一个li盒子在这一行是放不开的，此时可以对ul进行处理，让ul大一点，大的那一块反正是外边距，所以不会有任何的影响，这样就不需要再单独写类选择器，对放不下的li盒子进行处理",[43,146232,146233],{},"复习点：我们用到清除浮动，因为 box-hd 里面的盒子个数不一定是多少，所以我们就不给高度了，但是里面的盒子浮动会影响下面的布局，因此需要清除浮动。",[23,146235,146237],{"id":146236},"_1025-底部模块制作","10.2.5 底部模块制作",[30,146239],{"style":140901,"src":146240},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-055.png",[40,146242,146243,146250,146253,146260],{},[43,146244,146245,146246,146249],{},"1号盒子通栏大盒子 底部 ",[3944,146247,146248],{},"footer"," 给高度 底色是白色",[43,146251,146252],{},"2号盒子版心水平居中",[43,146254,146255,146256,146259],{},"3号盒子版权 ",[3944,146257,146258],{},"copyright"," 左对齐",[43,146261,146262,146263,146266],{},"4号盒子 链接组 ",[3944,146264,146265],{},"links"," 右对齐",[23,146268,146270],{"id":146269},"_1026-代码模块","10.2.6 代码模块",[103,146272,146273],{},[43,146274,146275],{},"html部分",[451,146277,146279],{"className":141792,"code":146278,"language":141794,"meta":32,"style":32},"\u003Ca href=\"https:\u002F\u002Fexample.com\" target=\"_blank\">链接文字\u003C\u002Fa>\n",[457,146280,146281],{"__ignoreMap":32},[460,146282,146283,146285,146287,146289,146291,146294,146297,146299,146302,146305,146307],{"class":462,"line":463},[460,146284,781],{"class":466},[460,146286,2756],{"class":470},[460,146288,2759],{"class":929},[460,146290,894],{"class":466},[460,146292,146293],{"class":1353},"\"https:\u002F\u002Fexample.com\"",[460,146295,146296],{"class":929}," target",[460,146298,894],{"class":466},[460,146300,146301],{"class":1353},"\"_blank\"",[460,146303,146304],{"class":466},">链接文字\u003C\u002F",[460,146306,2756],{"class":470},[460,146308,473],{"class":466},[103,146310,146311],{"start":476},[43,146312,146313],{},"css部分",[451,146315,146316],{"className":141792,"code":146278,"language":141794,"meta":32,"style":32},[457,146317,146318],{"__ignoreMap":32},[460,146319,146320,146322,146324,146326,146328,146330,146332,146334,146336,146338,146340],{"class":462,"line":463},[460,146321,781],{"class":466},[460,146323,2756],{"class":470},[460,146325,2759],{"class":929},[460,146327,894],{"class":466},[460,146329,146293],{"class":1353},[460,146331,146296],{"class":929},[460,146333,894],{"class":466},[460,146335,146301],{"class":1353},[460,146337,146304],{"class":466},[460,146339,2756],{"class":470},[460,146341,473],{"class":466},[23,146343,146345],{"id":146344},"_1027-收获","10.2.7 收获",[103,146347,146348,146351,146354,146357,146360],{},[43,146349,146350],{},"先确定版心，然后写一个类选择器，直接后边的就直接调用这个类选择器就可以",[43,146352,146353],{},"在设置导航栏时，对于横的导航栏对li设置浮动，对a设置大小就可以，对于竖的导航栏对li设置宽高，以后这样做，保证书写规范",[43,146355,146356],{},"行内块元素之间有空隙，解决的一个好方法是设置浮动",[43,146358,146359],{},"设置用户的时候要灵活使用img标签，一个盒子放头像和名字",[43,146361,146362],{},"遗忘代码",[451,146364,146366],{"className":141045,"code":146365,"language":141047,"meta":32,"style":32},"div, p, h1, ul, li {\n  \u002F* 块级元素：独占一行，可设宽高 *\u002F\n  display: block;\n}\n",[457,146367,146368,146390,146395,146405],{"__ignoreMap":32},[460,146369,146370,146372,146374,146376,146378,146380,146382,146384,146386,146388],{"class":462,"line":463},[460,146371,2737],{"class":470},[460,146373,904],{"class":466},[460,146375,14],{"class":470},[460,146377,904],{"class":466},[460,146379,10],{"class":470},[460,146381,904],{"class":466},[460,146383,40],{"class":470},[460,146385,904],{"class":466},[460,146387,43],{"class":470},[460,146389,1348],{"class":466},[460,146391,146392],{"class":462,"line":476},[460,146393,146394],{"class":942},"  \u002F* 块级元素：独占一行，可设宽高 *\u002F\n",[460,146396,146397,146399,146401,146403],{"class":462,"line":482},[460,146398,142661],{"class":900},[460,146400,1961],{"class":466},[460,146402,7350],{"class":900},[460,146404,1966],{"class":466},[460,146406,146407],{"class":462,"line":488},[460,146408,821],{"class":466},[103,146410,146411],{"start":500},[43,146412,146413],{},"html引css的程序",[451,146415,146416],{"className":141045,"code":146365,"language":141047,"meta":32,"style":32},[457,146417,146418,146440,146444,146454],{"__ignoreMap":32},[460,146419,146420,146422,146424,146426,146428,146430,146432,146434,146436,146438],{"class":462,"line":463},[460,146421,2737],{"class":470},[460,146423,904],{"class":466},[460,146425,14],{"class":470},[460,146427,904],{"class":466},[460,146429,10],{"class":470},[460,146431,904],{"class":466},[460,146433,40],{"class":470},[460,146435,904],{"class":466},[460,146437,43],{"class":470},[460,146439,1348],{"class":466},[460,146441,146442],{"class":462,"line":476},[460,146443,146394],{"class":942},[460,146445,146446,146448,146450,146452],{"class":462,"line":482},[460,146447,142661],{"class":900},[460,146449,1961],{"class":466},[460,146451,7350],{"class":900},[460,146453,1966],{"class":466},[460,146455,146456],{"class":462,"line":488},[460,146457,821],{"class":466},[103,146459,146460,146463,146466,146469,146472],{"start":506},[43,146461,146462],{},"浮动的盒子不会有外边距合并问题",[43,146464,146465],{},"子盒子没有设置宽高，是直接继承父盒子的宽高的，此时给子盒子设置padding,是不会撑大父盒子的，可以理解为已经约束了子盒子，子盒子在确定空间中再如何动，也不会打破空间",[43,146467,146468],{},"ctrl+g快速定位行；shift+alt多个光标",[43,146470,146471],{},"学习上方各个模块的选择器起名方法，以后就这样用",[43,146473,146474],{},"在写选择器时尽量写全一些，例如",[451,146476,146478],{"className":141045,"code":146477,"language":141047,"meta":32,"style":32},"\u002F* 静态定位（默认） *\u002F\n.static { position: static; }\n\u002F* 相对定位 *\u002F\n.relative { position: relative; }\n\u002F* 绝对定位 *\u002F\n.absolute { position: absolute; }\n\u002F* 固定定位 *\u002F\n.fixed { position: fixed; }\n\u002F* 粘性定位 *\u002F\n.sticky { position: sticky; }\n",[457,146479,146480,146485,146501,146506,146521,146526,146541,146546,146561,146566],{"__ignoreMap":32},[460,146481,146482],{"class":462,"line":463},[460,146483,146484],{"class":942},"\u002F* 静态定位（默认） *\u002F\n",[460,146486,146487,146490,146492,146494,146496,146499],{"class":462,"line":476},[460,146488,146489],{"class":929},".static",[460,146491,3437],{"class":466},[460,146493,143405],{"class":900},[460,146495,1961],{"class":466},[460,146497,146498],{"class":900},"static",[460,146500,143975],{"class":466},[460,146502,146503],{"class":462,"line":482},[460,146504,146505],{"class":942},"\u002F* 相对定位 *\u002F\n",[460,146507,146508,146511,146513,146515,146517,146519],{"class":462,"line":488},[460,146509,146510],{"class":929},".relative",[460,146512,3437],{"class":466},[460,146514,143405],{"class":900},[460,146516,1961],{"class":466},[460,146518,10138],{"class":900},[460,146520,143975],{"class":466},[460,146522,146523],{"class":462,"line":494},[460,146524,146525],{"class":942},"\u002F* 绝对定位 *\u002F\n",[460,146527,146528,146531,146533,146535,146537,146539],{"class":462,"line":500},[460,146529,146530],{"class":929},".absolute",[460,146532,3437],{"class":466},[460,146534,143405],{"class":900},[460,146536,1961],{"class":466},[460,146538,10202],{"class":900},[460,146540,143975],{"class":466},[460,146542,146543],{"class":462,"line":506},[460,146544,146545],{"class":942},"\u002F* 固定定位 *\u002F\n",[460,146547,146548,146551,146553,146555,146557,146559],{"class":462,"line":512},[460,146549,146550],{"class":929},".fixed",[460,146552,3437],{"class":466},[460,146554,143405],{"class":900},[460,146556,1961],{"class":466},[460,146558,10009],{"class":900},[460,146560,143975],{"class":466},[460,146562,146563],{"class":462,"line":518},[460,146564,146565],{"class":942},"\u002F* 粘性定位 *\u002F\n",[460,146567,146568,146571,146573,146575,146577,146580],{"class":462,"line":525},[460,146569,146570],{"class":929},".sticky",[460,146572,3437],{"class":466},[460,146574,143405],{"class":900},[460,146576,1961],{"class":466},[460,146578,146579],{"class":900},"sticky",[460,146581,143975],{"class":466},[103,146583,146584,146587],{"start":537},[43,146585,146586],{},"一定要用好注释",[43,146588,146589],{},"浮动的盒子不会有外边距合并的问题",[1944,146591,145933],{},{"title":32,"searchDepth":476,"depth":476,"links":146593},[146594,146595],{"id":145970,"depth":476,"text":145971},{"id":146034,"depth":476,"text":146035,"children":146596},[146597,146598,146599,146600,146601,146602,146603],{"id":146038,"depth":482,"text":146039},{"id":146144,"depth":482,"text":146145},{"id":146180,"depth":482,"text":146181},{"id":146201,"depth":482,"text":146202},{"id":146236,"depth":482,"text":146237},{"id":146269,"depth":482,"text":146270},{"id":146344,"depth":482,"text":146345},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch10-css",{"title":145962,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch10-CSS规范与学成在线案例","FzyF0-YC56Akf2OLJPi7lkaiI8deiVEFNwhHCIOG39Y",{"id":146610,"title":146611,"body":146612,"description":16682,"extension":16683,"meta":148098,"navigation":521,"path":148099,"seo":148100,"stem":148101,"__hash__":148102},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch11-传统布局与定位体系.md","11. 传统布局与定位体系",{"type":7,"value":146613,"toc":148090},[146614,146617,146621,146625,146636,146640,146657,146701,146734,146737,146754,146757,146760,146804,146808,146812,146815,146818,146822,146825,146836,146899,146940,146943,146958,147012,147020,147023,147034,147088,147114,147117,147130,147184,147216,147270,147293,147347,147350,147353,147360,147414,147435,147489,147492,147495,147580,147588,147645,147668,147672,147675,147693,147697,147716,147770,147808,147812,147815,147818,147840,147844,147852,147855,147860,147871,147874,147878,147892,147936,147939,147943,147946,147951,147977,147982,148059,148062,148066,148069,148072,148075,148078,148081,148084,148087],[10,146615,146611],{"id":146616},"_11-传统布局与定位体系",[18,146618,146620],{"id":146619},"_111-传统网页布局的三种方式","11.1 传统网页布局的三种方式",[23,146622,146624],{"id":146623},"_1111-普通流标准流","11.1.1 普通流（标准流）",[40,146626,146627,146630,146633],{},[43,146628,146629],{},"所谓的标准流: 就是标签按照规定好默认方式排列",[43,146631,146632],{},"块级元素会独占一行，从上向下顺序排列。常用元素：div、hr、p、h1~h6、ul、ol、dl、form、table",[43,146634,146635],{},"行内元素会按照顺序，从左到右顺序排列，碰到父元素边缘则自动换行。常用元素：span、a、i、em 等",[23,146637,146639],{"id":146638},"_1112-浮动","11.1.2 浮动",[40,146641,146642,146645,146648,146651,146654],{},[43,146643,146644],{},"float 属性用于创建浮动框，将其移动到一边，直到左边缘或右边缘触及包含块或另一个浮动框的边缘",[43,146646,146647],{},"浮动可以改变元素标签默认的排列方式",[43,146649,146650],{},"浮动最典型的应用：可以让多个块级元素一行内排列显示",[43,146652,146653],{},"网页布局第一准则：多个块级元素纵向排列找标准流，多个块级元素横向排列找浮动",[43,146655,146656],{},"在使用行内块转换时盒子之间是有空隙的",[451,146658,146659],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},[457,146660,146661,146667,146677,146681,146687,146697],{"__ignoreMap":32},[460,146662,146663,146665],{"class":462,"line":463},[460,146664,145518],{"class":929},[460,146666,1348],{"class":466},[460,146668,146669,146671,146673,146675],{"class":462,"line":476},[460,146670,145525],{"class":900},[460,146672,1961],{"class":466},[460,146674,40149],{"class":900},[460,146676,1966],{"class":466},[460,146678,146679],{"class":462,"line":482},[460,146680,821],{"class":466},[460,146682,146683,146685],{"class":462,"line":488},[460,146684,145540],{"class":929},[460,146686,1348],{"class":466},[460,146688,146689,146691,146693,146695],{"class":462,"line":494},[460,146690,145525],{"class":900},[460,146692,1961],{"class":466},[460,146694,88651],{"class":900},[460,146696,1966],{"class":466},[460,146698,146699],{"class":462,"line":500},[460,146700,821],{"class":466},[16884,146702,146703,146711],{},[16887,146704,146705],{},[16890,146706,146707,146709],{},[16893,146708,141509],{"align":40149},[16893,146710,43900],{"align":40149},[16930,146712,146713,146720,146727],{},[16890,146714,146715,146717],{},[16935,146716,2629],{"align":40149},[16935,146718,146719],{"align":40149},"元素不浮动（默认值）",[16890,146721,146722,146724],{},[16935,146723,40149],{"align":40149},[16935,146725,146726],{"align":40149},"元素向左浮动",[16890,146728,146729,146731],{},[16935,146730,88651],{"align":40149},[16935,146732,146733],{"align":40149},"元素向右浮动",[14,146735,146736],{},"浮动重点：",[40,146738,146739,146742,146745,146748,146751],{},[43,146740,146741],{},"浮动元素会脱离标准流(脱标：浮动的盒子不再保留原先的位置)",[43,146743,146744],{},"浮动的元素会一行内显示并且元素顶部对齐",[43,146746,146747],{},"浮动的元素是互相贴靠在一起的（不会有缝隙），如果父级宽度装不下这些浮动的盒子，多出的盒子会另起一行对齐",[43,146749,146750],{},"浮动的元素会具有行内块元素的特性：①浮动元素的大小根据内容来决定；②浮动的盒子之间没有缝隙(行内元素有了浮动，则不需要转换块级\\行内块元素就可以直接给高度和宽度)",[43,146752,146753],{},"行内块元素如果没有设置宽度，则盒子大小受内容影响，内容多则就宽",[14,146755,146756],{},"设计策略：先用标准流父元素排列上下位置, 之后内部子元素采取浮动排列左右位置. 符合网页布局第一准侧",[14,146758,146759],{},"浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流",[451,146761,146762],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},[457,146763,146764,146770,146780,146784,146790,146800],{"__ignoreMap":32},[460,146765,146766,146768],{"class":462,"line":463},[460,146767,145518],{"class":929},[460,146769,1348],{"class":466},[460,146771,146772,146774,146776,146778],{"class":462,"line":476},[460,146773,145525],{"class":900},[460,146775,1961],{"class":466},[460,146777,40149],{"class":900},[460,146779,1966],{"class":466},[460,146781,146782],{"class":462,"line":482},[460,146783,821],{"class":466},[460,146785,146786,146788],{"class":462,"line":488},[460,146787,145540],{"class":929},[460,146789,1348],{"class":466},[460,146791,146792,146794,146796,146798],{"class":462,"line":494},[460,146793,145525],{"class":900},[460,146795,1961],{"class":466},[460,146797,88651],{"class":900},[460,146799,1966],{"class":466},[460,146801,146802],{"class":462,"line":500},[460,146803,821],{"class":466},[23,146805,146807],{"id":146806},"_1113-定位","11.1.3 定位",[115,146809,146811],{"id":146810},"_11131-使用场景","11.1.3.1 使用场景",[14,146813,146814],{},"①某个元素可以自由的在一个盒子内移动位置，并且压住其他盒子",[14,146816,146817],{},"②当我们滚动窗口的时候，盒子是固定屏幕某个位置的",[115,146819,146821],{"id":146820},"_11132-定位组成","11.1.3.2 定位组成",[14,146823,146824],{},"定位 = 定位模式 + 边偏移",[103,146826,146827],{},[43,146828,146829,146832,146833],{},[3944,146830,146831],{},"定位模式："," 用于指定一个元素在文档中的定位方式通过 position属性定义元素的 ",[3944,146834,146835],{},"定位模式",[451,146837,146839],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},".box {\n  position: relative;  \u002F* 定位模式 *\u002F\n  top: 10px;           \u002F* 边偏移：上 *\u002F\n  left: 20px;          \u002F* 边偏移：左 *\u002F\n}\n",[457,146840,146841,146847,146861,146878,146895],{"__ignoreMap":32},[460,146842,146843,146845],{"class":462,"line":463},[460,146844,144893],{"class":929},[460,146846,1348],{"class":466},[460,146848,146849,146852,146854,146856,146858],{"class":462,"line":476},[460,146850,146851],{"class":900},"  position",[460,146853,1961],{"class":466},[460,146855,10138],{"class":900},[460,146857,144908],{"class":466},[460,146859,146860],{"class":942},"\u002F* 定位模式 *\u002F\n",[460,146862,146863,146866,146868,146870,146872,146875],{"class":462,"line":482},[460,146864,146865],{"class":900},"  top",[460,146867,1961],{"class":466},[460,146869,2096],{"class":900},[460,146871,2017],{"class":887},[460,146873,146874],{"class":466},";           ",[460,146876,146877],{"class":942},"\u002F* 边偏移：上 *\u002F\n",[460,146879,146880,146883,146885,146887,146889,146892],{"class":462,"line":488},[460,146881,146882],{"class":900},"  left",[460,146884,1961],{"class":466},[460,146886,2110],{"class":900},[460,146888,2017],{"class":887},[460,146890,146891],{"class":466},";          ",[460,146893,146894],{"class":942},"\u002F* 边偏移：左 *\u002F\n",[460,146896,146897],{"class":462,"line":494},[460,146898,821],{"class":466},[16884,146900,146901,146910],{},[16887,146902,146903],{},[16890,146904,146905,146907],{},[16893,146906,16898],{"align":40149},[16893,146908,146909],{"align":40149},"语义",[16930,146911,146912,146919,146926,146933],{},[16890,146913,146914,146916],{},[16935,146915,146498],{"align":40149},[16935,146917,146918],{"align":40149},"静态定位",[16890,146920,146921,146923],{},[16935,146922,10138],{"align":40149},[16935,146924,146925],{"align":40149},"相对定位",[16890,146927,146928,146930],{},[16935,146929,10202],{"align":40149},[16935,146931,146932],{"align":40149},"绝对定位",[16890,146934,146935,146937],{},[16935,146936,10009],{"align":40149},[16935,146938,146939],{"align":40149},"固定定位",[14,146941,146942],{},"（1）静态定位：",[40,146944,146945,146956],{},[43,146946,146947,146948,146951,146952,146955],{},"静态定位是元素的 ",[3944,146949,146950],{},"默认定位方式"," ， ",[3944,146953,146954],{},"无定位的意思"," 。它相当于 border 里面的none，静态定位static，不要定位的时候用",[43,146957,5927],{},[451,146959,146960],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},[457,146961,146962,146968,146980,146994,147008],{"__ignoreMap":32},[460,146963,146964,146966],{"class":462,"line":463},[460,146965,144893],{"class":929},[460,146967,1348],{"class":466},[460,146969,146970,146972,146974,146976,146978],{"class":462,"line":476},[460,146971,146851],{"class":900},[460,146973,1961],{"class":466},[460,146975,10138],{"class":900},[460,146977,144908],{"class":466},[460,146979,146860],{"class":942},[460,146981,146982,146984,146986,146988,146990,146992],{"class":462,"line":482},[460,146983,146865],{"class":900},[460,146985,1961],{"class":466},[460,146987,2096],{"class":900},[460,146989,2017],{"class":887},[460,146991,146874],{"class":466},[460,146993,146877],{"class":942},[460,146995,146996,146998,147000,147002,147004,147006],{"class":462,"line":488},[460,146997,146882],{"class":900},[460,146999,1961],{"class":466},[460,147001,2110],{"class":900},[460,147003,2017],{"class":887},[460,147005,146891],{"class":466},[460,147007,146894],{"class":942},[460,147009,147010],{"class":462,"line":494},[460,147011,821],{"class":466},[40,147013,147014,147017],{},[43,147015,147016],{},"静态定位 按照标准流特性摆放位置，它没有边偏移,可以理解为静态定位就是标准流",[43,147018,147019],{},"静态定位在布局时我们几乎不用的",[14,147021,147022],{},"（2）相对定位",[40,147024,147025,147032],{},[43,147026,147027,147028,147031],{},"相对定位是元素在移动位置的时候，是相对于它自己 ",[3944,147029,147030],{},"原来的位置"," 来说的（自恋型）",[43,147033,5927],{},[451,147035,147036],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},[457,147037,147038,147044,147056,147070,147084],{"__ignoreMap":32},[460,147039,147040,147042],{"class":462,"line":463},[460,147041,144893],{"class":929},[460,147043,1348],{"class":466},[460,147045,147046,147048,147050,147052,147054],{"class":462,"line":476},[460,147047,146851],{"class":900},[460,147049,1961],{"class":466},[460,147051,10138],{"class":900},[460,147053,144908],{"class":466},[460,147055,146860],{"class":942},[460,147057,147058,147060,147062,147064,147066,147068],{"class":462,"line":482},[460,147059,146865],{"class":900},[460,147061,1961],{"class":466},[460,147063,2096],{"class":900},[460,147065,2017],{"class":887},[460,147067,146874],{"class":466},[460,147069,146877],{"class":942},[460,147071,147072,147074,147076,147078,147080,147082],{"class":462,"line":488},[460,147073,146882],{"class":900},[460,147075,1961],{"class":466},[460,147077,2110],{"class":900},[460,147079,2017],{"class":887},[460,147081,146891],{"class":466},[460,147083,146894],{"class":942},[460,147085,147086],{"class":462,"line":494},[460,147087,821],{"class":466},[40,147089,147090],{},[43,147091,147092,147093,147095,147096,147098,147099,147102,147103,147106,147107,147109,147110,147113],{},"相对定位的特点：",[69963,147094],{},"  ①它是相对于自己原来的位置来移动的（移动位置的时候参照点是自己原来的位置）",[69963,147097],{},"  ② ",[3944,147100,147101],{},"原来"," 在标准流的 ",[3944,147104,147105],{},"位置"," 继续占有，后面的盒子仍然以标准流的方式对待它，原来的位置和现在的位置都不影响后面盒子的位置",[69963,147108],{},"  ③因此， ",[3944,147111,147112],{},"相对定位并没有脱标"," 。它最典型的应用是给绝对定位当爹的,相对定位是用来限制绝对定位的",[14,147115,147116],{},"（3）绝对定位",[40,147118,147119,147128],{},[43,147120,147121,147123,147124,147127],{},[3944,147122,146932],{}," 是元素在移动位置的时候，是相对于它 ",[3944,147125,147126],{},"祖先元素"," 来说的（拼爹型）",[43,147129,5927],{},[451,147131,147132],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},[457,147133,147134,147140,147152,147166,147180],{"__ignoreMap":32},[460,147135,147136,147138],{"class":462,"line":463},[460,147137,144893],{"class":929},[460,147139,1348],{"class":466},[460,147141,147142,147144,147146,147148,147150],{"class":462,"line":476},[460,147143,146851],{"class":900},[460,147145,1961],{"class":466},[460,147147,10138],{"class":900},[460,147149,144908],{"class":466},[460,147151,146860],{"class":942},[460,147153,147154,147156,147158,147160,147162,147164],{"class":462,"line":482},[460,147155,146865],{"class":900},[460,147157,1961],{"class":466},[460,147159,2096],{"class":900},[460,147161,2017],{"class":887},[460,147163,146874],{"class":466},[460,147165,146877],{"class":942},[460,147167,147168,147170,147172,147174,147176,147178],{"class":462,"line":488},[460,147169,146882],{"class":900},[460,147171,1961],{"class":466},[460,147173,2110],{"class":900},[460,147175,2017],{"class":887},[460,147177,146891],{"class":466},[460,147179,146894],{"class":942},[460,147181,147182],{"class":462,"line":494},[460,147183,821],{"class":466},[40,147185,147186,147201,147210,147213],{},[43,147187,147188,147189,147191,147192,147194,147195,147197,147198,147200],{},"绝对定位的特点：",[69963,147190],{},"  ①如果没有祖先元素或者祖先元素没有定位，则以浏览器为准定位",[69963,147193],{},"  ②如果祖先元素有定位（相对、绝对、固定定位），则以最近一级的有定位祖先元素为参考点移动位置",[69963,147196],{},"  ③绝对定位不再占有原先的位置。所以绝对定位是脱离标准流的。可以理解为绝对定位比浮动飘的更高（脱标）",[69963,147199],{},"  (4)固定定位",[43,147202,147203,147205,147206,147209],{},[3944,147204,146939],{}," 是元素 ",[3944,147207,147208],{},"固定于浏览器可视区的位置"," 。（认死理型）",[43,147211,147212],{},"主要使用场景：可以在浏览器页面滚动时元素的位置不会改变",[43,147214,147215],{},"语法:",[451,147217,147218],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},[457,147219,147220,147226,147238,147252,147266],{"__ignoreMap":32},[460,147221,147222,147224],{"class":462,"line":463},[460,147223,144893],{"class":929},[460,147225,1348],{"class":466},[460,147227,147228,147230,147232,147234,147236],{"class":462,"line":476},[460,147229,146851],{"class":900},[460,147231,1961],{"class":466},[460,147233,10138],{"class":900},[460,147235,144908],{"class":466},[460,147237,146860],{"class":942},[460,147239,147240,147242,147244,147246,147248,147250],{"class":462,"line":482},[460,147241,146865],{"class":900},[460,147243,1961],{"class":466},[460,147245,2096],{"class":900},[460,147247,2017],{"class":887},[460,147249,146874],{"class":466},[460,147251,146877],{"class":942},[460,147253,147254,147256,147258,147260,147262,147264],{"class":462,"line":488},[460,147255,146882],{"class":900},[460,147257,1961],{"class":466},[460,147259,2110],{"class":900},[460,147261,2017],{"class":887},[460,147263,146891],{"class":466},[460,147265,146894],{"class":942},[460,147267,147268],{"class":462,"line":494},[460,147269,821],{"class":466},[40,147271,147272,147281],{},[43,147273,147274,147275,147277,147278,147280],{},"特点:",[69963,147276],{},"  ①.以浏览器的可视窗口为参照点移动元素,跟父元素没有任何关系,不随滚动条滚动",[69963,147279],{},"  ②固定定位不再占有原先的位置,完全脱标",[43,147282,147283,147284,147286,147287,147289,147290,147292],{},"固定在版心位置的方法:",[69963,147285],{},"  ①让固定定位的盒子 left: 50%. 走到浏览器可视区（也可以看做版心） 的一半位置",[69963,147288],{},"  ②让固定定位的盒子 margin-left: 版心宽度的一半距离。 多走版心宽度的一半位置",[69963,147291],{},"  实例：",[451,147294,147295],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},[457,147296,147297,147303,147315,147329,147343],{"__ignoreMap":32},[460,147298,147299,147301],{"class":462,"line":463},[460,147300,144893],{"class":929},[460,147302,1348],{"class":466},[460,147304,147305,147307,147309,147311,147313],{"class":462,"line":476},[460,147306,146851],{"class":900},[460,147308,1961],{"class":466},[460,147310,10138],{"class":900},[460,147312,144908],{"class":466},[460,147314,146860],{"class":942},[460,147316,147317,147319,147321,147323,147325,147327],{"class":462,"line":482},[460,147318,146865],{"class":900},[460,147320,1961],{"class":466},[460,147322,2096],{"class":900},[460,147324,2017],{"class":887},[460,147326,146874],{"class":466},[460,147328,146877],{"class":942},[460,147330,147331,147333,147335,147337,147339,147341],{"class":462,"line":488},[460,147332,146882],{"class":900},[460,147334,1961],{"class":466},[460,147336,2110],{"class":900},[460,147338,2017],{"class":887},[460,147340,146891],{"class":466},[460,147342,146894],{"class":942},[460,147344,147345],{"class":462,"line":494},[460,147346,821],{"class":466},[30,147348],{"style":140901,"src":147349},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-056.png",[14,147351,147352],{},"(5)粘性定位",[40,147354,147355,147358],{},[43,147356,147357],{},"粘性定位可以被认为是相对定位和固定定位的混合",[43,147359,5927],{},[451,147361,147362],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},[457,147363,147364,147370,147382,147396,147410],{"__ignoreMap":32},[460,147365,147366,147368],{"class":462,"line":463},[460,147367,144893],{"class":929},[460,147369,1348],{"class":466},[460,147371,147372,147374,147376,147378,147380],{"class":462,"line":476},[460,147373,146851],{"class":900},[460,147375,1961],{"class":466},[460,147377,10138],{"class":900},[460,147379,144908],{"class":466},[460,147381,146860],{"class":942},[460,147383,147384,147386,147388,147390,147392,147394],{"class":462,"line":482},[460,147385,146865],{"class":900},[460,147387,1961],{"class":466},[460,147389,2096],{"class":900},[460,147391,2017],{"class":887},[460,147393,146874],{"class":466},[460,147395,146877],{"class":942},[460,147397,147398,147400,147402,147404,147406,147408],{"class":462,"line":488},[460,147399,146882],{"class":900},[460,147401,1961],{"class":466},[460,147403,2110],{"class":900},[460,147405,2017],{"class":887},[460,147407,146891],{"class":466},[460,147409,146894],{"class":942},[460,147411,147412],{"class":462,"line":494},[460,147413,821],{"class":466},[40,147415,147416],{},[43,147417,147418,147419,147421,147422,147424,147425,147427,147428,147431,147432,147434],{},"粘性定位的特点：",[69963,147420],{},"  ①以浏览器的可视窗口为参照点移动元素（固定定位特点）",[69963,147423],{},"  ②粘性定位占有原先的位置（相对定位特点）",[69963,147426],{},"  ③必须添加 top 、left、right、bottom ",[3944,147429,147430],{},"其中一个"," 才有效",[69963,147433],{},"  ④跟页面滚动搭配使用。 兼容性较差，IE 不支持",[451,147436,147437],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},[457,147438,147439,147445,147457,147471,147485],{"__ignoreMap":32},[460,147440,147441,147443],{"class":462,"line":463},[460,147442,144893],{"class":929},[460,147444,1348],{"class":466},[460,147446,147447,147449,147451,147453,147455],{"class":462,"line":476},[460,147448,146851],{"class":900},[460,147450,1961],{"class":466},[460,147452,10138],{"class":900},[460,147454,144908],{"class":466},[460,147456,146860],{"class":942},[460,147458,147459,147461,147463,147465,147467,147469],{"class":462,"line":482},[460,147460,146865],{"class":900},[460,147462,1961],{"class":466},[460,147464,2096],{"class":900},[460,147466,2017],{"class":887},[460,147468,146874],{"class":466},[460,147470,146877],{"class":942},[460,147472,147473,147475,147477,147479,147481,147483],{"class":462,"line":488},[460,147474,146882],{"class":900},[460,147476,1961],{"class":466},[460,147478,2110],{"class":900},[460,147480,2017],{"class":887},[460,147482,146891],{"class":466},[460,147484,146894],{"class":942},[460,147486,147487],{"class":462,"line":494},[460,147488,821],{"class":466},[30,147490],{"style":140901,"src":147491},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-057.png",[14,147493,147494],{},"(6)总结",[16884,147496,147497,147512],{},[16887,147498,147499],{},[16890,147500,147501,147503,147506,147509],{},[16893,147502,146835],{"align":40149},[16893,147504,147505],{"align":40149},"是否脱标",[16893,147507,147508],{"align":40149},"移动位置",[16893,147510,147511],{"align":40149},"是否常用",[16930,147513,147514,147527,147541,147555,147568],{},[16890,147515,147516,147519,147521,147524],{},[16935,147517,147518],{"align":40149},"Static 静态定位",[16935,147520,119171],{"align":40149},[16935,147522,147523],{"align":40149},"不能使用边偏移",[16935,147525,147526],{"align":40149},"很少",[16890,147528,147529,147532,147535,147538],{},[16935,147530,147531],{"align":40149},"Relative 相对定位",[16935,147533,147534],{"align":40149},"否(占有位置)",[16935,147536,147537],{"align":40149},"相对于自身位置移动",[16935,147539,147540],{"align":40149},"基本单独使用",[16890,147542,147543,147546,147549,147552],{},[16935,147544,147545],{"align":40149},"Absolute 绝对定位",[16935,147547,147548],{"align":40149},"是(不占有位置)",[16935,147550,147551],{"align":40149},"带有定位的父级",[16935,147553,147554],{"align":40149},"要和定位父级元素搭配使用",[16890,147556,147557,147560,147562,147565],{},[16935,147558,147559],{"align":40149},"Fixed 固定定位",[16935,147561,147548],{"align":40149},[16935,147563,147564],{"align":40149},"浏览器可视区",[16935,147566,147567],{"align":40149},"单独使用,不需要父级",[16890,147569,147570,147573,147575,147577],{},[16935,147571,147572],{"align":40149},"Sticky 粘性定位",[16935,147574,147534],{"align":40149},[16935,147576,147564],{"align":40149},[16935,147578,147579],{"align":40149},"当前阶段少",[103,147581,147582],{"start":476},[43,147583,147584,147587],{},[3944,147585,147586],{},"边偏移"," 则决定了该元素的最终位置",[16884,147589,147590,147601],{},[16887,147591,147592],{},[16890,147593,147594,147597,147599],{},[16893,147595,147596],{"align":40149},"边偏移属性",[16893,147598,43903],{"align":40149},[16893,147600,43900],{"align":40149},[16930,147602,147603,147614,147625,147635],{},[16890,147604,147605,147608,147611],{},[16935,147606,147607],{"align":40149},"top",[16935,147609,147610],{"align":40149},"top: 80px;",[16935,147612,147613],{"align":40149},"顶端偏移量，定义元素相对于父元素上边线的距离",[16890,147615,147616,147619,147622],{},[16935,147617,147618],{"align":40149},"bottom",[16935,147620,147621],{"align":40149},"bottom: 80px ;",[16935,147623,147624],{"align":40149},"底部偏移量，定义元素相对于其父元素下边线的距离",[16890,147626,147627,147629,147632],{},[16935,147628,40149],{"align":40149},[16935,147630,147631],{"align":40149},"left: 80px ;",[16935,147633,147634],{"align":40149},"左侧偏移量，定义元素相对于其父元素左边线的距离",[16890,147636,147637,147639,147642],{},[16935,147638,88651],{"align":40149},[16935,147640,147641],{"align":40149},"right: 80px ;",[16935,147643,147644],{"align":40149},"右侧偏移量，定义元素相对于其父元素右边线的距离",[40,147646,147647],{},[43,147648,25511,147649,147651,147652,147654,147655,147657,147658,147661,147662,147664,147665,147667],{},[69963,147650],{},"  ① ",[3944,147653,147586],{}," 需要和 ",[3944,147656,146835],{}," 联合使用， ",[3944,147659,147660],{},"单独使用无效"," ；",[69963,147663],{},"  ②top和bottom不要同时使用",[69963,147666],{},"  ③left和right不要同时使用",[115,147669,147671],{"id":147670},"_11133-定位口诀-子绝父相","11.1.3.3 定位口诀-子绝父相",[14,147673,147674],{},"子级是绝对定位的话，父级要用相对定位",[40,147676,147677,147680,147683,147686],{},[43,147678,147679],{},"子级绝对定位，不会占有位置，可以放到父盒子里面的任何一个地方，不会影响其他的兄弟盒子",[43,147681,147682],{},"父盒子需要加定位限制子盒子在父盒子内显示",[43,147684,147685],{},"父盒子布局时，需要占有位置，因此父亲只能是相对定位",[43,147687,147688,147689,147692],{},"子绝父相不是永远不变的，如果父元素不需要占有位置， ",[3944,147690,147691],{},"子绝父绝"," 也会遇到",[115,147694,147696],{"id":147695},"_11134-堆叠顺序z-index","11.1.3.4 堆叠顺序(z-index)",[40,147698,147699,147714],{},[43,147700,147701,147702,147705,147706,147709,147710,147713],{},"在使用 ",[3944,147703,147704],{},"定位"," 布局时，可能会 ",[3944,147707,147708],{},"出现盒子重叠的情况"," 。此时，可以使用 ",[3944,147711,147712],{},"z-index"," 来控制盒子的前后次序 (z轴)",[43,147715,5927],{},[451,147717,147718],{"className":141045,"code":146838,"language":141047,"meta":32,"style":32},[457,147719,147720,147726,147738,147752,147766],{"__ignoreMap":32},[460,147721,147722,147724],{"class":462,"line":463},[460,147723,144893],{"class":929},[460,147725,1348],{"class":466},[460,147727,147728,147730,147732,147734,147736],{"class":462,"line":476},[460,147729,146851],{"class":900},[460,147731,1961],{"class":466},[460,147733,10138],{"class":900},[460,147735,144908],{"class":466},[460,147737,146860],{"class":942},[460,147739,147740,147742,147744,147746,147748,147750],{"class":462,"line":482},[460,147741,146865],{"class":900},[460,147743,1961],{"class":466},[460,147745,2096],{"class":900},[460,147747,2017],{"class":887},[460,147749,146874],{"class":466},[460,147751,146877],{"class":942},[460,147753,147754,147756,147758,147760,147762,147764],{"class":462,"line":488},[460,147755,146882],{"class":900},[460,147757,1961],{"class":466},[460,147759,2110],{"class":900},[460,147761,2017],{"class":887},[460,147763,146891],{"class":466},[460,147765,146894],{"class":942},[460,147767,147768],{"class":462,"line":494},[460,147769,821],{"class":466},[40,147771,147772],{},[43,147773,147774,147775,147651,147777,147779,147780,142208,147783,6271,147786,147788,147789,147791,147792,147795,147796,147661,147799,147801,147802,147805,147807],{},"z-index的特性",[69963,147776],{},[3944,147778,141509],{}," ： ",[3944,147781,147782],{},"正整数",[3944,147784,147785],{},"负整数",[3944,147787,936],{}," ，默认值是 0，数值越大，盒子越靠上；",[69963,147790],{},"  ②如果 ",[3944,147793,147794],{},"属性值相同"," ，则按照书写顺序， ",[3944,147797,147798],{},"后来居上",[69963,147800],{},"  ③数字后面 ",[3944,147803,147804],{},"不能加单位",[69963,147806],{},"  ④z-index 只能应用于相对定位,绝对定位和固定定位的元素,其他标准流,浮动和静态定位无效(只有定位的盒子才有z-index属性)",[115,147809,147811],{"id":147810},"_11135-绝对定位盒子居中","11.1.3.5 绝对定位盒子居中",[14,147813,147814],{},"加了绝对定位\u002F固定定位的盒子不能通过设置margin:auto;设置水平居中",[14,147816,147817],{},"方法:",[40,147819,147820,147830],{},[43,147821,147822,147823,147826,147827],{},"left: 50%; 让 ",[3944,147824,147825],{},"盒子的左侧"," 移动到 ",[3944,147828,147829],{},"父级元素的水平中心位置",[43,147831,147832,147833,147836,147837],{},"margin-left: -100px; 让盒子 ",[3944,147834,147835],{},"向左"," 移动 ",[3944,147838,147839],{},"自身宽度的一半",[115,147841,147843],{"id":147842},"_11136-定位特殊特性","11.1.3.6 定位特殊特性",[103,147845,147846,147849],{},[43,147847,147848],{},"行内元素添加绝对或者固定定位，可以直接设置高度和宽度",[43,147850,147851],{},"块级元素添加绝对或者固定定位，如果不给宽度或者高度，默认大小是内容的大小",[14,147853,147854],{},"也就是说绝对定位和固定定位和浮动类似",[103,147856,147857],{"start":482},[43,147858,147859],{},"display 是显示模式， 可以改变显示模式有以下方式:",[40,147861,147862,147865,147868],{},[43,147863,147864],{},"可以用inline-block 转换为行内块",[43,147866,147867],{},"可以用浮动 float 默认转换为行内块（类似，并不完全一样，因为浮动是脱标的）",[43,147869,147870],{},"绝对定位和固定定位也和浮动类似， 默认转换为行内块",[14,147872,147873],{},"一个行内的盒子,如果加了浮动,固定定位和绝对定位,不用转换,就可以给这个盒子直接设置宽度和高度等",[115,147875,147877],{"id":147876},"_11137-绝对定位固定定位会完全压住盒子","11.1.3.7 绝对定位(固定定位)会完全压住盒子",[103,147879,147880,147883,147886,147889],{},[43,147881,147882],{},"浮动元素不同，只会压住它下面标准流的盒子，但是不会压住下面标准流盒子里面的文字",[43,147884,147885],{},"绝对定位（固定定位）会压住下面标准流所有的内容",[43,147887,147888],{},"浮动之所以不会压住文字，因为浮动产生的目的最初是为了做文字环绕效果的。 文字会围绕浮动元素",[43,147890,147891],{},"以前浮动就是为了文字环绕效果，现在已经经常用于布局了",[451,147893,147894],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},[457,147895,147896,147902,147912,147916,147922,147932],{"__ignoreMap":32},[460,147897,147898,147900],{"class":462,"line":463},[460,147899,145518],{"class":929},[460,147901,1348],{"class":466},[460,147903,147904,147906,147908,147910],{"class":462,"line":476},[460,147905,145525],{"class":900},[460,147907,1961],{"class":466},[460,147909,40149],{"class":900},[460,147911,1966],{"class":466},[460,147913,147914],{"class":462,"line":482},[460,147915,821],{"class":466},[460,147917,147918,147920],{"class":462,"line":488},[460,147919,145540],{"class":929},[460,147921,1348],{"class":466},[460,147923,147924,147926,147928,147930],{"class":462,"line":494},[460,147925,145525],{"class":900},[460,147927,1961],{"class":466},[460,147929,88651],{"class":900},[460,147931,1966],{"class":466},[460,147933,147934],{"class":462,"line":500},[460,147935,821],{"class":466},[30,147937],{"style":140901,"src":147938},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-058.png",[115,147940,147942],{"id":147941},"_11138-轮播图","11.1.3.8 轮播图",[30,147944],{"style":140901,"src":147945},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-059.png",[103,147947,147948],{},[43,147949,147950],{},"制作顺序:",[40,147952,147953,147956,147959,147968],{},[43,147954,147955],{},"大盒子我们类名为： tb-promo 淘宝广告",[43,147957,147958],{},"里面先放一张图片",[43,147960,147961,147962,147964,147965,147967],{},"左右两个按钮 用链接就好了。 左箭头 prev 右箭头 next",[69963,147963],{},"  ①左按钮样式（border-radius：左上，右上，右下，左下）",[69963,147966],{},"  ②右按钮定位，提取左右按钮共同的样式代码（并集选择器）",[43,147969,147970,147971,147973,147974,147976],{},"底侧小圆点ul 继续做。 类名为 promo-nav",[69963,147972],{},"  ①中间长方形椭圆 ul的定位（水平居中，离底部15px）",[69963,147975],{},"  ②长方形需要五个小圆点，ul无序列表，li浮动，椭圆中小圆点的样式",[103,147978,147979],{"start":476},[43,147980,147981],{},"代码模块",[451,147983,147985],{"className":141045,"code":147984,"language":141047,"meta":32,"style":32},"\u002F* 绝对定位：相对于最近的有定位的祖先元素移动 *\u002F\n.son {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\u002F* 父元素需要加 relative（子绝父相） *\u002F\n.father {\n  position: relative;\n}\n",[457,147986,147987,147992,147999,148009,148019,148029,148033,148038,148045,148055],{"__ignoreMap":32},[460,147988,147989],{"class":462,"line":463},[460,147990,147991],{"class":942},"\u002F* 绝对定位：相对于最近的有定位的祖先元素移动 *\u002F\n",[460,147993,147994,147997],{"class":462,"line":476},[460,147995,147996],{"class":929},".son",[460,147998,1348],{"class":466},[460,148000,148001,148003,148005,148007],{"class":462,"line":482},[460,148002,146851],{"class":900},[460,148004,1961],{"class":466},[460,148006,10202],{"class":900},[460,148008,1966],{"class":466},[460,148010,148011,148013,148015,148017],{"class":462,"line":488},[460,148012,146865],{"class":900},[460,148014,1961],{"class":466},[460,148016,936],{"class":900},[460,148018,1966],{"class":466},[460,148020,148021,148023,148025,148027],{"class":462,"line":494},[460,148022,146882],{"class":900},[460,148024,1961],{"class":466},[460,148026,936],{"class":900},[460,148028,1966],{"class":466},[460,148030,148031],{"class":462,"line":500},[460,148032,821],{"class":466},[460,148034,148035],{"class":462,"line":506},[460,148036,148037],{"class":942},"\u002F* 父元素需要加 relative（子绝父相） *\u002F\n",[460,148039,148040,148043],{"class":462,"line":512},[460,148041,148042],{"class":929},".father",[460,148044,1348],{"class":466},[460,148046,148047,148049,148051,148053],{"class":462,"line":518},[460,148048,146851],{"class":900},[460,148050,1961],{"class":466},[460,148052,10138],{"class":900},[460,148054,1966],{"class":466},[460,148056,148057],{"class":462,"line":525},[460,148058,821],{"class":466},[14,148060,148061],{},"总结收获:主要学习的地方是相同属性使用并集选择器",[23,148063,148065],{"id":148064},"_1114-定位数值的移动","11.1.4 定位数值的移动",[30,148067],{"style":140901,"src":148068},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-060.png",[14,148070,148071],{},"✨ 黄金口诀：",[14,148073,148074],{},"\"TOP正下负上，LEFT正右负左\"",[14,148076,148077],{},"\"RIGHT正左负右，BOTTOM正上负下",[14,148079,148080],{},"可以理解为正数就是相反方向移动，负值相同方向移动",[14,148082,148083],{},"✨ 简单记：",[14,148085,148086],{},"margin的四个方向，正值都是增加该方向的外边距（即向外推开），负值都是减少外边距（即向内拉近）",[1944,148088,148089],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":32,"searchDepth":476,"depth":476,"links":148091},[148092],{"id":146619,"depth":476,"text":146620,"children":148093},[148094,148095,148096,148097],{"id":146623,"depth":482,"text":146624},{"id":146638,"depth":482,"text":146639},{"id":146806,"depth":482,"text":146807},{"id":148064,"depth":482,"text":148065},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch11",{"title":146611,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch11-传统布局与定位体系","SZd3SJiZURVo5OmRpYbIFmG1fddK7JxCa-sd5nbDotk",{"id":148104,"title":148105,"body":148106,"description":16682,"extension":16683,"meta":149529,"navigation":521,"path":149530,"seo":149531,"stem":149532,"__hash__":149533},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch12-显示隐藏与图形资源.md","12. 显示隐藏与图形资源",{"type":7,"value":148107,"toc":149508},[148108,148111,148115,148123,148127,148132,148140,148152,148156,148161,148169,148180,148184,148189,148230,148238,148242,148245,148248,148251,148345,148348,148442,148445,148539,148542,148545,148580,148583,148586,148616,148619,148622,148625,148628,148631,148634,148637,148707,148710,148714,148718,148759,148763,148769,148772,148775,148779,148782,148785,148788,148869,148872,148875,148879,148883,148886,148889,148892,148895,148898,148904,148913,148917,148936,148940,148950,148953,148956,148959,148962,148965,148968,148971,148974,148983,148987,148996,148999,149004,149057,149062,149228,149231,149234,149239,149242,149245,149248,149251,149256,149404,149407,149410,149415,149418,149423,149457,149460,149463,149467,149470,149477,149480,149483,149486,149489,149492,149495,149498,149502,149505],[10,148109,148105],{"id":148110},"_12-显示隐藏与图形资源",[18,148112,148114],{"id":148113},"_121-元素的显示和隐藏","12.1 元素的显示和隐藏",[40,148116,148117,148120],{},[43,148118,148119],{},"目的:让一个元素在页面中消失或者显示出来",[43,148121,148122],{},"场景:类似网站广告，当我们点击关闭就不见了，但是我们重新刷新页面，会重新出现！",[23,148124,148126],{"id":148125},"_1211-display-显示","12.1.1 display 显示",[103,148128,148129],{},[43,148130,148131],{},"display 设置或检索对象是否及如何显示",[40,148133,148134,148137],{},[43,148135,148136],{},"display: none;隐藏对象",[43,148138,148139],{},"display: block; 除了转换为块级元素之外，同时还有显示元素的意思",[103,148141,148142,148149],{"start":476},[43,148143,148144,148145,148148],{},"特点： display 隐藏元素后， ",[3944,148146,148147],{},"不再占"," 有原来的位置",[43,148150,148151],{},"在js中使用非常的广泛",[23,148153,148155],{"id":148154},"_1212-visibility可见性","12.1.2 visibility可见性",[103,148157,148158],{},[43,148159,148160],{},"visibility 属性用于指定一个元素应可见还是隐藏",[40,148162,148163,148166],{},[43,148164,148165],{},"visibility： visible；元素可见",[43,148167,148168],{},"visibility：hidden；元素隐藏",[103,148170,148171,148174,148177],{"start":476},[43,148172,148173],{},"如果隐藏元素想要原来位置， 就用 visibility：hidden；",[43,148175,148176],{},"如果隐藏元素不想要原来位置， 就用 display：none； (用处更多）",[43,148178,148179],{},"隐藏后继续占有原有位置",[23,148181,148183],{"id":148182},"_1213-overflow溢出","12.1.3 overflow溢出",[40,148185,148186],{},[43,148187,148188],{},"overflow 属性指定了如果内容溢出一个元素的框（超过其指定高度及宽度） 时，会发生什么",[16884,148190,148191,148199],{},[16887,148192,148193],{},[16890,148194,148195,148197],{},[16893,148196,141509],{"align":40149},[16893,148198,43900],{"align":40149},[16930,148200,148201,148209,148216,148223],{},[16890,148202,148203,148206],{},[16935,148204,148205],{"align":40149},"visible",[16935,148207,148208],{"align":40149},"不剪切内容也不添加滚动条，默认的，溢出的也显示出来，写不写overflow:hidden；是都显示溢出的文字的",[16890,148210,148211,148213],{},[16935,148212,77900],{"align":40149},[16935,148214,148215],{"align":40149},"不显示超过对象尺寸的内容，超出的部分隐藏掉",[16890,148217,148218,148220],{},[16935,148219,143465],{"align":40149},[16935,148221,148222],{"align":40149},"不管超出内容否，总是显示滚动条",[16890,148224,148225,148227],{},[16935,148226,88791],{"align":40149},[16935,148228,148229],{"align":40149},"超出自动显示滚动条，不超出不显示滚动条",[40,148231,148232,148235],{},[43,148233,148234],{},"一般情况下，我们都不想让溢出的内容显示出来，因为溢出的部分会影响布局",[43,148236,148237],{},"但是如果有定位的盒子， 请慎用overflow:hidden； 因为它会隐藏多余的部分，如果对父盒子使用overflow:hidden;的话，那子盒子使用绝对定位时如果多出去一块，则会造成子盒子一部分不显示（就是有时候可能小盒子有一部分是在大盒子外边的，使用overflow:hidden后超出大盒子的就不再显示，会导致小盒子显示不全，所以这时候就不能加overflow:hidden）",[23,148239,148241],{"id":148240},"_1214-案例收获","12.1.4 案例收获",[30,148243],{"style":140901,"src":148244},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-061.png",[14,148246,148247],{},"问题：没做出来动态效果，使用hover没实现",[14,148249,148250],{},"收获：在做这类效果的时候，不要再盒子里再放盒子了，可以直接使用背景background来做中间的播放按钮，把它放在阴影盒子中就欧克，其次在使用hover时，做成滚动到大盒子时，阴影盒子显示",[451,148252,148253],{"className":141045,"code":146477,"language":141047,"meta":32,"style":32},[457,148254,148255,148259,148273,148277,148291,148295,148309,148313,148327,148331],{"__ignoreMap":32},[460,148256,148257],{"class":462,"line":463},[460,148258,146484],{"class":942},[460,148260,148261,148263,148265,148267,148269,148271],{"class":462,"line":476},[460,148262,146489],{"class":929},[460,148264,3437],{"class":466},[460,148266,143405],{"class":900},[460,148268,1961],{"class":466},[460,148270,146498],{"class":900},[460,148272,143975],{"class":466},[460,148274,148275],{"class":462,"line":482},[460,148276,146505],{"class":942},[460,148278,148279,148281,148283,148285,148287,148289],{"class":462,"line":488},[460,148280,146510],{"class":929},[460,148282,3437],{"class":466},[460,148284,143405],{"class":900},[460,148286,1961],{"class":466},[460,148288,10138],{"class":900},[460,148290,143975],{"class":466},[460,148292,148293],{"class":462,"line":494},[460,148294,146525],{"class":942},[460,148296,148297,148299,148301,148303,148305,148307],{"class":462,"line":500},[460,148298,146530],{"class":929},[460,148300,3437],{"class":466},[460,148302,143405],{"class":900},[460,148304,1961],{"class":466},[460,148306,10202],{"class":900},[460,148308,143975],{"class":466},[460,148310,148311],{"class":462,"line":506},[460,148312,146545],{"class":942},[460,148314,148315,148317,148319,148321,148323,148325],{"class":462,"line":512},[460,148316,146550],{"class":929},[460,148318,3437],{"class":466},[460,148320,143405],{"class":900},[460,148322,1961],{"class":466},[460,148324,10009],{"class":900},[460,148326,143975],{"class":466},[460,148328,148329],{"class":462,"line":518},[460,148330,146565],{"class":942},[460,148332,148333,148335,148337,148339,148341,148343],{"class":462,"line":525},[460,148334,146570],{"class":929},[460,148336,3437],{"class":466},[460,148338,143405],{"class":900},[460,148340,1961],{"class":466},[460,148342,146579],{"class":900},[460,148344,143975],{"class":466},[14,148346,148347],{},"完整代码：",[451,148349,148350],{"className":141045,"code":146477,"language":141047,"meta":32,"style":32},[457,148351,148352,148356,148370,148374,148388,148392,148406,148410,148424,148428],{"__ignoreMap":32},[460,148353,148354],{"class":462,"line":463},[460,148355,146484],{"class":942},[460,148357,148358,148360,148362,148364,148366,148368],{"class":462,"line":476},[460,148359,146489],{"class":929},[460,148361,3437],{"class":466},[460,148363,143405],{"class":900},[460,148365,1961],{"class":466},[460,148367,146498],{"class":900},[460,148369,143975],{"class":466},[460,148371,148372],{"class":462,"line":482},[460,148373,146505],{"class":942},[460,148375,148376,148378,148380,148382,148384,148386],{"class":462,"line":488},[460,148377,146510],{"class":929},[460,148379,3437],{"class":466},[460,148381,143405],{"class":900},[460,148383,1961],{"class":466},[460,148385,10138],{"class":900},[460,148387,143975],{"class":466},[460,148389,148390],{"class":462,"line":494},[460,148391,146525],{"class":942},[460,148393,148394,148396,148398,148400,148402,148404],{"class":462,"line":500},[460,148395,146530],{"class":929},[460,148397,3437],{"class":466},[460,148399,143405],{"class":900},[460,148401,1961],{"class":466},[460,148403,10202],{"class":900},[460,148405,143975],{"class":466},[460,148407,148408],{"class":462,"line":506},[460,148409,146545],{"class":942},[460,148411,148412,148414,148416,148418,148420,148422],{"class":462,"line":512},[460,148413,146550],{"class":929},[460,148415,3437],{"class":466},[460,148417,143405],{"class":900},[460,148419,1961],{"class":466},[460,148421,10009],{"class":900},[460,148423,143975],{"class":466},[460,148425,148426],{"class":462,"line":518},[460,148427,146565],{"class":942},[460,148429,148430,148432,148434,148436,148438,148440],{"class":462,"line":525},[460,148431,146570],{"class":929},[460,148433,3437],{"class":466},[460,148435,143405],{"class":900},[460,148437,1961],{"class":466},[460,148439,146579],{"class":900},[460,148441,143975],{"class":466},[14,148443,148444],{},"分布思路重点详解：",[451,148446,148447],{"className":141045,"code":146477,"language":141047,"meta":32,"style":32},[457,148448,148449,148453,148467,148471,148485,148489,148503,148507,148521,148525],{"__ignoreMap":32},[460,148450,148451],{"class":462,"line":463},[460,148452,146484],{"class":942},[460,148454,148455,148457,148459,148461,148463,148465],{"class":462,"line":476},[460,148456,146489],{"class":929},[460,148458,3437],{"class":466},[460,148460,143405],{"class":900},[460,148462,1961],{"class":466},[460,148464,146498],{"class":900},[460,148466,143975],{"class":466},[460,148468,148469],{"class":462,"line":482},[460,148470,146505],{"class":942},[460,148472,148473,148475,148477,148479,148481,148483],{"class":462,"line":488},[460,148474,146510],{"class":929},[460,148476,3437],{"class":466},[460,148478,143405],{"class":900},[460,148480,1961],{"class":466},[460,148482,10138],{"class":900},[460,148484,143975],{"class":466},[460,148486,148487],{"class":462,"line":494},[460,148488,146525],{"class":942},[460,148490,148491,148493,148495,148497,148499,148501],{"class":462,"line":500},[460,148492,146530],{"class":929},[460,148494,3437],{"class":466},[460,148496,143405],{"class":900},[460,148498,1961],{"class":466},[460,148500,10202],{"class":900},[460,148502,143975],{"class":466},[460,148504,148505],{"class":462,"line":506},[460,148506,146545],{"class":942},[460,148508,148509,148511,148513,148515,148517,148519],{"class":462,"line":512},[460,148510,146550],{"class":929},[460,148512,3437],{"class":466},[460,148514,143405],{"class":900},[460,148516,1961],{"class":466},[460,148518,10009],{"class":900},[460,148520,143975],{"class":466},[460,148522,148523],{"class":462,"line":518},[460,148524,146565],{"class":942},[460,148526,148527,148529,148531,148533,148535,148537],{"class":462,"line":525},[460,148528,146570],{"class":929},[460,148530,3437],{"class":466},[460,148532,143405],{"class":900},[460,148534,1961],{"class":466},[460,148536,146579],{"class":900},[460,148538,143975],{"class":466},[30,148540],{"style":140901,"src":148541},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-062.png",[14,148543,148544],{},"图片太大，盒子太小，此时需要修改图片的大小",[451,148546,148548],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},"\u003Cimg src=\"images\u002Fpic.jpg\" alt=\"描述文字\" title=\"悬停提示\">\n",[457,148549,148550],{"__ignoreMap":32},[460,148551,148552,148554,148556,148558,148560,148563,148565,148567,148570,148573,148575,148578],{"class":462,"line":463},[460,148553,781],{"class":466},[460,148555,30],{"class":470},[460,148557,12081],{"class":929},[460,148559,894],{"class":466},[460,148561,148562],{"class":1353},"\"images\u002Fpic.jpg\"",[460,148564,16224],{"class":929},[460,148566,894],{"class":466},[460,148568,148569],{"class":1353},"\"描述文字\"",[460,148571,148572],{"class":929}," title",[460,148574,894],{"class":466},[460,148576,148577],{"class":1353},"\"悬停提示\"",[460,148579,473],{"class":466},[30,148581],{"style":140901,"src":148582},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-063.png",[14,148584,148585],{},"制造遮罩层",[451,148587,148588],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,148589,148590],{"__ignoreMap":32},[460,148591,148592,148594,148596,148598,148600,148602,148604,148606,148608,148610,148612,148614],{"class":462,"line":463},[460,148593,781],{"class":466},[460,148595,30],{"class":470},[460,148597,12081],{"class":929},[460,148599,894],{"class":466},[460,148601,148562],{"class":1353},[460,148603,16224],{"class":929},[460,148605,894],{"class":466},[460,148607,148569],{"class":1353},[460,148609,148572],{"class":929},[460,148611,894],{"class":466},[460,148613,148577],{"class":1353},[460,148615,473],{"class":466},[14,148617,148618],{},"此时是这样的为标准流",[30,148620],{"style":140901,"src":148621},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-064.png",[14,148623,148624],{},"还要子绝父相，不然子盒子会以浏览器为准，不以盒子为准",[14,148626,148627],{},"中间播放按钮作为背景展示就可以，不用再加盒子了",[14,148629,148630],{},"让他在中间，用center(background-position)",[14,148632,148633],{},"将需要变的尽可能放到一个盒子中",[14,148635,148636],{},"放大盒子上内部盒子发生变化",[451,148638,148640],{"className":141045,"code":148639,"language":141047,"meta":32,"style":32},".parent {\n  position: relative;\n}\n.child {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n}\n",[457,148641,148642,148648,148658,148662,148669,148679,148691,148703],{"__ignoreMap":32},[460,148643,148644,148646],{"class":462,"line":463},[460,148645,142112],{"class":929},[460,148647,1348],{"class":466},[460,148649,148650,148652,148654,148656],{"class":462,"line":476},[460,148651,146851],{"class":900},[460,148653,1961],{"class":466},[460,148655,10138],{"class":900},[460,148657,1966],{"class":466},[460,148659,148660],{"class":462,"line":482},[460,148661,821],{"class":466},[460,148663,148664,148667],{"class":462,"line":488},[460,148665,148666],{"class":929},".child",[460,148668,1348],{"class":466},[460,148670,148671,148673,148675,148677],{"class":462,"line":494},[460,148672,146851],{"class":900},[460,148674,1961],{"class":466},[460,148676,10202],{"class":900},[460,148678,1966],{"class":466},[460,148680,148681,148683,148685,148687,148689],{"class":462,"line":500},[460,148682,146865],{"class":900},[460,148684,1961],{"class":466},[460,148686,2549],{"class":900},[460,148688,2328],{"class":887},[460,148690,1966],{"class":466},[460,148692,148693,148695,148697,148699,148701],{"class":462,"line":506},[460,148694,146882],{"class":900},[460,148696,1961],{"class":466},[460,148698,2549],{"class":900},[460,148700,2328],{"class":887},[460,148702,1966],{"class":466},[460,148704,148705],{"class":462,"line":512},[460,148706,821],{"class":466},[14,148708,148709],{},"当鼠标放到使用tudou这个类选择器盒子上时，使用mask类选择器的盒子会显现内容",[18,148711,148713],{"id":148712},"_122-精灵图","12.2 精灵图",[23,148715,148717],{"id":148716},"_1221-理解","12.2.1 理解",[103,148719,148720,148738],{},[43,148721,148722,148723,146951,148726,148729,148730,148733,148734,148737],{},"目的： ",[3944,148724,148725],{},"为了有效地减少服务器接收和发送请求的次数",[3944,148727,148728],{},"提高"," 页面的 ",[3944,148731,148732],{},"加载速度"," ，出现了 ",[3944,148735,148736],{},"CSS 精灵技术"," （也称 CSS Sprites、CSS 雪碧），将网页中的一些小背景图像整合到一张大图中 ，这样服务器只需一次请求就可以了",[43,148739,148740,148741,148743,148744,148746,148747,148749,148750,148752,148753,148755,148756,148758],{},"使用精灵图核心：",[69963,148742],{},"  ①精灵技术主要针对于背景图片使用。就是把多个小背景图片整合到一张大图片中",[69963,148745],{},"  ②这个大图片也称为 sprites 精灵图 或者 雪碧图",[69963,148748],{},"  ③移动背景图片位置， 此时可以使用 background-position",[69963,148751],{},"  ④移动的距离就是这个目标图片的 x 和 y 坐标。注意网页中的坐标有所不同",[69963,148754],{},"  ⑤因为一般情况下都是往上往左移动，所以数值是负值",[69963,148757],{},"  ⑥使用精灵图的时候需要精确测量，每个小背景图片的大小和位置",[23,148760,148762],{"id":148761},"_1222-扒图","12.2.2 扒图",[451,148764,148767],{"className":148765,"code":148766,"language":8391},[21693],"\u003Cimg style=\"max-width:100%\" src=\"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-065.png\">\n",[457,148768,148766],{"__ignoreMap":32},[30,148770],{"style":140901,"src":148771},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-066.png",[30,148773],{"style":140901,"src":148774},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-067.png",[23,148776,148778],{"id":148777},"_1223-精灵图的实现","12.2.3 精灵图的实现",[30,148780],{"style":140901,"src":148781},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-068.png",[14,148783,148784],{},"打开FW软件，使用切片命令，将想实现精灵图的位置进行切片操作，然后下方会出现坐标",[30,148786],{"style":140901,"src":148787},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-069.png",[451,148789,148791],{"className":141045,"code":148790,"language":141047,"meta":32,"style":32},"\u002F* 精灵图使用：通过 background-position 定位 *\u002F\n.icon {\n  width: 20px;\n  height: 20px;\n  background: url(sprites.png) no-repeat;\n  background-position: -10px -20px;\n}\n",[457,148792,148793,148798,148805,148817,148829,148848,148865],{"__ignoreMap":32},[460,148794,148795],{"class":462,"line":463},[460,148796,148797],{"class":942},"\u002F* 精灵图使用：通过 background-position 定位 *\u002F\n",[460,148799,148800,148803],{"class":462,"line":476},[460,148801,148802],{"class":929},".icon",[460,148804,1348],{"class":466},[460,148806,148807,148809,148811,148813,148815],{"class":462,"line":482},[460,148808,86710],{"class":900},[460,148810,1961],{"class":466},[460,148812,2110],{"class":900},[460,148814,2017],{"class":887},[460,148816,1966],{"class":466},[460,148818,148819,148821,148823,148825,148827],{"class":462,"line":488},[460,148820,86930],{"class":900},[460,148822,1961],{"class":466},[460,148824,2110],{"class":900},[460,148826,2017],{"class":887},[460,148828,1966],{"class":466},[460,148830,148831,148833,148835,148837,148839,148842,148844,148846],{"class":462,"line":494},[460,148832,86753],{"class":900},[460,148834,1961],{"class":466},[460,148836,77911],{"class":900},[460,148838,2174],{"class":466},[460,148840,148841],{"class":3380},"sprites.png",[460,148843,8296],{"class":466},[460,148845,77921],{"class":900},[460,148847,1966],{"class":466},[460,148849,148850,148852,148854,148856,148858,148861,148863],{"class":462,"line":500},[460,148851,143305],{"class":900},[460,148853,1961],{"class":466},[460,148855,68034],{"class":900},[460,148857,2017],{"class":887},[460,148859,148860],{"class":900}," -20",[460,148862,2017],{"class":887},[460,148864,1966],{"class":466},[460,148866,148867],{"class":462,"line":506},[460,148868,821],{"class":466},[30,148870],{"style":140901,"src":148871},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-070.png",[14,148873,148874],{},"在前端中坐标轴的正方向是右和下",[18,148876,148878],{"id":148877},"_123-字体图标","12.3 字体图标",[23,148880,148882],{"id":148881},"_1231-字体图标与精灵图的对比","12.3.1 字体图标与精灵图的对比",[14,148884,148885],{},"字体图标使用场景： 主要用于显示网页中通用、常用的一些小图标。",[14,148887,148888],{},"精灵图是有诸多优点的，但是缺点很明显。",[14,148890,148891],{},"1.图片文件还是比较大的。",[14,148893,148894],{},"2.图片本身放大和缩小会失真。",[14,148896,148897],{},"3.一旦图片制作完毕想要更换非常复杂。",[14,148899,148900,148901,42152],{},"此时，有一种技术的出现很好的解决了以上问题，就是 ",[3944,148902,148903],{},"字体图标 iconfont",[14,148905,148906,148909,148910,44794],{},[3944,148907,148908],{},"字体图标"," 可以为前端工程师提供一种方便高效的图标使用方式，",[3944,148911,148912],{},"展示的是图标，本质属于字体",[23,148914,148916],{"id":148915},"_1232-字体图标的优点","12.3.2 字体图标的优点",[40,148918,148919,148924,148927,148930,148933],{},[43,148920,148921,148923],{},[3944,148922,42288],{}," ：一个图标字体要比一系列的图像要小。一旦字体加载了，图标就会马上渲染出来，减少了服务器请求",[43,148925,148926],{},"灵活性：本质其实是文字，可以很随意的改变颜色、产生阴影、透明效果、旋转等",[43,148928,148929],{},"兼容性：几乎支持所有的浏览器，请放心使用",[43,148931,148932],{},"注意： 字体图标不能替代精灵技术，只是对工作中图标部分技术的提升和优化",[43,148934,148935],{},"样式结构比较简单，样式比较复杂的小图片的话还是得用精灵图来进行做",[23,148937,148939],{"id":148938},"_1233-字体库下载网站","12.3.3 字体库下载网站",[40,148941,148942],{},[43,148943,148944,148945],{},"icomoon字体库：",[2756,148946,148949],{"href":148947,"rel":148948},"http:\u002F\u002Ficomoon.io\u002F",[4943],"http:\u002F\u002Ficomoon.io",[14,148951,148952],{},"进去之后点icomoon app",[30,148954],{"style":140901,"src":148955},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-071.png",[14,148957,148958],{},"可以对其编辑：",[30,148960],{"style":140901,"src":148961},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-072.png",[14,148963,148964],{},"生成字体：",[30,148966],{"style":140901,"src":148967},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-073.png",[14,148969,148970],{},"下载：",[30,148972],{"style":140901,"src":148973},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-074.png",[40,148975,148976],{},[43,148977,148978,148979],{},"阿里iconfont字体库： ",[2756,148980,148981],{"href":148981,"rel":148982},"http:\u002F\u002Fwww.iconfont.cn\u002F",[4943],[23,148984,148986],{"id":148985},"_1234-字体图标的引入","12.3.4 字体图标的引入",[103,148988,148989],{},[43,148990,148991,148992,148995],{},"把下载包里面的 ",[3944,148993,148994],{},"fonts"," 文件夹放入页面根目录下",[30,148997],{"style":140901,"src":148998},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-075.png",[103,149000,149001],{"start":476},[43,149002,149003],{},"字体文件格式",[16884,149005,149006,149015],{},[16887,149007,149008],{},[16890,149009,149010,149013],{},[16893,149011,149012],{"align":40149},"格式",[16893,149014,40153],{"align":40149},[16930,149016,149017,149027,149037,149047],{},[16890,149018,149019,149024],{},[16935,149020,149021],{"align":40149},[3944,149022,149023],{},".ttf",[16935,149025,149026],{"align":40149},"ttf字体是Windows和Mac的最常见的字体，支持这种字体的浏览器有IE9+、Firefox3.5+、Chrome4+、Safari3+、Opera10+、iOS Mobile、Safari4.2+",[16890,149028,149029,149034],{},[16935,149030,149031],{"align":40149},[3944,149032,149033],{},".woff",[16935,149035,149036],{"align":40149},"woff字体，支持这种字体的浏览器有IE9+、Firefox3.5+、Chrome6+、Safari3.6+、Opera11.1+",[16890,149038,149039,149044],{},[16935,149040,149041],{"align":40149},[3944,149042,149043],{},".eot",[16935,149045,149046],{"align":40149},"eot字体是IE专用字体，支持这种字体的浏览器有IE4+",[16890,149048,149049,149054],{},[16935,149050,149051],{"align":40149},[3944,149052,149053],{},"svg",[16935,149055,149056],{"align":40149},"svg字体是基于SVG字体渲染的一种格式，支持这种字体的浏览器有Chrome4+、Safari3.1+、Opera10.0+、iOS Mobile Safari3.2+",[103,149058,149059],{"start":482},[43,149060,149061],{},"在 CSS 样式中全局声明字体： 简单理解把这些字体文件通过css引入到我们页面中",[451,149063,149065],{"className":141045,"code":149064,"language":141047,"meta":32,"style":32},"\u002F* 引入字体图标 *\u002F\n@font-face {\n  font-family: 'icomoon';\n  src: url('fonts\u002Ficomoon.eot');\n  src: url('fonts\u002Ficomoon.eot?#iefix') format('embedded-opentype'),\n       url('fonts\u002Ficomoon.woff') format('woff'),\n       url('fonts\u002Ficomoon.ttf') format('truetype'),\n       url('fonts\u002Ficomoon.svg#icomoon') format('svg');\n}\n.icon {\n  font-family: 'icomoon';\n  font-style: normal;\n}\n",[457,149066,149067,149072,149079,149091,149107,149132,149153,149173,149193,149197,149203,149213,149224],{"__ignoreMap":32},[460,149068,149069],{"class":462,"line":463},[460,149070,149071],{"class":942},"\u002F* 引入字体图标 *\u002F\n",[460,149073,149074,149077],{"class":462,"line":476},[460,149075,149076],{"class":887},"@font-face",[460,149078,1348],{"class":466},[460,149080,149081,149084,149086,149089],{"class":462,"line":482},[460,149082,149083],{"class":900},"  font-family",[460,149085,1961],{"class":466},[460,149087,149088],{"class":1353},"'icomoon'",[460,149090,1966],{"class":466},[460,149092,149093,149096,149098,149100,149102,149105],{"class":462,"line":488},[460,149094,149095],{"class":900},"  src",[460,149097,1961],{"class":466},[460,149099,77911],{"class":900},[460,149101,2174],{"class":466},[460,149103,149104],{"class":1353},"'fonts\u002Ficomoon.eot'",[460,149106,2254],{"class":466},[460,149108,149109,149111,149113,149115,149117,149120,149122,149125,149127,149130],{"class":462,"line":494},[460,149110,149095],{"class":900},[460,149112,1961],{"class":466},[460,149114,77911],{"class":900},[460,149116,2174],{"class":466},[460,149118,149119],{"class":1353},"'fonts\u002Ficomoon.eot?#iefix'",[460,149121,8296],{"class":466},[460,149123,149124],{"class":900},"format",[460,149126,2174],{"class":466},[460,149128,149129],{"class":1353},"'embedded-opentype'",[460,149131,54352],{"class":466},[460,149133,149134,149137,149139,149142,149144,149146,149148,149151],{"class":462,"line":500},[460,149135,149136],{"class":900},"       url",[460,149138,2174],{"class":466},[460,149140,149141],{"class":1353},"'fonts\u002Ficomoon.woff'",[460,149143,8296],{"class":466},[460,149145,149124],{"class":900},[460,149147,2174],{"class":466},[460,149149,149150],{"class":1353},"'woff'",[460,149152,54352],{"class":466},[460,149154,149155,149157,149159,149162,149164,149166,149168,149171],{"class":462,"line":506},[460,149156,149136],{"class":900},[460,149158,2174],{"class":466},[460,149160,149161],{"class":1353},"'fonts\u002Ficomoon.ttf'",[460,149163,8296],{"class":466},[460,149165,149124],{"class":900},[460,149167,2174],{"class":466},[460,149169,149170],{"class":1353},"'truetype'",[460,149172,54352],{"class":466},[460,149174,149175,149177,149179,149182,149184,149186,149188,149191],{"class":462,"line":512},[460,149176,149136],{"class":900},[460,149178,2174],{"class":466},[460,149180,149181],{"class":1353},"'fonts\u002Ficomoon.svg#icomoon'",[460,149183,8296],{"class":466},[460,149185,149124],{"class":900},[460,149187,2174],{"class":466},[460,149189,149190],{"class":1353},"'svg'",[460,149192,2254],{"class":466},[460,149194,149195],{"class":462,"line":518},[460,149196,821],{"class":466},[460,149198,149199,149201],{"class":462,"line":525},[460,149200,148802],{"class":929},[460,149202,1348],{"class":466},[460,149204,149205,149207,149209,149211],{"class":462,"line":531},[460,149206,149083],{"class":900},[460,149208,1961],{"class":466},[460,149210,149088],{"class":1353},[460,149212,1966],{"class":466},[460,149214,149215,149218,149220,149222],{"class":462,"line":537},[460,149216,149217],{"class":900},"  font-style",[460,149219,1961],{"class":466},[460,149221,10181],{"class":900},[460,149223,1966],{"class":466},[460,149225,149226],{"class":462,"line":543},[460,149227,821],{"class":466},[14,149229,149230],{},"字体声明也可以在下载的字体文件中找到style.css中复制，也可以复制上边的内容",[30,149232],{"style":140901,"src":149233},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-076.png",[103,149235,149236],{"start":488},[43,149237,149238],{},"添加字体",[30,149240],{"style":140901,"src":149241},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-077.png",[14,149243,149244],{},"复制：",[30,149246],{"style":140901,"src":149247},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-078.png",[14,149249,149250],{},"还有谁需要就把声明加在谁那里一份 font-family:'icomoon'",[103,149252,149253],{"start":494},[43,149254,149255],{},"代码展示：",[451,149257,149258],{"className":141045,"code":149064,"language":141047,"meta":32,"style":32},[457,149259,149260,149264,149270,149280,149294,149316,149334,149352,149370,149374,149380,149390,149400],{"__ignoreMap":32},[460,149261,149262],{"class":462,"line":463},[460,149263,149071],{"class":942},[460,149265,149266,149268],{"class":462,"line":476},[460,149267,149076],{"class":887},[460,149269,1348],{"class":466},[460,149271,149272,149274,149276,149278],{"class":462,"line":482},[460,149273,149083],{"class":900},[460,149275,1961],{"class":466},[460,149277,149088],{"class":1353},[460,149279,1966],{"class":466},[460,149281,149282,149284,149286,149288,149290,149292],{"class":462,"line":488},[460,149283,149095],{"class":900},[460,149285,1961],{"class":466},[460,149287,77911],{"class":900},[460,149289,2174],{"class":466},[460,149291,149104],{"class":1353},[460,149293,2254],{"class":466},[460,149295,149296,149298,149300,149302,149304,149306,149308,149310,149312,149314],{"class":462,"line":494},[460,149297,149095],{"class":900},[460,149299,1961],{"class":466},[460,149301,77911],{"class":900},[460,149303,2174],{"class":466},[460,149305,149119],{"class":1353},[460,149307,8296],{"class":466},[460,149309,149124],{"class":900},[460,149311,2174],{"class":466},[460,149313,149129],{"class":1353},[460,149315,54352],{"class":466},[460,149317,149318,149320,149322,149324,149326,149328,149330,149332],{"class":462,"line":500},[460,149319,149136],{"class":900},[460,149321,2174],{"class":466},[460,149323,149141],{"class":1353},[460,149325,8296],{"class":466},[460,149327,149124],{"class":900},[460,149329,2174],{"class":466},[460,149331,149150],{"class":1353},[460,149333,54352],{"class":466},[460,149335,149336,149338,149340,149342,149344,149346,149348,149350],{"class":462,"line":506},[460,149337,149136],{"class":900},[460,149339,2174],{"class":466},[460,149341,149161],{"class":1353},[460,149343,8296],{"class":466},[460,149345,149124],{"class":900},[460,149347,2174],{"class":466},[460,149349,149170],{"class":1353},[460,149351,54352],{"class":466},[460,149353,149354,149356,149358,149360,149362,149364,149366,149368],{"class":462,"line":512},[460,149355,149136],{"class":900},[460,149357,2174],{"class":466},[460,149359,149181],{"class":1353},[460,149361,8296],{"class":466},[460,149363,149124],{"class":900},[460,149365,2174],{"class":466},[460,149367,149190],{"class":1353},[460,149369,2254],{"class":466},[460,149371,149372],{"class":462,"line":518},[460,149373,821],{"class":466},[460,149375,149376,149378],{"class":462,"line":525},[460,149377,148802],{"class":929},[460,149379,1348],{"class":466},[460,149381,149382,149384,149386,149388],{"class":462,"line":531},[460,149383,149083],{"class":900},[460,149385,1961],{"class":466},[460,149387,149088],{"class":1353},[460,149389,1966],{"class":466},[460,149391,149392,149394,149396,149398],{"class":462,"line":537},[460,149393,149217],{"class":900},[460,149395,1961],{"class":466},[460,149397,10181],{"class":900},[460,149399,1966],{"class":466},[460,149401,149402],{"class":462,"line":543},[460,149403,821],{"class":466},[30,149405],{"style":140901,"src":149406},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-079.png",[14,149408,149409],{},"更加细节展示：",[103,149411,149412],{},[43,149413,149414],{},"html 标签内添加小图标",[30,149416],{"style":140901,"src":149417},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-080.png",[103,149419,149420],{"start":476},[43,149421,149422],{},"给标签定义字体",[451,149424,149425],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,149426,149427,149431,149445,149449],{"__ignoreMap":32},[460,149428,149429],{"class":462,"line":463},[460,149430,145156],{"class":942},[460,149432,149433,149435,149437,149439,149441,149443],{"class":462,"line":476},[460,149434,781],{"class":466},[460,149436,2737],{"class":470},[460,149438,2740],{"class":929},[460,149440,894],{"class":466},[460,149442,145169],{"class":1353},[460,149444,473],{"class":466},[460,149446,149447],{"class":462,"line":482},[460,149448,145176],{"class":466},[460,149450,149451,149453,149455],{"class":462,"line":488},[460,149452,1776],{"class":466},[460,149454,2737],{"class":470},[460,149456,473],{"class":466},[14,149458,149459],{},"注意：务必保证 这个字体和上面@font-face里面的字体保持一致",[30,149461],{"style":140901,"src":149462},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-081.png",[23,149464,149466],{"id":149465},"_1235-字体图标的追加","12.3.5 字体图标的追加",[14,149468,149469],{},"如果工作中，原来的字体图标不够用了，我们需要添加新的字体图标到原来的字体文件中",[14,149471,149472,149473,149476],{},"把压缩包里面的 ",[3944,149474,149475],{},"selection.json"," 从新上传，然后选中自己想要新的图标，从新下载压缩包，并替换原来的文件即可",[14,149478,149479],{},"打开网站，点下方：",[30,149481],{"style":140901,"src":149482},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-082.png",[30,149484],{"style":140901,"src":149485},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-083.png",[30,149487],{"style":140901,"src":149488},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-084.png",[14,149490,149491],{},"点yes重新加载",[14,149493,149494],{},"然后重复之前的操作就可以实现了",[14,149496,149497],{},"下载最新的文件夹，原来的文件夹可以是删除了！",[23,149499,149501],{"id":149500},"_1236-字体图标的加载原理","12.3.6 字体图标的加载原理",[30,149503],{"style":140901,"src":149504},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-085.png",[1944,149506,149507],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":149509},[149510,149516,149521],{"id":148113,"depth":476,"text":148114,"children":149511},[149512,149513,149514,149515],{"id":148125,"depth":482,"text":148126},{"id":148154,"depth":482,"text":148155},{"id":148182,"depth":482,"text":148183},{"id":148240,"depth":482,"text":148241},{"id":148712,"depth":476,"text":148713,"children":149517},[149518,149519,149520],{"id":148716,"depth":482,"text":148717},{"id":148761,"depth":482,"text":148762},{"id":148777,"depth":482,"text":148778},{"id":148877,"depth":476,"text":148878,"children":149522},[149523,149524,149525,149526,149527,149528],{"id":148881,"depth":482,"text":148882},{"id":148915,"depth":482,"text":148916},{"id":148938,"depth":482,"text":148939},{"id":148985,"depth":482,"text":148986},{"id":149465,"depth":482,"text":149466},{"id":149500,"depth":482,"text":149501},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch12",{"title":148105,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch12-显示隐藏与图形资源","K0tmUhpNlTpbP1LvirxUmLGoqR4EIlK4Id82_j0Cg-Q",{"id":149535,"title":149536,"body":149537,"description":16682,"extension":16683,"meta":150764,"navigation":521,"path":150765,"seo":150766,"stem":150767,"__hash__":150768},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch13-界面样式与布局技巧.md","13. 界面样式与布局技巧",{"type":7,"value":149538,"toc":150745},[149539,149542,149546,149549,149563,149631,149661,149664,149668,149672,149774,149821,149825,149828,149831,149865,149868,149871,149874,149877,149880,149883,149886,149888,149891,149894,149897,149900,149903,149906,149909,149937,149940,149944,149947,149954,149957,149960,149986,149989,149993,149996,149999,150006,150010,150013,150015,150047,150050,150053,150065,150071,150074,150077,150080,150082,150086,150089,150092,150095,150140,150144,150146,150149,150156,150198,150201,150205,150210,150224,150228,150231,150234,150237,150240,150243,150277,150280,150283,150337,150340,150343,150346,150349,150401,150404,150407,150456,150460,150462,150465,150468,150471,150474,150477,150535,150538,150544,150547,150550,150582,150585,150589,150593,150596,150628,150632,150635,150679,150683,150686,150689,150692,150695,150698,150701,150704,150706,150709,150711,150714,150717,150720,150723,150728,150731,150733,150736,150739,150742],[10,149540,149536],{"id":149541},"_13-界面样式与布局技巧",[18,149543,149545],{"id":149544},"_131-css三角","13.1 css三角",[14,149547,149548],{},"原理概括：只设置边框，需要朝向哪边的三角就让其他的边框进行透明",[40,149550,149551,149554,149557,149560],{},[43,149552,149553],{},"用css 边框可以模拟三角效果",[43,149555,149556],{},"宽度高度为0",[43,149558,149559],{},"4个边框都要写， 只保留需要的边框颜色，其余的不能省略，都改为 transparent 透明就好了",[43,149561,149562],{},"为了照顾兼容性 低版本的浏览器，加上 font-size: 0; line-height: 0;",[451,149564,149566],{"className":141045,"code":149565,"language":141047,"meta":32,"style":32},"\u002F* CSS 实现三角形 *\u002F\n.triangle {\n  width: 0;\n  height: 0;\n  border: 10px solid transparent;\n  border-bottom-color: #333;\n}\n",[457,149567,149568,149573,149580,149590,149600,149616,149627],{"__ignoreMap":32},[460,149569,149570],{"class":462,"line":463},[460,149571,149572],{"class":942},"\u002F* CSS 实现三角形 *\u002F\n",[460,149574,149575,149578],{"class":462,"line":476},[460,149576,149577],{"class":929},".triangle",[460,149579,1348],{"class":466},[460,149581,149582,149584,149586,149588],{"class":462,"line":482},[460,149583,86710],{"class":900},[460,149585,1961],{"class":466},[460,149587,936],{"class":900},[460,149589,1966],{"class":466},[460,149591,149592,149594,149596,149598],{"class":462,"line":488},[460,149593,86930],{"class":900},[460,149595,1961],{"class":466},[460,149597,936],{"class":900},[460,149599,1966],{"class":466},[460,149601,149602,149604,149606,149608,149610,149612,149614],{"class":462,"line":494},[460,149603,87038],{"class":900},[460,149605,1961],{"class":466},[460,149607,2096],{"class":900},[460,149609,2017],{"class":887},[460,149611,7201],{"class":900},[460,149613,80156],{"class":900},[460,149615,1966],{"class":466},[460,149617,149618,149621,149623,149625],{"class":462,"line":500},[460,149619,149620],{"class":900},"  border-bottom-color",[460,149622,1961],{"class":466},[460,149624,78540],{"class":900},[460,149626,1966],{"class":466},[460,149628,149629],{"class":462,"line":506},[460,149630,821],{"class":466},[451,149632,149633],{"className":141045,"code":145202,"language":141047,"meta":32,"style":32},[457,149634,149635,149641,149657],{"__ignoreMap":32},[460,149636,149637,149639],{"class":462,"line":463},[460,149638,2737],{"class":470},[460,149640,1348],{"class":466},[460,149642,149643,149645,149647,149649,149651,149653,149655],{"class":462,"line":476},[460,149644,87038],{"class":900},[460,149646,1961],{"class":466},[460,149648,901],{"class":900},[460,149650,2017],{"class":887},[460,149652,7201],{"class":900},[460,149654,144437],{"class":900},[460,149656,1966],{"class":466},[460,149658,149659],{"class":462,"line":482},[460,149660,821],{"class":466},[30,149662],{"style":140901,"src":149663},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-086.png",[18,149665,149667],{"id":149666},"_132-css用户界面样式","13.2 css用户界面样式",[23,149669,149671],{"id":149670},"_1321-鼠标样式","13.2.1 鼠标样式",[451,149673,149675],{"className":141045,"code":149674,"language":141047,"meta":32,"style":32},"\u002F* 鼠标样式 *\u002F\ndiv { cursor: pointer; }   \u002F* 手型 *\u002F\ndiv { cursor: default; }   \u002F* 默认 *\u002F\ndiv { cursor: move; }      \u002F* 移动 *\u002F\ndiv { cursor: text; }      \u002F* 文本 *\u002F\ndiv { cursor: not-allowed; } \u002F* 禁止 *\u002F\n",[457,149676,149677,149682,149701,149719,149738,149755],{"__ignoreMap":32},[460,149678,149679],{"class":462,"line":463},[460,149680,149681],{"class":942},"\u002F* 鼠标样式 *\u002F\n",[460,149683,149684,149686,149688,149691,149693,149695,149698],{"class":462,"line":476},[460,149685,2737],{"class":470},[460,149687,3437],{"class":466},[460,149689,149690],{"class":900},"cursor",[460,149692,1961],{"class":466},[460,149694,2293],{"class":900},[460,149696,149697],{"class":466},"; }   ",[460,149699,149700],{"class":942},"\u002F* 手型 *\u002F\n",[460,149702,149703,149705,149707,149709,149711,149714,149716],{"class":462,"line":482},[460,149704,2737],{"class":470},[460,149706,3437],{"class":466},[460,149708,149690],{"class":900},[460,149710,1961],{"class":466},[460,149712,149713],{"class":900},"default",[460,149715,149697],{"class":466},[460,149717,149718],{"class":942},"\u002F* 默认 *\u002F\n",[460,149720,149721,149723,149725,149727,149729,149732,149735],{"class":462,"line":488},[460,149722,2737],{"class":470},[460,149724,3437],{"class":466},[460,149726,149690],{"class":900},[460,149728,1961],{"class":466},[460,149730,149731],{"class":900},"move",[460,149733,149734],{"class":466},"; }      ",[460,149736,149737],{"class":942},"\u002F* 移动 *\u002F\n",[460,149739,149740,149742,149744,149746,149748,149750,149752],{"class":462,"line":494},[460,149741,2737],{"class":470},[460,149743,3437],{"class":466},[460,149745,149690],{"class":900},[460,149747,1961],{"class":466},[460,149749,8391],{"class":900},[460,149751,149734],{"class":466},[460,149753,149754],{"class":942},"\u002F* 文本 *\u002F\n",[460,149756,149757,149759,149761,149763,149765,149768,149771],{"class":462,"line":500},[460,149758,2737],{"class":470},[460,149760,3437],{"class":466},[460,149762,149690],{"class":900},[460,149764,1961],{"class":466},[460,149766,149767],{"class":900},"not-allowed",[460,149769,149770],{"class":466},"; } ",[460,149772,149773],{"class":942},"\u002F* 禁止 *\u002F\n",[16884,149775,149776,149784],{},[16887,149777,149778],{},[16890,149779,149780,149782],{},[16893,149781,141509],{"align":40149},[16893,149783,43900],{"align":40149},[16930,149785,149786,149793,149800,149807,149814],{},[16890,149787,149788,149790],{},[16935,149789,149713],{"align":40149},[16935,149791,149792],{"align":40149},"小白 默认",[16890,149794,149795,149797],{},[16935,149796,2293],{"align":40149},[16935,149798,149799],{"align":40149},"小手",[16890,149801,149802,149804],{},[16935,149803,149731],{"align":40149},[16935,149805,149806],{"align":40149},"移动",[16890,149808,149809,149811],{},[16935,149810,8391],{"align":40149},[16935,149812,149813],{"align":40149},"文本",[16890,149815,149816,149818],{},[16935,149817,149767],{"align":40149},[16935,149819,149820],{"align":40149},"禁止",[23,149822,149824],{"id":149823},"_1322-轮廓线-outline","13.2.2 轮廓线 outline",[14,149826,149827],{},"去除表单轮廓线",[14,149829,149830],{},"给表单添加 outline: 0; 或者 outline: none; 样式之后，就可以去掉默认的蓝色边框",[451,149832,149833],{"className":141045,"code":144409,"language":141047,"meta":32,"style":32},[457,149834,149835,149839,149845,149861],{"__ignoreMap":32},[460,149836,149837],{"class":462,"line":463},[460,149838,144416],{"class":942},[460,149840,149841,149843],{"class":462,"line":476},[460,149842,2737],{"class":470},[460,149844,1348],{"class":466},[460,149846,149847,149849,149851,149853,149855,149857,149859],{"class":462,"line":482},[460,149848,87038],{"class":900},[460,149850,1961],{"class":466},[460,149852,901],{"class":900},[460,149854,2017],{"class":887},[460,149856,7201],{"class":900},[460,149858,144437],{"class":900},[460,149860,1966],{"class":466},[460,149862,149863],{"class":462,"line":488},[460,149864,821],{"class":466},[14,149866,149867],{},"文本域：",[30,149869],{"style":140901,"src":149870},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-087.png",[14,149872,149873],{},"此时会有一个空白区域",[30,149875],{"style":140901,"src":149876},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-088.png",[14,149878,149879],{},"写在同一行就不会出现这个问题",[30,149881],{"style":140901,"src":149882},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-089.png",[14,149884,149885],{},"文本域是行内块元素，一定记住！！！",[14,149887,112726],{},[30,149889],{"style":140901,"src":149890},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-090.png",[14,149892,149893],{},"文本域尽量放在一行",[14,149895,149896],{},"知识回顾：cols是列，rols是行",[30,149898],{"style":140901,"src":149899},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-091.png",[14,149901,149902],{},"它可以进行拖动，显然这是我们不愿意看到的",[30,149904],{"style":140901,"src":149905},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-092.png",[14,149907,149908],{},"使用resize进行解决",[451,149910,149912],{"className":141045,"code":149911,"language":141047,"meta":32,"style":32},"input {\n  outline: none;  \u002F* 取消表单轮廓线 *\u002F\n}\n",[457,149913,149914,149920,149933],{"__ignoreMap":32},[460,149915,149916,149918],{"class":462,"line":463},[460,149917,70068],{"class":470},[460,149919,1348],{"class":466},[460,149921,149922,149924,149926,149928,149930],{"class":462,"line":476},[460,149923,86940],{"class":900},[460,149925,1961],{"class":466},[460,149927,2629],{"class":900},[460,149929,144908],{"class":466},[460,149931,149932],{"class":942},"\u002F* 取消表单轮廓线 *\u002F\n",[460,149934,149935],{"class":462,"line":482},[460,149936,821],{"class":466},[14,149938,149939],{},"此时就无法通过右下方实现拖动了",[23,149941,149943],{"id":149942},"_1323-vertical-align-属性应用","13.2.3 vertical-align 属性应用",[14,149945,149946],{},"实现一个盒子中的文字和图片对齐",[14,149948,149949,149950,149953],{},"用于设置一个元素的 ",[3944,149951,149952],{},"垂直对齐方式"," ，但是它只针对于行内元素或者行内块元素有效",[14,149955,149956],{},"图片和文字默认是基线对齐",[30,149958],{"style":140901,"src":149959},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-093.png",[451,149961,149962],{"className":141045,"code":149911,"language":141047,"meta":32,"style":32},[457,149963,149964,149970,149982],{"__ignoreMap":32},[460,149965,149966,149968],{"class":462,"line":463},[460,149967,70068],{"class":470},[460,149969,1348],{"class":466},[460,149971,149972,149974,149976,149978,149980],{"class":462,"line":476},[460,149973,86940],{"class":900},[460,149975,1961],{"class":466},[460,149977,2629],{"class":900},[460,149979,144908],{"class":466},[460,149981,149932],{"class":942},[460,149983,149984],{"class":462,"line":482},[460,149985,821],{"class":466},[30,149987],{"style":140901,"src":149988},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-094.png",[115,149990,149992],{"id":149991},"_13231-图片表单和文字对齐","13.2.3.1 图片、表单和文字对齐",[14,149994,149995],{},"图片、表单都属于行内块元素，默认的 vertical-align 是基线对齐",[30,149997],{"style":140901,"src":149998},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-095.png",[14,150000,150001,150002,150005],{},"此时可以给图片、表单这些行内块元素的 ",[3944,150003,150004],{},"vertical-align 属性设置为 middle"," 就可以让文字和图片垂直居中对齐了",[115,150007,150009],{"id":150008},"_13232-解决图片底部默认空白缝隙问题","13.2.3.2 解决图片底部默认空白缝隙问题",[14,150011,150012],{},"bug：图片底侧会有一个空白缝隙，原因是行内块元素会和文字的基线对齐。",[14,150014,31087],{},[451,150016,150018],{"className":141045,"code":150017,"language":141047,"meta":32,"style":32},"\u002F* 行内块\u002F图片与文字垂直对齐 *\u002F\nimg {\n  vertical-align: middle;\n}\n",[457,150019,150020,150025,150031,150043],{"__ignoreMap":32},[460,150021,150022],{"class":462,"line":463},[460,150023,150024],{"class":942},"\u002F* 行内块\u002F图片与文字垂直对齐 *\u002F\n",[460,150026,150027,150029],{"class":462,"line":476},[460,150028,30],{"class":470},[460,150030,1348],{"class":466},[460,150032,150033,150036,150038,150041],{"class":462,"line":482},[460,150034,150035],{"class":900},"  vertical-align",[460,150037,1961],{"class":466},[460,150039,150040],{"class":900},"middle",[460,150042,1966],{"class":466},[460,150044,150045],{"class":462,"line":488},[460,150046,821],{"class":466},[30,150048],{"style":140901,"src":150049},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-096.png",[14,150051,150052],{},"主要解决方法有两种：",[103,150054,150055],{},[43,150056,150057,150060,150061,150064],{},[3944,150058,150059],{},"给图片"," 添加 ",[3944,150062,150063],{},"vertical-align:middle | top| bottom"," 等。 （提倡使用的）",[14,150066,150067,150068],{},"2.把图片转换为块级元素 ",[3944,150069,150070],{},"display: block",[14,150072,150073],{},"两个块级盒子里边放了img图片，此时两个图片一个在上一个在下，但是是有间隙的，不像两个块级元素那样之间是没有间隙， 这是因为对齐方式的原因，加一句",[14,150075,150076],{},"img {",[14,150078,150079],{},"vertical-align:middle;",[14,150081,612],{},[23,150083,150085],{"id":150084},"_1324-溢出文字用省略号显示","13.2.4 溢出文字用省略号显示",[14,150087,150088],{},"效果：",[30,150090],{"style":140901,"src":150091},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-097.png",[14,150093,150094],{},"单行文本溢出显示省略号--必须满足三个条件：",[451,150096,150098],{"className":141045,"code":150097,"language":141047,"meta":32,"style":32},"\u002F* 解决图片底部空白缝隙 *\u002F\nimg {\n  vertical-align: middle;\n  \u002F* 或 *\u002F\n  display: block;\n}\n",[457,150099,150100,150105,150111,150121,150126,150136],{"__ignoreMap":32},[460,150101,150102],{"class":462,"line":463},[460,150103,150104],{"class":942},"\u002F* 解决图片底部空白缝隙 *\u002F\n",[460,150106,150107,150109],{"class":462,"line":476},[460,150108,30],{"class":470},[460,150110,1348],{"class":466},[460,150112,150113,150115,150117,150119],{"class":462,"line":482},[460,150114,150035],{"class":900},[460,150116,1961],{"class":466},[460,150118,150040],{"class":900},[460,150120,1966],{"class":466},[460,150122,150123],{"class":462,"line":488},[460,150124,150125],{"class":942},"  \u002F* 或 *\u002F\n",[460,150127,150128,150130,150132,150134],{"class":462,"line":494},[460,150129,142661],{"class":900},[460,150131,1961],{"class":466},[460,150133,7350],{"class":900},[460,150135,1966],{"class":466},[460,150137,150138],{"class":462,"line":500},[460,150139,821],{"class":466},[23,150141,150143],{"id":150142},"_1325-多行文本溢出显示省略号","13.2.5 多行文本溢出显示省略号",[14,150145,150088],{},[30,150147],{"style":140901,"src":150148},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-098.png",[14,150150,150151,150152,150155],{},"多行文本溢出显示省略号， ",[3944,150153,150154],{},"有较大兼容性问题"," ，适合于webKit浏览器或移动端（移动端大部分是webkit内核）",[451,150157,150158],{"className":141045,"code":150097,"language":141047,"meta":32,"style":32},[457,150159,150160,150164,150170,150180,150184,150194],{"__ignoreMap":32},[460,150161,150162],{"class":462,"line":463},[460,150163,150104],{"class":942},[460,150165,150166,150168],{"class":462,"line":476},[460,150167,30],{"class":470},[460,150169,1348],{"class":466},[460,150171,150172,150174,150176,150178],{"class":462,"line":482},[460,150173,150035],{"class":900},[460,150175,1961],{"class":466},[460,150177,150040],{"class":900},[460,150179,1966],{"class":466},[460,150181,150182],{"class":462,"line":488},[460,150183,150125],{"class":942},[460,150185,150186,150188,150190,150192],{"class":462,"line":494},[460,150187,142661],{"class":900},[460,150189,1961],{"class":466},[460,150191,7350],{"class":900},[460,150193,1966],{"class":466},[460,150195,150196],{"class":462,"line":500},[460,150197,821],{"class":466},[14,150199,150200],{},"由于后台人员可以操作每行多少字，所以最好从后台出发来实现该功能",[18,150202,150204],{"id":150203},"_133-常见布局技巧","13.3 常见布局技巧",[14,150206,150207],{},[3944,150208,150209],{},"巧妙利用一个技术更快更好的布局：",[103,150211,150212,150215,150218,150221],{},[43,150213,150214],{},"margin负值的运用",[43,150216,150217],{},"文字围绕浮动元素",[43,150219,150220],{},"行内块的巧妙运用",[43,150222,150223],{},"CSS三角强化",[23,150225,150227],{"id":150226},"_1331-margin负值的运用","13.3.1 margin负值的运用",[14,150229,150230],{},"应用场景：",[30,150232],{"style":140901,"src":150233},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-099.png",[30,150235],{"style":140901,"src":150236},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-100.png",[14,150238,150239],{},"每个盒子都加边框，第一个的最右侧与第二个的最左侧会进行重合，通过margin负值可以解决该问题",[14,150241,150242],{},"1.让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框",[451,150244,150245],{"className":141045,"code":144409,"language":141047,"meta":32,"style":32},[457,150246,150247,150251,150257,150273],{"__ignoreMap":32},[460,150248,150249],{"class":462,"line":463},[460,150250,144416],{"class":942},[460,150252,150253,150255],{"class":462,"line":476},[460,150254,2737],{"class":470},[460,150256,1348],{"class":466},[460,150258,150259,150261,150263,150265,150267,150269,150271],{"class":462,"line":482},[460,150260,87038],{"class":900},[460,150262,1961],{"class":466},[460,150264,901],{"class":900},[460,150266,2017],{"class":887},[460,150268,7201],{"class":900},[460,150270,144437],{"class":900},[460,150272,1966],{"class":466},[460,150274,150275],{"class":462,"line":488},[460,150276,821],{"class":466},[30,150278],{"style":140901,"src":150279},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-101.png",[14,150281,150282],{},"2.鼠标经过某个盒子的时候，提高当前盒子的层级即可（如果没有有定位，则加相对定位（保留位置），如果有定位，则加z-index）",[451,150284,150286],{"className":141045,"code":150285,"language":141047,"meta":32,"style":32},"\u002F* 相对定位：相对于自身原位置移动，原位置保留 *\u002F\n.box {\n  position: relative;\n  top: 10px;\n  left: 20px;\n}\n",[457,150287,150288,150293,150299,150309,150321,150333],{"__ignoreMap":32},[460,150289,150290],{"class":462,"line":463},[460,150291,150292],{"class":942},"\u002F* 相对定位：相对于自身原位置移动，原位置保留 *\u002F\n",[460,150294,150295,150297],{"class":462,"line":476},[460,150296,144893],{"class":929},[460,150298,1348],{"class":466},[460,150300,150301,150303,150305,150307],{"class":462,"line":482},[460,150302,146851],{"class":900},[460,150304,1961],{"class":466},[460,150306,10138],{"class":900},[460,150308,1966],{"class":466},[460,150310,150311,150313,150315,150317,150319],{"class":462,"line":488},[460,150312,146865],{"class":900},[460,150314,1961],{"class":466},[460,150316,2096],{"class":900},[460,150318,2017],{"class":887},[460,150320,1966],{"class":466},[460,150322,150323,150325,150327,150329,150331],{"class":462,"line":494},[460,150324,146882],{"class":900},[460,150326,1961],{"class":466},[460,150328,2110],{"class":900},[460,150330,2017],{"class":887},[460,150332,1966],{"class":466},[460,150334,150335],{"class":462,"line":500},[460,150336,821],{"class":466},[14,150338,150339],{},"加上上述代码会发现：",[30,150341],{"style":140901,"src":150342},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-102.png",[14,150344,150345],{},"只有最后一个盒子边框显示的全，其他盒子右侧边框显示不全",[14,150347,150348],{},"解决方式1： 加相对定位，可以理解为在保留原位置的同时飞的更高一些了",[451,150350,150351],{"className":141045,"code":150285,"language":141047,"meta":32,"style":32},[457,150352,150353,150357,150363,150373,150385,150397],{"__ignoreMap":32},[460,150354,150355],{"class":462,"line":463},[460,150356,150292],{"class":942},[460,150358,150359,150361],{"class":462,"line":476},[460,150360,144893],{"class":929},[460,150362,1348],{"class":466},[460,150364,150365,150367,150369,150371],{"class":462,"line":482},[460,150366,146851],{"class":900},[460,150368,1961],{"class":466},[460,150370,10138],{"class":900},[460,150372,1966],{"class":466},[460,150374,150375,150377,150379,150381,150383],{"class":462,"line":488},[460,150376,146865],{"class":900},[460,150378,1961],{"class":466},[460,150380,2096],{"class":900},[460,150382,2017],{"class":887},[460,150384,1966],{"class":466},[460,150386,150387,150389,150391,150393,150395],{"class":462,"line":494},[460,150388,146882],{"class":900},[460,150390,1961],{"class":466},[460,150392,2110],{"class":900},[460,150394,2017],{"class":887},[460,150396,1966],{"class":466},[460,150398,150399],{"class":462,"line":500},[460,150400,821],{"class":466},[14,150402,150403],{},"解决方式2：",[14,150405,150406],{},"父盒子每个都是相对定位的话，用z-index提高层级就可以",[451,150408,150410],{"className":141045,"code":150409,"language":141047,"meta":32,"style":32},"div {\n  position: relative;\n  top: 10px;\n  left: 20px;\n}\n",[457,150411,150412,150418,150428,150440,150452],{"__ignoreMap":32},[460,150413,150414,150416],{"class":462,"line":463},[460,150415,2737],{"class":470},[460,150417,1348],{"class":466},[460,150419,150420,150422,150424,150426],{"class":462,"line":476},[460,150421,146851],{"class":900},[460,150423,1961],{"class":466},[460,150425,10138],{"class":900},[460,150427,1966],{"class":466},[460,150429,150430,150432,150434,150436,150438],{"class":462,"line":482},[460,150431,146865],{"class":900},[460,150433,1961],{"class":466},[460,150435,2096],{"class":900},[460,150437,2017],{"class":887},[460,150439,1966],{"class":466},[460,150441,150442,150444,150446,150448,150450],{"class":462,"line":488},[460,150443,146882],{"class":900},[460,150445,1961],{"class":466},[460,150447,2110],{"class":900},[460,150449,2017],{"class":887},[460,150451,1966],{"class":466},[460,150453,150454],{"class":462,"line":494},[460,150455,821],{"class":466},[23,150457,150459],{"id":150458},"_1332-文字围绕浮动元素","13.3.2 文字围绕浮动元素",[14,150461,150230],{},[30,150463],{"style":140901,"src":150464},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-103.png",[14,150466,150467],{},"实现结构图：",[30,150469],{"style":140901,"src":150470},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-104.png",[14,150472,150473],{},"巧妙运用浮动元素不会压住文字的特性",[14,150475,150476],{},"代码显示：",[451,150478,150480],{"className":141045,"code":150479,"language":141047,"meta":32,"style":32},".box {\n  float: left;\n}\n```Css\n\u002F* margin 复合写法（同上） *\u002F\n.box {\n  margin: 0 auto;  \u002F* 块级盒子水平居中 *\u002F\n}\n",[457,150481,150482,150488,150498,150502,150507,150511,150517,150531],{"__ignoreMap":32},[460,150483,150484,150486],{"class":462,"line":463},[460,150485,144893],{"class":929},[460,150487,1348],{"class":466},[460,150489,150490,150492,150494,150496],{"class":462,"line":476},[460,150491,145525],{"class":900},[460,150493,1961],{"class":466},[460,150495,40149],{"class":900},[460,150497,1966],{"class":466},[460,150499,150500],{"class":462,"line":482},[460,150501,821],{"class":466},[460,150503,150504],{"class":462,"line":488},[460,150505,150506],{"class":466},"```Css\n",[460,150508,150509],{"class":462,"line":494},[460,150510,144888],{"class":942},[460,150512,150513,150515],{"class":462,"line":500},[460,150514,144893],{"class":929},[460,150516,1348],{"class":466},[460,150518,150519,150521,150523,150525,150527,150529],{"class":462,"line":506},[460,150520,86612],{"class":900},[460,150522,1961],{"class":466},[460,150524,936],{"class":900},[460,150526,2030],{"class":900},[460,150528,144908],{"class":466},[460,150530,144911],{"class":942},[460,150532,150533],{"class":462,"line":512},[460,150534,821],{"class":466},[14,150536,150537],{},"div, p, h1, ul, li {\n\u002F* 块级元素：独占一行，可设宽高 *\u002F\ndisplay: block;\n}",[451,150539,150542],{"className":150540,"code":150541,"language":8391},[21693],"\n对行内元素转换为行内块元素之后，就可以设置宽和高了\n\n\u003Cimg style=\"max-width:100%\" src=\"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-107.png\">\n\n此时要实现整体居中可以使用text-align:center\n\n```Css\n\u002F* margin 复合写法（同上） *\u002F\n.box {\n  margin: 0 auto;  \u002F* 块级盒子水平居中 *\u002F\n}\n",[457,150543,150541],{"__ignoreMap":32},[30,150545],{"style":140901,"src":150546},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-108.png",[14,150548,150549],{},"最终展示结果：",[451,150551,150552],{"className":141045,"code":144881,"language":141047,"meta":32,"style":32},[457,150553,150554,150558,150564,150578],{"__ignoreMap":32},[460,150555,150556],{"class":462,"line":463},[460,150557,144888],{"class":942},[460,150559,150560,150562],{"class":462,"line":476},[460,150561,144893],{"class":929},[460,150563,1348],{"class":466},[460,150565,150566,150568,150570,150572,150574,150576],{"class":462,"line":482},[460,150567,86612],{"class":900},[460,150569,1961],{"class":466},[460,150571,936],{"class":900},[460,150573,2030],{"class":900},[460,150575,144908],{"class":466},[460,150577,144911],{"class":942},[460,150579,150580],{"class":462,"line":488},[460,150581,821],{"class":466},[30,150583],{"style":140901,"src":150584},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-109.png",[18,150586,150588],{"id":150587},"_134-css-三角强化-案例","13.4 CSS 三角强化 案例",[23,150590,150592],{"id":150591},"_1341-原理","13.4.1 原理",[30,150594],{"style":140901,"src":150595},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-110.png",[451,150597,150598],{"className":141045,"code":144881,"language":141047,"meta":32,"style":32},[457,150599,150600,150604,150610,150624],{"__ignoreMap":32},[460,150601,150602],{"class":462,"line":463},[460,150603,144888],{"class":942},[460,150605,150606,150608],{"class":462,"line":476},[460,150607,144893],{"class":929},[460,150609,1348],{"class":466},[460,150611,150612,150614,150616,150618,150620,150622],{"class":462,"line":482},[460,150613,86612],{"class":900},[460,150615,1961],{"class":466},[460,150617,936],{"class":900},[460,150619,2030],{"class":900},[460,150621,144908],{"class":466},[460,150623,144911],{"class":942},[460,150625,150626],{"class":462,"line":488},[460,150627,821],{"class":466},[23,150629,150631],{"id":150630},"_1342-实例","13.4.2 实例",[30,150633],{"style":140901,"src":150634},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-111.png",[451,150636,150637],{"className":141045,"code":145511,"language":141047,"meta":32,"style":32},[457,150638,150639,150645,150655,150659,150665,150675],{"__ignoreMap":32},[460,150640,150641,150643],{"class":462,"line":463},[460,150642,145518],{"class":929},[460,150644,1348],{"class":466},[460,150646,150647,150649,150651,150653],{"class":462,"line":476},[460,150648,145525],{"class":900},[460,150650,1961],{"class":466},[460,150652,40149],{"class":900},[460,150654,1966],{"class":466},[460,150656,150657],{"class":462,"line":482},[460,150658,821],{"class":466},[460,150660,150661,150663],{"class":462,"line":488},[460,150662,145540],{"class":929},[460,150664,1348],{"class":466},[460,150666,150667,150669,150671,150673],{"class":462,"line":494},[460,150668,145525],{"class":900},[460,150670,1961],{"class":466},[460,150672,88651],{"class":900},[460,150674,1966],{"class":466},[460,150676,150677],{"class":462,"line":500},[460,150678,821],{"class":466},[18,150680,150682],{"id":150681},"_135-css的初始化","13.5 css的初始化",[14,150684,150685],{},"不同浏览器对有些标签的默认值是不同的，为了消除不同浏览器对HTML文本呈现的差异，照顾浏览器的兼容，我们需要对CSS 初始化",[14,150687,150688],{},"简单理解： CSS初始化是指重设浏览器的样式。 (也称为CSS reset）",[14,150690,150691],{},"每个网页都必须首先进行 CSS初始化。",[14,150693,150694],{},"这里我们以 京东CSS初始化代码为例。",[14,150696,150697],{},"在网页右键查看网页源代码",[14,150699,150700],{},"找到css的link引入语句",[14,150702,150703],{},"然后ctrl+f 输入body",[14,150705,600],{},[30,150707],{"style":140901,"src":150708},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-112.png",[14,150710,624],{},[30,150712],{"style":140901,"src":150713},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-113.png",[14,150715,150716],{},"③打开了网页上传压缩的代码",[30,150718],{"style":140901,"src":150719},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-114.png",[14,150721,150722],{},"④从body前可以查看这个网页的初始化代码",[14,150724,150725],{},[3944,150726,150727],{},"Unicode编码字体：",[14,150729,150730],{},"把中文字体的名称用相应的Unicode编码来代替，这样就可以有效的避免浏览器解释CSS代码时候出现乱码的问题。",[14,150732,6948],{},[14,150734,150735],{},"黑体 \\9ED1\\4F53",[14,150737,150738],{},"宋体 \\5B8B\\4F53",[14,150740,150741],{},"微软雅黑 \\5FAE\\8F6F\\96C5\\9ED1",[1944,150743,150744],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":32,"searchDepth":476,"depth":476,"links":150746},[150747,150748,150755,150759,150763],{"id":149544,"depth":476,"text":149545},{"id":149666,"depth":476,"text":149667,"children":150749},[150750,150751,150752,150753,150754],{"id":149670,"depth":482,"text":149671},{"id":149823,"depth":482,"text":149824},{"id":149942,"depth":482,"text":149943},{"id":150084,"depth":482,"text":150085},{"id":150142,"depth":482,"text":150143},{"id":150203,"depth":476,"text":150204,"children":150756},[150757,150758],{"id":150226,"depth":482,"text":150227},{"id":150458,"depth":482,"text":150459},{"id":150587,"depth":476,"text":150588,"children":150760},[150761,150762],{"id":150591,"depth":482,"text":150592},{"id":150630,"depth":482,"text":150631},{"id":150681,"depth":476,"text":150682},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch13",{"title":149536,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch13-界面样式与布局技巧","1U_cCgoCgAuImhvNFSJfV4PAZyUz5cp-t86rdHeziCk",{"id":150770,"title":150771,"body":150772,"description":16682,"extension":16683,"meta":152458,"navigation":521,"path":152459,"seo":152460,"stem":152461,"__hash__":152462},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch14-HTML5与CSS3新特性.md","14. HTML5与CSS3新特性",{"type":7,"value":150773,"toc":152447},[150774,150777,150781,150785,150788,150795,150798,150801,150839,150842,150844,150858,150862,150871,150875,150880,150883,150886,150889,150924,150929,150932,150962,150965,150970,150973,150976,151006,151009,151063,151066,151070,151075,151087,151090,151094,151124,151127,151132,151135,151165,151168,151172,151189,151193,151197,151200,151233,151236,151240,151243,151246,151249,151252,151255,151366,151369,151372,151375,151477,151480,151484,151488,151492,151495,151535,151538,151540,151556,151560,151563,151568,151649,151652,151655,151781,151786,151789,151797,151800,151805,151890,151893,151897,151900,151903,151907,151927,151932,152016,152019,152024,152027,152030,152108,152111,152114,152117,152120,152123,152128,152131,152134,152206,152209,152214,152217,152314,152317,152323,152326,152329,152332,152335,152338,152341,152344,152347,152351,152356,152359,152392,152397,152400,152441,152444],[10,150775,150771],{"id":150776},"_14-html5与css3新特性",[18,150778,150780],{"id":150779},"_141-html5的新特性","14.1 HTML5的新特性",[23,150782,150784],{"id":150783},"_1411-基本标签","14.1.1 基本标签",[14,150786,150787],{},"HTML5 的新增特性主要是针对于以前的不足，增加了一些新的标签、新的表单和新的表单属性等",[14,150789,150790,150791,150794],{},"这些新特性都有兼容性问题，基本是 ",[3944,150792,150793],{},"IE9+ 以上版本的浏览器"," 才支持，如果不考虑兼容性问题，可以大量使用这些新特性",[14,150796,150797],{},"以前布局，我们基本用 div 来做。div 对于搜索引擎来说，是没有语义的",[14,150799,150800],{},"现在使用的是新特性：",[40,150802,150803,150809,150815,150821,150827,150833],{},[43,150804,150805,150808],{},[457,150806,150807],{},"\u003Cheader>"," 头部标签",[43,150810,150811,150814],{},[457,150812,150813],{},"\u003Cnav>"," 导航标签",[43,150816,150817,150820],{},[457,150818,150819],{},"\u003Carticle>"," 内容标签",[43,150822,150823,150826],{},[457,150824,150825],{},"\u003Csection>"," 定义文档某个区域",[43,150828,150829,150832],{},[457,150830,150831],{},"\u003Caside>"," 侧边栏标签",[43,150834,150835,150838],{},[457,150836,150837],{},"\u003Cfooter>"," 尾部标签",[30,150840],{"style":140901,"src":150841},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-115.png",[14,150843,357],{},[40,150845,150846,150849,150852,150855],{},[43,150847,150848],{},"这种语义化标准主要是针对搜索引擎的",[43,150850,150851],{},"这些标签页面中可以经常使用",[43,150853,150854],{},"在IE9中，需要把这些元素转换为块级元素",[43,150856,150857],{},"移动端更喜欢使用这些标签",[23,150859,150861],{"id":150860},"_1412-多媒体标签","14.1.2 多媒体标签",[14,150863,150864,150865,150867,150868,150870],{},"音频 ",[3944,150866,44584],{}," 和视频 ",[3944,150869,16270],{}," 两个标签",[115,150872,150874],{"id":150873},"_14121-视频标签-video","14.1.2.1 视频标签- video",[103,150876,150877],{},[43,150878,150879],{},"支持格式：",[30,150881],{"style":140901,"src":150882},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-116.png",[14,150884,150885],{},"尽量使用MP4，兼容性好",[14,150887,150888],{},"用MP4就可以",[451,150890,150892],{"className":141792,"code":150891,"language":141794,"meta":32,"style":32},"\u003Cvideo src=\"movie.mp4\" controls autoplay muted loop>\u003C\u002Fvideo>\n",[457,150893,150894],{"__ignoreMap":32},[460,150895,150896,150898,150900,150902,150904,150907,150909,150912,150915,150918,150920,150922],{"class":462,"line":463},[460,150897,781],{"class":466},[460,150899,16270],{"class":470},[460,150901,12081],{"class":929},[460,150903,894],{"class":466},[460,150905,150906],{"class":1353},"\"movie.mp4\"",[460,150908,16280],{"class":929},[460,150910,150911],{"class":929}," autoplay",[460,150913,150914],{"class":929}," muted",[460,150916,150917],{"class":929}," loop",[460,150919,5599],{"class":466},[460,150921,16270],{"class":470},[460,150923,473],{"class":466},[103,150925,150926],{"start":476},[43,150927,150928],{},"兼容写法",[14,150930,150931],{},"由于各个浏览器的支持情况不同，所以我们会有一种兼容性的写法，这种写法了解一下即可",[451,150933,150934],{"className":141792,"code":150891,"language":141794,"meta":32,"style":32},[457,150935,150936],{"__ignoreMap":32},[460,150937,150938,150940,150942,150944,150946,150948,150950,150952,150954,150956,150958,150960],{"class":462,"line":463},[460,150939,781],{"class":466},[460,150941,16270],{"class":470},[460,150943,12081],{"class":929},[460,150945,894],{"class":466},[460,150947,150906],{"class":1353},[460,150949,16280],{"class":929},[460,150951,150911],{"class":929},[460,150953,150914],{"class":929},[460,150955,150917],{"class":929},[460,150957,5599],{"class":466},[460,150959,16270],{"class":470},[460,150961,473],{"class":466},[14,150963,150964],{},"面这种写法，浏览器会匹配video标签中的source，如果支持就播放，如果不支持往下匹配，直到没有匹配的格式，就提示文本",[103,150966,150967],{"start":482},[43,150968,150969],{},"video常用属性",[30,150971],{"style":140901,"src":150972},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-117.png",[14,150974,150975],{},"poster属性后面是跟的等待加载图片的地址",[451,150977,150978],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,150979,150980],{"__ignoreMap":32},[460,150981,150982,150984,150986,150988,150990,150992,150994,150996,150998,151000,151002,151004],{"class":462,"line":463},[460,150983,781],{"class":466},[460,150985,30],{"class":470},[460,150987,12081],{"class":929},[460,150989,894],{"class":466},[460,150991,148562],{"class":1353},[460,150993,16224],{"class":929},[460,150995,894],{"class":466},[460,150997,148569],{"class":1353},[460,150999,148572],{"class":929},[460,151001,894],{"class":466},[460,151003,148577],{"class":1353},[460,151005,473],{"class":466},[14,151007,151008],{},"谷歌浏览器为了避免移动端自动播放视频导致消耗较大的流量问题，对自动播放进行了禁用，解决方式：",[451,151010,151012],{"className":141045,"code":151011,"language":141047,"meta":32,"style":32},"\u002F* 2D 位移 *\u002F\ndiv {\n  transform: translate(100px, 50px);\n  \u002F* transform: translateX(100px);  仅水平 *\u002F\n  \u002F* transform: translateY(50px);   仅垂直 *\u002F\n}\n",[457,151013,151014,151019,151025,151049,151054,151059],{"__ignoreMap":32},[460,151015,151016],{"class":462,"line":463},[460,151017,151018],{"class":942},"\u002F* 2D 位移 *\u002F\n",[460,151020,151021,151023],{"class":462,"line":476},[460,151022,2737],{"class":470},[460,151024,1348],{"class":466},[460,151026,151027,151030,151032,151035,151037,151039,151041,151043,151045,151047],{"class":462,"line":482},[460,151028,151029],{"class":900},"  transform",[460,151031,1961],{"class":466},[460,151033,151034],{"class":900},"translate",[460,151036,2174],{"class":466},[460,151038,2325],{"class":900},[460,151040,2017],{"class":887},[460,151042,904],{"class":466},[460,151044,2549],{"class":900},[460,151046,2017],{"class":887},[460,151048,2254],{"class":466},[460,151050,151051],{"class":462,"line":488},[460,151052,151053],{"class":942},"  \u002F* transform: translateX(100px);  仅水平 *\u002F\n",[460,151055,151056],{"class":462,"line":494},[460,151057,151058],{"class":942},"  \u002F* transform: translateY(50px);   仅垂直 *\u002F\n",[460,151060,151061],{"class":462,"line":500},[460,151062,821],{"class":466},[14,151064,151065],{},"muted:自动静音属性",[115,151067,151069],{"id":151068},"_14122-音频标签audio","14.1.2.2 音频标签audio",[103,151071,151072],{},[43,151073,151074],{},"基本使用",[14,151076,151077,151078,151083,151084],{},"当前 ",[3944,151079,151080],{},[457,151081,151082],{},"\u003Caudio>"," 元素支持三种视频格式： 尽量使用 ",[3944,151085,151086],{},"mp3格式",[30,151088],{"style":140901,"src":151089},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-118.png",[103,151091,151092],{"start":476},[43,151093,150928],{},[451,151095,151096],{"className":141792,"code":150891,"language":141794,"meta":32,"style":32},[457,151097,151098],{"__ignoreMap":32},[460,151099,151100,151102,151104,151106,151108,151110,151112,151114,151116,151118,151120,151122],{"class":462,"line":463},[460,151101,781],{"class":466},[460,151103,16270],{"class":470},[460,151105,12081],{"class":929},[460,151107,894],{"class":466},[460,151109,150906],{"class":1353},[460,151111,16280],{"class":929},[460,151113,150911],{"class":929},[460,151115,150914],{"class":929},[460,151117,150917],{"class":929},[460,151119,5599],{"class":466},[460,151121,16270],{"class":470},[460,151123,473],{"class":466},[14,151125,151126],{},"上面这种写法，浏览器会匹配audio标签中的source，如果支持就播放，如果不支持往下匹配，直到没有匹配的格式，就提示文本",[103,151128,151129],{"start":482},[43,151130,151131],{},"常用属性",[30,151133],{"style":140901,"src":151134},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-119.png",[451,151136,151137],{"className":141792,"code":150891,"language":141794,"meta":32,"style":32},[457,151138,151139],{"__ignoreMap":32},[460,151140,151141,151143,151145,151147,151149,151151,151153,151155,151157,151159,151161,151163],{"class":462,"line":463},[460,151142,781],{"class":466},[460,151144,16270],{"class":470},[460,151146,12081],{"class":929},[460,151148,894],{"class":466},[460,151150,150906],{"class":1353},[460,151152,16280],{"class":929},[460,151154,150911],{"class":929},[460,151156,150914],{"class":929},[460,151158,150917],{"class":929},[460,151160,5599],{"class":466},[460,151162,16270],{"class":470},[460,151164,473],{"class":466},[14,151166,151167],{},"谷歌也把音频的自动播放功能给禁用了：只能通过js来解决",[115,151169,151171],{"id":151170},"_14123-总结","14.1.2.3 总结",[40,151173,151174,151177,151180,151183,151186],{},[43,151175,151176],{},"音频标签和视频标签使用方式基本一致",[43,151178,151179],{},"浏览器支持情况不同",[43,151181,151182],{},"谷歌浏览器把音频和视频自动播放禁止了",[43,151184,151185],{},"我们可以给视频标签添加 muted 属性来静音播放视频，音频不可以（可以通过JavaScript解决）",[43,151187,151188],{},"视频标签是重点，我们经常设置自动播放，不使用 controls 控件，循环和设置大小属性",[23,151190,151192],{"id":151191},"_1413-表单元素","14.1.3 表单元素",[115,151194,151196],{"id":151195},"_14131-html5新增input类型","14.1.3.1 HTML5新增input类型",[30,151198],{"style":140901,"src":151199},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-120.png",[451,151201,151203],{"className":141792,"code":151202,"language":141794,"meta":32,"style":32},"\u003Cinput type=\"text\" name=\"username\" placeholder=\"请输入用户名\">\n",[457,151204,151205],{"__ignoreMap":32},[460,151206,151207,151209,151211,151213,151215,151217,151219,151221,151224,151226,151228,151231],{"class":462,"line":463},[460,151208,781],{"class":466},[460,151210,70068],{"class":470},[460,151212,70071],{"class":929},[460,151214,894],{"class":466},[460,151216,78868],{"class":1353},[460,151218,1908],{"class":929},[460,151220,894],{"class":466},[460,151222,151223],{"class":1353},"\"username\"",[460,151225,77209],{"class":929},[460,151227,894],{"class":466},[460,151229,151230],{"class":1353},"\"请输入用户名\"",[460,151232,473],{"class":466},[30,151234],{"style":140901,"src":151235},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-121.png",[115,151237,151239],{"id":151238},"_14132-html5新增表单属性","14.1.3.2 HTML5新增表单属性",[30,151241],{"style":140901,"src":151242},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-122.png",[14,151244,151245],{},"使用autocomplete时需要给name值，可以理解为name就是用于连接服务器的",[14,151247,151248],{},"快捷操作：",[30,151250],{"style":140901,"src":151251},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-123.png",[14,151253,151254],{},"例子1：",[451,151256,151258],{"className":141792,"code":151257,"language":141794,"meta":32,"style":32},"\u003Cform action=\"\u002Fsubmit\" method=\"post\">\n  \u003Cinput type=\"text\" name=\"username\" placeholder=\"用户名\">\n  \u003Cinput type=\"password\" name=\"pwd\" placeholder=\"密码\">\n  \u003Cbutton type=\"submit\">提交\u003C\u002Fbutton>\n\u003C\u002Fform>\n",[457,151259,151260,151283,151310,151339,151358],{"__ignoreMap":32},[460,151261,151262,151264,151266,151268,151270,151273,151276,151278,151281],{"class":462,"line":463},[460,151263,781],{"class":466},[460,151265,82783],{"class":470},[460,151267,82786],{"class":929},[460,151269,894],{"class":466},[460,151271,151272],{"class":1353},"\"\u002Fsubmit\"",[460,151274,151275],{"class":929}," method",[460,151277,894],{"class":466},[460,151279,151280],{"class":1353},"\"post\"",[460,151282,473],{"class":466},[460,151284,151285,151287,151289,151291,151293,151295,151297,151299,151301,151303,151305,151308],{"class":462,"line":476},[460,151286,467],{"class":466},[460,151288,70068],{"class":470},[460,151290,70071],{"class":929},[460,151292,894],{"class":466},[460,151294,78868],{"class":1353},[460,151296,1908],{"class":929},[460,151298,894],{"class":466},[460,151300,151223],{"class":1353},[460,151302,77209],{"class":929},[460,151304,894],{"class":466},[460,151306,151307],{"class":1353},"\"用户名\"",[460,151309,473],{"class":466},[460,151311,151312,151314,151316,151318,151320,151323,151325,151327,151330,151332,151334,151337],{"class":462,"line":482},[460,151313,467],{"class":466},[460,151315,70068],{"class":470},[460,151317,70071],{"class":929},[460,151319,894],{"class":466},[460,151321,151322],{"class":1353},"\"password\"",[460,151324,1908],{"class":929},[460,151326,894],{"class":466},[460,151328,151329],{"class":1353},"\"pwd\"",[460,151331,77209],{"class":929},[460,151333,894],{"class":466},[460,151335,151336],{"class":1353},"\"密码\"",[460,151338,473],{"class":466},[460,151340,151341,151343,151345,151347,151349,151351,151354,151356],{"class":462,"line":488},[460,151342,467],{"class":466},[460,151344,10501],{"class":470},[460,151346,70071],{"class":929},[460,151348,894],{"class":466},[460,151350,82806],{"class":1353},[460,151352,151353],{"class":466},">提交\u003C\u002F",[460,151355,10501],{"class":470},[460,151357,473],{"class":466},[460,151359,151360,151362,151364],{"class":462,"line":494},[460,151361,1776],{"class":466},[460,151363,82783],{"class":470},[460,151365,473],{"class":466},[30,151367],{"style":140901,"src":151368},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-124.png",[14,151370,151371],{},"value是表单域的内容",[14,151373,151374],{},"例子2：",[451,151376,151377],{"className":141792,"code":151257,"language":141794,"meta":32,"style":32},[457,151378,151379,151399,151425,151451,151469],{"__ignoreMap":32},[460,151380,151381,151383,151385,151387,151389,151391,151393,151395,151397],{"class":462,"line":463},[460,151382,781],{"class":466},[460,151384,82783],{"class":470},[460,151386,82786],{"class":929},[460,151388,894],{"class":466},[460,151390,151272],{"class":1353},[460,151392,151275],{"class":929},[460,151394,894],{"class":466},[460,151396,151280],{"class":1353},[460,151398,473],{"class":466},[460,151400,151401,151403,151405,151407,151409,151411,151413,151415,151417,151419,151421,151423],{"class":462,"line":476},[460,151402,467],{"class":466},[460,151404,70068],{"class":470},[460,151406,70071],{"class":929},[460,151408,894],{"class":466},[460,151410,78868],{"class":1353},[460,151412,1908],{"class":929},[460,151414,894],{"class":466},[460,151416,151223],{"class":1353},[460,151418,77209],{"class":929},[460,151420,894],{"class":466},[460,151422,151307],{"class":1353},[460,151424,473],{"class":466},[460,151426,151427,151429,151431,151433,151435,151437,151439,151441,151443,151445,151447,151449],{"class":462,"line":482},[460,151428,467],{"class":466},[460,151430,70068],{"class":470},[460,151432,70071],{"class":929},[460,151434,894],{"class":466},[460,151436,151322],{"class":1353},[460,151438,1908],{"class":929},[460,151440,894],{"class":466},[460,151442,151329],{"class":1353},[460,151444,77209],{"class":929},[460,151446,894],{"class":466},[460,151448,151336],{"class":1353},[460,151450,473],{"class":466},[460,151452,151453,151455,151457,151459,151461,151463,151465,151467],{"class":462,"line":488},[460,151454,467],{"class":466},[460,151456,10501],{"class":470},[460,151458,70071],{"class":929},[460,151460,894],{"class":466},[460,151462,82806],{"class":1353},[460,151464,151353],{"class":466},[460,151466,10501],{"class":470},[460,151468,473],{"class":466},[460,151470,151471,151473,151475],{"class":462,"line":494},[460,151472,1776],{"class":466},[460,151474,82783],{"class":470},[460,151476,473],{"class":466},[30,151478],{"style":140901,"src":151479},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-125.png",[18,151481,151483],{"id":151482},"_142-css新特性","14.2 CSS新特性",[23,151485,151487],{"id":151486},"_1421-新增选择器","14.2.1 新增选择器",[115,151489,151491],{"id":151490},"_14211-属性选择器","14.2.1.1 属性选择器",[30,151493],{"style":140901,"src":151494},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-126.png",[451,151496,151498],{"className":141045,"code":151497,"language":141047,"meta":32,"style":32},"input[type=\"text\"] {\n  border: 1px solid #999;\n}\n",[457,151499,151500,151515,151531],{"__ignoreMap":32},[460,151501,151502,151504,151506,151508,151510,151512],{"class":462,"line":463},[460,151503,70068],{"class":470},[460,151505,17601],{"class":466},[460,151507,117600],{"class":929},[460,151509,894],{"class":887},[460,151511,78868],{"class":1353},[460,151513,151514],{"class":466},"] {\n",[460,151516,151517,151519,151521,151523,151525,151527,151529],{"class":462,"line":476},[460,151518,87038],{"class":900},[460,151520,1961],{"class":466},[460,151522,901],{"class":900},[460,151524,2017],{"class":887},[460,151526,7201],{"class":900},[460,151528,144625],{"class":900},[460,151530,1966],{"class":466},[460,151532,151533],{"class":462,"line":482},[460,151534,821],{"class":466},[30,151536],{"style":140901,"src":151537},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-127.png",[14,151539,357],{},[40,151541,151542,151545,151548,151551],{},[43,151543,151544],{},"属性选择器，按照字面意思，都是根据标签中的属性来选择元素",[43,151546,151547],{},"属性选择器可以根据元素特定属性的来选择元素。 这样就可以不用借助于类或者id选择器",[43,151549,151550],{},"属性选择器也可以选择出来自定义的属性",[43,151552,151553,151555],{},[3944,151554,25511],{}," 类选择器、属性选择器、伪类选择器，权重为 10",[115,151557,151559],{"id":151558},"_14212-结构伪类选择器","14.2.1.2 结构伪类选择器",[30,151561],{"style":140901,"src":151562},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-128.png",[103,151564,151565],{},[43,151566,151567],{},"fist-child",[451,151569,151571],{"className":141045,"code":151570,"language":141047,"meta":32,"style":32},"\u002F* 属性选择器 *\u002F\ninput[type=\"text\"] { }\ninput[class^=\"icon\"] { }  \u002F* 以 icon 开头 *\u002F\ninput[class$=\"icon\"] { }  \u002F* 以 icon 结尾 *\u002F\ninput[class*=\"icon\"] { }  \u002F* 包含 icon *\u002F\n",[457,151572,151573,151578,151593,151613,151631],{"__ignoreMap":32},[460,151574,151575],{"class":462,"line":463},[460,151576,151577],{"class":942},"\u002F* 属性选择器 *\u002F\n",[460,151579,151580,151582,151584,151586,151588,151590],{"class":462,"line":476},[460,151581,70068],{"class":470},[460,151583,17601],{"class":466},[460,151585,117600],{"class":929},[460,151587,894],{"class":887},[460,151589,78868],{"class":1353},[460,151591,151592],{"class":466},"] { }\n",[460,151594,151595,151597,151599,151601,151604,151607,151610],{"class":462,"line":482},[460,151596,70068],{"class":470},[460,151598,17601],{"class":466},[460,151600,31148],{"class":929},[460,151602,151603],{"class":887},"^=",[460,151605,151606],{"class":1353},"\"icon\"",[460,151608,151609],{"class":466},"] { }  ",[460,151611,151612],{"class":942},"\u002F* 以 icon 开头 *\u002F\n",[460,151614,151615,151617,151619,151621,151624,151626,151628],{"class":462,"line":488},[460,151616,70068],{"class":470},[460,151618,17601],{"class":466},[460,151620,31148],{"class":929},[460,151622,151623],{"class":887},"$=",[460,151625,151606],{"class":1353},[460,151627,151609],{"class":466},[460,151629,151630],{"class":942},"\u002F* 以 icon 结尾 *\u002F\n",[460,151632,151633,151635,151637,151639,151642,151644,151646],{"class":462,"line":494},[460,151634,70068],{"class":470},[460,151636,17601],{"class":466},[460,151638,31148],{"class":929},[460,151640,151641],{"class":887},"*=",[460,151643,151606],{"class":1353},[460,151645,151609],{"class":466},[460,151647,151648],{"class":942},"\u002F* 包含 icon *\u002F\n",[14,151650,151651],{},"ul的第一个儿子文本为红色",[14,151653,151654],{},"一定要在冒号前加空格，不然就是选中所有的了",[451,151656,151658],{"className":141045,"code":151657,"language":141047,"meta":32,"style":32},".center {\n  color: red;\n}\n```Css\n\u002F* 结构伪类选择器 *\u002F\nli:first-child { }           \u002F* 第一个 *\u002F\nli:last-child { }            \u002F* 最后一个 *\u002F\nli:nth-child(2) { }          \u002F* 第2个 *\u002F\nli:nth-child(2n) { }         \u002F* 偶数 *\u002F\nli:nth-child(2n+1) { }       \u002F* 奇数 *\u002F\nli:nth-child(-n+3) { }       \u002F* 前3个 *\u002F\n",[457,151659,151660,151666,151676,151680,151684,151689,151702,151715,151731,151748,151765],{"__ignoreMap":32},[460,151661,151662,151664],{"class":462,"line":463},[460,151663,141336],{"class":929},[460,151665,1348],{"class":466},[460,151667,151668,151670,151672,151674],{"class":462,"line":476},[460,151669,87047],{"class":900},[460,151671,1961],{"class":466},[460,151673,73627],{"class":900},[460,151675,1966],{"class":466},[460,151677,151678],{"class":462,"line":482},[460,151679,821],{"class":466},[460,151681,151682],{"class":462,"line":488},[460,151683,150506],{"class":466},[460,151685,151686],{"class":462,"line":494},[460,151687,151688],{"class":942},"\u002F* 结构伪类选择器 *\u002F\n",[460,151690,151691,151693,151696,151699],{"class":462,"line":500},[460,151692,43],{"class":470},[460,151694,151695],{"class":929},":first-child",[460,151697,151698],{"class":466}," { }           ",[460,151700,151701],{"class":942},"\u002F* 第一个 *\u002F\n",[460,151703,151704,151706,151709,151712],{"class":462,"line":506},[460,151705,43],{"class":470},[460,151707,151708],{"class":929},":last-child",[460,151710,151711],{"class":466}," { }            ",[460,151713,151714],{"class":942},"\u002F* 最后一个 *\u002F\n",[460,151716,151717,151719,151721,151723,151725,151728],{"class":462,"line":512},[460,151718,43],{"class":470},[460,151720,143959],{"class":929},[460,151722,2174],{"class":466},[460,151724,907],{"class":900},[460,151726,151727],{"class":466},") { }          ",[460,151729,151730],{"class":942},"\u002F* 第2个 *\u002F\n",[460,151732,151733,151735,151737,151739,151742,151745],{"class":462,"line":518},[460,151734,43],{"class":470},[460,151736,143959],{"class":929},[460,151738,2174],{"class":466},[460,151740,151741],{"class":900},"2n",[460,151743,151744],{"class":466},") { }         ",[460,151746,151747],{"class":942},"\u002F* 偶数 *\u002F\n",[460,151749,151750,151752,151754,151756,151759,151762],{"class":462,"line":525},[460,151751,43],{"class":470},[460,151753,143959],{"class":929},[460,151755,2174],{"class":466},[460,151757,151758],{"class":900},"2n+1",[460,151760,151761],{"class":466},") { }       ",[460,151763,151764],{"class":942},"\u002F* 奇数 *\u002F\n",[460,151766,151767,151769,151771,151773,151776,151778],{"class":462,"line":531},[460,151768,43],{"class":470},[460,151770,143959],{"class":929},[460,151772,2174],{"class":466},[460,151774,151775],{"class":900},"-n+3",[460,151777,151761],{"class":466},[460,151779,151780],{"class":942},"\u002F* 前3个 *\u002F\n",[2737,151782,151785],{"className":151783},[151784],"example","\n  示例内容\n",[14,151787,151788],{},"此时有1会执行操作，确定为第一个孩子:光头强，但是它是p标签，然后接着与前边进行匹配，前面是div与p是不匹配的，所以此时是不输出任何结果的，不会使第一个孩子的背景变为蓝色",[40,151790,151791],{},[43,151792,151793,151796],{},[457,151794,151795],{},"E:nth-of-type(n)"," 匹配同类型中的第n个同级兄弟元素E，也就是说，对父元素里面指定子元素进行排序选择。 先去匹配E ，然后再根据E 找第n个孩子",[14,151798,151799],{},"也就是说它选择的是熊大",[103,151801,151802],{"start":500},[43,151803,151804],{},"权重",[451,151806,151808],{"className":141045,"code":151807,"language":141047,"meta":32,"style":32},"\u002F* 结构伪类选择器 *\u002F\nli:first-child { }           \u002F* 第一个 *\u002F\nli:last-child { }            \u002F* 最后一个 *\u002F\nli:nth-child(2) { }          \u002F* 第2个 *\u002F\nli:nth-child(2n) { }         \u002F* 偶数 *\u002F\nli:nth-child(2n+1) { }       \u002F* 奇数 *\u002F\nli:nth-child(-n+3) { }       \u002F* 前3个 *\u002F\n",[457,151809,151810,151814,151824,151834,151848,151862,151876],{"__ignoreMap":32},[460,151811,151812],{"class":462,"line":463},[460,151813,151688],{"class":942},[460,151815,151816,151818,151820,151822],{"class":462,"line":476},[460,151817,43],{"class":470},[460,151819,151695],{"class":929},[460,151821,151698],{"class":466},[460,151823,151701],{"class":942},[460,151825,151826,151828,151830,151832],{"class":462,"line":482},[460,151827,43],{"class":470},[460,151829,151708],{"class":929},[460,151831,151711],{"class":466},[460,151833,151714],{"class":942},[460,151835,151836,151838,151840,151842,151844,151846],{"class":462,"line":488},[460,151837,43],{"class":470},[460,151839,143959],{"class":929},[460,151841,2174],{"class":466},[460,151843,907],{"class":900},[460,151845,151727],{"class":466},[460,151847,151730],{"class":942},[460,151849,151850,151852,151854,151856,151858,151860],{"class":462,"line":494},[460,151851,43],{"class":470},[460,151853,143959],{"class":929},[460,151855,2174],{"class":466},[460,151857,151741],{"class":900},[460,151859,151744],{"class":466},[460,151861,151747],{"class":942},[460,151863,151864,151866,151868,151870,151872,151874],{"class":462,"line":500},[460,151865,43],{"class":470},[460,151867,143959],{"class":929},[460,151869,2174],{"class":466},[460,151871,151758],{"class":900},[460,151873,151761],{"class":466},[460,151875,151764],{"class":942},[460,151877,151878,151880,151882,151884,151886,151888],{"class":462,"line":506},[460,151879,43],{"class":470},[460,151881,143959],{"class":929},[460,151883,2174],{"class":466},[460,151885,151775],{"class":900},[460,151887,151761],{"class":466},[460,151889,151780],{"class":942},[14,151891,151892],{},"这个的权重为12，:nth-of-type(1)为结构伪类选择器，权重为10，div为标签选择器为1，section也为标签选择器权重也为1,也就是上述总权重为12",[115,151894,151896],{"id":151895},"_14213-伪元素选择器","14.2.1.3 伪元素选择器",[14,151898,151899],{},"伪元素选择器可以帮助我们利用CSS创建新标签元素，而不需要HTML标签，从而简化HTML结构",[30,151901],{"style":140901,"src":151902},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-130.png",[103,151904,151905],{},[43,151906,357],{},[40,151908,151909,151912,151915,151918,151921,151924],{},[43,151910,151911],{},"before 和 after 创建一个元素，但是属于行内元素（也就是宽高不起作用，需要转换模式才会起作用）",[43,151913,151914],{},"新创建的这个元素在文档树中是找不到的（在网页F12中查看文档树），找不到这个盒子，所以我们称为伪元素",[43,151916,151917],{},"语法： element::before {}",[43,151919,151920],{},"before 和 after 必须有 content 属性",[43,151922,151923],{},"before 在父元素内容里面的前面创建元素，after 在父元素内容里面的后面插入元素，内容是放到中间的，不会影响本身的内容",[43,151925,151926],{},"伪元素选择器和标签选择器一样，权重为 1",[103,151928,151929],{"start":476},[43,151930,151931],{},"实例",[451,151933,151934],{"className":141045,"code":151807,"language":141047,"meta":32,"style":32},[457,151935,151936,151940,151950,151960,151974,151988,152002],{"__ignoreMap":32},[460,151937,151938],{"class":462,"line":463},[460,151939,151688],{"class":942},[460,151941,151942,151944,151946,151948],{"class":462,"line":476},[460,151943,43],{"class":470},[460,151945,151695],{"class":929},[460,151947,151698],{"class":466},[460,151949,151701],{"class":942},[460,151951,151952,151954,151956,151958],{"class":462,"line":482},[460,151953,43],{"class":470},[460,151955,151708],{"class":929},[460,151957,151711],{"class":466},[460,151959,151714],{"class":942},[460,151961,151962,151964,151966,151968,151970,151972],{"class":462,"line":488},[460,151963,43],{"class":470},[460,151965,143959],{"class":929},[460,151967,2174],{"class":466},[460,151969,907],{"class":900},[460,151971,151727],{"class":466},[460,151973,151730],{"class":942},[460,151975,151976,151978,151980,151982,151984,151986],{"class":462,"line":494},[460,151977,43],{"class":470},[460,151979,143959],{"class":929},[460,151981,2174],{"class":466},[460,151983,151741],{"class":900},[460,151985,151744],{"class":466},[460,151987,151747],{"class":942},[460,151989,151990,151992,151994,151996,151998,152000],{"class":462,"line":500},[460,151991,43],{"class":470},[460,151993,143959],{"class":929},[460,151995,2174],{"class":466},[460,151997,151758],{"class":900},[460,151999,151761],{"class":466},[460,152001,151764],{"class":942},[460,152003,152004,152006,152008,152010,152012,152014],{"class":462,"line":506},[460,152005,43],{"class":470},[460,152007,143959],{"class":929},[460,152009,2174],{"class":466},[460,152011,151775],{"class":900},[460,152013,151761],{"class":466},[460,152015,151780],{"class":942},[30,152017],{"style":140901,"src":152018},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-131.png",[103,152020,152021],{"start":482},[43,152022,152023],{},"使用场景1",[30,152025],{"style":140901,"src":152026},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-132.png",[14,152028,152029],{},"不需要再加盒子来整红色那部分了",[451,152031,152033],{"className":141045,"code":152032,"language":141047,"meta":32,"style":32},"\u002F* 伪元素选择器（必须有 content 属性） *\u002F\ndiv::before {\n  content: \"\";\n  display: block;\n}\ndiv::after {\n  content: \"→\";\n  color: #999;\n}\n",[457,152034,152035,152040,152049,152060,152070,152074,152083,152094,152104],{"__ignoreMap":32},[460,152036,152037],{"class":462,"line":463},[460,152038,152039],{"class":942},"\u002F* 伪元素选择器（必须有 content 属性） *\u002F\n",[460,152041,152042,152044,152047],{"class":462,"line":476},[460,152043,2737],{"class":470},[460,152045,152046],{"class":929},"::before",[460,152048,1348],{"class":466},[460,152050,152051,152054,152056,152058],{"class":462,"line":482},[460,152052,152053],{"class":900},"  content",[460,152055,1961],{"class":466},[460,152057,6606],{"class":1353},[460,152059,1966],{"class":466},[460,152061,152062,152064,152066,152068],{"class":462,"line":488},[460,152063,142661],{"class":900},[460,152065,1961],{"class":466},[460,152067,7350],{"class":900},[460,152069,1966],{"class":466},[460,152071,152072],{"class":462,"line":494},[460,152073,821],{"class":466},[460,152075,152076,152078,152081],{"class":462,"line":500},[460,152077,2737],{"class":470},[460,152079,152080],{"class":929},"::after",[460,152082,1348],{"class":466},[460,152084,152085,152087,152089,152092],{"class":462,"line":506},[460,152086,152053],{"class":900},[460,152088,1961],{"class":466},[460,152090,152091],{"class":1353},"\"→\"",[460,152093,1966],{"class":466},[460,152095,152096,152098,152100,152102],{"class":462,"line":512},[460,152097,87047],{"class":900},[460,152099,1961],{"class":466},[460,152101,7385],{"class":900},[460,152103,1966],{"class":466},[460,152105,152106],{"class":462,"line":518},[460,152107,821],{"class":466},[30,152109],{"style":140901,"src":152110},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-133.png",[14,152112,152113],{},"如果使用字体图标时可以不复制后边的矩形框，复制前边的数字也是可以的",[30,152115],{"style":140901,"src":152116},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-134.png",[14,152118,152119],{},"但是在引用时需要先转义一下",[14,152121,152122],{},"content='\\e930'",[103,152124,152125],{"start":488},[43,152126,152127],{},"使用场景2",[14,152129,152130],{},"仿土豆效果",[14,152132,152133],{},"通过使用伪元素选择器可以减少body中盒子的数量",[451,152135,152136],{"className":141045,"code":152032,"language":141047,"meta":32,"style":32},[457,152137,152138,152142,152150,152160,152170,152174,152182,152192,152202],{"__ignoreMap":32},[460,152139,152140],{"class":462,"line":463},[460,152141,152039],{"class":942},[460,152143,152144,152146,152148],{"class":462,"line":476},[460,152145,2737],{"class":470},[460,152147,152046],{"class":929},[460,152149,1348],{"class":466},[460,152151,152152,152154,152156,152158],{"class":462,"line":482},[460,152153,152053],{"class":900},[460,152155,1961],{"class":466},[460,152157,6606],{"class":1353},[460,152159,1966],{"class":466},[460,152161,152162,152164,152166,152168],{"class":462,"line":488},[460,152163,142661],{"class":900},[460,152165,1961],{"class":466},[460,152167,7350],{"class":900},[460,152169,1966],{"class":466},[460,152171,152172],{"class":462,"line":494},[460,152173,821],{"class":466},[460,152175,152176,152178,152180],{"class":462,"line":500},[460,152177,2737],{"class":470},[460,152179,152080],{"class":929},[460,152181,1348],{"class":466},[460,152183,152184,152186,152188,152190],{"class":462,"line":506},[460,152185,152053],{"class":900},[460,152187,1961],{"class":466},[460,152189,152091],{"class":1353},[460,152191,1966],{"class":466},[460,152193,152194,152196,152198,152200],{"class":462,"line":512},[460,152195,87047],{"class":900},[460,152197,1961],{"class":466},[460,152199,7385],{"class":900},[460,152201,1966],{"class":466},[460,152203,152204],{"class":462,"line":518},[460,152205,821],{"class":466},[30,152207],{"style":140901,"src":152208},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-135.png",[103,152210,152211],{"start":494},[43,152212,152213],{},"使用场景3",[14,152215,152216],{},"清除浮动：原因回顾，大盒子没有设置高度，里边的两个盒子都设置浮动之后，大盒子会塌陷",[451,152218,152220],{"className":141045,"code":152219,"language":141047,"meta":32,"style":32},".box {\n  float: left;\n}\n```Css\n\u002F* 伪元素选择器（必须有 content 属性） *\u002F\ndiv::before {\n  content: \"\";\n  display: block;\n}\ndiv::after {\n  content: \"→\";\n  color: #999;\n}\n",[457,152221,152222,152228,152238,152242,152246,152250,152258,152268,152278,152282,152290,152300,152310],{"__ignoreMap":32},[460,152223,152224,152226],{"class":462,"line":463},[460,152225,144893],{"class":929},[460,152227,1348],{"class":466},[460,152229,152230,152232,152234,152236],{"class":462,"line":476},[460,152231,145525],{"class":900},[460,152233,1961],{"class":466},[460,152235,40149],{"class":900},[460,152237,1966],{"class":466},[460,152239,152240],{"class":462,"line":482},[460,152241,821],{"class":466},[460,152243,152244],{"class":462,"line":488},[460,152245,150506],{"class":466},[460,152247,152248],{"class":462,"line":494},[460,152249,152039],{"class":942},[460,152251,152252,152254,152256],{"class":462,"line":500},[460,152253,2737],{"class":470},[460,152255,152046],{"class":929},[460,152257,1348],{"class":466},[460,152259,152260,152262,152264,152266],{"class":462,"line":506},[460,152261,152053],{"class":900},[460,152263,1961],{"class":466},[460,152265,6606],{"class":1353},[460,152267,1966],{"class":466},[460,152269,152270,152272,152274,152276],{"class":462,"line":512},[460,152271,142661],{"class":900},[460,152273,1961],{"class":466},[460,152275,7350],{"class":900},[460,152277,1966],{"class":466},[460,152279,152280],{"class":462,"line":518},[460,152281,821],{"class":466},[460,152283,152284,152286,152288],{"class":462,"line":525},[460,152285,2737],{"class":470},[460,152287,152080],{"class":929},[460,152289,1348],{"class":466},[460,152291,152292,152294,152296,152298],{"class":462,"line":531},[460,152293,152053],{"class":900},[460,152295,1961],{"class":466},[460,152297,152091],{"class":1353},[460,152299,1966],{"class":466},[460,152301,152302,152304,152306,152308],{"class":462,"line":537},[460,152303,87047],{"class":900},[460,152305,1961],{"class":466},[460,152307,7385],{"class":900},[460,152309,1966],{"class":466},[460,152311,152312],{"class":462,"line":543},[460,152313,821],{"class":466},[14,152315,152316],{},"div {\nmargin: 0 auto;\n}",[451,152318,152321],{"className":152319,"code":152320,"language":8391},[21693],"\n### 14.2.3 CSS3图片变模糊\n\nfilter CSS属性将模糊或颜色偏移等图形效果应用于元素\n\n`filter: 函数();`，例如：`filter: blur(5px);`，`blur` 表示模糊处理，数值越大越模糊。\n\n### 14.2.4 计算盒子宽度\n\ncalc() 此CSS函数让你在声明CSS属性值时执行一些计算\n\nwidth: calc(100% - 80px);\n\n括号里面可以使用 + - \\* \u002F 来进行计算\n\n运算符前后要加空格，不然显示不出来\n\n要求子盒子宽度永远比父盒子小30像素\n\n### 14.2.5 CSS3 过渡\n\n过渡（transition)是CSS3中具有颠覆性的特征之一，我们可以在不使用 Flash 动画或 JavaScript 的情况下，当元素从一种样式变换为另一种样式时为元素添加效果\n\n**过渡动画：** 是从一个状态 渐渐的过渡到另外一个状态\n\n可以让我们页面更好看，更动感十足，虽然 低版本浏览器不支持（ie9以下版本） 但是不会影响页面布局。\n\n我们现在经常和 :hover 一起 搭配使用\n\n语法：\n\ntransition: 要过渡的属性 花费时间 运动曲线 何时开始;\n\n*   属性 ： 想要变化的 css 属性， 宽度高度 背景颜色 内外边距都可以 。如果想要所有的属性都变化过渡， 写一个all 就可以\n    \n*   花费时间： 单位是 秒（必须写单位） 比如 0.5s\n    \n*   运动曲线： 默认是 ease （可以省略）\n    \n*   何时开始：单位是 秒（必须写单位）可以设置延迟触发时间 默认是 0s （可以省略）\n    \n*   **后面两个属性可以省略**\n    \n*   **记住过渡的使用口诀： 谁做过渡给谁加**\n    \n\n\u003Cimg style=\"max-width:100%\" src=\"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-140.png\">\n\n代码案例\n\n```Css\ndiv {\n  transition: all 0.3s ease;\n}\n",[457,152322,152320],{"__ignoreMap":32},[14,152324,152325],{},"如果想让多个元素都发生变化",[14,152327,152328],{},"不能如下操作：",[14,152330,152331],{},"transition: width 2s ease 0.5s;",[14,152333,152334],{},"transition: height 2s ease 0.5s;不对！！！",[14,152336,152337],{},"上方会样式冲突，导致不显示任何过渡效果",[14,152339,152340],{},"使用如下：加逗号隔开",[14,152342,152343],{},"transition: width 2s ease 0.5s, height 2s ease 0.5s, background-color 2s ease;",[14,152345,152346],{},"transition all 2s ease;",[23,152348,152350],{"id":152349},"_1426-过渡练习","14.2.6 过渡练习",[103,152352,152353],{},[43,152354,152355],{},"进度条",[30,152357],{"style":140901,"src":152358},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-141.png",[451,152360,152362],{"className":141045,"code":152361,"language":141047,"meta":32,"style":32},"div {\n  transition: all 0.3s ease;\n}\n",[457,152363,152364,152370,152388],{"__ignoreMap":32},[460,152365,152366,152368],{"class":462,"line":463},[460,152367,2737],{"class":470},[460,152369,1348],{"class":466},[460,152371,152372,152375,152377,152379,152382,152384,152386],{"class":462,"line":476},[460,152373,152374],{"class":900},"  transition",[460,152376,1961],{"class":466},[460,152378,2130],{"class":900},[460,152380,152381],{"class":900}," 0.3",[460,152383,2139],{"class":887},[460,152385,2133],{"class":900},[460,152387,1966],{"class":466},[460,152389,152390],{"class":462,"line":482},[460,152391,821],{"class":466},[103,152393,152394],{"start":476},[43,152395,152396],{},"小米logo",[14,152398,152399],{},"当将鼠标放到图标时，mi-logo会往右侧过渡；mi-home出现",[451,152401,152403],{"className":141045,"code":152402,"language":141047,"meta":32,"style":32},"\u002F* CSS3 过渡 *\u002F\ndiv {\n  transition: all 0.3s ease;\n  \u002F* transition: 属性 时长 曲线 延迟； *\u002F\n}\n",[457,152404,152405,152410,152416,152432,152437],{"__ignoreMap":32},[460,152406,152407],{"class":462,"line":463},[460,152408,152409],{"class":942},"\u002F* CSS3 过渡 *\u002F\n",[460,152411,152412,152414],{"class":462,"line":476},[460,152413,2737],{"class":470},[460,152415,1348],{"class":466},[460,152417,152418,152420,152422,152424,152426,152428,152430],{"class":462,"line":482},[460,152419,152374],{"class":900},[460,152421,1961],{"class":466},[460,152423,2130],{"class":900},[460,152425,152381],{"class":900},[460,152427,2139],{"class":887},[460,152429,2133],{"class":900},[460,152431,1966],{"class":466},[460,152433,152434],{"class":462,"line":488},[460,152435,152436],{"class":942},"  \u002F* transition: 属性 时长 曲线 延迟； *\u002F\n",[460,152438,152439],{"class":462,"line":494},[460,152440,821],{"class":466},[14,152442,152443],{},"理解：在设计的时候可以多考虑使用伪元素选择器，动画的时候不要想着只通过一个hover就可以实现，可以让before和after都添加hover来进行运动",[1944,152445,152446],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":32,"searchDepth":476,"depth":476,"links":152448},[152449,152454],{"id":150779,"depth":476,"text":150780,"children":152450},[152451,152452,152453],{"id":150783,"depth":482,"text":150784},{"id":150860,"depth":482,"text":150861},{"id":151191,"depth":482,"text":151192},{"id":151482,"depth":476,"text":151483,"children":152455},[152456,152457],{"id":151486,"depth":482,"text":151487},{"id":152349,"depth":482,"text":152350},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch14-html5css3",{"title":150771,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch14-HTML5与CSS3新特性","Bc1GNkPQVYZHk_zaMCAK05mQQ3fn_HZ43TEY42Pt3dw",{"id":152464,"title":152465,"body":152466,"description":16682,"extension":16683,"meta":154210,"navigation":521,"path":154211,"seo":154212,"stem":154213,"__hash__":154214},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch15-品优购项目上篇-搭建与公共模块.md","15. 品优购项目上篇-搭建与公共模块",{"type":7,"value":152467,"toc":154191},[152468,152471,152475,152478,152484,152490,152494,152496,152499,152502,152505,152508,152511,152514,152517,152521,152525,152528,152531,152534,152538,152541,152544,152549,152552,152555,152558,152562,152565,152574,152577,152580,152584,152587,152590,152595,152602,152616,152624,152631,152636,152639,152642,152645,152652,152656,152662,152668,152671,152674,152679,152685,152687,152695,152700,152703,152709,152711,152716,152721,152724,152726,152731,152734,152739,152744,152778,152782,152786,152789,152793,152796,152882,152885,152922,152925,152961,152965,152970,152983,153037,153039,153067,153069,153097,153103,153117,153119,153163,153165,153209,153212,153219,153230,153232,153259,153261,153287,153294,153310,153312,153406,153408,153502,153509,153512,153517,153523,153597,153600,153602,153638,153640,153676,153679,153686,153705,153708,153711,153713,153738,153740,153764,153767,153770,153800,153804,153807,153870,153872,153938,153940,154004,154007,154039,154041,154067,154069,154095,154098,154129,154131,154157,154159,154185,154188],[10,152469,152465],{"id":152470},"_15-品优购项目上篇-搭建与公共模块",[18,152472,152474],{"id":152473},"_151-项目规划","15.1 项目规划",[30,152476],{"style":140901,"src":152477},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-142.png",[14,152479,152480,152483],{},[3944,152481,152482],{},"原型图："," 页面的布局，告知我们开发人员，整个页面的结构是怎样的，说白了就是什么地方放什么内容",[14,152485,152486,152489],{},[3944,152487,152488],{},"效果图："," 告知我们开发人员，最终做出来的成品应该是什么样子，相比原型图，效果图里面包含内容，风格，字体大小等等",[18,152491,152493],{"id":152492},"_152-项目介绍","15.2 项目介绍",[14,152495,152482],{},[30,152497],{"style":140901,"src":152498},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-143.png",[14,152500,152501],{},"主页：",[30,152503],{"style":140901,"src":152504},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-144.png",[14,152506,152507],{},"列表页：",[30,152509],{"style":140901,"src":152510},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-145.png",[14,152512,152513],{},"注册页：",[30,152515],{"style":140901,"src":152516},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-146.png",[18,152518,152520],{"id":152519},"_153-项目搭建工作","15.3 项目搭建工作",[23,152522,152524],{"id":152523},"_1531-创建的文件夹如下称为项目结构","15.3.1 创建的文件夹如下（称为项目结构）",[30,152526],{"style":140901,"src":152527},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-147.png",[14,152529,152530],{},"经常更换的图片要放到upload文件夹中",[14,152532,152533],{},"不经常换的放到images文件夹中",[23,152535,152537],{"id":152536},"_1532-创建文件如下","15.3.2 创建文件如下",[30,152539],{"style":140901,"src":152540},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-148.png",[30,152542],{"style":140901,"src":152543},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-149.png",[14,152545,152546],{},[3944,152547,152548],{},"初始化样式：",[14,152550,152551],{},"有些网站初始化的不太提倡 * { margin: 0; padding: 0; }",[14,152553,152554],{},"比如新浪： html,body,ul,li,ol,dl,dd,dt,p,h1,h2,h3,h4,h5,h6,form,fieldset,legend,img{margin:0;padding:0}",[14,152556,152557],{},"通配符选择器写代码的时候简单，但是浏览器渲染的时候没有后边类似于新浪这样的效率高",[23,152559,152561],{"id":152560},"_1533-项目模块化开发","15.3.3 项目模块化开发",[14,152563,152564],{},"所谓的模块化：将一个项目按照功能划分，一个功能一个模块，互不影响，模块化开发具有重复使用、更换方便等优点",[14,152566,152567,152568,152573],{},"这里最典型的应用就是 ",[3944,152569,152570],{},[457,152571,152572],{},"common.css"," 公共样式。写好一个样式，其余的页面用到这些相同的样式",[30,152575],{"style":140901,"src":152576},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-150.png",[14,152578,152579],{},"通过link方法来引入",[23,152581,152583],{"id":152582},"_1534-网站-favicon-图标","15.3.4 网站 favicon 图标",[30,152585],{"style":140901,"src":152586},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-151.png",[14,152588,152589],{},"favicon.ico 一般用于作为缩略的网站标志，它显示在浏览器的地址栏或者标签上。目前主要的浏览器都支持 favicon.ico 图标",[103,152591,152592],{},[43,152593,152594],{},"制作favicon图标",[14,152596,152597,152598,152601],{},"①把品优购图标切成 ",[457,152599,152600],{},"png"," 图片",[14,152603,152604,152605,152607,152608,152611,152612],{},"②把 ",[457,152606,152600],{}," 图片转换为 ",[457,152609,152610],{},"ico"," 图标，这需要借助于第三方转换网站，例如比特虫：",[2756,152613,152614],{"href":152614,"rel":152615},"http:\u002F\u002Fwww.bitbug.net\u002F",[4943],[103,152617,152618,152621],{"start":476},[43,152619,152620],{},"favicon图标放到网站根目录下",[43,152622,152623],{},"HTML页面引入favicon",[14,152625,152626,152627,152630],{},"在html 页面里面的 ",[457,152628,152629],{},"\u003Chead> \u003C\u002Fhead>","元素之间引入代码",[14,152632,152633],{},[457,152634,152635],{},"\u003Clink rel=\"shortcut icon\" href=\"favicon.ico\" type=\"image\u002Fx-icon\"\u002F>",[14,152637,152638],{},"复制这行代码或者在生成这个的网站进行复制",[30,152640],{"style":140901,"src":152641},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-152.png",[14,152643,152644],{},"在网站后边输入\u002Ffavicon.ico就可以得到这个网站的图标",[14,152646,152647,152648],{},"例如:",[2756,152649,152650],{"href":152650,"rel":152651},"https:\u002F\u002Fwww.jd.com\u002Ffavicon.ico",[4943],[23,152653,152655],{"id":152654},"_1535-tdk三大标签seo优化","15.3.5 TDK三大标签SEO优化",[14,152657,152658,152661],{},[3944,152659,152660],{},"SEO（Search Engine Optimization）"," 汉译为搜索引擎优化，是一种利用搜索引擎的规则提高网站在有关搜索引擎内自然排名的方式。",[14,152663,152664,152667],{},[3944,152665,152666],{},"SEO"," 的目的是对网站进行深度的优化，从而帮助网站获取免费的流量，进而在搜索引擎上提升网站的排名，提高网站的知名度。",[14,152669,152670],{},"页面必须有三个标签用来符合 SEO 优化",[30,152672],{"style":140901,"src":152673},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-153.png",[103,152675,152676],{},[43,152677,152678],{},"title网站标题",[14,152680,152681,152684],{},[3944,152682,152683],{},"建议："," 网站名（产品名）- 网站的介绍 （尽量不要超过30个汉字）",[14,152686,84945],{},[40,152688,152689,152692],{},[43,152690,152691],{},"京东(JD.COM)-综合网购首选-正品低价、品质保障、配送及时、轻松购物！",[43,152693,152694],{},"小米商城 - 小米5s、红米Note 4、小米MIX、小米笔记本官方网站",[103,152696,152697],{"start":476},[43,152698,152699],{},"description网站描述",[14,152701,152702],{},"简要说明我们网站主要是做什么的",[14,152704,152705,152708],{},[3944,152706,152707],{},"我们提倡"," ，description 作为网站的总体业务和主题概括，多采用“我们是…”、“我们提供…”、“×××网作为…”、“电话：010…”之类语句",[14,152710,84945],{},[14,152712,152713],{},[457,152714,152715],{},"\u003Cmeta name=\"description\" content=\"京东JD.COM-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务，为您提供愉悦的网上购物体验!\" \u002F>",[103,152717,152718],{"start":482},[43,152719,152720],{},"keywords关键词",[14,152722,152723],{},"keywords 最好限制为 6～8 个关键词，关键词之间用英文逗号隔开，采用 关键词1,关键词2 的形式",[14,152725,84945],{},[14,152727,152728],{},[457,152729,152730],{},"\u003Cmeta name= \" keywords\" content=\"网上购物,网上商城,手机,笔记本,电脑,MP3,CD,VCD,DV,相机,数码,配件,手表,存储卡,京东\" \u002F>",[14,152732,152733],{},"这里它是电商所以写的多，把最好产品往前写，越好的产品权重越高",[14,152735,152736],{},[3944,152737,152738],{},"对于我们前端人员来说，我们只需要准备好这三个标签，具体里面的内容，有专门的 SEO 人员准备",[103,152740,152741],{"start":488},[43,152742,152743],{},"代码总结",[451,152745,152746],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,152747,152748,152752,152766,152770],{"__ignoreMap":32},[460,152749,152750],{"class":462,"line":463},[460,152751,145156],{"class":942},[460,152753,152754,152756,152758,152760,152762,152764],{"class":462,"line":476},[460,152755,781],{"class":466},[460,152757,2737],{"class":470},[460,152759,2740],{"class":929},[460,152761,894],{"class":466},[460,152763,145169],{"class":1353},[460,152765,473],{"class":466},[460,152767,152768],{"class":462,"line":482},[460,152769,145176],{"class":466},[460,152771,152772,152774,152776],{"class":462,"line":488},[460,152773,1776],{"class":466},[460,152775,2737],{"class":470},[460,152777,473],{"class":466},[18,152779,152781],{"id":152780},"_154-项目公共部分制作","15.4 项目公共部分制作",[23,152783,152785],{"id":152784},"_1541-常用模块类命名","15.4.1 常用模块类命名",[30,152787],{"style":140901,"src":152788},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-154.png",[23,152790,152792],{"id":152791},"_1542-快捷导航-shortcut-制作","15.4.2 快捷导航 shortcut 制作",[14,152794,152795],{},"布局思路：",[40,152797,152798,152801,152804,152826,152859],{},[43,152799,152800],{},"通栏的盒子命名为 shortcut ，是快捷导航的意思。 注意这里的行高，可以继承给里面的子盒子",[43,152802,152803],{},"里面包含版心的盒子",[43,152805,152806,152807],{},"版心盒子里面包含 1 号左侧盒子左浮动",[40,152808,152809,152817,152823],{},[43,152810,152811,152812,6410,152814,152816],{},"1 号盒子 里面包含一个",[457,152813,40],{},[457,152815,40],{},"包裹li，第一个li里面包裹文字就行，因为不能点击，第二个li包含两个a标签",[43,152818,152819,152820,152822],{},"里面的内容是水平排列，所以需要给",[457,152821,43],{},"设置浮动",[43,152824,152825],{},"文字要垂直居中，我们可以给 shortcut设置行高，因为行高可以继承，里面的孩子就不需要设置了",[43,152827,152828,152829],{},"版心盒子里面包含 2 号右侧盒子右浮动",[40,152830,152831,152845,152850],{},[43,152832,152833,152834,6410,152836,152838,152839,152841,152842,152844],{},"2 号盒子 里面包含一个",[457,152835,40],{},[457,152837,40],{},"包裹",[457,152840,43],{},"，中间的",[457,152843,17630],{},"可以用样式去设置，也可以用字符 |",[43,152846,152847,152848,152822],{},"里面内容水平排列，给",[457,152849,43],{},[43,152851,152852,152853,152855,152856,152858],{},"找到里面所有偶数的 ",[457,152854,43],{}," 设置样式（偶数的 ",[457,152857,43],{}," 显示是一个 | 竖线，所以需要单独选择出来设置样式，利用nth-child就可以实现）",[43,152860,152861,152862],{},"需要用到字体图标",[40,152863,152864,152870,152873,152876,152879],{},[43,152865,152866,152867],{},"利用伪元素的方式来实现字体图标，给需要添加的标签设置类名为 ： ",[457,152868,152869],{},"arrow-icon",[43,152871,152872],{},"先要引入字体图片的资源",[43,152874,152875],{},"在样式里面利用 font-face 来进行声明",[43,152877,152878],{},"在伪元素的 content属性设置 图标的编码",[43,152880,152881],{},"给伪元素设置font-family属性",[14,152883,152884],{},"结构实例代码：",[451,152886,152888],{"className":141045,"code":152887,"language":141047,"meta":32,"style":32},"div::before {\n  content: \"\";\n  display: block;\n}\n",[457,152889,152890,152898,152908,152918],{"__ignoreMap":32},[460,152891,152892,152894,152896],{"class":462,"line":463},[460,152893,2737],{"class":470},[460,152895,152046],{"class":929},[460,152897,1348],{"class":466},[460,152899,152900,152902,152904,152906],{"class":462,"line":476},[460,152901,152053],{"class":900},[460,152903,1961],{"class":466},[460,152905,6606],{"class":1353},[460,152907,1966],{"class":466},[460,152909,152910,152912,152914,152916],{"class":462,"line":482},[460,152911,142661],{"class":900},[460,152913,1961],{"class":466},[460,152915,7350],{"class":900},[460,152917,1966],{"class":466},[460,152919,152920],{"class":462,"line":488},[460,152921,821],{"class":466},[14,152923,152924],{},"样式实例代码：",[451,152926,152927],{"className":141045,"code":152887,"language":141047,"meta":32,"style":32},[457,152928,152929,152937,152947,152957],{"__ignoreMap":32},[460,152930,152931,152933,152935],{"class":462,"line":463},[460,152932,2737],{"class":470},[460,152934,152046],{"class":929},[460,152936,1348],{"class":466},[460,152938,152939,152941,152943,152945],{"class":462,"line":476},[460,152940,152053],{"class":900},[460,152942,1961],{"class":466},[460,152944,6606],{"class":1353},[460,152946,1966],{"class":466},[460,152948,152949,152951,152953,152955],{"class":462,"line":482},[460,152950,142661],{"class":900},[460,152952,1961],{"class":466},[460,152954,7350],{"class":900},[460,152956,1966],{"class":466},[460,152958,152959],{"class":462,"line":488},[460,152960,821],{"class":466},[23,152962,152964],{"id":152963},"_1543-header-头部模块搭建","15.4.3 header 头部模块搭建",[40,152966,152967],{},[43,152968,152969],{},"header 盒子必须要有高度",[14,152971,152972,152973,152975,152976],{},"1 号盒子是 ",[457,152974,146057],{}," 标志定位，在正常开发过程中， ",[3944,152977,152978,152979,152982],{},"logo的布局其实是有讲究的，需要进行 ",[457,152980,152981],{},"logoSEO","的优化 （★★★）",[40,152984,152985,152993,153001,153028],{},[43,152986,152987,152989,152990,152992],{},[457,152988,146057],{}," 里面首先放一个 ",[457,152991,10],{}," 标签，目的是为了提权，告诉搜索引擎，这个地方很重要",[43,152994,152995,152997,152998,153000],{},[457,152996,10],{}," 里面再放一个链接，可以返回首页的，把 ",[457,152999,146057],{}," 的背景图片给链接即可",[43,153002,153003,153004],{},"为了搜索引擎收录我们，我们链接里面要放文字（网站名称），但是文字不要显示出来",[40,153005,153006,153021],{},[43,153007,153008,153009,153012,153013,153016,153017,153020],{},"方法1：",[457,153010,153011],{},"text-indent"," 移到盒子外面（",[457,153014,153015],{},"text-indent: -9999px",") ，然后 ",[457,153018,153019],{},"overflow:hidden"," ，淘宝的做法",[43,153022,153023,153024,153027],{},"方法2：直接给 ",[457,153025,153026],{},"font-size: 0;"," 就看不到文字了，京东的做法",[43,153029,153030,153031,153033,153034,153036],{},"最后给链接一个 ",[457,153032,1930],{}," 属性，这样鼠标放到 ",[457,153035,146057],{}," 上就可以看到提示文字了",[14,153038,152884],{},[451,153040,153041],{"className":141792,"code":146278,"language":141794,"meta":32,"style":32},[457,153042,153043],{"__ignoreMap":32},[460,153044,153045,153047,153049,153051,153053,153055,153057,153059,153061,153063,153065],{"class":462,"line":463},[460,153046,781],{"class":466},[460,153048,2756],{"class":470},[460,153050,2759],{"class":929},[460,153052,894],{"class":466},[460,153054,146293],{"class":1353},[460,153056,146296],{"class":929},[460,153058,894],{"class":466},[460,153060,146301],{"class":1353},[460,153062,146304],{"class":466},[460,153064,2756],{"class":470},[460,153066,473],{"class":466},[14,153068,152924],{},[451,153070,153071],{"className":141792,"code":146278,"language":141794,"meta":32,"style":32},[457,153072,153073],{"__ignoreMap":32},[460,153074,153075,153077,153079,153081,153083,153085,153087,153089,153091,153093,153095],{"class":462,"line":463},[460,153076,781],{"class":466},[460,153078,2756],{"class":470},[460,153080,2759],{"class":929},[460,153082,894],{"class":466},[460,153084,146293],{"class":1353},[460,153086,146296],{"class":929},[460,153088,894],{"class":466},[460,153090,146301],{"class":1353},[460,153092,146304],{"class":466},[460,153094,2756],{"class":470},[460,153096,473],{"class":466},[14,153098,153099,153100,153102],{},"2 号盒子是 ",[457,153101,146070],{}," 搜索模块定位",[40,153104,153105,153108,153111,153114],{},[43,153106,153107],{},"search盒子利用定位的方式放在对应的位置",[43,153109,153110],{},"search盒子设置绝对定位，header盒子设置相对定位",[43,153112,153113],{},"search盒子里面包含两个子元素，一个是输入框，一个是按钮，分别跟定固定的宽高（搜索框 宽度：454px；按钮宽度：80px）",[43,153115,153116],{},"输入框和按钮本来就是行内块元素，在一行显示，但是中间会有间隙，所以我们可以让让这两个元素浮动起来",[14,153118,152884],{},[451,153120,153121],{"className":141045,"code":146365,"language":141047,"meta":32,"style":32},[457,153122,153123,153145,153149,153159],{"__ignoreMap":32},[460,153124,153125,153127,153129,153131,153133,153135,153137,153139,153141,153143],{"class":462,"line":463},[460,153126,2737],{"class":470},[460,153128,904],{"class":466},[460,153130,14],{"class":470},[460,153132,904],{"class":466},[460,153134,10],{"class":470},[460,153136,904],{"class":466},[460,153138,40],{"class":470},[460,153140,904],{"class":466},[460,153142,43],{"class":470},[460,153144,1348],{"class":466},[460,153146,153147],{"class":462,"line":476},[460,153148,146394],{"class":942},[460,153150,153151,153153,153155,153157],{"class":462,"line":482},[460,153152,142661],{"class":900},[460,153154,1961],{"class":466},[460,153156,7350],{"class":900},[460,153158,1966],{"class":466},[460,153160,153161],{"class":462,"line":488},[460,153162,821],{"class":466},[14,153164,152924],{},[451,153166,153167],{"className":141045,"code":146365,"language":141047,"meta":32,"style":32},[457,153168,153169,153191,153195,153205],{"__ignoreMap":32},[460,153170,153171,153173,153175,153177,153179,153181,153183,153185,153187,153189],{"class":462,"line":463},[460,153172,2737],{"class":470},[460,153174,904],{"class":466},[460,153176,14],{"class":470},[460,153178,904],{"class":466},[460,153180,10],{"class":470},[460,153182,904],{"class":466},[460,153184,40],{"class":470},[460,153186,904],{"class":466},[460,153188,43],{"class":470},[460,153190,1348],{"class":466},[460,153192,153193],{"class":462,"line":476},[460,153194,146394],{"class":942},[460,153196,153197,153199,153201,153203],{"class":462,"line":482},[460,153198,142661],{"class":900},[460,153200,1961],{"class":466},[460,153202,7350],{"class":900},[460,153204,1966],{"class":466},[460,153206,153207],{"class":462,"line":488},[460,153208,821],{"class":466},[14,153210,153211],{},"这里为了避免给大盒子加边框子，小盒子不加边框塞进大盒子后，他们之间会有神奇的空隙问题，当浏览器缩放一定程度没有空隙，但是大部分都会有空隙问题，避免该问题，通过不给大盒子边框，给小盒子边框来解决",[14,153213,153214,153215,153218],{},"3 号盒子是 ",[457,153216,153217],{},"hotwords"," 热词模块定位",[40,153220,153221,153224,153227],{},[43,153222,153223],{},"热词模块怎么简单怎么来，直接在里面放a标签即可",[43,153225,153226],{},"给里面所有的a标签设置 左右10px的外边距",[43,153228,153229],{},"给第一个a标签设置文字变红色（#c81623）",[14,153231,152884],{},[451,153233,153235],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},"div {\n  margin: 0 auto;\n}\n",[457,153236,153237,153243,153255],{"__ignoreMap":32},[460,153238,153239,153241],{"class":462,"line":463},[460,153240,2737],{"class":470},[460,153242,1348],{"class":466},[460,153244,153245,153247,153249,153251,153253],{"class":462,"line":476},[460,153246,86612],{"class":900},[460,153248,1961],{"class":466},[460,153250,936],{"class":900},[460,153252,2030],{"class":900},[460,153254,1966],{"class":466},[460,153256,153257],{"class":462,"line":482},[460,153258,821],{"class":466},[14,153260,152924],{},[451,153262,153263],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},[457,153264,153265,153271,153283],{"__ignoreMap":32},[460,153266,153267,153269],{"class":462,"line":463},[460,153268,2737],{"class":470},[460,153270,1348],{"class":466},[460,153272,153273,153275,153277,153279,153281],{"class":462,"line":476},[460,153274,86612],{"class":900},[460,153276,1961],{"class":466},[460,153278,936],{"class":900},[460,153280,2030],{"class":900},[460,153282,1966],{"class":466},[460,153284,153285],{"class":462,"line":482},[460,153286,821],{"class":466},[14,153288,153289,153290,153293],{},"4 号盒子是 ",[457,153291,153292],{},"shopcar"," 购物车模块",[40,153295,153296,153301,153304,153307],{},[43,153297,137828,153298,153300],{},[457,153299,153292],{},"里面添加一个before伪元素和after伪元素，分别放置 购物车的图标和 右箭头",[43,153302,153303],{},"count 统计部分用绝对定位做",[43,153305,153306],{},"count 统计部分不要给宽度，因为可能买的件数比较多，让件数撑开就好了，给一个高度",[43,153308,153309],{},"一定注意左下角不是圆角，其余三个是圆角 写法： border-radius: 7px 7px 7px 0;",[14,153311,152884],{},[451,153313,153314],{"className":141045,"code":146477,"language":141047,"meta":32,"style":32},[457,153315,153316,153320,153334,153338,153352,153356,153370,153374,153388,153392],{"__ignoreMap":32},[460,153317,153318],{"class":462,"line":463},[460,153319,146484],{"class":942},[460,153321,153322,153324,153326,153328,153330,153332],{"class":462,"line":476},[460,153323,146489],{"class":929},[460,153325,3437],{"class":466},[460,153327,143405],{"class":900},[460,153329,1961],{"class":466},[460,153331,146498],{"class":900},[460,153333,143975],{"class":466},[460,153335,153336],{"class":462,"line":482},[460,153337,146505],{"class":942},[460,153339,153340,153342,153344,153346,153348,153350],{"class":462,"line":488},[460,153341,146510],{"class":929},[460,153343,3437],{"class":466},[460,153345,143405],{"class":900},[460,153347,1961],{"class":466},[460,153349,10138],{"class":900},[460,153351,143975],{"class":466},[460,153353,153354],{"class":462,"line":494},[460,153355,146525],{"class":942},[460,153357,153358,153360,153362,153364,153366,153368],{"class":462,"line":500},[460,153359,146530],{"class":929},[460,153361,3437],{"class":466},[460,153363,143405],{"class":900},[460,153365,1961],{"class":466},[460,153367,10202],{"class":900},[460,153369,143975],{"class":466},[460,153371,153372],{"class":462,"line":506},[460,153373,146545],{"class":942},[460,153375,153376,153378,153380,153382,153384,153386],{"class":462,"line":512},[460,153377,146550],{"class":929},[460,153379,3437],{"class":466},[460,153381,143405],{"class":900},[460,153383,1961],{"class":466},[460,153385,10009],{"class":900},[460,153387,143975],{"class":466},[460,153389,153390],{"class":462,"line":518},[460,153391,146565],{"class":942},[460,153393,153394,153396,153398,153400,153402,153404],{"class":462,"line":525},[460,153395,146570],{"class":929},[460,153397,3437],{"class":466},[460,153399,143405],{"class":900},[460,153401,1961],{"class":466},[460,153403,146579],{"class":900},[460,153405,143975],{"class":466},[14,153407,152924],{},[451,153409,153410],{"className":141045,"code":146477,"language":141047,"meta":32,"style":32},[457,153411,153412,153416,153430,153434,153448,153452,153466,153470,153484,153488],{"__ignoreMap":32},[460,153413,153414],{"class":462,"line":463},[460,153415,146484],{"class":942},[460,153417,153418,153420,153422,153424,153426,153428],{"class":462,"line":476},[460,153419,146489],{"class":929},[460,153421,3437],{"class":466},[460,153423,143405],{"class":900},[460,153425,1961],{"class":466},[460,153427,146498],{"class":900},[460,153429,143975],{"class":466},[460,153431,153432],{"class":462,"line":482},[460,153433,146505],{"class":942},[460,153435,153436,153438,153440,153442,153444,153446],{"class":462,"line":488},[460,153437,146510],{"class":929},[460,153439,3437],{"class":466},[460,153441,143405],{"class":900},[460,153443,1961],{"class":466},[460,153445,10138],{"class":900},[460,153447,143975],{"class":466},[460,153449,153450],{"class":462,"line":494},[460,153451,146525],{"class":942},[460,153453,153454,153456,153458,153460,153462,153464],{"class":462,"line":500},[460,153455,146530],{"class":929},[460,153457,3437],{"class":466},[460,153459,143405],{"class":900},[460,153461,1961],{"class":466},[460,153463,10202],{"class":900},[460,153465,143975],{"class":466},[460,153467,153468],{"class":462,"line":506},[460,153469,146545],{"class":942},[460,153471,153472,153474,153476,153478,153480,153482],{"class":462,"line":512},[460,153473,146550],{"class":929},[460,153475,3437],{"class":466},[460,153477,143405],{"class":900},[460,153479,1961],{"class":466},[460,153481,10009],{"class":900},[460,153483,143975],{"class":466},[460,153485,153486],{"class":462,"line":518},[460,153487,146565],{"class":942},[460,153489,153490,153492,153494,153496,153498,153500],{"class":462,"line":525},[460,153491,146570],{"class":929},[460,153493,3437],{"class":466},[460,153495,143405],{"class":900},[460,153497,1961],{"class":466},[460,153499,146579],{"class":900},[460,153501,143975],{"class":466},[23,153503,153505,153506,153508],{"id":153504},"_1544-nav导航模块制作","15.4.4 ",[457,153507,69960],{},"导航模块制作",[30,153510],{"style":140901,"src":153511},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-155.png",[14,153513,153514,153516],{},[457,153515,69960],{}," 盒子通栏有高度，而且有个下边框，里面包含版心，版心里面包含 1 号盒子 和 2号盒子",[14,153518,153519,153520],{},"1 号盒子左侧浮动，",[457,153521,153522],{},"dropdown",[40,153524,153525,153535,153543,153549,153557,153567,153575,153586],{},[43,153526,153527,153528,115511,153531,153534],{},"1号盒子有讲究，根据相关性 里面包含 ",[457,153529,153530],{},".dt",[457,153532,153533],{},".dd"," 两个盒子",[43,153536,153537,153539,153540,153542],{},[457,153538,153530],{}," 内容是全部商品分类，然后把这个盒子的宽高设置跟父亲一样，这样就把 ",[457,153541,153533],{}," 挤到下面去了",[43,153544,153545,153546,153548],{},"给 ",[457,153547,153533],{}," 盒子设置宽度 和 高度，以及背景颜色",[43,153550,153545,153551,153553,153554,134730],{},[457,153552,153533],{}," 盒子里面定义 无序列表 （",[457,153555,153556],{},"ul > li > a",[43,153558,153559,153560,153562,153563,153566],{},"每个 ",[457,153561,43],{}," 都有一个高度（",[457,153564,153565],{},"31px","），宽度可以不用设置，让文字垂直居中，左边设置2个像素的margin值",[43,153568,153545,153569,153571,153572,134730],{},[457,153570,43],{}," 里面的a设置文字大小（",[457,153573,153574],{},"14px",[43,153576,153545,153577,153579,153580,153582,153583,153585],{},[457,153578,43],{}," 设置 ",[457,153581,142206],{},"，当鼠标移入的时候，让",[457,153584,43],{},"的背景变成白色，让里面的文字变成红色",[43,153587,153588,153590,153591,153593,153594,153596],{},[457,153589,43],{}," 右侧的三角 就可以利用 伪元素来实现，给伪元素设置字体图标，利用定位的方式放在",[457,153592,43],{},"的右侧，那么给",[457,153595,43],{},"设置相对定位",[14,153598,153599],{},"一定要注意相关性",[14,153601,152884],{},[451,153603,153604],{"className":141045,"code":152887,"language":141047,"meta":32,"style":32},[457,153605,153606,153614,153624,153634],{"__ignoreMap":32},[460,153607,153608,153610,153612],{"class":462,"line":463},[460,153609,2737],{"class":470},[460,153611,152046],{"class":929},[460,153613,1348],{"class":466},[460,153615,153616,153618,153620,153622],{"class":462,"line":476},[460,153617,152053],{"class":900},[460,153619,1961],{"class":466},[460,153621,6606],{"class":1353},[460,153623,1966],{"class":466},[460,153625,153626,153628,153630,153632],{"class":462,"line":482},[460,153627,142661],{"class":900},[460,153629,1961],{"class":466},[460,153631,7350],{"class":900},[460,153633,1966],{"class":466},[460,153635,153636],{"class":462,"line":488},[460,153637,821],{"class":466},[14,153639,152924],{},[451,153641,153642],{"className":141045,"code":152887,"language":141047,"meta":32,"style":32},[457,153643,153644,153652,153662,153672],{"__ignoreMap":32},[460,153645,153646,153648,153650],{"class":462,"line":463},[460,153647,2737],{"class":470},[460,153649,152046],{"class":929},[460,153651,1348],{"class":466},[460,153653,153654,153656,153658,153660],{"class":462,"line":476},[460,153655,152053],{"class":900},[460,153657,1961],{"class":466},[460,153659,6606],{"class":1353},[460,153661,1966],{"class":466},[460,153663,153664,153666,153668,153670],{"class":462,"line":482},[460,153665,142661],{"class":900},[460,153667,1961],{"class":466},[460,153669,7350],{"class":900},[460,153671,1966],{"class":466},[460,153673,153674],{"class":462,"line":488},[460,153675,821],{"class":466},[14,153677,153678],{},"尽量使用伪元素选择器添加后边的那个符号吧，当时使用的是em盒子加浮动做的",[14,153680,153681,153682,153685],{},"2 号盒子左侧浮动，",[457,153683,153684],{},"navitems"," 导航栏组",[40,153687,153688,153693,153702],{},[43,153689,153690,153691],{},"里面结构是 ",[457,153692,153556],{},[43,153694,153695,153696,153698,153699,153701],{},"导航栏都是能点击的，所以我们不能给定宽度，给",[457,153697,2756],{},"左右的",[457,153700,47290],{},"把两侧撑开",[43,153703,153704],{},"让文字垂直居中（行高等于高度）",[30,153706],{"style":140901,"src":153707},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-156.png",[14,153709,153710],{},"在制作导航栏是将li变为浮动，对a设置高度，这样就可以实现上图中的效果，并不一定非得点击文字才行，点击文字的周围也是可以的",[14,153712,152884],{},[451,153714,153716],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},".box {\n  float: left;\n}\n",[457,153717,153718,153724,153734],{"__ignoreMap":32},[460,153719,153720,153722],{"class":462,"line":463},[460,153721,144893],{"class":929},[460,153723,1348],{"class":466},[460,153725,153726,153728,153730,153732],{"class":462,"line":476},[460,153727,145525],{"class":900},[460,153729,1961],{"class":466},[460,153731,40149],{"class":900},[460,153733,1966],{"class":466},[460,153735,153736],{"class":462,"line":482},[460,153737,821],{"class":466},[14,153739,152924],{},[451,153741,153742],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,153743,153744,153750,153760],{"__ignoreMap":32},[460,153745,153746,153748],{"class":462,"line":463},[460,153747,144893],{"class":929},[460,153749,1348],{"class":466},[460,153751,153752,153754,153756,153758],{"class":462,"line":476},[460,153753,145525],{"class":900},[460,153755,1961],{"class":466},[460,153757,40149],{"class":900},[460,153759,1966],{"class":466},[460,153761,153762],{"class":462,"line":482},[460,153763,821],{"class":466},[14,153765,153766],{},"补充一下下边这个美观问题，把大盒子的左边边框给挡住了，解决方法是给家用电器这个的大盒子一个magin，让它下去一些，就ok",[30,153768],{"style":140901,"src":153769},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-157.png",[451,153771,153772],{"className":141045,"code":145202,"language":141047,"meta":32,"style":32},[457,153773,153774,153780,153796],{"__ignoreMap":32},[460,153775,153776,153778],{"class":462,"line":463},[460,153777,2737],{"class":470},[460,153779,1348],{"class":466},[460,153781,153782,153784,153786,153788,153790,153792,153794],{"class":462,"line":476},[460,153783,87038],{"class":900},[460,153785,1961],{"class":466},[460,153787,901],{"class":900},[460,153789,2017],{"class":887},[460,153791,7201],{"class":900},[460,153793,144437],{"class":900},[460,153795,1966],{"class":466},[460,153797,153798],{"class":462,"line":482},[460,153799,821],{"class":466},[23,153801,153803],{"id":153802},"_1545-footer底部模块制作","15.4.5 footer底部模块制作",[30,153805],{"style":140901,"src":153806},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-158.png",[40,153808,153809,153814,153819],{},[43,153810,153811,153813],{},[457,153812,146248],{}," 页面底部盒子通栏给一个高度（415px）和灰色的背景",[43,153815,153816,153818],{},[457,153817,146248],{}," 里面有一个大的版心",[43,153820,153821,153822,153825,153826],{},"版心里面包含 1 号盒子，",[457,153823,153824],{},"mod_service"," 是服务模块，mod 是模块的意思",[40,153827,153828,153833,153846,153862,153867],{},[43,153829,153545,153830,153832],{},[457,153831,153824],{}," 设置高度（80px）和下边框",[43,153834,153835,153836,153839,153840,153842,153843,153845],{},"在里面定义 ",[457,153837,153838],{},"ul > li"," ,每个",[457,153841,43],{}," 宽度是300px 高度是 50px，给每个",[457,153844,43],{},"设置35px的左内边距",[43,153847,153848,153849,153851,153852,153854,153855,153857,153858,34827,153860,134730],{},"在每个",[457,153850,43],{},"里面，放一个 ",[457,153853,4287],{},"（里面放图标），一个",[457,153856,2737],{},"（里面放",[457,153859,2737],{},[457,153861,14],{},[43,153863,153545,153864,153866],{},[457,153865,4287],{},"设置浮动，让h5与这个div左右排列",[43,153868,153869],{},"通过精灵图技术（核心思路：利用background-position来实现），把图标设置给h5",[14,153871,152884],{},[451,153873,153875],{"className":141045,"code":153874,"language":141047,"meta":32,"style":32},".icon {\n  width: 20px;\n  height: 20px;\n  background: url(sprites.png) no-repeat -10px -20px;\n}\n",[457,153876,153877,153883,153895,153907,153934],{"__ignoreMap":32},[460,153878,153879,153881],{"class":462,"line":463},[460,153880,148802],{"class":929},[460,153882,1348],{"class":466},[460,153884,153885,153887,153889,153891,153893],{"class":462,"line":476},[460,153886,86710],{"class":900},[460,153888,1961],{"class":466},[460,153890,2110],{"class":900},[460,153892,2017],{"class":887},[460,153894,1966],{"class":466},[460,153896,153897,153899,153901,153903,153905],{"class":462,"line":482},[460,153898,86930],{"class":900},[460,153900,1961],{"class":466},[460,153902,2110],{"class":900},[460,153904,2017],{"class":887},[460,153906,1966],{"class":466},[460,153908,153909,153911,153913,153915,153917,153919,153921,153923,153926,153928,153930,153932],{"class":462,"line":488},[460,153910,86753],{"class":900},[460,153912,1961],{"class":466},[460,153914,77911],{"class":900},[460,153916,2174],{"class":466},[460,153918,148841],{"class":3380},[460,153920,8296],{"class":466},[460,153922,77921],{"class":900},[460,153924,153925],{"class":900}," -10",[460,153927,2017],{"class":887},[460,153929,148860],{"class":900},[460,153931,2017],{"class":887},[460,153933,1966],{"class":466},[460,153935,153936],{"class":462,"line":494},[460,153937,821],{"class":466},[14,153939,152924],{},[451,153941,153942],{"className":141045,"code":153874,"language":141047,"meta":32,"style":32},[457,153943,153944,153950,153962,153974,154000],{"__ignoreMap":32},[460,153945,153946,153948],{"class":462,"line":463},[460,153947,148802],{"class":929},[460,153949,1348],{"class":466},[460,153951,153952,153954,153956,153958,153960],{"class":462,"line":476},[460,153953,86710],{"class":900},[460,153955,1961],{"class":466},[460,153957,2110],{"class":900},[460,153959,2017],{"class":887},[460,153961,1966],{"class":466},[460,153963,153964,153966,153968,153970,153972],{"class":462,"line":482},[460,153965,86930],{"class":900},[460,153967,1961],{"class":466},[460,153969,2110],{"class":900},[460,153971,2017],{"class":887},[460,153973,1966],{"class":466},[460,153975,153976,153978,153980,153982,153984,153986,153988,153990,153992,153994,153996,153998],{"class":462,"line":488},[460,153977,86753],{"class":900},[460,153979,1961],{"class":466},[460,153981,77911],{"class":900},[460,153983,2174],{"class":466},[460,153985,148841],{"class":3380},[460,153987,8296],{"class":466},[460,153989,77921],{"class":900},[460,153991,153925],{"class":900},[460,153993,2017],{"class":887},[460,153995,148860],{"class":900},[460,153997,2017],{"class":887},[460,153999,1966],{"class":466},[460,154001,154002],{"class":462,"line":494},[460,154003,821],{"class":466},[14,154005,154006],{},"版心里面包含 2 号盒子，mod_help 是帮助模块",[40,154008,154009,154012,154018,154024,154036],{},[43,154010,154011],{},"给 mod_help 设置 50px的左内边距和20px的上内边距，给定高度（185px）",[43,154013,154014,154015,134730],{},"里面的布局利用 自定义列表来实现（",[457,154016,154017],{},"dl > dt + dd",[43,154019,153545,154020,154023],{},[457,154021,154022],{},"dl"," 设置浮动，让其可以水平排列，给每个dl盒子设置宽度",[43,154025,153545,154026,154029,154030,34827,154032,154035],{},[457,154027,154028],{},"dt"," 设置文字大小（16px），设置下外边距（10px），让",[457,154031,154028],{},[457,154033,154034],{},"dd","之间有些距离",[43,154037,154038],{},"最后一个 dl 结构和样式不一样，需要单独设置",[14,154040,152884],{},[451,154042,154043],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},[457,154044,154045,154051,154063],{"__ignoreMap":32},[460,154046,154047,154049],{"class":462,"line":463},[460,154048,2737],{"class":470},[460,154050,1348],{"class":466},[460,154052,154053,154055,154057,154059,154061],{"class":462,"line":476},[460,154054,86612],{"class":900},[460,154056,1961],{"class":466},[460,154058,936],{"class":900},[460,154060,2030],{"class":900},[460,154062,1966],{"class":466},[460,154064,154065],{"class":462,"line":482},[460,154066,821],{"class":466},[14,154068,152924],{},[451,154070,154071],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},[457,154072,154073,154079,154091],{"__ignoreMap":32},[460,154074,154075,154077],{"class":462,"line":463},[460,154076,2737],{"class":470},[460,154078,1348],{"class":466},[460,154080,154081,154083,154085,154087,154089],{"class":462,"line":476},[460,154082,86612],{"class":900},[460,154084,1961],{"class":466},[460,154086,936],{"class":900},[460,154088,2030],{"class":900},[460,154090,1966],{"class":466},[460,154092,154093],{"class":462,"line":482},[460,154094,821],{"class":466},[14,154096,154097],{},"版心里面包含 3 号盒子，mod_copyright 是版权模块",[40,154099,154100,154109,154112,154123],{},[43,154101,154102,154103,154105,154106,154108],{},"分为上下两块，上面是 ",[457,154104,146265],{}," 友情链接，下面是 ",[457,154107,146258],{},"，给mod_copyright 大盒子设置 文字水平居中，20px的上内边距，让上面内容和下面内容之间有些间隙",[43,154110,154111],{},"把内容分别复制到相应模块中",[43,154113,153545,154114,154116,154117,154119,154120,154122],{},[457,154115,146265],{}," 设置 15px 的下外边距，给",[457,154118,146265],{}," 里面 的 ",[457,154121,2756],{}," 标签设置 左右 3px 的外边距",[43,154124,154125,154126,154128],{},"给",[457,154127,146258],{}," 设置 20px 的行高",[14,154130,152884],{},[451,154132,154133],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},[457,154134,154135,154141,154153],{"__ignoreMap":32},[460,154136,154137,154139],{"class":462,"line":463},[460,154138,2737],{"class":470},[460,154140,1348],{"class":466},[460,154142,154143,154145,154147,154149,154151],{"class":462,"line":476},[460,154144,86612],{"class":900},[460,154146,1961],{"class":466},[460,154148,936],{"class":900},[460,154150,2030],{"class":900},[460,154152,1966],{"class":466},[460,154154,154155],{"class":462,"line":482},[460,154156,821],{"class":466},[14,154158,152924],{},[451,154160,154161],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},[457,154162,154163,154169,154181],{"__ignoreMap":32},[460,154164,154165,154167],{"class":462,"line":463},[460,154166,2737],{"class":470},[460,154168,1348],{"class":466},[460,154170,154171,154173,154175,154177,154179],{"class":462,"line":476},[460,154172,86612],{"class":900},[460,154174,1961],{"class":466},[460,154176,936],{"class":900},[460,154178,2030],{"class":900},[460,154180,1966],{"class":466},[460,154182,154183],{"class":462,"line":482},[460,154184,821],{"class":466},[14,154186,154187],{},"回顾：对于每行文字的间隔采用line-height （行高）来处理",[1944,154189,154190],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":154192},[154193,154194,154195,154202],{"id":152473,"depth":476,"text":152474},{"id":152492,"depth":476,"text":152493},{"id":152519,"depth":476,"text":152520,"children":154196},[154197,154198,154199,154200,154201],{"id":152523,"depth":482,"text":152524},{"id":152536,"depth":482,"text":152537},{"id":152560,"depth":482,"text":152561},{"id":152582,"depth":482,"text":152583},{"id":152654,"depth":482,"text":152655},{"id":152780,"depth":476,"text":152781,"children":154203},[154204,154205,154206,154207,154209],{"id":152784,"depth":482,"text":152785},{"id":152791,"depth":482,"text":152792},{"id":152963,"depth":482,"text":152964},{"id":153504,"depth":482,"text":154208},"15.4.4 nav导航模块制作",{"id":153802,"depth":482,"text":153803},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch15",{"title":152465,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch15-品优购项目上篇-搭建与公共模块","dZrS8fvj_jmt1HT4kUOuOHSl-QqUov_mqMeo26p1bR8",{"id":154216,"title":154217,"body":154218,"description":16682,"extension":16683,"meta":156620,"navigation":521,"path":156621,"seo":156622,"stem":156623,"__hash__":156624},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch16-品优购项目下篇-主体与页面开发.md","16. 品优购项目下篇-主体与页面开发",{"type":7,"value":154219,"toc":156597},[154220,154223,154227,154231,154243,154246,154249,154252,154263,154265,154289,154291,154315,154320,154323,154325,154361,154363,154399,154402,154407,154410,154413,154416,154446,154453,154456,154466,154468,154502,154505,154539,154545,154562,154564,154600,154602,154638,154643,154668,154670,154696,154698,154722,154729,154732,154796,154798,154840,154842,154882,154889,154894,154896,154926,154928,154958,154962,154965,154972,154984,154986,155012,155014,155038,155041,155043,155067,155073,155083,155085,155115,155117,155147,155154,155195,155197,155233,155235,155271,155275,155278,155281,155284,155290,155295,155298,155321,155324,155348,155351,155375,155380,155383,155386,155389,155392,155395,155469,155471,155501,155503,155533,155536,155539,155571,155575,155579,155593,155602,155605,155610,155612,155706,155708,155802,155825,155827,155851,155853,155877,155884,155887,155897,155899,155923,155928,155936,155938,155968,155973,156013,156015,156041,156043,156069,156073,156076,156081,156084,156088,156096,156103,156111,156113,156143,156145,156175,156183,156186,156189,156191,156221,156223,156253,156256,156261,156263,156287,156289,156313,156316,156401,156403,156427,156429,156453,156457,156459,156483,156485,156519,156523,156537,156540,156545,156548,156553,156556,156586,156594],[10,154221,154217],{"id":154222},"_16-品优购项目下篇-主体与页面开发",[18,154224,154226],{"id":154225},"_161-项目主体模块制作","16.1 项目主体模块制作",[23,154228,154230],{"id":154229},"_1611-首页制作","16.1.1 首页制作",[14,154232,154233,154235,154236,154238,154239,154242],{},[3944,154234,116551],{}," 主体模块是 ",[3944,154237,5211],{}," 里面专有的，注意需要新的样式文件 ",[3944,154240,154241],{},"index.css，"," 就不要写在common.css中了",[30,154244],{"style":140901,"src":154245},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-159.png",[30,154247],{"style":140901,"src":154248},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-160.png",[14,154250,154251],{},"画红色线处才是main主体部分，左边那部分是与公共部分带有联系的，所以归于公共部分",[40,154253,154254,154257,154260],{},[43,154255,154256],{},"main 盒子宽度为 980 像素，高度是455像素，位置距离左边 220px (margin-left ) ，这样就会被公共部分给挡住了，给高度就不用清除浮动",[43,154258,154259],{},"main 里面包含左侧盒子，宽度为 721像素，左浮动，focus 焦点图模块",[43,154261,154262],{},"main 里面包含右侧盒子，宽度为 250像素，右浮动，newsflash 新闻快报模块",[14,154264,152884],{},[451,154266,154267],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,154268,154269,154275,154285],{"__ignoreMap":32},[460,154270,154271,154273],{"class":462,"line":463},[460,154272,144893],{"class":929},[460,154274,1348],{"class":466},[460,154276,154277,154279,154281,154283],{"class":462,"line":476},[460,154278,145525],{"class":900},[460,154280,1961],{"class":466},[460,154282,40149],{"class":900},[460,154284,1966],{"class":466},[460,154286,154287],{"class":462,"line":482},[460,154288,821],{"class":466},[14,154290,152924],{},[451,154292,154293],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,154294,154295,154301,154311],{"__ignoreMap":32},[460,154296,154297,154299],{"class":462,"line":463},[460,154298,144893],{"class":929},[460,154300,1348],{"class":466},[460,154302,154303,154305,154307,154309],{"class":462,"line":476},[460,154304,145525],{"class":900},[460,154306,1961],{"class":466},[460,154308,40149],{"class":900},[460,154310,1966],{"class":466},[460,154312,154313],{"class":462,"line":482},[460,154314,821],{"class":466},[103,154316,154317],{},[43,154318,154319],{},"左侧focus模块制作",[30,154321],{"style":140901,"src":154322},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-161.png",[14,154324,152884],{},[451,154326,154327],{"className":141045,"code":142368,"language":141047,"meta":32,"style":32},[457,154328,154329,154337,154347,154357],{"__ignoreMap":32},[460,154330,154331,154333,154335],{"class":462,"line":463},[460,154332,70068],{"class":470},[460,154334,2665],{"class":929},[460,154336,1348],{"class":466},[460,154338,154339,154341,154343,154345],{"class":462,"line":476},[460,154340,142383],{"class":900},[460,154342,1961],{"class":466},[460,154344,71116],{"class":900},[460,154346,1966],{"class":466},[460,154348,154349,154351,154353,154355],{"class":462,"line":482},[460,154350,86940],{"class":900},[460,154352,1961],{"class":466},[460,154354,2629],{"class":900},[460,154356,1966],{"class":466},[460,154358,154359],{"class":462,"line":488},[460,154360,821],{"class":466},[14,154362,152924],{},[451,154364,154365],{"className":141045,"code":142368,"language":141047,"meta":32,"style":32},[457,154366,154367,154375,154385,154395],{"__ignoreMap":32},[460,154368,154369,154371,154373],{"class":462,"line":463},[460,154370,70068],{"class":470},[460,154372,2665],{"class":929},[460,154374,1348],{"class":466},[460,154376,154377,154379,154381,154383],{"class":462,"line":476},[460,154378,142383],{"class":900},[460,154380,1961],{"class":466},[460,154382,71116],{"class":900},[460,154384,1966],{"class":466},[460,154386,154387,154389,154391,154393],{"class":462,"line":482},[460,154388,86940],{"class":900},[460,154390,1961],{"class":466},[460,154392,2629],{"class":900},[460,154394,1966],{"class":466},[460,154396,154397],{"class":462,"line":488},[460,154398,821],{"class":466},[14,154400,154401],{},"对于经常换的图片要放在ul中li内，用img来表示，就不要拿它来当背景整了",[103,154403,154404],{"start":476},[43,154405,154406],{},"右侧newsflash模块制作",[30,154408],{"style":140901,"src":154409},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-162.png",[14,154411,154412],{},"右侧的模块 分为上中下三个盒子",[14,154414,154415],{},"结构代码：",[451,154417,154418],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,154419,154420],{"__ignoreMap":32},[460,154421,154422,154424,154426,154428,154430,154432,154434,154436,154438,154440,154442,154444],{"class":462,"line":463},[460,154423,781],{"class":466},[460,154425,30],{"class":470},[460,154427,12081],{"class":929},[460,154429,894],{"class":466},[460,154431,148562],{"class":1353},[460,154433,16224],{"class":929},[460,154435,894],{"class":466},[460,154437,148569],{"class":1353},[460,154439,148572],{"class":929},[460,154441,894],{"class":466},[460,154443,148577],{"class":1353},[460,154445,473],{"class":466},[14,154447,154448,154449,154452],{},"1 号盒子为 ",[457,154450,154451],{},"news"," 新闻模块 高度为 165px",[30,154454],{"style":140901,"src":154455},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-163.png",[14,154457,154458,154459,154462,154463],{},"分为上下两个结构，但是两个模块都用 div，上面是 ",[457,154460,154461],{},"news-hd","，下面是 ",[457,154464,154465],{},"news-bd",[14,154467,154415],{},[451,154469,154470],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,154471,154472,154476,154490,154494],{"__ignoreMap":32},[460,154473,154474],{"class":462,"line":463},[460,154475,145156],{"class":942},[460,154477,154478,154480,154482,154484,154486,154488],{"class":462,"line":476},[460,154479,781],{"class":466},[460,154481,2737],{"class":470},[460,154483,2740],{"class":929},[460,154485,894],{"class":466},[460,154487,145169],{"class":1353},[460,154489,473],{"class":466},[460,154491,154492],{"class":462,"line":482},[460,154493,145176],{"class":466},[460,154495,154496,154498,154500],{"class":462,"line":488},[460,154497,1776],{"class":466},[460,154499,2737],{"class":470},[460,154501,473],{"class":466},[14,154503,154504],{},"样式代码：",[451,154506,154507],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,154508,154509,154513,154527,154531],{"__ignoreMap":32},[460,154510,154511],{"class":462,"line":463},[460,154512,145156],{"class":942},[460,154514,154515,154517,154519,154521,154523,154525],{"class":462,"line":476},[460,154516,781],{"class":466},[460,154518,2737],{"class":470},[460,154520,2740],{"class":929},[460,154522,894],{"class":466},[460,154524,145169],{"class":1353},[460,154526,473],{"class":466},[460,154528,154529],{"class":462,"line":482},[460,154530,145176],{"class":466},[460,154532,154533,154535,154537],{"class":462,"line":488},[460,154534,1776],{"class":466},[460,154536,2737],{"class":470},[460,154538,473],{"class":466},[14,154540,154541,154542,154544],{},"上面是",[457,154543,154461],{},"，设置高度是 33px，设置下边框",[40,154546,154547,154553],{},[43,154548,154549,154550,154552],{},"里面放一个",[457,154551,4287],{}," 标题",[43,154554,154555,154556,154558,154559,154561],{},"放一个a",[457,154557,117186],{},"，内容是 更多，然后让 ",[457,154560,2756],{}," 进行右浮动，三角用伪元素设置字体图标就好",[14,154563,154415],{},[451,154565,154566],{"className":141045,"code":152887,"language":141047,"meta":32,"style":32},[457,154567,154568,154576,154586,154596],{"__ignoreMap":32},[460,154569,154570,154572,154574],{"class":462,"line":463},[460,154571,2737],{"class":470},[460,154573,152046],{"class":929},[460,154575,1348],{"class":466},[460,154577,154578,154580,154582,154584],{"class":462,"line":476},[460,154579,152053],{"class":900},[460,154581,1961],{"class":466},[460,154583,6606],{"class":1353},[460,154585,1966],{"class":466},[460,154587,154588,154590,154592,154594],{"class":462,"line":482},[460,154589,142661],{"class":900},[460,154591,1961],{"class":466},[460,154593,7350],{"class":900},[460,154595,1966],{"class":466},[460,154597,154598],{"class":462,"line":488},[460,154599,821],{"class":466},[14,154601,154504],{},[451,154603,154604],{"className":141045,"code":152887,"language":141047,"meta":32,"style":32},[457,154605,154606,154614,154624,154634],{"__ignoreMap":32},[460,154607,154608,154610,154612],{"class":462,"line":463},[460,154609,2737],{"class":470},[460,154611,152046],{"class":929},[460,154613,1348],{"class":466},[460,154615,154616,154618,154620,154622],{"class":462,"line":476},[460,154617,152053],{"class":900},[460,154619,1961],{"class":466},[460,154621,6606],{"class":1353},[460,154623,1966],{"class":466},[460,154625,154626,154628,154630,154632],{"class":462,"line":482},[460,154627,142661],{"class":900},[460,154629,1961],{"class":466},[460,154631,7350],{"class":900},[460,154633,1966],{"class":466},[460,154635,154636],{"class":462,"line":488},[460,154637,821],{"class":466},[14,154639,154640,154641],{},"下面是",[457,154642,154465],{},[40,154644,154645,154653],{},[43,154646,154647,154648,115511,154650,154652],{},"里面包含 ",[457,154649,40],{},[457,154651,43],{}," 还有链接",[43,154654,154125,154655,154657,154658,154660,154661,154664,154665],{},[457,154656,43],{},"设置高度，24px，设置单行文字溢出省略： 1. 设置 ",[457,154659,145711],{}," 2.设置 ",[457,154662,154663],{},"white-space: nowrap;"," 3. 设置 ",[457,154666,154667],{},"text-overflow: ellipsis;",[14,154669,154415],{},[451,154671,154673],{"className":141045,"code":154672,"language":141047,"meta":32,"style":32},"div {\n  overflow: hidden;\n}\n",[457,154674,154675,154681,154692],{"__ignoreMap":32},[460,154676,154677,154679],{"class":462,"line":463},[460,154678,2737],{"class":470},[460,154680,1348],{"class":466},[460,154682,154683,154686,154688,154690],{"class":462,"line":476},[460,154684,154685],{"class":900},"  overflow",[460,154687,1961],{"class":466},[460,154689,77900],{"class":900},[460,154691,1966],{"class":466},[460,154693,154694],{"class":462,"line":482},[460,154695,821],{"class":466},[14,154697,154504],{},[451,154699,154700],{"className":141045,"code":154672,"language":141047,"meta":32,"style":32},[457,154701,154702,154708,154718],{"__ignoreMap":32},[460,154703,154704,154706],{"class":462,"line":463},[460,154705,2737],{"class":470},[460,154707,1348],{"class":466},[460,154709,154710,154712,154714,154716],{"class":462,"line":476},[460,154711,154685],{"class":900},[460,154713,1961],{"class":466},[460,154715,77900],{"class":900},[460,154717,1966],{"class":466},[460,154719,154720],{"class":462,"line":482},[460,154721,821],{"class":466},[14,154723,154724,154725,154728],{},"2 号盒子为 ",[457,154726,154727],{},"lifeservice"," 生活服务模块 高度为 209px",[30,154730],{"style":140901,"src":154731},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-164.png",[40,154733,154734,154737,154747,154771,154782],{},[43,154735,154736],{},"设置边框（左右下边框）",[43,154738,154739,154740,154743,154744,154746],{},"里面的内容 是 ",[457,154741,154742],{},"ul > 12*li","，给",[457,154745,43],{},"设置宽 63px，高71px，设置 右边和下边的边框，设置浮动",[43,154748,154749,154750],{},"这样设置后，第四个li会装不开，掉下来，解决办法如下",[40,154751,154752,154757,154766],{},[43,154753,154754,154756],{},[457,154755,154727],{}," 盒子宽度为 250 ，但是装不开里面的 4 个小 li",[43,154758,154759,154760,154762,154763,154765],{},"可以让 ",[457,154761,154727],{}," 里面的 ",[457,154764,40],{}," 宽度为 252，就可以装的下 4 个 小 li",[43,154767,154768,154770],{},[457,154769,154727],{}," 盒子 overflow 隐藏多余的部分就可以了",[43,154772,130960,154773,154775,154776,154778,154779,154781],{},[457,154774,43],{}," 里面放一个 ",[457,154777,17174],{},"（里面放图标），下面的文本用 ",[457,154780,14],{}," 标签包裹",[43,154783,153545,154784,154786,154787,154789,154790,153579,154792,154795],{},[457,154785,17174],{}," 设置 24px宽和28px的高（注意 ",[457,154788,17174],{}," 是行内元素， 转成行内块），给 ",[457,154791,43],{},[457,154793,154794],{},"text-align:center"," 让里面内容居中显示",[14,154797,154415],{},[451,154799,154801],{"className":141045,"code":154800,"language":141047,"meta":32,"style":32},"span, a, em, strong {\n  \u002F* 行内元素：不独占一行，不可设宽高 *\u002F\n  display: inline;\n}\n",[457,154802,154803,154821,154826,154836],{"__ignoreMap":32},[460,154804,154805,154807,154809,154811,154813,154815,154817,154819],{"class":462,"line":463},[460,154806,460],{"class":470},[460,154808,904],{"class":466},[460,154810,2756],{"class":470},[460,154812,904],{"class":466},[460,154814,39966],{"class":470},[460,154816,904],{"class":466},[460,154818,3944],{"class":470},[460,154820,1348],{"class":466},[460,154822,154823],{"class":462,"line":476},[460,154824,154825],{"class":942},"  \u002F* 行内元素：不独占一行，不可设宽高 *\u002F\n",[460,154827,154828,154830,154832,154834],{"class":462,"line":482},[460,154829,142661],{"class":900},[460,154831,1961],{"class":466},[460,154833,142723],{"class":900},[460,154835,1966],{"class":466},[460,154837,154838],{"class":462,"line":488},[460,154839,821],{"class":466},[14,154841,154504],{},[451,154843,154844],{"className":141045,"code":154800,"language":141047,"meta":32,"style":32},[457,154845,154846,154864,154868,154878],{"__ignoreMap":32},[460,154847,154848,154850,154852,154854,154856,154858,154860,154862],{"class":462,"line":463},[460,154849,460],{"class":470},[460,154851,904],{"class":466},[460,154853,2756],{"class":470},[460,154855,904],{"class":466},[460,154857,39966],{"class":470},[460,154859,904],{"class":466},[460,154861,3944],{"class":470},[460,154863,1348],{"class":466},[460,154865,154866],{"class":462,"line":476},[460,154867,154825],{"class":942},[460,154869,154870,154872,154874,154876],{"class":462,"line":482},[460,154871,142661],{"class":900},[460,154873,1961],{"class":466},[460,154875,142723],{"class":900},[460,154877,1966],{"class":466},[460,154879,154880],{"class":462,"line":488},[460,154881,821],{"class":466},[14,154883,154884,154885,154888],{},"3 号盒子为 ",[457,154886,154887],{},"bargain"," 特价商品",[40,154890,154891],{},[43,154892,154893],{},"这个比较简单，直接插入一张图片即可",[14,154895,154415],{},[451,154897,154898],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,154899,154900],{"__ignoreMap":32},[460,154901,154902,154904,154906,154908,154910,154912,154914,154916,154918,154920,154922,154924],{"class":462,"line":463},[460,154903,781],{"class":466},[460,154905,30],{"class":470},[460,154907,12081],{"class":929},[460,154909,894],{"class":466},[460,154911,148562],{"class":1353},[460,154913,16224],{"class":929},[460,154915,894],{"class":466},[460,154917,148569],{"class":1353},[460,154919,148572],{"class":929},[460,154921,894],{"class":466},[460,154923,148577],{"class":1353},[460,154925,473],{"class":466},[14,154927,154504],{},[451,154929,154930],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,154931,154932],{"__ignoreMap":32},[460,154933,154934,154936,154938,154940,154942,154944,154946,154948,154950,154952,154954,154956],{"class":462,"line":463},[460,154935,781],{"class":466},[460,154937,30],{"class":470},[460,154939,12081],{"class":929},[460,154941,894],{"class":466},[460,154943,148562],{"class":1353},[460,154945,16224],{"class":929},[460,154947,894],{"class":466},[460,154949,148569],{"class":1353},[460,154951,148572],{"class":929},[460,154953,894],{"class":466},[460,154955,148577],{"class":1353},[460,154957,473],{"class":466},[23,154959,154961],{"id":154960},"_1612-推荐模块制作","16.1.2 推荐模块制作",[30,154963],{"style":140901,"src":154964},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-165.png",[14,154966,154967,154968,154971],{},"大盒子 ",[457,154969,154970],{},"recom"," 推荐模块 recommend",[40,154973,154974],{},[43,154975,154976,154977,154979,154980,154983],{},"给这个 ",[457,154978,154970],{}," 大盒子 设置版心，设置 163px的高，背景颜色（",[457,154981,154982],{},"#ebebeb","），设置距离上边 12px",[14,154985,154415],{},[451,154987,154989],{"className":141045,"code":154988,"language":141047,"meta":32,"style":32},"div {\n  background-color: #f0f0f0;\n}\n",[457,154990,154991,154997,155008],{"__ignoreMap":32},[460,154992,154993,154995],{"class":462,"line":463},[460,154994,2737],{"class":470},[460,154996,1348],{"class":466},[460,154998,154999,155001,155003,155006],{"class":462,"line":476},[460,155000,87020],{"class":900},[460,155002,1961],{"class":466},[460,155004,155005],{"class":900},"#f0f0f0",[460,155007,1966],{"class":466},[460,155009,155010],{"class":462,"line":482},[460,155011,821],{"class":466},[14,155013,154504],{},[451,155015,155016],{"className":141045,"code":154988,"language":141047,"meta":32,"style":32},[457,155017,155018,155024,155034],{"__ignoreMap":32},[460,155019,155020,155022],{"class":462,"line":463},[460,155021,2737],{"class":470},[460,155023,1348],{"class":466},[460,155025,155026,155028,155030,155032],{"class":462,"line":476},[460,155027,87020],{"class":900},[460,155029,1961],{"class":466},[460,155031,155005],{"class":900},[460,155033,1966],{"class":466},[460,155035,155036],{"class":462,"line":482},[460,155037,821],{"class":466},[14,155039,155040],{},"里面包含 2 个盒子， 浮动即可",[14,155042,154415],{},[451,155044,155045],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,155046,155047,155053,155063],{"__ignoreMap":32},[460,155048,155049,155051],{"class":462,"line":463},[460,155050,144893],{"class":929},[460,155052,1348],{"class":466},[460,155054,155055,155057,155059,155061],{"class":462,"line":476},[460,155056,145525],{"class":900},[460,155058,1961],{"class":466},[460,155060,40149],{"class":900},[460,155062,1966],{"class":466},[460,155064,155065],{"class":462,"line":482},[460,155066,821],{"class":466},[14,155068,155069,155070],{},"1 号盒子 ",[457,155071,155072],{},"recom_hd",[40,155074,155075,155078],{},[43,155076,155077],{},"设置宽度205px，高度163px",[43,155079,154549,155080,155082],{},[457,155081,30],{},"标签，插入图片即可",[14,155084,154415],{},[451,155086,155087],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,155088,155089],{"__ignoreMap":32},[460,155090,155091,155093,155095,155097,155099,155101,155103,155105,155107,155109,155111,155113],{"class":462,"line":463},[460,155092,781],{"class":466},[460,155094,30],{"class":470},[460,155096,12081],{"class":929},[460,155098,894],{"class":466},[460,155100,148562],{"class":1353},[460,155102,16224],{"class":929},[460,155104,894],{"class":466},[460,155106,148569],{"class":1353},[460,155108,148572],{"class":929},[460,155110,894],{"class":466},[460,155112,148577],{"class":1353},[460,155114,473],{"class":466},[14,155116,154504],{},[451,155118,155119],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,155120,155121],{"__ignoreMap":32},[460,155122,155123,155125,155127,155129,155131,155133,155135,155137,155139,155141,155143,155145],{"class":462,"line":463},[460,155124,781],{"class":466},[460,155126,30],{"class":470},[460,155128,12081],{"class":929},[460,155130,894],{"class":466},[460,155132,148562],{"class":1353},[460,155134,16224],{"class":929},[460,155136,894],{"class":466},[460,155138,148569],{"class":1353},[460,155140,148572],{"class":929},[460,155142,894],{"class":466},[460,155144,148577],{"class":1353},[460,155146,473],{"class":466},[14,155148,155149,155150,155153],{},"2 号盒子 ",[457,155151,155152],{},"recom_bd"," ，注意里面的小竖线",[40,155155,155156,155167,155170,155175,155180],{},[43,155157,155158,155159,155161,155162,155164,155165],{},"右侧结构里面放 ",[457,155160,40],{}," 包含 4个 ",[457,155163,43],{},"，每个li里面包含一个",[457,155166,30],{},[43,155168,155169],{},"直接利用切片工具把里面的内容当成一张图片",[43,155171,153545,155172,155174],{},[457,155173,43],{}," 设置浮动",[43,155176,153545,155177,155179],{},[457,155178,30],{}," 设置宽高，宽度 248px，高度 163px",[43,155181,155182,155183,154743,155186,155188,155189,155191,155192],{},"小竖线利用伪元素来实现，给每一个li设置一个 after 伪元素，然后给这个伪元素设置绝对定位，设置",[457,155184,155185],{},"top 10px",[457,155187,43],{},"设置相对定位（注意，最后一个",[457,155190,43],{},"不用设置伪元素），可以利用 ",[457,155193,155194],{},"nth-child(-n+3){...}",[14,155196,154415],{},[451,155198,155199],{"className":141045,"code":152887,"language":141047,"meta":32,"style":32},[457,155200,155201,155209,155219,155229],{"__ignoreMap":32},[460,155202,155203,155205,155207],{"class":462,"line":463},[460,155204,2737],{"class":470},[460,155206,152046],{"class":929},[460,155208,1348],{"class":466},[460,155210,155211,155213,155215,155217],{"class":462,"line":476},[460,155212,152053],{"class":900},[460,155214,1961],{"class":466},[460,155216,6606],{"class":1353},[460,155218,1966],{"class":466},[460,155220,155221,155223,155225,155227],{"class":462,"line":482},[460,155222,142661],{"class":900},[460,155224,1961],{"class":466},[460,155226,7350],{"class":900},[460,155228,1966],{"class":466},[460,155230,155231],{"class":462,"line":488},[460,155232,821],{"class":466},[14,155234,154504],{},[451,155236,155237],{"className":141045,"code":152887,"language":141047,"meta":32,"style":32},[457,155238,155239,155247,155257,155267],{"__ignoreMap":32},[460,155240,155241,155243,155245],{"class":462,"line":463},[460,155242,2737],{"class":470},[460,155244,152046],{"class":929},[460,155246,1348],{"class":466},[460,155248,155249,155251,155253,155255],{"class":462,"line":476},[460,155250,152053],{"class":900},[460,155252,1961],{"class":466},[460,155254,6606],{"class":1353},[460,155256,1966],{"class":466},[460,155258,155259,155261,155263,155265],{"class":462,"line":482},[460,155260,142661],{"class":900},[460,155262,1961],{"class":466},[460,155264,7350],{"class":900},[460,155266,1966],{"class":466},[460,155268,155269],{"class":462,"line":488},[460,155270,821],{"class":466},[23,155272,155274],{"id":155273},"_1613-家用电器模块制作","16.1.3 家用电器模块制作",[30,155276],{"style":140901,"src":155277},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-166.png",[14,155279,155280],{},"注意这个 floor ，不要给高度，内容有多少，算多少",[14,155282,155283],{},"第一楼是家用电器模块： 里面包含两个盒子",[14,155285,155286,155289],{},[457,155287,155288],{},"box_hd"," 制作",[14,155291,155069,155292,155294],{},[457,155293,155288],{},"，给一个高度，有个下边框，里面分为左右 2 个盒子",[30,155296],{"style":140901,"src":155297},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-167.png",[40,155299,155300,155305,155310,155313],{},[43,155301,155302,155304],{},[457,155303,155288],{}," 给 30px 的高度，2个像素的下边框",[43,155306,155307,155308],{},"里面放一个左侧 h3 的盒子，右侧一个div盒子，div盒子里面放 ",[457,155309,153556],{},[43,155311,155312],{},"左侧盒左浮动，右侧盒子右浮动",[43,155314,155315,155317,155318,155320],{},[457,155316,2756],{},"标签之间的距离用左右的",[457,155319,47290],{},"撑开即可",[14,155322,155323],{},"结构代码",[451,155325,155326],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,155327,155328,155334,155344],{"__ignoreMap":32},[460,155329,155330,155332],{"class":462,"line":463},[460,155331,144893],{"class":929},[460,155333,1348],{"class":466},[460,155335,155336,155338,155340,155342],{"class":462,"line":476},[460,155337,145525],{"class":900},[460,155339,1961],{"class":466},[460,155341,40149],{"class":900},[460,155343,1966],{"class":466},[460,155345,155346],{"class":462,"line":482},[460,155347,821],{"class":466},[14,155349,155350],{},"样式代码",[451,155352,155353],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,155354,155355,155361,155371],{"__ignoreMap":32},[460,155356,155357,155359],{"class":462,"line":463},[460,155358,144893],{"class":929},[460,155360,1348],{"class":466},[460,155362,155363,155365,155367,155369],{"class":462,"line":476},[460,155364,145525],{"class":900},[460,155366,1961],{"class":466},[460,155368,40149],{"class":900},[460,155370,1966],{"class":466},[460,155372,155373],{"class":462,"line":482},[460,155374,821],{"class":466},[14,155376,155377,155289],{},[457,155378,155379],{},"box_bd",[14,155381,155382],{},"2 号盒子 box_bd，不要给高度",[30,155384],{"style":140901,"src":155385},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-168.png",[14,155387,155388],{},"这里边塞的都是现有的图片，给图片加上a超链接就可以实现跳转了，所以这个模块看似复杂，实际一点也不复杂，塞现有图片即可",[14,155390,155391],{},"还有这边为了简化css，对内部的五个盒子使用得1类名不用子代选择器，就仅仅类选择器就可以，这样只需要复制做好的家电模块，改一下名改一下图就又增加了新的模块",[14,155393,155394],{},"比如ul下li中有a，对a使用了类选择器.aa,在css中写的时候就不需要写成ul li .aa，直接写.aa就ok了",[40,155396,155397,155409,155425],{},[43,155398,155399,155401,155402,155405,155406,155408],{},[457,155400,155379],{}," 属于是tab栏的内容区域，所以在这个里面先嵌套一个盒子 ",[457,155403,155404],{},"tab_content","，在",[457,155407,155404],{}," 里面包裹tab选项卡对应的内容",[43,155410,155411,155412,155415,155416,155418,155419,155421,155422,155424],{},"内容被一个大盒子包裹（",[457,155413,155414],{},"tab_list_item","），里面是 ",[457,155417,40],{}," 包裹 5个 ",[457,155420,43],{},"，每个",[457,155423,43],{},"设置对应的宽度，然后设置浮动",[43,155426,155427,155428,155430,155431,155433,155434],{},"而这5个",[457,155429,43],{},"的宽度是不一致的，在这里我们的做法是 先把宽度的样式列出来，然后给对应的",[457,155432,43],{},"设置",[40,155435,155436,155454,155457],{},[43,155437,155438,155439,155441,155442,155444,155445,155447,155448,155450,155451,155453],{},"第一个小 ",[457,155440,43],{}," 分为上下结构，上面是 ",[457,155443,40],{}," 包裹 ",[457,155446,43],{}," ，",[457,155449,43],{},"里面包裹 ",[457,155452,2756],{},"，下面插入一张图片",[43,155455,155456],{},"上面的li设置宽高，设置浮动，这样就排列下来了",[43,155458,155459,155460,155462,155463,155465,155466,155468],{},"后面的小 ",[457,155461,43],{}," 里面先放一个",[457,155464,2756],{},"标签，然后在",[457,155467,2756],{},"标签里面插入图片即可",[14,155470,155323],{},[451,155472,155473],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,155474,155475],{"__ignoreMap":32},[460,155476,155477,155479,155481,155483,155485,155487,155489,155491,155493,155495,155497,155499],{"class":462,"line":463},[460,155478,781],{"class":466},[460,155480,30],{"class":470},[460,155482,12081],{"class":929},[460,155484,894],{"class":466},[460,155486,148562],{"class":1353},[460,155488,16224],{"class":929},[460,155490,894],{"class":466},[460,155492,148569],{"class":1353},[460,155494,148572],{"class":929},[460,155496,894],{"class":466},[460,155498,148577],{"class":1353},[460,155500,473],{"class":466},[14,155502,155350],{},[451,155504,155505],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,155506,155507],{"__ignoreMap":32},[460,155508,155509,155511,155513,155515,155517,155519,155521,155523,155525,155527,155529,155531],{"class":462,"line":463},[460,155510,781],{"class":466},[460,155512,30],{"class":470},[460,155514,12081],{"class":929},[460,155516,894],{"class":466},[460,155518,148562],{"class":1353},[460,155520,16224],{"class":929},[460,155522,894],{"class":466},[460,155524,148569],{"class":1353},[460,155526,148572],{"class":929},[460,155528,894],{"class":466},[460,155530,148577],{"class":1353},[460,155532,473],{"class":466},[14,155534,155535],{},"tab栏切换需求！！！！！！介绍：",[30,155537],{"style":140901,"src":155538},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-169.png",[40,155540,155541,155549,155555,155558],{},[43,155542,155543,155546,155547],{},[457,155544,155545],{},"tab","栏的布局是 ",[457,155548,153556],{},[43,155550,155551,155552,155554],{},"有多少个",[457,155553,155545],{},"选项卡，那么对应就有多少个内容",[43,155556,155557],{},"但是每一次只会显示一个内容块，其他内容进行的隐藏",[43,155559,155560,155561,155564,155565,155567,155568,155570],{},"等后面我们学习了",[457,155562,155563],{},"js","之后，我们就会配合",[457,155566,155563],{},"来实现，",[457,155569,155545],{},"栏的切换",[18,155572,155574],{"id":155573},"_162-列表制作","16.2 列表制作",[23,155576,155578],{"id":155577},"_1621-准备工作","16.2.1 准备工作",[40,155580,155581,155584,155587,155590],{},[43,155582,155583],{},"列表页面是新的页面，我们需要新建页面文件 list.html",[43,155585,155586],{},"因为列表页的头部和底部基本一致，所以我们需要把首页中的头部和底部的结构复制过来",[43,155588,155589],{},"头部和底部的样式也需要，因此 list.html 中还需要引入 common.css",[43,155591,155592],{},"需要新的 list.css 样式文件，这是列表页专门的样式文件",[23,155594,155596,155597,115511,155599,155601],{"id":155595},"_1622-列表页-header-和-nav-修改","16.2.2 列表页 ",[457,155598,146050],{},[457,155600,69960],{}," 修改",[30,155603],{"style":140901,"src":155604},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-170.png",[40,155606,155607],{},[43,155608,155609],{},"秒杀盒子 sk（ second kill ） 定位即可",[14,155611,154415],{},[451,155613,155614],{"className":141045,"code":146477,"language":141047,"meta":32,"style":32},[457,155615,155616,155620,155634,155638,155652,155656,155670,155674,155688,155692],{"__ignoreMap":32},[460,155617,155618],{"class":462,"line":463},[460,155619,146484],{"class":942},[460,155621,155622,155624,155626,155628,155630,155632],{"class":462,"line":476},[460,155623,146489],{"class":929},[460,155625,3437],{"class":466},[460,155627,143405],{"class":900},[460,155629,1961],{"class":466},[460,155631,146498],{"class":900},[460,155633,143975],{"class":466},[460,155635,155636],{"class":462,"line":482},[460,155637,146505],{"class":942},[460,155639,155640,155642,155644,155646,155648,155650],{"class":462,"line":488},[460,155641,146510],{"class":929},[460,155643,3437],{"class":466},[460,155645,143405],{"class":900},[460,155647,1961],{"class":466},[460,155649,10138],{"class":900},[460,155651,143975],{"class":466},[460,155653,155654],{"class":462,"line":494},[460,155655,146525],{"class":942},[460,155657,155658,155660,155662,155664,155666,155668],{"class":462,"line":500},[460,155659,146530],{"class":929},[460,155661,3437],{"class":466},[460,155663,143405],{"class":900},[460,155665,1961],{"class":466},[460,155667,10202],{"class":900},[460,155669,143975],{"class":466},[460,155671,155672],{"class":462,"line":506},[460,155673,146545],{"class":942},[460,155675,155676,155678,155680,155682,155684,155686],{"class":462,"line":512},[460,155677,146550],{"class":929},[460,155679,3437],{"class":466},[460,155681,143405],{"class":900},[460,155683,1961],{"class":466},[460,155685,10009],{"class":900},[460,155687,143975],{"class":466},[460,155689,155690],{"class":462,"line":518},[460,155691,146565],{"class":942},[460,155693,155694,155696,155698,155700,155702,155704],{"class":462,"line":525},[460,155695,146570],{"class":929},[460,155697,3437],{"class":466},[460,155699,143405],{"class":900},[460,155701,1961],{"class":466},[460,155703,146579],{"class":900},[460,155705,143975],{"class":466},[14,155707,154504],{},[451,155709,155710],{"className":141045,"code":146477,"language":141047,"meta":32,"style":32},[457,155711,155712,155716,155730,155734,155748,155752,155766,155770,155784,155788],{"__ignoreMap":32},[460,155713,155714],{"class":462,"line":463},[460,155715,146484],{"class":942},[460,155717,155718,155720,155722,155724,155726,155728],{"class":462,"line":476},[460,155719,146489],{"class":929},[460,155721,3437],{"class":466},[460,155723,143405],{"class":900},[460,155725,1961],{"class":466},[460,155727,146498],{"class":900},[460,155729,143975],{"class":466},[460,155731,155732],{"class":462,"line":482},[460,155733,146505],{"class":942},[460,155735,155736,155738,155740,155742,155744,155746],{"class":462,"line":488},[460,155737,146510],{"class":929},[460,155739,3437],{"class":466},[460,155741,143405],{"class":900},[460,155743,1961],{"class":466},[460,155745,10138],{"class":900},[460,155747,143975],{"class":466},[460,155749,155750],{"class":462,"line":494},[460,155751,146525],{"class":942},[460,155753,155754,155756,155758,155760,155762,155764],{"class":462,"line":500},[460,155755,146530],{"class":929},[460,155757,3437],{"class":466},[460,155759,143405],{"class":900},[460,155761,1961],{"class":466},[460,155763,10202],{"class":900},[460,155765,143975],{"class":466},[460,155767,155768],{"class":462,"line":506},[460,155769,146545],{"class":942},[460,155771,155772,155774,155776,155778,155780,155782],{"class":462,"line":512},[460,155773,146550],{"class":929},[460,155775,3437],{"class":466},[460,155777,143405],{"class":900},[460,155779,1961],{"class":466},[460,155781,10009],{"class":900},[460,155783,143975],{"class":466},[460,155785,155786],{"class":462,"line":518},[460,155787,146565],{"class":942},[460,155789,155790,155792,155794,155796,155798,155800],{"class":462,"line":525},[460,155791,146570],{"class":929},[460,155793,3437],{"class":466},[460,155795,143405],{"class":900},[460,155797,1961],{"class":466},[460,155799,146579],{"class":900},[460,155801,143975],{"class":466},[40,155803,155804,155815],{},[43,155805,155806,155807,155810,155811,115511,155813],{},"1 号盒子左侧浮动 ",[457,155808,155809],{},"sk_list"," 里面包含 ",[457,155812,40],{},[457,155814,43],{},[43,155816,155817,155818,155810,155821,115511,155823],{},"2 号盒子左侧浮动 ",[457,155819,155820],{},"sk_con",[457,155822,40],{},[457,155824,43],{},[14,155826,154415],{},[451,155828,155829],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,155830,155831,155837,155847],{"__ignoreMap":32},[460,155832,155833,155835],{"class":462,"line":463},[460,155834,144893],{"class":929},[460,155836,1348],{"class":466},[460,155838,155839,155841,155843,155845],{"class":462,"line":476},[460,155840,145525],{"class":900},[460,155842,1961],{"class":466},[460,155844,40149],{"class":900},[460,155846,1966],{"class":466},[460,155848,155849],{"class":462,"line":482},[460,155850,821],{"class":466},[14,155852,154504],{},[451,155854,155855],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,155856,155857,155863,155873],{"__ignoreMap":32},[460,155858,155859,155861],{"class":462,"line":463},[460,155860,144893],{"class":929},[460,155862,1348],{"class":466},[460,155864,155865,155867,155869,155871],{"class":462,"line":476},[460,155866,145525],{"class":900},[460,155868,1961],{"class":466},[460,155870,40149],{"class":900},[460,155872,1966],{"class":466},[460,155874,155875],{"class":462,"line":482},[460,155876,821],{"class":466},[23,155878,155880,155881],{"id":155879},"_1623-列表页主体-sk_container","16.2.3 列表页主体 ",[457,155882,155883],{},"sk_container",[30,155885],{"style":140901,"src":155886},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-171.png",[40,155888,155889,155894],{},[43,155890,155069,155891,155893],{},[457,155892,155883],{}," 给宽度 1200，不要给高度",[43,155895,155896],{},"一定不要忘记清除浮动",[14,155898,154415],{},[451,155900,155901],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,155902,155903,155909,155919],{"__ignoreMap":32},[460,155904,155905,155907],{"class":462,"line":463},[460,155906,144893],{"class":929},[460,155908,1348],{"class":466},[460,155910,155911,155913,155915,155917],{"class":462,"line":476},[460,155912,145525],{"class":900},[460,155914,1961],{"class":466},[460,155916,40149],{"class":900},[460,155918,1966],{"class":466},[460,155920,155921],{"class":462,"line":482},[460,155922,821],{"class":466},[103,155924,155925],{},[43,155926,155927],{},"sk_hd制作",[40,155929,155930],{},[43,155931,155149,155932,155935],{},[457,155933,155934],{},"sk_hd"," ，插入图片即可",[14,155937,154415],{},[451,155939,155940],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,155941,155942],{"__ignoreMap":32},[460,155943,155944,155946,155948,155950,155952,155954,155956,155958,155960,155962,155964,155966],{"class":462,"line":463},[460,155945,781],{"class":466},[460,155947,30],{"class":470},[460,155949,12081],{"class":929},[460,155951,894],{"class":466},[460,155953,148562],{"class":1353},[460,155955,16224],{"class":929},[460,155957,894],{"class":466},[460,155959,148569],{"class":1353},[460,155961,148572],{"class":929},[460,155963,894],{"class":466},[460,155965,148577],{"class":1353},[460,155967,473],{"class":466},[103,155969,155970],{"start":476},[43,155971,155972],{},"sk_bd制作",[40,155974,155975],{},[43,155976,155977,155978,155981,155982,115511,155984,155986],{},"3 号盒子 ",[457,155979,155980],{},"sk_bd"," ，里面包含很多的 ",[457,155983,40],{},[457,155985,43],{},[40,155987,155988,155997],{},[43,155989,155990,155991,155993,155994,155996],{},"当鼠标移入到 ",[457,155992,43],{}," 上面的时候显示红色的边框，在这里先给 ",[457,155995,43],{}," 设置透明的边框，当鼠标移入的时候 设置为红色即可",[43,155998,155999,156000,156002,156003,156005,156006,156009,156010,156012],{},"由于给每个 ",[457,156001,43],{}," 都设置了外边距，导致一行的最后一个 ",[457,156004,43],{}," 掉了下来，在这里我们利用 ",[457,156007,156008],{},"nth-child(4n)"," 来选择出来每一行最后一个 ",[457,156011,43],{},"，去掉外边距就好了",[14,156014,154415],{},[451,156016,156017],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},[457,156018,156019,156025,156037],{"__ignoreMap":32},[460,156020,156021,156023],{"class":462,"line":463},[460,156022,2737],{"class":470},[460,156024,1348],{"class":466},[460,156026,156027,156029,156031,156033,156035],{"class":462,"line":476},[460,156028,86612],{"class":900},[460,156030,1961],{"class":466},[460,156032,936],{"class":900},[460,156034,2030],{"class":900},[460,156036,1966],{"class":466},[460,156038,156039],{"class":462,"line":482},[460,156040,821],{"class":466},[14,156042,154504],{},[451,156044,156045],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},[457,156046,156047,156053,156065],{"__ignoreMap":32},[460,156048,156049,156051],{"class":462,"line":463},[460,156050,2737],{"class":470},[460,156052,1348],{"class":466},[460,156054,156055,156057,156059,156061,156063],{"class":462,"line":476},[460,156056,86612],{"class":900},[460,156058,1961],{"class":466},[460,156060,936],{"class":900},[460,156062,2030],{"class":900},[460,156064,1966],{"class":466},[460,156066,156067],{"class":462,"line":482},[460,156068,821],{"class":466},[18,156070,156072],{"id":156071},"_163-注册页面制作","16.3 注册页面制作",[30,156074],{"style":140901,"src":156075},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-172.png",[14,156077,156078,156080],{},[3944,156079,25511],{}," 注册页面比较隐私，为了保护用户信息，我们不需要对当前页面做SEO优化",[30,156082],{"style":140901,"src":156083},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-173.png",[23,156085,156087],{"id":156086},"_1631-准备工作","16.3.1 准备工作",[40,156089,156090,156093],{},[43,156091,156092],{},"创建register.html，引入 base.css，引入favicon图标",[43,156094,156095],{},"创建register.css ，在html页面进行引入",[23,156097,156099,156100,156102],{"id":156098},"_1632-header-头部实现","16.3.2 ",[457,156101,146050],{}," 头部实现",[40,156104,156105,156108],{},[43,156106,156107],{},"整个内容用 版心 进行包裹",[43,156109,156110],{},"第一个头部区域怎么简单怎么来，用一个header盒子包裹链接，链接里面放图片即可",[14,156112,154415],{},[451,156114,156115],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,156116,156117],{"__ignoreMap":32},[460,156118,156119,156121,156123,156125,156127,156129,156131,156133,156135,156137,156139,156141],{"class":462,"line":463},[460,156120,781],{"class":466},[460,156122,30],{"class":470},[460,156124,12081],{"class":929},[460,156126,894],{"class":466},[460,156128,148562],{"class":1353},[460,156130,16224],{"class":929},[460,156132,894],{"class":466},[460,156134,148569],{"class":1353},[460,156136,148572],{"class":929},[460,156138,894],{"class":466},[460,156140,148577],{"class":1353},[460,156142,473],{"class":466},[14,156144,154504],{},[451,156146,156147],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,156148,156149],{"__ignoreMap":32},[460,156150,156151,156153,156155,156157,156159,156161,156163,156165,156167,156169,156171,156173],{"class":462,"line":463},[460,156152,781],{"class":466},[460,156154,30],{"class":470},[460,156156,12081],{"class":929},[460,156158,894],{"class":466},[460,156160,148562],{"class":1353},[460,156162,16224],{"class":929},[460,156164,894],{"class":466},[460,156166,148569],{"class":1353},[460,156168,148572],{"class":929},[460,156170,894],{"class":466},[460,156172,148577],{"class":1353},[460,156174,473],{"class":466},[23,156176,156178,156179,156182],{"id":156177},"_1633-registerarea-主体模块实现","16.3.3 ",[457,156180,156181],{},"registerarea"," 主体模块实现",[30,156184],{"style":140901,"src":156185},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-174.png",[14,156187,156188],{},"整个大盒子 高度为 522px，设置4个边框",[14,156190,154415],{},[451,156192,156193],{"className":141045,"code":145202,"language":141047,"meta":32,"style":32},[457,156194,156195,156201,156217],{"__ignoreMap":32},[460,156196,156197,156199],{"class":462,"line":463},[460,156198,2737],{"class":470},[460,156200,1348],{"class":466},[460,156202,156203,156205,156207,156209,156211,156213,156215],{"class":462,"line":476},[460,156204,87038],{"class":900},[460,156206,1961],{"class":466},[460,156208,901],{"class":900},[460,156210,2017],{"class":887},[460,156212,7201],{"class":900},[460,156214,144437],{"class":900},[460,156216,1966],{"class":466},[460,156218,156219],{"class":462,"line":482},[460,156220,821],{"class":466},[14,156222,154504],{},[451,156224,156225],{"className":141045,"code":145202,"language":141047,"meta":32,"style":32},[457,156226,156227,156233,156249],{"__ignoreMap":32},[460,156228,156229,156231],{"class":462,"line":463},[460,156230,2737],{"class":470},[460,156232,1348],{"class":466},[460,156234,156235,156237,156239,156241,156243,156245,156247],{"class":462,"line":476},[460,156236,87038],{"class":900},[460,156238,1961],{"class":466},[460,156240,901],{"class":900},[460,156242,2017],{"class":887},[460,156244,7201],{"class":900},[460,156246,144437],{"class":900},[460,156248,1966],{"class":466},[460,156250,156251],{"class":462,"line":482},[460,156252,821],{"class":466},[14,156254,156255],{},"1号盒子 是一个 h3 标签，放标题",[40,156257,156258],{},[43,156259,156260],{},"里面放 注册新用户 的文字，然后包一个 div的标签，让div标签右浮动",[14,156262,154415],{},[451,156264,156265],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,156266,156267,156273,156283],{"__ignoreMap":32},[460,156268,156269,156271],{"class":462,"line":463},[460,156270,144893],{"class":929},[460,156272,1348],{"class":466},[460,156274,156275,156277,156279,156281],{"class":462,"line":476},[460,156276,145525],{"class":900},[460,156278,1961],{"class":466},[460,156280,40149],{"class":900},[460,156282,1966],{"class":466},[460,156284,156285],{"class":462,"line":482},[460,156286,821],{"class":466},[14,156288,154504],{},[451,156290,156291],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,156292,156293,156299,156309],{"__ignoreMap":32},[460,156294,156295,156297],{"class":462,"line":463},[460,156296,144893],{"class":929},[460,156298,1348],{"class":466},[460,156300,156301,156303,156305,156307],{"class":462,"line":476},[460,156302,145525],{"class":900},[460,156304,1961],{"class":466},[460,156306,40149],{"class":900},[460,156308,1966],{"class":466},[460,156310,156311],{"class":462,"line":482},[460,156312,821],{"class":466},[14,156314,156315],{},"2号盒子 里面放注册的内容",[40,156317,156318,156321,156330,156344,156357,156360,156363,156381,156395],{},[43,156319,156320],{},"先用一个盒子，把整个内容包裹起来，设置盒子宽度（600px），让这个盒子距上边50px，水平居中显示",[43,156322,156323,156324,156326,156327,156329],{},"里面的内容利用 ",[457,156325,40],{}," 包含 ",[457,156328,43],{}," 来实现的（不需要用表格）",[43,156331,153559,156332,156334,156335,156337,156338,156340,156341,156343],{},[457,156333,43],{}," 里面，左侧放 ",[457,156336,49913],{}," 标签， 中间放",[457,156339,70068],{}," 标签， 右侧放 ",[457,156342,460],{}," 提示信息",[43,156345,156346,156347,156349,156350,156352,156353,156356],{},"左侧 ",[457,156348,49913],{},"里面的文字都是右对齐，我们可以给",[457,156351,49913],{},"设置一个宽度（88px），然后利用",[457,156354,156355],{},"text-align"," 来设置右对齐",[43,156358,156359],{},"input 表单设置 宽度 242px，高度 37px，设置边框",[43,156361,156362],{},"右侧 span修饰一下文字颜色",[43,156364,156365,156366],{},"提示信息的样式优化",[40,156367,156368,156371,156374],{},[43,156369,156370],{},"定义一个 错误的样式，定义一个 正确的样式，然后给对应的盒子设置类名",[43,156372,156373],{},"在span里面放一个小盒子，这个小盒子用来显示 图标的，设置一下宽高 （20x20）",[43,156375,156376,156377,156380],{},"插入图片了之后，默认与文字是基线对齐，通过 ",[457,156378,156379],{},"vertical-algin"," 来设置 图片与文字对齐方式",[43,156382,156383,156384],{},"安装程度的布局，在第4个小 li 里面放 三个盒子，分别放 弱、中、强",[40,156385,156386,156392],{},[43,156387,156388,156389,156391],{},"设置 ",[457,156390,39966],{}," 的 左右 12px 的内边距，设置一下文字颜色",[43,156393,156394],{},"分别设置 背景颜色",[43,156396,156397,156398,156400],{},"同意协议 和 完成注册 都是用 ",[457,156399,43],{}," 进行包裹",[14,156402,154415],{},[451,156404,156405],{"className":141045,"code":154988,"language":141047,"meta":32,"style":32},[457,156406,156407,156413,156423],{"__ignoreMap":32},[460,156408,156409,156411],{"class":462,"line":463},[460,156410,2737],{"class":470},[460,156412,1348],{"class":466},[460,156414,156415,156417,156419,156421],{"class":462,"line":476},[460,156416,87020],{"class":900},[460,156418,1961],{"class":466},[460,156420,155005],{"class":900},[460,156422,1966],{"class":466},[460,156424,156425],{"class":462,"line":482},[460,156426,821],{"class":466},[14,156428,154504],{},[451,156430,156431],{"className":141045,"code":154988,"language":141047,"meta":32,"style":32},[457,156432,156433,156439,156449],{"__ignoreMap":32},[460,156434,156435,156437],{"class":462,"line":463},[460,156436,2737],{"class":470},[460,156438,1348],{"class":466},[460,156440,156441,156443,156445,156447],{"class":462,"line":476},[460,156442,87020],{"class":900},[460,156444,1961],{"class":466},[460,156446,155005],{"class":900},[460,156448,1966],{"class":466},[460,156450,156451],{"class":462,"line":482},[460,156452,821],{"class":466},[23,156454,156456],{"id":156455},"_1634-底部实现","16.3.4 底部实现",[14,156458,154415],{},[451,156460,156461],{"className":141045,"code":154988,"language":141047,"meta":32,"style":32},[457,156462,156463,156469,156479],{"__ignoreMap":32},[460,156464,156465,156467],{"class":462,"line":463},[460,156466,2737],{"class":470},[460,156468,1348],{"class":466},[460,156470,156471,156473,156475,156477],{"class":462,"line":476},[460,156472,87020],{"class":900},[460,156474,1961],{"class":466},[460,156476,155005],{"class":900},[460,156478,1966],{"class":466},[460,156480,156481],{"class":462,"line":482},[460,156482,821],{"class":466},[14,156484,154504],{},[451,156486,156487],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,156488,156489,156493,156507,156511],{"__ignoreMap":32},[460,156490,156491],{"class":462,"line":463},[460,156492,145156],{"class":942},[460,156494,156495,156497,156499,156501,156503,156505],{"class":462,"line":476},[460,156496,781],{"class":466},[460,156498,2737],{"class":470},[460,156500,2740],{"class":929},[460,156502,894],{"class":466},[460,156504,145169],{"class":1353},[460,156506,473],{"class":466},[460,156508,156509],{"class":462,"line":482},[460,156510,145176],{"class":466},[460,156512,156513,156515,156517],{"class":462,"line":488},[460,156514,1776],{"class":466},[460,156516,2737],{"class":470},[460,156518,473],{"class":466},[18,156520,156522],{"id":156521},"_164-项目总结","16.4 项目总结",[103,156524,156525,156528,156531,156534],{},[43,156526,156527],{},"大盒子添加水平居中后，它的子盒子也会水平居中",[43,156529,156530],{},"一般情况下，a包含有宽度的盒子，a需要转换为块级元素",[43,156532,156533],{},"一个盒子里边的子盒子进行浮动的时候，如果在父盒子中放不开，则会导致子盒子放不下的跑到下边去",[43,156535,156536],{},"出现下图注意点，多半是因为文字环绕浮动的盒子了，解决方式就是在这个浮动盒子的父盒子设置为多余父盒子的部分进行隐藏：overflow:hidden;隐藏掉多余的部分，外边的文字就没有浮动盒子了，就可以实现位置的 空置，文字就不在环绕了",[30,156538],{"style":140901,"src":156539},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-175.png",[103,156541,156542],{"start":494},[43,156543,156544],{},"对于行内块元素，如果要类似于下边图片的效果，可以使用padding来撑开盒子，不要用margin，这个是处理盒子之间的问题",[30,156546],{"style":140901,"src":156547},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-176.png",[103,156549,156550],{"start":500},[43,156551,156552],{},"对于提交按钮不要使用button，要使用input，参数选择submit，在里边的value中写的字，在给input设置宽度和高度后，这个文字会居中",[30,156554],{"style":140901,"src":156555},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-177.png",[451,156557,156558],{"className":141792,"code":151202,"language":141794,"meta":32,"style":32},[457,156559,156560],{"__ignoreMap":32},[460,156561,156562,156564,156566,156568,156570,156572,156574,156576,156578,156580,156582,156584],{"class":462,"line":463},[460,156563,781],{"class":466},[460,156565,70068],{"class":470},[460,156567,70071],{"class":929},[460,156569,894],{"class":466},[460,156571,78868],{"class":1353},[460,156573,1908],{"class":929},[460,156575,894],{"class":466},[460,156577,151223],{"class":1353},[460,156579,77209],{"class":929},[460,156581,894],{"class":466},[460,156583,151230],{"class":1353},[460,156585,473],{"class":466},[103,156587,156588,156591],{"start":506},[43,156589,156590],{},"如果图片过大，想要缩放它的话，只需要设置宽度或者高度其中一个就可以，另一个参数就会等比缩放",[43,156592,156593],{},"使用a链接，鼠标放上去提示信息，在a中使用title属性",[1944,156595,156596],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":32,"searchDepth":476,"depth":476,"links":156598},[156599,156604,156611,156619],{"id":154225,"depth":476,"text":154226,"children":156600},[156601,156602,156603],{"id":154229,"depth":482,"text":154230},{"id":154960,"depth":482,"text":154961},{"id":155273,"depth":482,"text":155274},{"id":155573,"depth":476,"text":155574,"children":156605},[156606,156607,156609],{"id":155577,"depth":482,"text":155578},{"id":155595,"depth":482,"text":156608},"16.2.2 列表页 header 和 nav 修改",{"id":155879,"depth":482,"text":156610},"16.2.3 列表页主体 sk_container",{"id":156071,"depth":476,"text":156072,"children":156612},[156613,156614,156616,156618],{"id":156086,"depth":482,"text":156087},{"id":156098,"depth":482,"text":156615},"16.3.2 header 头部实现",{"id":156177,"depth":482,"text":156617},"16.3.3 registerarea 主体模块实现",{"id":156455,"depth":482,"text":156456},{"id":156521,"depth":476,"text":156522},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch16",{"title":154217,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch16-品优购项目下篇-主体与页面开发","kRJOBRy9l0VcQGyFjUTtaqBcx5fbxBnGM_Nor-phNrY",{"id":156626,"title":156627,"body":156628,"description":16682,"extension":16683,"meta":156736,"navigation":521,"path":156737,"seo":156738,"stem":156739,"__hash__":156740},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch17-Web服务器与网站发布.md","17. Web服务器与网站发布",{"type":7,"value":156629,"toc":156731},[156630,156633,156637,156640,156643,156652,156661,156665,156670,156677,156695,156698,156701,156704,156707,156710,156713,156716,156719,156722,156725,156728],[10,156631,156627],{"id":156632},"_17-web服务器与网站发布",[18,156634,156636],{"id":156635},"_171-web服务器","17.1 Web服务器",[14,156638,156639],{},"把自己网站上传到服务器上，可以让其他人访问",[30,156641],{"style":140901,"src":156642},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-178.png",[14,156644,156645,156648,156649],{},[3944,156646,156647],{},"服务器"," （我们也会称之为主机）是提供计算服务的设备，它也是一台计算机。在网络环境下，根据服务器提供的服务类型不同，服务器又分为文件服务器、数据库服务器、应用程序服务器、 ",[3944,156650,156651],{},"Web 服务器等",[14,156653,156654,156655,115511,156658,42152],{},"根据服务器在网络中所在的位置不同，又可分为 ",[3944,156656,156657],{},"本地服务器（自己电脑设置为服务器，就是本地服务器）",[3944,156659,156660],{},"远程服务器",[23,156662,156664],{"id":156663},"_1711-将自己的网站上传到远程服务器","17.1.1 将自己的网站上传到远程服务器（★★★）",[14,156666,156667],{},[3944,156668,156669],{},"注意：一般稳定的服务器都是需要收费的。 比如：阿里云",[14,156671,156672,156673],{},"这里给大家推荐一个免费的远程服务器（免费空间） ",[2756,156674,156675],{"href":156675,"rel":156676},"http:\u002F\u002Ffree.3v.do\u002F",[4943],[40,156678,156679,156682,156685,156692],{},[43,156680,156681],{},"去免费空间网站注册账号。",[43,156683,156684],{},"记录下主机名、用户名、密码、域名。",[43,156686,156687,156688,156691],{},"利用 ",[457,156689,156690],{},"utftp"," 软件 上传网站到远程服务器",[43,156693,156694],{},"在浏览器中输入域名，即可访问我们的品优购网站了",[14,156696,156697],{},"使用软件上传，对上传软件文件进行解压",[30,156699],{"style":140901,"src":156700},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-179.png",[30,156702],{"style":140901,"src":156703},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-180.png",[14,156705,156706],{},"输入刚刚申请的服务器账号信息：",[30,156708],{"style":140901,"src":156709},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-181.png",[30,156711],{"style":140901,"src":156712},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-182.png",[30,156714],{"style":140901,"src":156715},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-183.png",[30,156717],{"style":140901,"src":156718},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-184.png",[14,156720,156721],{},"将内容拖过去即可，左边是电脑文件，右边是服务器",[30,156723],{"style":140901,"src":156724},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-185.png",[14,156726,156727],{},"浏览器输入域名即可访问",[14,156729,156730],{},"首页一定必须是index",{"title":32,"searchDepth":476,"depth":476,"links":156732},[156733],{"id":156635,"depth":476,"text":156636,"children":156734},[156735],{"id":156663,"depth":482,"text":156664},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch17-web",{"title":156627,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch17-Web服务器与网站发布","cCpziV1cqCY-g-yi7uFqH5oT2wBaRMsy1XAXBDnoXXo",{"id":156742,"title":156743,"body":156744,"description":16682,"extension":16683,"meta":157671,"navigation":521,"path":157672,"seo":157673,"stem":157674,"__hash__":157675},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch18-2D动画与3D转换.md","18. 2D动画与3D转换",{"type":7,"value":156745,"toc":157654},[156746,156749,156753,156756,156759,156770,156773,156777,156781,156786,156789,156792,156795,156798,156802,156828,156832,156836,156839,156842,156846,156879,156883,156886,156889,156953,156957,156961,156964,156967,156970,156974,157019,157023,157026,157056,157060,157064,157067,157070,157074,157077,157146,157149,157257,157259,157265,157269,157272,157275,157371,157374,157378,157402,157406,157409,157413,157416,157420,157423,157426,157429,157432,157436,157439,157442,157446,157450,157453,157456,157459,157462,157466,157469,157473,157476,157479,157524,157528,157532,157535,157538,157541,157573,157577,157580,157614,157618,157621,157651],[10,156747,156743],{"id":156748},"_18-2d动画与3d转换",[18,156750,156752],{"id":156751},"_181-css3-2d转换","18.1 CSS3 2D转换",[14,156754,156755],{},"**转换（transform）**是CSS3中具有颠覆性的特征之一，可以实现元素的位移、旋转、缩放等效果",[14,156757,156758],{},"转换（transform）你可以简单理解为变形",[40,156760,156761,156764,156767],{},[43,156762,156763],{},"移动：translate",[43,156765,156766],{},"旋转：rotate",[43,156768,156769],{},"缩放：scale",[30,156771],{"style":140901,"src":156772},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-186.png",[23,156774,156776],{"id":156775},"_1811-2d-转换之移动-translate","18.1.1 2D 转换之移动 translate",[115,156778,156780],{"id":156779},"_18111-translate介绍","18.1.1.1 translate介绍",[14,156782,156783,156784],{},"2D移动是2D转换里面的一种功能，可以改变元素在页面中的位置，类似",[3944,156785,147704],{},[30,156787],{"style":140901,"src":156788},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-187.png",[14,156790,156791],{},"translate最大的优点就是不会影响其他元素的位置，可以凭借这一优点去整过渡效果transition",[14,156793,156794],{},"对于行内元素无效",[14,156796,156797],{},"总结：移动盒子的位置三种方法：定位、盒子的外边距、2d转换移动",[115,156799,156801],{"id":156800},"_18112-盒子实现水平居中","18.1.1.2 盒子实现水平居中",[451,156803,156804],{"className":141045,"code":153234,"language":141047,"meta":32,"style":32},[457,156805,156806,156812,156824],{"__ignoreMap":32},[460,156807,156808,156810],{"class":462,"line":463},[460,156809,2737],{"class":470},[460,156811,1348],{"class":466},[460,156813,156814,156816,156818,156820,156822],{"class":462,"line":476},[460,156815,86612],{"class":900},[460,156817,1961],{"class":466},[460,156819,936],{"class":900},[460,156821,2030],{"class":900},[460,156823,1966],{"class":466},[460,156825,156826],{"class":462,"line":482},[460,156827,821],{"class":466},[23,156829,156831],{"id":156830},"_1812-2d-转换之旋转-rotate","18.1.2 2D 转换之旋转 rotate",[115,156833,156835],{"id":156834},"_18121-rotate介绍","18.1.2.1 rotate介绍",[14,156837,156838],{},"2D旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转",[30,156840],{"style":140901,"src":156841},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-188.png",[115,156843,156845],{"id":156844},"_18122-旋转效果","18.1.2.2 旋转效果",[451,156847,156849],{"className":141045,"code":156848,"language":141047,"meta":32,"style":32},"div {\n  transform: rotate(45deg);\n}\n",[457,156850,156851,156857,156875],{"__ignoreMap":32},[460,156852,156853,156855],{"class":462,"line":463},[460,156854,2737],{"class":470},[460,156856,1348],{"class":466},[460,156858,156859,156861,156863,156866,156868,156870,156873],{"class":462,"line":476},[460,156860,151029],{"class":900},[460,156862,1961],{"class":466},[460,156864,156865],{"class":900},"rotate",[460,156867,2174],{"class":466},[460,156869,17256],{"class":900},[460,156871,156872],{"class":887},"deg",[460,156874,2254],{"class":466},[460,156876,156877],{"class":462,"line":482},[460,156878,821],{"class":466},[115,156880,156882],{"id":156881},"_18123-三角做法","18.1.2.3 三角做法",[14,156884,156885],{},"该下标当经过最外层大盒子时会实现向上反转",[30,156887],{"style":140901,"src":156888},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-189.png",[451,156890,156891],{"className":141045,"code":149565,"language":141047,"meta":32,"style":32},[457,156892,156893,156897,156903,156913,156923,156939,156949],{"__ignoreMap":32},[460,156894,156895],{"class":462,"line":463},[460,156896,149572],{"class":942},[460,156898,156899,156901],{"class":462,"line":476},[460,156900,149577],{"class":929},[460,156902,1348],{"class":466},[460,156904,156905,156907,156909,156911],{"class":462,"line":482},[460,156906,86710],{"class":900},[460,156908,1961],{"class":466},[460,156910,936],{"class":900},[460,156912,1966],{"class":466},[460,156914,156915,156917,156919,156921],{"class":462,"line":488},[460,156916,86930],{"class":900},[460,156918,1961],{"class":466},[460,156920,936],{"class":900},[460,156922,1966],{"class":466},[460,156924,156925,156927,156929,156931,156933,156935,156937],{"class":462,"line":494},[460,156926,87038],{"class":900},[460,156928,1961],{"class":466},[460,156930,2096],{"class":900},[460,156932,2017],{"class":887},[460,156934,7201],{"class":900},[460,156936,80156],{"class":900},[460,156938,1966],{"class":466},[460,156940,156941,156943,156945,156947],{"class":462,"line":500},[460,156942,149620],{"class":900},[460,156944,1961],{"class":466},[460,156946,78540],{"class":900},[460,156948,1966],{"class":466},[460,156950,156951],{"class":462,"line":506},[460,156952,821],{"class":466},[23,156954,156956],{"id":156955},"_1813-2d-转换中心点-transform-origin","18.1.3 2D 转换中心点 transform-origin",[115,156958,156960],{"id":156959},"_18131-transform-origin介绍","18.1.3.1 transform-origin介绍",[14,156962,156963],{},"设置中心点",[30,156965],{"style":140901,"src":156966},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-190.png",[14,156968,156969],{},"设置像素时这个中心点也是相对于这个大盒子来说的",[115,156971,156973],{"id":156972},"_18132-盒子不同中心旋转","18.1.3.2 盒子不同中心旋转",[451,156975,156977],{"className":141045,"code":156976,"language":141047,"meta":32,"style":32},"\u002F* 转换中心点 *\u002F\ndiv {\n  transform-origin: center center;  \u002F* 默认 *\u002F\n  \u002F* transform-origin: 50% 50%; *\u002F\n  \u002F* transform-origin: left top; *\u002F\n}\n",[457,156978,156979,156984,156990,157005,157010,157015],{"__ignoreMap":32},[460,156980,156981],{"class":462,"line":463},[460,156982,156983],{"class":942},"\u002F* 转换中心点 *\u002F\n",[460,156985,156986,156988],{"class":462,"line":476},[460,156987,2737],{"class":470},[460,156989,1348],{"class":466},[460,156991,156992,156995,156997,156999,157001,157003],{"class":462,"line":482},[460,156993,156994],{"class":900},"  transform-origin",[460,156996,1961],{"class":466},[460,156998,5545],{"class":900},[460,157000,33562],{"class":900},[460,157002,144908],{"class":466},[460,157004,149718],{"class":942},[460,157006,157007],{"class":462,"line":488},[460,157008,157009],{"class":942},"  \u002F* transform-origin: 50% 50%; *\u002F\n",[460,157011,157012],{"class":462,"line":494},[460,157013,157014],{"class":942},"  \u002F* transform-origin: left top; *\u002F\n",[460,157016,157017],{"class":462,"line":500},[460,157018,821],{"class":466},[115,157020,157022],{"id":157021},"_18133-旋转案例","18.1.3.3 旋转案例",[30,157024],{"style":140901,"src":157025},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-191.png",[451,157027,157028],{"className":141045,"code":156848,"language":141047,"meta":32,"style":32},[457,157029,157030,157036,157052],{"__ignoreMap":32},[460,157031,157032,157034],{"class":462,"line":463},[460,157033,2737],{"class":470},[460,157035,1348],{"class":466},[460,157037,157038,157040,157042,157044,157046,157048,157050],{"class":462,"line":476},[460,157039,151029],{"class":900},[460,157041,1961],{"class":466},[460,157043,156865],{"class":900},[460,157045,2174],{"class":466},[460,157047,17256],{"class":900},[460,157049,156872],{"class":887},[460,157051,2254],{"class":466},[460,157053,157054],{"class":462,"line":482},[460,157055,821],{"class":466},[23,157057,157059],{"id":157058},"_1814-2d-转换之缩放scale","18.1.4 2D 转换之缩放scale",[115,157061,157063],{"id":157062},"_18141-scale介绍","18.1.4.1 scale介绍",[14,157065,157066],{},"缩放，顾名思义，可以放大和缩小。 只要给元素添加上了这个属性就能控制它放大还是缩小",[30,157068],{"style":140901,"src":157069},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-192.png",[115,157071,157073],{"id":157072},"_18142-分页按钮","18.1.4.2 分页按钮",[30,157075],{"style":140901,"src":157076},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-193.png",[451,157078,157080],{"className":141045,"code":157079,"language":141047,"meta":32,"style":32},"div {\n  transform: scale(1.2);\n}\n```Css\n\u002F* 2D 缩放 *\u002F\ndiv {\n  transform: scale(1.2);\n  \u002F* transform: scale(1.2, 0.8);  宽1.2倍，高0.8倍 *\u002F\n}\n",[457,157081,157082,157088,157104,157108,157112,157117,157123,157137,157142],{"__ignoreMap":32},[460,157083,157084,157086],{"class":462,"line":463},[460,157085,2737],{"class":470},[460,157087,1348],{"class":466},[460,157089,157090,157092,157094,157097,157099,157102],{"class":462,"line":476},[460,157091,151029],{"class":900},[460,157093,1961],{"class":466},[460,157095,157096],{"class":900},"scale",[460,157098,2174],{"class":466},[460,157100,157101],{"class":900},"1.2",[460,157103,2254],{"class":466},[460,157105,157106],{"class":462,"line":482},[460,157107,821],{"class":466},[460,157109,157110],{"class":462,"line":488},[460,157111,150506],{"class":466},[460,157113,157114],{"class":462,"line":494},[460,157115,157116],{"class":942},"\u002F* 2D 缩放 *\u002F\n",[460,157118,157119,157121],{"class":462,"line":500},[460,157120,2737],{"class":470},[460,157122,1348],{"class":466},[460,157124,157125,157127,157129,157131,157133,157135],{"class":462,"line":506},[460,157126,151029],{"class":900},[460,157128,1961],{"class":466},[460,157130,157096],{"class":900},[460,157132,2174],{"class":466},[460,157134,157101],{"class":900},[460,157136,2254],{"class":466},[460,157138,157139],{"class":462,"line":512},[460,157140,157141],{"class":942},"  \u002F* transform: scale(1.2, 0.8);  宽1.2倍，高0.8倍 *\u002F\n",[460,157143,157144],{"class":462,"line":518},[460,157145,821],{"class":466},[14,157147,157148],{},"@keyframes slide {\nfrom { transform: translateX(0); }\nto { transform: translateX(100px); }\n}\ndiv {\nanimation: slide 1s ease infinite;\n}",[451,157150,157152],{"className":141045,"code":157151,"language":141047,"meta":32,"style":32},"\u002F* 定义动画 *\u002F\n@keyframes move {\n  0% { transform: translateX(0); }\n  100% { transform: translateX(100px); }\n}\n\u002F* 调用动画 *\u002F\ndiv {\n  animation: move 1s ease 0s infinite alternate;\n}\n",[457,157153,157154,157159,157169,157190,157211,157215,157220,157226,157253],{"__ignoreMap":32},[460,157155,157156],{"class":462,"line":463},[460,157157,157158],{"class":942},"\u002F* 定义动画 *\u002F\n",[460,157160,157161,157164,157167],{"class":462,"line":476},[460,157162,157163],{"class":887},"@keyframes",[460,157165,157166],{"class":3380}," move",[460,157168,1348],{"class":466},[460,157170,157171,157174,157176,157178,157180,157183,157185,157187],{"class":462,"line":482},[460,157172,157173],{"class":929},"  0%",[460,157175,3437],{"class":466},[460,157177,64437],{"class":900},[460,157179,1961],{"class":466},[460,157181,157182],{"class":900},"translateX",[460,157184,2174],{"class":466},[460,157186,936],{"class":900},[460,157188,157189],{"class":466},"); }\n",[460,157191,157192,157195,157197,157199,157201,157203,157205,157207,157209],{"class":462,"line":488},[460,157193,157194],{"class":929},"  100%",[460,157196,3437],{"class":466},[460,157198,64437],{"class":900},[460,157200,1961],{"class":466},[460,157202,157182],{"class":900},[460,157204,2174],{"class":466},[460,157206,2325],{"class":900},[460,157208,2017],{"class":887},[460,157210,157189],{"class":466},[460,157212,157213],{"class":462,"line":494},[460,157214,821],{"class":466},[460,157216,157217],{"class":462,"line":500},[460,157218,157219],{"class":942},"\u002F* 调用动画 *\u002F\n",[460,157221,157222,157224],{"class":462,"line":506},[460,157223,2737],{"class":470},[460,157225,1348],{"class":466},[460,157227,157228,157231,157233,157235,157237,157239,157241,157243,157245,157248,157251],{"class":462,"line":512},[460,157229,157230],{"class":900},"  animation",[460,157232,1961],{"class":466},[460,157234,149731],{"class":900},[460,157236,1400],{"class":900},[460,157238,2139],{"class":887},[460,157240,2133],{"class":900},[460,157242,2224],{"class":900},[460,157244,2139],{"class":887},[460,157246,157247],{"class":900}," infinite",[460,157249,157250],{"class":900}," alternate",[460,157252,1966],{"class":466},[460,157254,157255],{"class":462,"line":518},[460,157256,821],{"class":466},[14,157258,157148],{},[451,157260,157263],{"className":157261,"code":157262,"language":8391},[21693],"\n\u003Cimg style=\"max-width:100%\" src=\"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-200.png\">\n\n#### 18.2.1.5 动画简写\n\n\u003Cimg style=\"max-width:100%\" src=\"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-201.png\">\n\nname,duration这两个属性必须写！\n\n### 18.2.2 案例\n\n#### 18.2.2.1 热点图\n\n\u003Cimg style=\"max-width:100%\" src=\"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-202.png\">\n\n```Css\n@keyframes slide {\n  from { transform: translateX(0); }\n  to { transform: translateX(100px); }\n}\ndiv {\n  animation: slide 1s ease infinite;\n}\n",[457,157264,157262],{"__ignoreMap":32},[115,157266,157268],{"id":157267},"_18222-奔跑的熊大","18.2.2.2 奔跑的熊大",[14,157270,157271],{},"这个需要用到动画效果，同时要使用steps，一步一步的展示，不可以用ease等值，这个图片一般很大，上边集成了运动的多个状态",[30,157273],{"style":140901,"src":157274},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-203.png",[451,157276,157277],{"className":141045,"code":157151,"language":141047,"meta":32,"style":32},[457,157278,157279,157283,157291,157309,157329,157333,157337,157343,157367],{"__ignoreMap":32},[460,157280,157281],{"class":462,"line":463},[460,157282,157158],{"class":942},[460,157284,157285,157287,157289],{"class":462,"line":476},[460,157286,157163],{"class":887},[460,157288,157166],{"class":3380},[460,157290,1348],{"class":466},[460,157292,157293,157295,157297,157299,157301,157303,157305,157307],{"class":462,"line":482},[460,157294,157173],{"class":929},[460,157296,3437],{"class":466},[460,157298,64437],{"class":900},[460,157300,1961],{"class":466},[460,157302,157182],{"class":900},[460,157304,2174],{"class":466},[460,157306,936],{"class":900},[460,157308,157189],{"class":466},[460,157310,157311,157313,157315,157317,157319,157321,157323,157325,157327],{"class":462,"line":488},[460,157312,157194],{"class":929},[460,157314,3437],{"class":466},[460,157316,64437],{"class":900},[460,157318,1961],{"class":466},[460,157320,157182],{"class":900},[460,157322,2174],{"class":466},[460,157324,2325],{"class":900},[460,157326,2017],{"class":887},[460,157328,157189],{"class":466},[460,157330,157331],{"class":462,"line":494},[460,157332,821],{"class":466},[460,157334,157335],{"class":462,"line":500},[460,157336,157219],{"class":942},[460,157338,157339,157341],{"class":462,"line":506},[460,157340,2737],{"class":470},[460,157342,1348],{"class":466},[460,157344,157345,157347,157349,157351,157353,157355,157357,157359,157361,157363,157365],{"class":462,"line":512},[460,157346,157230],{"class":900},[460,157348,1961],{"class":466},[460,157350,149731],{"class":900},[460,157352,1400],{"class":900},[460,157354,2139],{"class":887},[460,157356,2133],{"class":900},[460,157358,2224],{"class":900},[460,157360,2139],{"class":887},[460,157362,157247],{"class":900},[460,157364,157250],{"class":900},[460,157366,1966],{"class":466},[460,157368,157369],{"class":462,"line":518},[460,157370,821],{"class":466},[14,157372,157373],{},"背景如果跟父盒子一样的话，往左走100%会使得背景露出来，此时不要忘记背景平铺：repeat-x,repeat-y",[23,157375,157377],{"id":157376},"_1823-知识点回顾","18.2.3 知识点回顾",[451,157379,157380],{"className":141045,"code":143214,"language":141047,"meta":32,"style":32},[457,157381,157382,157388,157398],{"__ignoreMap":32},[460,157383,157384,157386],{"class":462,"line":463},[460,157385,2737],{"class":470},[460,157387,1348],{"class":466},[460,157389,157390,157392,157394,157396],{"class":462,"line":476},[460,157391,143227],{"class":900},[460,157393,1961],{"class":466},[460,157395,77921],{"class":900},[460,157397,1966],{"class":466},[460,157399,157400],{"class":462,"line":482},[460,157401,821],{"class":466},[18,157403,157405],{"id":157404},"_183-3d-转换","18.3 3D 转换",[14,157407,157408],{},"我们生活的环境是3D的，照片就是3D物体在2D平面呈现的例子",[23,157410,157412],{"id":157411},"_1831-坐标轴认识","18.3.1 坐标轴认识",[30,157414],{"style":140901,"src":157415},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-204.png",[23,157417,157419],{"id":157418},"_1832-3d移动-translate3d","18.3.2 3D移动 translate3d",[30,157421],{"style":140901,"src":157422},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-205.png",[14,157424,157425],{},"x,y,z如果没有移动量的话，不要不写，不可省略",[14,157427,157428],{},"translate3d的效果需要搭配透视perspective来使用",[30,157430],{"style":140901,"src":157431},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-206.png",[23,157433,157435],{"id":157434},"_1833-透视-perspective","18.3.3 透视 perspective",[30,157437],{"style":140901,"src":157438},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-207.png",[14,157440,157441],{},"透视写在父盒子上，单位为像素",[23,157443,157445],{"id":157444},"_1834-3d旋转-rotate3d","18.3.4 3D旋转 rotate3d",[115,157447,157449],{"id":157448},"_18341-分开解释","18.3.4.1 分开解释",[30,157451],{"style":140901,"src":157452},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-208.png",[30,157454],{"style":140901,"src":157455},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-209.png",[30,157457],{"style":140901,"src":157458},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-210.png",[14,157460,157461],{},"总结来说就是左手原则",[115,157463,157465],{"id":157464},"_18342-rotate3d介绍","18.3.4.2 rotate3d介绍",[30,157467],{"style":140901,"src":157468},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-211.png",[23,157470,157472],{"id":157471},"_1835-3d呈现-transfrom-style","18.3.5 3D呈现 transfrom-style",[30,157474],{"style":140901,"src":157475},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-212.png",[30,157477],{"style":140901,"src":157478},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-213.png",[451,157480,157482],{"className":141045,"code":157481,"language":141047,"meta":32,"style":32},"div {\n  perspective: 500px;\n  transform: rotateX(45deg);\n}\n",[457,157483,157484,157490,157503,157520],{"__ignoreMap":32},[460,157485,157486,157488],{"class":462,"line":463},[460,157487,2737],{"class":470},[460,157489,1348],{"class":466},[460,157491,157492,157495,157497,157499,157501],{"class":462,"line":476},[460,157493,157494],{"class":900},"  perspective",[460,157496,1961],{"class":466},[460,157498,14065],{"class":900},[460,157500,2017],{"class":887},[460,157502,1966],{"class":466},[460,157504,157505,157507,157509,157512,157514,157516,157518],{"class":462,"line":482},[460,157506,151029],{"class":900},[460,157508,1961],{"class":466},[460,157510,157511],{"class":900},"rotateX",[460,157513,2174],{"class":466},[460,157515,17256],{"class":900},[460,157517,156872],{"class":887},[460,157519,2254],{"class":466},[460,157521,157522],{"class":462,"line":488},[460,157523,821],{"class":466},[23,157525,157527],{"id":157526},"_1836-案例","18.3.6 案例",[115,157529,157531],{"id":157530},"_18361-两面反转的盒子","18.3.6.1 两面反转的盒子",[30,157533],{"style":140901,"src":157534},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-214.png",[30,157536],{"style":140901,"src":157537},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-215.png",[30,157539],{"style":140901,"src":157540},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-216.png",[451,157542,157544],{"className":141045,"code":157543,"language":141047,"meta":32,"style":32},"\u002F* 3D 透视（加在父元素上） *\u002F\n.father {\n  perspective: 500px;\n}\n",[457,157545,157546,157551,157557,157569],{"__ignoreMap":32},[460,157547,157548],{"class":462,"line":463},[460,157549,157550],{"class":942},"\u002F* 3D 透视（加在父元素上） *\u002F\n",[460,157552,157553,157555],{"class":462,"line":476},[460,157554,148042],{"class":929},[460,157556,1348],{"class":466},[460,157558,157559,157561,157563,157565,157567],{"class":462,"line":482},[460,157560,157494],{"class":900},[460,157562,1961],{"class":466},[460,157564,14065],{"class":900},[460,157566,2017],{"class":887},[460,157568,1966],{"class":466},[460,157570,157571],{"class":462,"line":488},[460,157572,821],{"class":466},[115,157574,157576],{"id":157575},"_18362-3d导航栏","18.3.6.2 3D导航栏",[30,157578],{"style":140901,"src":157579},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-217.png",[451,157581,157582],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,157583,157584,157588,157602,157606],{"__ignoreMap":32},[460,157585,157586],{"class":462,"line":463},[460,157587,145156],{"class":942},[460,157589,157590,157592,157594,157596,157598,157600],{"class":462,"line":476},[460,157591,781],{"class":466},[460,157593,2737],{"class":470},[460,157595,2740],{"class":929},[460,157597,894],{"class":466},[460,157599,145169],{"class":1353},[460,157601,473],{"class":466},[460,157603,157604],{"class":462,"line":482},[460,157605,145176],{"class":466},[460,157607,157608,157610,157612],{"class":462,"line":488},[460,157609,1776],{"class":466},[460,157611,2737],{"class":470},[460,157613,473],{"class":466},[115,157615,157617],{"id":157616},"_18363-旋转木马","18.3.6.3 旋转木马",[30,157619],{"style":140901,"src":157620},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-218.png",[451,157622,157623],{"className":141045,"code":156848,"language":141047,"meta":32,"style":32},[457,157624,157625,157631,157647],{"__ignoreMap":32},[460,157626,157627,157629],{"class":462,"line":463},[460,157628,2737],{"class":470},[460,157630,1348],{"class":466},[460,157632,157633,157635,157637,157639,157641,157643,157645],{"class":462,"line":476},[460,157634,151029],{"class":900},[460,157636,1961],{"class":466},[460,157638,156865],{"class":900},[460,157640,2174],{"class":466},[460,157642,17256],{"class":900},[460,157644,156872],{"class":887},[460,157646,2254],{"class":466},[460,157648,157649],{"class":462,"line":482},[460,157650,821],{"class":466},[1944,157652,157653],{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":157655},[157656,157663],{"id":156751,"depth":476,"text":156752,"children":157657},[157658,157659,157660,157661,157662],{"id":156775,"depth":482,"text":156776},{"id":156830,"depth":482,"text":156831},{"id":156955,"depth":482,"text":156956},{"id":157058,"depth":482,"text":157059},{"id":157376,"depth":482,"text":157377},{"id":157404,"depth":476,"text":157405,"children":157664},[157665,157666,157667,157668,157669,157670],{"id":157411,"depth":482,"text":157412},{"id":157418,"depth":482,"text":157419},{"id":157434,"depth":482,"text":157435},{"id":157444,"depth":482,"text":157445},{"id":157471,"depth":482,"text":157472},{"id":157526,"depth":482,"text":157527},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch18-2d3d",{"title":156743,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch18-2D动画与3D转换","1_0Tn58EtT3Zxiv54Fdr4nuYTjJFUVecbnj1dyl9_b0",{"id":157677,"title":157678,"body":157679,"description":16682,"extension":16683,"meta":157882,"navigation":521,"path":157883,"seo":157884,"stem":157885,"__hash__":157886},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch19-移动端基础-前缀现状与视口.md","19. 移动端基础-前缀现状与视口",{"type":7,"value":157680,"toc":157871},[157681,157684,157688,157691,157694,157698,157701,157704,157707,157711,157714,157718,157721,157725,157728,157732,157746,157750,157775,157778,157781,157798,157802,157806,157809,157812,157816,157819,157822,157840,157844,157847,157861,157865,157868],[10,157682,157678],{"id":157683},"_19-移动端基础-前缀现状与视口",[18,157685,157687],{"id":157686},"_191-浏览器私有前缀","19.1 浏览器私有前缀",[30,157689],{"style":140901,"src":157690},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-219.png",[14,157692,157693],{},"意思就是加个前缀，增加兼容性",[18,157695,157697],{"id":157696},"_192-移动端现状认识","19.2 移动端现状认识",[30,157699],{"style":140901,"src":157700},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-220.png",[14,157702,157703],{},"调试方法：",[30,157705],{"style":140901,"src":157706},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-221.png",[18,157708,157710],{"id":157709},"_193-视口","19.3 视口",[14,157712,157713],{},"**视口（viewport）**就是浏览器显示页面内容的屏幕区域。 视口可以分为布局视口、视觉视口和理想视口",[23,157715,157717],{"id":157716},"_1931-布局视口-layout-viewport","19.3.1 布局视口 layout viewport",[30,157719],{"style":140901,"src":157720},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-222.png",[23,157722,157724],{"id":157723},"_1932-视觉视口-visual-viewport","19.3.2 视觉视口 visual viewport",[30,157726],{"style":140901,"src":157727},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-223.png",[23,157729,157731],{"id":157730},"_1933-理想视口-ideal-viewport","19.3.3 理想视口 ideal viewport",[40,157733,157734,157737,157740,157743],{},[43,157735,157736],{},"为了使网站在移动端有最理想的浏览和阅读宽度而设定",[43,157738,157739],{},"理想视口，对设备来讲，是最理想的视口尺寸",[43,157741,157742],{},"需要手动添写meta视口标签通知浏览器操作",[43,157744,157745],{},"meta视口标签的主要目的：布局视口的宽度应该与理想视口的宽度一致，简单理解就是设备有多宽，我们布局的视口就多宽",[23,157747,157749],{"id":157748},"_1934-meta视口标签","19.3.4 meta视口标签",[451,157751,157753],{"className":141792,"code":157752,"language":141794,"meta":32,"style":32},"\u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n",[457,157754,157755],{"__ignoreMap":32},[460,157756,157757,157759,157761,157763,157765,157767,157769,157771,157773],{"class":462,"line":463},[460,157758,781],{"class":466},[460,157760,1889],{"class":470},[460,157762,1908],{"class":929},[460,157764,894],{"class":466},[460,157766,1913],{"class":1353},[460,157768,1916],{"class":929},[460,157770,894],{"class":466},[460,157772,1921],{"class":1353},[460,157774,473],{"class":466},[30,157776],{"style":140901,"src":157777},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-224.png",[14,157779,157780],{},"标准视口设置：",[103,157782,157783,157786,157789,157792,157795],{},[43,157784,157785],{},"视口宽度和设备保持一致",[43,157787,157788],{},"视口的默认缩放比例1.0",[43,157790,157791],{},"不允许用户自行缩放",[43,157793,157794],{},"最大允许的缩放比例1.0",[43,157796,157797],{},"最小允许的缩放比例1.0",[23,157799,157801],{"id":157800},"_1935-二倍图","19.3.5 二倍图",[115,157803,157805],{"id":157804},"_19351-物理像素物理像素比","19.3.5.1 物理像素&物理像素比",[30,157807],{"style":140901,"src":157808},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-225.png",[30,157810],{"style":140901,"src":157811},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-226.png",[115,157813,157815],{"id":157814},"_19352-多倍图","19.3.5.2 多倍图",[30,157817],{"style":140901,"src":157818},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-227.png",[14,157820,157821],{},"二倍图法，代码如下：",[451,157823,157825],{"className":141045,"code":157824,"language":141047,"meta":32,"style":32},"\u002F* 二倍图：使用 2x 分辨率图片，通过 background-size 缩小到实际显示尺寸 *\u002F\nbackground-size: 50% 50%;\n",[457,157826,157827,157832],{"__ignoreMap":32},[460,157828,157829],{"class":462,"line":463},[460,157830,157831],{"class":942},"\u002F* 二倍图：使用 2x 分辨率图片，通过 background-size 缩小到实际显示尺寸 *\u002F\n",[460,157833,157834,157837],{"class":462,"line":476},[460,157835,157836],{"class":470},"background-size",[460,157838,157839],{"class":466},": 50% 50%;\n",[115,157841,157843],{"id":157842},"_19353-背景缩放-background-size","19.3.5.3 背景缩放 background-size",[30,157845],{"style":140901,"src":157846},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-228.png",[103,157848,157849,157852,157855,157858],{},[43,157850,157851],{},"如果只写一个参数，肯定是宽度，高度省略了，会进行等比缩放",[43,157853,157854],{},"里边的单位可以跟百分比% 是相对于父盒子来说的",[43,157856,157857],{},"cover运行的时候就是沿着宽高方向进行放大背景，所以会可能导致部分背景图片显示不全，正方形时就可以显示全",[43,157859,157860],{},"contain它是高度和宽度等比例拉伸，当宽度或高度 铺满div盒子就不再进行拉伸了，div可能有部分空白区域",[115,157862,157864],{"id":157863},"_19354-二倍精灵图做法","19.3.5.4 二倍精灵图做法",[30,157866],{"style":140901,"src":157867},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-229.png",[1944,157869,157870],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":32,"searchDepth":476,"depth":476,"links":157872},[157873,157874,157875],{"id":157686,"depth":476,"text":157687},{"id":157696,"depth":476,"text":157697},{"id":157709,"depth":476,"text":157710,"children":157876},[157877,157878,157879,157880,157881],{"id":157716,"depth":482,"text":157717},{"id":157723,"depth":482,"text":157724},{"id":157730,"depth":482,"text":157731},{"id":157748,"depth":482,"text":157749},{"id":157800,"depth":482,"text":157801},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch19",{"title":157678,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch19-移动端基础-前缀现状与视口","I7YPWmMspOfCCPUuENRXhFE3PC_6s5-J1ZyI4ciWtnM",{"id":157888,"title":157889,"body":157890,"description":16682,"extension":16683,"meta":158767,"navigation":521,"path":158768,"seo":158769,"stem":158770,"__hash__":158771},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch20-移动端布局实战上篇.md","20. 移动端布局实战上篇",{"type":7,"value":157891,"toc":158751},[157892,157895,157899,157906,157909,157916,157919,157924,157927,157931,157935,157942,157945,157948,157952,157955,157958,157961,157964,157967,157971,157974,157978,157980,157983,157986,157989,157992,157994,157997,157999,158029,158031,158061,158065,158068,158072,158075,158092,158095,158098,158174,158176,158179,158182,158185,158188,158190,158193,158196,158200,158222,158225,158228,158232,158235,158241,158244,158248,158251,158254,158258,158261,158264,158267,158271,158274,158277,158280,158283,158287,158290,158294,158301,158304,158307,158310,158313,158323,158326,158329,158336,158339,158343,158346,158349,158353,158356,158359,158362,158407,158410,158413,158416,158418,158547,158549,158587,158590,158593,158595,158713,158715,158749],[10,157893,157889],{"id":157894},"_20-移动端布局实战上篇",[18,157896,157898],{"id":157897},"_201-移动端主流方案","20.1 移动端主流方案",[103,157900,157901],{},[43,157902,157903],{},[3944,157904,157905],{},"单独移动端页面（主流）",[30,157907],{"style":140901,"src":157908},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-230.png",[103,157910,157911],{"start":476},[43,157912,157913],{},[3944,157914,157915],{},"响应式兼容PC移动端",[30,157917],{"style":140901,"src":157918},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-231.png",[103,157920,157921],{"start":482},[43,157922,157923],{},"两种页面选型布局方式",[30,157925],{"style":140901,"src":157926},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-232.png",[18,157928,157930],{"id":157929},"_202-移动端技术解决方案","20.2 移动端技术解决方案",[23,157932,157934],{"id":157933},"_2021-css初始化-normalizecss","20.2.1 CSS初始化 normalize.css",[14,157936,157937,157938],{},"官网地址： ",[2756,157939,157940],{"href":157940,"rel":157941},"http:\u002F\u002Fnecolas.github.io\u002Fnormalize.css\u002F",[4943],[30,157943],{"style":140901,"src":157944},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-233.png",[30,157946],{"style":140901,"src":157947},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-234.png",[23,157949,157951],{"id":157950},"_2022-css3-盒子模型-box-sizing","20.2.2 CSS3 盒子模型 box-sizing",[30,157953],{"style":140901,"src":157954},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-235.png",[30,157956],{"style":140901,"src":157957},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-236.png",[14,157959,157960],{},"去除高亮：",[14,157962,157963],{},"在用a元素的时候在pc端没事，但是在手机端一点会有颜色背景，去除的方式是",[14,157965,157966],{},"-webkit- tap-highlight-color: transparent;",[18,157968,157970],{"id":157969},"_203-流式布局百分比布局","20.3 流式布局（百分比布局）",[30,157972],{"style":140901,"src":157973},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-237.png",[18,157975,157977],{"id":157976},"_204-流式布局案例","20.4 流式布局案例",[14,157979,357],{},[14,157981,157982],{},"移动端在进行大盒子中左右两个盒子大小固定不变，中间盒子随着大盒子的放大而变大，变小而变小，此时可以一定要学会使用定位，定位非常非常重要，如果想让大盒子不动，不随着页面向下的滑动而改变，此时对大盒子使用固定定位，并将宽度设置为100%，高度自己定，左右两个盒子设置为固定定位，并给定其确定的宽和高，让它不会随意浏览器的缩放而改变，对中间盒子采用标准流做法，给它设定一个magin，让它与左右盒子相隔，宽度设为100%，高度设为确定值，设置magin是因为那两个左右盒子是绝对定位，它会盖住中间盒子两边的部分的。",[14,157984,157985],{},"也可以使用flex布局来实现，给左右盒子设置好宽高，对大盒子使用flex布局，然后中间剩余部分全给中间盒子即可实现！",[14,157987,157988],{},"图片格式：",[30,157990],{"style":140901,"src":157991},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-238.png",[14,157993,150088],{},[30,157995],{"style":140901,"src":157996},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-239.png",[14,157998,154415],{},[451,158000,158001],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,158002,158003],{"__ignoreMap":32},[460,158004,158005,158007,158009,158011,158013,158015,158017,158019,158021,158023,158025,158027],{"class":462,"line":463},[460,158006,781],{"class":466},[460,158008,30],{"class":470},[460,158010,12081],{"class":929},[460,158012,894],{"class":466},[460,158014,148562],{"class":1353},[460,158016,16224],{"class":929},[460,158018,894],{"class":466},[460,158020,148569],{"class":1353},[460,158022,148572],{"class":929},[460,158024,894],{"class":466},[460,158026,148577],{"class":1353},[460,158028,473],{"class":466},[14,158030,154504],{},[451,158032,158033],{"className":141792,"code":148547,"language":141794,"meta":32,"style":32},[457,158034,158035],{"__ignoreMap":32},[460,158036,158037,158039,158041,158043,158045,158047,158049,158051,158053,158055,158057,158059],{"class":462,"line":463},[460,158038,781],{"class":466},[460,158040,30],{"class":470},[460,158042,12081],{"class":929},[460,158044,894],{"class":466},[460,158046,148562],{"class":1353},[460,158048,16224],{"class":929},[460,158050,894],{"class":466},[460,158052,148569],{"class":1353},[460,158054,148572],{"class":929},[460,158056,894],{"class":466},[460,158058,148577],{"class":1353},[460,158060,473],{"class":466},[18,158062,158064],{"id":158063},"_205-flex布局","20.5 flex布局",[30,158066],{"style":140901,"src":158067},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-240.png",[23,158069,158071],{"id":158070},"_2051-布局原理","20.5.1 布局原理",[14,158073,158074],{},"flex 是 flexible Box 的缩写，意为\"弹性布局\"，用来为盒状模型提供最大的灵活性，任何一个容器都可以指定为 flex 布局",[40,158076,158077,158080,158083,158086,158089],{},[43,158078,158079],{},"当我们为父盒子设为 flex 布局以后，子元素的 float、clear 和 vertical-align 属性将失效",[43,158081,158082],{},"伸缩布局 = 弹性布局 = 伸缩盒布局 = 弹性盒布局 =flex布局",[43,158084,158085],{},"采用 Flex 布局的元素，称为 Flex 容器（flex container），简称\"容器\"。它的所有子元素自动成为容器成员，称为 Flex 项目（flex item），简称\"项目\"",[43,158087,158088],{},"总结来说就是：就是通过给父盒子添加flex属性，来控制子盒子的位置和排列方式",[43,158090,158091],{},"flex可以直接将行内元素变成类似于浮动的效果，就有宽高了",[14,158093,158094],{},"父盒子被设置为弹性布局后，如果不给它设置宽度的话，父盒子的宽度就是子盒子撑开的宽度，如果有两个子盒子，第一个子盒子设置了宽高，第二个盒子宽度设为100%，则第二个盒子的宽度就是第一个盒子的宽度。父盒子由第一个盒子撑开",[14,158096,158097],{},"在弹性布局中如果是个单选标签，可以使用下边的方式进行布局：",[451,158099,158101],{"className":141045,"code":158100,"language":141047,"meta":32,"style":32},"\u002F* Flex 弹性布局 *\u002F\n.container {\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n  flex-wrap: wrap;\n}\n",[457,158102,158103,158108,158115,158125,158137,158148,158159,158170],{"__ignoreMap":32},[460,158104,158105],{"class":462,"line":463},[460,158106,158107],{"class":942},"\u002F* Flex 弹性布局 *\u002F\n",[460,158109,158110,158113],{"class":462,"line":476},[460,158111,158112],{"class":929},".container",[460,158114,1348],{"class":466},[460,158116,158117,158119,158121,158123],{"class":462,"line":482},[460,158118,142661],{"class":900},[460,158120,1961],{"class":466},[460,158122,2042],{"class":900},[460,158124,1966],{"class":466},[460,158126,158127,158130,158132,158135],{"class":462,"line":488},[460,158128,158129],{"class":900},"  flex-direction",[460,158131,1961],{"class":466},[460,158133,158134],{"class":900},"row",[460,158136,1966],{"class":466},[460,158138,158139,158142,158144,158146],{"class":462,"line":494},[460,158140,158141],{"class":900},"  justify-content",[460,158143,1961],{"class":466},[460,158145,67939],{"class":900},[460,158147,1966],{"class":466},[460,158149,158150,158153,158155,158157],{"class":462,"line":500},[460,158151,158152],{"class":900},"  align-items",[460,158154,1961],{"class":466},[460,158156,5545],{"class":900},[460,158158,1966],{"class":466},[460,158160,158161,158164,158166,158168],{"class":462,"line":506},[460,158162,158163],{"class":900},"  flex-wrap",[460,158165,1961],{"class":466},[460,158167,2054],{"class":900},[460,158169,1966],{"class":466},[460,158171,158172],{"class":462,"line":512},[460,158173,821],{"class":466},[14,158175,86595],{},[14,158177,158178],{},".form-item .male-label {",[14,158180,158181],{},"   margin-right: 20px;",[14,158183,158184],{},"   display: inline-flex;",[14,158186,158187],{},"   align-items: center;",[14,158189,612],{},[30,158191],{"style":140901,"src":158192},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-241.png",[30,158194],{"style":140901,"src":158195},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-242.png",[23,158197,158199],{"id":158198},"_2052-常见父项属性","20.5.2 常见父项属性",[103,158201,158202,158205,158208,158211,158214,158217,158220],{},[43,158203,158204],{},"flex-direction：设置主轴的方向",[43,158206,158207],{},"justify-content：设置主轴上的子元素排列方式",[43,158209,158210],{},"flex-wrap：设置子元素是否换行",[43,158212,158213],{},"align-content：设置侧轴上的子元素的排列方式（多行）",[43,158215,158216],{},"align-items：设置侧轴上的子元素排列方式（单行）",[43,158218,158219],{},"flex-flow：复合属性，相当于同时设置了 flex-direction 和 flex-wrap",[43,158221,158204],{},[30,158223],{"style":140901,"src":158224},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-243.png",[30,158226],{"style":140901,"src":158227},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-244.png",[103,158229,158230],{"start":476},[43,158231,158207],{},[30,158233],{"style":140901,"src":158234},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-245.png",[14,158236,158237,158240],{},[457,158238,158239],{},"space-evenly","：所有间距都完全相等（包括两端和元素之间）",[14,158242,158243],{},"跟着主轴走",[103,158245,158246],{"start":482},[43,158247,158210],{},[30,158249],{"style":140901,"src":158250},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-246.png",[14,158252,158253],{},"flex布局中是默认不换行的，当父亲盒子宽100px，高100px，内部的5个四盒子设置 宽为30px，高30px，如果排列方式按照默认，则按照x轴来进行排，从左到右的方式来进行排列，则子盒子不会换行，子盒子的宽度将会失效，然后会自动调整宽度以适应这个父盒子，会将父盒子沿这个轴塞满",[103,158255,158256],{"start":488},[43,158257,158213],{},[30,158259],{"style":140901,"src":158260},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-247.png",[14,158262,158263],{},"搭配前边的主轴排列方式就可以实现对主轴与侧轴的操作",[14,158265,158266],{},"stretch:沿着侧轴拉伸，但是要首先去掉侧轴方向的宽或高：若侧轴为y轴，则去掉高度大小",[103,158268,158269],{"start":494},[43,158270,158216],{},[30,158272],{"style":140901,"src":158273},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-248.png",[14,158275,158276],{},"align-items与align-content之间的区别：",[14,158278,158279],{},"单找items，多找content",[30,158281],{"style":140901,"src":158282},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-249.png",[103,158284,158285],{"start":500},[43,158286,158219],{},[30,158288],{"style":140901,"src":158289},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-250.png",[23,158291,158293],{"id":158292},"_2053-flex布局子项常见属性","20.5.3 flex布局子项常见属性",[103,158295,158296],{},[43,158297,158298],{},[3944,158299,158300],{},"flex 属性",[14,158302,158303],{},"flex 属性定义子项目分配剩余空间，用flex来表示占多少份数",[30,158305],{"style":140901,"src":158306},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-251.png",[14,158308,158309],{},"可以理解为没站位的剩余空间 ，数字表示的含义理解为：数字\u002F总元素",[14,158311,158312],{},"flex后边也可以跟百分比，通常用于父盒子不给高度，宽度为100%，想让子盒子换行和撑开的情况，li没有宽度，此时用flex：1；是不太起作用的，他不会换行，这是因为没有宽度，此时可以通过给子盒子使用flex: 20%;让子盒子平均为大盒子宽度的百分之50,这时候给父盒子加上flex-wrap: wrap;就管用了，就可以实现换行了",[103,158314,158315],{"start":476},[43,158316,158317,6464,158320],{},[3944,158318,158319],{},"align-self",[3944,158321,158322],{},"控制子项自己在侧轴上的排列方式",[30,158324],{"style":140901,"src":158325},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-252.png",[14,158327,158328],{},"单个子盒子在父盒子侧轴上的排列方式",[103,158330,158331],{"start":482},[43,158332,158333,158335],{},[3944,158334,109790],{}," 属性定义项目的排列顺序",[30,158337],{"style":140901,"src":158338},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-253.png",[23,158340,158342],{"id":158341},"_2054-背景线性渐变","20.5.4 背景线性渐变",[30,158344],{"style":140901,"src":158345},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-254.png",[14,158347,158348],{},"必须要添加浏览器的私有前缀",[23,158350,158352],{"id":158351},"_2055-携程网首页案例","20.5.5 携程网首页案例",[14,158354,158355],{},"学到最重要的知识：",[14,158357,158358],{},"flex处理这样的布局思路",[30,158360],{"style":140901,"src":158361},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-255.png",[451,158363,158365],{"className":141045,"code":158364,"language":141047,"meta":32,"style":32},".container {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n",[457,158366,158367,158373,158383,158393,158403],{"__ignoreMap":32},[460,158368,158369,158371],{"class":462,"line":463},[460,158370,158112],{"class":929},[460,158372,1348],{"class":466},[460,158374,158375,158377,158379,158381],{"class":462,"line":476},[460,158376,142661],{"class":900},[460,158378,1961],{"class":466},[460,158380,2042],{"class":900},[460,158382,1966],{"class":466},[460,158384,158385,158387,158389,158391],{"class":462,"line":482},[460,158386,158141],{"class":900},[460,158388,1961],{"class":466},[460,158390,5545],{"class":900},[460,158392,1966],{"class":466},[460,158394,158395,158397,158399,158401],{"class":462,"line":488},[460,158396,158152],{"class":900},[460,158398,1961],{"class":466},[460,158400,5545],{"class":900},[460,158402,1966],{"class":466},[460,158404,158405],{"class":462,"line":494},[460,158406,821],{"class":466},[14,158408,158409],{},"对上述的布局思路的多个多个背景图片替换的方式如下：一定要学会思路！！！",[14,158411,158412],{},"使用属性选择器",[30,158414],{"style":140901,"src":158415},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-256.png",[14,158417,85044],{},[451,158419,158421],{"className":141792,"code":158420,"language":141794,"meta":32,"style":32},"\u003C!-- 携程网移动端案例结构 -->\n\u003Cdiv class=\"container\">\n  \u003C!-- 搜索栏 -->\n  \u003Cdiv class=\"search-index\">...\u003C\u002Fdiv>\n  \u003C!-- 焦点图 -->\n  \u003Cdiv class=\"focus\">...\u003C\u002Fdiv>\n  \u003C!-- 主导航 -->\n  \u003Cdiv class=\"local-nav\">...\u003C\u002Fdiv>\n  \u003C!-- 子导航 -->\n  \u003Cdiv class=\"nav-common\">...\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n",[457,158422,158423,158428,158442,158447,158467,158472,158491,158496,158515,158520,158539],{"__ignoreMap":32},[460,158424,158425],{"class":462,"line":463},[460,158426,158427],{"class":942},"\u003C!-- 携程网移动端案例结构 -->\n",[460,158429,158430,158432,158434,158436,158438,158440],{"class":462,"line":476},[460,158431,781],{"class":466},[460,158433,2737],{"class":470},[460,158435,2740],{"class":929},[460,158437,894],{"class":466},[460,158439,16174],{"class":1353},[460,158441,473],{"class":466},[460,158443,158444],{"class":462,"line":482},[460,158445,158446],{"class":942},"  \u003C!-- 搜索栏 -->\n",[460,158448,158449,158451,158453,158455,158457,158460,158463,158465],{"class":462,"line":488},[460,158450,467],{"class":466},[460,158452,2737],{"class":470},[460,158454,2740],{"class":929},[460,158456,894],{"class":466},[460,158458,158459],{"class":1353},"\"search-index\"",[460,158461,158462],{"class":466},">...\u003C\u002F",[460,158464,2737],{"class":470},[460,158466,473],{"class":466},[460,158468,158469],{"class":462,"line":494},[460,158470,158471],{"class":942},"  \u003C!-- 焦点图 -->\n",[460,158473,158474,158476,158478,158480,158482,158485,158487,158489],{"class":462,"line":500},[460,158475,467],{"class":466},[460,158477,2737],{"class":470},[460,158479,2740],{"class":929},[460,158481,894],{"class":466},[460,158483,158484],{"class":1353},"\"focus\"",[460,158486,158462],{"class":466},[460,158488,2737],{"class":470},[460,158490,473],{"class":466},[460,158492,158493],{"class":462,"line":506},[460,158494,158495],{"class":942},"  \u003C!-- 主导航 -->\n",[460,158497,158498,158500,158502,158504,158506,158509,158511,158513],{"class":462,"line":512},[460,158499,467],{"class":466},[460,158501,2737],{"class":470},[460,158503,2740],{"class":929},[460,158505,894],{"class":466},[460,158507,158508],{"class":1353},"\"local-nav\"",[460,158510,158462],{"class":466},[460,158512,2737],{"class":470},[460,158514,473],{"class":466},[460,158516,158517],{"class":462,"line":518},[460,158518,158519],{"class":942},"  \u003C!-- 子导航 -->\n",[460,158521,158522,158524,158526,158528,158530,158533,158535,158537],{"class":462,"line":525},[460,158523,467],{"class":466},[460,158525,2737],{"class":470},[460,158527,2740],{"class":929},[460,158529,894],{"class":466},[460,158531,158532],{"class":1353},"\"nav-common\"",[460,158534,158462],{"class":466},[460,158536,2737],{"class":470},[460,158538,473],{"class":466},[460,158540,158541,158543,158545],{"class":462,"line":531},[460,158542,1776],{"class":466},[460,158544,2737],{"class":470},[460,158546,473],{"class":466},[14,158548,86595],{},[451,158550,158551],{"className":141045,"code":151497,"language":141047,"meta":32,"style":32},[457,158552,158553,158567,158583],{"__ignoreMap":32},[460,158554,158555,158557,158559,158561,158563,158565],{"class":462,"line":463},[460,158556,70068],{"class":470},[460,158558,17601],{"class":466},[460,158560,117600],{"class":929},[460,158562,894],{"class":887},[460,158564,78868],{"class":1353},[460,158566,151514],{"class":466},[460,158568,158569,158571,158573,158575,158577,158579,158581],{"class":462,"line":476},[460,158570,87038],{"class":900},[460,158572,1961],{"class":466},[460,158574,901],{"class":900},[460,158576,2017],{"class":887},[460,158578,7201],{"class":900},[460,158580,144625],{"class":900},[460,158582,1966],{"class":466},[460,158584,158585],{"class":462,"line":482},[460,158586,821],{"class":466},[14,158588,158589],{},"总代码和效果展示：",[30,158591],{"style":140901,"src":158592},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-257.png",[14,158594,85044],{},[451,158596,158597],{"className":141792,"code":158420,"language":141794,"meta":32,"style":32},[457,158598,158599,158603,158617,158621,158639,158643,158661,158665,158683,158687,158705],{"__ignoreMap":32},[460,158600,158601],{"class":462,"line":463},[460,158602,158427],{"class":942},[460,158604,158605,158607,158609,158611,158613,158615],{"class":462,"line":476},[460,158606,781],{"class":466},[460,158608,2737],{"class":470},[460,158610,2740],{"class":929},[460,158612,894],{"class":466},[460,158614,16174],{"class":1353},[460,158616,473],{"class":466},[460,158618,158619],{"class":462,"line":482},[460,158620,158446],{"class":942},[460,158622,158623,158625,158627,158629,158631,158633,158635,158637],{"class":462,"line":488},[460,158624,467],{"class":466},[460,158626,2737],{"class":470},[460,158628,2740],{"class":929},[460,158630,894],{"class":466},[460,158632,158459],{"class":1353},[460,158634,158462],{"class":466},[460,158636,2737],{"class":470},[460,158638,473],{"class":466},[460,158640,158641],{"class":462,"line":494},[460,158642,158471],{"class":942},[460,158644,158645,158647,158649,158651,158653,158655,158657,158659],{"class":462,"line":500},[460,158646,467],{"class":466},[460,158648,2737],{"class":470},[460,158650,2740],{"class":929},[460,158652,894],{"class":466},[460,158654,158484],{"class":1353},[460,158656,158462],{"class":466},[460,158658,2737],{"class":470},[460,158660,473],{"class":466},[460,158662,158663],{"class":462,"line":506},[460,158664,158495],{"class":942},[460,158666,158667,158669,158671,158673,158675,158677,158679,158681],{"class":462,"line":512},[460,158668,467],{"class":466},[460,158670,2737],{"class":470},[460,158672,2740],{"class":929},[460,158674,894],{"class":466},[460,158676,158508],{"class":1353},[460,158678,158462],{"class":466},[460,158680,2737],{"class":470},[460,158682,473],{"class":466},[460,158684,158685],{"class":462,"line":518},[460,158686,158519],{"class":942},[460,158688,158689,158691,158693,158695,158697,158699,158701,158703],{"class":462,"line":525},[460,158690,467],{"class":466},[460,158692,2737],{"class":470},[460,158694,2740],{"class":929},[460,158696,894],{"class":466},[460,158698,158532],{"class":1353},[460,158700,158462],{"class":466},[460,158702,2737],{"class":470},[460,158704,473],{"class":466},[460,158706,158707,158709,158711],{"class":462,"line":531},[460,158708,1776],{"class":466},[460,158710,2737],{"class":470},[460,158712,473],{"class":466},[14,158714,86595],{},[451,158716,158717],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,158718,158719,158723,158737,158741],{"__ignoreMap":32},[460,158720,158721],{"class":462,"line":463},[460,158722,145156],{"class":942},[460,158724,158725,158727,158729,158731,158733,158735],{"class":462,"line":476},[460,158726,781],{"class":466},[460,158728,2737],{"class":470},[460,158730,2740],{"class":929},[460,158732,894],{"class":466},[460,158734,145169],{"class":1353},[460,158736,473],{"class":466},[460,158738,158739],{"class":462,"line":482},[460,158740,145176],{"class":466},[460,158742,158743,158745,158747],{"class":462,"line":488},[460,158744,1776],{"class":466},[460,158746,2737],{"class":470},[460,158748,473],{"class":466},[1944,158750,152446],{},{"title":32,"searchDepth":476,"depth":476,"links":158752},[158753,158754,158758,158759,158760],{"id":157897,"depth":476,"text":157898},{"id":157929,"depth":476,"text":157930,"children":158755},[158756,158757],{"id":157933,"depth":482,"text":157934},{"id":157950,"depth":482,"text":157951},{"id":157969,"depth":476,"text":157970},{"id":157976,"depth":476,"text":157977},{"id":158063,"depth":476,"text":158064,"children":158761},[158762,158763,158764,158765,158766],{"id":158070,"depth":482,"text":158071},{"id":158198,"depth":482,"text":158199},{"id":158292,"depth":482,"text":158293},{"id":158341,"depth":482,"text":158342},{"id":158351,"depth":482,"text":158352},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch20",{"title":157889,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch20-移动端布局实战上篇","cQcqj5e9hR6NoF8kN47rpTyWJSyfRUI7ogbrP5czAbc",{"id":158773,"title":158774,"body":158775,"description":16682,"extension":16683,"meta":160002,"navigation":521,"path":160003,"seo":160004,"stem":160005,"__hash__":160006},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch21-移动端布局实战下篇.md","21. 移动端布局实战下篇",{"type":7,"value":158776,"toc":159980},[158777,158780,158784,158788,158791,158794,158798,158803,158806,158809,158812,158815,158818,158875,158878,158883,158886,158889,158893,158904,158908,158911,158914,158921,158926,158930,158933,158939,158942,158946,158949,158956,158959,158962,158969,158972,158979,158982,158985,158992,158995,158998,159000,159017,159021,159024,159027,159030,159034,159037,159040,159043,159046,159049,159052,159054,159057,159060,159122,159125,159235,159242,159248,159251,159254,159258,159261,159265,159270,159273,159280,159283,159289,159294,159297,159300,159303,159306,159309,159312,159315,159318,159374,159376,159402,159406,159409,159412,159415,159423,159426,159429,159433,159489,159492,159496,159502,159513,159516,159521,159524,159527,159533,159536,159539,159542,159545,159548,159551,159554,159557,159582,159588,159591,159594,159597,159600,159603,159606,159611,159614,159617,159620,159628,159631,159638,159641,159644,159646,159670,159672,159675,159678,159681,159684,159687,159690,159693,159727,159730,159733,159767,159774,159777,159780,159783,159786,159789,159792,159799,159802,159805,159808,159811,159818,159821,159824,159831,159834,159837,159841,159844,159847,159850,159853,159856,159859,159862,159865,159867,159891,159893,159917,159921,159932,159935,159938,159941,159944,159947,159950,159953,159956,159959,159962,159965,159968,159971,159974,159977],[10,158778,158774],{"id":158779},"_21-移动端布局实战下篇",[18,158781,158783],{"id":158782},"_211-rem适配布局","21.1 rem适配布局",[23,158785,158787],{"id":158786},"_2111-rem单位","21.1.1 rem单位",[30,158789],{"style":140901,"src":158790},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-258.png",[14,158792,158793],{},"也就是父盒子font-size设置为12px的话，子盒子的font-size设为10em，则子盒子文字大小为120px",[23,158795,158797],{"id":158796},"_2112-媒体查询","21.1.2 媒体查询",[103,158799,158800],{},[43,158801,158802],{},"参数介绍",[30,158804],{"style":140901,"src":158805},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-259.png",[30,158807],{"style":140901,"src":158808},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-260.png",[30,158810],{"style":140901,"src":158811},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-261.png",[30,158813],{"style":140901,"src":158814},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-262.png",[30,158816],{"style":140901,"src":158817},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-263.png",[451,158819,158821],{"className":141045,"code":158820,"language":141047,"meta":32,"style":32},"\u002F* 媒体查询 *\u002F\n@media (max-width: 768px) {\n  .container {\n    width: 100%;\n  }\n}\n",[457,158822,158823,158828,158847,158854,158867,158871],{"__ignoreMap":32},[460,158824,158825],{"class":462,"line":463},[460,158826,158827],{"class":942},"\u002F* 媒体查询 *\u002F\n",[460,158829,158830,158833,158835,158838,158840,158843,158845],{"class":462,"line":476},[460,158831,158832],{"class":887},"@media",[460,158834,11704],{"class":466},[460,158836,158837],{"class":900},"max-width",[460,158839,1961],{"class":466},[460,158841,158842],{"class":900},"768",[460,158844,2017],{"class":887},[460,158846,2180],{"class":466},[460,158848,158849,158852],{"class":462,"line":482},[460,158850,158851],{"class":929},"  .container",[460,158853,1348],{"class":466},[460,158855,158856,158859,158861,158863,158865],{"class":462,"line":488},[460,158857,158858],{"class":900},"    width",[460,158860,1961],{"class":466},[460,158862,2325],{"class":900},[460,158864,2328],{"class":887},[460,158866,1966],{"class":466},[460,158868,158869],{"class":462,"line":494},[460,158870,141841],{"class":466},[460,158872,158873],{"class":462,"line":500},[460,158874,821],{"class":466},[14,158876,158877],{},"媒体查询一般按照从大到小或者 从小到大的顺序来",[103,158879,158880],{"start":476},[43,158881,158882],{},"引入资源",[30,158884],{"style":140901,"src":158885},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-264.png",[14,158887,158888],{},"引入资源就是针对不同的屏幕尺寸 调用不同的css文件",[23,158890,158892],{"id":158891},"_2113-媒体查询rem实现元素动态大小变化","21.1.3 媒体查询+rem实现元素动态大小变化",[40,158894,158895,158898,158901],{},[43,158896,158897],{},"rem单位是跟着html来走的，有了rem页面元素可以设置不同大小尺寸",[43,158899,158900],{},"媒体查询可以根据不同设备宽度来修改样式",[43,158902,158903],{},"媒体查询+rem 就可以实现不同设备宽度，实现页面元素大小的动态变化",[18,158905,158907],{"id":158906},"_212-less基础","21.2 Less基础",[14,158909,158910],{},"css冗余度较高，不利于复用，没有很好的计算能力",[14,158912,158913],{},"Less可以解决该问题，它是css的扩展语言",[14,158915,158916,158917],{},"Less中文网址： ",[2756,158918,158919],{"href":158919,"rel":158920},"http:\u002F\u002Flesscss.cn\u002F",[4943],[14,158922,158923],{},[3944,158924,158925],{},"Less 是一门 CSS 预处理语言，它扩展了CSS的动态特性",[23,158927,158929],{"id":158928},"_2121-less安装","21.2.1 less安装",[14,158931,158932],{},"如果使用vscode，则无需进行下方安装步骤",[14,158934,158935],{},[2756,158936,158937],{"href":158937,"rel":158938},"http:\u002F\u002Fnodejs.cn\u002Fdownload\u002F",[4943],[30,158940],{"style":140901,"src":158941},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-265.png",[23,158943,158945],{"id":158944},"_2122-less使用","21.2.2 less使用",[14,158947,158948],{},"我们首先新建一个后缀名为less的文件， 在这个less文件里面书写less语句",[103,158950,158951],{},[43,158952,158953],{},[3944,158954,158955],{},"Less 变量",[30,158957],{"style":140901,"src":158958},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-266.png",[30,158960],{"style":140901,"src":158961},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-267.png",[103,158963,158964],{"start":476},[43,158965,158966],{},[3944,158967,158968],{},"Less 编译",[30,158970],{"style":140901,"src":158971},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-268.png",[103,158973,158974],{"start":482},[43,158975,158976],{},[3944,158977,158978],{},"Less 嵌套",[30,158980],{"style":140901,"src":158981},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-269.png",[30,158983],{"style":140901,"src":158984},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-270.png",[103,158986,158987],{"start":488},[43,158988,158989],{},[3944,158990,158991],{},"Less 运算",[30,158993],{"style":140901,"src":158994},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-271.png",[14,158996,158997],{},"运算的时候不需要加单位，比如第一个+5之后就是宽度变为15px了",[14,158999,357],{},[40,159001,159002,159005,159008,159011,159014],{},[43,159003,159004],{},"乘号（*）和除号（\u002F）的写法",[43,159006,159007],{},"运算符中间左右有个空格隔开 1px + 5",[43,159009,159010],{},"对于两个不同的单位的值之间的运算，运算结果的值取第一个值的单位",[43,159012,159013],{},"如果两个值之间只有一个值有单位，则运算结果就取该单位",[43,159015,159016],{},"注意在进行除法运算时一定要加括号，不然无法运算！",[18,159018,159020],{"id":159019},"_213-rem-适配方案","21.3 rem 适配方案",[14,159022,159023],{},"① 按照设计稿与设备宽度的比例，动态计算并设置 html 根标签的 font-size 大小（媒体查询）",[14,159025,159026],{},"② CSS 中，设计稿元素的宽、高、相对位置等取值，按照同等比例换算为 rem 为单位的值；",[30,159028],{"style":140901,"src":159029},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-272.png",[23,159031,159033],{"id":159032},"_2131-rem-实际开发适配方案1","21.3.1 rem 实际开发适配方案1",[14,159035,159036],{},"rem + 媒体查询 + less 技术",[30,159038],{"style":140901,"src":159039},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-273.png",[14,159041,159042],{},"这里可以这样理解，这个屏幕分成15份，也就是说由15份的文字组成，750px页面上文字的大小就是50px，要保持比例相同，那么在320px屏幕上的文字应该也得保证有15个，每个文字的大小就是21.33px，文字的个数由自己来定，那么只需要将页面中的文字大小设置为这15个字大小的倍数就可以了，知道倍数之后就保证了在不同屏幕上的展示比例不变",[14,159044,159045],{},"也可以理解为获得设计网页html尺寸与手机不同类型屏幕尺寸的比例，这个比例就可以保证设计网页在手机屏幕尺寸的正常显示",[30,159047],{"style":140901,"src":159048},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-274.png",[14,159050,159051],{},"写的时候每个元素都需要加（xxxrem \u002F @baseFront）",[14,159053,31087],{},[30,159055],{"style":140901,"src":159056},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-275.png",[14,159058,159059],{},"index.html:",[451,159061,159063],{"className":141045,"code":159062,"language":141047,"meta":32,"style":32},"\u002F* rem 适配方案 *\u002F\nhtml {\n  font-size: 62.5%;  \u002F* 1rem = 10px *\u002F\n}\n.box {\n  width: 10rem;  \u002F* 100px *\u002F\n}\n",[457,159064,159065,159070,159076,159092,159096,159102,159118],{"__ignoreMap":32},[460,159066,159067],{"class":462,"line":463},[460,159068,159069],{"class":942},"\u002F* rem 适配方案 *\u002F\n",[460,159071,159072,159074],{"class":462,"line":476},[460,159073,704],{"class":470},[460,159075,1348],{"class":466},[460,159077,159078,159080,159082,159085,159087,159089],{"class":462,"line":482},[460,159079,86768],{"class":900},[460,159081,1961],{"class":466},[460,159083,159084],{"class":900},"62.5",[460,159086,2328],{"class":887},[460,159088,144908],{"class":466},[460,159090,159091],{"class":942},"\u002F* 1rem = 10px *\u002F\n",[460,159093,159094],{"class":462,"line":488},[460,159095,821],{"class":466},[460,159097,159098,159100],{"class":462,"line":494},[460,159099,144893],{"class":929},[460,159101,1348],{"class":466},[460,159103,159104,159106,159108,159110,159113,159115],{"class":462,"line":500},[460,159105,86710],{"class":900},[460,159107,1961],{"class":466},[460,159109,2096],{"class":900},[460,159111,159112],{"class":887},"rem",[460,159114,144908],{"class":466},[460,159116,159117],{"class":942},"\u002F* 100px *\u002F\n",[460,159119,159120],{"class":462,"line":506},[460,159121,821],{"class":466},[14,159123,159124],{},"common.less",[451,159126,159128],{"className":141045,"code":159127,"language":141047,"meta":32,"style":32},"html {\n  font-size: 62.5%; \u002F* 10px *\u002F\n}\ndiv {\n  width: 10rem; \u002F* 100px *\u002F\n}\n```Css\n\u002F* rem 适配方案 *\u002F\nhtml {\n  font-size: 62.5%;  \u002F* 1rem = 10px *\u002F\n}\n.box {\n  width: 10rem;  \u002F* 100px *\u002F\n}\n",[457,159129,159130,159136,159151,159155,159161,159175,159179,159183,159187,159193,159207,159211,159217,159231],{"__ignoreMap":32},[460,159131,159132,159134],{"class":462,"line":463},[460,159133,704],{"class":470},[460,159135,1348],{"class":466},[460,159137,159138,159140,159142,159144,159146,159148],{"class":462,"line":476},[460,159139,86768],{"class":900},[460,159141,1961],{"class":466},[460,159143,159084],{"class":900},[460,159145,2328],{"class":887},[460,159147,42478],{"class":466},[460,159149,159150],{"class":942},"\u002F* 10px *\u002F\n",[460,159152,159153],{"class":462,"line":482},[460,159154,821],{"class":466},[460,159156,159157,159159],{"class":462,"line":488},[460,159158,2737],{"class":470},[460,159160,1348],{"class":466},[460,159162,159163,159165,159167,159169,159171,159173],{"class":462,"line":494},[460,159164,86710],{"class":900},[460,159166,1961],{"class":466},[460,159168,2096],{"class":900},[460,159170,159112],{"class":887},[460,159172,42478],{"class":466},[460,159174,159117],{"class":942},[460,159176,159177],{"class":462,"line":500},[460,159178,821],{"class":466},[460,159180,159181],{"class":462,"line":506},[460,159182,150506],{"class":466},[460,159184,159185],{"class":462,"line":512},[460,159186,159069],{"class":942},[460,159188,159189,159191],{"class":462,"line":518},[460,159190,704],{"class":470},[460,159192,1348],{"class":466},[460,159194,159195,159197,159199,159201,159203,159205],{"class":462,"line":525},[460,159196,86768],{"class":900},[460,159198,1961],{"class":466},[460,159200,159084],{"class":900},[460,159202,2328],{"class":887},[460,159204,144908],{"class":466},[460,159206,159091],{"class":942},[460,159208,159209],{"class":462,"line":531},[460,159210,821],{"class":466},[460,159212,159213,159215],{"class":462,"line":537},[460,159214,144893],{"class":929},[460,159216,1348],{"class":466},[460,159218,159219,159221,159223,159225,159227,159229],{"class":462,"line":543},[460,159220,86710],{"class":900},[460,159222,1961],{"class":466},[460,159224,2096],{"class":900},[460,159226,159112],{"class":887},[460,159228,144908],{"class":466},[460,159230,159117],{"class":942},[460,159232,159233],{"class":462,"line":549},[460,159234,821],{"class":466},[14,159236,159237,159238,159241],{},"html {\nfont-size: 62.5%; \u002F* 10px ",[39966,159239,159240],{},"\u002F\n}\ndiv {\nwidth: 10rem; \u002F"," 100px *\u002F\n}",[451,159243,159246],{"className":159244,"code":159245,"language":8391},[21693],"\n初始化样式：normalize.css(直接复制下载即可)\n\n```Css\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n",[457,159247,159245],{"__ignoreMap":32},[14,159249,159250],{},"less保存时会自动变成.css文件",[14,159252,159253],{},"好好搞懂上述代码写法",[23,159255,159257],{"id":159256},"_2132-样式导入样式","21.3.2 样式导入样式",[30,159259],{"style":140901,"src":159260},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-276.png",[23,159262,159264],{"id":159263},"_2133-rem-适配方案2","21.3.3 rem 适配方案2",[103,159266,159267],{},[43,159268,159269],{},"准备工作",[30,159271],{"style":140901,"src":159272},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-277.png",[14,159274,159275,159276],{},"github地址：",[2756,159277,159278],{"href":159278,"rel":159279},"https:\u002F\u002Fgithub.com\u002Famfe\u002Flib-flexible",[4943],[14,159281,159282],{},"下载之后，将index.js文件拖到项目中就可以了",[14,159284,159285,159286],{},"js文件引入到index.html中使用的是",[457,159287,159288],{},"\u003Cscript src=\"js\u002Fflexible.js\">\u003C\u002Fscript>",[103,159290,159291],{"start":476},[43,159292,159293],{},"vscode插件",[30,159295],{"style":140901,"src":159296},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-278.png",[14,159298,159299],{},"js这个flexible是将整个浏览页面设计成了10等分，也就是说按照750px的设计尺寸，body的大小为75px，所以body的宽度应为10rem，由于这里不在使用媒体查询，就没有最大界面限制了，所以给body设置为margin：0 auto;是不显示的，要加一个最大宽度，即max-width",[14,159301,159302],{},"在下面布局时每个盒子的大小都是依据html（手机的尺寸界面）来变的，都要转化成rem单位，每个宽度除75不好算，这个插件可以帮助我们来算，插件就是下面的效果",[30,159304],{"style":140901,"src":159305},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-279.png",[14,159307,159308],{},"使用之前需要先修改一下html字体大小基准值，应该改为75px",[30,159310],{"style":140901,"src":159311},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-280.png",[14,159313,159314],{},"修改成75就可以，alt+z为快捷键",[14,159316,159317],{},"index.css：",[451,159319,159320],{"className":141045,"code":159062,"language":141047,"meta":32,"style":32},[457,159321,159322,159326,159332,159346,159350,159356,159370],{"__ignoreMap":32},[460,159323,159324],{"class":462,"line":463},[460,159325,159069],{"class":942},[460,159327,159328,159330],{"class":462,"line":476},[460,159329,704],{"class":470},[460,159331,1348],{"class":466},[460,159333,159334,159336,159338,159340,159342,159344],{"class":462,"line":482},[460,159335,86768],{"class":900},[460,159337,1961],{"class":466},[460,159339,159084],{"class":900},[460,159341,2328],{"class":887},[460,159343,144908],{"class":466},[460,159345,159091],{"class":942},[460,159347,159348],{"class":462,"line":488},[460,159349,821],{"class":466},[460,159351,159352,159354],{"class":462,"line":494},[460,159353,144893],{"class":929},[460,159355,1348],{"class":466},[460,159357,159358,159360,159362,159364,159366,159368],{"class":462,"line":500},[460,159359,86710],{"class":900},[460,159361,1961],{"class":466},[460,159363,2096],{"class":900},[460,159365,159112],{"class":887},[460,159367,144908],{"class":466},[460,159369,159117],{"class":942},[460,159371,159372],{"class":462,"line":506},[460,159373,821],{"class":466},[14,159375,159059],{},[451,159377,159378],{"className":141045,"code":141449,"language":141047,"meta":32,"style":32},[457,159379,159380,159386,159398],{"__ignoreMap":32},[460,159381,159382,159384],{"class":462,"line":463},[460,159383,1721],{"class":470},[460,159385,1348],{"class":466},[460,159387,159388,159390,159392,159394,159396],{"class":462,"line":476},[460,159389,86768],{"class":900},[460,159391,1961],{"class":466},[460,159393,17323],{"class":900},[460,159395,2017],{"class":887},[460,159397,1966],{"class":466},[460,159399,159400],{"class":462,"line":482},[460,159401,821],{"class":466},[18,159403,159405],{"id":159404},"_214-响应式开发","21.4 响应式开发",[14,159407,159408],{},"他的开发原理就是使用媒体查询针对不同宽度的设备进行布局和样式的设置，从而适配不同设备的目的。",[30,159410],{"style":140901,"src":159411},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-281.png",[14,159413,159414],{},"做法：",[40,159416,159417,159420],{},[43,159418,159419],{},"响应式需要一个父级做为布局容器，来配合子级元素来实现变化效果",[43,159421,159422],{},"原理就是在不同屏幕下，通过媒体查询来改变这个布局容器的大小，再改变里面子元素的排列方式和大小，从而实现不同屏幕下，看到不同的页面布局和样式变化，通过父亲来改变孩子的大小",[30,159424],{"style":140901,"src":159425},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-282.png",[14,159427,159428],{},"布局容器比页面稍微小一点是为了美观好看，由于小一点点，距离两边会有空隙，美观",[23,159430,159432],{"id":159431},"_2141-简单代码示范","21.4.1 简单代码示范",[451,159434,159435],{"className":141045,"code":159062,"language":141047,"meta":32,"style":32},[457,159436,159437,159441,159447,159461,159465,159471,159485],{"__ignoreMap":32},[460,159438,159439],{"class":462,"line":463},[460,159440,159069],{"class":942},[460,159442,159443,159445],{"class":462,"line":476},[460,159444,704],{"class":470},[460,159446,1348],{"class":466},[460,159448,159449,159451,159453,159455,159457,159459],{"class":462,"line":482},[460,159450,86768],{"class":900},[460,159452,1961],{"class":466},[460,159454,159084],{"class":900},[460,159456,2328],{"class":887},[460,159458,144908],{"class":466},[460,159460,159091],{"class":942},[460,159462,159463],{"class":462,"line":488},[460,159464,821],{"class":466},[460,159466,159467,159469],{"class":462,"line":494},[460,159468,144893],{"class":929},[460,159470,1348],{"class":466},[460,159472,159473,159475,159477,159479,159481,159483],{"class":462,"line":500},[460,159474,86710],{"class":900},[460,159476,1961],{"class":466},[460,159478,2096],{"class":900},[460,159480,159112],{"class":887},[460,159482,144908],{"class":466},[460,159484,159117],{"class":942},[460,159486,159487],{"class":462,"line":506},[460,159488,821],{"class":466},[14,159490,159491],{},"父盒子一般命名为container",[23,159493,159495],{"id":159494},"_2142-bootstrap前端开发框架","21.4.2 Bootstrap前端开发框架",[14,159497,159498,159499],{},"Bootstrap 来自 Twitter（推特），是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS 和JAVASCRIPT的，它简洁灵活，",[3944,159500,159501],{},"使得 Web 开发更加快捷",[40,159503,159504],{},[43,159505,159506,159507],{},"官网：",[3944,159508,159509],{},[2756,159510,159511],{"href":159511,"rel":159512},"http:\u002F\u002Fgetbootstrap.com\u002F",[4943],[14,159514,159515],{},"可以直接去官网拿现成的东西",[103,159517,159518],{},[43,159519,159520],{},"Bootstrap的使用",[14,159522,159523],{},"控制权在框架本身，使用者要按照框架所规定的某种规范进行开发",[14,159525,159526],{},"Bootstrap 使用四步曲：",[14,159528,159529,159532],{},[3944,159530,159531],{},"1. 创建文件夹结构"," 2. 创建 html 骨架结构 3. 引入相关样式文件 4. 书写内容",[30,159534],{"style":140901,"src":159535},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-283.png",[14,159537,159538],{},"打开Bootstrap官网，然后下载",[30,159540],{"style":140901,"src":159541},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-284.png",[30,159543],{"style":140901,"src":159544},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-285.png",[14,159546,159547],{},"这里边的小图标都是用类选择器写的，需要啥就复制这些类名就ok，它的效果就是给我们的标签创立了元素伪类选择器，使用的before,修改位置时，我们要对这个标签的元素伪类选择器来进行修改，只需要改变移动的量就可以，因为这个类的效果就已经进行了元素伪类选择器的设置",[14,159549,159550],{},"下载后会得到一个压缩包，然后解压一下，复制里边的js css fonts文件",[14,159552,159553],{},"在项目文件夹中新建一个bootstrap文件夹，然后将那些文件粘贴进去",[30,159555],{"style":140901,"src":159556},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-286.png",[451,159558,159560],{"className":141045,"code":159559,"language":141047,"meta":32,"style":32},".center {\n  color: red;\n}\n",[457,159561,159562,159568,159578],{"__ignoreMap":32},[460,159563,159564,159566],{"class":462,"line":463},[460,159565,141336],{"class":929},[460,159567,1348],{"class":466},[460,159569,159570,159572,159574,159576],{"class":462,"line":476},[460,159571,87047],{"class":900},[460,159573,1961],{"class":466},[460,159575,73627],{"class":900},[460,159577,1966],{"class":466},[460,159579,159580],{"class":462,"line":482},[460,159581,821],{"class":466},[14,159583,159584,159587],{},[457,159585,159586],{},"\u003C!--[if lt IE 9]>"," 是条件注释：如果小于 IE9，引入下边两个文件",[30,159589],{"style":140901,"src":159590},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-287.png",[30,159592],{"style":140901,"src":159593},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-288.png",[30,159595],{"style":140901,"src":159596},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-289.png",[14,159598,159599],{},"bootstrap中的代码是通过类实现的，也就是说我们可以自己建立盒子，然后用他的类选择器，在微调，就可以实现自己想要的效果了，如果没效果，往往可能权重不够，加！important增加权重看看能否解决",[30,159601],{"style":140901,"src":159602},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-290.png",[14,159604,159605],{},"bootstrap也是通过normalize.css进行初始化的，这说明在进行项目的时候不用再引入normalize.css这个文件进行了。bootstrap内部带有初始化的引入",[103,159607,159608],{"start":476},[43,159609,159610],{},"布局容器",[30,159612],{"style":140901,"src":159613},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-291.png",[14,159615,159616],{},"这样就可以不用媒体查询了，直接用类就可以实现（这个类选择器包含了不同屏幕尺寸的宽度，可以理解为这个里边对各个尺寸进行了从小到大的媒体查询，使用这个类就完全ok，不需要媒体查询）",[14,159618,159619],{},"container-fluid用于移动式布局比较方便",[103,159621,159622],{"start":482},[43,159623,159624,159625],{},"bootstrap ",[3944,159626,159627],{},"栅格系统原理",[30,159629],{"style":140901,"src":159630},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-292.png",[103,159632,159633],{"start":488},[43,159634,159635],{},[3944,159636,159637],{},"栅格选项参数",[30,159639],{"style":140901,"src":159640},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-293.png",[14,159642,159643],{},".col-lg-3表示再大桌面显示器上每个盒子占三份，也就是4个小盒子各占四分之一",[14,159645,31087],{},[451,159647,159648],{"className":141045,"code":159559,"language":141047,"meta":32,"style":32},[457,159649,159650,159656,159666],{"__ignoreMap":32},[460,159651,159652,159654],{"class":462,"line":463},[460,159653,141336],{"class":929},[460,159655,1348],{"class":466},[460,159657,159658,159660,159662,159664],{"class":462,"line":476},[460,159659,87047],{"class":900},[460,159661,1961],{"class":466},[460,159663,73627],{"class":900},[460,159665,1966],{"class":466},[460,159667,159668],{"class":462,"line":482},[460,159669,821],{"class":466},[14,159671,150088],{},[30,159673],{"style":140901,"src":159674},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-294.png",[14,159676,159677],{},"再强调一下：这个响应式布局可以实现一行内容如何分，在这个界面是这样分的，当缩小或放大一定页面就一行内容展示的可能变多，也可能变少，这就是响应式布局",[14,159679,159680],{},"然后总列份为12份，然后后边的数字就表示了占的列份，也就是占的宽度为多少",[14,159682,159683],{},"如果孩子的份数相加等于12， 则孩子能占满整个 container布局容器的宽度",[14,159685,159686],{},"如果孩子的份数相加小于12，则占不满整个container的宽度，会在右侧留有宽度",[14,159688,159689],{},"如果孩子的份数相加大于12，多余的那一列，会另起一行来显示",[14,159691,159692],{},"汇总展示说明：",[451,159694,159695],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,159696,159697,159701,159715,159719],{"__ignoreMap":32},[460,159698,159699],{"class":462,"line":463},[460,159700,145156],{"class":942},[460,159702,159703,159705,159707,159709,159711,159713],{"class":462,"line":476},[460,159704,781],{"class":466},[460,159706,2737],{"class":470},[460,159708,2740],{"class":929},[460,159710,894],{"class":466},[460,159712,145169],{"class":1353},[460,159714,473],{"class":466},[460,159716,159717],{"class":462,"line":482},[460,159718,145176],{"class":466},[460,159720,159721,159723,159725],{"class":462,"line":488},[460,159722,1776],{"class":466},[460,159724,2737],{"class":470},[460,159726,473],{"class":466},[30,159728],{"style":140901,"src":159729},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-295.png",[14,159731,159732],{},"一行中的内容在不同页面展示不同个数的效果代码写法如下：",[451,159734,159735],{"className":141792,"code":145149,"language":141794,"meta":32,"style":32},[457,159736,159737,159741,159755,159759],{"__ignoreMap":32},[460,159738,159739],{"class":462,"line":463},[460,159740,145156],{"class":942},[460,159742,159743,159745,159747,159749,159751,159753],{"class":462,"line":476},[460,159744,781],{"class":466},[460,159746,2737],{"class":470},[460,159748,2740],{"class":929},[460,159750,894],{"class":466},[460,159752,145169],{"class":1353},[460,159754,473],{"class":466},[460,159756,159757],{"class":462,"line":482},[460,159758,145176],{"class":466},[460,159760,159761,159763,159765],{"class":462,"line":488},[460,159762,1776],{"class":466},[460,159764,2737],{"class":470},[460,159766,473],{"class":466},[103,159768,159769],{"start":494},[43,159770,159771],{},[3944,159772,159773],{},"列嵌套",[30,159775],{"style":140901,"src":159776},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-296.png",[14,159778,159779],{},"我们列嵌套最好加1个行row，这样可以取消父元素的padding值 而且高度自动和父级一样高，此时就是每个子盒子的padding值了",[14,159781,159782],{},"没加row内部这样：",[30,159784],{"style":140901,"src":159785},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-297.png",[14,159787,159788],{},"加上row之后内部为：",[30,159790],{"style":140901,"src":159791},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-298.png",[103,159793,159794],{"start":500},[43,159795,159796],{},[3944,159797,159798],{},"列偏移",[30,159800],{"style":140901,"src":159801},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-299.png",[14,159803,159804],{},"不要用margin，如果用这个的话会导致响应式失效，我们要的就是在不同界面上变化不同，但是比例相同，还有margin的值也不好确定，不能值卡死，所以不要用padding!!!",[14,159806,159807],{},"要加偏移量，即偏移份数",[14,159809,159810],{},"偏移的份数=12-两个盒子的份数",[103,159812,159813],{"start":506},[43,159814,159815],{},[3944,159816,159817],{},"列排序",[30,159819],{"style":140901,"src":159820},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-300.png",[14,159822,159823],{},"pull拉左；push推右",[103,159825,159826],{"start":512},[43,159827,159828],{},[3944,159829,159830],{},"响应式工具",[30,159832],{"style":140901,"src":159833},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-301.png",[14,159835,159836],{},"与之相反的，是visible-xs visible-sm visible-md visible-lg是显示页面的内容",[23,159838,159840],{"id":159839},"_2143-响应式小项目","21.4.3 响应式小项目",[14,159842,159843],{},"在使用无序列表时可以通过对ul进行，取消li前边的点不用非得在li上进行操作，要知道继承性，反正要对ul进行操作了，所以直接给ul写就行，可以避免代码的冗余",[14,159845,159846],{},"ul {",[14,159848,159849],{},"list-style: none;",[14,159851,159852],{},"margin:0;",[14,159854,159855],{},"padding:0; }",[30,159857],{"style":140901,"src":159858},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-302.png",[30,159860],{"style":140901,"src":159861},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-303.png",[14,159863,159864],{},"要灵活用好浮动！！！，样式优先去网站上找类名，然后直接复制，提高自己开发的效率，当屏幕缩放内容改变的时候不要忘记媒体查询",[14,159866,85044],{},[451,159868,159869],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,159870,159871,159877,159887],{"__ignoreMap":32},[460,159872,159873,159875],{"class":462,"line":463},[460,159874,144893],{"class":929},[460,159876,1348],{"class":466},[460,159878,159879,159881,159883,159885],{"class":462,"line":476},[460,159880,145525],{"class":900},[460,159882,1961],{"class":466},[460,159884,40149],{"class":900},[460,159886,1966],{"class":466},[460,159888,159889],{"class":462,"line":482},[460,159890,821],{"class":466},[14,159892,86595],{},[451,159894,159895],{"className":141045,"code":153715,"language":141047,"meta":32,"style":32},[457,159896,159897,159903,159913],{"__ignoreMap":32},[460,159898,159899,159901],{"class":462,"line":463},[460,159900,144893],{"class":929},[460,159902,1348],{"class":466},[460,159904,159905,159907,159909,159911],{"class":462,"line":476},[460,159906,145525],{"class":900},[460,159908,1961],{"class":466},[460,159910,40149],{"class":900},[460,159912,1966],{"class":466},[460,159914,159915],{"class":462,"line":482},[460,159916,821],{"class":466},[18,159918,159920],{"id":159919},"_215-swiper-插件使用","21.5 swiper 插件使用",[40,159922,159923,159926,159929],{},[43,159924,159925],{},"下载需要的css和js文件html页面中 引入相关文件",[43,159927,159928],{},"官网找到类似案例，复制html结构，css样式 js 语法",[43,159930,159931],{},"根据需求定制修改模块",[30,159933],{"style":140901,"src":159934},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-304.png",[14,159936,159937],{},"解压后将这两部分放到项目中",[30,159939],{"style":140901,"src":159940},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-305.png",[14,159942,159943],{},"这个插件可以帮助我们实现轮播图效果",[14,159945,159946],{},"用法：",[30,159948],{"style":140901,"src":159949},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-306.png",[14,159951,159952],{},"找到自己喜欢的",[30,159954],{"style":140901,"src":159955},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-307.png",[14,159957,159958],{},"右键，查看网页源代码",[30,159960],{"style":140901,"src":159961},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-308.png",[14,159963,159964],{},"复制人家的结构内容",[14,159966,159967],{},"然后去看API文档：",[30,159969],{"style":140901,"src":159970},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-309.png",[14,159972,159973],{},"可以看看如何修改样式",[14,159975,159976],{},"现成的轮播图效果，直接需要啥取啥就行，然后再稍微进行修改即可",[1944,159978,159979],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":159981},[159982,159987,159991,159996,160001],{"id":158782,"depth":476,"text":158783,"children":159983},[159984,159985,159986],{"id":158786,"depth":482,"text":158787},{"id":158796,"depth":482,"text":158797},{"id":158891,"depth":482,"text":158892},{"id":158906,"depth":476,"text":158907,"children":159988},[159989,159990],{"id":158928,"depth":482,"text":158929},{"id":158944,"depth":482,"text":158945},{"id":159019,"depth":476,"text":159020,"children":159992},[159993,159994,159995],{"id":159032,"depth":482,"text":159033},{"id":159256,"depth":482,"text":159257},{"id":159263,"depth":482,"text":159264},{"id":159404,"depth":476,"text":159405,"children":159997},[159998,159999,160000],{"id":159431,"depth":482,"text":159432},{"id":159494,"depth":482,"text":159495},{"id":159839,"depth":482,"text":159840},{"id":159919,"depth":476,"text":159920},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch21",{"title":158774,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch21-移动端布局实战下篇","dcPQ5dNoub6Mo7yPfx2viTiSO8ON7T0MmDcFGjTm7xo",{"id":160008,"title":160009,"body":160010,"description":16682,"extension":16683,"meta":160230,"navigation":521,"path":160231,"seo":160232,"stem":160233,"__hash__":160234},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Fch22-代码提交与新型相对单位.md","22. 代码提交与新型相对单位",{"type":7,"value":160011,"toc":160226},[160012,160015,160019,160022,160037,160042,160045,160050,160085,160090,160102,160107,160120,160125,160142,160147,160167,160172,160190,160193,160196,160199,160202,160206,160209,160212,160215,160218,160221,160224],[10,160013,160009],{"id":160014},"_22-代码提交与新型相对单位",[18,160016,160018],{"id":160017},"_221-网页提交码云国内版github可以理解为","22.1 网页提交码云（国内版github可以理解为）",[14,160020,160021],{},"法1：",[103,160023,160024,160031,160034],{},[43,160025,160026,160027],{},"登录网站注册：",[2756,160028,160029],{"href":160029,"rel":160030},"https:\u002F\u002Fgitee.com\u002F",[4943],[43,160032,160033],{},"码云创建新的仓库",[43,160035,160036],{},"利用git 提交 把本地网站提交到 码云新建的仓库里面",[40,160038,160039],{},[43,160040,160041],{},"在网站根目录右键-- Git Bash Here",[30,160043],{"style":140901,"src":160044},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-310.png",[40,160046,160047],{},[43,160048,160049],{},"如果是第一次利用git提交，请配置好全局选项",[451,160051,160053],{"className":131789,"code":160052,"language":131791,"meta":32,"style":32},"git config --global user.name \"你的名字\"\ngit config --global user.email \"你的邮箱\"\n",[457,160054,160055,160071],{"__ignoreMap":32},[460,160056,160057,160060,160062,160065,160068],{"class":462,"line":463},[460,160058,160059],{"class":929},"git",[460,160061,134212],{"class":1353},[460,160063,160064],{"class":900}," --global",[460,160066,160067],{"class":1353}," user.name",[460,160069,160070],{"class":1353}," \"你的名字\"\n",[460,160072,160073,160075,160077,160079,160082],{"class":462,"line":476},[460,160074,160059],{"class":929},[460,160076,134212],{"class":1353},[460,160078,160064],{"class":900},[460,160080,160081],{"class":1353}," user.email",[460,160083,160084],{"class":1353}," \"你的邮箱\"\n",[40,160086,160087],{},[43,160088,160089],{},"初始化仓库",[451,160091,160093],{"className":131789,"code":160092,"language":131791,"meta":32,"style":32},"git init\n",[457,160094,160095],{"__ignoreMap":32},[460,160096,160097,160099],{"class":462,"line":463},[460,160098,160059],{"class":929},[460,160100,160101],{"class":1353}," init\n",[40,160103,160104],{},[43,160105,160106],{},"把本地文件放到暂存区",[451,160108,160110],{"className":131789,"code":160109,"language":131791,"meta":32,"style":32},"git add .\n",[457,160111,160112],{"__ignoreMap":32},[460,160113,160114,160116,160118],{"class":462,"line":463},[460,160115,160059],{"class":929},[460,160117,21716],{"class":1353},[460,160119,45150],{"class":1353},[40,160121,160122],{},[43,160123,160124],{},"把本地文件放到本地仓库里面",[451,160126,160128],{"className":131789,"code":160127,"language":131791,"meta":32,"style":32},"git commit -m \"first commit\"\n",[457,160129,160130],{"__ignoreMap":32},[460,160131,160132,160134,160137,160139],{"class":462,"line":463},[460,160133,160059],{"class":929},[460,160135,160136],{"class":1353}," commit",[460,160138,115375],{"class":900},[460,160140,160141],{"class":1353}," \"first commit\"\n",[40,160143,160144],{},[43,160145,160146],{},"链接远程仓库",[451,160148,160150],{"className":131789,"code":160149,"language":131791,"meta":32,"style":32},"git remote add origin https:\u002F\u002Fgitee.com\u002F你的用户名\u002F你的仓库.git\n",[457,160151,160152],{"__ignoreMap":32},[460,160153,160154,160156,160159,160161,160164],{"class":462,"line":463},[460,160155,160059],{"class":929},[460,160157,160158],{"class":1353}," remote",[460,160160,21716],{"class":1353},[460,160162,160163],{"class":1353}," origin",[460,160165,160166],{"class":1353}," https:\u002F\u002Fgitee.com\u002F你的用户名\u002F你的仓库.git\n",[40,160168,160169],{},[43,160170,160171],{},"把本地仓库的文件推送到远程仓库 push",[451,160173,160175],{"className":131789,"code":160174,"language":131791,"meta":32,"style":32},"git push -u origin master\n",[457,160176,160177],{"__ignoreMap":32},[460,160178,160179,160181,160183,160185,160187],{"class":462,"line":463},[460,160180,160059],{"class":929},[460,160182,45425],{"class":1353},[460,160184,44699],{"class":900},[460,160186,160163],{"class":1353},[460,160188,160189],{"class":1353}," master\n",[30,160191],{"style":140901,"src":160192},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-311.png",[14,160194,160195],{},"上方方法暂未实现，后边学完git后在整",[14,160197,160198],{},"法2：也可以通过下方方式进行上传代码，这个在创建代码库的时候选择readme，然后进去这个页面后选择上传文件就可以了",[30,160200],{"style":140901,"src":160201},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-312.png",[18,160203,160205],{"id":160204},"_222-新型相对单位","22.2 新型相对单位",[30,160207],{"style":140901,"src":160208},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-313.png",[30,160210],{"style":140901,"src":160211},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-314.png",[14,160213,160214],{},"这里与rem的区别是为了方便计算，将窗口设置为100份",[14,160216,160217],{},"基本不用vh,手机的屏幕高度尺寸太大了，混用的话会可能导致撑破盒子，我们更关心的是屏幕宽度的变化，所以基本只用vw",[30,160219],{"style":140901,"src":160220},"\u002Fimages\u002Ffeishu\u002Fassets\u002F2024-10-10-Html和CSS学习-315.png",[14,160222,160223],{},"还有个单位vmin和vmax，是为了实现手机横屏显示的影响。vmin就是取手机视口宽高的最小值来算比例，vmax就是取的是视口宽高的最大值来算比例",[1944,160225,40370],{},{"title":32,"searchDepth":476,"depth":476,"links":160227},[160228,160229],{"id":160017,"depth":476,"text":160018},{"id":160204,"depth":476,"text":160205},{},"\u002Fwiki\u002F2024-10-10-htmlcss\u002Fch22",{"title":160009,"description":16682},"wiki\u002F2024-10-10-Html和CSS学习\u002Fch22-代码提交与新型相对单位","BIsIqmwMkxYSF1NrxtVu3evm093xKcUzMC5FtpDkMLY",{"id":160236,"title":160237,"body":160238,"description":160242,"extension":16683,"meta":160243,"navigation":521,"path":160244,"seo":160245,"stem":160246,"__hash__":160247},"wiki\u002Fwiki\u002F2024-10-10-Html和CSS学习\u002Findex.md","Html和CSS学习",{"type":7,"value":160239,"toc":160240},[],{"title":32,"searchDepth":476,"depth":476,"links":160241},[],"自己正经开始学编程的第一门语言！",{"category":107332},"\u002Fwiki\u002F2024-10-10-htmlcss",{"title":160237,"description":160242},"wiki\u002F2024-10-10-Html和CSS学习\u002Findex","ViZSWnRAqyl24AANwdRP-nrvSQaYwh0RLeDemyU8XvI",{"id":160249,"title":160250,"body":160251,"description":16682,"extension":16683,"meta":161398,"navigation":521,"path":161399,"seo":161400,"stem":161401,"__hash__":161402},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch1-Python环境与第一个程序.md","1. Python环境与第一个程序",{"type":7,"value":160252,"toc":161374},[160253,160256,160260,160263,160266,160291,160294,160300,160304,160307,160334,160337,160377,160380,160392,160395,160401,160405,160409,160436,160453,160460,160464,160467,160493,160496,160500,160503,160543,160546,160563,160569,160573,160578,160622,160625,160643,160646,160714,160718,160725,160728,160743,160746,160755,160758,160769,160772,160781,160784,160801,160804,160819,160823,160827,160830,160832,160852,160856,160859,160862,160873,160876,160882,160886,160892,160919,160922,160934,160937,160948,160951,160957,160961,160967,161017,161020,161062,161065,161098,161101,161135,161139,161142,161162,161165,161201,161204,161217,161221,161225,161231,161234,161247,161251,161254,161260,161263,161267,161270,161273,161322,161326,161342,161348,161355,161361,161371],[10,160254,160250],{"id":160255},"_1-python环境与第一个程序",[18,160257,160259],{"id":160258},"_11-什么是python","1.1 什么是Python",[14,160261,160262],{},"Python 是一种解释型、高级、通用编程语言。它的语法接近自然语言，适合做自动化脚本、数据处理、Web 后端、人工智能、爬虫、测试工具、运维工具和教学入门。",[14,160264,160265],{},"理解 Python 时抓住三个关键词：",[103,160267,160268,160271,160274],{},[43,160269,160270],{},"解释型：代码通常由解释器一行行执行，不需要像 C\u002FC++ 那样先手动编译出可执行文件。",[43,160272,160273],{},"动态类型：变量不用提前声明类型，运行时根据赋值对象确定类型。",[43,160275,160276,160277,16957,160280,16957,160283,16957,160286,16957,160288,44794],{},"标准库丰富：安装 Python 后自带很多模块，如 ",[457,160278,160279],{},"os",[457,160281,160282],{},"sys",[457,160284,160285],{},"json",[457,160287,74063],{},[457,160289,160290],{},"datetime",[14,160292,160293],{},"Python 程序的运行链路：",[451,160295,160298],{"className":160296,"code":160297,"language":8391,"meta":32},[21693],"编写 .py 文件 -> Python 解释器读取代码 -> 转换为字节码 -> 虚拟机执行 -> 输出结果\n",[457,160299,160297],{"__ignoreMap":32},[18,160301,160303],{"id":160302},"_12-python解释器","1.2 Python解释器",[14,160305,160306],{},"解释器就是运行 Python 代码的软件。终端中常用命令如下：",[451,160308,160310],{"className":40235,"code":160309,"language":40237,"meta":32,"style":32},"python --version\npython3 --version\npython\npython3\n",[457,160311,160312,160318,160324,160329],{"__ignoreMap":32},[460,160313,160314,160316],{"class":462,"line":463},[460,160315,46789],{"class":929},[460,160317,42704],{"class":900},[460,160319,160320,160322],{"class":462,"line":476},[460,160321,115372],{"class":929},[460,160323,42704],{"class":900},[460,160325,160326],{"class":462,"line":482},[460,160327,160328],{"class":929},"python\n",[460,160330,160331],{"class":462,"line":488},[460,160332,160333],{"class":929},"python3\n",[14,160335,160336],{},"进入交互模式后，可以直接输入表达式：",[451,160338,160340],{"className":46787,"code":160339,"language":46789,"meta":32,"style":32},">>> 1 + 2\n3\n>>> print(\"hello python\")\nhello python\n",[457,160341,160342,160353,160358,160372],{"__ignoreMap":32},[460,160343,160344,160347,160349,160351],{"class":462,"line":463},[460,160345,160346],{"class":887},">>>",[460,160348,1400],{"class":900},[460,160350,61870],{"class":887},[460,160352,64026],{"class":900},[460,160354,160355],{"class":462,"line":476},[460,160356,160357],{"class":900},"3\n",[460,160359,160360,160362,160365,160367,160370],{"class":462,"line":482},[460,160361,160346],{"class":887},[460,160363,160364],{"class":900}," print",[460,160366,2174],{"class":466},[460,160368,160369],{"class":1353},"\"hello python\"",[460,160371,3754],{"class":466},[460,160373,160374],{"class":462,"line":488},[460,160375,160376],{"class":466},"hello python\n",[14,160378,160379],{},"退出交互模式：",[451,160381,160383],{"className":46787,"code":160382,"language":46789,"meta":32,"style":32},"exit()\n",[457,160384,160385],{"__ignoreMap":32},[460,160386,160387,160390],{"class":462,"line":463},[460,160388,160389],{"class":900},"exit",[460,160391,10758],{"class":466},[14,160393,160394],{},"或使用快捷键：",[451,160396,160399],{"className":160397,"code":160398,"language":8391,"meta":32},[21693],"Windows: Ctrl + Z 然后回车\nmacOS\u002FLinux: Ctrl + D\n",[457,160400,160398],{"__ignoreMap":32},[18,160402,160404],{"id":160403},"_13-安装python","1.3 安装Python",[23,160406,160408],{"id":160407},"_131-windows安装","1.3.1 Windows安装",[103,160410,160411,160418,160421,160427,160433],{},[43,160412,160413,160414],{},"打开 Python 官网：",[2756,160415,160416],{"href":160416,"rel":160417},"https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F",[4943],[43,160419,160420],{},"下载 Windows Installer。",[43,160422,160423,160424,44794],{},"安装时勾选 ",[457,160425,160426],{},"Add Python to PATH",[43,160428,160429,160430,44794],{},"点击 ",[457,160431,160432],{},"Install Now",[43,160434,160435],{},"安装完成后打开命令提示符验证：",[451,160437,160439],{"className":40235,"code":160438,"language":40237,"meta":32,"style":32},"python --version\npip --version\n",[457,160440,160441,160447],{"__ignoreMap":32},[460,160442,160443,160445],{"class":462,"line":463},[460,160444,46789],{"class":929},[460,160446,42704],{"class":900},[460,160448,160449,160451],{"class":462,"line":476},[460,160450,40244],{"class":929},[460,160452,42704],{"class":900},[14,160454,160455,160456,160459],{},"如果提示 ",[457,160457,160458],{},"python 不是内部或外部命令","，通常是 PATH 没配置好。可以重新安装并勾选 PATH，或在系统环境变量中加入 Python 安装目录。",[23,160461,160463],{"id":160462},"_132-macos安装","1.3.2 macOS安装",[14,160465,160466],{},"macOS 自带的 Python 版本可能不适合开发，建议安装新版：",[451,160468,160470],{"className":40235,"code":160469,"language":40237,"meta":32,"style":32},"brew install python\npython3 --version\npip3 --version\n",[457,160471,160472,160481,160487],{"__ignoreMap":32},[460,160473,160474,160477,160479],{"class":462,"line":463},[460,160475,160476],{"class":929},"brew",[460,160478,40247],{"class":1353},[460,160480,138811],{"class":1353},[460,160482,160483,160485],{"class":462,"line":476},[460,160484,115372],{"class":929},[460,160486,42704],{"class":900},[460,160488,160489,160491],{"class":462,"line":482},[460,160490,134193],{"class":929},[460,160492,42704],{"class":900},[14,160494,160495],{},"如果没有 Homebrew，可以直接从 Python 官网下载 macOS 安装包。",[23,160497,160499],{"id":160498},"_133-linux安装","1.3.3 Linux安装",[14,160501,160502],{},"Ubuntu\u002FDebian：",[451,160504,160506],{"className":40235,"code":160505,"language":40237,"meta":32,"style":32},"sudo apt update\nsudo apt install python3 python3-pip python3-venv\npython3 --version\npip3 --version\n",[457,160507,160508,160516,160531,160537],{"__ignoreMap":32},[460,160509,160510,160512,160514],{"class":462,"line":463},[460,160511,40989],{"class":929},[460,160513,131810],{"class":1353},[460,160515,42653],{"class":1353},[460,160517,160518,160520,160522,160524,160526,160528],{"class":462,"line":476},[460,160519,40989],{"class":929},[460,160521,131810],{"class":1353},[460,160523,40247],{"class":1353},[460,160525,118896],{"class":1353},[460,160527,115291],{"class":1353},[460,160529,160530],{"class":1353}," python3-venv\n",[460,160532,160533,160535],{"class":462,"line":482},[460,160534,115372],{"class":929},[460,160536,42704],{"class":900},[460,160538,160539,160541],{"class":462,"line":488},[460,160540,134193],{"class":929},[460,160542,42704],{"class":900},[14,160544,160545],{},"Fedora：",[451,160547,160549],{"className":40235,"code":160548,"language":40237,"meta":32,"style":32},"sudo dnf install python3 python3-pip\n",[457,160550,160551],{"__ignoreMap":32},[460,160552,160553,160555,160557,160559,160561],{"class":462,"line":463},[460,160554,40989],{"class":929},[460,160556,42726],{"class":1353},[460,160558,40247],{"class":1353},[460,160560,118896],{"class":1353},[460,160562,134258],{"class":1353},[14,160564,160565,160566,160568],{},"Linux 上通常使用 ",[457,160567,115372],{}," 命令，避免和系统旧版本 Python 冲突。",[18,160570,160572],{"id":160571},"_14-pip包管理器","1.4 pip包管理器",[14,160574,160575,160577],{},[457,160576,40244],{}," 用来安装第三方库。",[451,160579,160581],{"className":40235,"code":160580,"language":40237,"meta":32,"style":32},"pip install requests\npip uninstall requests\npip show requests\npip list\npip freeze\n",[457,160582,160583,160592,160601,160609,160615],{"__ignoreMap":32},[460,160584,160585,160587,160589],{"class":462,"line":463},[460,160586,40244],{"class":929},[460,160588,40247],{"class":1353},[460,160590,160591],{"class":1353}," requests\n",[460,160593,160594,160596,160599],{"class":462,"line":476},[460,160595,40244],{"class":929},[460,160597,160598],{"class":1353}," uninstall",[460,160600,160591],{"class":1353},[460,160602,160603,160605,160607],{"class":462,"line":482},[460,160604,40244],{"class":929},[460,160606,132067],{"class":1353},[460,160608,160591],{"class":1353},[460,160610,160611,160613],{"class":462,"line":488},[460,160612,40244],{"class":929},[460,160614,133448],{"class":1353},[460,160616,160617,160619],{"class":462,"line":494},[460,160618,40244],{"class":929},[460,160620,160621],{"class":1353}," freeze\n",[14,160623,160624],{},"国内网络较慢时可以临时使用镜像：",[451,160626,160628],{"className":40235,"code":160627,"language":40237,"meta":32,"style":32},"pip install requests -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n",[457,160629,160630],{"__ignoreMap":32},[460,160631,160632,160634,160636,160639,160641],{"class":462,"line":463},[460,160633,40244],{"class":929},[460,160635,40247],{"class":1353},[460,160637,160638],{"class":1353}," requests",[460,160640,42841],{"class":900},[460,160642,134221],{"class":1353},[14,160644,160645],{},"常见第三方库：",[16884,160647,160648,160657],{},[16887,160649,160650],{},[16890,160651,160652,160655],{},[16893,160653,160654],{},"库",[16893,160656,117189],{},[16930,160658,160659,160667,160674,160682,160690,160698,160706],{},[16890,160660,160661,160664],{},[16935,160662,160663],{},"requests",[16935,160665,160666],{},"网络请求",[16890,160668,160669,160671],{},[16935,160670,115119],{},[16935,160672,160673],{},"数值计算",[16890,160675,160676,160679],{},[16935,160677,160678],{},"pandas",[16935,160680,160681],{},"表格数据处理",[16890,160683,160684,160687],{},[16935,160685,160686],{},"matplotlib",[16935,160688,160689],{},"绘图",[16890,160691,160692,160695],{},[16935,160693,160694],{},"pyecharts",[16935,160696,160697],{},"ECharts 图表",[16890,160699,160700,160703],{},[16935,160701,160702],{},"flask",[16935,160704,160705],{},"Web 后端",[16890,160707,160708,160711],{},[16935,160709,160710],{},"pytest",[16935,160712,160713],{},"自动化测试",[18,160715,160717],{"id":160716},"_15-虚拟环境","1.5 虚拟环境",[14,160719,160720,160721,160724],{},"虚拟环境用于隔离不同项目的依赖。一个项目需要 ",[457,160722,160723],{},"pyecharts==2.x","，另一个项目需要别的版本，直接全局安装容易冲突，所以建议每个项目创建自己的虚拟环境。",[14,160726,160727],{},"创建虚拟环境：",[451,160729,160731],{"className":40235,"code":160730,"language":40237,"meta":32,"style":32},"python -m venv .venv\n",[457,160732,160733],{"__ignoreMap":32},[460,160734,160735,160737,160739,160741],{"class":462,"line":463},[460,160736,46789],{"class":929},[460,160738,115375],{"class":900},[460,160740,115378],{"class":1353},[460,160742,115381],{"class":1353},[14,160744,160745],{},"Windows 激活：",[451,160747,160749],{"className":40235,"code":160748,"language":40237,"meta":32,"style":32},".venv\\Scripts\\activate\n",[457,160750,160751],{"__ignoreMap":32},[460,160752,160753],{"class":462,"line":463},[460,160754,160748],{"class":929},[14,160756,160757],{},"macOS\u002FLinux 激活：",[451,160759,160761],{"className":40235,"code":160760,"language":40237,"meta":32,"style":32},"source .venv\u002Fbin\u002Factivate\n",[457,160762,160763],{"__ignoreMap":32},[460,160764,160765,160767],{"class":462,"line":463},[460,160766,115386],{"class":900},[460,160768,115389],{"class":1353},[14,160770,160771],{},"退出虚拟环境：",[451,160773,160775],{"className":40235,"code":160774,"language":40237,"meta":32,"style":32},"deactivate\n",[457,160776,160777],{"__ignoreMap":32},[460,160778,160779],{"class":462,"line":463},[460,160780,160774],{"class":929},[14,160782,160783],{},"保存依赖：",[451,160785,160787],{"className":40235,"code":160786,"language":40237,"meta":32,"style":32},"pip freeze > requirements.txt\n",[457,160788,160789],{"__ignoreMap":32},[460,160790,160791,160793,160796,160798],{"class":462,"line":463},[460,160792,40244],{"class":929},[460,160794,160795],{"class":1353}," freeze",[460,160797,42633],{"class":887},[460,160799,160800],{"class":1353}," requirements.txt\n",[14,160802,160803],{},"安装依赖：",[451,160805,160807],{"className":40235,"code":160806,"language":40237,"meta":32,"style":32},"pip install -r requirements.txt\n",[457,160808,160809],{"__ignoreMap":32},[460,160810,160811,160813,160815,160817],{"class":462,"line":463},[460,160812,40244],{"class":929},[460,160814,40247],{"class":1353},[460,160816,134132],{"class":900},[460,160818,160800],{"class":1353},[18,160820,160822],{"id":160821},"_16-开发工具","1.6 开发工具",[23,160824,160826],{"id":160825},"_161-pycharm","1.6.1 PyCharm",[14,160828,160829],{},"PyCharm 适合新手，因为运行按钮、项目解释器、文件结构都比较直观。",[14,160831,136555],{},[103,160833,160834,160837,160840,160846,160849],{},[43,160835,160836],{},"New Project：创建项目。",[43,160838,160839],{},"Add Interpreter：选择 Python 解释器或虚拟环境。",[43,160841,160842,160843,140476],{},"New Python File：创建 ",[457,160844,160845],{},".py",[43,160847,160848],{},"Run：运行当前文件。",[43,160850,160851],{},"Debug：断点调试。",[23,160853,160855],{"id":160854},"_162-vs-code","1.6.2 VS Code",[14,160857,160858],{},"VS Code 轻量，适合后续多语言开发。",[14,160860,160861],{},"建议安装插件：",[103,160863,160864,160867,160870],{},[43,160865,160866],{},"Python。",[43,160868,160869],{},"Pylance。",[43,160871,160872],{},"Jupyter。",[14,160874,160875],{},"选择解释器：",[451,160877,160880],{"className":160878,"code":160879,"language":8391,"meta":32},[21693],"Ctrl + Shift + P -> Python: Select Interpreter\n",[457,160881,160879],{"__ignoreMap":32},[18,160883,160885],{"id":160884},"_17-第一个python程序","1.7 第一个Python程序",[14,160887,160888,160889,41031],{},"创建文件 ",[457,160890,160891],{},"hello.py",[451,160893,160895],{"className":46787,"code":160894,"language":46789,"meta":32,"style":32},"print(\"Hello World\")\nprint(\"你好，Python\")\n",[457,160896,160897,160908],{"__ignoreMap":32},[460,160898,160899,160901,160903,160906],{"class":462,"line":463},[460,160900,46824],{"class":900},[460,160902,2174],{"class":466},[460,160904,160905],{"class":1353},"\"Hello World\"",[460,160907,3754],{"class":466},[460,160909,160910,160912,160914,160917],{"class":462,"line":476},[460,160911,46824],{"class":900},[460,160913,2174],{"class":466},[460,160915,160916],{"class":1353},"\"你好，Python\"",[460,160918,3754],{"class":466},[14,160920,160921],{},"在终端运行：",[451,160923,160925],{"className":40235,"code":160924,"language":40237,"meta":32,"style":32},"python hello.py\n",[457,160926,160927],{"__ignoreMap":32},[460,160928,160929,160931],{"class":462,"line":463},[460,160930,46789],{"class":929},[460,160932,160933],{"class":1353}," hello.py\n",[14,160935,160936],{},"或：",[451,160938,160940],{"className":40235,"code":160939,"language":40237,"meta":32,"style":32},"python3 hello.py\n",[457,160941,160942],{"__ignoreMap":32},[460,160943,160944,160946],{"class":462,"line":463},[460,160945,115372],{"class":929},[460,160947,160933],{"class":1353},[14,160949,160950],{},"输出：",[451,160952,160955],{"className":160953,"code":160954,"language":8391,"meta":32},[21693],"Hello World\n你好，Python\n",[457,160956,160954],{"__ignoreMap":32},[18,160958,160960],{"id":160959},"_18-print函数","1.8 print函数",[14,160962,160963,160966],{},[457,160964,160965],{},"print()"," 用来输出内容。",[451,160968,160970],{"className":46787,"code":160969,"language":46789,"meta":32,"style":32},"print(\"hello\")\nprint(100)\nprint(3.14)\nprint(\"年龄:\", 18)\n",[457,160971,160972,160982,160992,161002],{"__ignoreMap":32},[460,160973,160974,160976,160978,160980],{"class":462,"line":463},[460,160975,46824],{"class":900},[460,160977,2174],{"class":466},[460,160979,22349],{"class":1353},[460,160981,3754],{"class":466},[460,160983,160984,160986,160988,160990],{"class":462,"line":476},[460,160985,46824],{"class":900},[460,160987,2174],{"class":466},[460,160989,2325],{"class":900},[460,160991,3754],{"class":466},[460,160993,160994,160996,160998,161000],{"class":462,"line":482},[460,160995,46824],{"class":900},[460,160997,2174],{"class":466},[460,160999,16801],{"class":900},[460,161001,3754],{"class":466},[460,161003,161004,161006,161008,161011,161013,161015],{"class":462,"line":488},[460,161005,46824],{"class":900},[460,161007,2174],{"class":466},[460,161009,161010],{"class":1353},"\"年龄:\"",[460,161012,904],{"class":466},[460,161014,2361],{"class":900},[460,161016,3754],{"class":466},[14,161018,161019],{},"多个内容用逗号隔开，默认中间加空格：",[451,161021,161023],{"className":46787,"code":161022,"language":46789,"meta":32,"style":32},"name = \"张三\"\nage = 18\nprint(\"姓名:\", name, \"年龄:\", age)\n",[457,161024,161025,161035,161045],{"__ignoreMap":32},[460,161026,161027,161030,161032],{"class":462,"line":463},[460,161028,161029],{"class":466},"name ",[460,161031,894],{"class":887},[460,161033,161034],{"class":1353}," \"张三\"\n",[460,161036,161037,161040,161042],{"class":462,"line":476},[460,161038,161039],{"class":466},"age ",[460,161041,894],{"class":887},[460,161043,161044],{"class":900}," 18\n",[460,161046,161047,161049,161051,161054,161057,161059],{"class":462,"line":482},[460,161048,46824],{"class":900},[460,161050,2174],{"class":466},[460,161052,161053],{"class":1353},"\"姓名:\"",[460,161055,161056],{"class":466},", name, ",[460,161058,161010],{"class":1353},[460,161060,161061],{"class":466},", age)\n",[14,161063,161064],{},"修改分隔符：",[451,161066,161068],{"className":46787,"code":161067,"language":46789,"meta":32,"style":32},"print(\"2024\", \"10\", \"10\", sep=\"-\")\n",[457,161069,161070],{"__ignoreMap":32},[460,161071,161072,161074,161076,161079,161081,161083,161085,161087,161089,161092,161094,161096],{"class":462,"line":463},[460,161073,46824],{"class":900},[460,161075,2174],{"class":466},[460,161077,161078],{"class":1353},"\"2024\"",[460,161080,904],{"class":466},[460,161082,70562],{"class":1353},[460,161084,904],{"class":466},[460,161086,70562],{"class":1353},[460,161088,904],{"class":466},[460,161090,161091],{"class":3380},"sep",[460,161093,894],{"class":887},[460,161095,48888],{"class":1353},[460,161097,3754],{"class":466},[14,161099,161100],{},"修改结尾符：",[451,161102,161104],{"className":46787,"code":161103,"language":46789,"meta":32,"style":32},"print(\"hello\", end=\" \")\nprint(\"python\")\n",[457,161105,161106,161124],{"__ignoreMap":32},[460,161107,161108,161110,161112,161114,161116,161118,161120,161122],{"class":462,"line":463},[460,161109,46824],{"class":900},[460,161111,2174],{"class":466},[460,161113,22349],{"class":1353},[460,161115,904],{"class":466},[460,161117,62105],{"class":3380},[460,161119,894],{"class":887},[460,161121,20871],{"class":1353},[460,161123,3754],{"class":466},[460,161125,161126,161128,161130,161133],{"class":462,"line":476},[460,161127,46824],{"class":900},[460,161129,2174],{"class":466},[460,161131,161132],{"class":1353},"\"python\"",[460,161134,3754],{"class":466},[18,161136,161138],{"id":161137},"_19-脚本运行和交互运行","1.9 脚本运行和交互运行",[14,161140,161141],{},"交互运行适合临时验证：",[451,161143,161145],{"className":46787,"code":161144,"language":46789,"meta":32,"style":32},">>> 10 * 3\n30\n",[457,161146,161147,161157],{"__ignoreMap":32},[460,161148,161149,161151,161153,161155],{"class":462,"line":463},[460,161150,160346],{"class":887},[460,161152,5231],{"class":900},[460,161154,8325],{"class":887},[460,161156,134529],{"class":900},[460,161158,161159],{"class":462,"line":476},[460,161160,161161],{"class":900},"30\n",[14,161163,161164],{},"脚本运行适合保存程序：",[451,161166,161168],{"className":46787,"code":161167,"language":46789,"meta":32,"style":32},"price = 8\ncount = 5\nprint(price * count)\n",[457,161169,161170,161180,161189],{"__ignoreMap":32},[460,161171,161172,161175,161177],{"class":462,"line":463},[460,161173,161174],{"class":466},"price ",[460,161176,894],{"class":887},[460,161178,161179],{"class":900}," 8\n",[460,161181,161182,161185,161187],{"class":462,"line":476},[460,161183,161184],{"class":466},"count ",[460,161186,894],{"class":887},[460,161188,70671],{"class":900},[460,161190,161191,161193,161196,161198],{"class":462,"line":482},[460,161192,46824],{"class":900},[460,161194,161195],{"class":466},"(price ",[460,161197,8320],{"class":887},[460,161199,161200],{"class":466}," count)\n",[14,161202,161203],{},"实际学习中推荐：",[103,161205,161206,161209,161214],{},[43,161207,161208],{},"临时试一个语法，用交互模式。",[43,161210,161211,161212,140476],{},"写完整练习，用 ",[457,161213,160845],{},[43,161215,161216],{},"写项目，用独立目录和虚拟环境。",[18,161218,161220],{"id":161219},"_110-常见错误","1.10 常见错误",[23,161222,161224],{"id":161223},"_1101-命令找不到","1.10.1 命令找不到",[451,161226,161229],{"className":161227,"code":161228,"language":8391,"meta":32},[21693],"python: command not found\n",[457,161230,161228],{"__ignoreMap":32},[14,161232,161233],{},"原因：",[103,161235,161236,161239,161242],{},[43,161237,161238],{},"没安装 Python。",[43,161240,161241],{},"PATH 没配置。",[43,161243,161244,161245,44794],{},"Linux\u002FmacOS 应该使用 ",[457,161246,115372],{},[23,161248,161250],{"id":161249},"_1102-文件名冲突","1.10.2 文件名冲突",[14,161252,161253],{},"不要把文件命名为：",[451,161255,161258],{"className":161256,"code":161257,"language":8391,"meta":32},[21693],"random.py\njson.py\ntime.py\nrequests.py\n",[457,161259,161257],{"__ignoreMap":32},[14,161261,161262],{},"这些名字可能和标准库或第三方库冲突，导致导入模块异常。",[23,161264,161266],{"id":161265},"_1103-中文乱码","1.10.3 中文乱码",[14,161268,161269],{},"Python 3 默认源文件编码是 UTF-8。仍然建议编辑器保存为 UTF-8。",[14,161271,161272],{},"如果读写文件出现乱码，要明确指定编码：",[451,161274,161276],{"className":46787,"code":161275,"language":46789,"meta":32,"style":32},"with open(\"data.txt\", \"r\", encoding=\"utf-8\") as f:\n    content = f.read()\n",[457,161277,161278,161312],{"__ignoreMap":32},[460,161279,161280,161282,161285,161287,161290,161292,161295,161297,161300,161302,161305,161307,161309],{"class":462,"line":463},[460,161281,122326],{"class":887},[460,161283,161284],{"class":900}," open",[460,161286,2174],{"class":466},[460,161288,161289],{"class":1353},"\"data.txt\"",[460,161291,904],{"class":466},[460,161293,161294],{"class":1353},"\"r\"",[460,161296,904],{"class":466},[460,161298,161299],{"class":3380},"encoding",[460,161301,894],{"class":887},[460,161303,161304],{"class":1353},"\"utf-8\"",[460,161306,8296],{"class":466},[460,161308,47790],{"class":887},[460,161310,161311],{"class":466}," f:\n",[460,161313,161314,161317,161319],{"class":462,"line":476},[460,161315,161316],{"class":466},"    content ",[460,161318,894],{"class":887},[460,161320,161321],{"class":466}," f.read()\n",[18,161323,161325],{"id":161324},"_111-本章练习","1.11 本章练习",[103,161327,161328,161331,161337],{},[43,161329,161330],{},"安装 Python，并在终端输出版本号。",[43,161332,161333,161334,161336],{},"新建 ",[457,161335,160891],{},"，输出自己的姓名、年龄、学习目标。",[43,161338,118859,161339,161341],{},[457,161340,160965],{}," 输出下面格式：",[451,161343,161346],{"className":161344,"code":161345,"language":8391,"meta":32},[21693],"姓名: 小明\n年龄: 18\n目标: 学会Python\n",[457,161347,161345],{"__ignoreMap":32},[103,161349,161350],{"start":488},[43,161351,118859,161352,161354],{},[457,161353,161091],{}," 输出日期：",[451,161356,161359],{"className":161357,"code":161358,"language":8391,"meta":32},[21693],"2024-10-10\n",[457,161360,161358],{"__ignoreMap":32},[103,161362,161363],{"start":494},[43,161364,118859,161365,161367,161368,161370],{},[457,161366,62105],{}," 让两次 ",[457,161369,160965],{}," 输出在同一行。",[1944,161372,161373],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":161375},[161376,161377,161378,161383,161384,161385,161389,161390,161391,161392,161397],{"id":160258,"depth":476,"text":160259},{"id":160302,"depth":476,"text":160303},{"id":160403,"depth":476,"text":160404,"children":161379},[161380,161381,161382],{"id":160407,"depth":482,"text":160408},{"id":160462,"depth":482,"text":160463},{"id":160498,"depth":482,"text":160499},{"id":160571,"depth":476,"text":160572},{"id":160716,"depth":476,"text":160717},{"id":160821,"depth":476,"text":160822,"children":161386},[161387,161388],{"id":160825,"depth":482,"text":160826},{"id":160854,"depth":482,"text":160855},{"id":160884,"depth":476,"text":160885},{"id":160959,"depth":476,"text":160960},{"id":161137,"depth":476,"text":161138},{"id":161219,"depth":476,"text":161220,"children":161393},[161394,161395,161396],{"id":161223,"depth":482,"text":161224},{"id":161249,"depth":482,"text":161250},{"id":161265,"depth":482,"text":161266},{"id":161324,"depth":476,"text":161325},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch1-python",{"title":160250,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch1-Python环境与第一个程序","48XQBvj-lv6PiPUmONIPH9uzA2A9QouK3fZD6RTbf9U",{"id":161404,"title":161405,"body":161406,"description":16682,"extension":16683,"meta":163810,"navigation":521,"path":163811,"seo":163812,"stem":163813,"__hash__":163814},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch10-JSON与pyecharts折线图.md","10. JSON与pyecharts折线图",{"type":7,"value":161407,"toc":163795},[161408,161411,161415,161418,161421,161438,161441,161483,161486,161490,161493,161496,161533,161536,161570,161573,161665,161669,161683,161686,161713,161716,161720,161823,161830,161833,161850,161854,161861,162050,162053,162126,162130,162133,162217,162220,162252,162256,162460,162463,162467,162473,162575,162578,162834,162838,162841,162844,162858,162860,163046,163050,163412,163418,163422,163425,163549,163552,163731,163734,163738,163771,163775,163792],[10,161409,161405],{"id":161410},"_10-json与pyecharts折线图",[18,161412,161414],{"id":161413},"_101-数据可视化","10.1 数据可视化",[14,161416,161417],{},"数据可视化就是把数据转换成图表，让趋势、对比和异常更容易观察。",[14,161419,161420],{},"常见图表：",[103,161422,161423,161426,161429,161432,161435],{},[43,161424,161425],{},"折线图：看趋势。",[43,161427,161428],{},"柱状图：看分类对比。",[43,161430,161431],{},"饼图：看占比。",[43,161433,161434],{},"地图：看地域分布。",[43,161436,161437],{},"散点图：看两个变量之间的关系。",[14,161439,161440],{},"Python 可视化常用库：",[16884,161442,161443,161451],{},[16887,161444,161445],{},[16890,161446,161447,161449],{},[16893,161448,160654],{},[16893,161450,40153],{},[16930,161452,161453,161460,161468,161475],{},[16890,161454,161455,161457],{},[16935,161456,160686],{},[16935,161458,161459],{},"基础、经典、可定制",[16890,161461,161462,161465],{},[16935,161463,161464],{},"seaborn",[16935,161466,161467],{},"统计图表更美观",[16890,161469,161470,161472],{},[16935,161471,160694],{},[16935,161473,161474],{},"生成交互式网页图表",[16890,161476,161477,161480],{},[16935,161478,161479],{},"plotly",[16935,161481,161482],{},"交互图表能力强",[14,161484,161485],{},"黑马入门课程常用 pyecharts 做可视化案例，因为它能快速生成漂亮的 HTML 图表。",[18,161487,161489],{"id":161488},"_102-json回顾","10.2 JSON回顾",[14,161491,161492],{},"JSON 是一种文本格式，常用于接口数据、配置文件和可视化数据。",[14,161494,161495],{},"Python 字典：",[451,161497,161499],{"className":46787,"code":161498,"language":46789,"meta":32,"style":32},"data = {\n    \"name\": \"北京\",\n    \"value\": 100\n}\n",[457,161500,161501,161509,161520,161529],{"__ignoreMap":32},[460,161502,161503,161505,161507],{"class":462,"line":463},[460,161504,116151],{"class":466},[460,161506,894],{"class":887},[460,161508,1348],{"class":466},[460,161510,161511,161514,161516,161518],{"class":462,"line":476},[460,161512,161513],{"class":1353},"    \"name\"",[460,161515,1961],{"class":466},[460,161517,85424],{"class":1353},[460,161519,1363],{"class":466},[460,161521,161522,161525,161527],{"class":462,"line":482},[460,161523,161524],{"class":1353},"    \"value\"",[460,161526,1961],{"class":466},[460,161528,111951],{"class":900},[460,161530,161531],{"class":462,"line":488},[460,161532,821],{"class":466},[14,161534,161535],{},"JSON 字符串：",[451,161537,161540],{"className":161538,"code":161539,"language":160285,"meta":32,"style":32},"language-json shiki shiki-themes github-light github-dark","{\n  \"name\": \"北京\",\n  \"value\": 100\n}\n",[457,161541,161542,161546,161557,161566],{"__ignoreMap":32},[460,161543,161544],{"class":462,"line":463},[460,161545,18115],{"class":466},[460,161547,161548,161551,161553,161555],{"class":462,"line":476},[460,161549,161550],{"class":900},"  \"name\"",[460,161552,1961],{"class":466},[460,161554,85424],{"class":1353},[460,161556,1363],{"class":466},[460,161558,161559,161562,161564],{"class":462,"line":482},[460,161560,161561],{"class":900},"  \"value\"",[460,161563,1961],{"class":466},[460,161565,111951],{"class":900},[460,161567,161568],{"class":462,"line":488},[460,161569,821],{"class":466},[14,161571,161572],{},"Python 与 JSON 的转换：",[451,161574,161576],{"className":46787,"code":161575,"language":46789,"meta":32,"style":32},"import json\n\ndata = {\"name\": \"北京\", \"value\": 100}\n\njson_text = json.dumps(data, ensure_ascii=False)\nprint(json_text)\n\nnew_data = json.loads(json_text)\nprint(new_data)\n",[457,161577,161578,161585,161589,161614,161618,161637,161644,161648,161658],{"__ignoreMap":32},[460,161579,161580,161582],{"class":462,"line":463},[460,161581,46801],{"class":887},[460,161583,161584],{"class":466}," json\n",[460,161586,161587],{"class":462,"line":476},[460,161588,522],{"emptyLinePlaceholder":521},[460,161590,161591,161593,161595,161597,161599,161601,161603,161605,161608,161610,161612],{"class":462,"line":482},[460,161592,116151],{"class":466},[460,161594,894],{"class":887},[460,161596,20959],{"class":466},[460,161598,78848],{"class":1353},[460,161600,1961],{"class":466},[460,161602,85424],{"class":1353},[460,161604,904],{"class":466},[460,161606,161607],{"class":1353},"\"value\"",[460,161609,1961],{"class":466},[460,161611,2325],{"class":900},[460,161613,821],{"class":466},[460,161615,161616],{"class":462,"line":488},[460,161617,522],{"emptyLinePlaceholder":521},[460,161619,161620,161623,161625,161628,161631,161633,161635],{"class":462,"line":494},[460,161621,161622],{"class":466},"json_text ",[460,161624,894],{"class":887},[460,161626,161627],{"class":466}," json.dumps(data, ",[460,161629,161630],{"class":3380},"ensure_ascii",[460,161632,894],{"class":887},[460,161634,50292],{"class":900},[460,161636,3754],{"class":466},[460,161638,161639,161641],{"class":462,"line":500},[460,161640,46824],{"class":900},[460,161642,161643],{"class":466},"(json_text)\n",[460,161645,161646],{"class":462,"line":506},[460,161647,522],{"emptyLinePlaceholder":521},[460,161649,161650,161653,161655],{"class":462,"line":512},[460,161651,161652],{"class":466},"new_data ",[460,161654,894],{"class":887},[460,161656,161657],{"class":466}," json.loads(json_text)\n",[460,161659,161660,161662],{"class":462,"line":518},[460,161661,46824],{"class":900},[460,161663,161664],{"class":466},"(new_data)\n",[18,161666,161668],{"id":161667},"_103-安装pyecharts","10.3 安装pyecharts",[451,161670,161672],{"className":40235,"code":161671,"language":40237,"meta":32,"style":32},"pip install pyecharts\n",[457,161673,161674],{"__ignoreMap":32},[460,161675,161676,161678,161680],{"class":462,"line":463},[460,161677,40244],{"class":929},[460,161679,40247],{"class":1353},[460,161681,161682],{"class":1353}," pyecharts\n",[14,161684,161685],{},"验证：",[451,161687,161689],{"className":46787,"code":161688,"language":46789,"meta":32,"style":32},"import pyecharts\n\nprint(pyecharts.__version__)\n",[457,161690,161691,161697,161701],{"__ignoreMap":32},[460,161692,161693,161695],{"class":462,"line":463},[460,161694,46801],{"class":887},[460,161696,161682],{"class":466},[460,161698,161699],{"class":462,"line":476},[460,161700,522],{"emptyLinePlaceholder":521},[460,161702,161703,161705,161708,161711],{"class":462,"line":482},[460,161704,46824],{"class":900},[460,161706,161707],{"class":466},"(pyecharts.",[460,161709,161710],{"class":900},"__version__",[460,161712,3754],{"class":466},[14,161714,161715],{},"如果使用虚拟环境，要先激活环境再安装。",[18,161717,161719],{"id":161718},"_104-第一个折线图","10.4 第一个折线图",[451,161721,161723],{"className":46787,"code":161722,"language":46789,"meta":32,"style":32},"from pyecharts.charts import Line\n\nline = Line()\nline.add_xaxis([\"周一\", \"周二\", \"周三\", \"周四\", \"周五\"])\nline.add_yaxis(\"销售额\", [100, 120, 90, 150, 180])\nline.render(\"line.html\")\n",[457,161724,161725,161737,161741,161751,161781,161813],{"__ignoreMap":32},[460,161726,161727,161729,161732,161734],{"class":462,"line":463},[460,161728,47145],{"class":887},[460,161730,161731],{"class":466}," pyecharts.charts ",[460,161733,46801],{"class":887},[460,161735,161736],{"class":466}," Line\n",[460,161738,161739],{"class":462,"line":476},[460,161740,522],{"emptyLinePlaceholder":521},[460,161742,161743,161746,161748],{"class":462,"line":482},[460,161744,161745],{"class":466},"line ",[460,161747,894],{"class":887},[460,161749,161750],{"class":466}," Line()\n",[460,161752,161753,161756,161759,161761,161764,161766,161769,161771,161774,161776,161779],{"class":462,"line":488},[460,161754,161755],{"class":466},"line.add_xaxis([",[460,161757,161758],{"class":1353},"\"周一\"",[460,161760,904],{"class":466},[460,161762,161763],{"class":1353},"\"周二\"",[460,161765,904],{"class":466},[460,161767,161768],{"class":1353},"\"周三\"",[460,161770,904],{"class":466},[460,161772,161773],{"class":1353},"\"周四\"",[460,161775,904],{"class":466},[460,161777,161778],{"class":1353},"\"周五\"",[460,161780,13249],{"class":466},[460,161782,161783,161786,161789,161791,161793,161795,161797,161799,161801,161803,161806,161808,161811],{"class":462,"line":494},[460,161784,161785],{"class":466},"line.add_yaxis(",[460,161787,161788],{"class":1353},"\"销售额\"",[460,161790,910],{"class":466},[460,161792,2325],{"class":900},[460,161794,904],{"class":466},[460,161796,17532],{"class":900},[460,161798,904],{"class":466},[460,161800,17573],{"class":900},[460,161802,904],{"class":466},[460,161804,161805],{"class":900},"150",[460,161807,904],{"class":466},[460,161809,161810],{"class":900},"180",[460,161812,13249],{"class":466},[460,161814,161815,161818,161821],{"class":462,"line":500},[460,161816,161817],{"class":466},"line.render(",[460,161819,161820],{"class":1353},"\"line.html\"",[460,161822,3754],{"class":466},[14,161824,161825,161826,161829],{},"运行后会生成 ",[457,161827,161828],{},"line.html","，用浏览器打开即可看到图表。",[14,161831,161832],{},"核心步骤：",[103,161834,161835,161838,161841,161844,161847],{},[43,161836,161837],{},"导入图表类。",[43,161839,161840],{},"创建图表对象。",[43,161842,161843],{},"添加 x 轴数据。",[43,161845,161846],{},"添加 y 轴数据。",[43,161848,161849],{},"渲染为 HTML。",[18,161851,161853],{"id":161852},"_105-全局配置","10.5 全局配置",[14,161855,161856,161857,161860],{},"常用配置在 ",[457,161858,161859],{},"pyecharts.options"," 中。",[451,161862,161864],{"className":46787,"code":161863,"language":46789,"meta":32,"style":32},"from pyecharts import options as opts\nfrom pyecharts.charts import Line\n\nline = Line()\nline.add_xaxis([\"周一\", \"周二\", \"周三\", \"周四\", \"周五\"])\nline.add_yaxis(\"销售额\", [100, 120, 90, 150, 180])\nline.set_global_opts(\n    title_opts=opts.TitleOpts(title=\"一周销售额\"),\n    xaxis_opts=opts.AxisOpts(name=\"日期\"),\n    yaxis_opts=opts.AxisOpts(name=\"金额\"),\n    tooltip_opts=opts.TooltipOpts(trigger=\"axis\"),\n)\nline.render(\"line.html\")\n",[457,161865,161866,161883,161893,161897,161905,161929,161957,161962,161981,162000,162018,162038,162042],{"__ignoreMap":32},[460,161867,161868,161870,161873,161875,161878,161880],{"class":462,"line":463},[460,161869,47145],{"class":887},[460,161871,161872],{"class":466}," pyecharts ",[460,161874,46801],{"class":887},[460,161876,161877],{"class":466}," options ",[460,161879,47790],{"class":887},[460,161881,161882],{"class":466}," opts\n",[460,161884,161885,161887,161889,161891],{"class":462,"line":476},[460,161886,47145],{"class":887},[460,161888,161731],{"class":466},[460,161890,46801],{"class":887},[460,161892,161736],{"class":466},[460,161894,161895],{"class":462,"line":482},[460,161896,522],{"emptyLinePlaceholder":521},[460,161898,161899,161901,161903],{"class":462,"line":488},[460,161900,161745],{"class":466},[460,161902,894],{"class":887},[460,161904,161750],{"class":466},[460,161906,161907,161909,161911,161913,161915,161917,161919,161921,161923,161925,161927],{"class":462,"line":494},[460,161908,161755],{"class":466},[460,161910,161758],{"class":1353},[460,161912,904],{"class":466},[460,161914,161763],{"class":1353},[460,161916,904],{"class":466},[460,161918,161768],{"class":1353},[460,161920,904],{"class":466},[460,161922,161773],{"class":1353},[460,161924,904],{"class":466},[460,161926,161778],{"class":1353},[460,161928,13249],{"class":466},[460,161930,161931,161933,161935,161937,161939,161941,161943,161945,161947,161949,161951,161953,161955],{"class":462,"line":500},[460,161932,161785],{"class":466},[460,161934,161788],{"class":1353},[460,161936,910],{"class":466},[460,161938,2325],{"class":900},[460,161940,904],{"class":466},[460,161942,17532],{"class":900},[460,161944,904],{"class":466},[460,161946,17573],{"class":900},[460,161948,904],{"class":466},[460,161950,161805],{"class":900},[460,161952,904],{"class":466},[460,161954,161810],{"class":900},[460,161956,13249],{"class":466},[460,161958,161959],{"class":462,"line":506},[460,161960,161961],{"class":466},"line.set_global_opts(\n",[460,161963,161964,161967,161969,161972,161974,161976,161979],{"class":462,"line":512},[460,161965,161966],{"class":3380},"    title_opts",[460,161968,894],{"class":887},[460,161970,161971],{"class":466},"opts.TitleOpts(",[460,161973,1930],{"class":3380},[460,161975,894],{"class":887},[460,161977,161978],{"class":1353},"\"一周销售额\"",[460,161980,54352],{"class":466},[460,161982,161983,161986,161988,161991,161993,161995,161998],{"class":462,"line":518},[460,161984,161985],{"class":3380},"    xaxis_opts",[460,161987,894],{"class":887},[460,161989,161990],{"class":466},"opts.AxisOpts(",[460,161992,3440],{"class":3380},[460,161994,894],{"class":887},[460,161996,161997],{"class":1353},"\"日期\"",[460,161999,54352],{"class":466},[460,162001,162002,162005,162007,162009,162011,162013,162016],{"class":462,"line":525},[460,162003,162004],{"class":3380},"    yaxis_opts",[460,162006,894],{"class":887},[460,162008,161990],{"class":466},[460,162010,3440],{"class":3380},[460,162012,894],{"class":887},[460,162014,162015],{"class":1353},"\"金额\"",[460,162017,54352],{"class":466},[460,162019,162020,162023,162025,162028,162031,162033,162036],{"class":462,"line":531},[460,162021,162022],{"class":3380},"    tooltip_opts",[460,162024,894],{"class":887},[460,162026,162027],{"class":466},"opts.TooltipOpts(",[460,162029,162030],{"class":3380},"trigger",[460,162032,894],{"class":887},[460,162034,162035],{"class":1353},"\"axis\"",[460,162037,54352],{"class":466},[460,162039,162040],{"class":462,"line":537},[460,162041,3754],{"class":466},[460,162043,162044,162046,162048],{"class":462,"line":543},[460,162045,161817],{"class":466},[460,162047,161820],{"class":1353},[460,162049,3754],{"class":466},[14,162051,162052],{},"常见全局配置：",[16884,162054,162055,162064],{},[16887,162056,162057],{},[16890,162058,162059,162062],{},[16893,162060,162061],{},"配置",[16893,162063,117189],{},[16930,162065,162066,162076,162086,162096,162106,162116],{},[16890,162067,162068,162073],{},[16935,162069,162070],{},[457,162071,162072],{},"TitleOpts",[16935,162074,162075],{},"标题",[16890,162077,162078,162083],{},[16935,162079,162080],{},[457,162081,162082],{},"LegendOpts",[16935,162084,162085],{},"图例",[16890,162087,162088,162093],{},[16935,162089,162090],{},[457,162091,162092],{},"TooltipOpts",[16935,162094,162095],{},"提示框",[16890,162097,162098,162103],{},[16935,162099,162100],{},[457,162101,162102],{},"AxisOpts",[16935,162104,162105],{},"坐标轴",[16890,162107,162108,162113],{},[16935,162109,162110],{},[457,162111,162112],{},"VisualMapOpts",[16935,162114,162115],{},"视觉映射",[16890,162117,162118,162123],{},[16935,162119,162120],{},[457,162121,162122],{},"DataZoomOpts",[16935,162124,162125],{},"区域缩放",[18,162127,162129],{"id":162128},"_106-系列配置","10.6 系列配置",[14,162131,162132],{},"系列配置作用于某一组数据。",[451,162134,162136],{"className":46787,"code":162135,"language":46789,"meta":32,"style":32},"line.add_yaxis(\n    series_name=\"销售额\",\n    y_axis=[100, 120, 90, 150, 180],\n    is_smooth=True,\n    label_opts=opts.LabelOpts(is_show=True),\n)\n",[457,162137,162138,162143,162154,162183,162194,162213],{"__ignoreMap":32},[460,162139,162140],{"class":462,"line":463},[460,162141,162142],{"class":466},"line.add_yaxis(\n",[460,162144,162145,162148,162150,162152],{"class":462,"line":476},[460,162146,162147],{"class":3380},"    series_name",[460,162149,894],{"class":887},[460,162151,161788],{"class":1353},[460,162153,1363],{"class":466},[460,162155,162156,162159,162161,162163,162165,162167,162169,162171,162173,162175,162177,162179,162181],{"class":462,"line":482},[460,162157,162158],{"class":3380},"    y_axis",[460,162160,894],{"class":887},[460,162162,17601],{"class":466},[460,162164,2325],{"class":900},[460,162166,904],{"class":466},[460,162168,17532],{"class":900},[460,162170,904],{"class":466},[460,162172,17573],{"class":900},[460,162174,904],{"class":466},[460,162176,161805],{"class":900},[460,162178,904],{"class":466},[460,162180,161810],{"class":900},[460,162182,11640],{"class":466},[460,162184,162185,162188,162190,162192],{"class":462,"line":488},[460,162186,162187],{"class":3380},"    is_smooth",[460,162189,894],{"class":887},[460,162191,47882],{"class":900},[460,162193,1363],{"class":466},[460,162195,162196,162199,162201,162204,162207,162209,162211],{"class":462,"line":494},[460,162197,162198],{"class":3380},"    label_opts",[460,162200,894],{"class":887},[460,162202,162203],{"class":466},"opts.LabelOpts(",[460,162205,162206],{"class":3380},"is_show",[460,162208,894],{"class":887},[460,162210,47882],{"class":900},[460,162212,54352],{"class":466},[460,162214,162215],{"class":462,"line":500},[460,162216,3754],{"class":466},[14,162218,162219],{},"常用参数：",[103,162221,162222,162228,162234,162240,162246],{},[43,162223,162224,162227],{},[457,162225,162226],{},"series_name","：系列名称。",[43,162229,162230,162233],{},[457,162231,162232],{},"y_axis","：y 轴数据。",[43,162235,162236,162239],{},[457,162237,162238],{},"is_smooth","：是否平滑曲线。",[43,162241,162242,162245],{},[457,162243,162244],{},"label_opts","：标签配置。",[43,162247,162248,162251],{},[457,162249,162250],{},"symbol_size","：标记点大小。",[18,162253,162255],{"id":162254},"_107-多条折线","10.7 多条折线",[451,162257,162259],{"className":46787,"code":162258,"language":46789,"meta":32,"style":32},"from pyecharts import options as opts\nfrom pyecharts.charts import Line\n\ndates = [\"周一\", \"周二\", \"周三\", \"周四\", \"周五\"]\n\nline = Line()\nline.add_xaxis(dates)\nline.add_yaxis(\"线上销售\", [100, 130, 120, 160, 200], is_smooth=True)\nline.add_yaxis(\"线下销售\", [80, 90, 100, 120, 150], is_smooth=True)\nline.set_global_opts(\n    title_opts=opts.TitleOpts(title=\"线上线下销售趋势\"),\n    tooltip_opts=opts.TooltipOpts(trigger=\"axis\"),\n)\nline.render(\"sales.html\")\n",[457,162260,162261,162275,162285,162289,162318,162322,162330,162335,162373,162410,162414,162431,162447,162451],{"__ignoreMap":32},[460,162262,162263,162265,162267,162269,162271,162273],{"class":462,"line":463},[460,162264,47145],{"class":887},[460,162266,161872],{"class":466},[460,162268,46801],{"class":887},[460,162270,161877],{"class":466},[460,162272,47790],{"class":887},[460,162274,161882],{"class":466},[460,162276,162277,162279,162281,162283],{"class":462,"line":476},[460,162278,47145],{"class":887},[460,162280,161731],{"class":466},[460,162282,46801],{"class":887},[460,162284,161736],{"class":466},[460,162286,162287],{"class":462,"line":482},[460,162288,522],{"emptyLinePlaceholder":521},[460,162290,162291,162294,162296,162298,162300,162302,162304,162306,162308,162310,162312,162314,162316],{"class":462,"line":488},[460,162292,162293],{"class":466},"dates ",[460,162295,894],{"class":887},[460,162297,897],{"class":466},[460,162299,161758],{"class":1353},[460,162301,904],{"class":466},[460,162303,161763],{"class":1353},[460,162305,904],{"class":466},[460,162307,161768],{"class":1353},[460,162309,904],{"class":466},[460,162311,161773],{"class":1353},[460,162313,904],{"class":466},[460,162315,161778],{"class":1353},[460,162317,13307],{"class":466},[460,162319,162320],{"class":462,"line":494},[460,162321,522],{"emptyLinePlaceholder":521},[460,162323,162324,162326,162328],{"class":462,"line":500},[460,162325,161745],{"class":466},[460,162327,894],{"class":887},[460,162329,161750],{"class":466},[460,162331,162332],{"class":462,"line":506},[460,162333,162334],{"class":466},"line.add_xaxis(dates)\n",[460,162336,162337,162339,162342,162344,162346,162348,162351,162353,162355,162357,162359,162361,162363,162365,162367,162369,162371],{"class":462,"line":512},[460,162338,161785],{"class":466},[460,162340,162341],{"class":1353},"\"线上销售\"",[460,162343,910],{"class":466},[460,162345,2325],{"class":900},[460,162347,904],{"class":466},[460,162349,162350],{"class":900},"130",[460,162352,904],{"class":466},[460,162354,17532],{"class":900},[460,162356,904],{"class":466},[460,162358,37465],{"class":900},[460,162360,904],{"class":466},[460,162362,5490],{"class":900},[460,162364,126695],{"class":466},[460,162366,162238],{"class":3380},[460,162368,894],{"class":887},[460,162370,47882],{"class":900},[460,162372,3754],{"class":466},[460,162374,162375,162377,162380,162382,162384,162386,162388,162390,162392,162394,162396,162398,162400,162402,162404,162406,162408],{"class":462,"line":518},[460,162376,161785],{"class":466},[460,162378,162379],{"class":1353},"\"线下销售\"",[460,162381,910],{"class":466},[460,162383,7265],{"class":900},[460,162385,904],{"class":466},[460,162387,17573],{"class":900},[460,162389,904],{"class":466},[460,162391,2325],{"class":900},[460,162393,904],{"class":466},[460,162395,17532],{"class":900},[460,162397,904],{"class":466},[460,162399,161805],{"class":900},[460,162401,126695],{"class":466},[460,162403,162238],{"class":3380},[460,162405,894],{"class":887},[460,162407,47882],{"class":900},[460,162409,3754],{"class":466},[460,162411,162412],{"class":462,"line":525},[460,162413,161961],{"class":466},[460,162415,162416,162418,162420,162422,162424,162426,162429],{"class":462,"line":531},[460,162417,161966],{"class":3380},[460,162419,894],{"class":887},[460,162421,161971],{"class":466},[460,162423,1930],{"class":3380},[460,162425,894],{"class":887},[460,162427,162428],{"class":1353},"\"线上线下销售趋势\"",[460,162430,54352],{"class":466},[460,162432,162433,162435,162437,162439,162441,162443,162445],{"class":462,"line":537},[460,162434,162022],{"class":3380},[460,162436,894],{"class":887},[460,162438,162027],{"class":466},[460,162440,162030],{"class":3380},[460,162442,894],{"class":887},[460,162444,162035],{"class":1353},[460,162446,54352],{"class":466},[460,162448,162449],{"class":462,"line":543},[460,162450,3754],{"class":466},[460,162452,162453,162455,162458],{"class":462,"line":549},[460,162454,161817],{"class":466},[460,162456,162457],{"class":1353},"\"sales.html\"",[460,162459,3754],{"class":466},[14,162461,162462],{},"多条折线适合比较不同指标或不同地区。",[18,162464,162466],{"id":162465},"_108-从json文件读取数据","10.8 从JSON文件读取数据",[14,162468,162469,162470,41031],{},"假设 ",[457,162471,162472],{},"sales.json",[451,162474,162476],{"className":161538,"code":162475,"language":160285,"meta":32,"style":32},"[\n  {\"date\": \"周一\", \"online\": 100, \"offline\": 80},\n  {\"date\": \"周二\", \"online\": 130, \"offline\": 90},\n  {\"date\": \"周三\", \"online\": 120, \"offline\": 100}\n]\n",[457,162477,162478,162483,162515,162543,162571],{"__ignoreMap":32},[460,162479,162480],{"class":462,"line":463},[460,162481,162482],{"class":466},"[\n",[460,162484,162485,162488,162491,162493,162495,162497,162500,162502,162504,162506,162509,162511,162513],{"class":462,"line":476},[460,162486,162487],{"class":466},"  {",[460,162489,162490],{"class":900},"\"date\"",[460,162492,1961],{"class":466},[460,162494,161758],{"class":1353},[460,162496,904],{"class":466},[460,162498,162499],{"class":900},"\"online\"",[460,162501,1961],{"class":466},[460,162503,2325],{"class":900},[460,162505,904],{"class":466},[460,162507,162508],{"class":900},"\"offline\"",[460,162510,1961],{"class":466},[460,162512,7265],{"class":900},[460,162514,21439],{"class":466},[460,162516,162517,162519,162521,162523,162525,162527,162529,162531,162533,162535,162537,162539,162541],{"class":462,"line":482},[460,162518,162487],{"class":466},[460,162520,162490],{"class":900},[460,162522,1961],{"class":466},[460,162524,161763],{"class":1353},[460,162526,904],{"class":466},[460,162528,162499],{"class":900},[460,162530,1961],{"class":466},[460,162532,162350],{"class":900},[460,162534,904],{"class":466},[460,162536,162508],{"class":900},[460,162538,1961],{"class":466},[460,162540,17573],{"class":900},[460,162542,21439],{"class":466},[460,162544,162545,162547,162549,162551,162553,162555,162557,162559,162561,162563,162565,162567,162569],{"class":462,"line":488},[460,162546,162487],{"class":466},[460,162548,162490],{"class":900},[460,162550,1961],{"class":466},[460,162552,161768],{"class":1353},[460,162554,904],{"class":466},[460,162556,162499],{"class":900},[460,162558,1961],{"class":466},[460,162560,17532],{"class":900},[460,162562,904],{"class":466},[460,162564,162508],{"class":900},[460,162566,1961],{"class":466},[460,162568,2325],{"class":900},[460,162570,821],{"class":466},[460,162572,162573],{"class":462,"line":494},[460,162574,13307],{"class":466},[14,162576,162577],{},"读取并绘图：",[451,162579,162581],{"className":46787,"code":162580,"language":46789,"meta":32,"style":32},"import json\nfrom pyecharts import options as opts\nfrom pyecharts.charts import Line\n\nwith open(\"sales.json\", \"r\", encoding=\"utf-8\") as file:\n    data = json.load(file)\n\ndates = []\nonline_sales = []\noffline_sales = []\n\nfor item in data:\n    dates.append(item[\"date\"])\n    online_sales.append(item[\"online\"])\n    offline_sales.append(item[\"offline\"])\n\nline = Line()\nline.add_xaxis(dates)\nline.add_yaxis(\"线上销售\", online_sales, is_smooth=True)\nline.add_yaxis(\"线下销售\", offline_sales, is_smooth=True)\nline.set_global_opts(\n    title_opts=opts.TitleOpts(title=\"销售趋势\"),\n    tooltip_opts=opts.TooltipOpts(trigger=\"axis\"),\n)\nline.render(\"sales.html\")\n",[457,162582,162583,162589,162603,162613,162617,162649,162662,162666,162674,162683,162692,162696,162708,162717,162726,162735,162739,162747,162751,162768,162785,162789,162806,162822,162826],{"__ignoreMap":32},[460,162584,162585,162587],{"class":462,"line":463},[460,162586,46801],{"class":887},[460,162588,161584],{"class":466},[460,162590,162591,162593,162595,162597,162599,162601],{"class":462,"line":476},[460,162592,47145],{"class":887},[460,162594,161872],{"class":466},[460,162596,46801],{"class":887},[460,162598,161877],{"class":466},[460,162600,47790],{"class":887},[460,162602,161882],{"class":466},[460,162604,162605,162607,162609,162611],{"class":462,"line":482},[460,162606,47145],{"class":887},[460,162608,161731],{"class":466},[460,162610,46801],{"class":887},[460,162612,161736],{"class":466},[460,162614,162615],{"class":462,"line":488},[460,162616,522],{"emptyLinePlaceholder":521},[460,162618,162619,162621,162623,162625,162628,162630,162632,162634,162636,162638,162640,162642,162644,162647],{"class":462,"line":494},[460,162620,122326],{"class":887},[460,162622,161284],{"class":900},[460,162624,2174],{"class":466},[460,162626,162627],{"class":1353},"\"sales.json\"",[460,162629,904],{"class":466},[460,162631,161294],{"class":1353},[460,162633,904],{"class":466},[460,162635,161299],{"class":3380},[460,162637,894],{"class":887},[460,162639,161304],{"class":1353},[460,162641,8296],{"class":466},[460,162643,47790],{"class":887},[460,162645,162646],{"class":3380}," file",[460,162648,20257],{"class":466},[460,162650,162651,162653,162655,162658,162660],{"class":462,"line":500},[460,162652,115914],{"class":466},[460,162654,894],{"class":887},[460,162656,162657],{"class":466}," json.load(",[460,162659,61658],{"class":3380},[460,162661,3754],{"class":466},[460,162663,162664],{"class":462,"line":506},[460,162665,522],{"emptyLinePlaceholder":521},[460,162667,162668,162670,162672],{"class":462,"line":512},[460,162669,162293],{"class":466},[460,162671,894],{"class":887},[460,162673,11766],{"class":466},[460,162675,162676,162679,162681],{"class":462,"line":518},[460,162677,162678],{"class":466},"online_sales ",[460,162680,894],{"class":887},[460,162682,11766],{"class":466},[460,162684,162685,162688,162690],{"class":462,"line":525},[460,162686,162687],{"class":466},"offline_sales ",[460,162689,894],{"class":887},[460,162691,11766],{"class":466},[460,162693,162694],{"class":462,"line":531},[460,162695,522],{"emptyLinePlaceholder":521},[460,162697,162698,162700,162703,162705],{"class":462,"line":537},[460,162699,19547],{"class":887},[460,162701,162702],{"class":466}," item ",[460,162704,11713],{"class":887},[460,162706,162707],{"class":466}," data:\n",[460,162709,162710,162713,162715],{"class":462,"line":543},[460,162711,162712],{"class":466},"    dates.append(item[",[460,162714,162490],{"class":1353},[460,162716,13249],{"class":466},[460,162718,162719,162722,162724],{"class":462,"line":549},[460,162720,162721],{"class":466},"    online_sales.append(item[",[460,162723,162499],{"class":1353},[460,162725,13249],{"class":466},[460,162727,162728,162731,162733],{"class":462,"line":555},[460,162729,162730],{"class":466},"    offline_sales.append(item[",[460,162732,162508],{"class":1353},[460,162734,13249],{"class":466},[460,162736,162737],{"class":462,"line":560},[460,162738,522],{"emptyLinePlaceholder":521},[460,162740,162741,162743,162745],{"class":462,"line":566},[460,162742,161745],{"class":466},[460,162744,894],{"class":887},[460,162746,161750],{"class":466},[460,162748,162749],{"class":462,"line":572},[460,162750,162334],{"class":466},[460,162752,162753,162755,162757,162760,162762,162764,162766],{"class":462,"line":578},[460,162754,161785],{"class":466},[460,162756,162341],{"class":1353},[460,162758,162759],{"class":466},", online_sales, ",[460,162761,162238],{"class":3380},[460,162763,894],{"class":887},[460,162765,47882],{"class":900},[460,162767,3754],{"class":466},[460,162769,162770,162772,162774,162777,162779,162781,162783],{"class":462,"line":812},[460,162771,161785],{"class":466},[460,162773,162379],{"class":1353},[460,162775,162776],{"class":466},", offline_sales, ",[460,162778,162238],{"class":3380},[460,162780,894],{"class":887},[460,162782,47882],{"class":900},[460,162784,3754],{"class":466},[460,162786,162787],{"class":462,"line":818},[460,162788,161961],{"class":466},[460,162790,162791,162793,162795,162797,162799,162801,162804],{"class":462,"line":824},[460,162792,161966],{"class":3380},[460,162794,894],{"class":887},[460,162796,161971],{"class":466},[460,162798,1930],{"class":3380},[460,162800,894],{"class":887},[460,162802,162803],{"class":1353},"\"销售趋势\"",[460,162805,54352],{"class":466},[460,162807,162808,162810,162812,162814,162816,162818,162820],{"class":462,"line":2074},[460,162809,162022],{"class":3380},[460,162811,894],{"class":887},[460,162813,162027],{"class":466},[460,162815,162030],{"class":3380},[460,162817,894],{"class":887},[460,162819,162035],{"class":1353},[460,162821,54352],{"class":466},[460,162823,162824],{"class":462,"line":2088},[460,162825,3754],{"class":466},[460,162827,162828,162830,162832],{"class":462,"line":2103},[460,162829,161817],{"class":466},[460,162831,162457],{"class":1353},[460,162833,3754],{"class":466},[18,162835,162837],{"id":162836},"_109-数据清洗","10.9 数据清洗",[14,162839,162840],{},"真实数据经常不整齐，需要清洗。",[14,162842,162843],{},"常见问题：",[103,162845,162846,162849,162852,162855],{},[43,162847,162848],{},"数字是字符串。",[43,162850,162851],{},"字段缺失。",[43,162853,162854],{},"空值。",[43,162856,162857],{},"日期格式不统一。",[14,162859,31586],{},[451,162861,162863],{"className":46787,"code":162862,"language":46789,"meta":32,"style":32},"raw_data = [\n    {\"date\": \"周一\", \"sales\": \"100\"},\n    {\"date\": \"周二\", \"sales\": \"\"},\n    {\"date\": \"周三\", \"sales\": \"120\"},\n]\n\ndates = []\nsales = []\n\nfor item in raw_data:\n    value = item.get(\"sales\")\n    if not value:\n        continue\n\n    dates.append(item[\"date\"])\n    sales.append(int(value))\n\nprint(dates)\nprint(sales)\n",[457,162864,162865,162874,162897,162917,162938,162942,162946,162954,162963,162967,162978,162992,163001,163006,163010,163018,163028,163032,163039],{"__ignoreMap":32},[460,162866,162867,162870,162872],{"class":462,"line":463},[460,162868,162869],{"class":466},"raw_data ",[460,162871,894],{"class":887},[460,162873,1385],{"class":466},[460,162875,162876,162879,162881,162883,162885,162887,162890,162892,162895],{"class":462,"line":476},[460,162877,162878],{"class":466},"    {",[460,162880,162490],{"class":1353},[460,162882,1961],{"class":466},[460,162884,161758],{"class":1353},[460,162886,904],{"class":466},[460,162888,162889],{"class":1353},"\"sales\"",[460,162891,1961],{"class":466},[460,162893,162894],{"class":1353},"\"100\"",[460,162896,21439],{"class":466},[460,162898,162899,162901,162903,162905,162907,162909,162911,162913,162915],{"class":462,"line":482},[460,162900,162878],{"class":466},[460,162902,162490],{"class":1353},[460,162904,1961],{"class":466},[460,162906,161763],{"class":1353},[460,162908,904],{"class":466},[460,162910,162889],{"class":1353},[460,162912,1961],{"class":466},[460,162914,6606],{"class":1353},[460,162916,21439],{"class":466},[460,162918,162919,162921,162923,162925,162927,162929,162931,162933,162936],{"class":462,"line":488},[460,162920,162878],{"class":466},[460,162922,162490],{"class":1353},[460,162924,1961],{"class":466},[460,162926,161768],{"class":1353},[460,162928,904],{"class":466},[460,162930,162889],{"class":1353},[460,162932,1961],{"class":466},[460,162934,162935],{"class":1353},"\"120\"",[460,162937,21439],{"class":466},[460,162939,162940],{"class":462,"line":494},[460,162941,13307],{"class":466},[460,162943,162944],{"class":462,"line":500},[460,162945,522],{"emptyLinePlaceholder":521},[460,162947,162948,162950,162952],{"class":462,"line":506},[460,162949,162293],{"class":466},[460,162951,894],{"class":887},[460,162953,11766],{"class":466},[460,162955,162956,162959,162961],{"class":462,"line":512},[460,162957,162958],{"class":466},"sales ",[460,162960,894],{"class":887},[460,162962,11766],{"class":466},[460,162964,162965],{"class":462,"line":518},[460,162966,522],{"emptyLinePlaceholder":521},[460,162968,162969,162971,162973,162975],{"class":462,"line":525},[460,162970,19547],{"class":887},[460,162972,162702],{"class":466},[460,162974,11713],{"class":887},[460,162976,162977],{"class":466}," raw_data:\n",[460,162979,162980,162983,162985,162988,162990],{"class":462,"line":531},[460,162981,162982],{"class":466},"    value ",[460,162984,894],{"class":887},[460,162986,162987],{"class":466}," item.get(",[460,162989,162889],{"class":1353},[460,162991,3754],{"class":466},[460,162993,162994,162996,162998],{"class":462,"line":537},[460,162995,19622],{"class":887},[460,162997,55235],{"class":887},[460,162999,163000],{"class":466}," value:\n",[460,163002,163003],{"class":462,"line":543},[460,163004,163005],{"class":887},"        continue\n",[460,163007,163008],{"class":462,"line":549},[460,163009,522],{"emptyLinePlaceholder":521},[460,163011,163012,163014,163016],{"class":462,"line":555},[460,163013,162712],{"class":466},[460,163015,162490],{"class":1353},[460,163017,13249],{"class":466},[460,163019,163020,163023,163025],{"class":462,"line":560},[460,163021,163022],{"class":466},"    sales.append(",[460,163024,16759],{"class":900},[460,163026,163027],{"class":466},"(value))\n",[460,163029,163030],{"class":462,"line":566},[460,163031,522],{"emptyLinePlaceholder":521},[460,163033,163034,163036],{"class":462,"line":572},[460,163035,46824],{"class":900},[460,163037,163038],{"class":466},"(dates)\n",[460,163040,163041,163043],{"class":462,"line":578},[460,163042,46824],{"class":900},[460,163044,163045],{"class":466},"(sales)\n",[18,163047,163049],{"id":163048},"_1010-小案例每日销售额折线图","10.10 小案例：每日销售额折线图",[451,163051,163053],{"className":46787,"code":163052,"language":46789,"meta":32,"style":32},"from pyecharts import options as opts\nfrom pyecharts.charts import Line\n\nsales = [\n    {\"date\": \"2024-10-01\", \"amount\": 1200},\n    {\"date\": \"2024-10-02\", \"amount\": 1800},\n    {\"date\": \"2024-10-03\", \"amount\": 1500},\n    {\"date\": \"2024-10-04\", \"amount\": 2100},\n    {\"date\": \"2024-10-05\", \"amount\": 2600},\n]\n\ndates = [item[\"date\"] for item in sales]\namounts = [item[\"amount\"] for item in sales]\n\nline = Line()\nline.add_xaxis(dates)\nline.add_yaxis(\n    series_name=\"销售额\",\n    y_axis=amounts,\n    is_smooth=True,\n    label_opts=opts.LabelOpts(is_show=True),\n)\nline.set_global_opts(\n    title_opts=opts.TitleOpts(title=\"每日销售额\"),\n    xaxis_opts=opts.AxisOpts(name=\"日期\"),\n    yaxis_opts=opts.AxisOpts(name=\"金额\"),\n    tooltip_opts=opts.TooltipOpts(trigger=\"axis\"),\n    datazoom_opts=[opts.DataZoomOpts()],\n)\nline.render(\"daily_sales.html\")\n",[457,163054,163055,163069,163079,163083,163091,163112,163134,163156,163178,163200,163204,163208,163230,163251,163255,163263,163267,163271,163281,163290,163300,163316,163320,163324,163341,163357,163373,163389,163399,163403],{"__ignoreMap":32},[460,163056,163057,163059,163061,163063,163065,163067],{"class":462,"line":463},[460,163058,47145],{"class":887},[460,163060,161872],{"class":466},[460,163062,46801],{"class":887},[460,163064,161877],{"class":466},[460,163066,47790],{"class":887},[460,163068,161882],{"class":466},[460,163070,163071,163073,163075,163077],{"class":462,"line":476},[460,163072,47145],{"class":887},[460,163074,161731],{"class":466},[460,163076,46801],{"class":887},[460,163078,161736],{"class":466},[460,163080,163081],{"class":462,"line":482},[460,163082,522],{"emptyLinePlaceholder":521},[460,163084,163085,163087,163089],{"class":462,"line":488},[460,163086,162958],{"class":466},[460,163088,894],{"class":887},[460,163090,1385],{"class":466},[460,163092,163093,163095,163097,163099,163102,163104,163106,163108,163110],{"class":462,"line":494},[460,163094,162878],{"class":466},[460,163096,162490],{"class":1353},[460,163098,1961],{"class":466},[460,163100,163101],{"class":1353},"\"2024-10-01\"",[460,163103,904],{"class":466},[460,163105,7840],{"class":1353},[460,163107,1961],{"class":466},[460,163109,15872],{"class":900},[460,163111,21439],{"class":466},[460,163113,163114,163116,163118,163120,163123,163125,163127,163129,163132],{"class":462,"line":500},[460,163115,162878],{"class":466},[460,163117,162490],{"class":1353},[460,163119,1961],{"class":466},[460,163121,163122],{"class":1353},"\"2024-10-02\"",[460,163124,904],{"class":466},[460,163126,7840],{"class":1353},[460,163128,1961],{"class":466},[460,163130,163131],{"class":900},"1800",[460,163133,21439],{"class":466},[460,163135,163136,163138,163140,163142,163145,163147,163149,163151,163154],{"class":462,"line":506},[460,163137,162878],{"class":466},[460,163139,162490],{"class":1353},[460,163141,1961],{"class":466},[460,163143,163144],{"class":1353},"\"2024-10-03\"",[460,163146,904],{"class":466},[460,163148,7840],{"class":1353},[460,163150,1961],{"class":466},[460,163152,163153],{"class":900},"1500",[460,163155,21439],{"class":466},[460,163157,163158,163160,163162,163164,163167,163169,163171,163173,163176],{"class":462,"line":512},[460,163159,162878],{"class":466},[460,163161,162490],{"class":1353},[460,163163,1961],{"class":466},[460,163165,163166],{"class":1353},"\"2024-10-04\"",[460,163168,904],{"class":466},[460,163170,7840],{"class":1353},[460,163172,1961],{"class":466},[460,163174,163175],{"class":900},"2100",[460,163177,21439],{"class":466},[460,163179,163180,163182,163184,163186,163189,163191,163193,163195,163198],{"class":462,"line":518},[460,163181,162878],{"class":466},[460,163183,162490],{"class":1353},[460,163185,1961],{"class":466},[460,163187,163188],{"class":1353},"\"2024-10-05\"",[460,163190,904],{"class":466},[460,163192,7840],{"class":1353},[460,163194,1961],{"class":466},[460,163196,163197],{"class":900},"2600",[460,163199,21439],{"class":466},[460,163201,163202],{"class":462,"line":525},[460,163203,13307],{"class":466},[460,163205,163206],{"class":462,"line":531},[460,163207,522],{"emptyLinePlaceholder":521},[460,163209,163210,163212,163214,163217,163219,163221,163223,163225,163227],{"class":462,"line":537},[460,163211,162293],{"class":466},[460,163213,894],{"class":887},[460,163215,163216],{"class":466}," [item[",[460,163218,162490],{"class":1353},[460,163220,11884],{"class":466},[460,163222,19547],{"class":887},[460,163224,162702],{"class":466},[460,163226,11713],{"class":887},[460,163228,163229],{"class":466}," sales]\n",[460,163231,163232,163235,163237,163239,163241,163243,163245,163247,163249],{"class":462,"line":543},[460,163233,163234],{"class":466},"amounts ",[460,163236,894],{"class":887},[460,163238,163216],{"class":466},[460,163240,7840],{"class":1353},[460,163242,11884],{"class":466},[460,163244,19547],{"class":887},[460,163246,162702],{"class":466},[460,163248,11713],{"class":887},[460,163250,163229],{"class":466},[460,163252,163253],{"class":462,"line":549},[460,163254,522],{"emptyLinePlaceholder":521},[460,163256,163257,163259,163261],{"class":462,"line":555},[460,163258,161745],{"class":466},[460,163260,894],{"class":887},[460,163262,161750],{"class":466},[460,163264,163265],{"class":462,"line":560},[460,163266,162334],{"class":466},[460,163268,163269],{"class":462,"line":566},[460,163270,162142],{"class":466},[460,163272,163273,163275,163277,163279],{"class":462,"line":572},[460,163274,162147],{"class":3380},[460,163276,894],{"class":887},[460,163278,161788],{"class":1353},[460,163280,1363],{"class":466},[460,163282,163283,163285,163287],{"class":462,"line":578},[460,163284,162158],{"class":3380},[460,163286,894],{"class":887},[460,163288,163289],{"class":466},"amounts,\n",[460,163291,163292,163294,163296,163298],{"class":462,"line":812},[460,163293,162187],{"class":3380},[460,163295,894],{"class":887},[460,163297,47882],{"class":900},[460,163299,1363],{"class":466},[460,163301,163302,163304,163306,163308,163310,163312,163314],{"class":462,"line":818},[460,163303,162198],{"class":3380},[460,163305,894],{"class":887},[460,163307,162203],{"class":466},[460,163309,162206],{"class":3380},[460,163311,894],{"class":887},[460,163313,47882],{"class":900},[460,163315,54352],{"class":466},[460,163317,163318],{"class":462,"line":824},[460,163319,3754],{"class":466},[460,163321,163322],{"class":462,"line":2074},[460,163323,161961],{"class":466},[460,163325,163326,163328,163330,163332,163334,163336,163339],{"class":462,"line":2088},[460,163327,161966],{"class":3380},[460,163329,894],{"class":887},[460,163331,161971],{"class":466},[460,163333,1930],{"class":3380},[460,163335,894],{"class":887},[460,163337,163338],{"class":1353},"\"每日销售额\"",[460,163340,54352],{"class":466},[460,163342,163343,163345,163347,163349,163351,163353,163355],{"class":462,"line":2103},[460,163344,161985],{"class":3380},[460,163346,894],{"class":887},[460,163348,161990],{"class":466},[460,163350,3440],{"class":3380},[460,163352,894],{"class":887},[460,163354,161997],{"class":1353},[460,163356,54352],{"class":466},[460,163358,163359,163361,163363,163365,163367,163369,163371],{"class":462,"line":2122},[460,163360,162004],{"class":3380},[460,163362,894],{"class":887},[460,163364,161990],{"class":466},[460,163366,3440],{"class":3380},[460,163368,894],{"class":887},[460,163370,162015],{"class":1353},[460,163372,54352],{"class":466},[460,163374,163375,163377,163379,163381,163383,163385,163387],{"class":462,"line":2144},[460,163376,162022],{"class":3380},[460,163378,894],{"class":887},[460,163380,162027],{"class":466},[460,163382,162030],{"class":3380},[460,163384,894],{"class":887},[460,163386,162035],{"class":1353},[460,163388,54352],{"class":466},[460,163390,163391,163394,163396],{"class":462,"line":2158},[460,163392,163393],{"class":3380},"    datazoom_opts",[460,163395,894],{"class":887},[460,163397,163398],{"class":466},"[opts.DataZoomOpts()],\n",[460,163400,163401],{"class":462,"line":2163},[460,163402,3754],{"class":466},[460,163404,163405,163407,163410],{"class":462,"line":2168},[460,163406,161817],{"class":466},[460,163408,163409],{"class":1353},"\"daily_sales.html\"",[460,163411,3754],{"class":466},[14,163413,163414,163417],{},[457,163415,163416],{},"datazoom_opts"," 可以让图表支持拖拽缩放，数据量大时很有用。",[18,163419,163421],{"id":163420},"_1011-小案例疫情趋势折线图结构","10.11 小案例：疫情趋势折线图结构",[14,163423,163424],{},"如果数据结构如下：",[451,163426,163428],{"className":46787,"code":163427,"language":46789,"meta":32,"style":32},"data = {\n    \"北京\": [\n        {\"date\": \"2024-01-01\", \"confirm\": 10},\n        {\"date\": \"2024-01-02\", \"confirm\": 12},\n    ],\n    \"上海\": [\n        {\"date\": \"2024-01-01\", \"confirm\": 8},\n        {\"date\": \"2024-01-02\", \"confirm\": 13},\n    ],\n}\n",[457,163429,163430,163438,163446,163468,163489,163494,163501,163521,163541,163545],{"__ignoreMap":32},[460,163431,163432,163434,163436],{"class":462,"line":463},[460,163433,116151],{"class":466},[460,163435,894],{"class":887},[460,163437,1348],{"class":466},[460,163439,163440,163443],{"class":462,"line":476},[460,163441,163442],{"class":1353},"    \"北京\"",[460,163444,163445],{"class":466},": [\n",[460,163447,163448,163450,163452,163454,163457,163459,163462,163464,163466],{"class":462,"line":482},[460,163449,21426],{"class":466},[460,163451,162490],{"class":1353},[460,163453,1961],{"class":466},[460,163455,163456],{"class":1353},"\"2024-01-01\"",[460,163458,904],{"class":466},[460,163460,163461],{"class":1353},"\"confirm\"",[460,163463,1961],{"class":466},[460,163465,2096],{"class":900},[460,163467,21439],{"class":466},[460,163469,163470,163472,163474,163476,163479,163481,163483,163485,163487],{"class":462,"line":488},[460,163471,21426],{"class":466},[460,163473,162490],{"class":1353},[460,163475,1961],{"class":466},[460,163477,163478],{"class":1353},"\"2024-01-02\"",[460,163480,904],{"class":466},[460,163482,163461],{"class":1353},[460,163484,1961],{"class":466},[460,163486,5531],{"class":900},[460,163488,21439],{"class":466},[460,163490,163491],{"class":462,"line":494},[460,163492,163493],{"class":466},"    ],\n",[460,163495,163496,163499],{"class":462,"line":500},[460,163497,163498],{"class":1353},"    \"上海\"",[460,163500,163445],{"class":466},[460,163502,163503,163505,163507,163509,163511,163513,163515,163517,163519],{"class":462,"line":506},[460,163504,21426],{"class":466},[460,163506,162490],{"class":1353},[460,163508,1961],{"class":466},[460,163510,163456],{"class":1353},[460,163512,904],{"class":466},[460,163514,163461],{"class":1353},[460,163516,1961],{"class":466},[460,163518,17130],{"class":900},[460,163520,21439],{"class":466},[460,163522,163523,163525,163527,163529,163531,163533,163535,163537,163539],{"class":462,"line":512},[460,163524,21426],{"class":466},[460,163526,162490],{"class":1353},[460,163528,1961],{"class":466},[460,163530,163478],{"class":1353},[460,163532,904],{"class":466},[460,163534,163461],{"class":1353},[460,163536,1961],{"class":466},[460,163538,17250],{"class":900},[460,163540,21439],{"class":466},[460,163542,163543],{"class":462,"line":518},[460,163544,163493],{"class":466},[460,163546,163547],{"class":462,"line":525},[460,163548,821],{"class":466},[14,163550,163551],{},"绘制多地区趋势：",[451,163553,163555],{"className":46787,"code":163554,"language":46789,"meta":32,"style":32},"from pyecharts import options as opts\nfrom pyecharts.charts import Line\n\ndates = [item[\"date\"] for item in data[\"北京\"]]\n\nline = Line()\nline.add_xaxis(dates)\n\nfor city, records in data.items():\n    values = [item[\"confirm\"] for item in records]\n    line.add_yaxis(city, values, is_smooth=True)\n\nline.set_global_opts(\n    title_opts=opts.TitleOpts(title=\"多地区趋势图\"),\n    tooltip_opts=opts.TooltipOpts(trigger=\"axis\"),\n)\nline.render(\"trend.html\")\n",[457,163556,163557,163571,163581,163585,163610,163614,163622,163626,163630,163642,163664,163677,163681,163685,163702,163718,163722],{"__ignoreMap":32},[460,163558,163559,163561,163563,163565,163567,163569],{"class":462,"line":463},[460,163560,47145],{"class":887},[460,163562,161872],{"class":466},[460,163564,46801],{"class":887},[460,163566,161877],{"class":466},[460,163568,47790],{"class":887},[460,163570,161882],{"class":466},[460,163572,163573,163575,163577,163579],{"class":462,"line":476},[460,163574,47145],{"class":887},[460,163576,161731],{"class":466},[460,163578,46801],{"class":887},[460,163580,161736],{"class":466},[460,163582,163583],{"class":462,"line":482},[460,163584,522],{"emptyLinePlaceholder":521},[460,163586,163587,163589,163591,163593,163595,163597,163599,163601,163603,163606,163608],{"class":462,"line":488},[460,163588,162293],{"class":466},[460,163590,894],{"class":887},[460,163592,163216],{"class":466},[460,163594,162490],{"class":1353},[460,163596,11884],{"class":466},[460,163598,19547],{"class":887},[460,163600,162702],{"class":466},[460,163602,11713],{"class":887},[460,163604,163605],{"class":466}," data[",[460,163607,85424],{"class":1353},[460,163609,921],{"class":466},[460,163611,163612],{"class":462,"line":494},[460,163613,522],{"emptyLinePlaceholder":521},[460,163615,163616,163618,163620],{"class":462,"line":500},[460,163617,161745],{"class":466},[460,163619,894],{"class":887},[460,163621,161750],{"class":466},[460,163623,163624],{"class":462,"line":506},[460,163625,162334],{"class":466},[460,163627,163628],{"class":462,"line":512},[460,163629,522],{"emptyLinePlaceholder":521},[460,163631,163632,163634,163637,163639],{"class":462,"line":518},[460,163633,19547],{"class":887},[460,163635,163636],{"class":466}," city, records ",[460,163638,11713],{"class":887},[460,163640,163641],{"class":466}," data.items():\n",[460,163643,163644,163647,163649,163651,163653,163655,163657,163659,163661],{"class":462,"line":525},[460,163645,163646],{"class":466},"    values ",[460,163648,894],{"class":887},[460,163650,163216],{"class":466},[460,163652,163461],{"class":1353},[460,163654,11884],{"class":466},[460,163656,19547],{"class":887},[460,163658,162702],{"class":466},[460,163660,11713],{"class":887},[460,163662,163663],{"class":466}," records]\n",[460,163665,163666,163669,163671,163673,163675],{"class":462,"line":531},[460,163667,163668],{"class":466},"    line.add_yaxis(city, values, ",[460,163670,162238],{"class":3380},[460,163672,894],{"class":887},[460,163674,47882],{"class":900},[460,163676,3754],{"class":466},[460,163678,163679],{"class":462,"line":537},[460,163680,522],{"emptyLinePlaceholder":521},[460,163682,163683],{"class":462,"line":543},[460,163684,161961],{"class":466},[460,163686,163687,163689,163691,163693,163695,163697,163700],{"class":462,"line":549},[460,163688,161966],{"class":3380},[460,163690,894],{"class":887},[460,163692,161971],{"class":466},[460,163694,1930],{"class":3380},[460,163696,894],{"class":887},[460,163698,163699],{"class":1353},"\"多地区趋势图\"",[460,163701,54352],{"class":466},[460,163703,163704,163706,163708,163710,163712,163714,163716],{"class":462,"line":555},[460,163705,162022],{"class":3380},[460,163707,894],{"class":887},[460,163709,162027],{"class":466},[460,163711,162030],{"class":3380},[460,163713,894],{"class":887},[460,163715,162035],{"class":1353},[460,163717,54352],{"class":466},[460,163719,163720],{"class":462,"line":560},[460,163721,3754],{"class":466},[460,163723,163724,163726,163729],{"class":462,"line":566},[460,163725,161817],{"class":466},[460,163727,163728],{"class":1353},"\"trend.html\"",[460,163730,3754],{"class":466},[14,163732,163733],{},"这种思路适合一批地区、一批商品或一批指标的趋势对比。",[18,163735,163737],{"id":163736},"_1012-易错点","10.12 易错点",[103,163739,163740,163746,163752,163762,163768],{},[43,163741,163742,163745],{},[457,163743,163744],{},"add_xaxis()"," 的数据数量要和 y 轴数量对应。",[43,163747,163748,163751],{},[457,163749,163750],{},"render()"," 生成的是 HTML，不是图片。",[43,163753,163754,163755,163758,163759,44794],{},"JSON 字符串用 ",[457,163756,163757],{},"json.loads()","，JSON 文件用 ",[457,163760,163761],{},"json.load()",[43,163763,163764,163765,44794],{},"中文 JSON 保存时加 ",[457,163766,163767],{},"ensure_ascii=False",[43,163769,163770],{},"pyecharts 图表不能在纯终端里直接显示，需要浏览器打开 HTML。",[18,163772,163774],{"id":163773},"_1013-本章练习","10.13 本章练习",[103,163776,163777,163780,163783,163786,163789],{},[43,163778,163779],{},"安装 pyecharts 并生成第一个折线图。",[43,163781,163782],{},"用 JSON 文件保存一周销售数据，并读取绘制图表。",[43,163784,163785],{},"绘制两条折线，对比线上和线下销售额。",[43,163787,163788],{},"给折线图添加标题、坐标轴名称、提示框和缩放条。",[43,163790,163791],{},"对含有空值的销售数据进行清洗后再绘图。",[1944,163793,163794],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":32,"searchDepth":476,"depth":476,"links":163796},[163797,163798,163799,163800,163801,163802,163803,163804,163805,163806,163807,163808,163809],{"id":161413,"depth":476,"text":161414},{"id":161488,"depth":476,"text":161489},{"id":161667,"depth":476,"text":161668},{"id":161718,"depth":476,"text":161719},{"id":161852,"depth":476,"text":161853},{"id":162128,"depth":476,"text":162129},{"id":162254,"depth":476,"text":162255},{"id":162465,"depth":476,"text":162466},{"id":162836,"depth":476,"text":162837},{"id":163048,"depth":476,"text":163049},{"id":163420,"depth":476,"text":163421},{"id":163736,"depth":476,"text":163737},{"id":163773,"depth":476,"text":163774},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch10-jsonpyecharts",{"title":161405,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch10-JSON与pyecharts折线图","StYaXLIht8VuaOlNFrmS7a-kIxJDRawZKxKfnvgi7JI",{"id":163816,"title":163817,"body":163818,"description":16682,"extension":16683,"meta":166178,"navigation":521,"path":166179,"seo":166180,"stem":166181,"__hash__":166182},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch11-面向对象基础.md","11. 面向对象基础",{"type":7,"value":163819,"toc":166155},[163820,163823,163827,163830,163833,163909,163912,164003,164006,164010,164013,164057,164070,164074,164077,164144,164147,164151,164154,164238,164246,164250,164255,164396,164399,164410,164416,164422,164536,164540,164543,164546,164799,164802,164806,164809,164913,164916,164920,165071,165075,165082,165195,165199,165202,165308,165311,165315,165318,165349,165352,165457,165460,165464,165468,165478,165546,165550,165557,165621,165624,165628,165634,165730,165739,165743,166067,166076,166080,166108,166112,166152],[10,163821,163817],{"id":163822},"_11-面向对象基础",[18,163824,163826],{"id":163825},"_111-什么是面向对象","11.1 什么是面向对象",[14,163828,163829],{},"面向对象是一种组织代码的方式。它把数据和操作数据的函数放在一起，形成对象。",[14,163831,163832],{},"面向过程：",[451,163834,163836],{"className":46787,"code":163835,"language":46789,"meta":32,"style":32},"name = \"小明\"\nage = 18\n\ndef introduce(name, age):\n    print(f\"我叫{name}，今年{age}岁\")\n\nintroduce(name, age)\n",[457,163837,163838,163847,163855,163859,163869,163900,163904],{"__ignoreMap":32},[460,163839,163840,163842,163844],{"class":462,"line":463},[460,163841,161029],{"class":466},[460,163843,894],{"class":887},[460,163845,163846],{"class":1353}," \"小明\"\n",[460,163848,163849,163851,163853],{"class":462,"line":476},[460,163850,161039],{"class":466},[460,163852,894],{"class":887},[460,163854,161044],{"class":900},[460,163856,163857],{"class":462,"line":482},[460,163858,522],{"emptyLinePlaceholder":521},[460,163860,163861,163863,163866],{"class":462,"line":488},[460,163862,48352],{"class":887},[460,163864,163865],{"class":929}," introduce",[460,163867,163868],{"class":466},"(name, age):\n",[460,163870,163871,163873,163875,163877,163880,163882,163884,163886,163889,163891,163893,163895,163898],{"class":462,"line":494},[460,163872,47706],{"class":900},[460,163874,2174],{"class":466},[460,163876,16804],{"class":887},[460,163878,163879],{"class":1353},"\"我叫",[460,163881,17607],{"class":900},[460,163883,3440],{"class":466},[460,163885,612],{"class":900},[460,163887,163888],{"class":1353},"，今年",[460,163890,17607],{"class":900},[460,163892,3989],{"class":466},[460,163894,612],{"class":900},[460,163896,163897],{"class":1353},"岁\"",[460,163899,3754],{"class":466},[460,163901,163902],{"class":462,"line":500},[460,163903,522],{"emptyLinePlaceholder":521},[460,163905,163906],{"class":462,"line":506},[460,163907,163908],{"class":466},"introduce(name, age)\n",[14,163910,163911],{},"面向对象：",[451,163913,163915],{"className":46787,"code":163914,"language":46789,"meta":32,"style":32},"class Student:\n    def introduce(self):\n        print(f\"我叫{self.name}，今年{self.age}岁\")\n\n\nstudent = Student()\nstudent.name = \"小明\"\nstudent.age = 18\nstudent.introduce()\n",[457,163916,163917,163925,163933,163962,163966,163970,163980,163989,163998],{"__ignoreMap":32},[460,163918,163919,163921,163923],{"class":462,"line":463},[460,163920,31148],{"class":887},[460,163922,24395],{"class":929},[460,163924,20257],{"class":466},[460,163926,163927,163929,163931],{"class":462,"line":476},[460,163928,47209],{"class":887},[460,163930,163865],{"class":929},[460,163932,47215],{"class":466},[460,163934,163935,163937,163939,163941,163943,163946,163948,163950,163952,163954,163956,163958,163960],{"class":462,"line":482},[460,163936,48856],{"class":900},[460,163938,2174],{"class":466},[460,163940,16804],{"class":887},[460,163942,163879],{"class":1353},[460,163944,163945],{"class":900},"{self",[460,163947,4004],{"class":466},[460,163949,612],{"class":900},[460,163951,163888],{"class":1353},[460,163953,163945],{"class":900},[460,163955,4016],{"class":466},[460,163957,612],{"class":900},[460,163959,163897],{"class":1353},[460,163961,3754],{"class":466},[460,163963,163964],{"class":462,"line":488},[460,163965,522],{"emptyLinePlaceholder":521},[460,163967,163968],{"class":462,"line":494},[460,163969,522],{"emptyLinePlaceholder":521},[460,163971,163972,163975,163977],{"class":462,"line":500},[460,163973,163974],{"class":466},"student ",[460,163976,894],{"class":887},[460,163978,163979],{"class":466}," Student()\n",[460,163981,163982,163985,163987],{"class":462,"line":506},[460,163983,163984],{"class":466},"student.name ",[460,163986,894],{"class":887},[460,163988,163846],{"class":1353},[460,163990,163991,163994,163996],{"class":462,"line":512},[460,163992,163993],{"class":466},"student.age ",[460,163995,894],{"class":887},[460,163997,161044],{"class":900},[460,163999,164000],{"class":462,"line":518},[460,164001,164002],{"class":466},"student.introduce()\n",[14,164004,164005],{},"面向对象更适合数据结构和行为绑定在一起的场景，例如学生、用户、订单、商品、账户。",[18,164007,164009],{"id":164008},"_112-类和对象","11.2 类和对象",[14,164011,164012],{},"类是模板，对象是根据模板创建出来的具体实例。",[451,164014,164016],{"className":46787,"code":164015,"language":46789,"meta":32,"style":32},"class Student:\n    pass\n\n\nstudent1 = Student()\nstudent2 = Student()\n",[457,164017,164018,164026,164031,164035,164039,164048],{"__ignoreMap":32},[460,164019,164020,164022,164024],{"class":462,"line":463},[460,164021,31148],{"class":887},[460,164023,24395],{"class":929},[460,164025,20257],{"class":466},[460,164027,164028],{"class":462,"line":476},[460,164029,164030],{"class":887},"    pass\n",[460,164032,164033],{"class":462,"line":482},[460,164034,522],{"emptyLinePlaceholder":521},[460,164036,164037],{"class":462,"line":488},[460,164038,522],{"emptyLinePlaceholder":521},[460,164040,164041,164044,164046],{"class":462,"line":494},[460,164042,164043],{"class":466},"student1 ",[460,164045,894],{"class":887},[460,164047,163979],{"class":466},[460,164049,164050,164053,164055],{"class":462,"line":500},[460,164051,164052],{"class":466},"student2 ",[460,164054,894],{"class":887},[460,164056,163979],{"class":466},[14,164058,164059,164062,164063,115511,164066,164069],{},[457,164060,164061],{},"Student"," 是类，",[457,164064,164065],{},"student1",[457,164067,164068],{},"student2"," 是对象。",[18,164071,164073],{"id":164072},"_113-属性","11.3 属性",[14,164075,164076],{},"属性是对象保存的数据。",[451,164078,164080],{"className":46787,"code":164079,"language":46789,"meta":32,"style":32},"class Student:\n    pass\n\n\nstudent = Student()\nstudent.name = \"小明\"\nstudent.age = 18\n\nprint(student.name)\nprint(student.age)\n",[457,164081,164082,164090,164094,164098,164102,164110,164118,164126,164130,164137],{"__ignoreMap":32},[460,164083,164084,164086,164088],{"class":462,"line":463},[460,164085,31148],{"class":887},[460,164087,24395],{"class":929},[460,164089,20257],{"class":466},[460,164091,164092],{"class":462,"line":476},[460,164093,164030],{"class":887},[460,164095,164096],{"class":462,"line":482},[460,164097,522],{"emptyLinePlaceholder":521},[460,164099,164100],{"class":462,"line":488},[460,164101,522],{"emptyLinePlaceholder":521},[460,164103,164104,164106,164108],{"class":462,"line":494},[460,164105,163974],{"class":466},[460,164107,894],{"class":887},[460,164109,163979],{"class":466},[460,164111,164112,164114,164116],{"class":462,"line":500},[460,164113,163984],{"class":466},[460,164115,894],{"class":887},[460,164117,163846],{"class":1353},[460,164119,164120,164122,164124],{"class":462,"line":506},[460,164121,163993],{"class":466},[460,164123,894],{"class":887},[460,164125,161044],{"class":900},[460,164127,164128],{"class":462,"line":512},[460,164129,522],{"emptyLinePlaceholder":521},[460,164131,164132,164134],{"class":462,"line":518},[460,164133,46824],{"class":900},[460,164135,164136],{"class":466},"(student.name)\n",[460,164138,164139,164141],{"class":462,"line":525},[460,164140,46824],{"class":900},[460,164142,164143],{"class":466},"(student.age)\n",[14,164145,164146],{},"这种写法可以用，但实际项目中更推荐使用构造方法初始化属性。",[18,164148,164150],{"id":164149},"_114-方法","11.4 方法",[14,164152,164153],{},"类中的函数叫方法。",[451,164155,164156],{"className":46787,"code":163914,"language":46789,"meta":32,"style":32},[457,164157,164158,164166,164174,164202,164206,164210,164218,164226,164234],{"__ignoreMap":32},[460,164159,164160,164162,164164],{"class":462,"line":463},[460,164161,31148],{"class":887},[460,164163,24395],{"class":929},[460,164165,20257],{"class":466},[460,164167,164168,164170,164172],{"class":462,"line":476},[460,164169,47209],{"class":887},[460,164171,163865],{"class":929},[460,164173,47215],{"class":466},[460,164175,164176,164178,164180,164182,164184,164186,164188,164190,164192,164194,164196,164198,164200],{"class":462,"line":482},[460,164177,48856],{"class":900},[460,164179,2174],{"class":466},[460,164181,16804],{"class":887},[460,164183,163879],{"class":1353},[460,164185,163945],{"class":900},[460,164187,4004],{"class":466},[460,164189,612],{"class":900},[460,164191,163888],{"class":1353},[460,164193,163945],{"class":900},[460,164195,4016],{"class":466},[460,164197,612],{"class":900},[460,164199,163897],{"class":1353},[460,164201,3754],{"class":466},[460,164203,164204],{"class":462,"line":488},[460,164205,522],{"emptyLinePlaceholder":521},[460,164207,164208],{"class":462,"line":494},[460,164209,522],{"emptyLinePlaceholder":521},[460,164211,164212,164214,164216],{"class":462,"line":500},[460,164213,163974],{"class":466},[460,164215,894],{"class":887},[460,164217,163979],{"class":466},[460,164219,164220,164222,164224],{"class":462,"line":506},[460,164221,163984],{"class":466},[460,164223,894],{"class":887},[460,164225,163846],{"class":1353},[460,164227,164228,164230,164232],{"class":462,"line":512},[460,164229,163993],{"class":466},[460,164231,894],{"class":887},[460,164233,161044],{"class":900},[460,164235,164236],{"class":462,"line":518},[460,164237,164002],{"class":466},[14,164239,164240,164242,164243,164245],{},[457,164241,47231],{}," 表示当前对象。调用方法时不需要手动传入 ",[457,164244,47231],{},"，Python 会自动传。",[18,164247,164249],{"id":164248},"_115-构造方法__init__","11.5 构造方法__init__",[14,164251,164252,164254],{},[457,164253,47236],{}," 在对象创建时自动执行，用于初始化属性。",[451,164256,164258],{"className":46787,"code":164257,"language":46789,"meta":32,"style":32},"class Student:\n    def __init__(self, name, age, score):\n        self.name = name\n        self.age = age\n        self.score = score\n\n    def introduce(self):\n        print(f\"我叫{self.name}，今年{self.age}岁，成绩{self.score}\")\n\n\nstudent = Student(\"小明\", 18, 95)\nstudent.introduce()\n",[457,164259,164260,164268,164277,164289,164301,164312,164316,164324,164362,164366,164370,164392],{"__ignoreMap":32},[460,164261,164262,164264,164266],{"class":462,"line":463},[460,164263,31148],{"class":887},[460,164265,24395],{"class":929},[460,164267,20257],{"class":466},[460,164269,164270,164272,164274],{"class":462,"line":476},[460,164271,47209],{"class":887},[460,164273,47212],{"class":900},[460,164275,164276],{"class":466},"(self, name, age, score):\n",[460,164278,164279,164281,164284,164286],{"class":462,"line":482},[460,164280,47252],{"class":900},[460,164282,164283],{"class":466},".name ",[460,164285,894],{"class":887},[460,164287,164288],{"class":466}," name\n",[460,164290,164291,164293,164296,164298],{"class":462,"line":488},[460,164292,47252],{"class":900},[460,164294,164295],{"class":466},".age ",[460,164297,894],{"class":887},[460,164299,164300],{"class":466}," age\n",[460,164302,164303,164305,164308,164310],{"class":462,"line":494},[460,164304,47252],{"class":900},[460,164306,164307],{"class":466},".score ",[460,164309,894],{"class":887},[460,164311,18147],{"class":466},[460,164313,164314],{"class":462,"line":500},[460,164315,522],{"emptyLinePlaceholder":521},[460,164317,164318,164320,164322],{"class":462,"line":506},[460,164319,47209],{"class":887},[460,164321,163865],{"class":929},[460,164323,47215],{"class":466},[460,164325,164326,164328,164330,164332,164334,164336,164338,164340,164342,164344,164346,164348,164351,164353,164356,164358,164360],{"class":462,"line":512},[460,164327,48856],{"class":900},[460,164329,2174],{"class":466},[460,164331,16804],{"class":887},[460,164333,163879],{"class":1353},[460,164335,163945],{"class":900},[460,164337,4004],{"class":466},[460,164339,612],{"class":900},[460,164341,163888],{"class":1353},[460,164343,163945],{"class":900},[460,164345,4016],{"class":466},[460,164347,612],{"class":900},[460,164349,164350],{"class":1353},"岁，成绩",[460,164352,163945],{"class":900},[460,164354,164355],{"class":466},".score",[460,164357,612],{"class":900},[460,164359,16993],{"class":1353},[460,164361,3754],{"class":466},[460,164363,164364],{"class":462,"line":518},[460,164365,522],{"emptyLinePlaceholder":521},[460,164367,164368],{"class":462,"line":525},[460,164369,522],{"emptyLinePlaceholder":521},[460,164371,164372,164374,164376,164379,164382,164384,164386,164388,164390],{"class":462,"line":531},[460,164373,163974],{"class":466},[460,164375,894],{"class":887},[460,164377,164378],{"class":466}," Student(",[460,164380,164381],{"class":1353},"\"小明\"",[460,164383,904],{"class":466},[460,164385,2361],{"class":900},[460,164387,904],{"class":466},[460,164389,17696],{"class":900},[460,164391,3754],{"class":466},[460,164393,164394],{"class":462,"line":537},[460,164395,164002],{"class":466},[14,164397,164398],{},"构造方法的好处：",[103,164400,164401,164404,164407],{},[43,164402,164403],{},"创建对象时必须提供必要数据。",[43,164405,164406],{},"属性初始化集中，不容易漏。",[43,164408,164409],{},"对象状态更完整。",[18,164411,164413,164414],{"id":164412},"_116-str","11.6 ",[3944,164415,6393],{},[14,164417,164418,164419,44794],{},"直接打印对象时，默认输出不直观。可以定义 ",[457,164420,164421],{},"__str__",[451,164423,164425],{"className":46787,"code":164424,"language":46789,"meta":32,"style":32},"class Student:\n    def __init__(self, name, age):\n        self.name = name\n        self.age = age\n\n    def __str__(self):\n        return f\"Student(name={self.name}, age={self.age})\"\n\n\nstudent = Student(\"小明\", 18)\nprint(student)\n",[457,164426,164427,164435,164444,164454,164464,164468,164477,164505,164509,164513,164529],{"__ignoreMap":32},[460,164428,164429,164431,164433],{"class":462,"line":463},[460,164430,31148],{"class":887},[460,164432,24395],{"class":929},[460,164434,20257],{"class":466},[460,164436,164437,164439,164441],{"class":462,"line":476},[460,164438,47209],{"class":887},[460,164440,47212],{"class":900},[460,164442,164443],{"class":466},"(self, name, age):\n",[460,164445,164446,164448,164450,164452],{"class":462,"line":482},[460,164447,47252],{"class":900},[460,164449,164283],{"class":466},[460,164451,894],{"class":887},[460,164453,164288],{"class":466},[460,164455,164456,164458,164460,164462],{"class":462,"line":488},[460,164457,47252],{"class":900},[460,164459,164295],{"class":466},[460,164461,894],{"class":887},[460,164463,164300],{"class":466},[460,164465,164466],{"class":462,"line":494},[460,164467,522],{"emptyLinePlaceholder":521},[460,164469,164470,164472,164475],{"class":462,"line":500},[460,164471,47209],{"class":887},[460,164473,164474],{"class":900}," __str__",[460,164476,47215],{"class":466},[460,164478,164479,164481,164484,164487,164489,164491,164493,164496,164498,164500,164502],{"class":462,"line":506},[460,164480,31206],{"class":887},[460,164482,164483],{"class":887}," f",[460,164485,164486],{"class":1353},"\"Student(name=",[460,164488,163945],{"class":900},[460,164490,4004],{"class":466},[460,164492,612],{"class":900},[460,164494,164495],{"class":1353},", age=",[460,164497,163945],{"class":900},[460,164499,4016],{"class":466},[460,164501,612],{"class":900},[460,164503,164504],{"class":1353},")\"\n",[460,164506,164507],{"class":462,"line":512},[460,164508,522],{"emptyLinePlaceholder":521},[460,164510,164511],{"class":462,"line":518},[460,164512,522],{"emptyLinePlaceholder":521},[460,164514,164515,164517,164519,164521,164523,164525,164527],{"class":462,"line":525},[460,164516,163974],{"class":466},[460,164518,894],{"class":887},[460,164520,164378],{"class":466},[460,164522,164381],{"class":1353},[460,164524,904],{"class":466},[460,164526,2361],{"class":900},[460,164528,3754],{"class":466},[460,164530,164531,164533],{"class":462,"line":531},[460,164532,46824],{"class":900},[460,164534,164535],{"class":466},"(student)\n",[18,164537,164539],{"id":164538},"_117-封装","11.7 封装",[14,164541,164542],{},"封装就是把数据和方法放到类中，并控制访问方式。",[14,164544,164545],{},"Python 中以双下划线开头的属性通常视为私有属性。",[451,164547,164549],{"className":46787,"code":164548,"language":46789,"meta":32,"style":32},"class Account:\n    def __init__(self, owner, balance):\n        self.owner = owner\n        self.__balance = balance\n\n    def get_balance(self):\n        return self.__balance\n\n    def deposit(self, money):\n        if money \u003C= 0:\n            print(\"存款金额必须大于0\")\n            return\n        self.__balance += money\n\n    def withdraw(self, money):\n        if money \u003C= 0:\n            print(\"取款金额必须大于0\")\n            return\n        if money > self.__balance:\n            print(\"余额不足\")\n            return\n        self.__balance -= money\n\n\naccount = Account(\"小明\", 1000)\naccount.deposit(200)\naccount.withdraw(100)\nprint(account.get_balance())\n",[457,164550,164551,164560,164569,164581,164593,164597,164606,164615,164619,164629,164642,164653,164658,164669,164673,164682,164694,164705,164709,164722,164733,164737,164748,164752,164756,164774,164783,164792],{"__ignoreMap":32},[460,164552,164553,164555,164558],{"class":462,"line":463},[460,164554,31148],{"class":887},[460,164556,164557],{"class":929}," Account",[460,164559,20257],{"class":466},[460,164561,164562,164564,164566],{"class":462,"line":476},[460,164563,47209],{"class":887},[460,164565,47212],{"class":900},[460,164567,164568],{"class":466},"(self, owner, balance):\n",[460,164570,164571,164573,164576,164578],{"class":462,"line":482},[460,164572,47252],{"class":900},[460,164574,164575],{"class":466},".owner ",[460,164577,894],{"class":887},[460,164579,164580],{"class":466}," owner\n",[460,164582,164583,164585,164588,164590],{"class":462,"line":488},[460,164584,47252],{"class":900},[460,164586,164587],{"class":466},".__balance ",[460,164589,894],{"class":887},[460,164591,164592],{"class":466}," balance\n",[460,164594,164595],{"class":462,"line":494},[460,164596,522],{"emptyLinePlaceholder":521},[460,164598,164599,164601,164604],{"class":462,"line":500},[460,164600,47209],{"class":887},[460,164602,164603],{"class":929}," get_balance",[460,164605,47215],{"class":466},[460,164607,164608,164610,164612],{"class":462,"line":506},[460,164609,31206],{"class":887},[460,164611,55178],{"class":900},[460,164613,164614],{"class":466},".__balance\n",[460,164616,164617],{"class":462,"line":512},[460,164618,522],{"emptyLinePlaceholder":521},[460,164620,164621,164623,164626],{"class":462,"line":518},[460,164622,47209],{"class":887},[460,164624,164625],{"class":929}," deposit",[460,164627,164628],{"class":466},"(self, money):\n",[460,164630,164631,164633,164636,164638,164640],{"class":462,"line":525},[460,164632,3702],{"class":887},[460,164634,164635],{"class":466}," money ",[460,164637,3748],{"class":887},[460,164639,2224],{"class":900},[460,164641,20257],{"class":466},[460,164643,164644,164646,164648,164651],{"class":462,"line":531},[460,164645,50955],{"class":900},[460,164647,2174],{"class":466},[460,164649,164650],{"class":1353},"\"存款金额必须大于0\"",[460,164652,3754],{"class":466},[460,164654,164655],{"class":462,"line":537},[460,164656,164657],{"class":887},"            return\n",[460,164659,164660,164662,164664,164666],{"class":462,"line":543},[460,164661,47252],{"class":900},[460,164663,164587],{"class":466},[460,164665,3467],{"class":887},[460,164667,164668],{"class":466}," money\n",[460,164670,164671],{"class":462,"line":549},[460,164672,522],{"emptyLinePlaceholder":521},[460,164674,164675,164677,164680],{"class":462,"line":555},[460,164676,47209],{"class":887},[460,164678,164679],{"class":929}," withdraw",[460,164681,164628],{"class":466},[460,164683,164684,164686,164688,164690,164692],{"class":462,"line":560},[460,164685,3702],{"class":887},[460,164687,164635],{"class":466},[460,164689,3748],{"class":887},[460,164691,2224],{"class":900},[460,164693,20257],{"class":466},[460,164695,164696,164698,164700,164703],{"class":462,"line":566},[460,164697,50955],{"class":900},[460,164699,2174],{"class":466},[460,164701,164702],{"class":1353},"\"取款金额必须大于0\"",[460,164704,3754],{"class":466},[460,164706,164707],{"class":462,"line":572},[460,164708,164657],{"class":887},[460,164710,164711,164713,164715,164717,164719],{"class":462,"line":578},[460,164712,3702],{"class":887},[460,164714,164635],{"class":466},[460,164716,17668],{"class":887},[460,164718,55178],{"class":900},[460,164720,164721],{"class":466},".__balance:\n",[460,164723,164724,164726,164728,164731],{"class":462,"line":812},[460,164725,50955],{"class":900},[460,164727,2174],{"class":466},[460,164729,164730],{"class":1353},"\"余额不足\"",[460,164732,3754],{"class":466},[460,164734,164735],{"class":462,"line":818},[460,164736,164657],{"class":887},[460,164738,164739,164741,164743,164746],{"class":462,"line":824},[460,164740,47252],{"class":900},[460,164742,164587],{"class":466},[460,164744,164745],{"class":887},"-=",[460,164747,164668],{"class":466},[460,164749,164750],{"class":462,"line":2074},[460,164751,522],{"emptyLinePlaceholder":521},[460,164753,164754],{"class":462,"line":2088},[460,164755,522],{"emptyLinePlaceholder":521},[460,164757,164758,164761,164763,164766,164768,164770,164772],{"class":462,"line":2103},[460,164759,164760],{"class":466},"account ",[460,164762,894],{"class":887},[460,164764,164765],{"class":466}," Account(",[460,164767,164381],{"class":1353},[460,164769,904],{"class":466},[460,164771,11412],{"class":900},[460,164773,3754],{"class":466},[460,164775,164776,164779,164781],{"class":462,"line":2122},[460,164777,164778],{"class":466},"account.deposit(",[460,164780,5490],{"class":900},[460,164782,3754],{"class":466},[460,164784,164785,164788,164790],{"class":462,"line":2144},[460,164786,164787],{"class":466},"account.withdraw(",[460,164789,2325],{"class":900},[460,164791,3754],{"class":466},[460,164793,164794,164796],{"class":462,"line":2158},[460,164795,46824],{"class":900},[460,164797,164798],{"class":466},"(account.get_balance())\n",[14,164800,164801],{},"封装的意义是避免外部随意修改内部状态。",[18,164803,164805],{"id":164804},"_118-继承","11.8 继承",[14,164807,164808],{},"继承可以让子类复用父类的属性和方法。",[451,164810,164812],{"className":46787,"code":164811,"language":46789,"meta":32,"style":32},"class Animal:\n    def eat(self):\n        print(\"吃东西\")\n\n\nclass Dog(Animal):\n    def bark(self):\n        print(\"汪汪\")\n\n\ndog = Dog()\ndog.eat()\ndog.bark()\n",[457,164813,164814,164823,164832,164843,164847,164851,164865,164874,164885,164889,164893,164903,164908],{"__ignoreMap":32},[460,164815,164816,164818,164821],{"class":462,"line":463},[460,164817,31148],{"class":887},[460,164819,164820],{"class":929}," Animal",[460,164822,20257],{"class":466},[460,164824,164825,164827,164830],{"class":462,"line":476},[460,164826,47209],{"class":887},[460,164828,164829],{"class":929}," eat",[460,164831,47215],{"class":466},[460,164833,164834,164836,164838,164841],{"class":462,"line":482},[460,164835,48856],{"class":900},[460,164837,2174],{"class":466},[460,164839,164840],{"class":1353},"\"吃东西\"",[460,164842,3754],{"class":466},[460,164844,164845],{"class":462,"line":488},[460,164846,522],{"emptyLinePlaceholder":521},[460,164848,164849],{"class":462,"line":494},[460,164850,522],{"emptyLinePlaceholder":521},[460,164852,164853,164855,164858,164860,164863],{"class":462,"line":500},[460,164854,31148],{"class":887},[460,164856,164857],{"class":929}," Dog",[460,164859,2174],{"class":466},[460,164861,164862],{"class":929},"Animal",[460,164864,47194],{"class":466},[460,164866,164867,164869,164872],{"class":462,"line":506},[460,164868,47209],{"class":887},[460,164870,164871],{"class":929}," bark",[460,164873,47215],{"class":466},[460,164875,164876,164878,164880,164883],{"class":462,"line":512},[460,164877,48856],{"class":900},[460,164879,2174],{"class":466},[460,164881,164882],{"class":1353},"\"汪汪\"",[460,164884,3754],{"class":466},[460,164886,164887],{"class":462,"line":518},[460,164888,522],{"emptyLinePlaceholder":521},[460,164890,164891],{"class":462,"line":525},[460,164892,522],{"emptyLinePlaceholder":521},[460,164894,164895,164898,164900],{"class":462,"line":531},[460,164896,164897],{"class":466},"dog ",[460,164899,894],{"class":887},[460,164901,164902],{"class":466}," Dog()\n",[460,164904,164905],{"class":462,"line":537},[460,164906,164907],{"class":466},"dog.eat()\n",[460,164909,164910],{"class":462,"line":543},[460,164911,164912],{"class":466},"dog.bark()\n",[14,164914,164915],{},"子类可以扩展新方法，也可以重写父类方法。",[18,164917,164919],{"id":164918},"_119-方法重写","11.9 方法重写",[451,164921,164923],{"className":46787,"code":164922,"language":46789,"meta":32,"style":32},"class Animal:\n    def speak(self):\n        print(\"动物叫\")\n\n\nclass Dog(Animal):\n    def speak(self):\n        print(\"汪汪\")\n\n\nclass Cat(Animal):\n    def speak(self):\n        print(\"喵喵\")\n\n\ndog = Dog()\ncat = Cat()\n\ndog.speak()\ncat.speak()\n",[457,164924,164925,164933,164942,164953,164957,164961,164973,164981,164991,164995,164999,165012,165020,165031,165035,165039,165047,165057,165061,165066],{"__ignoreMap":32},[460,164926,164927,164929,164931],{"class":462,"line":463},[460,164928,31148],{"class":887},[460,164930,164820],{"class":929},[460,164932,20257],{"class":466},[460,164934,164935,164937,164940],{"class":462,"line":476},[460,164936,47209],{"class":887},[460,164938,164939],{"class":929}," speak",[460,164941,47215],{"class":466},[460,164943,164944,164946,164948,164951],{"class":462,"line":482},[460,164945,48856],{"class":900},[460,164947,2174],{"class":466},[460,164949,164950],{"class":1353},"\"动物叫\"",[460,164952,3754],{"class":466},[460,164954,164955],{"class":462,"line":488},[460,164956,522],{"emptyLinePlaceholder":521},[460,164958,164959],{"class":462,"line":494},[460,164960,522],{"emptyLinePlaceholder":521},[460,164962,164963,164965,164967,164969,164971],{"class":462,"line":500},[460,164964,31148],{"class":887},[460,164966,164857],{"class":929},[460,164968,2174],{"class":466},[460,164970,164862],{"class":929},[460,164972,47194],{"class":466},[460,164974,164975,164977,164979],{"class":462,"line":506},[460,164976,47209],{"class":887},[460,164978,164939],{"class":929},[460,164980,47215],{"class":466},[460,164982,164983,164985,164987,164989],{"class":462,"line":512},[460,164984,48856],{"class":900},[460,164986,2174],{"class":466},[460,164988,164882],{"class":1353},[460,164990,3754],{"class":466},[460,164992,164993],{"class":462,"line":518},[460,164994,522],{"emptyLinePlaceholder":521},[460,164996,164997],{"class":462,"line":525},[460,164998,522],{"emptyLinePlaceholder":521},[460,165000,165001,165003,165006,165008,165010],{"class":462,"line":531},[460,165002,31148],{"class":887},[460,165004,165005],{"class":929}," Cat",[460,165007,2174],{"class":466},[460,165009,164862],{"class":929},[460,165011,47194],{"class":466},[460,165013,165014,165016,165018],{"class":462,"line":537},[460,165015,47209],{"class":887},[460,165017,164939],{"class":929},[460,165019,47215],{"class":466},[460,165021,165022,165024,165026,165029],{"class":462,"line":543},[460,165023,48856],{"class":900},[460,165025,2174],{"class":466},[460,165027,165028],{"class":1353},"\"喵喵\"",[460,165030,3754],{"class":466},[460,165032,165033],{"class":462,"line":549},[460,165034,522],{"emptyLinePlaceholder":521},[460,165036,165037],{"class":462,"line":555},[460,165038,522],{"emptyLinePlaceholder":521},[460,165040,165041,165043,165045],{"class":462,"line":560},[460,165042,164897],{"class":466},[460,165044,894],{"class":887},[460,165046,164902],{"class":466},[460,165048,165049,165052,165054],{"class":462,"line":566},[460,165050,165051],{"class":466},"cat ",[460,165053,894],{"class":887},[460,165055,165056],{"class":466}," Cat()\n",[460,165058,165059],{"class":462,"line":572},[460,165060,522],{"emptyLinePlaceholder":521},[460,165062,165063],{"class":462,"line":578},[460,165064,165065],{"class":466},"dog.speak()\n",[460,165067,165068],{"class":462,"line":812},[460,165069,165070],{"class":466},"cat.speak()\n",[18,165072,165074],{"id":165073},"_1110-super","11.10 super",[14,165076,165077,165078,165081],{},"子类可以通过 ",[457,165079,165080],{},"super()"," 调用父类方法。",[451,165083,165085],{"className":46787,"code":165084,"language":46789,"meta":32,"style":32},"class Person:\n    def __init__(self, name):\n        self.name = name\n\n\nclass Student(Person):\n    def __init__(self, name, score):\n        super().__init__(name)\n        self.score = score\n\n\nstudent = Student(\"小明\", 95)\nprint(student.name, student.score)\n",[457,165086,165087,165095,165104,165114,165118,165122,165134,165143,165154,165164,165168,165172,165188],{"__ignoreMap":32},[460,165088,165089,165091,165093],{"class":462,"line":463},[460,165090,31148],{"class":887},[460,165092,32020],{"class":929},[460,165094,20257],{"class":466},[460,165096,165097,165099,165101],{"class":462,"line":476},[460,165098,47209],{"class":887},[460,165100,47212],{"class":900},[460,165102,165103],{"class":466},"(self, name):\n",[460,165105,165106,165108,165110,165112],{"class":462,"line":482},[460,165107,47252],{"class":900},[460,165109,164283],{"class":466},[460,165111,894],{"class":887},[460,165113,164288],{"class":466},[460,165115,165116],{"class":462,"line":488},[460,165117,522],{"emptyLinePlaceholder":521},[460,165119,165120],{"class":462,"line":494},[460,165121,522],{"emptyLinePlaceholder":521},[460,165123,165124,165126,165128,165130,165132],{"class":462,"line":500},[460,165125,31148],{"class":887},[460,165127,24395],{"class":929},[460,165129,2174],{"class":466},[460,165131,35463],{"class":929},[460,165133,47194],{"class":466},[460,165135,165136,165138,165140],{"class":462,"line":506},[460,165137,47209],{"class":887},[460,165139,47212],{"class":900},[460,165141,165142],{"class":466},"(self, name, score):\n",[460,165144,165145,165147,165149,165151],{"class":462,"line":512},[460,165146,47225],{"class":900},[460,165148,11396],{"class":466},[460,165150,47236],{"class":900},[460,165152,165153],{"class":466},"(name)\n",[460,165155,165156,165158,165160,165162],{"class":462,"line":518},[460,165157,47252],{"class":900},[460,165159,164307],{"class":466},[460,165161,894],{"class":887},[460,165163,18147],{"class":466},[460,165165,165166],{"class":462,"line":525},[460,165167,522],{"emptyLinePlaceholder":521},[460,165169,165170],{"class":462,"line":531},[460,165171,522],{"emptyLinePlaceholder":521},[460,165173,165174,165176,165178,165180,165182,165184,165186],{"class":462,"line":537},[460,165175,163974],{"class":466},[460,165177,894],{"class":887},[460,165179,164378],{"class":466},[460,165181,164381],{"class":1353},[460,165183,904],{"class":466},[460,165185,17696],{"class":900},[460,165187,3754],{"class":466},[460,165189,165190,165192],{"class":462,"line":543},[460,165191,46824],{"class":900},[460,165193,165194],{"class":466},"(student.name, student.score)\n",[18,165196,165198],{"id":165197},"_1111-多态","11.11 多态",[14,165200,165201],{},"多态指不同对象响应同一个方法，表现出不同结果。",[451,165203,165205],{"className":46787,"code":165204,"language":46789,"meta":32,"style":32},"class Dog:\n    def speak(self):\n        print(\"汪汪\")\n\n\nclass Cat:\n    def speak(self):\n        print(\"喵喵\")\n\n\ndef make_sound(animal):\n    animal.speak()\n\n\nmake_sound(Dog())\nmake_sound(Cat())\n",[457,165206,165207,165215,165223,165233,165237,165241,165249,165257,165267,165271,165275,165285,165290,165294,165298,165303],{"__ignoreMap":32},[460,165208,165209,165211,165213],{"class":462,"line":463},[460,165210,31148],{"class":887},[460,165212,164857],{"class":929},[460,165214,20257],{"class":466},[460,165216,165217,165219,165221],{"class":462,"line":476},[460,165218,47209],{"class":887},[460,165220,164939],{"class":929},[460,165222,47215],{"class":466},[460,165224,165225,165227,165229,165231],{"class":462,"line":482},[460,165226,48856],{"class":900},[460,165228,2174],{"class":466},[460,165230,164882],{"class":1353},[460,165232,3754],{"class":466},[460,165234,165235],{"class":462,"line":488},[460,165236,522],{"emptyLinePlaceholder":521},[460,165238,165239],{"class":462,"line":494},[460,165240,522],{"emptyLinePlaceholder":521},[460,165242,165243,165245,165247],{"class":462,"line":500},[460,165244,31148],{"class":887},[460,165246,165005],{"class":929},[460,165248,20257],{"class":466},[460,165250,165251,165253,165255],{"class":462,"line":506},[460,165252,47209],{"class":887},[460,165254,164939],{"class":929},[460,165256,47215],{"class":466},[460,165258,165259,165261,165263,165265],{"class":462,"line":512},[460,165260,48856],{"class":900},[460,165262,2174],{"class":466},[460,165264,165028],{"class":1353},[460,165266,3754],{"class":466},[460,165268,165269],{"class":462,"line":518},[460,165270,522],{"emptyLinePlaceholder":521},[460,165272,165273],{"class":462,"line":525},[460,165274,522],{"emptyLinePlaceholder":521},[460,165276,165277,165279,165282],{"class":462,"line":531},[460,165278,48352],{"class":887},[460,165280,165281],{"class":929}," make_sound",[460,165283,165284],{"class":466},"(animal):\n",[460,165286,165287],{"class":462,"line":537},[460,165288,165289],{"class":466},"    animal.speak()\n",[460,165291,165292],{"class":462,"line":543},[460,165293,522],{"emptyLinePlaceholder":521},[460,165295,165296],{"class":462,"line":549},[460,165297,522],{"emptyLinePlaceholder":521},[460,165299,165300],{"class":462,"line":555},[460,165301,165302],{"class":466},"make_sound(Dog())\n",[460,165304,165305],{"class":462,"line":560},[460,165306,165307],{"class":466},"make_sound(Cat())\n",[14,165309,165310],{},"Python 更关注对象是否有需要的方法，而不是对象具体是什么类。",[18,165312,165314],{"id":165313},"_1112-类属性和实例属性","11.12 类属性和实例属性",[14,165316,165317],{},"实例属性属于对象：",[451,165319,165321],{"className":46787,"code":165320,"language":46789,"meta":32,"style":32},"class Student:\n    def __init__(self, name):\n        self.name = name\n",[457,165322,165323,165331,165339],{"__ignoreMap":32},[460,165324,165325,165327,165329],{"class":462,"line":463},[460,165326,31148],{"class":887},[460,165328,24395],{"class":929},[460,165330,20257],{"class":466},[460,165332,165333,165335,165337],{"class":462,"line":476},[460,165334,47209],{"class":887},[460,165336,47212],{"class":900},[460,165338,165103],{"class":466},[460,165340,165341,165343,165345,165347],{"class":462,"line":482},[460,165342,47252],{"class":900},[460,165344,164283],{"class":466},[460,165346,894],{"class":887},[460,165348,164288],{"class":466},[14,165350,165351],{},"类属性属于类，所有对象共享：",[451,165353,165355],{"className":46787,"code":165354,"language":46789,"meta":32,"style":32},"class Student:\n    school = \"黑马学校\"\n\n    def __init__(self, name):\n        self.name = name\n\n\ns1 = Student(\"小明\")\ns2 = Student(\"小红\")\n\nprint(s1.school)\nprint(s2.school)\nprint(Student.school)\n",[457,165356,165357,165365,165375,165379,165387,165397,165401,165405,165418,165432,165436,165443,165450],{"__ignoreMap":32},[460,165358,165359,165361,165363],{"class":462,"line":463},[460,165360,31148],{"class":887},[460,165362,24395],{"class":929},[460,165364,20257],{"class":466},[460,165366,165367,165370,165372],{"class":462,"line":476},[460,165368,165369],{"class":466},"    school ",[460,165371,894],{"class":887},[460,165373,165374],{"class":1353}," \"黑马学校\"\n",[460,165376,165377],{"class":462,"line":482},[460,165378,522],{"emptyLinePlaceholder":521},[460,165380,165381,165383,165385],{"class":462,"line":488},[460,165382,47209],{"class":887},[460,165384,47212],{"class":900},[460,165386,165103],{"class":466},[460,165388,165389,165391,165393,165395],{"class":462,"line":494},[460,165390,47252],{"class":900},[460,165392,164283],{"class":466},[460,165394,894],{"class":887},[460,165396,164288],{"class":466},[460,165398,165399],{"class":462,"line":500},[460,165400,522],{"emptyLinePlaceholder":521},[460,165402,165403],{"class":462,"line":506},[460,165404,522],{"emptyLinePlaceholder":521},[460,165406,165407,165410,165412,165414,165416],{"class":462,"line":512},[460,165408,165409],{"class":466},"s1 ",[460,165411,894],{"class":887},[460,165413,164378],{"class":466},[460,165415,164381],{"class":1353},[460,165417,3754],{"class":466},[460,165419,165420,165423,165425,165427,165430],{"class":462,"line":518},[460,165421,165422],{"class":466},"s2 ",[460,165424,894],{"class":887},[460,165426,164378],{"class":466},[460,165428,165429],{"class":1353},"\"小红\"",[460,165431,3754],{"class":466},[460,165433,165434],{"class":462,"line":525},[460,165435,522],{"emptyLinePlaceholder":521},[460,165437,165438,165440],{"class":462,"line":531},[460,165439,46824],{"class":900},[460,165441,165442],{"class":466},"(s1.school)\n",[460,165444,165445,165447],{"class":462,"line":537},[460,165446,46824],{"class":900},[460,165448,165449],{"class":466},"(s2.school)\n",[460,165451,165452,165454],{"class":462,"line":543},[460,165453,46824],{"class":900},[460,165455,165456],{"class":466},"(Student.school)\n",[14,165458,165459],{},"如果每个对象都不同，用实例属性。如果所有对象共享，用类属性。",[18,165461,165463],{"id":165462},"_1113-类方法和静态方法","11.13 类方法和静态方法",[23,165465,165467],{"id":165466},"_11131-类方法","11.13.1 类方法",[14,165469,165470,165471,165474,165475,44794],{},"类方法使用 ",[457,165472,165473],{},"@classmethod","，第一个参数通常是 ",[457,165476,165477],{},"cls",[451,165479,165481],{"className":46787,"code":165480,"language":46789,"meta":32,"style":32},"class Student:\n    school = \"黑马学校\"\n\n    @classmethod\n    def get_school(cls):\n        return cls.school\n\n\nprint(Student.get_school())\n",[457,165482,165483,165491,165499,165503,165511,165521,165531,165535,165539],{"__ignoreMap":32},[460,165484,165485,165487,165489],{"class":462,"line":463},[460,165486,31148],{"class":887},[460,165488,24395],{"class":929},[460,165490,20257],{"class":466},[460,165492,165493,165495,165497],{"class":462,"line":476},[460,165494,165369],{"class":466},[460,165496,894],{"class":887},[460,165498,165374],{"class":1353},[460,165500,165501],{"class":462,"line":482},[460,165502,522],{"emptyLinePlaceholder":521},[460,165504,165505,165508],{"class":462,"line":488},[460,165506,165507],{"class":929},"    @",[460,165509,165510],{"class":900},"classmethod\n",[460,165512,165513,165515,165518],{"class":462,"line":494},[460,165514,47209],{"class":887},[460,165516,165517],{"class":929}," get_school",[460,165519,165520],{"class":466},"(cls):\n",[460,165522,165523,165525,165528],{"class":462,"line":500},[460,165524,31206],{"class":887},[460,165526,165527],{"class":900}," cls",[460,165529,165530],{"class":466},".school\n",[460,165532,165533],{"class":462,"line":506},[460,165534,522],{"emptyLinePlaceholder":521},[460,165536,165537],{"class":462,"line":512},[460,165538,522],{"emptyLinePlaceholder":521},[460,165540,165541,165543],{"class":462,"line":518},[460,165542,46824],{"class":900},[460,165544,165545],{"class":466},"(Student.get_school())\n",[23,165547,165549],{"id":165548},"_11132-静态方法","11.13.2 静态方法",[14,165551,165552,165553,165556],{},"静态方法使用 ",[457,165554,165555],{},"@staticmethod","，不需要访问实例和类。",[451,165558,165560],{"className":46787,"code":165559,"language":46789,"meta":32,"style":32},"class MathUtils:\n    @staticmethod\n    def add(a, b):\n        return a + b\n\n\nprint(MathUtils.add(1, 2))\n",[457,165561,165562,165571,165578,165587,165598,165602,165606],{"__ignoreMap":32},[460,165563,165564,165566,165569],{"class":462,"line":463},[460,165565,31148],{"class":887},[460,165567,165568],{"class":929}," MathUtils",[460,165570,20257],{"class":466},[460,165572,165573,165575],{"class":462,"line":476},[460,165574,165507],{"class":929},[460,165576,165577],{"class":900},"staticmethod\n",[460,165579,165580,165582,165584],{"class":462,"line":482},[460,165581,47209],{"class":887},[460,165583,21716],{"class":929},[460,165585,165586],{"class":466},"(a, b):\n",[460,165588,165589,165591,165593,165595],{"class":462,"line":488},[460,165590,31206],{"class":887},[460,165592,27333],{"class":466},[460,165594,8495],{"class":887},[460,165596,165597],{"class":466}," b\n",[460,165599,165600],{"class":462,"line":494},[460,165601,522],{"emptyLinePlaceholder":521},[460,165603,165604],{"class":462,"line":500},[460,165605,522],{"emptyLinePlaceholder":521},[460,165607,165608,165610,165613,165615,165617,165619],{"class":462,"line":506},[460,165609,46824],{"class":900},[460,165611,165612],{"class":466},"(MathUtils.add(",[460,165614,901],{"class":900},[460,165616,904],{"class":466},[460,165618,907],{"class":900},[460,165620,6311],{"class":466},[14,165622,165623],{},"静态方法本质上是放在类命名空间里的普通函数。",[18,165625,165627],{"id":165626},"_1114-dataclass","11.14 dataclass",[14,165629,165630,165633],{},[457,165631,165632],{},"dataclass"," 可以快速定义主要用于保存数据的类。",[451,165635,165637],{"className":46787,"code":165636,"language":46789,"meta":32,"style":32},"from dataclasses import dataclass\n\n\n@dataclass\nclass Student:\n    name: str\n    age: int\n    score: float\n\n\nstudent = Student(\"小明\", 18, 95)\nprint(student)\n",[457,165638,165639,165651,165655,165659,165664,165672,165680,165688,165696,165700,165704,165724],{"__ignoreMap":32},[460,165640,165641,165643,165646,165648],{"class":462,"line":463},[460,165642,47145],{"class":887},[460,165644,165645],{"class":466}," dataclasses ",[460,165647,46801],{"class":887},[460,165649,165650],{"class":466}," dataclass\n",[460,165652,165653],{"class":462,"line":476},[460,165654,522],{"emptyLinePlaceholder":521},[460,165656,165657],{"class":462,"line":482},[460,165658,522],{"emptyLinePlaceholder":521},[460,165660,165661],{"class":462,"line":488},[460,165662,165663],{"class":929},"@dataclass\n",[460,165665,165666,165668,165670],{"class":462,"line":494},[460,165667,31148],{"class":887},[460,165669,24395],{"class":929},[460,165671,20257],{"class":466},[460,165673,165674,165677],{"class":462,"line":500},[460,165675,165676],{"class":466},"    name: ",[460,165678,165679],{"class":900},"str\n",[460,165681,165682,165685],{"class":462,"line":506},[460,165683,165684],{"class":466},"    age: ",[460,165686,165687],{"class":900},"int\n",[460,165689,165690,165693],{"class":462,"line":512},[460,165691,165692],{"class":466},"    score: ",[460,165694,165695],{"class":900},"float\n",[460,165697,165698],{"class":462,"line":518},[460,165699,522],{"emptyLinePlaceholder":521},[460,165701,165702],{"class":462,"line":525},[460,165703,522],{"emptyLinePlaceholder":521},[460,165705,165706,165708,165710,165712,165714,165716,165718,165720,165722],{"class":462,"line":531},[460,165707,163974],{"class":466},[460,165709,894],{"class":887},[460,165711,164378],{"class":466},[460,165713,164381],{"class":1353},[460,165715,904],{"class":466},[460,165717,2361],{"class":900},[460,165719,904],{"class":466},[460,165721,17696],{"class":900},[460,165723,3754],{"class":466},[460,165725,165726,165728],{"class":462,"line":537},[460,165727,46824],{"class":900},[460,165729,164535],{"class":466},[14,165731,165732,165733,16957,165735,165738],{},"它会自动生成 ",[457,165734,47236],{},[457,165736,165737],{},"__repr__"," 等方法。适合数据模型类。",[18,165740,165742],{"id":165741},"_1115-小案例学生类","11.15 小案例：学生类",[451,165744,165746],{"className":46787,"code":165745,"language":46789,"meta":32,"style":32},"class Student:\n    def __init__(self, student_id, name, age, score):\n        self.student_id = student_id\n        self.name = name\n        self.age = age\n        self.score = score\n\n    def is_passed(self):\n        return self.score >= 60\n\n    def to_dict(self):\n        return {\n            \"student_id\": self.student_id,\n            \"name\": self.name,\n            \"age\": self.age,\n            \"score\": self.score,\n        }\n\n    @classmethod\n    def from_dict(cls, data):\n        return cls(\n            data[\"student_id\"],\n            data[\"name\"],\n            data[\"age\"],\n            data[\"score\"],\n        )\n\n    def __str__(self):\n        return f\"{self.student_id} {self.name} {self.age} {self.score}\"\n\n\nstudent = Student(\"001\", \"小明\", 18, 95)\nprint(student.is_passed())\nprint(student.to_dict())\n",[457,165747,165748,165756,165765,165777,165787,165797,165807,165811,165820,165833,165837,165846,165852,165864,165876,165888,165900,165904,165908,165914,165924,165933,165943,165951,165959,165968,165972,165976,165984,166020,166024,166028,166053,166060],{"__ignoreMap":32},[460,165749,165750,165752,165754],{"class":462,"line":463},[460,165751,31148],{"class":887},[460,165753,24395],{"class":929},[460,165755,20257],{"class":466},[460,165757,165758,165760,165762],{"class":462,"line":476},[460,165759,47209],{"class":887},[460,165761,47212],{"class":900},[460,165763,165764],{"class":466},"(self, student_id, name, age, score):\n",[460,165766,165767,165769,165772,165774],{"class":462,"line":482},[460,165768,47252],{"class":900},[460,165770,165771],{"class":466},".student_id ",[460,165773,894],{"class":887},[460,165775,165776],{"class":466}," student_id\n",[460,165778,165779,165781,165783,165785],{"class":462,"line":488},[460,165780,47252],{"class":900},[460,165782,164283],{"class":466},[460,165784,894],{"class":887},[460,165786,164288],{"class":466},[460,165788,165789,165791,165793,165795],{"class":462,"line":494},[460,165790,47252],{"class":900},[460,165792,164295],{"class":466},[460,165794,894],{"class":887},[460,165796,164300],{"class":466},[460,165798,165799,165801,165803,165805],{"class":462,"line":500},[460,165800,47252],{"class":900},[460,165802,164307],{"class":466},[460,165804,894],{"class":887},[460,165806,18147],{"class":466},[460,165808,165809],{"class":462,"line":506},[460,165810,522],{"emptyLinePlaceholder":521},[460,165812,165813,165815,165818],{"class":462,"line":512},[460,165814,47209],{"class":887},[460,165816,165817],{"class":929}," is_passed",[460,165819,47215],{"class":466},[460,165821,165822,165824,165826,165828,165830],{"class":462,"line":518},[460,165823,31206],{"class":887},[460,165825,55178],{"class":900},[460,165827,164307],{"class":466},[460,165829,3738],{"class":887},[460,165831,165832],{"class":900}," 60\n",[460,165834,165835],{"class":462,"line":525},[460,165836,522],{"emptyLinePlaceholder":521},[460,165838,165839,165841,165844],{"class":462,"line":531},[460,165840,47209],{"class":887},[460,165842,165843],{"class":929}," to_dict",[460,165845,47215],{"class":466},[460,165847,165848,165850],{"class":462,"line":537},[460,165849,31206],{"class":887},[460,165851,1348],{"class":466},[460,165853,165854,165857,165859,165861],{"class":462,"line":543},[460,165855,165856],{"class":1353},"            \"student_id\"",[460,165858,1961],{"class":466},[460,165860,47231],{"class":900},[460,165862,165863],{"class":466},".student_id,\n",[460,165865,165866,165869,165871,165873],{"class":462,"line":549},[460,165867,165868],{"class":1353},"            \"name\"",[460,165870,1961],{"class":466},[460,165872,47231],{"class":900},[460,165874,165875],{"class":466},".name,\n",[460,165877,165878,165881,165883,165885],{"class":462,"line":555},[460,165879,165880],{"class":1353},"            \"age\"",[460,165882,1961],{"class":466},[460,165884,47231],{"class":900},[460,165886,165887],{"class":466},".age,\n",[460,165889,165890,165893,165895,165897],{"class":462,"line":560},[460,165891,165892],{"class":1353},"            \"score\"",[460,165894,1961],{"class":466},[460,165896,47231],{"class":900},[460,165898,165899],{"class":466},".score,\n",[460,165901,165902],{"class":462,"line":566},[460,165903,3858],{"class":466},[460,165905,165906],{"class":462,"line":572},[460,165907,522],{"emptyLinePlaceholder":521},[460,165909,165910,165912],{"class":462,"line":578},[460,165911,165507],{"class":929},[460,165913,165510],{"class":900},[460,165915,165916,165918,165921],{"class":462,"line":812},[460,165917,47209],{"class":887},[460,165919,165920],{"class":929}," from_dict",[460,165922,165923],{"class":466},"(cls, data):\n",[460,165925,165926,165928,165930],{"class":462,"line":818},[460,165927,31206],{"class":887},[460,165929,165527],{"class":900},[460,165931,165932],{"class":466},"(\n",[460,165934,165935,165938,165941],{"class":462,"line":824},[460,165936,165937],{"class":466},"            data[",[460,165939,165940],{"class":1353},"\"student_id\"",[460,165942,11640],{"class":466},[460,165944,165945,165947,165949],{"class":462,"line":2074},[460,165946,165937],{"class":466},[460,165948,78848],{"class":1353},[460,165950,11640],{"class":466},[460,165952,165953,165955,165957],{"class":462,"line":2088},[460,165954,165937],{"class":466},[460,165956,85279],{"class":1353},[460,165958,11640],{"class":466},[460,165960,165961,165963,165966],{"class":462,"line":2103},[460,165962,165937],{"class":466},[460,165964,165965],{"class":1353},"\"score\"",[460,165967,11640],{"class":466},[460,165969,165970],{"class":462,"line":2122},[460,165971,54431],{"class":466},[460,165973,165974],{"class":462,"line":2144},[460,165975,522],{"emptyLinePlaceholder":521},[460,165977,165978,165980,165982],{"class":462,"line":2158},[460,165979,47209],{"class":887},[460,165981,164474],{"class":900},[460,165983,47215],{"class":466},[460,165985,165986,165988,165990,165992,165994,165997,165999,166002,166004,166006,166008,166010,166012,166014,166016,166018],{"class":462,"line":2163},[460,165987,31206],{"class":887},[460,165989,164483],{"class":887},[460,165991,16993],{"class":1353},[460,165993,163945],{"class":900},[460,165995,165996],{"class":466},".student_id",[460,165998,612],{"class":900},[460,166000,166001],{"class":900}," {self",[460,166003,4004],{"class":466},[460,166005,612],{"class":900},[460,166007,166001],{"class":900},[460,166009,4016],{"class":466},[460,166011,612],{"class":900},[460,166013,166001],{"class":900},[460,166015,164355],{"class":466},[460,166017,612],{"class":900},[460,166019,41545],{"class":1353},[460,166021,166022],{"class":462,"line":2168},[460,166023,522],{"emptyLinePlaceholder":521},[460,166025,166026],{"class":462,"line":2183},[460,166027,522],{"emptyLinePlaceholder":521},[460,166029,166030,166032,166034,166036,166039,166041,166043,166045,166047,166049,166051],{"class":462,"line":2194},[460,166031,163974],{"class":466},[460,166033,894],{"class":887},[460,166035,164378],{"class":466},[460,166037,166038],{"class":1353},"\"001\"",[460,166040,904],{"class":466},[460,166042,164381],{"class":1353},[460,166044,904],{"class":466},[460,166046,2361],{"class":900},[460,166048,904],{"class":466},[460,166050,17696],{"class":900},[460,166052,3754],{"class":466},[460,166054,166055,166057],{"class":462,"line":2199},[460,166056,46824],{"class":900},[460,166058,166059],{"class":466},"(student.is_passed())\n",[460,166061,166062,166064],{"class":462,"line":2204},[460,166063,46824],{"class":900},[460,166065,166066],{"class":466},"(student.to_dict())\n",[14,166068,166069,115511,166072,166075],{},[457,166070,166071],{},"to_dict()",[457,166073,166074],{},"from_dict()"," 适合对象与 JSON 数据之间转换。",[18,166077,166079],{"id":166078},"_1116-易错点","11.16 易错点",[103,166081,166082,166088,166094,166099,166102,166105],{},[43,166083,166084,166085,44794],{},"类名推荐使用大驼峰，如 ",[457,166086,166087],{},"StudentManager",[43,166089,166090,166091,166093],{},"方法第一个参数必须写 ",[457,166092,47231],{},"，调用时不用传。",[43,166095,166096,166098],{},[457,166097,47236],{}," 不是普通方法，它在创建对象时自动执行。",[43,166100,166101],{},"私有属性不是绝对安全，只是约定和名称改写。",[43,166103,166104],{},"不要为了面向对象而面向对象，简单脚本用函数就够。",[43,166106,166107],{},"类中方法太多时，说明职责可能过重。",[18,166109,166111],{"id":166110},"_1117-本章练习","11.17 本章练习",[103,166113,166114,166120,166126,166131,166144],{},[43,166115,166116,166117,166119],{},"定义 ",[457,166118,164061],{}," 类，包含姓名、年龄、成绩和自我介绍方法。",[43,166121,166116,166122,166125],{},[457,166123,166124],{},"Account"," 类，实现存款、取款、查询余额。",[43,166127,166116,166128,166130],{},[457,166129,33644],{}," 类，计算圆的周长和面积。",[43,166132,166116,166133,16957,166136,166139,166140,166143],{},[457,166134,166135],{},"Dog",[457,166137,166138],{},"Cat"," 类，并用同一个函数调用它们的 ",[457,166141,166142],{},"speak()"," 方法。",[43,166145,118859,166146,166148,166149,44794],{},[457,166147,165632],{}," 定义一个商品类 ",[457,166150,166151],{},"Product",[1944,166153,166154],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}",{"title":32,"searchDepth":476,"depth":476,"links":166156},[166157,166158,166159,166160,166161,166162,166164,166165,166166,166167,166168,166169,166170,166174,166175,166176,166177],{"id":163825,"depth":476,"text":163826},{"id":164008,"depth":476,"text":164009},{"id":164072,"depth":476,"text":164073},{"id":164149,"depth":476,"text":164150},{"id":164248,"depth":476,"text":164249},{"id":164412,"depth":476,"text":166163},"11.6 str",{"id":164538,"depth":476,"text":164539},{"id":164804,"depth":476,"text":164805},{"id":164918,"depth":476,"text":164919},{"id":165073,"depth":476,"text":165074},{"id":165197,"depth":476,"text":165198},{"id":165313,"depth":476,"text":165314},{"id":165462,"depth":476,"text":165463,"children":166171},[166172,166173],{"id":165466,"depth":482,"text":165467},{"id":165548,"depth":482,"text":165549},{"id":165626,"depth":476,"text":165627},{"id":165741,"depth":476,"text":165742},{"id":166078,"depth":476,"text":166079},{"id":166110,"depth":476,"text":166111},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch11",{"title":163817,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch11-面向对象基础","jI-8dVPoe9zfDV8hNTDJz4nf951g6PNIKIqDAy4hYic",{"id":166184,"title":166185,"body":166186,"description":16682,"extension":16683,"meta":169499,"navigation":521,"path":169500,"seo":169501,"stem":169502,"__hash__":169503},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch12-综合案例与复习路线.md","12. 综合案例与复习路线",{"type":7,"value":166187,"toc":169475},[166188,166191,166195,166198,166201,166230,166233,166241,166245,166249,166252,166275,166278,166284,166288,167734,167737,167758,167762,167765,167777,167780,167964,167967,168093,168096,168100,168104,168240,168244,168330,168334,168416,168420,168457,168461,168650,168654,168657,168887,168891,168894,169075,169078,169082,169085,169091,169094,169120,169124,169127,169141,169144,169169,169172,169186,169189,169206,169209,169226,169229,169246,169250,169276,169280,169303,169307,169310,169312,169318,169320,169341,169344,169350,169356,169360,169363,169439,169442,169446,169472],[10,166189,166185],{"id":166190},"_12-综合案例与复习路线",[18,166192,166194],{"id":166193},"_121-综合项目应该练什么","12.1 综合项目应该练什么",[14,166196,166197],{},"学完基础语法后，不要只刷零散语法题，应该做小项目，把知识串起来。",[14,166199,166200],{},"一个合格的入门综合项目最好覆盖：",[103,166202,166203,166206,166209,166212,166215,166218,166221,166224,166227],{},[43,166204,166205],{},"输入输出。",[43,166207,166208],{},"判断和循环。",[43,166210,166211],{},"函数拆分。",[43,166213,166214],{},"列表、字典等容器。",[43,166216,166217],{},"文件持久化。",[43,166219,166220],{},"异常处理。",[43,166222,166223],{},"模块拆分。",[43,166225,166226],{},"可选：面向对象。",[43,166228,166229],{},"可选：数据可视化。",[14,166231,166232],{},"本章整理两个方向：",[103,166234,166235,166238],{},[43,166236,166237],{},"学生管理系统。",[43,166239,166240],{},"销售数据统计和可视化。",[18,166242,166244],{"id":166243},"_122-项目一学生管理系统","12.2 项目一：学生管理系统",[23,166246,166248],{"id":166247},"_1221-需求","12.2.1 需求",[14,166250,166251],{},"实现一个命令行学生管理系统：",[103,166253,166254,166257,166260,166263,166266,166269,166272],{},[43,166255,166256],{},"添加学生。",[43,166258,166259],{},"删除学生。",[43,166261,166262],{},"修改学生。",[43,166264,166265],{},"查询学生。",[43,166267,166268],{},"显示所有学生。",[43,166270,166271],{},"保存到 JSON 文件。",[43,166273,166274],{},"程序启动时自动读取 JSON 文件。",[14,166276,166277],{},"学生字段：",[451,166279,166282],{"className":166280,"code":166281,"language":8391,"meta":32},[21693],"学号 student_id\n姓名 name\n年龄 age\n成绩 score\n",[457,166283,166281],{"__ignoreMap":32},[18,166285,166287],{"id":166286},"_123-函数版学生管理系统","12.3 函数版学生管理系统",[451,166289,166291],{"className":46787,"code":166290,"language":46789,"meta":32,"style":32},"import json\nfrom pathlib import Path\n\nDATA_FILE = Path(\"students.json\")\n\n\ndef load_students():\n    if not DATA_FILE.exists():\n        return []\n\n    try:\n        with open(DATA_FILE, \"r\", encoding=\"utf-8\") as file:\n            return json.load(file)\n    except json.JSONDecodeError:\n        print(\"数据文件格式错误，已使用空数据启动\")\n        return []\n\n\ndef save_students(students):\n    with open(DATA_FILE, \"w\", encoding=\"utf-8\") as file:\n        json.dump(students, file, ensure_ascii=False, indent=2)\n\n\ndef show_menu():\n    print(\"====== 学生管理系统 ======\")\n    print(\"1. 添加学生\")\n    print(\"2. 删除学生\")\n    print(\"3. 修改学生\")\n    print(\"4. 查询学生\")\n    print(\"5. 显示所有学生\")\n    print(\"0. 退出系统\")\n\n\ndef find_student(students, student_id):\n    for student in students:\n        if student[\"student_id\"] == student_id:\n            return student\n    return None\n\n\ndef input_int(prompt):\n    while True:\n        try:\n            return int(input(prompt))\n        except ValueError:\n            print(\"请输入整数\")\n\n\ndef input_float(prompt):\n    while True:\n        try:\n            return float(input(prompt))\n        except ValueError:\n            print(\"请输入数字\")\n\n\ndef add_student(students):\n    student_id = input(\"请输入学号:\")\n\n    if find_student(students, student_id):\n        print(\"学号已存在\")\n        return\n\n    name = input(\"请输入姓名:\")\n    age = input_int(\"请输入年龄:\")\n    score = input_float(\"请输入成绩:\")\n\n    students.append({\n        \"student_id\": student_id,\n        \"name\": name,\n        \"age\": age,\n        \"score\": score,\n    })\n    save_students(students)\n    print(\"添加成功\")\n\n\ndef delete_student(students):\n    student_id = input(\"请输入要删除的学号:\")\n    student = find_student(students, student_id)\n\n    if student is None:\n        print(\"学生不存在\")\n        return\n\n    students.remove(student)\n    save_students(students)\n    print(\"删除成功\")\n\n\ndef update_student(students):\n    student_id = input(\"请输入要修改的学号:\")\n    student = find_student(students, student_id)\n\n    if student is None:\n        print(\"学生不存在\")\n        return\n\n    name = input(\"请输入新姓名:\")\n    age = input_int(\"请输入新年龄:\")\n    score = input_float(\"请输入新成绩:\")\n\n    student[\"name\"] = name\n    student[\"age\"] = age\n    student[\"score\"] = score\n\n    save_students(students)\n    print(\"修改成功\")\n\n\ndef query_student(students):\n    student_id = input(\"请输入要查询的学号:\")\n    student = find_student(students, student_id)\n\n    if student is None:\n        print(\"学生不存在\")\n        return\n\n    print_student(student)\n\n\ndef print_student(student):\n    print(\n        f\"{student['student_id']}\\t\"\n        f\"{student['name']}\\t\"\n        f\"{student['age']}\\t\"\n        f\"{student['score']}\"\n    )\n\n\ndef show_all_students(students):\n    if not students:\n        print(\"暂无学生\")\n        return\n\n    print(\"学号\\t姓名\\t年龄\\t成绩\")\n    for student in students:\n        print_student(student)\n\n\ndef main():\n    students = load_students()\n\n    while True:\n        show_menu()\n        choice = input(\"请输入操作:\")\n\n        if choice == \"1\":\n            add_student(students)\n        elif choice == \"2\":\n            delete_student(students)\n        elif choice == \"3\":\n            update_student(students)\n        elif choice == \"4\":\n            query_student(students)\n        elif choice == \"5\":\n            show_all_students(students)\n        elif choice == \"0\":\n            print(\"退出系统\")\n            break\n        else:\n            print(\"输入错误\")\n\n\nif __name__ == \"__main__\":\n    main()\n",[457,166292,166293,166299,166309,166313,166327,166331,166335,166344,166356,166362,166366,166372,166403,166413,166420,166431,166437,166441,166445,166455,166486,166512,166516,166520,166529,166540,166551,166562,166573,166584,166595,166606,166610,166614,166624,166636,166652,166659,166666,166670,166674,166684,166692,166699,166712,166722,166733,166737,166741,166750,166758,166764,166776,166784,166795,166799,166803,166812,166828,166832,166839,166850,166855,166859,166875,166890,166905,166909,166914,166922,166930,166938,166946,166950,166955,166966,166970,166974,166983,166998,167008,167012,167024,167035,167039,167043,167048,167052,167063,167067,167071,167080,167095,167103,167107,167119,167129,167133,167137,167152,167165,167178,167182,167195,167207,167219,167223,167227,167238,167242,167246,167255,167270,167278,167282,167294,167304,167308,167312,167317,167321,167325,167335,167341,167363,167382,167401,167420,167425,167429,167433,167442,167450,167461,167465,167469,167495,167505,167510,167514,167518,167526,167536,167540,167548,167553,167569,167573,167587,167592,167606,167611,167624,167629,167642,167647,167660,167665,167678,167689,167693,167699,167710,167714,167718,167730],{"__ignoreMap":32},[460,166294,166295,166297],{"class":462,"line":463},[460,166296,46801],{"class":887},[460,166298,161584],{"class":466},[460,166300,166301,166303,166305,166307],{"class":462,"line":476},[460,166302,47145],{"class":887},[460,166304,122804],{"class":466},[460,166306,46801],{"class":887},[460,166308,122809],{"class":466},[460,166310,166311],{"class":462,"line":482},[460,166312,522],{"emptyLinePlaceholder":521},[460,166314,166315,166318,166320,166322,166325],{"class":462,"line":488},[460,166316,166317],{"class":900},"DATA_FILE",[460,166319,2943],{"class":887},[460,166321,123038],{"class":466},[460,166323,166324],{"class":1353},"\"students.json\"",[460,166326,3754],{"class":466},[460,166328,166329],{"class":462,"line":494},[460,166330,522],{"emptyLinePlaceholder":521},[460,166332,166333],{"class":462,"line":500},[460,166334,522],{"emptyLinePlaceholder":521},[460,166336,166337,166339,166342],{"class":462,"line":506},[460,166338,48352],{"class":887},[460,166340,166341],{"class":929}," load_students",[460,166343,48358],{"class":466},[460,166345,166346,166348,166350,166353],{"class":462,"line":512},[460,166347,19622],{"class":887},[460,166349,55235],{"class":887},[460,166351,166352],{"class":900}," DATA_FILE",[460,166354,166355],{"class":466},".exists():\n",[460,166357,166358,166360],{"class":462,"line":518},[460,166359,31206],{"class":887},[460,166361,11766],{"class":466},[460,166363,166364],{"class":462,"line":525},[460,166365,522],{"emptyLinePlaceholder":521},[460,166367,166368,166370],{"class":462,"line":531},[460,166369,140277],{"class":887},[460,166371,20257],{"class":466},[460,166373,166374,166377,166379,166381,166383,166385,166387,166389,166391,166393,166395,166397,166399,166401],{"class":462,"line":537},[460,166375,166376],{"class":887},"        with",[460,166378,161284],{"class":900},[460,166380,2174],{"class":466},[460,166382,166317],{"class":900},[460,166384,904],{"class":466},[460,166386,161294],{"class":1353},[460,166388,904],{"class":466},[460,166390,161299],{"class":3380},[460,166392,894],{"class":887},[460,166394,161304],{"class":1353},[460,166396,8296],{"class":466},[460,166398,47790],{"class":887},[460,166400,162646],{"class":3380},[460,166402,20257],{"class":466},[460,166404,166405,166407,166409,166411],{"class":462,"line":543},[460,166406,32182],{"class":887},[460,166408,162657],{"class":466},[460,166410,61658],{"class":3380},[460,166412,3754],{"class":466},[460,166414,166415,166417],{"class":462,"line":549},[460,166416,140305],{"class":887},[460,166418,166419],{"class":466}," json.JSONDecodeError:\n",[460,166421,166422,166424,166426,166429],{"class":462,"line":555},[460,166423,48856],{"class":900},[460,166425,2174],{"class":466},[460,166427,166428],{"class":1353},"\"数据文件格式错误，已使用空数据启动\"",[460,166430,3754],{"class":466},[460,166432,166433,166435],{"class":462,"line":560},[460,166434,31206],{"class":887},[460,166436,11766],{"class":466},[460,166438,166439],{"class":462,"line":566},[460,166440,522],{"emptyLinePlaceholder":521},[460,166442,166443],{"class":462,"line":572},[460,166444,522],{"emptyLinePlaceholder":521},[460,166446,166447,166449,166452],{"class":462,"line":578},[460,166448,48352],{"class":887},[460,166450,166451],{"class":929}," save_students",[460,166453,166454],{"class":466},"(students):\n",[460,166456,166457,166459,166461,166463,166465,166467,166470,166472,166474,166476,166478,166480,166482,166484],{"class":462,"line":812},[460,166458,50483],{"class":887},[460,166460,161284],{"class":900},[460,166462,2174],{"class":466},[460,166464,166317],{"class":900},[460,166466,904],{"class":466},[460,166468,166469],{"class":1353},"\"w\"",[460,166471,904],{"class":466},[460,166473,161299],{"class":3380},[460,166475,894],{"class":887},[460,166477,161304],{"class":1353},[460,166479,8296],{"class":466},[460,166481,47790],{"class":887},[460,166483,162646],{"class":3380},[460,166485,20257],{"class":466},[460,166487,166488,166491,166493,166495,166497,166499,166501,166503,166506,166508,166510],{"class":462,"line":818},[460,166489,166490],{"class":466},"        json.dump(students, ",[460,166492,61658],{"class":3380},[460,166494,904],{"class":466},[460,166496,161630],{"class":3380},[460,166498,894],{"class":887},[460,166500,50292],{"class":900},[460,166502,904],{"class":466},[460,166504,166505],{"class":3380},"indent",[460,166507,894],{"class":887},[460,166509,907],{"class":900},[460,166511,3754],{"class":466},[460,166513,166514],{"class":462,"line":824},[460,166515,522],{"emptyLinePlaceholder":521},[460,166517,166518],{"class":462,"line":2074},[460,166519,522],{"emptyLinePlaceholder":521},[460,166521,166522,166524,166527],{"class":462,"line":2088},[460,166523,48352],{"class":887},[460,166525,166526],{"class":929}," show_menu",[460,166528,48358],{"class":466},[460,166530,166531,166533,166535,166538],{"class":462,"line":2103},[460,166532,47706],{"class":900},[460,166534,2174],{"class":466},[460,166536,166537],{"class":1353},"\"====== 学生管理系统 ======\"",[460,166539,3754],{"class":466},[460,166541,166542,166544,166546,166549],{"class":462,"line":2122},[460,166543,47706],{"class":900},[460,166545,2174],{"class":466},[460,166547,166548],{"class":1353},"\"1. 添加学生\"",[460,166550,3754],{"class":466},[460,166552,166553,166555,166557,166560],{"class":462,"line":2144},[460,166554,47706],{"class":900},[460,166556,2174],{"class":466},[460,166558,166559],{"class":1353},"\"2. 删除学生\"",[460,166561,3754],{"class":466},[460,166563,166564,166566,166568,166571],{"class":462,"line":2158},[460,166565,47706],{"class":900},[460,166567,2174],{"class":466},[460,166569,166570],{"class":1353},"\"3. 修改学生\"",[460,166572,3754],{"class":466},[460,166574,166575,166577,166579,166582],{"class":462,"line":2163},[460,166576,47706],{"class":900},[460,166578,2174],{"class":466},[460,166580,166581],{"class":1353},"\"4. 查询学生\"",[460,166583,3754],{"class":466},[460,166585,166586,166588,166590,166593],{"class":462,"line":2168},[460,166587,47706],{"class":900},[460,166589,2174],{"class":466},[460,166591,166592],{"class":1353},"\"5. 显示所有学生\"",[460,166594,3754],{"class":466},[460,166596,166597,166599,166601,166604],{"class":462,"line":2183},[460,166598,47706],{"class":900},[460,166600,2174],{"class":466},[460,166602,166603],{"class":1353},"\"0. 退出系统\"",[460,166605,3754],{"class":466},[460,166607,166608],{"class":462,"line":2194},[460,166609,522],{"emptyLinePlaceholder":521},[460,166611,166612],{"class":462,"line":2199},[460,166613,522],{"emptyLinePlaceholder":521},[460,166615,166616,166618,166621],{"class":462,"line":2204},[460,166617,48352],{"class":887},[460,166619,166620],{"class":929}," find_student",[460,166622,166623],{"class":466},"(students, student_id):\n",[460,166625,166626,166628,166631,166633],{"class":462,"line":2212},[460,166627,19722],{"class":887},[460,166629,166630],{"class":466}," student ",[460,166632,11713],{"class":887},[460,166634,166635],{"class":466}," students:\n",[460,166637,166638,166640,166643,166645,166647,166649],{"class":462,"line":2257},[460,166639,3702],{"class":887},[460,166641,166642],{"class":466}," student[",[460,166644,165940],{"class":1353},[460,166646,11884],{"class":466},[460,166648,19471],{"class":887},[460,166650,166651],{"class":466}," student_id:\n",[460,166653,166654,166656],{"class":462,"line":2285},[460,166655,32182],{"class":887},[460,166657,166658],{"class":466}," student\n",[460,166660,166661,166663],{"class":462,"line":2298},[460,166662,20605],{"class":887},[460,166664,166665],{"class":900}," None\n",[460,166667,166668],{"class":462,"line":2303},[460,166669,522],{"emptyLinePlaceholder":521},[460,166671,166672],{"class":462,"line":2308},[460,166673,522],{"emptyLinePlaceholder":521},[460,166675,166676,166678,166681],{"class":462,"line":2318},[460,166677,48352],{"class":887},[460,166679,166680],{"class":929}," input_int",[460,166682,166683],{"class":466},"(prompt):\n",[460,166685,166686,166688,166690],{"class":462,"line":2333},[460,166687,18787],{"class":887},[460,166689,109785],{"class":900},[460,166691,20257],{"class":466},[460,166693,166694,166697],{"class":462,"line":2338},[460,166695,166696],{"class":887},"        try",[460,166698,20257],{"class":466},[460,166700,166701,166703,166705,166707,166709],{"class":462,"line":2343},[460,166702,32182],{"class":887},[460,166704,18917],{"class":900},[460,166706,2174],{"class":466},[460,166708,70068],{"class":900},[460,166710,166711],{"class":466},"(prompt))\n",[460,166713,166714,166717,166720],{"class":462,"line":2353},[460,166715,166716],{"class":887},"        except",[460,166718,166719],{"class":900}," ValueError",[460,166721,20257],{"class":466},[460,166723,166724,166726,166728,166731],{"class":462,"line":2368},[460,166725,50955],{"class":900},[460,166727,2174],{"class":466},[460,166729,166730],{"class":1353},"\"请输入整数\"",[460,166732,3754],{"class":466},[460,166734,166735],{"class":462,"line":2381},[460,166736,522],{"emptyLinePlaceholder":521},[460,166738,166739],{"class":462,"line":2394},[460,166740,522],{"emptyLinePlaceholder":521},[460,166742,166743,166745,166748],{"class":462,"line":2399},[460,166744,48352],{"class":887},[460,166746,166747],{"class":929}," input_float",[460,166749,166683],{"class":466},[460,166751,166752,166754,166756],{"class":462,"line":2404},[460,166753,18787],{"class":887},[460,166755,109785],{"class":900},[460,166757,20257],{"class":466},[460,166759,166760,166762],{"class":462,"line":2414},[460,166761,166696],{"class":887},[460,166763,20257],{"class":466},[460,166765,166766,166768,166770,166772,166774],{"class":462,"line":2428},[460,166767,32182],{"class":887},[460,166769,124290],{"class":900},[460,166771,2174],{"class":466},[460,166773,70068],{"class":900},[460,166775,166711],{"class":466},[460,166777,166778,166780,166782],{"class":462,"line":2440},[460,166779,166716],{"class":887},[460,166781,166719],{"class":900},[460,166783,20257],{"class":466},[460,166785,166786,166788,166790,166793],{"class":462,"line":2445},[460,166787,50955],{"class":900},[460,166789,2174],{"class":466},[460,166791,166792],{"class":1353},"\"请输入数字\"",[460,166794,3754],{"class":466},[460,166796,166797],{"class":462,"line":2450},[460,166798,522],{"emptyLinePlaceholder":521},[460,166800,166801],{"class":462,"line":2460},[460,166802,522],{"emptyLinePlaceholder":521},[460,166804,166805,166807,166810],{"class":462,"line":2473},[460,166806,48352],{"class":887},[460,166808,166809],{"class":929}," add_student",[460,166811,166454],{"class":466},[460,166813,166814,166817,166819,166821,166823,166826],{"class":462,"line":2487},[460,166815,166816],{"class":466},"    student_id ",[460,166818,894],{"class":887},[460,166820,76796],{"class":900},[460,166822,2174],{"class":466},[460,166824,166825],{"class":1353},"\"请输入学号:\"",[460,166827,3754],{"class":466},[460,166829,166830],{"class":462,"line":2492},[460,166831,522],{"emptyLinePlaceholder":521},[460,166833,166834,166836],{"class":462,"line":2497},[460,166835,19622],{"class":887},[460,166837,166838],{"class":466}," find_student(students, student_id):\n",[460,166840,166841,166843,166845,166848],{"class":462,"line":2505},[460,166842,48856],{"class":900},[460,166844,2174],{"class":466},[460,166846,166847],{"class":1353},"\"学号已存在\"",[460,166849,3754],{"class":466},[460,166851,166852],{"class":462,"line":2516},[460,166853,166854],{"class":887},"        return\n",[460,166856,166857],{"class":462,"line":2529},[460,166858,522],{"emptyLinePlaceholder":521},[460,166860,166861,166864,166866,166868,166870,166873],{"class":462,"line":2542},[460,166862,166863],{"class":466},"    name ",[460,166865,894],{"class":887},[460,166867,76796],{"class":900},[460,166869,2174],{"class":466},[460,166871,166872],{"class":1353},"\"请输入姓名:\"",[460,166874,3754],{"class":466},[460,166876,166877,166880,166882,166885,166888],{"class":462,"line":2559},[460,166878,166879],{"class":466},"    age ",[460,166881,894],{"class":887},[460,166883,166884],{"class":466}," input_int(",[460,166886,166887],{"class":1353},"\"请输入年龄:\"",[460,166889,3754],{"class":466},[460,166891,166892,166895,166897,166900,166903],{"class":462,"line":2564},[460,166893,166894],{"class":466},"    score ",[460,166896,894],{"class":887},[460,166898,166899],{"class":466}," input_float(",[460,166901,166902],{"class":1353},"\"请输入成绩:\"",[460,166904,3754],{"class":466},[460,166906,166907],{"class":462,"line":2569},[460,166908,522],{"emptyLinePlaceholder":521},[460,166910,166911],{"class":462,"line":2579},[460,166912,166913],{"class":466},"    students.append({\n",[460,166915,166916,166919],{"class":462,"line":2597},[460,166917,166918],{"class":1353},"        \"student_id\"",[460,166920,166921],{"class":466},": student_id,\n",[460,166923,166924,166927],{"class":462,"line":2610},[460,166925,166926],{"class":1353},"        \"name\"",[460,166928,166929],{"class":466},": name,\n",[460,166931,166932,166935],{"class":462,"line":2621},[460,166933,166934],{"class":1353},"        \"age\"",[460,166936,166937],{"class":466},": age,\n",[460,166939,166940,166943],{"class":462,"line":2634},[460,166941,166942],{"class":1353},"        \"score\"",[460,166944,166945],{"class":466},": score,\n",[460,166947,166948],{"class":462,"line":2648},[460,166949,1679],{"class":466},[460,166951,166952],{"class":462,"line":2653},[460,166953,166954],{"class":466},"    save_students(students)\n",[460,166956,166957,166959,166961,166964],{"class":462,"line":2658},[460,166958,47706],{"class":900},[460,166960,2174],{"class":466},[460,166962,166963],{"class":1353},"\"添加成功\"",[460,166965,3754],{"class":466},[460,166967,166968],{"class":462,"line":2670},[460,166969,522],{"emptyLinePlaceholder":521},[460,166971,166972],{"class":462,"line":2683},[460,166973,522],{"emptyLinePlaceholder":521},[460,166975,166976,166978,166981],{"class":462,"line":2695},[460,166977,48352],{"class":887},[460,166979,166980],{"class":929}," delete_student",[460,166982,166454],{"class":466},[460,166984,166985,166987,166989,166991,166993,166996],{"class":462,"line":2700},[460,166986,166816],{"class":466},[460,166988,894],{"class":887},[460,166990,76796],{"class":900},[460,166992,2174],{"class":466},[460,166994,166995],{"class":1353},"\"请输入要删除的学号:\"",[460,166997,3754],{"class":466},[460,166999,167000,167003,167005],{"class":462,"line":2709},[460,167001,167002],{"class":466},"    student ",[460,167004,894],{"class":887},[460,167006,167007],{"class":466}," find_student(students, student_id)\n",[460,167009,167010],{"class":462,"line":2718},[460,167011,522],{"emptyLinePlaceholder":521},[460,167013,167014,167016,167018,167020,167022],{"class":462,"line":2723},[460,167015,19622],{"class":887},[460,167017,166630],{"class":466},[460,167019,55232],{"class":887},[460,167021,55238],{"class":900},[460,167023,20257],{"class":466},[460,167025,167026,167028,167030,167033],{"class":462,"line":2732},[460,167027,48856],{"class":900},[460,167029,2174],{"class":466},[460,167031,167032],{"class":1353},"\"学生不存在\"",[460,167034,3754],{"class":466},[460,167036,167037],{"class":462,"line":2750},[460,167038,166854],{"class":887},[460,167040,167041],{"class":462,"line":2782},[460,167042,522],{"emptyLinePlaceholder":521},[460,167044,167045],{"class":462,"line":2809},[460,167046,167047],{"class":466},"    students.remove(student)\n",[460,167049,167050],{"class":462,"line":2836},[460,167051,166954],{"class":466},[460,167053,167054,167056,167058,167061],{"class":462,"line":2856},[460,167055,47706],{"class":900},[460,167057,2174],{"class":466},[460,167059,167060],{"class":1353},"\"删除成功\"",[460,167062,3754],{"class":466},[460,167064,167065],{"class":462,"line":2865},[460,167066,522],{"emptyLinePlaceholder":521},[460,167068,167069],{"class":462,"line":2881},[460,167070,522],{"emptyLinePlaceholder":521},[460,167072,167073,167075,167078],{"class":462,"line":2887},[460,167074,48352],{"class":887},[460,167076,167077],{"class":929}," update_student",[460,167079,166454],{"class":466},[460,167081,167082,167084,167086,167088,167090,167093],{"class":462,"line":2893},[460,167083,166816],{"class":466},[460,167085,894],{"class":887},[460,167087,76796],{"class":900},[460,167089,2174],{"class":466},[460,167091,167092],{"class":1353},"\"请输入要修改的学号:\"",[460,167094,3754],{"class":466},[460,167096,167097,167099,167101],{"class":462,"line":2899},[460,167098,167002],{"class":466},[460,167100,894],{"class":887},[460,167102,167007],{"class":466},[460,167104,167105],{"class":462,"line":2905},[460,167106,522],{"emptyLinePlaceholder":521},[460,167108,167109,167111,167113,167115,167117],{"class":462,"line":2911},[460,167110,19622],{"class":887},[460,167112,166630],{"class":466},[460,167114,55232],{"class":887},[460,167116,55238],{"class":900},[460,167118,20257],{"class":466},[460,167120,167121,167123,167125,167127],{"class":462,"line":2920},[460,167122,48856],{"class":900},[460,167124,2174],{"class":466},[460,167126,167032],{"class":1353},[460,167128,3754],{"class":466},[460,167130,167131],{"class":462,"line":2929},[460,167132,166854],{"class":887},[460,167134,167135],{"class":462,"line":2935},[460,167136,522],{"emptyLinePlaceholder":521},[460,167138,167139,167141,167143,167145,167147,167150],{"class":462,"line":2948},[460,167140,166863],{"class":466},[460,167142,894],{"class":887},[460,167144,76796],{"class":900},[460,167146,2174],{"class":466},[460,167148,167149],{"class":1353},"\"请输入新姓名:\"",[460,167151,3754],{"class":466},[460,167153,167154,167156,167158,167160,167163],{"class":462,"line":2954},[460,167155,166879],{"class":466},[460,167157,894],{"class":887},[460,167159,166884],{"class":466},[460,167161,167162],{"class":1353},"\"请输入新年龄:\"",[460,167164,3754],{"class":466},[460,167166,167167,167169,167171,167173,167176],{"class":462,"line":2965},[460,167168,166894],{"class":466},[460,167170,894],{"class":887},[460,167172,166899],{"class":466},[460,167174,167175],{"class":1353},"\"请输入新成绩:\"",[460,167177,3754],{"class":466},[460,167179,167180],{"class":462,"line":2976},[460,167181,522],{"emptyLinePlaceholder":521},[460,167183,167184,167187,167189,167191,167193],{"class":462,"line":2987},[460,167185,167186],{"class":466},"    student[",[460,167188,78848],{"class":1353},[460,167190,11884],{"class":466},[460,167192,894],{"class":887},[460,167194,164288],{"class":466},[460,167196,167197,167199,167201,167203,167205],{"class":462,"line":2998},[460,167198,167186],{"class":466},[460,167200,85279],{"class":1353},[460,167202,11884],{"class":466},[460,167204,894],{"class":887},[460,167206,164300],{"class":466},[460,167208,167209,167211,167213,167215,167217],{"class":462,"line":3003},[460,167210,167186],{"class":466},[460,167212,165965],{"class":1353},[460,167214,11884],{"class":466},[460,167216,894],{"class":887},[460,167218,18147],{"class":466},[460,167220,167221],{"class":462,"line":3008},[460,167222,522],{"emptyLinePlaceholder":521},[460,167224,167225],{"class":462,"line":3018},[460,167226,166954],{"class":466},[460,167228,167229,167231,167233,167236],{"class":462,"line":3028},[460,167230,47706],{"class":900},[460,167232,2174],{"class":466},[460,167234,167235],{"class":1353},"\"修改成功\"",[460,167237,3754],{"class":466},[460,167239,167240],{"class":462,"line":3038},[460,167241,522],{"emptyLinePlaceholder":521},[460,167243,167244],{"class":462,"line":3048},[460,167245,522],{"emptyLinePlaceholder":521},[460,167247,167248,167250,167253],{"class":462,"line":3053},[460,167249,48352],{"class":887},[460,167251,167252],{"class":929}," query_student",[460,167254,166454],{"class":466},[460,167256,167257,167259,167261,167263,167265,167268],{"class":462,"line":3058},[460,167258,166816],{"class":466},[460,167260,894],{"class":887},[460,167262,76796],{"class":900},[460,167264,2174],{"class":466},[460,167266,167267],{"class":1353},"\"请输入要查询的学号:\"",[460,167269,3754],{"class":466},[460,167271,167272,167274,167276],{"class":462,"line":3068},[460,167273,167002],{"class":466},[460,167275,894],{"class":887},[460,167277,167007],{"class":466},[460,167279,167280],{"class":462,"line":3078},[460,167281,522],{"emptyLinePlaceholder":521},[460,167283,167284,167286,167288,167290,167292],{"class":462,"line":3088},[460,167285,19622],{"class":887},[460,167287,166630],{"class":466},[460,167289,55232],{"class":887},[460,167291,55238],{"class":900},[460,167293,20257],{"class":466},[460,167295,167296,167298,167300,167302],{"class":462,"line":3098},[460,167297,48856],{"class":900},[460,167299,2174],{"class":466},[460,167301,167032],{"class":1353},[460,167303,3754],{"class":466},[460,167305,167306],{"class":462,"line":3103},[460,167307,166854],{"class":887},[460,167309,167310],{"class":462,"line":3108},[460,167311,522],{"emptyLinePlaceholder":521},[460,167313,167314],{"class":462,"line":3118},[460,167315,167316],{"class":466},"    print_student(student)\n",[460,167318,167319],{"class":462,"line":3128},[460,167320,522],{"emptyLinePlaceholder":521},[460,167322,167323],{"class":462,"line":3138},[460,167324,522],{"emptyLinePlaceholder":521},[460,167326,167327,167329,167332],{"class":462,"line":3148},[460,167328,48352],{"class":887},[460,167330,167331],{"class":929}," print_student",[460,167333,167334],{"class":466},"(student):\n",[460,167336,167337,167339],{"class":462,"line":3153},[460,167338,47706],{"class":900},[460,167340,165932],{"class":466},[460,167342,167343,167346,167348,167350,167353,167356,167358,167361],{"class":462,"line":3158},[460,167344,167345],{"class":887},"        f",[460,167347,16993],{"class":1353},[460,167349,17607],{"class":900},[460,167351,167352],{"class":466},"student[",[460,167354,167355],{"class":1353},"'student_id'",[460,167357,17649],{"class":466},[460,167359,167360],{"class":900},"}\\t",[460,167362,41545],{"class":1353},[460,167364,167365,167367,167369,167371,167373,167376,167378,167380],{"class":462,"line":3168},[460,167366,167345],{"class":887},[460,167368,16993],{"class":1353},[460,167370,17607],{"class":900},[460,167372,167352],{"class":466},[460,167374,167375],{"class":1353},"'name'",[460,167377,17649],{"class":466},[460,167379,167360],{"class":900},[460,167381,41545],{"class":1353},[460,167383,167384,167386,167388,167390,167392,167395,167397,167399],{"class":462,"line":3178},[460,167385,167345],{"class":887},[460,167387,16993],{"class":1353},[460,167389,17607],{"class":900},[460,167391,167352],{"class":466},[460,167393,167394],{"class":1353},"'age'",[460,167396,17649],{"class":466},[460,167398,167360],{"class":900},[460,167400,41545],{"class":1353},[460,167402,167403,167405,167407,167409,167411,167414,167416,167418],{"class":462,"line":3188},[460,167404,167345],{"class":887},[460,167406,16993],{"class":1353},[460,167408,17607],{"class":900},[460,167410,167352],{"class":466},[460,167412,167413],{"class":1353},"'score'",[460,167415,17649],{"class":466},[460,167417,612],{"class":900},[460,167419,41545],{"class":1353},[460,167421,167422],{"class":462,"line":3198},[460,167423,167424],{"class":466},"    )\n",[460,167426,167427],{"class":462,"line":3203},[460,167428,522],{"emptyLinePlaceholder":521},[460,167430,167431],{"class":462,"line":3208},[460,167432,522],{"emptyLinePlaceholder":521},[460,167434,167435,167437,167440],{"class":462,"line":3218},[460,167436,48352],{"class":887},[460,167438,167439],{"class":929}," show_all_students",[460,167441,166454],{"class":466},[460,167443,167444,167446,167448],{"class":462,"line":3228},[460,167445,19622],{"class":887},[460,167447,55235],{"class":887},[460,167449,166635],{"class":466},[460,167451,167452,167454,167456,167459],{"class":462,"line":3238},[460,167453,48856],{"class":900},[460,167455,2174],{"class":466},[460,167457,167458],{"class":1353},"\"暂无学生\"",[460,167460,3754],{"class":466},[460,167462,167463],{"class":462,"line":3248},[460,167464,166854],{"class":887},[460,167466,167467],{"class":462,"line":3253},[460,167468,522],{"emptyLinePlaceholder":521},[460,167470,167471,167473,167475,167478,167480,167483,167485,167488,167490,167493],{"class":462,"line":3258},[460,167472,47706],{"class":900},[460,167474,2174],{"class":466},[460,167476,167477],{"class":1353},"\"学号",[460,167479,17807],{"class":900},[460,167481,167482],{"class":1353},"姓名",[460,167484,17807],{"class":900},[460,167486,167487],{"class":1353},"年龄",[460,167489,17807],{"class":900},[460,167491,167492],{"class":1353},"成绩\"",[460,167494,3754],{"class":466},[460,167496,167497,167499,167501,167503],{"class":462,"line":3268},[460,167498,19722],{"class":887},[460,167500,166630],{"class":466},[460,167502,11713],{"class":887},[460,167504,166635],{"class":466},[460,167506,167507],{"class":462,"line":3278},[460,167508,167509],{"class":466},"        print_student(student)\n",[460,167511,167512],{"class":462,"line":3288},[460,167513,522],{"emptyLinePlaceholder":521},[460,167515,167516],{"class":462,"line":3298},[460,167517,522],{"emptyLinePlaceholder":521},[460,167519,167520,167522,167524],{"class":462,"line":3303},[460,167521,48352],{"class":887},[460,167523,18514],{"class":929},[460,167525,48358],{"class":466},[460,167527,167528,167531,167533],{"class":462,"line":3308},[460,167529,167530],{"class":466},"    students ",[460,167532,894],{"class":887},[460,167534,167535],{"class":466}," load_students()\n",[460,167537,167538],{"class":462,"line":3318},[460,167539,522],{"emptyLinePlaceholder":521},[460,167541,167542,167544,167546],{"class":462,"line":3328},[460,167543,18787],{"class":887},[460,167545,109785],{"class":900},[460,167547,20257],{"class":466},[460,167549,167550],{"class":462,"line":3337},[460,167551,167552],{"class":466},"        show_menu()\n",[460,167554,167555,167558,167560,167562,167564,167567],{"class":462,"line":3347},[460,167556,167557],{"class":466},"        choice ",[460,167559,894],{"class":887},[460,167561,76796],{"class":900},[460,167563,2174],{"class":466},[460,167565,167566],{"class":1353},"\"请输入操作:\"",[460,167568,3754],{"class":466},[460,167570,167571],{"class":462,"line":3352},[460,167572,522],{"emptyLinePlaceholder":521},[460,167574,167575,167577,167580,167582,167585],{"class":462,"line":3358},[460,167576,3702],{"class":887},[460,167578,167579],{"class":466}," choice ",[460,167581,19471],{"class":887},[460,167583,167584],{"class":1353}," \"1\"",[460,167586,20257],{"class":466},[460,167588,167589],{"class":462,"line":3363},[460,167590,167591],{"class":466},"            add_student(students)\n",[460,167593,167594,167597,167599,167601,167604],{"class":462,"line":3369},[460,167595,167596],{"class":887},"        elif",[460,167598,167579],{"class":466},[460,167600,19471],{"class":887},[460,167602,167603],{"class":1353}," \"2\"",[460,167605,20257],{"class":466},[460,167607,167608],{"class":462,"line":3386},[460,167609,167610],{"class":466},"            delete_student(students)\n",[460,167612,167613,167615,167617,167619,167622],{"class":462,"line":3392},[460,167614,167596],{"class":887},[460,167616,167579],{"class":466},[460,167618,19471],{"class":887},[460,167620,167621],{"class":1353}," \"3\"",[460,167623,20257],{"class":466},[460,167625,167626],{"class":462,"line":3406},[460,167627,167628],{"class":466},"            update_student(students)\n",[460,167630,167631,167633,167635,167637,167640],{"class":462,"line":3412},[460,167632,167596],{"class":887},[460,167634,167579],{"class":466},[460,167636,19471],{"class":887},[460,167638,167639],{"class":1353}," \"4\"",[460,167641,20257],{"class":466},[460,167643,167644],{"class":462,"line":3431},[460,167645,167646],{"class":466},"            query_student(students)\n",[460,167648,167649,167651,167653,167655,167658],{"class":462,"line":3461},[460,167650,167596],{"class":887},[460,167652,167579],{"class":466},[460,167654,19471],{"class":887},[460,167656,167657],{"class":1353}," \"5\"",[460,167659,20257],{"class":466},[460,167661,167662],{"class":462,"line":3473},[460,167663,167664],{"class":466},"            show_all_students(students)\n",[460,167666,167667,167669,167671,167673,167676],{"class":462,"line":3479},[460,167668,167596],{"class":887},[460,167670,167579],{"class":466},[460,167672,19471],{"class":887},[460,167674,167675],{"class":1353}," \"0\"",[460,167677,20257],{"class":466},[460,167679,167680,167682,167684,167687],{"class":462,"line":3490},[460,167681,50955],{"class":900},[460,167683,2174],{"class":466},[460,167685,167686],{"class":1353},"\"退出系统\"",[460,167688,3754],{"class":466},[460,167690,167691],{"class":462,"line":3501},[460,167692,129591],{"class":887},[460,167694,167695,167697],{"class":462,"line":3511},[460,167696,19065],{"class":887},[460,167698,20257],{"class":466},[460,167700,167701,167703,167705,167708],{"class":462,"line":3517},[460,167702,50955],{"class":900},[460,167704,2174],{"class":466},[460,167706,167707],{"class":1353},"\"输入错误\"",[460,167709,3754],{"class":466},[460,167711,167712],{"class":462,"line":3523},[460,167713,522],{"emptyLinePlaceholder":521},[460,167715,167716],{"class":462,"line":3529},[460,167717,522],{"emptyLinePlaceholder":521},[460,167719,167720,167722,167724,167726,167728],{"class":462,"line":3535},[460,167721,18100],{"class":887},[460,167723,47627],{"class":900},[460,167725,116052],{"class":887},[460,167727,116055],{"class":1353},[460,167729,20257],{"class":466},[460,167731,167732],{"class":462,"line":3557},[460,167733,116062],{"class":466},[14,167735,167736],{},"这个项目串联了：",[103,167738,167739,167742,167745,167748,167751,167753],{},[43,167740,167741],{},"菜单循环。",[43,167743,167744],{},"函数封装。",[43,167746,167747],{},"列表字典。",[43,167749,167750],{},"JSON 读写。",[43,167752,166220],{},[43,167754,167755,44794],{},[457,167756,167757],{},"if __name__ == \"__main__\"",[18,167759,167761],{"id":167760},"_124-面向对象版设计思路","12.4 面向对象版设计思路",[14,167763,167764],{},"可以进一步拆成两个类：",[103,167766,167767,167772],{},[43,167768,167769,167771],{},[457,167770,164061],{},"：表示单个学生。",[43,167773,167774,167776],{},[457,167775,166087],{},"：负责学生增删改查和文件保存。",[14,167778,167779],{},"示意代码：",[451,167781,167783],{"className":46787,"code":167782,"language":46789,"meta":32,"style":32},"from dataclasses import dataclass\n\n\n@dataclass\nclass Student:\n    student_id: str\n    name: str\n    age: int\n    score: float\n\n    def to_dict(self):\n        return {\n            \"student_id\": self.student_id,\n            \"name\": self.name,\n            \"age\": self.age,\n            \"score\": self.score,\n        }\n\n    @classmethod\n    def from_dict(cls, data):\n        return cls(\n            data[\"student_id\"],\n            data[\"name\"],\n            data[\"age\"],\n            data[\"score\"],\n        )\n",[457,167784,167785,167795,167799,167803,167807,167815,167822,167828,167834,167840,167844,167852,167858,167868,167878,167888,167898,167902,167906,167912,167920,167928,167936,167944,167952,167960],{"__ignoreMap":32},[460,167786,167787,167789,167791,167793],{"class":462,"line":463},[460,167788,47145],{"class":887},[460,167790,165645],{"class":466},[460,167792,46801],{"class":887},[460,167794,165650],{"class":466},[460,167796,167797],{"class":462,"line":476},[460,167798,522],{"emptyLinePlaceholder":521},[460,167800,167801],{"class":462,"line":482},[460,167802,522],{"emptyLinePlaceholder":521},[460,167804,167805],{"class":462,"line":488},[460,167806,165663],{"class":929},[460,167808,167809,167811,167813],{"class":462,"line":494},[460,167810,31148],{"class":887},[460,167812,24395],{"class":929},[460,167814,20257],{"class":466},[460,167816,167817,167820],{"class":462,"line":500},[460,167818,167819],{"class":466},"    student_id: ",[460,167821,165679],{"class":900},[460,167823,167824,167826],{"class":462,"line":506},[460,167825,165676],{"class":466},[460,167827,165679],{"class":900},[460,167829,167830,167832],{"class":462,"line":512},[460,167831,165684],{"class":466},[460,167833,165687],{"class":900},[460,167835,167836,167838],{"class":462,"line":518},[460,167837,165692],{"class":466},[460,167839,165695],{"class":900},[460,167841,167842],{"class":462,"line":525},[460,167843,522],{"emptyLinePlaceholder":521},[460,167845,167846,167848,167850],{"class":462,"line":531},[460,167847,47209],{"class":887},[460,167849,165843],{"class":929},[460,167851,47215],{"class":466},[460,167853,167854,167856],{"class":462,"line":537},[460,167855,31206],{"class":887},[460,167857,1348],{"class":466},[460,167859,167860,167862,167864,167866],{"class":462,"line":543},[460,167861,165856],{"class":1353},[460,167863,1961],{"class":466},[460,167865,47231],{"class":900},[460,167867,165863],{"class":466},[460,167869,167870,167872,167874,167876],{"class":462,"line":549},[460,167871,165868],{"class":1353},[460,167873,1961],{"class":466},[460,167875,47231],{"class":900},[460,167877,165875],{"class":466},[460,167879,167880,167882,167884,167886],{"class":462,"line":555},[460,167881,165880],{"class":1353},[460,167883,1961],{"class":466},[460,167885,47231],{"class":900},[460,167887,165887],{"class":466},[460,167889,167890,167892,167894,167896],{"class":462,"line":560},[460,167891,165892],{"class":1353},[460,167893,1961],{"class":466},[460,167895,47231],{"class":900},[460,167897,165899],{"class":466},[460,167899,167900],{"class":462,"line":566},[460,167901,3858],{"class":466},[460,167903,167904],{"class":462,"line":572},[460,167905,522],{"emptyLinePlaceholder":521},[460,167907,167908,167910],{"class":462,"line":578},[460,167909,165507],{"class":929},[460,167911,165510],{"class":900},[460,167913,167914,167916,167918],{"class":462,"line":812},[460,167915,47209],{"class":887},[460,167917,165920],{"class":929},[460,167919,165923],{"class":466},[460,167921,167922,167924,167926],{"class":462,"line":818},[460,167923,31206],{"class":887},[460,167925,165527],{"class":900},[460,167927,165932],{"class":466},[460,167929,167930,167932,167934],{"class":462,"line":824},[460,167931,165937],{"class":466},[460,167933,165940],{"class":1353},[460,167935,11640],{"class":466},[460,167937,167938,167940,167942],{"class":462,"line":2074},[460,167939,165937],{"class":466},[460,167941,78848],{"class":1353},[460,167943,11640],{"class":466},[460,167945,167946,167948,167950],{"class":462,"line":2088},[460,167947,165937],{"class":466},[460,167949,85279],{"class":1353},[460,167951,11640],{"class":466},[460,167953,167954,167956,167958],{"class":462,"line":2103},[460,167955,165937],{"class":466},[460,167957,165965],{"class":1353},[460,167959,11640],{"class":466},[460,167961,167962],{"class":462,"line":2122},[460,167963,54431],{"class":466},[14,167965,167966],{},"管理器示意：",[451,167968,167970],{"className":46787,"code":167969,"language":46789,"meta":32,"style":32},"class StudentManager:\n    def __init__(self):\n        self.students = []\n\n    def find_by_id(self, student_id):\n        for student in self.students:\n            if student.student_id == student_id:\n                return student\n        return None\n\n    def add(self, student):\n        if self.find_by_id(student.student_id):\n            return False\n        self.students.append(student)\n        return True\n",[457,167971,167972,167981,167989,168000,168004,168014,168027,168038,168045,168051,168055,168064,168073,168079,168086],{"__ignoreMap":32},[460,167973,167974,167976,167979],{"class":462,"line":463},[460,167975,31148],{"class":887},[460,167977,167978],{"class":929}," StudentManager",[460,167980,20257],{"class":466},[460,167982,167983,167985,167987],{"class":462,"line":476},[460,167984,47209],{"class":887},[460,167986,47212],{"class":900},[460,167988,47215],{"class":466},[460,167990,167991,167993,167996,167998],{"class":462,"line":482},[460,167992,47252],{"class":900},[460,167994,167995],{"class":466},".students ",[460,167997,894],{"class":887},[460,167999,11766],{"class":466},[460,168001,168002],{"class":462,"line":488},[460,168003,522],{"emptyLinePlaceholder":521},[460,168005,168006,168008,168011],{"class":462,"line":494},[460,168007,47209],{"class":887},[460,168009,168010],{"class":929}," find_by_id",[460,168012,168013],{"class":466},"(self, student_id):\n",[460,168015,168016,168018,168020,168022,168024],{"class":462,"line":500},[460,168017,19924],{"class":887},[460,168019,166630],{"class":466},[460,168021,11713],{"class":887},[460,168023,55178],{"class":900},[460,168025,168026],{"class":466},".students:\n",[460,168028,168029,168031,168034,168036],{"class":462,"line":506},[460,168030,21153],{"class":887},[460,168032,168033],{"class":466}," student.student_id ",[460,168035,19471],{"class":887},[460,168037,166651],{"class":466},[460,168039,168040,168043],{"class":462,"line":512},[460,168041,168042],{"class":887},"                return",[460,168044,166658],{"class":466},[460,168046,168047,168049],{"class":462,"line":518},[460,168048,31206],{"class":887},[460,168050,166665],{"class":900},[460,168052,168053],{"class":462,"line":525},[460,168054,522],{"emptyLinePlaceholder":521},[460,168056,168057,168059,168061],{"class":462,"line":531},[460,168058,47209],{"class":887},[460,168060,21716],{"class":929},[460,168062,168063],{"class":466},"(self, student):\n",[460,168065,168066,168068,168070],{"class":462,"line":537},[460,168067,3702],{"class":887},[460,168069,55178],{"class":900},[460,168071,168072],{"class":466},".find_by_id(student.student_id):\n",[460,168074,168075,168077],{"class":462,"line":543},[460,168076,32182],{"class":887},[460,168078,140300],{"class":900},[460,168080,168081,168083],{"class":462,"line":549},[460,168082,47252],{"class":900},[460,168084,168085],{"class":466},".students.append(student)\n",[460,168087,168088,168090],{"class":462,"line":555},[460,168089,31206],{"class":887},[460,168091,168092],{"class":900}," True\n",[14,168094,168095],{},"如果项目逻辑越来越多，面向对象版会比纯函数版更容易扩展。",[18,168097,168099],{"id":168098},"_125-项目二销售数据统计","12.5 项目二：销售数据统计",[23,168101,168103],{"id":168102},"_1251-数据结构","12.5.1 数据结构",[451,168105,168107],{"className":46787,"code":168106,"language":46789,"meta":32,"style":32},"sales = [\n    {\"date\": \"2024-10-01\", \"category\": \"手机\", \"amount\": 12000},\n    {\"date\": \"2024-10-01\", \"category\": \"电脑\", \"amount\": 18000},\n    {\"date\": \"2024-10-02\", \"category\": \"手机\", \"amount\": 15000},\n    {\"date\": \"2024-10-02\", \"category\": \"电脑\", \"amount\": 16000},\n]\n",[457,168108,168109,168117,168148,168178,168207,168236],{"__ignoreMap":32},[460,168110,168111,168113,168115],{"class":462,"line":463},[460,168112,162958],{"class":466},[460,168114,894],{"class":887},[460,168116,1385],{"class":466},[460,168118,168119,168121,168123,168125,168127,168129,168132,168134,168137,168139,168141,168143,168146],{"class":462,"line":476},[460,168120,162878],{"class":466},[460,168122,162490],{"class":1353},[460,168124,1961],{"class":466},[460,168126,163101],{"class":1353},[460,168128,904],{"class":466},[460,168130,168131],{"class":1353},"\"category\"",[460,168133,1961],{"class":466},[460,168135,168136],{"class":1353},"\"手机\"",[460,168138,904],{"class":466},[460,168140,7840],{"class":1353},[460,168142,1961],{"class":466},[460,168144,168145],{"class":900},"12000",[460,168147,21439],{"class":466},[460,168149,168150,168152,168154,168156,168158,168160,168162,168164,168167,168169,168171,168173,168176],{"class":462,"line":482},[460,168151,162878],{"class":466},[460,168153,162490],{"class":1353},[460,168155,1961],{"class":466},[460,168157,163101],{"class":1353},[460,168159,904],{"class":466},[460,168161,168131],{"class":1353},[460,168163,1961],{"class":466},[460,168165,168166],{"class":1353},"\"电脑\"",[460,168168,904],{"class":466},[460,168170,7840],{"class":1353},[460,168172,1961],{"class":466},[460,168174,168175],{"class":900},"18000",[460,168177,21439],{"class":466},[460,168179,168180,168182,168184,168186,168188,168190,168192,168194,168196,168198,168200,168202,168205],{"class":462,"line":488},[460,168181,162878],{"class":466},[460,168183,162490],{"class":1353},[460,168185,1961],{"class":466},[460,168187,163122],{"class":1353},[460,168189,904],{"class":466},[460,168191,168131],{"class":1353},[460,168193,1961],{"class":466},[460,168195,168136],{"class":1353},[460,168197,904],{"class":466},[460,168199,7840],{"class":1353},[460,168201,1961],{"class":466},[460,168203,168204],{"class":900},"15000",[460,168206,21439],{"class":466},[460,168208,168209,168211,168213,168215,168217,168219,168221,168223,168225,168227,168229,168231,168234],{"class":462,"line":494},[460,168210,162878],{"class":466},[460,168212,162490],{"class":1353},[460,168214,1961],{"class":466},[460,168216,163122],{"class":1353},[460,168218,904],{"class":466},[460,168220,168131],{"class":1353},[460,168222,1961],{"class":466},[460,168224,168166],{"class":1353},[460,168226,904],{"class":466},[460,168228,7840],{"class":1353},[460,168230,1961],{"class":466},[460,168232,168233],{"class":900},"16000",[460,168235,21439],{"class":466},[460,168237,168238],{"class":462,"line":500},[460,168239,13307],{"class":466},[23,168241,168243],{"id":168242},"_1252-按日期统计","12.5.2 按日期统计",[451,168245,168247],{"className":46787,"code":168246,"language":46789,"meta":32,"style":32},"daily_total = {}\n\nfor item in sales:\n    date = item[\"date\"]\n    amount = item[\"amount\"]\n    daily_total[date] = daily_total.get(date, 0) + amount\n\nprint(daily_total)\n",[457,168248,168249,168258,168262,168273,168287,168300,168319,168323],{"__ignoreMap":32},[460,168250,168251,168254,168256],{"class":462,"line":463},[460,168252,168253],{"class":466},"daily_total ",[460,168255,894],{"class":887},[460,168257,11672],{"class":466},[460,168259,168260],{"class":462,"line":476},[460,168261,522],{"emptyLinePlaceholder":521},[460,168263,168264,168266,168268,168270],{"class":462,"line":482},[460,168265,19547],{"class":887},[460,168267,162702],{"class":466},[460,168269,11713],{"class":887},[460,168271,168272],{"class":466}," sales:\n",[460,168274,168275,168278,168280,168283,168285],{"class":462,"line":488},[460,168276,168277],{"class":466},"    date ",[460,168279,894],{"class":887},[460,168281,168282],{"class":466}," item[",[460,168284,162490],{"class":1353},[460,168286,13307],{"class":466},[460,168288,168289,168292,168294,168296,168298],{"class":462,"line":494},[460,168290,168291],{"class":466},"    amount ",[460,168293,894],{"class":887},[460,168295,168282],{"class":466},[460,168297,7840],{"class":1353},[460,168299,13307],{"class":466},[460,168301,168302,168305,168307,168310,168312,168314,168316],{"class":462,"line":500},[460,168303,168304],{"class":466},"    daily_total[date] ",[460,168306,894],{"class":887},[460,168308,168309],{"class":466}," daily_total.get(date, ",[460,168311,936],{"class":900},[460,168313,8296],{"class":466},[460,168315,8495],{"class":887},[460,168317,168318],{"class":466}," amount\n",[460,168320,168321],{"class":462,"line":506},[460,168322,522],{"emptyLinePlaceholder":521},[460,168324,168325,168327],{"class":462,"line":512},[460,168326,46824],{"class":900},[460,168328,168329],{"class":466},"(daily_total)\n",[23,168331,168333],{"id":168332},"_1253-按类别统计","12.5.3 按类别统计",[451,168335,168337],{"className":46787,"code":168336,"language":46789,"meta":32,"style":32},"category_total = {}\n\nfor item in sales:\n    category = item[\"category\"]\n    amount = item[\"amount\"]\n    category_total[category] = category_total.get(category, 0) + amount\n\nprint(category_total)\n",[457,168338,168339,168348,168352,168362,168375,168387,168405,168409],{"__ignoreMap":32},[460,168340,168341,168344,168346],{"class":462,"line":463},[460,168342,168343],{"class":466},"category_total ",[460,168345,894],{"class":887},[460,168347,11672],{"class":466},[460,168349,168350],{"class":462,"line":476},[460,168351,522],{"emptyLinePlaceholder":521},[460,168353,168354,168356,168358,168360],{"class":462,"line":482},[460,168355,19547],{"class":887},[460,168357,162702],{"class":466},[460,168359,11713],{"class":887},[460,168361,168272],{"class":466},[460,168363,168364,168367,168369,168371,168373],{"class":462,"line":488},[460,168365,168366],{"class":466},"    category ",[460,168368,894],{"class":887},[460,168370,168282],{"class":466},[460,168372,168131],{"class":1353},[460,168374,13307],{"class":466},[460,168376,168377,168379,168381,168383,168385],{"class":462,"line":494},[460,168378,168291],{"class":466},[460,168380,894],{"class":887},[460,168382,168282],{"class":466},[460,168384,7840],{"class":1353},[460,168386,13307],{"class":466},[460,168388,168389,168392,168394,168397,168399,168401,168403],{"class":462,"line":500},[460,168390,168391],{"class":466},"    category_total[category] ",[460,168393,894],{"class":887},[460,168395,168396],{"class":466}," category_total.get(category, ",[460,168398,936],{"class":900},[460,168400,8296],{"class":466},[460,168402,8495],{"class":887},[460,168404,168318],{"class":466},[460,168406,168407],{"class":462,"line":506},[460,168408,522],{"emptyLinePlaceholder":521},[460,168410,168411,168413],{"class":462,"line":512},[460,168412,46824],{"class":900},[460,168414,168415],{"class":466},"(category_total)\n",[23,168417,168419],{"id":168418},"_1254-找销售额最高的一天","12.5.4 找销售额最高的一天",[451,168421,168423],{"className":46787,"code":168422,"language":46789,"meta":32,"style":32},"top_date, top_amount = max(daily_total.items(), key=lambda item: item[1])\nprint(top_date, top_amount)\n",[457,168424,168425,168450],{"__ignoreMap":32},[460,168426,168427,168430,168432,168434,168437,168440,168443,168446,168448],{"class":462,"line":463},[460,168428,168429],{"class":466},"top_date, top_amount ",[460,168431,894],{"class":887},[460,168433,13319],{"class":900},[460,168435,168436],{"class":466},"(daily_total.items(), ",[460,168438,168439],{"class":3380},"key",[460,168441,168442],{"class":887},"=lambda",[460,168444,168445],{"class":466}," item: item[",[460,168447,901],{"class":900},[460,168449,13249],{"class":466},[460,168451,168452,168454],{"class":462,"line":476},[460,168453,46824],{"class":900},[460,168455,168456],{"class":466},"(top_date, top_amount)\n",[18,168458,168460],{"id":168459},"_126-绘制柱状图","12.6 绘制柱状图",[451,168462,168464],{"className":46787,"code":168463,"language":46789,"meta":32,"style":32},"from pyecharts import options as opts\nfrom pyecharts.charts import Bar\n\ncategory_total = {\n    \"手机\": 27000,\n    \"电脑\": 34000,\n    \"耳机\": 8000,\n}\n\nbar = Bar()\nbar.add_xaxis(list(category_total.keys()))\nbar.add_yaxis(\"销售额\", list(category_total.values()))\nbar.set_global_opts(\n    title_opts=opts.TitleOpts(title=\"品类销售额\"),\n    xaxis_opts=opts.AxisOpts(name=\"品类\"),\n    yaxis_opts=opts.AxisOpts(name=\"销售额\"),\n)\nbar.render(\"category_sales.html\")\n",[457,168465,168466,168480,168491,168495,168503,168515,168527,168538,168542,168546,168556,168567,168581,168586,168603,168620,168636,168640],{"__ignoreMap":32},[460,168467,168468,168470,168472,168474,168476,168478],{"class":462,"line":463},[460,168469,47145],{"class":887},[460,168471,161872],{"class":466},[460,168473,46801],{"class":887},[460,168475,161877],{"class":466},[460,168477,47790],{"class":887},[460,168479,161882],{"class":466},[460,168481,168482,168484,168486,168488],{"class":462,"line":476},[460,168483,47145],{"class":887},[460,168485,161731],{"class":466},[460,168487,46801],{"class":887},[460,168489,168490],{"class":466}," Bar\n",[460,168492,168493],{"class":462,"line":482},[460,168494,522],{"emptyLinePlaceholder":521},[460,168496,168497,168499,168501],{"class":462,"line":488},[460,168498,168343],{"class":466},[460,168500,894],{"class":887},[460,168502,1348],{"class":466},[460,168504,168505,168508,168510,168513],{"class":462,"line":494},[460,168506,168507],{"class":1353},"    \"手机\"",[460,168509,1961],{"class":466},[460,168511,168512],{"class":900},"27000",[460,168514,1363],{"class":466},[460,168516,168517,168520,168522,168525],{"class":462,"line":500},[460,168518,168519],{"class":1353},"    \"电脑\"",[460,168521,1961],{"class":466},[460,168523,168524],{"class":900},"34000",[460,168526,1363],{"class":466},[460,168528,168529,168532,168534,168536],{"class":462,"line":506},[460,168530,168531],{"class":1353},"    \"耳机\"",[460,168533,1961],{"class":466},[460,168535,138892],{"class":900},[460,168537,1363],{"class":466},[460,168539,168540],{"class":462,"line":512},[460,168541,821],{"class":466},[460,168543,168544],{"class":462,"line":518},[460,168545,522],{"emptyLinePlaceholder":521},[460,168547,168548,168551,168553],{"class":462,"line":525},[460,168549,168550],{"class":466},"bar ",[460,168552,894],{"class":887},[460,168554,168555],{"class":466}," Bar()\n",[460,168557,168558,168561,168564],{"class":462,"line":531},[460,168559,168560],{"class":466},"bar.add_xaxis(",[460,168562,168563],{"class":900},"list",[460,168565,168566],{"class":466},"(category_total.keys()))\n",[460,168568,168569,168572,168574,168576,168578],{"class":462,"line":537},[460,168570,168571],{"class":466},"bar.add_yaxis(",[460,168573,161788],{"class":1353},[460,168575,904],{"class":466},[460,168577,168563],{"class":900},[460,168579,168580],{"class":466},"(category_total.values()))\n",[460,168582,168583],{"class":462,"line":543},[460,168584,168585],{"class":466},"bar.set_global_opts(\n",[460,168587,168588,168590,168592,168594,168596,168598,168601],{"class":462,"line":549},[460,168589,161966],{"class":3380},[460,168591,894],{"class":887},[460,168593,161971],{"class":466},[460,168595,1930],{"class":3380},[460,168597,894],{"class":887},[460,168599,168600],{"class":1353},"\"品类销售额\"",[460,168602,54352],{"class":466},[460,168604,168605,168607,168609,168611,168613,168615,168618],{"class":462,"line":555},[460,168606,161985],{"class":3380},[460,168608,894],{"class":887},[460,168610,161990],{"class":466},[460,168612,3440],{"class":3380},[460,168614,894],{"class":887},[460,168616,168617],{"class":1353},"\"品类\"",[460,168619,54352],{"class":466},[460,168621,168622,168624,168626,168628,168630,168632,168634],{"class":462,"line":560},[460,168623,162004],{"class":3380},[460,168625,894],{"class":887},[460,168627,161990],{"class":466},[460,168629,3440],{"class":3380},[460,168631,894],{"class":887},[460,168633,161788],{"class":1353},[460,168635,54352],{"class":466},[460,168637,168638],{"class":462,"line":566},[460,168639,3754],{"class":466},[460,168641,168642,168645,168648],{"class":462,"line":572},[460,168643,168644],{"class":466},"bar.render(",[460,168646,168647],{"class":1353},"\"category_sales.html\"",[460,168649,3754],{"class":466},[18,168651,168653],{"id":168652},"_127-绘制时间线柱状图","12.7 绘制时间线柱状图",[14,168655,168656],{},"时间线适合展示不同日期、月份、年份的数据变化。",[451,168658,168660],{"className":46787,"code":168659,"language":46789,"meta":32,"style":32},"from pyecharts import options as opts\nfrom pyecharts.charts import Bar, Timeline\n\ndata = {\n    \"2024-10-01\": {\"手机\": 12000, \"电脑\": 18000},\n    \"2024-10-02\": {\"手机\": 15000, \"电脑\": 16000},\n    \"2024-10-03\": {\"手机\": 17000, \"电脑\": 19000},\n}\n\ntimeline = Timeline()\n\nfor date, category_data in data.items():\n    bar = Bar()\n    bar.add_xaxis(list(category_data.keys()))\n    bar.add_yaxis(\"销售额\", list(category_data.values()))\n    bar.set_global_opts(title_opts=opts.TitleOpts(title=f\"{date}销售额\"))\n    timeline.add(bar, date)\n\ntimeline.render(\"timeline_sales.html\")\n",[457,168661,168662,168676,168687,168691,168699,168723,168746,168771,168775,168779,168789,168793,168804,168813,168823,168837,168868,168873,168877],{"__ignoreMap":32},[460,168663,168664,168666,168668,168670,168672,168674],{"class":462,"line":463},[460,168665,47145],{"class":887},[460,168667,161872],{"class":466},[460,168669,46801],{"class":887},[460,168671,161877],{"class":466},[460,168673,47790],{"class":887},[460,168675,161882],{"class":466},[460,168677,168678,168680,168682,168684],{"class":462,"line":476},[460,168679,47145],{"class":887},[460,168681,161731],{"class":466},[460,168683,46801],{"class":887},[460,168685,168686],{"class":466}," Bar, Timeline\n",[460,168688,168689],{"class":462,"line":482},[460,168690,522],{"emptyLinePlaceholder":521},[460,168692,168693,168695,168697],{"class":462,"line":488},[460,168694,116151],{"class":466},[460,168696,894],{"class":887},[460,168698,1348],{"class":466},[460,168700,168701,168704,168707,168709,168711,168713,168715,168717,168719,168721],{"class":462,"line":494},[460,168702,168703],{"class":1353},"    \"2024-10-01\"",[460,168705,168706],{"class":466},": {",[460,168708,168136],{"class":1353},[460,168710,1961],{"class":466},[460,168712,168145],{"class":900},[460,168714,904],{"class":466},[460,168716,168166],{"class":1353},[460,168718,1961],{"class":466},[460,168720,168175],{"class":900},[460,168722,21439],{"class":466},[460,168724,168725,168728,168730,168732,168734,168736,168738,168740,168742,168744],{"class":462,"line":500},[460,168726,168727],{"class":1353},"    \"2024-10-02\"",[460,168729,168706],{"class":466},[460,168731,168136],{"class":1353},[460,168733,1961],{"class":466},[460,168735,168204],{"class":900},[460,168737,904],{"class":466},[460,168739,168166],{"class":1353},[460,168741,1961],{"class":466},[460,168743,168233],{"class":900},[460,168745,21439],{"class":466},[460,168747,168748,168751,168753,168755,168757,168760,168762,168764,168766,168769],{"class":462,"line":506},[460,168749,168750],{"class":1353},"    \"2024-10-03\"",[460,168752,168706],{"class":466},[460,168754,168136],{"class":1353},[460,168756,1961],{"class":466},[460,168758,168759],{"class":900},"17000",[460,168761,904],{"class":466},[460,168763,168166],{"class":1353},[460,168765,1961],{"class":466},[460,168767,168768],{"class":900},"19000",[460,168770,21439],{"class":466},[460,168772,168773],{"class":462,"line":512},[460,168774,821],{"class":466},[460,168776,168777],{"class":462,"line":518},[460,168778,522],{"emptyLinePlaceholder":521},[460,168780,168781,168784,168786],{"class":462,"line":525},[460,168782,168783],{"class":466},"timeline ",[460,168785,894],{"class":887},[460,168787,168788],{"class":466}," Timeline()\n",[460,168790,168791],{"class":462,"line":531},[460,168792,522],{"emptyLinePlaceholder":521},[460,168794,168795,168797,168800,168802],{"class":462,"line":537},[460,168796,19547],{"class":887},[460,168798,168799],{"class":466}," date, category_data ",[460,168801,11713],{"class":887},[460,168803,163641],{"class":466},[460,168805,168806,168809,168811],{"class":462,"line":543},[460,168807,168808],{"class":466},"    bar ",[460,168810,894],{"class":887},[460,168812,168555],{"class":466},[460,168814,168815,168818,168820],{"class":462,"line":549},[460,168816,168817],{"class":466},"    bar.add_xaxis(",[460,168819,168563],{"class":900},[460,168821,168822],{"class":466},"(category_data.keys()))\n",[460,168824,168825,168828,168830,168832,168834],{"class":462,"line":555},[460,168826,168827],{"class":466},"    bar.add_yaxis(",[460,168829,161788],{"class":1353},[460,168831,904],{"class":466},[460,168833,168563],{"class":900},[460,168835,168836],{"class":466},"(category_data.values()))\n",[460,168838,168839,168842,168845,168847,168849,168851,168853,168855,168857,168859,168861,168863,168866],{"class":462,"line":560},[460,168840,168841],{"class":466},"    bar.set_global_opts(",[460,168843,168844],{"class":3380},"title_opts",[460,168846,894],{"class":887},[460,168848,161971],{"class":466},[460,168850,1930],{"class":3380},[460,168852,894],{"class":887},[460,168854,16804],{"class":887},[460,168856,16993],{"class":1353},[460,168858,17607],{"class":900},[460,168860,90050],{"class":466},[460,168862,612],{"class":900},[460,168864,168865],{"class":1353},"销售额\"",[460,168867,6311],{"class":466},[460,168869,168870],{"class":462,"line":566},[460,168871,168872],{"class":466},"    timeline.add(bar, date)\n",[460,168874,168875],{"class":462,"line":572},[460,168876,522],{"emptyLinePlaceholder":521},[460,168878,168879,168882,168885],{"class":462,"line":578},[460,168880,168881],{"class":466},"timeline.render(",[460,168883,168884],{"class":1353},"\"timeline_sales.html\"",[460,168886,3754],{"class":466},[18,168888,168890],{"id":168889},"_128-绘制地图","12.8 绘制地图",[14,168892,168893],{},"地图适合展示地区数据。",[451,168895,168897],{"className":46787,"code":168896,"language":46789,"meta":32,"style":32},"from pyecharts import options as opts\nfrom pyecharts.charts import Map\n\ndata = [\n    (\"北京\", 120),\n    (\"上海\", 150),\n    (\"广东\", 200),\n    (\"浙江\", 180),\n]\n\nmap_chart = Map()\nmap_chart.add(\"销售额\", data, \"china\")\nmap_chart.set_global_opts(\n    title_opts=opts.TitleOpts(title=\"地区销售额\"),\n    visualmap_opts=opts.VisualMapOpts(max_=200),\n)\nmap_chart.render(\"map_sales.html\")\n",[457,168898,168899,168913,168924,168928,168936,168949,168961,168974,168987,168991,168995,169005,169020,169025,169042,169061,169065],{"__ignoreMap":32},[460,168900,168901,168903,168905,168907,168909,168911],{"class":462,"line":463},[460,168902,47145],{"class":887},[460,168904,161872],{"class":466},[460,168906,46801],{"class":887},[460,168908,161877],{"class":466},[460,168910,47790],{"class":887},[460,168912,161882],{"class":466},[460,168914,168915,168917,168919,168921],{"class":462,"line":476},[460,168916,47145],{"class":887},[460,168918,161731],{"class":466},[460,168920,46801],{"class":887},[460,168922,168923],{"class":466}," Map\n",[460,168925,168926],{"class":462,"line":482},[460,168927,522],{"emptyLinePlaceholder":521},[460,168929,168930,168932,168934],{"class":462,"line":488},[460,168931,116151],{"class":466},[460,168933,894],{"class":887},[460,168935,1385],{"class":466},[460,168937,168938,168941,168943,168945,168947],{"class":462,"line":494},[460,168939,168940],{"class":466},"    (",[460,168942,85424],{"class":1353},[460,168944,904],{"class":466},[460,168946,17532],{"class":900},[460,168948,54352],{"class":466},[460,168950,168951,168953,168955,168957,168959],{"class":462,"line":500},[460,168952,168940],{"class":466},[460,168954,85444],{"class":1353},[460,168956,904],{"class":466},[460,168958,161805],{"class":900},[460,168960,54352],{"class":466},[460,168962,168963,168965,168968,168970,168972],{"class":462,"line":506},[460,168964,168940],{"class":466},[460,168966,168967],{"class":1353},"\"广东\"",[460,168969,904],{"class":466},[460,168971,5490],{"class":900},[460,168973,54352],{"class":466},[460,168975,168976,168978,168981,168983,168985],{"class":462,"line":512},[460,168977,168940],{"class":466},[460,168979,168980],{"class":1353},"\"浙江\"",[460,168982,904],{"class":466},[460,168984,161810],{"class":900},[460,168986,54352],{"class":466},[460,168988,168989],{"class":462,"line":518},[460,168990,13307],{"class":466},[460,168992,168993],{"class":462,"line":525},[460,168994,522],{"emptyLinePlaceholder":521},[460,168996,168997,169000,169002],{"class":462,"line":531},[460,168998,168999],{"class":466},"map_chart ",[460,169001,894],{"class":887},[460,169003,169004],{"class":466}," Map()\n",[460,169006,169007,169010,169012,169015,169018],{"class":462,"line":537},[460,169008,169009],{"class":466},"map_chart.add(",[460,169011,161788],{"class":1353},[460,169013,169014],{"class":466},", data, ",[460,169016,169017],{"class":1353},"\"china\"",[460,169019,3754],{"class":466},[460,169021,169022],{"class":462,"line":543},[460,169023,169024],{"class":466},"map_chart.set_global_opts(\n",[460,169026,169027,169029,169031,169033,169035,169037,169040],{"class":462,"line":549},[460,169028,161966],{"class":3380},[460,169030,894],{"class":887},[460,169032,161971],{"class":466},[460,169034,1930],{"class":3380},[460,169036,894],{"class":887},[460,169038,169039],{"class":1353},"\"地区销售额\"",[460,169041,54352],{"class":466},[460,169043,169044,169047,169049,169052,169055,169057,169059],{"class":462,"line":555},[460,169045,169046],{"class":3380},"    visualmap_opts",[460,169048,894],{"class":887},[460,169050,169051],{"class":466},"opts.VisualMapOpts(",[460,169053,169054],{"class":3380},"max_",[460,169056,894],{"class":887},[460,169058,5490],{"class":900},[460,169060,54352],{"class":466},[460,169062,169063],{"class":462,"line":560},[460,169064,3754],{"class":466},[460,169066,169067,169070,169073],{"class":462,"line":566},[460,169068,169069],{"class":466},"map_chart.render(",[460,169071,169072],{"class":1353},"\"map_sales.html\"",[460,169074,3754],{"class":466},[14,169076,169077],{},"地图数据的地区名称要和 pyecharts 内置地图名称匹配，否则可能显示不出来。",[18,169079,169081],{"id":169080},"_129-项目拆分建议","12.9 项目拆分建议",[14,169083,169084],{},"当代码超过一个文件时，可以这样组织：",[451,169086,169089],{"className":169087,"code":169088,"language":8391,"meta":32},[21693],"sales_project\u002F\n  main.py\n  data\u002F\n    sales.json\n  services\u002F\n    __init__.py\n    sales_service.py\n  charts\u002F\n    __init__.py\n    chart_builder.py\n  utils\u002F\n    __init__.py\n    file_utils.py\n",[457,169090,169088],{"__ignoreMap":32},[14,169092,169093],{},"职责：",[103,169095,169096,169102,169108,169114],{},[43,169097,169098,169101],{},[457,169099,169100],{},"main.py","：程序入口。",[43,169103,169104,169107],{},[457,169105,169106],{},"file_utils.py","：读写 JSON。",[43,169109,169110,169113],{},[457,169111,169112],{},"sales_service.py","：统计销售数据。",[43,169115,169116,169119],{},[457,169117,169118],{},"chart_builder.py","：生成图表。",[18,169121,169123],{"id":169122},"_1210-python基础复习清单","12.10 Python基础复习清单",[14,169125,169126],{},"语法基础：",[103,169128,169129,169132,169135,169138],{},[43,169130,169131],{},"会写变量、注释、输入输出。",[43,169133,169134],{},"会使用 int、float、str、bool。",[43,169136,169137],{},"会做类型转换。",[43,169139,169140],{},"会使用 f-string 格式化输出。",[14,169142,169143],{},"流程控制：",[103,169145,169146,169152,169158,169166],{},[43,169147,169148,169149,44794],{},"会写 ",[457,169150,169151],{},"if elif else",[43,169153,169148,169154,115511,169156,44794],{},[457,169155,123156],{},[457,169157,19547],{},[43,169159,169160,169161,115511,169163,44794],{},"理解 ",[457,169162,18592],{},[457,169164,169165],{},"continue",[43,169167,169168],{},"能写嵌套循环。",[14,169170,169171],{},"函数：",[103,169173,169174,169177,169180,169183],{},[43,169175,169176],{},"会定义和调用函数。",[43,169178,169179],{},"理解参数和返回值。",[43,169181,169182],{},"知道局部变量和全局变量。",[43,169184,169185],{},"会使用默认参数、关键字参数、不定长参数。",[14,169187,169188],{},"容器：",[103,169190,169191,169194,169197,169200,169203],{},[43,169192,169193],{},"会使用列表增删改查。",[43,169195,169196],{},"会遍历列表、字典。",[43,169198,169199],{},"会使用切片。",[43,169201,169202],{},"会用集合去重。",[43,169204,169205],{},"会处理列表嵌套字典。",[14,169207,169208],{},"文件和模块：",[103,169210,169211,169214,169217,169220,169223],{},[43,169212,169213],{},"会读写文本文件。",[43,169215,169216],{},"会读写 JSON。",[43,169218,169219],{},"会捕获常见异常。",[43,169221,169222],{},"会导入模块和第三方包。",[43,169224,169225],{},"会创建简单包结构。",[14,169227,169228],{},"项目能力：",[103,169230,169231,169234,169237,169240,169243],{},[43,169232,169233],{},"能把代码拆成函数。",[43,169235,169236],{},"能把数据保存到文件。",[43,169238,169239],{},"能处理用户输入错误。",[43,169241,169242],{},"能写一个完整菜单程序。",[43,169244,169245],{},"能用 pyecharts 生成图表。",[18,169247,169249],{"id":169248},"_1211-推荐练习顺序","12.11 推荐练习顺序",[103,169251,169252,169255,169258,169261,169264,169267,169270,169273],{},[43,169253,169254],{},"猜数字游戏。",[43,169256,169257],{},"ATM 菜单程序。",[43,169259,169260],{},"学生成绩统计。",[43,169262,169263],{},"学生管理系统函数版。",[43,169265,169266],{},"学生管理系统文件持久化版。",[43,169268,169269],{},"学生管理系统面向对象版。",[43,169271,169272],{},"销售数据统计。",[43,169274,169275],{},"销售数据可视化。",[18,169277,169279],{"id":169278},"_1212-常见学习误区","12.12 常见学习误区",[103,169281,169282,169285,169288,169291,169294,169297,169300],{},[43,169283,169284],{},"只看视频不敲代码。",[43,169286,169287],{},"一报错就复制错误去搜，不先读报错位置。",[43,169289,169290],{},"变量名随便写，后续自己看不懂。",[43,169292,169293],{},"所有代码都写在一个文件一个函数里。",[43,169295,169296],{},"不保存练习代码，复习时没有材料。",[43,169298,169299],{},"还没掌握列表字典就急着学框架。",[43,169301,169302],{},"不会读官方文档，只依赖教程。",[18,169304,169306],{"id":169305},"_1213-如何读报错","12.13 如何读报错",[14,169308,169309],{},"报错通常从下往上看最后几行。",[14,169311,31586],{},[451,169313,169316],{"className":169314,"code":169315,"language":8391,"meta":32},[21693],"ValueError: invalid literal for int() with base 10: 'abc'\n",[457,169317,169315],{"__ignoreMap":32},[14,169319,41012],{},[103,169321,169322,169328,169338],{},[43,169323,169324,169325,44794],{},"异常类型是 ",[457,169326,169327],{},"ValueError",[43,169329,121838,169330,169333,169334,169337],{},[457,169331,169332],{},"int()"," 无法把 ",[457,169335,169336],{},"'abc'"," 转成整数。",[43,169339,169340],{},"应该检查输入内容或增加异常处理。",[14,169342,169343],{},"再看文件名和行号：",[451,169345,169348],{"className":169346,"code":169347,"language":8391,"meta":32},[21693],"File \"main.py\", line 10, in \u003Cmodule>\n",[457,169349,169347],{"__ignoreMap":32},[14,169351,169352,169353,169355],{},"表示错误发生在 ",[457,169354,169100],{}," 第 10 行。",[18,169357,169359],{"id":169358},"_1214-后续学习方向","12.14 后续学习方向",[14,169361,169362],{},"Python 基础完成后，可以按兴趣选择方向：",[103,169364,169365,169377,169386,169398,169409,169418,169428],{},[43,169366,169367,169368,16957,169371,16957,169374,44794],{},"自动化办公：",[457,169369,169370],{},"openpyxl",[457,169372,169373],{},"python-docx",[457,169375,169376],{},"pdfplumber",[43,169378,169379,169380,16957,169382,16957,169384,44794],{},"数据分析：",[457,169381,115119],{},[457,169383,160678],{},[457,169385,160686],{},[43,169387,169388,169389,16957,169392,16957,169395,44794],{},"Web 后端：",[457,169390,169391],{},"Flask",[457,169393,169394],{},"FastAPI",[457,169396,169397],{},"Django",[43,169399,169400,169401,16957,169403,16957,169406,44794],{},"爬虫：",[457,169402,160663],{},[457,169404,169405],{},"BeautifulSoup",[457,169407,169408],{},"Scrapy",[43,169410,169411,169412,16957,169414,169417],{},"测试开发：",[457,169413,160710],{},[457,169415,169416],{},"selenium","、接口测试。",[43,169419,169420,169421,16957,169423,16957,169425,44794],{},"人工智能：",[457,169422,115119],{},[457,169424,160678],{},[457,169426,169427],{},"pytorch",[43,169429,169430,169431,16957,169433,16957,169436,44794],{},"运维脚本：",[457,169432,160279],{},[457,169434,169435],{},"subprocess",[457,169437,169438],{},"paramiko",[14,169440,169441],{},"不要所有方向同时学。先把 Python 基础和一个小项目做扎实，再选择方向。",[18,169443,169445],{"id":169444},"_1215-结课练习","12.15 结课练习",[103,169447,169448,169451,169454,169457,169460,169463,169466,169469],{},[43,169449,169450],{},"完成函数版学生管理系统。",[43,169452,169453],{},"给学生管理系统增加 JSON 持久化。",[43,169455,169456],{},"给学生管理系统增加异常处理。",[43,169458,169459],{},"把学生管理系统改成面向对象版。",[43,169461,169462],{},"使用 pyecharts 绘制学生成绩柱状图。",[43,169464,169465],{},"读取销售 JSON 数据，统计每日销售额并绘制折线图。",[43,169467,169468],{},"按品类统计销售额并绘制柱状图。",[43,169470,169471],{},"写一份自己的 Python 学习路线图。",[1944,169473,169474],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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);}",{"title":32,"searchDepth":476,"depth":476,"links":169476},[169477,169478,169481,169482,169483,169489,169490,169491,169492,169493,169494,169495,169496,169497,169498],{"id":166193,"depth":476,"text":166194},{"id":166243,"depth":476,"text":166244,"children":169479},[169480],{"id":166247,"depth":482,"text":166248},{"id":166286,"depth":476,"text":166287},{"id":167760,"depth":476,"text":167761},{"id":168098,"depth":476,"text":168099,"children":169484},[169485,169486,169487,169488],{"id":168102,"depth":482,"text":168103},{"id":168242,"depth":482,"text":168243},{"id":168332,"depth":482,"text":168333},{"id":168418,"depth":482,"text":168419},{"id":168459,"depth":476,"text":168460},{"id":168652,"depth":476,"text":168653},{"id":168889,"depth":476,"text":168890},{"id":169080,"depth":476,"text":169081},{"id":169122,"depth":476,"text":169123},{"id":169248,"depth":476,"text":169249},{"id":169278,"depth":476,"text":169279},{"id":169305,"depth":476,"text":169306},{"id":169358,"depth":476,"text":169359},{"id":169444,"depth":476,"text":169445},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch12",{"title":166185,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch12-综合案例与复习路线","h907wRG7YTTH927q6GLXFHGSldmwlkML7UOavkE6n1E",{"id":169505,"title":169506,"body":169507,"description":16682,"extension":16683,"meta":171976,"navigation":521,"path":171977,"seo":171978,"stem":171979,"__hash__":171980},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch2-基础语法变量与字符串.md","2. 基础语法、变量与字符串",{"type":7,"value":169508,"toc":171951},[169509,169512,169516,169519,169522,169542,169545,169568,169571,169574,169596,169599,169621,169625,169628,169668,169671,169792,169796,169799,169839,169842,169866,169869,169873,169876,169890,169923,169926,169961,169964,169987,169990,170023,170026,170028,170034,170109,170112,170118,170135,170175,170179,170182,170228,170230,170268,170271,170306,170309,170344,170347,170379,170382,170401,170405,170409,170522,170524,170599,170603,170649,170652,170678,170687,170691,170694,170757,170765,170793,170797,170837,170902,170906,170909,170948,170951,170996,170999,171060,171064,171091,171094,171122,171125,171129,171133,171198,171201,171239,171242,171274,171278,171377,171381,171384,171457,171460,171508,171512,171518,171558,171561,171608,171611,171660,171664,171666,171680,171682,171863,171867,171894,171914,171921,171925,171942,171948],[10,169510,169506],{"id":169511},"_2-基础语法变量与字符串",[18,169513,169515],{"id":169514},"_21-注释","2.1 注释",[14,169517,169518],{},"注释是给人看的说明文字，不会被 Python 执行。",[14,169520,169521],{},"单行注释：",[451,169523,169525],{"className":46787,"code":169524,"language":46789,"meta":32,"style":32},"# 这是单行注释\nprint(\"hello\")\n",[457,169526,169527,169532],{"__ignoreMap":32},[460,169528,169529],{"class":462,"line":463},[460,169530,169531],{"class":942},"# 这是单行注释\n",[460,169533,169534,169536,169538,169540],{"class":462,"line":476},[460,169535,46824],{"class":900},[460,169537,2174],{"class":466},[460,169539,22349],{"class":1353},[460,169541,3754],{"class":466},[14,169543,169544],{},"多行说明常用三引号：",[451,169546,169548],{"className":46787,"code":169547,"language":46789,"meta":32,"style":32},"\"\"\"\n这是多行说明。\n常用于文件顶部说明、函数说明等。\n\"\"\"\n",[457,169549,169550,169554,169559,169564],{"__ignoreMap":32},[460,169551,169552],{"class":462,"line":463},[460,169553,110191],{"class":1353},[460,169555,169556],{"class":462,"line":476},[460,169557,169558],{"class":1353},"这是多行说明。\n",[460,169560,169561],{"class":462,"line":482},[460,169562,169563],{"class":1353},"常用于文件顶部说明、函数说明等。\n",[460,169565,169566],{"class":462,"line":488},[460,169567,110191],{"class":1353},[14,169569,169570],{},"实际写代码时，注释不要解释显而易见的内容，而要解释意图。",[14,169572,169573],{},"不好：",[451,169575,169577],{"className":46787,"code":169576,"language":46789,"meta":32,"style":32},"# age 加 1\nage = age + 1\n",[457,169578,169579,169584],{"__ignoreMap":32},[460,169580,169581],{"class":462,"line":463},[460,169582,169583],{"class":942},"# age 加 1\n",[460,169585,169586,169588,169590,169592,169594],{"class":462,"line":476},[460,169587,161039],{"class":466},[460,169589,894],{"class":887},[460,169591,32157],{"class":466},[460,169593,8495],{"class":887},[460,169595,71910],{"class":900},[14,169597,169598],{},"较好：",[451,169600,169602],{"className":46787,"code":169601,"language":46789,"meta":32,"style":32},"# 用户过完生日后，年龄增加一岁\nage = age + 1\n",[457,169603,169604,169609],{"__ignoreMap":32},[460,169605,169606],{"class":462,"line":463},[460,169607,169608],{"class":942},"# 用户过完生日后，年龄增加一岁\n",[460,169610,169611,169613,169615,169617,169619],{"class":462,"line":476},[460,169612,161039],{"class":466},[460,169614,894],{"class":887},[460,169616,32157],{"class":466},[460,169618,8495],{"class":887},[460,169620,71910],{"class":900},[18,169622,169624],{"id":169623},"_22-字面量","2.2 字面量",[14,169626,169627],{},"字面量就是代码中直接写出来的数据。",[451,169629,169631],{"className":46787,"code":169630,"language":46789,"meta":32,"style":32},"100          # 整数\n3.14         # 小数\n\"hello\"      # 字符串\nTrue         # 布尔值\nNone         # 空值\n",[457,169632,169633,169640,169647,169654,169661],{"__ignoreMap":32},[460,169634,169635,169637],{"class":462,"line":463},[460,169636,2325],{"class":900},[460,169638,169639],{"class":942},"          # 整数\n",[460,169641,169642,169644],{"class":462,"line":476},[460,169643,16801],{"class":900},[460,169645,169646],{"class":942},"         # 小数\n",[460,169648,169649,169651],{"class":462,"line":482},[460,169650,22349],{"class":1353},[460,169652,169653],{"class":942},"      # 字符串\n",[460,169655,169656,169658],{"class":462,"line":488},[460,169657,47882],{"class":900},[460,169659,169660],{"class":942},"         # 布尔值\n",[460,169662,169663,169665],{"class":462,"line":494},[460,169664,110179],{"class":900},[460,169666,169667],{"class":942},"         # 空值\n",[14,169669,169670],{},"常见字面量类型：",[16884,169672,169673,169683],{},[16887,169674,169675],{},[16890,169676,169677,169679,169681],{},[16893,169678,40150],{},[16893,169680,43903],{},[16893,169682,42281],{},[16930,169684,169685,169696,169707,169718,169730,169742,169754,169767,169779],{},[16890,169686,169687,169689,169693],{},[16935,169688,16759],{},[16935,169690,169691],{},[457,169692,2325],{},[16935,169694,169695],{},"整数",[16890,169697,169698,169700,169704],{},[16935,169699,16793],{},[16935,169701,169702],{},[457,169703,16801],{},[16935,169705,169706],{},"浮点数",[16890,169708,169709,169711,169715],{},[16935,169710,6393],{},[16935,169712,169713],{},[457,169714,22349],{},[16935,169716,169717],{},"字符串",[16890,169719,169720,169722,169728],{},[16935,169721,17926],{},[16935,169723,169724,16957,169726],{},[457,169725,47882],{},[457,169727,50292],{},[16935,169729,82174],{},[16890,169731,169732,169735,169739],{},[16935,169733,169734],{},"NoneType",[16935,169736,169737],{},[457,169738,110179],{},[16935,169740,169741],{},"空值",[16890,169743,169744,169746,169751],{},[16935,169745,168563],{},[16935,169747,169748],{},[457,169749,169750],{},"[1, 2, 3]",[16935,169752,169753],{},"列表",[16890,169755,169756,169759,169764],{},[16935,169757,169758],{},"tuple",[16935,169760,169761],{},[457,169762,169763],{},"(1, 2, 3)",[16935,169765,169766],{},"元组",[16890,169768,169769,169771,169776],{},[16935,169770,129039],{},[16935,169772,169773],{},[457,169774,169775],{},"{\"name\": \"张三\"}",[16935,169777,169778],{},"字典",[16890,169780,169781,169784,169789],{},[16935,169782,169783],{},"set",[16935,169785,169786],{},[457,169787,169788],{},"{1, 2, 3}",[16935,169790,169791],{},"集合",[18,169793,169795],{"id":169794},"_23-变量","2.3 变量",[14,169797,169798],{},"变量是保存数据的名字。",[451,169800,169802],{"className":46787,"code":169801,"language":46789,"meta":32,"style":32},"name = \"小明\"\nage = 18\nheight = 1.75\nis_student = True\n",[457,169803,169804,169812,169820,169830],{"__ignoreMap":32},[460,169805,169806,169808,169810],{"class":462,"line":463},[460,169807,161029],{"class":466},[460,169809,894],{"class":887},[460,169811,163846],{"class":1353},[460,169813,169814,169816,169818],{"class":462,"line":476},[460,169815,161039],{"class":466},[460,169817,894],{"class":887},[460,169819,161044],{"class":900},[460,169821,169822,169825,169827],{"class":462,"line":482},[460,169823,169824],{"class":466},"height ",[460,169826,894],{"class":887},[460,169828,169829],{"class":900}," 1.75\n",[460,169831,169832,169835,169837],{"class":462,"line":488},[460,169833,169834],{"class":466},"is_student ",[460,169836,894],{"class":887},[460,169838,168092],{"class":900},[14,169840,169841],{},"Python 的变量不需要提前声明类型：",[451,169843,169845],{"className":46787,"code":169844,"language":46789,"meta":32,"style":32},"score = 100\nscore = \"满分\"\n",[457,169846,169847,169857],{"__ignoreMap":32},[460,169848,169849,169852,169854],{"class":462,"line":463},[460,169850,169851],{"class":466},"score ",[460,169853,894],{"class":887},[460,169855,169856],{"class":900}," 100\n",[460,169858,169859,169861,169863],{"class":462,"line":476},[460,169860,169851],{"class":466},[460,169862,894],{"class":887},[460,169864,169865],{"class":1353}," \"满分\"\n",[14,169867,169868],{},"这虽然合法，但不建议在同一段逻辑里频繁改变变量含义，否则代码难读。",[18,169870,169872],{"id":169871},"_24-变量命名规则","2.4 变量命名规则",[14,169874,169875],{},"硬性规则：",[103,169877,169878,169881,169884,169887],{},[43,169879,169880],{},"只能由字母、数字、下划线组成。",[43,169882,169883],{},"不能以数字开头。",[43,169885,169886],{},"不能使用 Python 关键字。",[43,169888,169889],{},"区分大小写。",[451,169891,169893],{"className":46787,"code":169892,"language":46789,"meta":32,"style":32},"user_name = \"张三\"\nage2 = 18\n_token = \"abc\"\n",[457,169894,169895,169904,169913],{"__ignoreMap":32},[460,169896,169897,169900,169902],{"class":462,"line":463},[460,169898,169899],{"class":466},"user_name ",[460,169901,894],{"class":887},[460,169903,161034],{"class":1353},[460,169905,169906,169909,169911],{"class":462,"line":476},[460,169907,169908],{"class":466},"age2 ",[460,169910,894],{"class":887},[460,169912,161044],{"class":900},[460,169914,169915,169918,169920],{"class":462,"line":482},[460,169916,169917],{"class":466},"_token ",[460,169919,894],{"class":887},[460,169921,169922],{"class":1353}," \"abc\"\n",[14,169924,169925],{},"错误写法：",[451,169927,169929],{"className":46787,"code":169928,"language":46789,"meta":32,"style":32},"2age = 18\nuser-name = \"张三\"\nclass = \"一班\"\n",[457,169930,169931,169940,169952],{"__ignoreMap":32},[460,169932,169933,169936,169938],{"class":462,"line":463},[460,169934,169935],{"class":780},"2age",[460,169937,2943],{"class":887},[460,169939,161044],{"class":900},[460,169941,169942,169944,169946,169948,169950],{"class":462,"line":476},[460,169943,146077],{"class":466},[460,169945,17259],{"class":887},[460,169947,161029],{"class":466},[460,169949,894],{"class":887},[460,169951,161034],{"class":1353},[460,169953,169954,169956,169958],{"class":462,"line":482},[460,169955,31148],{"class":887},[460,169957,2943],{"class":887},[460,169959,169960],{"class":1353}," \"一班\"\n",[14,169962,169963],{},"查看关键字：",[451,169965,169967],{"className":46787,"code":169966,"language":46789,"meta":32,"style":32},"import keyword\n\nprint(keyword.kwlist)\n",[457,169968,169969,169976,169980],{"__ignoreMap":32},[460,169970,169971,169973],{"class":462,"line":463},[460,169972,46801],{"class":887},[460,169974,169975],{"class":466}," keyword\n",[460,169977,169978],{"class":462,"line":476},[460,169979,522],{"emptyLinePlaceholder":521},[460,169981,169982,169984],{"class":462,"line":482},[460,169983,46824],{"class":900},[460,169985,169986],{"class":466},"(keyword.kwlist)\n",[14,169988,169989],{},"推荐命名风格：",[451,169991,169993],{"className":46787,"code":169992,"language":46789,"meta":32,"style":32},"student_name = \"小明\"\ntotal_price = 99.8\nis_finished = False\n",[457,169994,169995,170004,170014],{"__ignoreMap":32},[460,169996,169997,170000,170002],{"class":462,"line":463},[460,169998,169999],{"class":466},"student_name ",[460,170001,894],{"class":887},[460,170003,163846],{"class":1353},[460,170005,170006,170009,170011],{"class":462,"line":476},[460,170007,170008],{"class":466},"total_price ",[460,170010,894],{"class":887},[460,170012,170013],{"class":900}," 99.8\n",[460,170015,170016,170019,170021],{"class":462,"line":482},[460,170017,170018],{"class":466},"is_finished ",[460,170020,894],{"class":887},[460,170022,140300],{"class":900},[14,170024,170025],{},"Python 中变量名通常使用小写字母和下划线，也叫 snake_case。",[18,170027,67033],{"id":67032},[14,170029,118859,170030,170033],{},[457,170031,170032],{},"type()"," 查看数据类型：",[451,170035,170037],{"className":46787,"code":170036,"language":46789,"meta":32,"style":32},"print(type(100))\nprint(type(3.14))\nprint(type(\"hello\"))\nprint(type(True))\nprint(type(None))\n",[457,170038,170039,170053,170067,170081,170095],{"__ignoreMap":32},[460,170040,170041,170043,170045,170047,170049,170051],{"class":462,"line":463},[460,170042,46824],{"class":900},[460,170044,2174],{"class":466},[460,170046,117600],{"class":900},[460,170048,2174],{"class":466},[460,170050,2325],{"class":900},[460,170052,6311],{"class":466},[460,170054,170055,170057,170059,170061,170063,170065],{"class":462,"line":476},[460,170056,46824],{"class":900},[460,170058,2174],{"class":466},[460,170060,117600],{"class":900},[460,170062,2174],{"class":466},[460,170064,16801],{"class":900},[460,170066,6311],{"class":466},[460,170068,170069,170071,170073,170075,170077,170079],{"class":462,"line":482},[460,170070,46824],{"class":900},[460,170072,2174],{"class":466},[460,170074,117600],{"class":900},[460,170076,2174],{"class":466},[460,170078,22349],{"class":1353},[460,170080,6311],{"class":466},[460,170082,170083,170085,170087,170089,170091,170093],{"class":462,"line":488},[460,170084,46824],{"class":900},[460,170086,2174],{"class":466},[460,170088,117600],{"class":900},[460,170090,2174],{"class":466},[460,170092,47882],{"class":900},[460,170094,6311],{"class":466},[460,170096,170097,170099,170101,170103,170105,170107],{"class":462,"line":494},[460,170098,46824],{"class":900},[460,170100,2174],{"class":466},[460,170102,117600],{"class":900},[460,170104,2174],{"class":466},[460,170106,110179],{"class":900},[460,170108,6311],{"class":466},[14,170110,170111],{},"输出类似：",[451,170113,170116],{"className":170114,"code":170115,"language":8391,"meta":32},[21693],"\u003Cclass 'int'>\n\u003Cclass 'float'>\n\u003Cclass 'str'>\n\u003Cclass 'bool'>\n\u003Cclass 'NoneType'>\n",[457,170117,170115],{"__ignoreMap":32},[14,170119,25511,170120,121776,170122,170124,170125,170127,170128,6410,170130,170127,170132,170134],{},[457,170121,17926],{},[457,170123,16759],{}," 的子类，",[457,170126,47882],{}," 可以当作 ",[457,170129,901],{},[457,170131,50292],{},[457,170133,936],{},"，但业务代码中不要滥用。",[451,170136,170138],{"className":46787,"code":170137,"language":46789,"meta":32,"style":32},"print(True + 1)   # 2\nprint(False + 1)  # 1\n",[457,170139,170140,170158],{"__ignoreMap":32},[460,170141,170142,170144,170146,170148,170150,170152,170155],{"class":462,"line":463},[460,170143,46824],{"class":900},[460,170145,2174],{"class":466},[460,170147,47882],{"class":900},[460,170149,61870],{"class":887},[460,170151,1400],{"class":900},[460,170153,170154],{"class":466},")   ",[460,170156,170157],{"class":942},"# 2\n",[460,170159,170160,170162,170164,170166,170168,170170,170172],{"class":462,"line":476},[460,170161,46824],{"class":900},[460,170163,2174],{"class":466},[460,170165,50292],{"class":900},[460,170167,61870],{"class":887},[460,170169,1400],{"class":900},[460,170171,62112],{"class":466},[460,170173,170174],{"class":942},"# 1\n",[18,170176,170178],{"id":170177},"_26-类型转换","2.6 类型转换",[14,170180,170181],{},"常用转换函数：",[451,170183,170185],{"className":46787,"code":170184,"language":46789,"meta":32,"style":32},"int(\"10\")\nfloat(\"3.14\")\nstr(100)\nbool(1)\n",[457,170186,170187,170197,170208,170218],{"__ignoreMap":32},[460,170188,170189,170191,170193,170195],{"class":462,"line":463},[460,170190,16759],{"class":900},[460,170192,2174],{"class":466},[460,170194,70562],{"class":1353},[460,170196,3754],{"class":466},[460,170198,170199,170201,170203,170206],{"class":462,"line":476},[460,170200,16793],{"class":900},[460,170202,2174],{"class":466},[460,170204,170205],{"class":1353},"\"3.14\"",[460,170207,3754],{"class":466},[460,170209,170210,170212,170214,170216],{"class":462,"line":482},[460,170211,6393],{"class":900},[460,170213,2174],{"class":466},[460,170215,2325],{"class":900},[460,170217,3754],{"class":466},[460,170219,170220,170222,170224,170226],{"class":462,"line":488},[460,170221,17926],{"class":900},[460,170223,2174],{"class":466},[460,170225,901],{"class":900},[460,170227,3754],{"class":466},[14,170229,31586],{},[451,170231,170233],{"className":46787,"code":170232,"language":46789,"meta":32,"style":32},"age = \"18\"\nage = int(age)\nprint(age + 1)\n",[457,170234,170235,170244,170255],{"__ignoreMap":32},[460,170236,170237,170239,170241],{"class":462,"line":463},[460,170238,161039],{"class":466},[460,170240,894],{"class":887},[460,170242,170243],{"class":1353}," \"18\"\n",[460,170245,170246,170248,170250,170252],{"class":462,"line":476},[460,170247,161039],{"class":466},[460,170249,894],{"class":887},[460,170251,18917],{"class":900},[460,170253,170254],{"class":466},"(age)\n",[460,170256,170257,170259,170262,170264,170266],{"class":462,"line":482},[460,170258,46824],{"class":900},[460,170260,170261],{"class":466},"(age ",[460,170263,8495],{"class":887},[460,170265,1400],{"class":900},[460,170267,3754],{"class":466},[14,170269,170270],{},"输入得到的内容永远是字符串：",[451,170272,170274],{"className":46787,"code":170273,"language":46789,"meta":32,"style":32},"num = input(\"请输入数字:\")\nprint(type(num))  # str\n",[457,170275,170276,170292],{"__ignoreMap":32},[460,170277,170278,170281,170283,170285,170287,170290],{"class":462,"line":463},[460,170279,170280],{"class":466},"num ",[460,170282,894],{"class":887},[460,170284,76796],{"class":900},[460,170286,2174],{"class":466},[460,170288,170289],{"class":1353},"\"请输入数字:\"",[460,170291,3754],{"class":466},[460,170293,170294,170296,170298,170300,170303],{"class":462,"line":476},[460,170295,46824],{"class":900},[460,170297,2174],{"class":466},[460,170299,117600],{"class":900},[460,170301,170302],{"class":466},"(num))  ",[460,170304,170305],{"class":942},"# str\n",[14,170307,170308],{},"如果要做数学运算，必须转换：",[451,170310,170312],{"className":46787,"code":170311,"language":46789,"meta":32,"style":32},"num = int(input(\"请输入数字:\"))\nprint(num + 10)\n",[457,170313,170314,170332],{"__ignoreMap":32},[460,170315,170316,170318,170320,170322,170324,170326,170328,170330],{"class":462,"line":463},[460,170317,170280],{"class":466},[460,170319,894],{"class":887},[460,170321,18917],{"class":900},[460,170323,2174],{"class":466},[460,170325,70068],{"class":900},[460,170327,2174],{"class":466},[460,170329,170289],{"class":1353},[460,170331,6311],{"class":466},[460,170333,170334,170336,170338,170340,170342],{"class":462,"line":476},[460,170335,46824],{"class":900},[460,170337,61923],{"class":466},[460,170339,8495],{"class":887},[460,170341,5231],{"class":900},[460,170343,3754],{"class":466},[14,170345,170346],{},"常见错误：",[451,170348,170350],{"className":46787,"code":170349,"language":46789,"meta":32,"style":32},"int(\"3.14\")   # 错误\nint(\"abc\")    # 错误\n",[457,170351,170352,170365],{"__ignoreMap":32},[460,170353,170354,170356,170358,170360,170362],{"class":462,"line":463},[460,170355,16759],{"class":900},[460,170357,2174],{"class":466},[460,170359,170205],{"class":1353},[460,170361,170154],{"class":466},[460,170363,170364],{"class":942},"# 错误\n",[460,170366,170367,170369,170371,170374,170377],{"class":462,"line":476},[460,170368,16759],{"class":900},[460,170370,2174],{"class":466},[460,170372,170373],{"class":1353},"\"abc\"",[460,170375,170376],{"class":466},")    ",[460,170378,170364],{"class":942},[14,170380,170381],{},"正确写法：",[451,170383,170385],{"className":46787,"code":170384,"language":46789,"meta":32,"style":32},"num = float(\"3.14\")\n",[457,170386,170387],{"__ignoreMap":32},[460,170388,170389,170391,170393,170395,170397,170399],{"class":462,"line":463},[460,170390,170280],{"class":466},[460,170392,894],{"class":887},[460,170394,124290],{"class":900},[460,170396,2174],{"class":466},[460,170398,170205],{"class":1353},[460,170400,3754],{"class":466},[18,170402,170404],{"id":170403},"_27-运算符","2.7 运算符",[23,170406,170408],{"id":170407},"_271-算术运算符","2.7.1 算术运算符",[16884,170410,170411,170422],{},[16887,170412,170413],{},[16890,170414,170415,170418,170420],{},[16893,170416,170417],{},"运算符",[16893,170419,42281],{},[16893,170421,43903],{},[16930,170423,170424,170438,170452,170466,170480,170494,170508],{},[16890,170425,170426,170430,170433],{},[16935,170427,170428],{},[457,170429,8495],{},[16935,170431,170432],{},"加法",[16935,170434,170435],{},[457,170436,170437],{},"1 + 2",[16890,170439,170440,170444,170447],{},[16935,170441,170442],{},[457,170443,17259],{},[16935,170445,170446],{},"减法",[16935,170448,170449],{},[457,170450,170451],{},"5 - 3",[16890,170453,170454,170458,170461],{},[16935,170455,170456],{},[457,170457,8320],{},[16935,170459,170460],{},"乘法",[16935,170462,170463],{},[457,170464,170465],{},"2 * 3",[16890,170467,170468,170472,170475],{},[16935,170469,170470],{},[457,170471,8331],{},[16935,170473,170474],{},"除法，结果是浮点数",[16935,170476,170477],{},[457,170478,170479],{},"5 \u002F 2",[16890,170481,170482,170486,170489],{},[16935,170483,170484],{},[457,170485,5245],{},[16935,170487,170488],{},"整除",[16935,170490,170491],{},[457,170492,170493],{},"5 \u002F\u002F 2",[16890,170495,170496,170500,170503],{},[16935,170497,170498],{},[457,170499,2328],{},[16935,170501,170502],{},"取余",[16935,170504,170505],{},[457,170506,170507],{},"5 % 2",[16890,170509,170510,170514,170517],{},[16935,170511,170512],{},[457,170513,27126],{},[16935,170515,170516],{},"幂运算",[16935,170518,170519],{},[457,170520,170521],{},"2 ** 3",[14,170523,31586],{},[451,170525,170527],{"className":46787,"code":170526,"language":46789,"meta":32,"style":32},"print(5 \u002F 2)   # 2.5\nprint(5 \u002F\u002F 2)  # 2\nprint(5 % 2)   # 1\nprint(2 ** 3)  # 8\n",[457,170528,170529,170547,170564,170581],{"__ignoreMap":32},[460,170530,170531,170533,170535,170537,170540,170542,170544],{"class":462,"line":463},[460,170532,46824],{"class":900},[460,170534,2174],{"class":466},[460,170536,7290],{"class":900},[460,170538,170539],{"class":887}," \u002F",[460,170541,1442],{"class":900},[460,170543,170154],{"class":466},[460,170545,170546],{"class":942},"# 2.5\n",[460,170548,170549,170551,170553,170555,170558,170560,170562],{"class":462,"line":476},[460,170550,46824],{"class":900},[460,170552,2174],{"class":466},[460,170554,7290],{"class":900},[460,170556,170557],{"class":887}," \u002F\u002F",[460,170559,1442],{"class":900},[460,170561,62112],{"class":466},[460,170563,170157],{"class":942},[460,170565,170566,170568,170570,170572,170575,170577,170579],{"class":462,"line":482},[460,170567,46824],{"class":900},[460,170569,2174],{"class":466},[460,170571,7290],{"class":900},[460,170573,170574],{"class":887}," %",[460,170576,1442],{"class":900},[460,170578,170154],{"class":466},[460,170580,170174],{"class":942},[460,170582,170583,170585,170587,170589,170592,170594,170596],{"class":462,"line":488},[460,170584,46824],{"class":900},[460,170586,2174],{"class":466},[460,170588,907],{"class":900},[460,170590,170591],{"class":887}," **",[460,170593,1481],{"class":900},[460,170595,62112],{"class":466},[460,170597,170598],{"class":942},"# 8\n",[23,170600,170602],{"id":170601},"_272-赋值运算符","2.7.2 赋值运算符",[451,170604,170606],{"className":46787,"code":170605,"language":46789,"meta":32,"style":32},"num = 10\nnum += 5\nnum -= 2\nnum *= 3\nnum \u002F= 2\n",[457,170607,170608,170616,170624,170632,170640],{"__ignoreMap":32},[460,170609,170610,170612,170614],{"class":462,"line":463},[460,170611,170280],{"class":466},[460,170613,894],{"class":887},[460,170615,74626],{"class":900},[460,170617,170618,170620,170622],{"class":462,"line":476},[460,170619,170280],{"class":466},[460,170621,3467],{"class":887},[460,170623,70671],{"class":900},[460,170625,170626,170628,170630],{"class":462,"line":482},[460,170627,170280],{"class":466},[460,170629,164745],{"class":887},[460,170631,64026],{"class":900},[460,170633,170634,170636,170638],{"class":462,"line":488},[460,170635,170280],{"class":466},[460,170637,151641],{"class":887},[460,170639,134529],{"class":900},[460,170641,170642,170644,170647],{"class":462,"line":494},[460,170643,170280],{"class":466},[460,170645,170646],{"class":887},"\u002F=",[460,170648,64026],{"class":900},[14,170650,170651],{},"等价关系：",[451,170653,170655],{"className":46787,"code":170654,"language":46789,"meta":32,"style":32},"num += 1\nnum = num + 1\n",[457,170656,170657,170665],{"__ignoreMap":32},[460,170658,170659,170661,170663],{"class":462,"line":463},[460,170660,170280],{"class":466},[460,170662,3467],{"class":887},[460,170664,71910],{"class":900},[460,170666,170667,170669,170671,170674,170676],{"class":462,"line":476},[460,170668,170280],{"class":466},[460,170670,894],{"class":887},[460,170672,170673],{"class":466}," num ",[460,170675,8495],{"class":887},[460,170677,71910],{"class":900},[14,170679,170680,170681,115511,170684,44794],{},"Python 没有 ",[457,170682,170683],{},"num++",[457,170685,170686],{},"num--",[23,170688,170690],{"id":170689},"_273-比较运算符","2.7.3 比较运算符",[14,170692,170693],{},"比较运算结果是布尔值。",[451,170695,170697],{"className":46787,"code":170696,"language":46789,"meta":32,"style":32},"print(10 > 5)\nprint(10 >= 10)\nprint(10 == 8)\nprint(10 != 8)\n",[457,170698,170699,170713,170728,170742],{"__ignoreMap":32},[460,170700,170701,170703,170705,170707,170709,170711],{"class":462,"line":463},[460,170702,46824],{"class":900},[460,170704,2174],{"class":466},[460,170706,2096],{"class":900},[460,170708,42633],{"class":887},[460,170710,2229],{"class":900},[460,170712,3754],{"class":466},[460,170714,170715,170717,170719,170721,170724,170726],{"class":462,"line":476},[460,170716,46824],{"class":900},[460,170718,2174],{"class":466},[460,170720,2096],{"class":900},[460,170722,170723],{"class":887}," >=",[460,170725,5231],{"class":900},[460,170727,3754],{"class":466},[460,170729,170730,170732,170734,170736,170738,170740],{"class":462,"line":482},[460,170731,46824],{"class":900},[460,170733,2174],{"class":466},[460,170735,2096],{"class":900},[460,170737,116052],{"class":887},[460,170739,10359],{"class":900},[460,170741,3754],{"class":466},[460,170743,170744,170746,170748,170750,170753,170755],{"class":462,"line":488},[460,170745,46824],{"class":900},[460,170747,2174],{"class":466},[460,170749,2096],{"class":900},[460,170751,170752],{"class":887}," !=",[460,170754,10359],{"class":900},[460,170756,3754],{"class":466},[14,170758,170759,170760,170762,170763,44794],{},"注意：判断相等用 ",[457,170761,19471],{},"，赋值用 ",[457,170764,894],{},[451,170766,170768],{"className":46787,"code":170767,"language":46789,"meta":32,"style":32},"age = 18       # 赋值\nage == 18      # 判断是否相等\n",[457,170769,170770,170782],{"__ignoreMap":32},[460,170771,170772,170774,170776,170779],{"class":462,"line":463},[460,170773,161039],{"class":466},[460,170775,894],{"class":887},[460,170777,170778],{"class":900}," 18",[460,170780,170781],{"class":942},"       # 赋值\n",[460,170783,170784,170786,170788,170790],{"class":462,"line":476},[460,170785,161039],{"class":466},[460,170787,19471],{"class":887},[460,170789,170778],{"class":900},[460,170791,170792],{"class":942},"      # 判断是否相等\n",[23,170794,170796],{"id":170795},"_274-逻辑运算符","2.7.4 逻辑运算符",[16884,170798,170799,170807],{},[16887,170800,170801],{},[16890,170802,170803,170805],{},[16893,170804,170417],{},[16893,170806,42281],{},[16930,170808,170809,170818,170827],{},[16890,170810,170811,170815],{},[16935,170812,170813],{},[457,170814,46871],{},[16935,170816,170817],{},"并且",[16890,170819,170820,170824],{},[16935,170821,170822],{},[457,170823,129583],{},[16935,170825,170826],{},"或者",[16890,170828,170829,170834],{},[16935,170830,170831],{},[457,170832,170833],{},"not",[16935,170835,170836],{},"取反",[451,170838,170840],{"className":46787,"code":170839,"language":46789,"meta":32,"style":32},"age = 20\nhas_ticket = True\n\nprint(age >= 18 and has_ticket)\nprint(age \u003C 18 or has_ticket)\nprint(not has_ticket)\n",[457,170841,170842,170850,170859,170863,170878,170892],{"__ignoreMap":32},[460,170843,170844,170846,170848],{"class":462,"line":463},[460,170845,161039],{"class":466},[460,170847,894],{"class":887},[460,170849,11874],{"class":900},[460,170851,170852,170855,170857],{"class":462,"line":476},[460,170853,170854],{"class":466},"has_ticket ",[460,170856,894],{"class":887},[460,170858,168092],{"class":900},[460,170860,170861],{"class":462,"line":482},[460,170862,522],{"emptyLinePlaceholder":521},[460,170864,170865,170867,170869,170871,170873,170875],{"class":462,"line":488},[460,170866,46824],{"class":900},[460,170868,170261],{"class":466},[460,170870,3738],{"class":887},[460,170872,170778],{"class":900},[460,170874,134922],{"class":887},[460,170876,170877],{"class":466}," has_ticket)\n",[460,170879,170880,170882,170884,170886,170888,170890],{"class":462,"line":494},[460,170881,46824],{"class":900},[460,170883,170261],{"class":466},[460,170885,781],{"class":887},[460,170887,170778],{"class":900},[460,170889,128694],{"class":887},[460,170891,170877],{"class":466},[460,170893,170894,170896,170898,170900],{"class":462,"line":500},[460,170895,46824],{"class":900},[460,170897,2174],{"class":466},[460,170899,170833],{"class":887},[460,170901,170877],{"class":466},[18,170903,170905],{"id":170904},"_28-字符串定义","2.8 字符串定义",[14,170907,170908],{},"三种常见写法：",[451,170910,170912],{"className":46787,"code":170911,"language":46789,"meta":32,"style":32},"name1 = '小明'\nname2 = \"小明\"\ntext = \"\"\"这是多行字符串\n可以换行\"\"\"\n",[457,170913,170914,170924,170933,170943],{"__ignoreMap":32},[460,170915,170916,170919,170921],{"class":462,"line":463},[460,170917,170918],{"class":466},"name1 ",[460,170920,894],{"class":887},[460,170922,170923],{"class":1353}," '小明'\n",[460,170925,170926,170929,170931],{"class":462,"line":476},[460,170927,170928],{"class":466},"name2 ",[460,170930,894],{"class":887},[460,170932,163846],{"class":1353},[460,170934,170935,170938,170940],{"class":462,"line":482},[460,170936,170937],{"class":466},"text ",[460,170939,894],{"class":887},[460,170941,170942],{"class":1353}," \"\"\"这是多行字符串\n",[460,170944,170945],{"class":462,"line":488},[460,170946,170947],{"class":1353},"可以换行\"\"\"\n",[14,170949,170950],{},"字符串中包含引号：",[451,170952,170954],{"className":46787,"code":170953,"language":46789,"meta":32,"style":32},"msg = \"他说:'你好'\"\nmsg2 = '他说:\"你好\"'\nmsg3 = \"他说:\\\"你好\\\"\"\n",[457,170955,170956,170966,170976],{"__ignoreMap":32},[460,170957,170958,170961,170963],{"class":462,"line":463},[460,170959,170960],{"class":466},"msg ",[460,170962,894],{"class":887},[460,170964,170965],{"class":1353}," \"他说:'你好'\"\n",[460,170967,170968,170971,170973],{"class":462,"line":476},[460,170969,170970],{"class":466},"msg2 ",[460,170972,894],{"class":887},[460,170974,170975],{"class":1353}," '他说:\"你好\"'\n",[460,170977,170978,170981,170983,170986,170989,170992,170994],{"class":462,"line":482},[460,170979,170980],{"class":466},"msg3 ",[460,170982,894],{"class":887},[460,170984,170985],{"class":1353}," \"他说:",[460,170987,170988],{"class":900},"\\\"",[460,170990,170991],{"class":1353},"你好",[460,170993,170988],{"class":900},[460,170995,41545],{"class":1353},[14,170997,170998],{},"常见转义字符：",[16884,171000,171001,171010],{},[16887,171002,171003],{},[16890,171004,171005,171008],{},[16893,171006,171007],{},"写法",[16893,171009,115193],{},[16930,171011,171012,171022,171031,171041,171050],{},[16890,171013,171014,171019],{},[16935,171015,171016],{},[457,171017,171018],{},"\\n",[16935,171020,171021],{},"换行",[16890,171023,171024,171028],{},[16935,171025,171026],{},[457,171027,17807],{},[16935,171029,171030],{},"制表符",[16890,171032,171033,171038],{},[16935,171034,171035],{},[457,171036,171037],{},"\\\\",[16935,171039,171040],{},"反斜杠",[16890,171042,171043,171047],{},[16935,171044,171045],{},[457,171046,170988],{},[16935,171048,171049],{},"双引号",[16890,171051,171052,171057],{},[16935,171053,171054],{},[457,171055,171056],{},"\\'",[16935,171058,171059],{},"单引号",[18,171061,171063],{"id":171062},"_29-字符串拼接","2.9 字符串拼接",[451,171065,171067],{"className":46787,"code":171066,"language":46789,"meta":32,"style":32},"name = \"小明\"\nprint(\"你好，\" + name)\n",[457,171068,171069,171077],{"__ignoreMap":32},[460,171070,171071,171073,171075],{"class":462,"line":463},[460,171072,161029],{"class":466},[460,171074,894],{"class":887},[460,171076,163846],{"class":1353},[460,171078,171079,171081,171083,171086,171088],{"class":462,"line":476},[460,171080,46824],{"class":900},[460,171082,2174],{"class":466},[460,171084,171085],{"class":1353},"\"你好，\"",[460,171087,61870],{"class":887},[460,171089,171090],{"class":466}," name)\n",[14,171092,171093],{},"字符串只能和字符串拼接：",[451,171095,171097],{"className":46787,"code":171096,"language":46789,"meta":32,"style":32},"age = 18\nprint(\"年龄:\" + str(age))\n",[457,171098,171099,171107],{"__ignoreMap":32},[460,171100,171101,171103,171105],{"class":462,"line":463},[460,171102,161039],{"class":466},[460,171104,894],{"class":887},[460,171106,161044],{"class":900},[460,171108,171109,171111,171113,171115,171117,171119],{"class":462,"line":476},[460,171110,46824],{"class":900},[460,171112,2174],{"class":466},[460,171114,161010],{"class":1353},[460,171116,61870],{"class":887},[460,171118,6846],{"class":900},[460,171120,171121],{"class":466},"(age))\n",[14,171123,171124],{},"更推荐使用格式化字符串。",[18,171126,171128],{"id":171127},"_210-字符串格式化","2.10 字符串格式化",[23,171130,171132],{"id":171131},"_2101-百分号格式化","2.10.1 百分号格式化",[451,171134,171136],{"className":46787,"code":171135,"language":46789,"meta":32,"style":32},"name = \"小明\"\nage = 18\nscore = 95.5\n\nprint(\"姓名:%s 年龄:%d 分数:%.1f\" % (name, age, score))\n",[457,171137,171138,171146,171154,171163,171167],{"__ignoreMap":32},[460,171139,171140,171142,171144],{"class":462,"line":463},[460,171141,161029],{"class":466},[460,171143,894],{"class":887},[460,171145,163846],{"class":1353},[460,171147,171148,171150,171152],{"class":462,"line":476},[460,171149,161039],{"class":466},[460,171151,894],{"class":887},[460,171153,161044],{"class":900},[460,171155,171156,171158,171160],{"class":462,"line":482},[460,171157,169851],{"class":466},[460,171159,894],{"class":887},[460,171161,171162],{"class":900}," 95.5\n",[460,171164,171165],{"class":462,"line":488},[460,171166,522],{"emptyLinePlaceholder":521},[460,171168,171169,171171,171173,171176,171179,171182,171185,171188,171191,171193,171195],{"class":462,"line":494},[460,171170,46824],{"class":900},[460,171172,2174],{"class":466},[460,171174,171175],{"class":1353},"\"姓名:",[460,171177,171178],{"class":900},"%s",[460,171180,171181],{"class":1353}," 年龄:",[460,171183,171184],{"class":900},"%d",[460,171186,171187],{"class":1353}," 分数:",[460,171189,171190],{"class":900},"%.1f",[460,171192,16993],{"class":1353},[460,171194,170574],{"class":887},[460,171196,171197],{"class":466}," (name, age, score))\n",[14,171199,171200],{},"常用占位符：",[16884,171202,171203,171212],{},[16887,171204,171205],{},[16890,171206,171207,171210],{},[16893,171208,171209],{},"占位符",[16893,171211,42281],{},[16930,171213,171214,171222,171230],{},[16890,171215,171216,171220],{},[16935,171217,171218],{},[457,171219,171178],{},[16935,171221,169717],{},[16890,171223,171224,171228],{},[16935,171225,171226],{},[457,171227,171184],{},[16935,171229,169695],{},[16890,171231,171232,171237],{},[16935,171233,171234],{},[457,171235,171236],{},"%f",[16935,171238,169706],{},[14,171240,171241],{},"精度控制：",[451,171243,171245],{"className":46787,"code":171244,"language":46789,"meta":32,"style":32},"price = 12.3456\nprint(\"%.2f\" % price)\n",[457,171246,171247,171256],{"__ignoreMap":32},[460,171248,171249,171251,171253],{"class":462,"line":463},[460,171250,161174],{"class":466},[460,171252,894],{"class":887},[460,171254,171255],{"class":900}," 12.3456\n",[460,171257,171258,171260,171262,171264,171267,171269,171271],{"class":462,"line":476},[460,171259,46824],{"class":900},[460,171261,2174],{"class":466},[460,171263,16993],{"class":1353},[460,171265,171266],{"class":900},"%.2f",[460,171268,16993],{"class":1353},[460,171270,170574],{"class":887},[460,171272,171273],{"class":466}," price)\n",[23,171275,171277],{"id":171276},"_2102-format方法","2.10.2 format方法",[451,171279,171281],{"className":46787,"code":171280,"language":46789,"meta":32,"style":32},"name = \"小明\"\nage = 18\n\nprint(\"姓名:{} 年龄:{}\".format(name, age))\nprint(\"姓名:{0} 年龄:{1}\".format(name, age))\nprint(\"姓名:{name} 年龄:{age}\".format(name=name, age=age))\n",[457,171282,171283,171291,171299,171303,171322,171342],{"__ignoreMap":32},[460,171284,171285,171287,171289],{"class":462,"line":463},[460,171286,161029],{"class":466},[460,171288,894],{"class":887},[460,171290,163846],{"class":1353},[460,171292,171293,171295,171297],{"class":462,"line":476},[460,171294,161039],{"class":466},[460,171296,894],{"class":887},[460,171298,161044],{"class":900},[460,171300,171301],{"class":462,"line":482},[460,171302,522],{"emptyLinePlaceholder":521},[460,171304,171305,171307,171309,171311,171313,171315,171317,171319],{"class":462,"line":488},[460,171306,46824],{"class":900},[460,171308,2174],{"class":466},[460,171310,171175],{"class":1353},[460,171312,48864],{"class":900},[460,171314,171181],{"class":1353},[460,171316,48864],{"class":900},[460,171318,16993],{"class":1353},[460,171320,171321],{"class":466},".format(name, age))\n",[460,171323,171324,171326,171328,171330,171333,171335,171338,171340],{"class":462,"line":494},[460,171325,46824],{"class":900},[460,171327,2174],{"class":466},[460,171329,171175],{"class":1353},[460,171331,171332],{"class":900},"{0}",[460,171334,171181],{"class":1353},[460,171336,171337],{"class":900},"{1}",[460,171339,16993],{"class":1353},[460,171341,171321],{"class":466},[460,171343,171344,171346,171348,171350,171353,171355,171358,171360,171363,171365,171367,171370,171372,171374],{"class":462,"line":500},[460,171345,46824],{"class":900},[460,171347,2174],{"class":466},[460,171349,171175],{"class":1353},[460,171351,171352],{"class":900},"{name}",[460,171354,171181],{"class":1353},[460,171356,171357],{"class":900},"{age}",[460,171359,16993],{"class":1353},[460,171361,171362],{"class":466},".format(",[460,171364,3440],{"class":3380},[460,171366,894],{"class":887},[460,171368,171369],{"class":466},"name, ",[460,171371,3989],{"class":3380},[460,171373,894],{"class":887},[460,171375,171376],{"class":466},"age))\n",[23,171378,171380],{"id":171379},"_2103-f-string","2.10.3 f-string",[14,171382,171383],{},"推荐写法：",[451,171385,171387],{"className":46787,"code":171386,"language":46789,"meta":32,"style":32},"name = \"小明\"\nage = 18\nscore = 95.5\n\nprint(f\"姓名:{name} 年龄:{age} 分数:{score:.1f}\")\n",[457,171388,171389,171397,171405,171413,171417],{"__ignoreMap":32},[460,171390,171391,171393,171395],{"class":462,"line":463},[460,171392,161029],{"class":466},[460,171394,894],{"class":887},[460,171396,163846],{"class":1353},[460,171398,171399,171401,171403],{"class":462,"line":476},[460,171400,161039],{"class":466},[460,171402,894],{"class":887},[460,171404,161044],{"class":900},[460,171406,171407,171409,171411],{"class":462,"line":482},[460,171408,169851],{"class":466},[460,171410,894],{"class":887},[460,171412,171162],{"class":900},[460,171414,171415],{"class":462,"line":488},[460,171416,522],{"emptyLinePlaceholder":521},[460,171418,171419,171421,171423,171425,171427,171429,171431,171433,171435,171437,171439,171441,171443,171445,171448,171451,171453,171455],{"class":462,"line":494},[460,171420,46824],{"class":900},[460,171422,2174],{"class":466},[460,171424,16804],{"class":887},[460,171426,171175],{"class":1353},[460,171428,17607],{"class":900},[460,171430,3440],{"class":466},[460,171432,612],{"class":900},[460,171434,171181],{"class":1353},[460,171436,17607],{"class":900},[460,171438,3989],{"class":466},[460,171440,612],{"class":900},[460,171442,171187],{"class":1353},[460,171444,17607],{"class":900},[460,171446,171447],{"class":466},"score",[460,171449,171450],{"class":887},":.1f",[460,171452,612],{"class":900},[460,171454,16993],{"class":1353},[460,171456,3754],{"class":466},[14,171458,171459],{},"表达式也可以放进去：",[451,171461,171463],{"className":46787,"code":171462,"language":46789,"meta":32,"style":32},"price = 8\ncount = 5\nprint(f\"总价:{price * count}元\")\n",[457,171464,171465,171473,171481],{"__ignoreMap":32},[460,171466,171467,171469,171471],{"class":462,"line":463},[460,171468,161174],{"class":466},[460,171470,894],{"class":887},[460,171472,161179],{"class":900},[460,171474,171475,171477,171479],{"class":462,"line":476},[460,171476,161184],{"class":466},[460,171478,894],{"class":887},[460,171480,70671],{"class":900},[460,171482,171483,171485,171487,171489,171492,171494,171496,171498,171501,171503,171506],{"class":462,"line":482},[460,171484,46824],{"class":900},[460,171486,2174],{"class":466},[460,171488,16804],{"class":887},[460,171490,171491],{"class":1353},"\"总价:",[460,171493,17607],{"class":900},[460,171495,161174],{"class":466},[460,171497,8320],{"class":887},[460,171499,171500],{"class":466}," count",[460,171502,612],{"class":900},[460,171504,171505],{"class":1353},"元\"",[460,171507,3754],{"class":466},[18,171509,171511],{"id":171510},"_211-input输入","2.11 input输入",[14,171513,171514,171517],{},[457,171515,171516],{},"input()"," 会暂停程序，等待用户输入。",[451,171519,171521],{"className":46787,"code":171520,"language":46789,"meta":32,"style":32},"name = input(\"请输入姓名:\")\nprint(f\"你好，{name}\")\n",[457,171522,171523,171537],{"__ignoreMap":32},[460,171524,171525,171527,171529,171531,171533,171535],{"class":462,"line":463},[460,171526,161029],{"class":466},[460,171528,894],{"class":887},[460,171530,76796],{"class":900},[460,171532,2174],{"class":466},[460,171534,166872],{"class":1353},[460,171536,3754],{"class":466},[460,171538,171539,171541,171543,171545,171548,171550,171552,171554,171556],{"class":462,"line":476},[460,171540,46824],{"class":900},[460,171542,2174],{"class":466},[460,171544,16804],{"class":887},[460,171546,171547],{"class":1353},"\"你好，",[460,171549,17607],{"class":900},[460,171551,3440],{"class":466},[460,171553,612],{"class":900},[460,171555,16993],{"class":1353},[460,171557,3754],{"class":466},[14,171559,171560],{},"输入整数：",[451,171562,171564],{"className":46787,"code":171563,"language":46789,"meta":32,"style":32},"age = int(input(\"请输入年龄:\"))\nprint(f\"明年你{age + 1}岁\")\n",[457,171565,171566,171584],{"__ignoreMap":32},[460,171567,171568,171570,171572,171574,171576,171578,171580,171582],{"class":462,"line":463},[460,171569,161039],{"class":466},[460,171571,894],{"class":887},[460,171573,18917],{"class":900},[460,171575,2174],{"class":466},[460,171577,70068],{"class":900},[460,171579,2174],{"class":466},[460,171581,166887],{"class":1353},[460,171583,6311],{"class":466},[460,171585,171586,171588,171590,171592,171595,171597,171599,171601,171604,171606],{"class":462,"line":476},[460,171587,46824],{"class":900},[460,171589,2174],{"class":466},[460,171591,16804],{"class":887},[460,171593,171594],{"class":1353},"\"明年你",[460,171596,17607],{"class":900},[460,171598,161039],{"class":466},[460,171600,8495],{"class":887},[460,171602,171603],{"class":900}," 1}",[460,171605,163897],{"class":1353},[460,171607,3754],{"class":466},[14,171609,171610],{},"输入小数：",[451,171612,171614],{"className":46787,"code":171613,"language":46789,"meta":32,"style":32},"height = float(input(\"请输入身高:\"))\nprint(f\"身高:{height:.2f}米\")\n",[457,171615,171616,171635],{"__ignoreMap":32},[460,171617,171618,171620,171622,171624,171626,171628,171630,171633],{"class":462,"line":463},[460,171619,169824],{"class":466},[460,171621,894],{"class":887},[460,171623,124290],{"class":900},[460,171625,2174],{"class":466},[460,171627,70068],{"class":900},[460,171629,2174],{"class":466},[460,171631,171632],{"class":1353},"\"请输入身高:\"",[460,171634,6311],{"class":466},[460,171636,171637,171639,171641,171643,171646,171648,171650,171653,171655,171658],{"class":462,"line":476},[460,171638,46824],{"class":900},[460,171640,2174],{"class":466},[460,171642,16804],{"class":887},[460,171644,171645],{"class":1353},"\"身高:",[460,171647,17607],{"class":900},[460,171649,41394],{"class":466},[460,171651,171652],{"class":887},":.2f",[460,171654,612],{"class":900},[460,171656,171657],{"class":1353},"米\"",[460,171659,3754],{"class":466},[18,171661,171663],{"id":171662},"_212-小案例购物金额计算","2.12 小案例：购物金额计算",[14,171665,137785],{},[103,171667,171668,171671,171674,171677],{},[43,171669,171670],{},"输入商品单价。",[43,171672,171673],{},"输入购买数量。",[43,171675,171676],{},"输入折扣，例如 0.8 表示八折。",[43,171678,171679],{},"输出最终金额，保留两位小数。",[14,171681,26500],{},[451,171683,171685],{"className":46787,"code":171684,"language":46789,"meta":32,"style":32},"price = float(input(\"请输入商品单价:\"))\ncount = int(input(\"请输入购买数量:\"))\ndiscount = float(input(\"请输入折扣:\"))\n\ntotal = price * count * discount\n\nprint(f\"商品单价:{price:.2f}\")\nprint(f\"购买数量:{count}\")\nprint(f\"折扣:{discount}\")\nprint(f\"应付金额:{total:.2f}元\")\n",[457,171686,171687,171706,171725,171745,171749,171769,171773,171796,171817,171839],{"__ignoreMap":32},[460,171688,171689,171691,171693,171695,171697,171699,171701,171704],{"class":462,"line":463},[460,171690,161174],{"class":466},[460,171692,894],{"class":887},[460,171694,124290],{"class":900},[460,171696,2174],{"class":466},[460,171698,70068],{"class":900},[460,171700,2174],{"class":466},[460,171702,171703],{"class":1353},"\"请输入商品单价:\"",[460,171705,6311],{"class":466},[460,171707,171708,171710,171712,171714,171716,171718,171720,171723],{"class":462,"line":476},[460,171709,161184],{"class":466},[460,171711,894],{"class":887},[460,171713,18917],{"class":900},[460,171715,2174],{"class":466},[460,171717,70068],{"class":900},[460,171719,2174],{"class":466},[460,171721,171722],{"class":1353},"\"请输入购买数量:\"",[460,171724,6311],{"class":466},[460,171726,171727,171730,171732,171734,171736,171738,171740,171743],{"class":462,"line":482},[460,171728,171729],{"class":466},"discount ",[460,171731,894],{"class":887},[460,171733,124290],{"class":900},[460,171735,2174],{"class":466},[460,171737,70068],{"class":900},[460,171739,2174],{"class":466},[460,171741,171742],{"class":1353},"\"请输入折扣:\"",[460,171744,6311],{"class":466},[460,171746,171747],{"class":462,"line":488},[460,171748,522],{"emptyLinePlaceholder":521},[460,171750,171751,171754,171756,171759,171761,171764,171766],{"class":462,"line":494},[460,171752,171753],{"class":466},"total ",[460,171755,894],{"class":887},[460,171757,171758],{"class":466}," price ",[460,171760,8320],{"class":887},[460,171762,171763],{"class":466}," count ",[460,171765,8320],{"class":887},[460,171767,171768],{"class":466}," discount\n",[460,171770,171771],{"class":462,"line":500},[460,171772,522],{"emptyLinePlaceholder":521},[460,171774,171775,171777,171779,171781,171784,171786,171788,171790,171792,171794],{"class":462,"line":506},[460,171776,46824],{"class":900},[460,171778,2174],{"class":466},[460,171780,16804],{"class":887},[460,171782,171783],{"class":1353},"\"商品单价:",[460,171785,17607],{"class":900},[460,171787,3445],{"class":466},[460,171789,171652],{"class":887},[460,171791,612],{"class":900},[460,171793,16993],{"class":1353},[460,171795,3754],{"class":466},[460,171797,171798,171800,171802,171804,171807,171809,171811,171813,171815],{"class":462,"line":512},[460,171799,46824],{"class":900},[460,171801,2174],{"class":466},[460,171803,16804],{"class":887},[460,171805,171806],{"class":1353},"\"购买数量:",[460,171808,17607],{"class":900},[460,171810,8191],{"class":466},[460,171812,612],{"class":900},[460,171814,16993],{"class":1353},[460,171816,3754],{"class":466},[460,171818,171819,171821,171823,171825,171828,171830,171833,171835,171837],{"class":462,"line":518},[460,171820,46824],{"class":900},[460,171822,2174],{"class":466},[460,171824,16804],{"class":887},[460,171826,171827],{"class":1353},"\"折扣:",[460,171829,17607],{"class":900},[460,171831,171832],{"class":466},"discount",[460,171834,612],{"class":900},[460,171836,16993],{"class":1353},[460,171838,3754],{"class":466},[460,171840,171841,171843,171845,171847,171850,171852,171855,171857,171859,171861],{"class":462,"line":525},[460,171842,46824],{"class":900},[460,171844,2174],{"class":466},[460,171846,16804],{"class":887},[460,171848,171849],{"class":1353},"\"应付金额:",[460,171851,17607],{"class":900},[460,171853,171854],{"class":466},"total",[460,171856,171652],{"class":887},[460,171858,612],{"class":900},[460,171860,171505],{"class":1353},[460,171862,3754],{"class":466},[18,171864,171866],{"id":171865},"_213-易错点","2.13 易错点",[103,171868,171869,171874,171880,171888,171891],{},[43,171870,171871,171873],{},[457,171872,171516],{}," 的结果是字符串，做运算前要转换。",[43,171875,171876,171877,44794],{},"字符串拼接时，数字要先 ",[457,171878,171879],{},"str()",[43,171881,171882,171884,171885,171887],{},[457,171883,894],{}," 是赋值，",[457,171886,19471],{}," 是比较。",[43,171889,171890],{},"Python 没有自增自减运算符。",[43,171892,171893],{},"浮点数计算可能有精度误差：",[451,171895,171897],{"className":46787,"code":171896,"language":46789,"meta":32,"style":32},"print(0.1 + 0.2)\n",[457,171898,171899],{"__ignoreMap":32},[460,171900,171901,171903,171905,171907,171909,171912],{"class":462,"line":463},[460,171902,46824],{"class":900},[460,171904,2174],{"class":466},[460,171906,9984],{"class":900},[460,171908,61870],{"class":887},[460,171910,171911],{"class":900}," 0.2",[460,171913,3754],{"class":466},[14,171915,171916,171917,171920],{},"金额计算如果要求严格，可以后续学习 ",[457,171918,171919],{},"decimal"," 模块。",[18,171922,171924],{"id":171923},"_214-本章练习","2.14 本章练习",[103,171926,171927,171930,171933,171936,171939],{},[43,171928,171929],{},"输入姓名、年龄、身高，使用 f-string 输出个人信息。",[43,171931,171932],{},"输入圆的半径，计算面积，保留两位小数。",[43,171934,171935],{},"输入工资和奖金，计算总收入。",[43,171937,171938],{},"输入摄氏温度，转换为华氏温度。",[43,171940,171941],{},"写一个 BMI 计算程序：",[451,171943,171946],{"className":171944,"code":171945,"language":8391,"meta":32},[21693],"BMI = 体重kg \u002F 身高m ** 2\n",[457,171947,171945],{"__ignoreMap":32},[1944,171949,171950],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":171952},[171953,171954,171955,171956,171957,171958,171959,171965,171966,171967,171972,171973,171974,171975],{"id":169514,"depth":476,"text":169515},{"id":169623,"depth":476,"text":169624},{"id":169794,"depth":476,"text":169795},{"id":169871,"depth":476,"text":169872},{"id":67032,"depth":476,"text":67033},{"id":170177,"depth":476,"text":170178},{"id":170403,"depth":476,"text":170404,"children":171960},[171961,171962,171963,171964],{"id":170407,"depth":482,"text":170408},{"id":170601,"depth":482,"text":170602},{"id":170689,"depth":482,"text":170690},{"id":170795,"depth":482,"text":170796},{"id":170904,"depth":476,"text":170905},{"id":171062,"depth":476,"text":171063},{"id":171127,"depth":476,"text":171128,"children":171968},[171969,171970,171971],{"id":171131,"depth":482,"text":171132},{"id":171276,"depth":482,"text":171277},{"id":171379,"depth":482,"text":171380},{"id":171510,"depth":476,"text":171511},{"id":171662,"depth":476,"text":171663},{"id":171865,"depth":476,"text":171866},{"id":171923,"depth":476,"text":171924},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch2",{"title":169506,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch2-基础语法变量与字符串","I4Lu1y1Wu68M1sbt4yv1esO-sQz1pWvuN3Svu2Ad3mo",{"id":171982,"title":171983,"body":171984,"description":16682,"extension":16683,"meta":173620,"navigation":521,"path":173621,"seo":173622,"stem":173623,"__hash__":173624},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch3-判断语句.md","3. 判断语句",{"type":7,"value":171985,"toc":173601},[171986,171989,171993,171996,172011,172014,172042,172046,172096,172098,172114,172117,172143,172146,172150,172217,172220,172236,172240,172243,172361,172364,172371,172420,172426,172430,172433,172546,172549,172553,172557,172560,172610,172614,172617,172667,172671,172674,172712,172716,172719,172765,172768,172803,172807,172812,172815,172861,172863,172930,172934,172940,173051,173060,173064,173066,173077,173079,173245,173249,173251,173265,173267,173481,173485,173504,173521,173524,173570,173574,173598],[10,171987,171983],{"id":171988},"_3-判断语句",[18,171990,171992],{"id":171991},"_31-布尔值","3.1 布尔值",[14,171994,171995],{},"判断语句依赖布尔值：",[451,171997,171999],{"className":46787,"code":171998,"language":46789,"meta":32,"style":32},"True\nFalse\n",[457,172000,172001,172006],{"__ignoreMap":32},[460,172002,172003],{"class":462,"line":463},[460,172004,172005],{"class":900},"True\n",[460,172007,172008],{"class":462,"line":476},[460,172009,172010],{"class":900},"False\n",[14,172012,172013],{},"比较表达式会产生布尔值：",[451,172015,172017],{"className":46787,"code":172016,"language":46789,"meta":32,"style":32},"age = 18\nprint(age >= 18)  # True\n",[457,172018,172019,172027],{"__ignoreMap":32},[460,172020,172021,172023,172025],{"class":462,"line":463},[460,172022,161039],{"class":466},[460,172024,894],{"class":887},[460,172026,161044],{"class":900},[460,172028,172029,172031,172033,172035,172037,172039],{"class":462,"line":476},[460,172030,46824],{"class":900},[460,172032,170261],{"class":466},[460,172034,3738],{"class":887},[460,172036,170778],{"class":900},[460,172038,62112],{"class":466},[460,172040,172041],{"class":942},"# True\n",[18,172043,172045],{"id":172044},"_32-if基础语法","3.2 if基础语法",[451,172047,172049],{"className":46787,"code":172048,"language":46789,"meta":32,"style":32},"age = int(input(\"请输入年龄:\"))\n\nif age >= 18:\n    print(\"可以进入网吧\")\n",[457,172050,172051,172069,172073,172085],{"__ignoreMap":32},[460,172052,172053,172055,172057,172059,172061,172063,172065,172067],{"class":462,"line":463},[460,172054,161039],{"class":466},[460,172056,894],{"class":887},[460,172058,18917],{"class":900},[460,172060,2174],{"class":466},[460,172062,70068],{"class":900},[460,172064,2174],{"class":466},[460,172066,166887],{"class":1353},[460,172068,6311],{"class":466},[460,172070,172071],{"class":462,"line":476},[460,172072,522],{"emptyLinePlaceholder":521},[460,172074,172075,172077,172079,172081,172083],{"class":462,"line":482},[460,172076,18100],{"class":887},[460,172078,32157],{"class":466},[460,172080,3738],{"class":887},[460,172082,170778],{"class":900},[460,172084,20257],{"class":466},[460,172086,172087,172089,172091,172094],{"class":462,"line":488},[460,172088,47706],{"class":900},[460,172090,2174],{"class":466},[460,172092,172093],{"class":1353},"\"可以进入网吧\"",[460,172095,3754],{"class":466},[14,172097,25511],{},[103,172099,172100,172105,172108,172111],{},[43,172101,172102,172104],{},[457,172103,18100],{}," 后面是条件表达式。",[43,172106,172107],{},"条件后面必须写冒号。",[43,172109,172110],{},"条件成立时执行缩进代码块。",[43,172112,172113],{},"Python 用缩进表示代码层级，一般使用 4 个空格。",[14,172115,172116],{},"错误示例：",[451,172118,172120],{"className":46787,"code":172119,"language":46789,"meta":32,"style":32},"if age >= 18\n    print(\"可以进入\")\n",[457,172121,172122,172132],{"__ignoreMap":32},[460,172123,172124,172126,172128,172130],{"class":462,"line":463},[460,172125,18100],{"class":887},[460,172127,32157],{"class":466},[460,172129,3738],{"class":887},[460,172131,161044],{"class":900},[460,172133,172134,172136,172138,172141],{"class":462,"line":476},[460,172135,47706],{"class":900},[460,172137,2174],{"class":466},[460,172139,172140],{"class":1353},"\"可以进入\"",[460,172142,3754],{"class":466},[14,172144,172145],{},"缺少冒号。",[18,172147,172149],{"id":172148},"_33-if-else","3.3 if else",[451,172151,172153],{"className":46787,"code":172152,"language":46789,"meta":32,"style":32},"age = int(input(\"请输入年龄:\"))\n\nif age >= 18:\n    print(\"成年人\")\nelse:\n    print(\"未成年人\")\n",[457,172154,172155,172173,172177,172189,172200,172206],{"__ignoreMap":32},[460,172156,172157,172159,172161,172163,172165,172167,172169,172171],{"class":462,"line":463},[460,172158,161039],{"class":466},[460,172160,894],{"class":887},[460,172162,18917],{"class":900},[460,172164,2174],{"class":466},[460,172166,70068],{"class":900},[460,172168,2174],{"class":466},[460,172170,166887],{"class":1353},[460,172172,6311],{"class":466},[460,172174,172175],{"class":462,"line":476},[460,172176,522],{"emptyLinePlaceholder":521},[460,172178,172179,172181,172183,172185,172187],{"class":462,"line":482},[460,172180,18100],{"class":887},[460,172182,32157],{"class":466},[460,172184,3738],{"class":887},[460,172186,170778],{"class":900},[460,172188,20257],{"class":466},[460,172190,172191,172193,172195,172198],{"class":462,"line":488},[460,172192,47706],{"class":900},[460,172194,2174],{"class":466},[460,172196,172197],{"class":1353},"\"成年人\"",[460,172199,3754],{"class":466},[460,172201,172202,172204],{"class":462,"line":494},[460,172203,3763],{"class":887},[460,172205,20257],{"class":466},[460,172207,172208,172210,172212,172215],{"class":462,"line":500},[460,172209,47706],{"class":900},[460,172211,2174],{"class":466},[460,172213,172214],{"class":1353},"\"未成年人\"",[460,172216,3754],{"class":466},[14,172218,172219],{},"执行逻辑：",[103,172221,172222,172228,172233],{},[43,172223,172224,172225,172227],{},"条件成立，执行 ",[457,172226,18100],{}," 代码块。",[43,172229,172230,172231,172227],{},"条件不成立，执行 ",[457,172232,3763],{},[43,172234,172235],{},"两个代码块只会执行其中一个。",[18,172237,172239],{"id":172238},"_34-if-elif-else","3.4 if elif else",[14,172241,172242],{},"多条件判断：",[451,172244,172246],{"className":46787,"code":172245,"language":46789,"meta":32,"style":32},"score = int(input(\"请输入成绩:\"))\n\nif score >= 90:\n    print(\"优秀\")\nelif score >= 80:\n    print(\"良好\")\nelif score >= 60:\n    print(\"及格\")\nelse:\n    print(\"不及格\")\n",[457,172247,172248,172266,172270,172284,172295,172309,172320,172333,172344,172350],{"__ignoreMap":32},[460,172249,172250,172252,172254,172256,172258,172260,172262,172264],{"class":462,"line":463},[460,172251,169851],{"class":466},[460,172253,894],{"class":887},[460,172255,18917],{"class":900},[460,172257,2174],{"class":466},[460,172259,70068],{"class":900},[460,172261,2174],{"class":466},[460,172263,166902],{"class":1353},[460,172265,6311],{"class":466},[460,172267,172268],{"class":462,"line":476},[460,172269,522],{"emptyLinePlaceholder":521},[460,172271,172272,172274,172277,172279,172282],{"class":462,"line":482},[460,172273,18100],{"class":887},[460,172275,172276],{"class":466}," score ",[460,172278,3738],{"class":887},[460,172280,172281],{"class":900}," 90",[460,172283,20257],{"class":466},[460,172285,172286,172288,172290,172293],{"class":462,"line":488},[460,172287,47706],{"class":900},[460,172289,2174],{"class":466},[460,172291,172292],{"class":1353},"\"优秀\"",[460,172294,3754],{"class":466},[460,172296,172297,172300,172302,172304,172307],{"class":462,"line":494},[460,172298,172299],{"class":887},"elif",[460,172301,172276],{"class":466},[460,172303,3738],{"class":887},[460,172305,172306],{"class":900}," 80",[460,172308,20257],{"class":466},[460,172310,172311,172313,172315,172318],{"class":462,"line":500},[460,172312,47706],{"class":900},[460,172314,2174],{"class":466},[460,172316,172317],{"class":1353},"\"良好\"",[460,172319,3754],{"class":466},[460,172321,172322,172324,172326,172328,172331],{"class":462,"line":506},[460,172323,172299],{"class":887},[460,172325,172276],{"class":466},[460,172327,3738],{"class":887},[460,172329,172330],{"class":900}," 60",[460,172332,20257],{"class":466},[460,172334,172335,172337,172339,172342],{"class":462,"line":512},[460,172336,47706],{"class":900},[460,172338,2174],{"class":466},[460,172340,172341],{"class":1353},"\"及格\"",[460,172343,3754],{"class":466},[460,172345,172346,172348],{"class":462,"line":518},[460,172347,3763],{"class":887},[460,172349,20257],{"class":466},[460,172351,172352,172354,172356,172359],{"class":462,"line":525},[460,172353,47706],{"class":900},[460,172355,2174],{"class":466},[460,172357,172358],{"class":1353},"\"不及格\"",[460,172360,3754],{"class":466},[14,172362,172363],{},"注意判断顺序很重要。",[14,172365,172366,172367,172370],{},"如果把 ",[457,172368,172369],{},"score >= 60"," 放在最前面：",[451,172372,172374],{"className":46787,"code":172373,"language":46789,"meta":32,"style":32},"if score >= 60:\n    print(\"及格\")\nelif score >= 90:\n    print(\"优秀\")\n",[457,172375,172376,172388,172398,172410],{"__ignoreMap":32},[460,172377,172378,172380,172382,172384,172386],{"class":462,"line":463},[460,172379,18100],{"class":887},[460,172381,172276],{"class":466},[460,172383,3738],{"class":887},[460,172385,172330],{"class":900},[460,172387,20257],{"class":466},[460,172389,172390,172392,172394,172396],{"class":462,"line":476},[460,172391,47706],{"class":900},[460,172393,2174],{"class":466},[460,172395,172341],{"class":1353},[460,172397,3754],{"class":466},[460,172399,172400,172402,172404,172406,172408],{"class":462,"line":482},[460,172401,172299],{"class":887},[460,172403,172276],{"class":466},[460,172405,3738],{"class":887},[460,172407,172281],{"class":900},[460,172409,20257],{"class":466},[460,172411,172412,172414,172416,172418],{"class":462,"line":488},[460,172413,47706],{"class":900},[460,172415,2174],{"class":466},[460,172417,172292],{"class":1353},[460,172419,3754],{"class":466},[14,172421,172422,172423,172425],{},"成绩 95 会先满足 ",[457,172424,172369],{},"，后面的优秀分支就不会执行。",[18,172427,172429],{"id":172428},"_35-判断语句嵌套","3.5 判断语句嵌套",[14,172431,172432],{},"嵌套判断就是在一个判断内部再写判断。",[451,172434,172436],{"className":46787,"code":172435,"language":46789,"meta":32,"style":32},"age = int(input(\"请输入年龄:\"))\nhas_ticket = input(\"是否有票(y\u002Fn):\")\n\nif age >= 18:\n    if has_ticket == \"y\":\n        print(\"可以进入\")\n    else:\n        print(\"请先买票\")\nelse:\n    print(\"未成年人禁止进入\")\n",[457,172437,172438,172456,172471,172475,172487,172501,172511,172518,172529,172535],{"__ignoreMap":32},[460,172439,172440,172442,172444,172446,172448,172450,172452,172454],{"class":462,"line":463},[460,172441,161039],{"class":466},[460,172443,894],{"class":887},[460,172445,18917],{"class":900},[460,172447,2174],{"class":466},[460,172449,70068],{"class":900},[460,172451,2174],{"class":466},[460,172453,166887],{"class":1353},[460,172455,6311],{"class":466},[460,172457,172458,172460,172462,172464,172466,172469],{"class":462,"line":476},[460,172459,170854],{"class":466},[460,172461,894],{"class":887},[460,172463,76796],{"class":900},[460,172465,2174],{"class":466},[460,172467,172468],{"class":1353},"\"是否有票(y\u002Fn):\"",[460,172470,3754],{"class":466},[460,172472,172473],{"class":462,"line":482},[460,172474,522],{"emptyLinePlaceholder":521},[460,172476,172477,172479,172481,172483,172485],{"class":462,"line":488},[460,172478,18100],{"class":887},[460,172480,32157],{"class":466},[460,172482,3738],{"class":887},[460,172484,170778],{"class":900},[460,172486,20257],{"class":466},[460,172488,172489,172491,172494,172496,172499],{"class":462,"line":494},[460,172490,19622],{"class":887},[460,172492,172493],{"class":466}," has_ticket ",[460,172495,19471],{"class":887},[460,172497,172498],{"class":1353}," \"y\"",[460,172500,20257],{"class":466},[460,172502,172503,172505,172507,172509],{"class":462,"line":500},[460,172504,48856],{"class":900},[460,172506,2174],{"class":466},[460,172508,172140],{"class":1353},[460,172510,3754],{"class":466},[460,172512,172513,172516],{"class":462,"line":506},[460,172514,172515],{"class":887},"    else",[460,172517,20257],{"class":466},[460,172519,172520,172522,172524,172527],{"class":462,"line":512},[460,172521,48856],{"class":900},[460,172523,2174],{"class":466},[460,172525,172526],{"class":1353},"\"请先买票\"",[460,172528,3754],{"class":466},[460,172530,172531,172533],{"class":462,"line":518},[460,172532,3763],{"class":887},[460,172534,20257],{"class":466},[460,172536,172537,172539,172541,172544],{"class":462,"line":525},[460,172538,47706],{"class":900},[460,172540,2174],{"class":466},[460,172542,172543],{"class":1353},"\"未成年人禁止进入\"",[460,172545,3754],{"class":466},[14,172547,172548],{},"嵌套层级不要太深，超过 3 层就应该考虑拆成函数或调整条件。",[18,172550,172552],{"id":172551},"_36-逻辑运算组合条件","3.6 逻辑运算组合条件",[23,172554,172556],{"id":172555},"_361-and","3.6.1 and",[14,172558,172559],{},"两个条件都成立才成立。",[451,172561,172563],{"className":46787,"code":172562,"language":46789,"meta":32,"style":32},"age = 20\nhas_ticket = True\n\nif age >= 18 and has_ticket:\n    print(\"可以进入\")\n",[457,172564,172565,172573,172581,172585,172600],{"__ignoreMap":32},[460,172566,172567,172569,172571],{"class":462,"line":463},[460,172568,161039],{"class":466},[460,172570,894],{"class":887},[460,172572,11874],{"class":900},[460,172574,172575,172577,172579],{"class":462,"line":476},[460,172576,170854],{"class":466},[460,172578,894],{"class":887},[460,172580,168092],{"class":900},[460,172582,172583],{"class":462,"line":482},[460,172584,522],{"emptyLinePlaceholder":521},[460,172586,172587,172589,172591,172593,172595,172597],{"class":462,"line":488},[460,172588,18100],{"class":887},[460,172590,32157],{"class":466},[460,172592,3738],{"class":887},[460,172594,170778],{"class":900},[460,172596,134922],{"class":887},[460,172598,172599],{"class":466}," has_ticket:\n",[460,172601,172602,172604,172606,172608],{"class":462,"line":494},[460,172603,47706],{"class":900},[460,172605,2174],{"class":466},[460,172607,172140],{"class":1353},[460,172609,3754],{"class":466},[23,172611,172613],{"id":172612},"_362-or","3.6.2 or",[14,172615,172616],{},"只要一个条件成立就成立。",[451,172618,172620],{"className":46787,"code":172619,"language":46789,"meta":32,"style":32},"is_vip = False\ncoupon = True\n\nif is_vip or coupon:\n    print(\"可以享受优惠\")\n",[457,172621,172622,172631,172640,172644,172656],{"__ignoreMap":32},[460,172623,172624,172627,172629],{"class":462,"line":463},[460,172625,172626],{"class":466},"is_vip ",[460,172628,894],{"class":887},[460,172630,140300],{"class":900},[460,172632,172633,172636,172638],{"class":462,"line":476},[460,172634,172635],{"class":466},"coupon ",[460,172637,894],{"class":887},[460,172639,168092],{"class":900},[460,172641,172642],{"class":462,"line":482},[460,172643,522],{"emptyLinePlaceholder":521},[460,172645,172646,172648,172651,172653],{"class":462,"line":488},[460,172647,18100],{"class":887},[460,172649,172650],{"class":466}," is_vip ",[460,172652,129583],{"class":887},[460,172654,172655],{"class":466}," coupon:\n",[460,172657,172658,172660,172662,172665],{"class":462,"line":494},[460,172659,47706],{"class":900},[460,172661,2174],{"class":466},[460,172663,172664],{"class":1353},"\"可以享受优惠\"",[460,172666,3754],{"class":466},[23,172668,172670],{"id":172669},"_363-not","3.6.3 not",[14,172672,172673],{},"取反。",[451,172675,172677],{"className":46787,"code":172676,"language":46789,"meta":32,"style":32},"is_closed = False\n\nif not is_closed:\n    print(\"店铺营业中\")\n",[457,172678,172679,172688,172692,172701],{"__ignoreMap":32},[460,172680,172681,172684,172686],{"class":462,"line":463},[460,172682,172683],{"class":466},"is_closed ",[460,172685,894],{"class":887},[460,172687,140300],{"class":900},[460,172689,172690],{"class":462,"line":476},[460,172691,522],{"emptyLinePlaceholder":521},[460,172693,172694,172696,172698],{"class":462,"line":482},[460,172695,18100],{"class":887},[460,172697,55235],{"class":887},[460,172699,172700],{"class":466}," is_closed:\n",[460,172702,172703,172705,172707,172710],{"class":462,"line":488},[460,172704,47706],{"class":900},[460,172706,2174],{"class":466},[460,172708,172709],{"class":1353},"\"店铺营业中\"",[460,172711,3754],{"class":466},[18,172713,172715],{"id":172714},"_37-链式比较","3.7 链式比较",[14,172717,172718],{},"Python 支持链式比较：",[451,172720,172722],{"className":46787,"code":172721,"language":46789,"meta":32,"style":32},"score = 85\n\nif 0 \u003C= score \u003C= 100:\n    print(\"成绩合法\")\n",[457,172723,172724,172733,172737,172754],{"__ignoreMap":32},[460,172725,172726,172728,172730],{"class":462,"line":463},[460,172727,169851],{"class":466},[460,172729,894],{"class":887},[460,172731,172732],{"class":900}," 85\n",[460,172734,172735],{"class":462,"line":476},[460,172736,522],{"emptyLinePlaceholder":521},[460,172738,172739,172741,172743,172746,172748,172750,172752],{"class":462,"line":482},[460,172740,18100],{"class":887},[460,172742,2224],{"class":900},[460,172744,172745],{"class":887}," \u003C=",[460,172747,172276],{"class":466},[460,172749,3748],{"class":887},[460,172751,3751],{"class":900},[460,172753,20257],{"class":466},[460,172755,172756,172758,172760,172763],{"class":462,"line":488},[460,172757,47706],{"class":900},[460,172759,2174],{"class":466},[460,172761,172762],{"class":1353},"\"成绩合法\"",[460,172764,3754],{"class":466},[14,172766,172767],{},"等价于：",[451,172769,172771],{"className":46787,"code":172770,"language":46789,"meta":32,"style":32},"if score >= 0 and score \u003C= 100:\n    print(\"成绩合法\")\n",[457,172772,172773,172793],{"__ignoreMap":32},[460,172774,172775,172777,172779,172781,172783,172785,172787,172789,172791],{"class":462,"line":463},[460,172776,18100],{"class":887},[460,172778,172276],{"class":466},[460,172780,3738],{"class":887},[460,172782,2224],{"class":900},[460,172784,134922],{"class":887},[460,172786,172276],{"class":466},[460,172788,3748],{"class":887},[460,172790,3751],{"class":900},[460,172792,20257],{"class":466},[460,172794,172795,172797,172799,172801],{"class":462,"line":476},[460,172796,47706],{"class":900},[460,172798,2174],{"class":466},[460,172800,172762],{"class":1353},[460,172802,3754],{"class":466},[18,172804,172806],{"id":172805},"_38-真值和假值","3.8 真值和假值",[14,172808,130960,172809,172811],{},[457,172810,18100],{}," 中，不只有布尔值能做条件。很多对象也能被判断为真或假。",[14,172813,172814],{},"假值：",[451,172816,172818],{"className":46787,"code":172817,"language":46789,"meta":32,"style":32},"False\nNone\n0\n0.0\n\"\"\n[]\n()\n{}\nset()\n",[457,172819,172820,172824,172829,172833,172837,172842,172846,172850,172855],{"__ignoreMap":32},[460,172821,172822],{"class":462,"line":463},[460,172823,172010],{"class":900},[460,172825,172826],{"class":462,"line":476},[460,172827,172828],{"class":900},"None\n",[460,172830,172831],{"class":462,"line":482},[460,172832,19606],{"class":900},[460,172834,172835],{"class":462,"line":488},[460,172836,48747],{"class":900},[460,172838,172839],{"class":462,"line":494},[460,172840,172841],{"class":1353},"\"\"\n",[460,172843,172844],{"class":462,"line":500},[460,172845,48762],{"class":466},[460,172847,172848],{"class":462,"line":506},[460,172849,10758],{"class":466},[460,172851,172852],{"class":462,"line":512},[460,172853,172854],{"class":466},"{}\n",[460,172856,172857,172859],{"class":462,"line":518},[460,172858,169783],{"class":900},[460,172860,10758],{"class":466},[14,172862,31586],{},[451,172864,172866],{"className":46787,"code":172865,"language":46789,"meta":32,"style":32},"name = input(\"请输入姓名:\")\n\nif name:\n    print(f\"你好，{name}\")\nelse:\n    print(\"姓名不能为空\")\n",[457,172867,172868,172882,172886,172893,172913,172919],{"__ignoreMap":32},[460,172869,172870,172872,172874,172876,172878,172880],{"class":462,"line":463},[460,172871,161029],{"class":466},[460,172873,894],{"class":887},[460,172875,76796],{"class":900},[460,172877,2174],{"class":466},[460,172879,166872],{"class":1353},[460,172881,3754],{"class":466},[460,172883,172884],{"class":462,"line":476},[460,172885,522],{"emptyLinePlaceholder":521},[460,172887,172888,172890],{"class":462,"line":482},[460,172889,18100],{"class":887},[460,172891,172892],{"class":466}," name:\n",[460,172894,172895,172897,172899,172901,172903,172905,172907,172909,172911],{"class":462,"line":488},[460,172896,47706],{"class":900},[460,172898,2174],{"class":466},[460,172900,16804],{"class":887},[460,172902,171547],{"class":1353},[460,172904,17607],{"class":900},[460,172906,3440],{"class":466},[460,172908,612],{"class":900},[460,172910,16993],{"class":1353},[460,172912,3754],{"class":466},[460,172914,172915,172917],{"class":462,"line":494},[460,172916,3763],{"class":887},[460,172918,20257],{"class":466},[460,172920,172921,172923,172925,172928],{"class":462,"line":500},[460,172922,47706],{"class":900},[460,172924,2174],{"class":466},[460,172926,172927],{"class":1353},"\"姓名不能为空\"",[460,172929,3754],{"class":466},[18,172931,172933],{"id":172932},"_39-match语句","3.9 match语句",[14,172935,172936,172937,172939],{},"Python 3.10 开始支持 ",[457,172938,87404],{},"。它适合处理固定选项。",[451,172941,172943],{"className":46787,"code":172942,"language":46789,"meta":32,"style":32},"command = input(\"请输入命令:\")\n\nmatch command:\n    case \"start\":\n        print(\"启动\")\n    case \"stop\":\n        print(\"停止\")\n    case \"restart\":\n        print(\"重启\")\n    case _:\n        print(\"未知命令\")\n",[457,172944,172945,172961,172965,172972,172982,172993,173002,173013,173022,173033,173040],{"__ignoreMap":32},[460,172946,172947,172950,172952,172954,172956,172959],{"class":462,"line":463},[460,172948,172949],{"class":466},"command ",[460,172951,894],{"class":887},[460,172953,76796],{"class":900},[460,172955,2174],{"class":466},[460,172957,172958],{"class":1353},"\"请输入命令:\"",[460,172960,3754],{"class":466},[460,172962,172963],{"class":462,"line":476},[460,172964,522],{"emptyLinePlaceholder":521},[460,172966,172967,172969],{"class":462,"line":482},[460,172968,87404],{"class":887},[460,172970,172971],{"class":466}," command:\n",[460,172973,172974,172977,172980],{"class":462,"line":488},[460,172975,172976],{"class":887},"    case",[460,172978,172979],{"class":1353}," \"start\"",[460,172981,20257],{"class":466},[460,172983,172984,172986,172988,172991],{"class":462,"line":494},[460,172985,48856],{"class":900},[460,172987,2174],{"class":466},[460,172989,172990],{"class":1353},"\"启动\"",[460,172992,3754],{"class":466},[460,172994,172995,172997,173000],{"class":462,"line":500},[460,172996,172976],{"class":887},[460,172998,172999],{"class":1353}," \"stop\"",[460,173001,20257],{"class":466},[460,173003,173004,173006,173008,173011],{"class":462,"line":506},[460,173005,48856],{"class":900},[460,173007,2174],{"class":466},[460,173009,173010],{"class":1353},"\"停止\"",[460,173012,3754],{"class":466},[460,173014,173015,173017,173020],{"class":462,"line":512},[460,173016,172976],{"class":887},[460,173018,173019],{"class":1353}," \"restart\"",[460,173021,20257],{"class":466},[460,173023,173024,173026,173028,173031],{"class":462,"line":518},[460,173025,48856],{"class":900},[460,173027,2174],{"class":466},[460,173029,173030],{"class":1353},"\"重启\"",[460,173032,3754],{"class":466},[460,173034,173035,173037],{"class":462,"line":525},[460,173036,172976],{"class":887},[460,173038,173039],{"class":466}," _:\n",[460,173041,173042,173044,173046,173049],{"class":462,"line":531},[460,173043,48856],{"class":900},[460,173045,2174],{"class":466},[460,173047,173048],{"class":1353},"\"未知命令\"",[460,173050,3754],{"class":466},[14,173052,173053,173054,173056,173057,173059],{},"入门阶段掌握 ",[457,173055,169151],{}," 更重要，",[457,173058,87404],{}," 可以作为补充。",[18,173061,173063],{"id":173062},"_310-小案例成绩等级","3.10 小案例：成绩等级",[14,173065,137785],{},[103,173067,173068,173071,173074],{},[43,173069,173070],{},"输入成绩。",[43,173072,173073],{},"判断成绩是否合法。",[43,173075,173076],{},"输出等级。",[14,173078,26500],{},[451,173080,173082],{"className":46787,"code":173081,"language":46789,"meta":32,"style":32},"score = float(input(\"请输入成绩:\"))\n\nif not 0 \u003C= score \u003C= 100:\n    print(\"成绩不合法\")\nelif score >= 90:\n    print(\"等级:A\")\nelif score >= 80:\n    print(\"等级:B\")\nelif score >= 70:\n    print(\"等级:C\")\nelif score >= 60:\n    print(\"等级:D\")\nelse:\n    print(\"等级:E\")\n",[457,173083,173084,173102,173106,173124,173135,173147,173158,173170,173181,173194,173205,173217,173228,173234],{"__ignoreMap":32},[460,173085,173086,173088,173090,173092,173094,173096,173098,173100],{"class":462,"line":463},[460,173087,169851],{"class":466},[460,173089,894],{"class":887},[460,173091,124290],{"class":900},[460,173093,2174],{"class":466},[460,173095,70068],{"class":900},[460,173097,2174],{"class":466},[460,173099,166902],{"class":1353},[460,173101,6311],{"class":466},[460,173103,173104],{"class":462,"line":476},[460,173105,522],{"emptyLinePlaceholder":521},[460,173107,173108,173110,173112,173114,173116,173118,173120,173122],{"class":462,"line":482},[460,173109,18100],{"class":887},[460,173111,55235],{"class":887},[460,173113,2224],{"class":900},[460,173115,172745],{"class":887},[460,173117,172276],{"class":466},[460,173119,3748],{"class":887},[460,173121,3751],{"class":900},[460,173123,20257],{"class":466},[460,173125,173126,173128,173130,173133],{"class":462,"line":488},[460,173127,47706],{"class":900},[460,173129,2174],{"class":466},[460,173131,173132],{"class":1353},"\"成绩不合法\"",[460,173134,3754],{"class":466},[460,173136,173137,173139,173141,173143,173145],{"class":462,"line":494},[460,173138,172299],{"class":887},[460,173140,172276],{"class":466},[460,173142,3738],{"class":887},[460,173144,172281],{"class":900},[460,173146,20257],{"class":466},[460,173148,173149,173151,173153,173156],{"class":462,"line":500},[460,173150,47706],{"class":900},[460,173152,2174],{"class":466},[460,173154,173155],{"class":1353},"\"等级:A\"",[460,173157,3754],{"class":466},[460,173159,173160,173162,173164,173166,173168],{"class":462,"line":506},[460,173161,172299],{"class":887},[460,173163,172276],{"class":466},[460,173165,3738],{"class":887},[460,173167,172306],{"class":900},[460,173169,20257],{"class":466},[460,173171,173172,173174,173176,173179],{"class":462,"line":512},[460,173173,47706],{"class":900},[460,173175,2174],{"class":466},[460,173177,173178],{"class":1353},"\"等级:B\"",[460,173180,3754],{"class":466},[460,173182,173183,173185,173187,173189,173192],{"class":462,"line":518},[460,173184,172299],{"class":887},[460,173186,172276],{"class":466},[460,173188,3738],{"class":887},[460,173190,173191],{"class":900}," 70",[460,173193,20257],{"class":466},[460,173195,173196,173198,173200,173203],{"class":462,"line":525},[460,173197,47706],{"class":900},[460,173199,2174],{"class":466},[460,173201,173202],{"class":1353},"\"等级:C\"",[460,173204,3754],{"class":466},[460,173206,173207,173209,173211,173213,173215],{"class":462,"line":531},[460,173208,172299],{"class":887},[460,173210,172276],{"class":466},[460,173212,3738],{"class":887},[460,173214,172330],{"class":900},[460,173216,20257],{"class":466},[460,173218,173219,173221,173223,173226],{"class":462,"line":537},[460,173220,47706],{"class":900},[460,173222,2174],{"class":466},[460,173224,173225],{"class":1353},"\"等级:D\"",[460,173227,3754],{"class":466},[460,173229,173230,173232],{"class":462,"line":543},[460,173231,3763],{"class":887},[460,173233,20257],{"class":466},[460,173235,173236,173238,173240,173243],{"class":462,"line":549},[460,173237,47706],{"class":900},[460,173239,2174],{"class":466},[460,173241,173242],{"class":1353},"\"等级:E\"",[460,173244,3754],{"class":466},[18,173246,173248],{"id":173247},"_311-小案例会员折扣","3.11 小案例：会员折扣",[14,173250,137785],{},[103,173252,173253,173256,173259,173262],{},[43,173254,173255],{},"输入消费金额。",[43,173257,173258],{},"输入会员等级，普通、银卡、金卡。",[43,173260,173261],{},"普通不打折，银卡 9 折，金卡 8 折。",[43,173263,173264],{},"满 500 再减 50。",[14,173266,26500],{},[451,173268,173270],{"className":46787,"code":173269,"language":46789,"meta":32,"style":32},"amount = float(input(\"请输入消费金额:\"))\nlevel = input(\"请输入会员等级(普通\u002F银卡\u002F金卡):\")\n\ndiscount = 1\n\nif level == \"银卡\":\n    discount = 0.9\nelif level == \"金卡\":\n    discount = 0.8\nelif level == \"普通\":\n    discount = 1\nelse:\n    print(\"会员等级输入错误，按普通会员计算\")\n\npay = amount * discount\n\nif pay >= 500:\n    pay -= 50\n\nprint(f\"应付金额:{pay:.2f}元\")\n",[457,173271,173272,173292,173308,173312,173320,173324,173338,173348,173361,173370,173383,173391,173397,173408,173412,173426,173430,173444,173454,173458],{"__ignoreMap":32},[460,173273,173274,173277,173279,173281,173283,173285,173287,173290],{"class":462,"line":463},[460,173275,173276],{"class":466},"amount ",[460,173278,894],{"class":887},[460,173280,124290],{"class":900},[460,173282,2174],{"class":466},[460,173284,70068],{"class":900},[460,173286,2174],{"class":466},[460,173288,173289],{"class":1353},"\"请输入消费金额:\"",[460,173291,6311],{"class":466},[460,173293,173294,173297,173299,173301,173303,173306],{"class":462,"line":476},[460,173295,173296],{"class":466},"level ",[460,173298,894],{"class":887},[460,173300,76796],{"class":900},[460,173302,2174],{"class":466},[460,173304,173305],{"class":1353},"\"请输入会员等级(普通\u002F银卡\u002F金卡):\"",[460,173307,3754],{"class":466},[460,173309,173310],{"class":462,"line":482},[460,173311,522],{"emptyLinePlaceholder":521},[460,173313,173314,173316,173318],{"class":462,"line":488},[460,173315,171729],{"class":466},[460,173317,894],{"class":887},[460,173319,71910],{"class":900},[460,173321,173322],{"class":462,"line":494},[460,173323,522],{"emptyLinePlaceholder":521},[460,173325,173326,173328,173331,173333,173336],{"class":462,"line":500},[460,173327,18100],{"class":887},[460,173329,173330],{"class":466}," level ",[460,173332,19471],{"class":887},[460,173334,173335],{"class":1353}," \"银卡\"",[460,173337,20257],{"class":466},[460,173339,173340,173343,173345],{"class":462,"line":506},[460,173341,173342],{"class":466},"    discount ",[460,173344,894],{"class":887},[460,173346,173347],{"class":900}," 0.9\n",[460,173349,173350,173352,173354,173356,173359],{"class":462,"line":512},[460,173351,172299],{"class":887},[460,173353,173330],{"class":466},[460,173355,19471],{"class":887},[460,173357,173358],{"class":1353}," \"金卡\"",[460,173360,20257],{"class":466},[460,173362,173363,173365,173367],{"class":462,"line":518},[460,173364,173342],{"class":466},[460,173366,894],{"class":887},[460,173368,173369],{"class":900}," 0.8\n",[460,173371,173372,173374,173376,173378,173381],{"class":462,"line":525},[460,173373,172299],{"class":887},[460,173375,173330],{"class":466},[460,173377,19471],{"class":887},[460,173379,173380],{"class":1353}," \"普通\"",[460,173382,20257],{"class":466},[460,173384,173385,173387,173389],{"class":462,"line":531},[460,173386,173342],{"class":466},[460,173388,894],{"class":887},[460,173390,71910],{"class":900},[460,173392,173393,173395],{"class":462,"line":537},[460,173394,3763],{"class":887},[460,173396,20257],{"class":466},[460,173398,173399,173401,173403,173406],{"class":462,"line":543},[460,173400,47706],{"class":900},[460,173402,2174],{"class":466},[460,173404,173405],{"class":1353},"\"会员等级输入错误，按普通会员计算\"",[460,173407,3754],{"class":466},[460,173409,173410],{"class":462,"line":549},[460,173411,522],{"emptyLinePlaceholder":521},[460,173413,173414,173417,173419,173422,173424],{"class":462,"line":555},[460,173415,173416],{"class":466},"pay ",[460,173418,894],{"class":887},[460,173420,173421],{"class":466}," amount ",[460,173423,8320],{"class":887},[460,173425,171768],{"class":466},[460,173427,173428],{"class":462,"line":560},[460,173429,522],{"emptyLinePlaceholder":521},[460,173431,173432,173434,173437,173439,173442],{"class":462,"line":566},[460,173433,18100],{"class":887},[460,173435,173436],{"class":466}," pay ",[460,173438,3738],{"class":887},[460,173440,173441],{"class":900}," 500",[460,173443,20257],{"class":466},[460,173445,173446,173449,173451],{"class":462,"line":572},[460,173447,173448],{"class":466},"    pay ",[460,173450,164745],{"class":887},[460,173452,173453],{"class":900}," 50\n",[460,173455,173456],{"class":462,"line":578},[460,173457,522],{"emptyLinePlaceholder":521},[460,173459,173460,173462,173464,173466,173468,173470,173473,173475,173477,173479],{"class":462,"line":812},[460,173461,46824],{"class":900},[460,173463,2174],{"class":466},[460,173465,16804],{"class":887},[460,173467,171849],{"class":1353},[460,173469,17607],{"class":900},[460,173471,173472],{"class":466},"pay",[460,173474,171652],{"class":887},[460,173476,612],{"class":900},[460,173478,171505],{"class":1353},[460,173480,3754],{"class":466},[18,173482,173484],{"id":173483},"_312-易错点","3.12 易错点",[103,173486,173487,173490,173493,173496,173501],{},[43,173488,173489],{},"冒号不能漏。",[43,173491,173492],{},"缩进必须统一，不能一会儿 Tab 一会儿空格。",[43,173494,173495],{},"多分支判断要注意顺序。",[43,173497,173498,173499,44794],{},"判断相等用 ",[457,173500,19471],{},[43,173502,173503],{},"字符串比较区分大小写：",[451,173505,173507],{"className":46787,"code":173506,"language":46789,"meta":32,"style":32},"\"Y\" == \"y\"  # False\n",[457,173508,173509],{"__ignoreMap":32},[460,173510,173511,173514,173516,173518],{"class":462,"line":463},[460,173512,173513],{"class":1353},"\"Y\"",[460,173515,116052],{"class":887},[460,173517,172498],{"class":1353},[460,173519,173520],{"class":942},"  # False\n",[14,173522,173523],{},"可转换后再判断：",[451,173525,173527],{"className":46787,"code":173526,"language":46789,"meta":32,"style":32},"answer = input(\"是否继续(y\u002Fn):\").lower()\nif answer == \"y\":\n    print(\"继续\")\n",[457,173528,173529,173546,173559],{"__ignoreMap":32},[460,173530,173531,173534,173536,173538,173540,173543],{"class":462,"line":463},[460,173532,173533],{"class":466},"answer ",[460,173535,894],{"class":887},[460,173537,76796],{"class":900},[460,173539,2174],{"class":466},[460,173541,173542],{"class":1353},"\"是否继续(y\u002Fn):\"",[460,173544,173545],{"class":466},").lower()\n",[460,173547,173548,173550,173553,173555,173557],{"class":462,"line":476},[460,173549,18100],{"class":887},[460,173551,173552],{"class":466}," answer ",[460,173554,19471],{"class":887},[460,173556,172498],{"class":1353},[460,173558,20257],{"class":466},[460,173560,173561,173563,173565,173568],{"class":462,"line":482},[460,173562,47706],{"class":900},[460,173564,2174],{"class":466},[460,173566,173567],{"class":1353},"\"继续\"",[460,173569,3754],{"class":466},[18,173571,173573],{"id":173572},"_313-本章练习","3.13 本章练习",[103,173575,173576,173579,173582,173585,173595],{},[43,173577,173578],{},"输入年龄，判断是否成年。",[43,173580,173581],{},"输入年份，判断是否为闰年。",[43,173583,173584],{},"输入三个数字，输出最大值。",[43,173586,173587,173588,173591,173592,173594],{},"写登录判断：用户名是 ",[457,173589,173590],{},"admin"," 且密码是 ",[457,173593,31535],{}," 才登录成功。",[43,173596,173597],{},"写 BMI 判断程序，根据 BMI 输出偏瘦、正常、偏胖、肥胖。",[1944,173599,173600],{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":32,"searchDepth":476,"depth":476,"links":173602},[173603,173604,173605,173606,173607,173608,173613,173614,173615,173616,173617,173618,173619],{"id":171991,"depth":476,"text":171992},{"id":172044,"depth":476,"text":172045},{"id":172148,"depth":476,"text":172149},{"id":172238,"depth":476,"text":172239},{"id":172428,"depth":476,"text":172429},{"id":172551,"depth":476,"text":172552,"children":173609},[173610,173611,173612],{"id":172555,"depth":482,"text":172556},{"id":172612,"depth":482,"text":172613},{"id":172669,"depth":482,"text":172670},{"id":172714,"depth":476,"text":172715},{"id":172805,"depth":476,"text":172806},{"id":172932,"depth":476,"text":172933},{"id":173062,"depth":476,"text":173063},{"id":173247,"depth":476,"text":173248},{"id":173483,"depth":476,"text":173484},{"id":173572,"depth":476,"text":173573},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch3",{"title":171983,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch3-判断语句","oDk8-y3MbhdWOUdgOWXuIP5YOyzaLgeTq9n7H6mCe_M",{"id":173626,"title":173627,"body":173628,"description":16682,"extension":16683,"meta":175397,"navigation":521,"path":175398,"seo":175399,"stem":175400,"__hash__":175401},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch4-循环语句.md","4. 循环语句",{"type":7,"value":173629,"toc":175377},[173630,173633,173637,173643,173646,173663,173667,173669,173686,173688,173733,173735,173752,173756,173759,173825,173828,173846,173850,174011,174020,174024,174028,174033,174080,174082,174088,174092,174097,174144,174146,174152,174156,174161,174197,174200,174247,174251,174257,174315,174320,174351,174356,174360,174415,174418,174490,174493,174552,174556,174559,174634,174637,174641,174747,174750,174776,174780,174792,174861,174864,174956,174960,174962,174973,174975,175105,175109,175311,175319,175323,175353,175357,175374],[10,173631,173627],{"id":173632},"_4-循环语句",[18,173634,173636],{"id":173635},"_41-为什么需要循环","4.1 为什么需要循环",[14,173638,173639,173640,173642],{},"如果要输出 1 到 100，不应该写 100 行 ",[457,173641,160965],{},"，而应该用循环。",[14,173644,173645],{},"循环适合处理重复任务：",[103,173647,173648,173651,173654,173657,173660],{},[43,173649,173650],{},"重复输出。",[43,173652,173653],{},"重复输入。",[43,173655,173656],{},"遍历数据。",[43,173658,173659],{},"持续执行菜单。",[43,173661,173662],{},"批量处理文件或数据。",[18,173664,173666],{"id":173665},"_42-while循环","4.2 while循环",[14,173668,5927],{},[451,173670,173672],{"className":46787,"code":173671,"language":46789,"meta":32,"style":32},"while 条件:\n    循环体\n",[457,173673,173674,173681],{"__ignoreMap":32},[460,173675,173676,173678],{"class":462,"line":463},[460,173677,123156],{"class":887},[460,173679,173680],{"class":466}," 条件:\n",[460,173682,173683],{"class":462,"line":476},[460,173684,173685],{"class":466},"    循环体\n",[14,173687,31586],{},[451,173689,173691],{"className":46787,"code":173690,"language":46789,"meta":32,"style":32},"i = 1\n\nwhile i \u003C= 5:\n    print(i)\n    i += 1\n",[457,173692,173693,173701,173705,173717,173724],{"__ignoreMap":32},[460,173694,173695,173697,173699],{"class":462,"line":463},[460,173696,114641],{"class":466},[460,173698,894],{"class":887},[460,173700,71910],{"class":900},[460,173702,173703],{"class":462,"line":476},[460,173704,522],{"emptyLinePlaceholder":521},[460,173706,173707,173709,173711,173713,173715],{"class":462,"line":482},[460,173708,123156],{"class":887},[460,173710,13991],{"class":466},[460,173712,3748],{"class":887},[460,173714,2229],{"class":900},[460,173716,20257],{"class":466},[460,173718,173719,173721],{"class":462,"line":488},[460,173720,47706],{"class":900},[460,173722,173723],{"class":466},"(i)\n",[460,173725,173726,173729,173731],{"class":462,"line":494},[460,173727,173728],{"class":466},"    i ",[460,173730,3467],{"class":887},[460,173732,71910],{"class":900},[14,173734,4635],{},[103,173736,173737,173743,173746,173749],{},[43,173738,173739,173740,44794],{},"判断条件 ",[457,173741,173742],{},"i \u003C= 5",[43,173744,173745],{},"条件成立，执行循环体。",[43,173747,173748],{},"执行完后回到条件判断。",[43,173750,173751],{},"条件不成立，退出循环。",[18,173753,173755],{"id":173754},"_43-while累加","4.3 while累加",[14,173757,173758],{},"计算 1 到 100 的和：",[451,173760,173762],{"className":46787,"code":173761,"language":46789,"meta":32,"style":32},"i = 1\ntotal = 0\n\nwhile i \u003C= 100:\n    total += i\n    i += 1\n\nprint(total)\n",[457,173763,173764,173772,173780,173784,173796,173806,173814,173818],{"__ignoreMap":32},[460,173765,173766,173768,173770],{"class":462,"line":463},[460,173767,114641],{"class":466},[460,173769,894],{"class":887},[460,173771,71910],{"class":900},[460,173773,173774,173776,173778],{"class":462,"line":476},[460,173775,171753],{"class":466},[460,173777,894],{"class":887},[460,173779,13996],{"class":900},[460,173781,173782],{"class":462,"line":482},[460,173783,522],{"emptyLinePlaceholder":521},[460,173785,173786,173788,173790,173792,173794],{"class":462,"line":488},[460,173787,123156],{"class":887},[460,173789,13991],{"class":466},[460,173791,3748],{"class":887},[460,173793,3751],{"class":900},[460,173795,20257],{"class":466},[460,173797,173798,173801,173803],{"class":462,"line":494},[460,173799,173800],{"class":466},"    total ",[460,173802,3467],{"class":887},[460,173804,173805],{"class":466}," i\n",[460,173807,173808,173810,173812],{"class":462,"line":500},[460,173809,173728],{"class":466},[460,173811,3467],{"class":887},[460,173813,71910],{"class":900},[460,173815,173816],{"class":462,"line":506},[460,173817,522],{"emptyLinePlaceholder":521},[460,173819,173820,173822],{"class":462,"line":512},[460,173821,46824],{"class":900},[460,173823,173824],{"class":466},"(total)\n",[14,173826,173827],{},"核心思想：",[103,173829,173830,173835,173840],{},[43,173831,173832,173834],{},[457,173833,17174],{}," 控制循环次数。",[43,173836,173837,173839],{},[457,173838,171854],{}," 保存累加结果。",[43,173841,173842,173843,173845],{},"每轮循环都要更新 ",[457,173844,17174],{},"，否则可能死循环。",[18,173847,173849],{"id":173848},"_44-while猜数字","4.4 while猜数字",[451,173851,173853],{"className":46787,"code":173852,"language":46789,"meta":32,"style":32},"import random\n\nanswer = random.randint(1, 100)\ncount = 0\n\nwhile True:\n    guess = int(input(\"请输入1到100之间的数字:\"))\n    count += 1\n\n    if guess > answer:\n        print(\"猜大了\")\n    elif guess \u003C answer:\n        print(\"猜小了\")\n    else:\n        print(f\"猜对了，一共猜了{count}次\")\n        break\n",[457,173854,173855,173861,173865,173882,173890,173894,173902,173922,173931,173935,173947,173958,173968,173979,173985,174007],{"__ignoreMap":32},[460,173856,173857,173859],{"class":462,"line":463},[460,173858,46801],{"class":887},[460,173860,61632],{"class":466},[460,173862,173863],{"class":462,"line":476},[460,173864,522],{"emptyLinePlaceholder":521},[460,173866,173867,173869,173871,173874,173876,173878,173880],{"class":462,"line":482},[460,173868,173533],{"class":466},[460,173870,894],{"class":887},[460,173872,173873],{"class":466}," random.randint(",[460,173875,901],{"class":900},[460,173877,904],{"class":466},[460,173879,2325],{"class":900},[460,173881,3754],{"class":466},[460,173883,173884,173886,173888],{"class":462,"line":488},[460,173885,161184],{"class":466},[460,173887,894],{"class":887},[460,173889,13996],{"class":900},[460,173891,173892],{"class":462,"line":494},[460,173893,522],{"emptyLinePlaceholder":521},[460,173895,173896,173898,173900],{"class":462,"line":500},[460,173897,123156],{"class":887},[460,173899,109785],{"class":900},[460,173901,20257],{"class":466},[460,173903,173904,173907,173909,173911,173913,173915,173917,173920],{"class":462,"line":506},[460,173905,173906],{"class":466},"    guess ",[460,173908,894],{"class":887},[460,173910,18917],{"class":900},[460,173912,2174],{"class":466},[460,173914,70068],{"class":900},[460,173916,2174],{"class":466},[460,173918,173919],{"class":1353},"\"请输入1到100之间的数字:\"",[460,173921,6311],{"class":466},[460,173923,173924,173927,173929],{"class":462,"line":512},[460,173925,173926],{"class":466},"    count ",[460,173928,3467],{"class":887},[460,173930,71910],{"class":900},[460,173932,173933],{"class":462,"line":518},[460,173934,522],{"emptyLinePlaceholder":521},[460,173936,173937,173939,173942,173944],{"class":462,"line":525},[460,173938,19622],{"class":887},[460,173940,173941],{"class":466}," guess ",[460,173943,17668],{"class":887},[460,173945,173946],{"class":466}," answer:\n",[460,173948,173949,173951,173953,173956],{"class":462,"line":531},[460,173950,48856],{"class":900},[460,173952,2174],{"class":466},[460,173954,173955],{"class":1353},"\"猜大了\"",[460,173957,3754],{"class":466},[460,173959,173960,173962,173964,173966],{"class":462,"line":537},[460,173961,55597],{"class":887},[460,173963,173941],{"class":466},[460,173965,781],{"class":887},[460,173967,173946],{"class":466},[460,173969,173970,173972,173974,173977],{"class":462,"line":543},[460,173971,48856],{"class":900},[460,173973,2174],{"class":466},[460,173975,173976],{"class":1353},"\"猜小了\"",[460,173978,3754],{"class":466},[460,173980,173981,173983],{"class":462,"line":549},[460,173982,172515],{"class":887},[460,173984,20257],{"class":466},[460,173986,173987,173989,173991,173993,173996,173998,174000,174002,174005],{"class":462,"line":555},[460,173988,48856],{"class":900},[460,173990,2174],{"class":466},[460,173992,16804],{"class":887},[460,173994,173995],{"class":1353},"\"猜对了，一共猜了",[460,173997,17607],{"class":900},[460,173999,8191],{"class":466},[460,174001,612],{"class":900},[460,174003,174004],{"class":1353},"次\"",[460,174006,3754],{"class":466},[460,174008,174009],{"class":462,"line":560},[460,174010,48032],{"class":887},[14,174012,174013,174016,174017,174019],{},[457,174014,174015],{},"while True"," 表示无限循环，通常配合 ",[457,174018,18592],{}," 使用。",[18,174021,174023],{"id":174022},"_45-break和continue","4.5 break和continue",[23,174025,174027],{"id":174026},"_451-break","4.5.1 break",[14,174029,174030,174032],{},[457,174031,18592],{}," 直接结束整个循环。",[451,174034,174036],{"className":46787,"code":174035,"language":46789,"meta":32,"style":32},"for i in range(1, 6):\n    if i == 3:\n        break\n    print(i)\n",[457,174037,174038,174058,174070,174074],{"__ignoreMap":32},[460,174039,174040,174042,174044,174046,174048,174050,174052,174054,174056],{"class":462,"line":463},[460,174041,19547],{"class":887},[460,174043,13991],{"class":466},[460,174045,11713],{"class":887},[460,174047,48848],{"class":900},[460,174049,2174],{"class":466},[460,174051,901],{"class":900},[460,174053,904],{"class":466},[460,174055,4064],{"class":900},[460,174057,47194],{"class":466},[460,174059,174060,174062,174064,174066,174068],{"class":462,"line":476},[460,174061,19622],{"class":887},[460,174063,13991],{"class":466},[460,174065,19471],{"class":887},[460,174067,1481],{"class":900},[460,174069,20257],{"class":466},[460,174071,174072],{"class":462,"line":482},[460,174073,48032],{"class":887},[460,174075,174076,174078],{"class":462,"line":488},[460,174077,47706],{"class":900},[460,174079,173723],{"class":466},[14,174081,160950],{},[451,174083,174086],{"className":174084,"code":174085,"language":8391,"meta":32},[21693],"1\n2\n",[457,174087,174085],{"__ignoreMap":32},[23,174089,174091],{"id":174090},"_452-continue","4.5.2 continue",[14,174093,174094,174096],{},[457,174095,169165],{}," 跳过本轮剩余代码，进入下一轮循环。",[451,174098,174100],{"className":46787,"code":174099,"language":46789,"meta":32,"style":32},"for i in range(1, 6):\n    if i == 3:\n        continue\n    print(i)\n",[457,174101,174102,174122,174134,174138],{"__ignoreMap":32},[460,174103,174104,174106,174108,174110,174112,174114,174116,174118,174120],{"class":462,"line":463},[460,174105,19547],{"class":887},[460,174107,13991],{"class":466},[460,174109,11713],{"class":887},[460,174111,48848],{"class":900},[460,174113,2174],{"class":466},[460,174115,901],{"class":900},[460,174117,904],{"class":466},[460,174119,4064],{"class":900},[460,174121,47194],{"class":466},[460,174123,174124,174126,174128,174130,174132],{"class":462,"line":476},[460,174125,19622],{"class":887},[460,174127,13991],{"class":466},[460,174129,19471],{"class":887},[460,174131,1481],{"class":900},[460,174133,20257],{"class":466},[460,174135,174136],{"class":462,"line":482},[460,174137,163005],{"class":887},[460,174139,174140,174142],{"class":462,"line":488},[460,174141,47706],{"class":900},[460,174143,173723],{"class":466},[14,174145,160950],{},[451,174147,174150],{"className":174148,"code":174149,"language":8391,"meta":32},[21693],"1\n2\n4\n5\n",[457,174151,174149],{"__ignoreMap":32},[18,174153,174155],{"id":174154},"_46-for循环","4.6 for循环",[14,174157,174158,174160],{},[457,174159,19547],{}," 常用于遍历序列。",[451,174162,174164],{"className":46787,"code":174163,"language":46789,"meta":32,"style":32},"name = \"python\"\n\nfor ch in name:\n    print(ch)\n",[457,174165,174166,174175,174179,174190],{"__ignoreMap":32},[460,174167,174168,174170,174172],{"class":462,"line":463},[460,174169,161029],{"class":466},[460,174171,894],{"class":887},[460,174173,174174],{"class":1353}," \"python\"\n",[460,174176,174177],{"class":462,"line":476},[460,174178,522],{"emptyLinePlaceholder":521},[460,174180,174181,174183,174186,174188],{"class":462,"line":482},[460,174182,19547],{"class":887},[460,174184,174185],{"class":466}," ch ",[460,174187,11713],{"class":887},[460,174189,172892],{"class":466},[460,174191,174192,174194],{"class":462,"line":488},[460,174193,47706],{"class":900},[460,174195,174196],{"class":466},"(ch)\n",[14,174198,174199],{},"遍历列表：",[451,174201,174203],{"className":46787,"code":174202,"language":46789,"meta":32,"style":32},"students = [\"小明\", \"小红\", \"小刚\"]\n\nfor student in students:\n    print(student)\n",[457,174204,174205,174227,174231,174241],{"__ignoreMap":32},[460,174206,174207,174210,174212,174214,174216,174218,174220,174222,174225],{"class":462,"line":463},[460,174208,174209],{"class":466},"students ",[460,174211,894],{"class":887},[460,174213,897],{"class":466},[460,174215,164381],{"class":1353},[460,174217,904],{"class":466},[460,174219,165429],{"class":1353},[460,174221,904],{"class":466},[460,174223,174224],{"class":1353},"\"小刚\"",[460,174226,13307],{"class":466},[460,174228,174229],{"class":462,"line":476},[460,174230,522],{"emptyLinePlaceholder":521},[460,174232,174233,174235,174237,174239],{"class":462,"line":482},[460,174234,19547],{"class":887},[460,174236,166630],{"class":466},[460,174238,11713],{"class":887},[460,174240,166635],{"class":466},[460,174242,174243,174245],{"class":462,"line":488},[460,174244,47706],{"class":900},[460,174246,164535],{"class":466},[18,174248,174250],{"id":174249},"_47-range函数","4.7 range函数",[14,174252,174253,174256],{},[457,174254,174255],{},"range()"," 用于生成整数序列。",[451,174258,174260],{"className":46787,"code":174259,"language":46789,"meta":32,"style":32},"range(5)          # 0,1,2,3,4\nrange(1, 5)       # 1,2,3,4\nrange(1, 10, 2)   # 1,3,5,7,9\n",[457,174261,174262,174276,174294],{"__ignoreMap":32},[460,174263,174264,174266,174268,174270,174273],{"class":462,"line":463},[460,174265,49743],{"class":900},[460,174267,2174],{"class":466},[460,174269,7290],{"class":900},[460,174271,174272],{"class":466},")          ",[460,174274,174275],{"class":942},"# 0,1,2,3,4\n",[460,174277,174278,174280,174282,174284,174286,174288,174291],{"class":462,"line":476},[460,174279,49743],{"class":900},[460,174281,2174],{"class":466},[460,174283,901],{"class":900},[460,174285,904],{"class":466},[460,174287,7290],{"class":900},[460,174289,174290],{"class":466},")       ",[460,174292,174293],{"class":942},"# 1,2,3,4\n",[460,174295,174296,174298,174300,174302,174304,174306,174308,174310,174312],{"class":462,"line":482},[460,174297,49743],{"class":900},[460,174299,2174],{"class":466},[460,174301,901],{"class":900},[460,174303,904],{"class":466},[460,174305,2096],{"class":900},[460,174307,904],{"class":466},[460,174309,907],{"class":900},[460,174311,170154],{"class":466},[460,174313,174314],{"class":942},"# 1,3,5,7,9\n",[14,174316,174317,174318,41031],{},"配合 ",[457,174319,19547],{},[451,174321,174323],{"className":46787,"code":174322,"language":46789,"meta":32,"style":32},"for i in range(1, 6):\n    print(i)\n",[457,174324,174325,174345],{"__ignoreMap":32},[460,174326,174327,174329,174331,174333,174335,174337,174339,174341,174343],{"class":462,"line":463},[460,174328,19547],{"class":887},[460,174330,13991],{"class":466},[460,174332,11713],{"class":887},[460,174334,48848],{"class":900},[460,174336,2174],{"class":466},[460,174338,901],{"class":900},[460,174340,904],{"class":466},[460,174342,4064],{"class":900},[460,174344,47194],{"class":466},[460,174346,174347,174349],{"class":462,"line":476},[460,174348,47706],{"class":900},[460,174350,173723],{"class":466},[14,174352,25511,174353,174355],{},[457,174354,49743],{}," 的结束值不包含在内。",[18,174357,174359],{"id":174358},"_48-for循环求和","4.8 for循环求和",[451,174361,174363],{"className":46787,"code":174362,"language":46789,"meta":32,"style":32},"total = 0\n\nfor i in range(1, 101):\n    total += i\n\nprint(total)\n",[457,174364,174365,174373,174377,174397,174405,174409],{"__ignoreMap":32},[460,174366,174367,174369,174371],{"class":462,"line":463},[460,174368,171753],{"class":466},[460,174370,894],{"class":887},[460,174372,13996],{"class":900},[460,174374,174375],{"class":462,"line":476},[460,174376,522],{"emptyLinePlaceholder":521},[460,174378,174379,174381,174383,174385,174387,174389,174391,174393,174395],{"class":462,"line":482},[460,174380,19547],{"class":887},[460,174382,13991],{"class":466},[460,174384,11713],{"class":887},[460,174386,48848],{"class":900},[460,174388,2174],{"class":466},[460,174390,901],{"class":900},[460,174392,904],{"class":466},[460,174394,17075],{"class":900},[460,174396,47194],{"class":466},[460,174398,174399,174401,174403],{"class":462,"line":488},[460,174400,173800],{"class":466},[460,174402,3467],{"class":887},[460,174404,173805],{"class":466},[460,174406,174407],{"class":462,"line":494},[460,174408,522],{"emptyLinePlaceholder":521},[460,174410,174411,174413],{"class":462,"line":500},[460,174412,46824],{"class":900},[460,174414,173824],{"class":466},[14,174416,174417],{},"求偶数和：",[451,174419,174421],{"className":46787,"code":174420,"language":46789,"meta":32,"style":32},"total = 0\n\nfor i in range(1, 101):\n    if i % 2 == 0:\n        total += i\n\nprint(total)\n",[457,174422,174423,174431,174435,174455,174471,174480,174484],{"__ignoreMap":32},[460,174424,174425,174427,174429],{"class":462,"line":463},[460,174426,171753],{"class":466},[460,174428,894],{"class":887},[460,174430,13996],{"class":900},[460,174432,174433],{"class":462,"line":476},[460,174434,522],{"emptyLinePlaceholder":521},[460,174436,174437,174439,174441,174443,174445,174447,174449,174451,174453],{"class":462,"line":482},[460,174438,19547],{"class":887},[460,174440,13991],{"class":466},[460,174442,11713],{"class":887},[460,174444,48848],{"class":900},[460,174446,2174],{"class":466},[460,174448,901],{"class":900},[460,174450,904],{"class":466},[460,174452,17075],{"class":900},[460,174454,47194],{"class":466},[460,174456,174457,174459,174461,174463,174465,174467,174469],{"class":462,"line":488},[460,174458,19622],{"class":887},[460,174460,13991],{"class":466},[460,174462,2328],{"class":887},[460,174464,1442],{"class":900},[460,174466,116052],{"class":887},[460,174468,2224],{"class":900},[460,174470,20257],{"class":466},[460,174472,174473,174476,174478],{"class":462,"line":494},[460,174474,174475],{"class":466},"        total ",[460,174477,3467],{"class":887},[460,174479,173805],{"class":466},[460,174481,174482],{"class":462,"line":500},[460,174483,522],{"emptyLinePlaceholder":521},[460,174485,174486,174488],{"class":462,"line":506},[460,174487,46824],{"class":900},[460,174489,173824],{"class":466},[14,174491,174492],{},"也可以：",[451,174494,174496],{"className":46787,"code":174495,"language":46789,"meta":32,"style":32},"total = 0\n\nfor i in range(2, 101, 2):\n    total += i\n\nprint(total)\n",[457,174497,174498,174506,174510,174534,174542,174546],{"__ignoreMap":32},[460,174499,174500,174502,174504],{"class":462,"line":463},[460,174501,171753],{"class":466},[460,174503,894],{"class":887},[460,174505,13996],{"class":900},[460,174507,174508],{"class":462,"line":476},[460,174509,522],{"emptyLinePlaceholder":521},[460,174511,174512,174514,174516,174518,174520,174522,174524,174526,174528,174530,174532],{"class":462,"line":482},[460,174513,19547],{"class":887},[460,174515,13991],{"class":466},[460,174517,11713],{"class":887},[460,174519,48848],{"class":900},[460,174521,2174],{"class":466},[460,174523,907],{"class":900},[460,174525,904],{"class":466},[460,174527,17075],{"class":900},[460,174529,904],{"class":466},[460,174531,907],{"class":900},[460,174533,47194],{"class":466},[460,174535,174536,174538,174540],{"class":462,"line":488},[460,174537,173800],{"class":466},[460,174539,3467],{"class":887},[460,174541,173805],{"class":466},[460,174543,174544],{"class":462,"line":494},[460,174545,522],{"emptyLinePlaceholder":521},[460,174547,174548,174550],{"class":462,"line":500},[460,174549,46824],{"class":900},[460,174551,173824],{"class":466},[18,174553,174555],{"id":174554},"_49-循环嵌套","4.9 循环嵌套",[14,174557,174558],{},"嵌套循环就是循环里面再写循环。",[451,174560,174562],{"className":46787,"code":174561,"language":46789,"meta":32,"style":32},"for i in range(1, 4):\n    for j in range(1, 4):\n        print(f\"i={i}, j={j}\")\n",[457,174563,174564,174584,174604],{"__ignoreMap":32},[460,174565,174566,174568,174570,174572,174574,174576,174578,174580,174582],{"class":462,"line":463},[460,174567,19547],{"class":887},[460,174569,13991],{"class":466},[460,174571,11713],{"class":887},[460,174573,48848],{"class":900},[460,174575,2174],{"class":466},[460,174577,901],{"class":900},[460,174579,904],{"class":466},[460,174581,918],{"class":900},[460,174583,47194],{"class":466},[460,174585,174586,174588,174590,174592,174594,174596,174598,174600,174602],{"class":462,"line":476},[460,174587,19722],{"class":887},[460,174589,25984],{"class":466},[460,174591,11713],{"class":887},[460,174593,48848],{"class":900},[460,174595,2174],{"class":466},[460,174597,901],{"class":900},[460,174599,904],{"class":466},[460,174601,918],{"class":900},[460,174603,47194],{"class":466},[460,174605,174606,174608,174610,174612,174615,174617,174619,174621,174624,174626,174628,174630,174632],{"class":462,"line":482},[460,174607,48856],{"class":900},[460,174609,2174],{"class":466},[460,174611,16804],{"class":887},[460,174613,174614],{"class":1353},"\"i=",[460,174616,17607],{"class":900},[460,174618,17174],{"class":466},[460,174620,612],{"class":900},[460,174622,174623],{"class":1353},", j=",[460,174625,17607],{"class":900},[460,174627,17198],{"class":466},[460,174629,612],{"class":900},[460,174631,16993],{"class":1353},[460,174633,3754],{"class":466},[14,174635,174636],{},"外层循环执行一次，内层循环执行完整一轮。",[18,174638,174640],{"id":174639},"_410-九九乘法表","4.10 九九乘法表",[451,174642,174644],{"className":46787,"code":174643,"language":46789,"meta":32,"style":32},"for i in range(1, 10):\n    for j in range(1, i + 1):\n        print(f\"{j}*{i}={i * j}\", end=\"\\t\")\n    print()\n",[457,174645,174646,174666,174689,174741],{"__ignoreMap":32},[460,174647,174648,174650,174652,174654,174656,174658,174660,174662,174664],{"class":462,"line":463},[460,174649,19547],{"class":887},[460,174651,13991],{"class":466},[460,174653,11713],{"class":887},[460,174655,48848],{"class":900},[460,174657,2174],{"class":466},[460,174659,901],{"class":900},[460,174661,904],{"class":466},[460,174663,2096],{"class":900},[460,174665,47194],{"class":466},[460,174667,174668,174670,174672,174674,174676,174678,174680,174683,174685,174687],{"class":462,"line":476},[460,174669,19722],{"class":887},[460,174671,25984],{"class":466},[460,174673,11713],{"class":887},[460,174675,48848],{"class":900},[460,174677,2174],{"class":466},[460,174679,901],{"class":900},[460,174681,174682],{"class":466},", i ",[460,174684,8495],{"class":887},[460,174686,1400],{"class":900},[460,174688,47194],{"class":466},[460,174690,174691,174693,174695,174697,174699,174701,174703,174705,174707,174709,174711,174713,174715,174717,174719,174721,174723,174725,174727,174729,174731,174733,174735,174737,174739],{"class":462,"line":482},[460,174692,48856],{"class":900},[460,174694,2174],{"class":466},[460,174696,16804],{"class":887},[460,174698,16993],{"class":1353},[460,174700,17607],{"class":900},[460,174702,17198],{"class":466},[460,174704,612],{"class":900},[460,174706,8320],{"class":1353},[460,174708,17607],{"class":900},[460,174710,17174],{"class":466},[460,174712,612],{"class":900},[460,174714,894],{"class":1353},[460,174716,17607],{"class":900},[460,174718,114641],{"class":466},[460,174720,8320],{"class":887},[460,174722,19931],{"class":466},[460,174724,612],{"class":900},[460,174726,16993],{"class":1353},[460,174728,904],{"class":466},[460,174730,62105],{"class":3380},[460,174732,894],{"class":887},[460,174734,16993],{"class":1353},[460,174736,17807],{"class":900},[460,174738,16993],{"class":1353},[460,174740,3754],{"class":466},[460,174742,174743,174745],{"class":462,"line":488},[460,174744,47706],{"class":900},[460,174746,10758],{"class":466},[14,174748,174749],{},"关键点：",[103,174751,174752,174758,174764,174770],{},[43,174753,174754,174755,174757],{},"外层 ",[457,174756,17174],{}," 控制行。",[43,174759,174760,174761,174763],{},"内层 ",[457,174762,17198],{}," 控制列。",[43,174765,174766,174767,174769],{},"每行结束后用 ",[457,174768,160965],{}," 换行。",[43,174771,174772,174775],{},[457,174773,174774],{},"end=\"\\t\""," 让同一行的内容横向排列。",[18,174777,174779],{"id":174778},"_411-循环else","4.11 循环else",[14,174781,174782,174783,174785,174786,174788,174789,174791],{},"Python 的循环可以带 ",[457,174784,3763],{},"。当循环正常结束时执行 ",[457,174787,3763],{},"，如果被 ",[457,174790,18592],{}," 打断，则不执行。",[451,174793,174795],{"className":46787,"code":174794,"language":46789,"meta":32,"style":32},"for i in range(1, 6):\n    if i == 10:\n        print(\"找到了\")\n        break\nelse:\n    print(\"没找到\")\n",[457,174796,174797,174817,174829,174840,174844,174850],{"__ignoreMap":32},[460,174798,174799,174801,174803,174805,174807,174809,174811,174813,174815],{"class":462,"line":463},[460,174800,19547],{"class":887},[460,174802,13991],{"class":466},[460,174804,11713],{"class":887},[460,174806,48848],{"class":900},[460,174808,2174],{"class":466},[460,174810,901],{"class":900},[460,174812,904],{"class":466},[460,174814,4064],{"class":900},[460,174816,47194],{"class":466},[460,174818,174819,174821,174823,174825,174827],{"class":462,"line":476},[460,174820,19622],{"class":887},[460,174822,13991],{"class":466},[460,174824,19471],{"class":887},[460,174826,5231],{"class":900},[460,174828,20257],{"class":466},[460,174830,174831,174833,174835,174838],{"class":462,"line":482},[460,174832,48856],{"class":900},[460,174834,2174],{"class":466},[460,174836,174837],{"class":1353},"\"找到了\"",[460,174839,3754],{"class":466},[460,174841,174842],{"class":462,"line":488},[460,174843,48032],{"class":887},[460,174845,174846,174848],{"class":462,"line":494},[460,174847,3763],{"class":887},[460,174849,20257],{"class":466},[460,174851,174852,174854,174856,174859],{"class":462,"line":500},[460,174853,47706],{"class":900},[460,174855,2174],{"class":466},[460,174857,174858],{"class":1353},"\"没找到\"",[460,174860,3754],{"class":466},[14,174862,174863],{},"常用于搜索。",[451,174865,174867],{"className":46787,"code":174866,"language":46789,"meta":32,"style":32},"names = [\"小明\", \"小红\", \"小刚\"]\ntarget = \"小李\"\n\nfor name in names:\n    if name == target:\n        print(\"找到了\")\n        break\nelse:\n    print(\"没找到\")\n",[457,174868,174869,174890,174899,174903,174915,174926,174936,174940,174946],{"__ignoreMap":32},[460,174870,174871,174874,174876,174878,174880,174882,174884,174886,174888],{"class":462,"line":463},[460,174872,174873],{"class":466},"names ",[460,174875,894],{"class":887},[460,174877,897],{"class":466},[460,174879,164381],{"class":1353},[460,174881,904],{"class":466},[460,174883,165429],{"class":1353},[460,174885,904],{"class":466},[460,174887,174224],{"class":1353},[460,174889,13307],{"class":466},[460,174891,174892,174894,174896],{"class":462,"line":476},[460,174893,126071],{"class":466},[460,174895,894],{"class":887},[460,174897,174898],{"class":1353}," \"小李\"\n",[460,174900,174901],{"class":462,"line":482},[460,174902,522],{"emptyLinePlaceholder":521},[460,174904,174905,174907,174910,174912],{"class":462,"line":488},[460,174906,19547],{"class":887},[460,174908,174909],{"class":466}," name ",[460,174911,11713],{"class":887},[460,174913,174914],{"class":466}," names:\n",[460,174916,174917,174919,174921,174923],{"class":462,"line":494},[460,174918,19622],{"class":887},[460,174920,174909],{"class":466},[460,174922,19471],{"class":887},[460,174924,174925],{"class":466}," target:\n",[460,174927,174928,174930,174932,174934],{"class":462,"line":500},[460,174929,48856],{"class":900},[460,174931,2174],{"class":466},[460,174933,174837],{"class":1353},[460,174935,3754],{"class":466},[460,174937,174938],{"class":462,"line":506},[460,174939,48032],{"class":887},[460,174941,174942,174944],{"class":462,"line":512},[460,174943,3763],{"class":887},[460,174945,20257],{"class":466},[460,174947,174948,174950,174952,174954],{"class":462,"line":518},[460,174949,47706],{"class":900},[460,174951,2174],{"class":466},[460,174953,174858],{"class":1353},[460,174955,3754],{"class":466},[18,174957,174959],{"id":174958},"_412-小案例登录重试","4.12 小案例：登录重试",[14,174961,137785],{},[103,174963,174964,174967,174970],{},[43,174965,174966],{},"用户最多输入 3 次密码。",[43,174968,174969],{},"密码正确则登录成功。",[43,174971,174972],{},"3 次都错误则锁定账号。",[14,174974,26500],{},[451,174976,174978],{"className":46787,"code":174977,"language":46789,"meta":32,"style":32},"password = \"123456\"\n\nfor i in range(3):\n    user_password = input(\"请输入密码:\")\n\n    if user_password == password:\n        print(\"登录成功\")\n        break\n    else:\n        print(f\"密码错误，还剩{2 - i}次机会\")\nelse:\n    print(\"账号已锁定\")\n",[457,174979,174980,174990,174994,175010,175026,175030,175042,175053,175057,175063,175088,175094],{"__ignoreMap":32},[460,174981,174982,174985,174987],{"class":462,"line":463},[460,174983,174984],{"class":466},"password ",[460,174986,894],{"class":887},[460,174988,174989],{"class":1353}," \"123456\"\n",[460,174991,174992],{"class":462,"line":476},[460,174993,522],{"emptyLinePlaceholder":521},[460,174995,174996,174998,175000,175002,175004,175006,175008],{"class":462,"line":482},[460,174997,19547],{"class":887},[460,174999,13991],{"class":466},[460,175001,11713],{"class":887},[460,175003,48848],{"class":900},[460,175005,2174],{"class":466},[460,175007,913],{"class":900},[460,175009,47194],{"class":466},[460,175011,175012,175015,175017,175019,175021,175024],{"class":462,"line":488},[460,175013,175014],{"class":466},"    user_password ",[460,175016,894],{"class":887},[460,175018,76796],{"class":900},[460,175020,2174],{"class":466},[460,175022,175023],{"class":1353},"\"请输入密码:\"",[460,175025,3754],{"class":466},[460,175027,175028],{"class":462,"line":494},[460,175029,522],{"emptyLinePlaceholder":521},[460,175031,175032,175034,175037,175039],{"class":462,"line":500},[460,175033,19622],{"class":887},[460,175035,175036],{"class":466}," user_password ",[460,175038,19471],{"class":887},[460,175040,175041],{"class":466}," password:\n",[460,175043,175044,175046,175048,175051],{"class":462,"line":506},[460,175045,48856],{"class":900},[460,175047,2174],{"class":466},[460,175049,175050],{"class":1353},"\"登录成功\"",[460,175052,3754],{"class":466},[460,175054,175055],{"class":462,"line":512},[460,175056,48032],{"class":887},[460,175058,175059,175061],{"class":462,"line":518},[460,175060,172515],{"class":887},[460,175062,20257],{"class":466},[460,175064,175065,175067,175069,175071,175074,175077,175079,175081,175083,175086],{"class":462,"line":525},[460,175066,48856],{"class":900},[460,175068,2174],{"class":466},[460,175070,16804],{"class":887},[460,175072,175073],{"class":1353},"\"密码错误，还剩",[460,175075,175076],{"class":900},"{2",[460,175078,68531],{"class":887},[460,175080,10169],{"class":466},[460,175082,612],{"class":900},[460,175084,175085],{"class":1353},"次机会\"",[460,175087,3754],{"class":466},[460,175089,175090,175092],{"class":462,"line":531},[460,175091,3763],{"class":887},[460,175093,20257],{"class":466},[460,175095,175096,175098,175100,175103],{"class":462,"line":537},[460,175097,47706],{"class":900},[460,175099,2174],{"class":466},[460,175101,175102],{"class":1353},"\"账号已锁定\"",[460,175104,3754],{"class":466},[18,175106,175108],{"id":175107},"_413-小案例菜单程序","4.13 小案例：菜单程序",[451,175110,175112],{"className":46787,"code":175111,"language":46789,"meta":32,"style":32},"while True:\n    print(\"====== 菜单 ======\")\n    print(\"1. 查询余额\")\n    print(\"2. 存款\")\n    print(\"3. 取款\")\n    print(\"0. 退出\")\n\n    choice = input(\"请输入操作:\")\n\n    if choice == \"1\":\n        print(\"余额为1000元\")\n    elif choice == \"2\":\n        print(\"存款功能\")\n    elif choice == \"3\":\n        print(\"取款功能\")\n    elif choice == \"0\":\n        print(\"退出系统\")\n        break\n    else:\n        print(\"输入错误\")\n",[457,175113,175114,175122,175133,175144,175155,175166,175177,175181,175196,175200,175212,175223,175235,175246,175258,175269,175281,175291,175295,175301],{"__ignoreMap":32},[460,175115,175116,175118,175120],{"class":462,"line":463},[460,175117,123156],{"class":887},[460,175119,109785],{"class":900},[460,175121,20257],{"class":466},[460,175123,175124,175126,175128,175131],{"class":462,"line":476},[460,175125,47706],{"class":900},[460,175127,2174],{"class":466},[460,175129,175130],{"class":1353},"\"====== 菜单 ======\"",[460,175132,3754],{"class":466},[460,175134,175135,175137,175139,175142],{"class":462,"line":482},[460,175136,47706],{"class":900},[460,175138,2174],{"class":466},[460,175140,175141],{"class":1353},"\"1. 查询余额\"",[460,175143,3754],{"class":466},[460,175145,175146,175148,175150,175153],{"class":462,"line":488},[460,175147,47706],{"class":900},[460,175149,2174],{"class":466},[460,175151,175152],{"class":1353},"\"2. 存款\"",[460,175154,3754],{"class":466},[460,175156,175157,175159,175161,175164],{"class":462,"line":494},[460,175158,47706],{"class":900},[460,175160,2174],{"class":466},[460,175162,175163],{"class":1353},"\"3. 取款\"",[460,175165,3754],{"class":466},[460,175167,175168,175170,175172,175175],{"class":462,"line":500},[460,175169,47706],{"class":900},[460,175171,2174],{"class":466},[460,175173,175174],{"class":1353},"\"0. 退出\"",[460,175176,3754],{"class":466},[460,175178,175179],{"class":462,"line":506},[460,175180,522],{"emptyLinePlaceholder":521},[460,175182,175183,175186,175188,175190,175192,175194],{"class":462,"line":512},[460,175184,175185],{"class":466},"    choice ",[460,175187,894],{"class":887},[460,175189,76796],{"class":900},[460,175191,2174],{"class":466},[460,175193,167566],{"class":1353},[460,175195,3754],{"class":466},[460,175197,175198],{"class":462,"line":518},[460,175199,522],{"emptyLinePlaceholder":521},[460,175201,175202,175204,175206,175208,175210],{"class":462,"line":525},[460,175203,19622],{"class":887},[460,175205,167579],{"class":466},[460,175207,19471],{"class":887},[460,175209,167584],{"class":1353},[460,175211,20257],{"class":466},[460,175213,175214,175216,175218,175221],{"class":462,"line":531},[460,175215,48856],{"class":900},[460,175217,2174],{"class":466},[460,175219,175220],{"class":1353},"\"余额为1000元\"",[460,175222,3754],{"class":466},[460,175224,175225,175227,175229,175231,175233],{"class":462,"line":537},[460,175226,55597],{"class":887},[460,175228,167579],{"class":466},[460,175230,19471],{"class":887},[460,175232,167603],{"class":1353},[460,175234,20257],{"class":466},[460,175236,175237,175239,175241,175244],{"class":462,"line":543},[460,175238,48856],{"class":900},[460,175240,2174],{"class":466},[460,175242,175243],{"class":1353},"\"存款功能\"",[460,175245,3754],{"class":466},[460,175247,175248,175250,175252,175254,175256],{"class":462,"line":549},[460,175249,55597],{"class":887},[460,175251,167579],{"class":466},[460,175253,19471],{"class":887},[460,175255,167621],{"class":1353},[460,175257,20257],{"class":466},[460,175259,175260,175262,175264,175267],{"class":462,"line":555},[460,175261,48856],{"class":900},[460,175263,2174],{"class":466},[460,175265,175266],{"class":1353},"\"取款功能\"",[460,175268,3754],{"class":466},[460,175270,175271,175273,175275,175277,175279],{"class":462,"line":560},[460,175272,55597],{"class":887},[460,175274,167579],{"class":466},[460,175276,19471],{"class":887},[460,175278,167675],{"class":1353},[460,175280,20257],{"class":466},[460,175282,175283,175285,175287,175289],{"class":462,"line":566},[460,175284,48856],{"class":900},[460,175286,2174],{"class":466},[460,175288,167686],{"class":1353},[460,175290,3754],{"class":466},[460,175292,175293],{"class":462,"line":572},[460,175294,48032],{"class":887},[460,175296,175297,175299],{"class":462,"line":578},[460,175298,172515],{"class":887},[460,175300,20257],{"class":466},[460,175302,175303,175305,175307,175309],{"class":462,"line":812},[460,175304,48856],{"class":900},[460,175306,2174],{"class":466},[460,175308,167707],{"class":1353},[460,175310,3754],{"class":466},[14,175312,175313,175314,175316,175317,44794],{},"菜单类程序通常使用 ",[457,175315,174015],{},"，用户选择退出时 ",[457,175318,18592],{},[18,175320,175322],{"id":175321},"_414-易错点","4.14 易错点",[103,175324,175325,175330,175336,175344,175350],{},[43,175326,175327,175329],{},[457,175328,123156],{}," 循环必须更新控制变量。",[43,175331,175332,175335],{},[457,175333,175334],{},"range(1, 10)"," 不包含 10。",[43,175337,175338,175340,175341,175343],{},[457,175339,18592],{}," 结束整个循环，",[457,175342,169165],{}," 只跳过本轮。",[43,175345,175346,175347,175349],{},"嵌套循环中，",[457,175348,18592],{}," 只跳出当前所在的一层循环。",[43,175351,175352],{},"不要在循环中频繁写重复代码，能封装函数就封装函数。",[18,175354,175356],{"id":175355},"_415-本章练习","4.15 本章练习",[103,175358,175359,175362,175365,175368,175371],{},[43,175360,175361],{},"输出 1 到 100。",[43,175363,175364],{},"计算 1 到 100 的偶数和。",[43,175366,175367],{},"输出 100 以内能被 3 和 5 同时整除的数。",[43,175369,175370],{},"编写猜数字游戏，限制最多猜 7 次。",[43,175372,175373],{},"编写菜单程序，实现查看余额、存款、取款、退出。",[1944,175375,175376],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":175378},[175379,175380,175381,175382,175383,175387,175388,175389,175390,175391,175392,175393,175394,175395,175396],{"id":173635,"depth":476,"text":173636},{"id":173665,"depth":476,"text":173666},{"id":173754,"depth":476,"text":173755},{"id":173848,"depth":476,"text":173849},{"id":174022,"depth":476,"text":174023,"children":175384},[175385,175386],{"id":174026,"depth":482,"text":174027},{"id":174090,"depth":482,"text":174091},{"id":174154,"depth":476,"text":174155},{"id":174249,"depth":476,"text":174250},{"id":174358,"depth":476,"text":174359},{"id":174554,"depth":476,"text":174555},{"id":174639,"depth":476,"text":174640},{"id":174778,"depth":476,"text":174779},{"id":174958,"depth":476,"text":174959},{"id":175107,"depth":476,"text":175108},{"id":175321,"depth":476,"text":175322},{"id":175355,"depth":476,"text":175356},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch4",{"title":173627,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch4-循环语句","lNHBoZHnAH-b1ogDfanr4dZuyXln9CGVy502nnjUB3Q",{"id":175403,"title":175404,"body":175405,"description":16682,"extension":16683,"meta":177410,"navigation":521,"path":177411,"seo":177412,"stem":177413,"__hash__":177414},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch5-函数基础.md","5. 函数基础",{"type":7,"value":175406,"toc":177390},[175407,175410,175414,175417,175420,175434,175437,175451,175455,175457,175476,175478,175525,175527,175541,175545,175619,175622,175626,175629,175688,175696,175699,175752,175755,175759,175764,175819,175827,175877,175881,175886,175894,175993,175999,176003,176008,176011,176022,176063,176076,176080,176083,176119,176122,176135,176138,176198,176202,176206,176209,176260,176264,176267,176314,176320,176386,176389,176393,176396,176512,176515,176519,176522,176628,176632,176635,176673,176676,176718,176721,176781,176784,176788,177252,177255,177259,177286,177292,177353,177357,177387],[10,175408,175404],{"id":175409},"_5-函数基础",[18,175411,175413],{"id":175412},"_51-为什么需要函数","5.1 为什么需要函数",[14,175415,175416],{},"函数用于封装一段可以重复使用的代码。",[14,175418,175419],{},"不使用函数的问题：",[103,175421,175422,175425,175428,175431],{},[43,175423,175424],{},"重复代码多。",[43,175426,175427],{},"修改逻辑时容易漏改。",[43,175429,175430],{},"主流程不清晰。",[43,175432,175433],{},"程序越写越长，难以维护。",[14,175435,175436],{},"使用函数后的好处：",[103,175438,175439,175442,175445,175448],{},[43,175440,175441],{},"提高复用性。",[43,175443,175444],{},"提高可读性。",[43,175446,175447],{},"便于调试。",[43,175449,175450],{},"便于分工。",[18,175452,175454],{"id":175453},"_52-函数定义","5.2 函数定义",[14,175456,5927],{},[451,175458,175460],{"className":46787,"code":175459,"language":46789,"meta":32,"style":32},"def 函数名():\n    函数体\n",[457,175461,175462,175471],{"__ignoreMap":32},[460,175463,175464,175466,175469],{"class":462,"line":463},[460,175465,48352],{"class":887},[460,175467,175468],{"class":929}," 函数名",[460,175470,48358],{"class":466},[460,175472,175473],{"class":462,"line":476},[460,175474,175475],{"class":466},"    函数体\n",[14,175477,31586],{},[451,175479,175481],{"className":46787,"code":175480,"language":46789,"meta":32,"style":32},"def say_hello():\n    print(\"hello\")\n    print(\"python\")\n\n\nsay_hello()\n",[457,175482,175483,175492,175502,175512,175516,175520],{"__ignoreMap":32},[460,175484,175485,175487,175490],{"class":462,"line":463},[460,175486,48352],{"class":887},[460,175488,175489],{"class":929}," say_hello",[460,175491,48358],{"class":466},[460,175493,175494,175496,175498,175500],{"class":462,"line":476},[460,175495,47706],{"class":900},[460,175497,2174],{"class":466},[460,175499,22349],{"class":1353},[460,175501,3754],{"class":466},[460,175503,175504,175506,175508,175510],{"class":462,"line":482},[460,175505,47706],{"class":900},[460,175507,2174],{"class":466},[460,175509,161132],{"class":1353},[460,175511,3754],{"class":466},[460,175513,175514],{"class":462,"line":488},[460,175515,522],{"emptyLinePlaceholder":521},[460,175517,175518],{"class":462,"line":494},[460,175519,522],{"emptyLinePlaceholder":521},[460,175521,175522],{"class":462,"line":500},[460,175523,175524],{"class":466},"say_hello()\n",[14,175526,25511],{},[103,175528,175529,175532,175535,175538],{},[43,175530,175531],{},"函数必须先定义，再调用。",[43,175533,175534],{},"函数名遵循变量命名规则。",[43,175536,175537],{},"函数体需要缩进。",[43,175539,175540],{},"函数不调用就不会执行。",[18,175542,175544],{"id":175543},"_53-函数调用","5.3 函数调用",[451,175546,175548],{"className":46787,"code":175547,"language":46789,"meta":32,"style":32},"def print_menu():\n    print(\"1. 查询\")\n    print(\"2. 添加\")\n    print(\"3. 删除\")\n    print(\"0. 退出\")\n\n\nprint_menu()\nprint_menu()\n",[457,175549,175550,175559,175570,175581,175592,175602,175606,175610,175615],{"__ignoreMap":32},[460,175551,175552,175554,175557],{"class":462,"line":463},[460,175553,48352],{"class":887},[460,175555,175556],{"class":929}," print_menu",[460,175558,48358],{"class":466},[460,175560,175561,175563,175565,175568],{"class":462,"line":476},[460,175562,47706],{"class":900},[460,175564,2174],{"class":466},[460,175566,175567],{"class":1353},"\"1. 查询\"",[460,175569,3754],{"class":466},[460,175571,175572,175574,175576,175579],{"class":462,"line":482},[460,175573,47706],{"class":900},[460,175575,2174],{"class":466},[460,175577,175578],{"class":1353},"\"2. 添加\"",[460,175580,3754],{"class":466},[460,175582,175583,175585,175587,175590],{"class":462,"line":488},[460,175584,47706],{"class":900},[460,175586,2174],{"class":466},[460,175588,175589],{"class":1353},"\"3. 删除\"",[460,175591,3754],{"class":466},[460,175593,175594,175596,175598,175600],{"class":462,"line":494},[460,175595,47706],{"class":900},[460,175597,2174],{"class":466},[460,175599,175174],{"class":1353},[460,175601,3754],{"class":466},[460,175603,175604],{"class":462,"line":500},[460,175605,522],{"emptyLinePlaceholder":521},[460,175607,175608],{"class":462,"line":506},[460,175609,522],{"emptyLinePlaceholder":521},[460,175611,175612],{"class":462,"line":512},[460,175613,175614],{"class":466},"print_menu()\n",[460,175616,175617],{"class":462,"line":518},[460,175618,175614],{"class":466},[14,175620,175621],{},"函数可以多次调用，每次调用都会执行函数体。",[18,175623,175625],{"id":175624},"_54-参数","5.4 参数",[14,175627,175628],{},"参数用于向函数传递数据。",[451,175630,175632],{"className":46787,"code":175631,"language":46789,"meta":32,"style":32},"def say_hello(name):\n    print(f\"你好，{name}\")\n\n\nsay_hello(\"小明\")\nsay_hello(\"小红\")\n",[457,175633,175634,175643,175663,175667,175671,175680],{"__ignoreMap":32},[460,175635,175636,175638,175640],{"class":462,"line":463},[460,175637,48352],{"class":887},[460,175639,175489],{"class":929},[460,175641,175642],{"class":466},"(name):\n",[460,175644,175645,175647,175649,175651,175653,175655,175657,175659,175661],{"class":462,"line":476},[460,175646,47706],{"class":900},[460,175648,2174],{"class":466},[460,175650,16804],{"class":887},[460,175652,171547],{"class":1353},[460,175654,17607],{"class":900},[460,175656,3440],{"class":466},[460,175658,612],{"class":900},[460,175660,16993],{"class":1353},[460,175662,3754],{"class":466},[460,175664,175665],{"class":462,"line":482},[460,175666,522],{"emptyLinePlaceholder":521},[460,175668,175669],{"class":462,"line":488},[460,175670,522],{"emptyLinePlaceholder":521},[460,175672,175673,175676,175678],{"class":462,"line":494},[460,175674,175675],{"class":466},"say_hello(",[460,175677,164381],{"class":1353},[460,175679,3754],{"class":466},[460,175681,175682,175684,175686],{"class":462,"line":500},[460,175683,175675],{"class":466},[460,175685,165429],{"class":1353},[460,175687,3754],{"class":466},[14,175689,175690,175692,175693,175695],{},[457,175691,3440],{}," 是形参，",[457,175694,164381],{}," 是实参。",[14,175697,175698],{},"多个参数：",[451,175700,175702],{"className":46787,"code":175701,"language":46789,"meta":32,"style":32},"def add(a, b):\n    result = a + b\n    print(result)\n\n\nadd(10, 20)\n",[457,175703,175704,175712,175725,175731,175735,175739],{"__ignoreMap":32},[460,175705,175706,175708,175710],{"class":462,"line":463},[460,175707,48352],{"class":887},[460,175709,21716],{"class":929},[460,175711,165586],{"class":466},[460,175713,175714,175717,175719,175721,175723],{"class":462,"line":476},[460,175715,175716],{"class":466},"    result ",[460,175718,894],{"class":887},[460,175720,27333],{"class":466},[460,175722,8495],{"class":887},[460,175724,165597],{"class":466},[460,175726,175727,175729],{"class":462,"line":482},[460,175728,47706],{"class":900},[460,175730,92698],{"class":466},[460,175732,175733],{"class":462,"line":488},[460,175734,522],{"emptyLinePlaceholder":521},[460,175736,175737],{"class":462,"line":494},[460,175738,522],{"emptyLinePlaceholder":521},[460,175740,175741,175744,175746,175748,175750],{"class":462,"line":500},[460,175742,175743],{"class":466},"add(",[460,175745,2096],{"class":900},[460,175747,904],{"class":466},[460,175749,2110],{"class":900},[460,175751,3754],{"class":466},[14,175753,175754],{},"调用时参数数量必须匹配。",[18,175756,175758],{"id":175757},"_55-返回值","5.5 返回值",[14,175760,175761,175763],{},[457,175762,33464],{}," 用于把函数内部的结果返回给调用者。",[451,175765,175767],{"className":46787,"code":175766,"language":46789,"meta":32,"style":32},"def add(a, b):\n    return a + b\n\n\nresult = add(10, 20)\nprint(result)\n",[457,175768,175769,175777,175787,175791,175795,175813],{"__ignoreMap":32},[460,175770,175771,175773,175775],{"class":462,"line":463},[460,175772,48352],{"class":887},[460,175774,21716],{"class":929},[460,175776,165586],{"class":466},[460,175778,175779,175781,175783,175785],{"class":462,"line":476},[460,175780,20605],{"class":887},[460,175782,27333],{"class":466},[460,175784,8495],{"class":887},[460,175786,165597],{"class":466},[460,175788,175789],{"class":462,"line":482},[460,175790,522],{"emptyLinePlaceholder":521},[460,175792,175793],{"class":462,"line":488},[460,175794,522],{"emptyLinePlaceholder":521},[460,175796,175797,175800,175802,175805,175807,175809,175811],{"class":462,"line":494},[460,175798,175799],{"class":466},"result ",[460,175801,894],{"class":887},[460,175803,175804],{"class":466}," add(",[460,175806,2096],{"class":900},[460,175808,904],{"class":466},[460,175810,2110],{"class":900},[460,175812,3754],{"class":466},[460,175814,175815,175817],{"class":462,"line":500},[460,175816,46824],{"class":900},[460,175818,92698],{"class":466},[14,175820,175821,175822,175824,175825,44794],{},"如果函数没有写 ",[457,175823,33464],{},"，默认返回 ",[457,175826,110179],{},[451,175828,175830],{"className":46787,"code":175829,"language":46789,"meta":32,"style":32},"def say_hello():\n    print(\"hello\")\n\n\nresult = say_hello()\nprint(result)  # None\n",[457,175831,175832,175840,175850,175854,175858,175867],{"__ignoreMap":32},[460,175833,175834,175836,175838],{"class":462,"line":463},[460,175835,48352],{"class":887},[460,175837,175489],{"class":929},[460,175839,48358],{"class":466},[460,175841,175842,175844,175846,175848],{"class":462,"line":476},[460,175843,47706],{"class":900},[460,175845,2174],{"class":466},[460,175847,22349],{"class":1353},[460,175849,3754],{"class":466},[460,175851,175852],{"class":462,"line":482},[460,175853,522],{"emptyLinePlaceholder":521},[460,175855,175856],{"class":462,"line":488},[460,175857,522],{"emptyLinePlaceholder":521},[460,175859,175860,175862,175864],{"class":462,"line":494},[460,175861,175799],{"class":466},[460,175863,894],{"class":887},[460,175865,175866],{"class":466}," say_hello()\n",[460,175868,175869,175871,175874],{"class":462,"line":500},[460,175870,46824],{"class":900},[460,175872,175873],{"class":466},"(result)  ",[460,175875,175876],{"class":942},"# None\n",[18,175878,175880],{"id":175879},"_56-return的作用","5.6 return的作用",[14,175882,175883,175885],{},[457,175884,33464],{}," 有两个作用：",[103,175887,175888,175891],{},[43,175889,175890],{},"返回结果。",[43,175892,175893],{},"结束函数。",[451,175895,175897],{"className":46787,"code":175896,"language":46789,"meta":32,"style":32},"def check_age(age):\n    if age \u003C 0:\n        return \"年龄不合法\"\n\n    if age >= 18:\n        return \"成年人\"\n\n    return \"未成年人\"\n\n\nprint(check_age(20))\nprint(check_age(-1))\n",[457,175898,175899,175909,175921,175928,175932,175944,175951,175955,175962,175966,175970,175981],{"__ignoreMap":32},[460,175900,175901,175903,175906],{"class":462,"line":463},[460,175902,48352],{"class":887},[460,175904,175905],{"class":929}," check_age",[460,175907,175908],{"class":466},"(age):\n",[460,175910,175911,175913,175915,175917,175919],{"class":462,"line":476},[460,175912,19622],{"class":887},[460,175914,32157],{"class":466},[460,175916,781],{"class":887},[460,175918,2224],{"class":900},[460,175920,20257],{"class":466},[460,175922,175923,175925],{"class":462,"line":482},[460,175924,31206],{"class":887},[460,175926,175927],{"class":1353}," \"年龄不合法\"\n",[460,175929,175930],{"class":462,"line":488},[460,175931,522],{"emptyLinePlaceholder":521},[460,175933,175934,175936,175938,175940,175942],{"class":462,"line":494},[460,175935,19622],{"class":887},[460,175937,32157],{"class":466},[460,175939,3738],{"class":887},[460,175941,170778],{"class":900},[460,175943,20257],{"class":466},[460,175945,175946,175948],{"class":462,"line":500},[460,175947,31206],{"class":887},[460,175949,175950],{"class":1353}," \"成年人\"\n",[460,175952,175953],{"class":462,"line":506},[460,175954,522],{"emptyLinePlaceholder":521},[460,175956,175957,175959],{"class":462,"line":512},[460,175958,20605],{"class":887},[460,175960,175961],{"class":1353}," \"未成年人\"\n",[460,175963,175964],{"class":462,"line":518},[460,175965,522],{"emptyLinePlaceholder":521},[460,175967,175968],{"class":462,"line":525},[460,175969,522],{"emptyLinePlaceholder":521},[460,175971,175972,175974,175977,175979],{"class":462,"line":531},[460,175973,46824],{"class":900},[460,175975,175976],{"class":466},"(check_age(",[460,175978,2110],{"class":900},[460,175980,6311],{"class":466},[460,175982,175983,175985,175987,175989,175991],{"class":462,"line":537},[460,175984,46824],{"class":900},[460,175986,175976],{"class":466},[460,175988,17259],{"class":887},[460,175990,901],{"class":900},[460,175992,6311],{"class":466},[14,175994,175995,175996,175998],{},"函数执行到 ",[457,175997,33464],{}," 后，后面的代码不会继续执行。",[18,176000,176002],{"id":176001},"_57-none","5.7 None",[14,176004,176005,176007],{},[457,176006,110179],{}," 表示空值或没有结果。",[14,176009,176010],{},"常见使用场景：",[103,176012,176013,176016,176019],{},[43,176014,176015],{},"函数没有返回值。",[43,176017,176018],{},"变量暂时没有具体值。",[43,176020,176021],{},"表示查询不到结果。",[451,176023,176025],{"className":46787,"code":176024,"language":46789,"meta":32,"style":32},"result = None\n\nif result is None:\n    print(\"没有数据\")\n",[457,176026,176027,176035,176039,176052],{"__ignoreMap":32},[460,176028,176029,176031,176033],{"class":462,"line":463},[460,176030,175799],{"class":466},[460,176032,894],{"class":887},[460,176034,166665],{"class":900},[460,176036,176037],{"class":462,"line":476},[460,176038,522],{"emptyLinePlaceholder":521},[460,176040,176041,176043,176046,176048,176050],{"class":462,"line":482},[460,176042,18100],{"class":887},[460,176044,176045],{"class":466}," result ",[460,176047,55232],{"class":887},[460,176049,55238],{"class":900},[460,176051,20257],{"class":466},[460,176053,176054,176056,176058,176061],{"class":462,"line":488},[460,176055,47706],{"class":900},[460,176057,2174],{"class":466},[460,176059,176060],{"class":1353},"\"没有数据\"",[460,176062,3754],{"class":466},[14,176064,176065,176066,176068,176069,176072,176073,44794],{},"判断 ",[457,176067,110179],{}," 推荐使用 ",[457,176070,176071],{},"is None","，不要写成 ",[457,176074,176075],{},"== None",[18,176077,176079],{"id":176078},"_58-函数文档字符串","5.8 函数文档字符串",[14,176081,176082],{},"函数内部第一行可以写文档字符串，用来说明函数用途。",[451,176084,176086],{"className":46787,"code":176085,"language":46789,"meta":32,"style":32},"def calculate_bmi(weight, height):\n    \"\"\"根据体重和身高计算BMI。\"\"\"\n    return weight \u002F height ** 2\n",[457,176087,176088,176098,176103],{"__ignoreMap":32},[460,176089,176090,176092,176095],{"class":462,"line":463},[460,176091,48352],{"class":887},[460,176093,176094],{"class":929}," calculate_bmi",[460,176096,176097],{"class":466},"(weight, height):\n",[460,176099,176100],{"class":462,"line":476},[460,176101,176102],{"class":1353},"    \"\"\"根据体重和身高计算BMI。\"\"\"\n",[460,176104,176105,176107,176110,176112,176115,176117],{"class":462,"line":482},[460,176106,20605],{"class":887},[460,176108,176109],{"class":466}," weight ",[460,176111,8331],{"class":887},[460,176113,176114],{"class":466}," height ",[460,176116,27126],{"class":887},[460,176118,64026],{"class":900},[14,176120,176121],{},"查看说明：",[451,176123,176125],{"className":46787,"code":176124,"language":46789,"meta":32,"style":32},"help(calculate_bmi)\n",[457,176126,176127],{"__ignoreMap":32},[460,176128,176129,176132],{"class":462,"line":463},[460,176130,176131],{"class":900},"help",[460,176133,176134],{"class":466},"(calculate_bmi)\n",[14,176136,176137],{},"较完整的写法：",[451,176139,176141],{"className":46787,"code":176140,"language":46789,"meta":32,"style":32},"def calculate_bmi(weight, height):\n    \"\"\"\n    计算BMI。\n\n    :param weight: 体重，单位kg\n    :param height: 身高，单位m\n    :return: BMI数值\n    \"\"\"\n    return weight \u002F height ** 2\n",[457,176142,176143,176151,176156,176161,176165,176170,176175,176180,176184],{"__ignoreMap":32},[460,176144,176145,176147,176149],{"class":462,"line":463},[460,176146,48352],{"class":887},[460,176148,176094],{"class":929},[460,176150,176097],{"class":466},[460,176152,176153],{"class":462,"line":476},[460,176154,176155],{"class":1353},"    \"\"\"\n",[460,176157,176158],{"class":462,"line":482},[460,176159,176160],{"class":1353},"    计算BMI。\n",[460,176162,176163],{"class":462,"line":488},[460,176164,522],{"emptyLinePlaceholder":521},[460,176166,176167],{"class":462,"line":494},[460,176168,176169],{"class":1353},"    :param weight: 体重，单位kg\n",[460,176171,176172],{"class":462,"line":500},[460,176173,176174],{"class":1353},"    :param height: 身高，单位m\n",[460,176176,176177],{"class":462,"line":506},[460,176178,176179],{"class":1353},"    :return: BMI数值\n",[460,176181,176182],{"class":462,"line":512},[460,176183,176155],{"class":1353},[460,176185,176186,176188,176190,176192,176194,176196],{"class":462,"line":518},[460,176187,20605],{"class":887},[460,176189,176109],{"class":466},[460,176191,8331],{"class":887},[460,176193,176114],{"class":466},[460,176195,27126],{"class":887},[460,176197,64026],{"class":900},[18,176199,176201],{"id":176200},"_59-变量作用域","5.9 变量作用域",[23,176203,176205],{"id":176204},"_591-局部变量","5.9.1 局部变量",[14,176207,176208],{},"在函数内部定义的变量，只能在函数内部使用。",[451,176210,176212],{"className":46787,"code":176211,"language":46789,"meta":32,"style":32},"def test():\n    num = 10\n    print(num)\n\n\ntest()\nprint(num)  # 报错\n",[457,176213,176214,176223,176231,176237,176241,176245,176250],{"__ignoreMap":32},[460,176215,176216,176218,176221],{"class":462,"line":463},[460,176217,48352],{"class":887},[460,176219,176220],{"class":929}," test",[460,176222,48358],{"class":466},[460,176224,176225,176227,176229],{"class":462,"line":476},[460,176226,61897],{"class":466},[460,176228,894],{"class":887},[460,176230,74626],{"class":900},[460,176232,176233,176235],{"class":462,"line":482},[460,176234,47706],{"class":900},[460,176236,16768],{"class":466},[460,176238,176239],{"class":462,"line":488},[460,176240,522],{"emptyLinePlaceholder":521},[460,176242,176243],{"class":462,"line":494},[460,176244,522],{"emptyLinePlaceholder":521},[460,176246,176247],{"class":462,"line":500},[460,176248,176249],{"class":466},"test()\n",[460,176251,176252,176254,176257],{"class":462,"line":506},[460,176253,46824],{"class":900},[460,176255,176256],{"class":466},"(num)  ",[460,176258,176259],{"class":942},"# 报错\n",[23,176261,176263],{"id":176262},"_592-全局变量","5.9.2 全局变量",[14,176265,176266],{},"在函数外部定义的变量，可以在函数内部读取。",[451,176268,176270],{"className":46787,"code":176269,"language":46789,"meta":32,"style":32},"name = \"小明\"\n\n\ndef say_hello():\n    print(name)\n\n\nsay_hello()\n",[457,176271,176272,176280,176284,176288,176296,176302,176306,176310],{"__ignoreMap":32},[460,176273,176274,176276,176278],{"class":462,"line":463},[460,176275,161029],{"class":466},[460,176277,894],{"class":887},[460,176279,163846],{"class":1353},[460,176281,176282],{"class":462,"line":476},[460,176283,522],{"emptyLinePlaceholder":521},[460,176285,176286],{"class":462,"line":482},[460,176287,522],{"emptyLinePlaceholder":521},[460,176289,176290,176292,176294],{"class":462,"line":488},[460,176291,48352],{"class":887},[460,176293,175489],{"class":929},[460,176295,48358],{"class":466},[460,176297,176298,176300],{"class":462,"line":494},[460,176299,47706],{"class":900},[460,176301,165153],{"class":466},[460,176303,176304],{"class":462,"line":500},[460,176305,522],{"emptyLinePlaceholder":521},[460,176307,176308],{"class":462,"line":506},[460,176309,522],{"emptyLinePlaceholder":521},[460,176311,176312],{"class":462,"line":512},[460,176313,175524],{"class":466},[14,176315,176316,176317,44794],{},"如果要在函数内部修改全局变量，需要 ",[457,176318,176319],{},"global",[451,176321,176323],{"className":46787,"code":176322,"language":46789,"meta":32,"style":32},"count = 0\n\n\ndef add_count():\n    global count\n    count += 1\n\n\nadd_count()\nprint(count)\n",[457,176324,176325,176333,176337,176341,176350,176358,176366,176370,176374,176379],{"__ignoreMap":32},[460,176326,176327,176329,176331],{"class":462,"line":463},[460,176328,161184],{"class":466},[460,176330,894],{"class":887},[460,176332,13996],{"class":900},[460,176334,176335],{"class":462,"line":476},[460,176336,522],{"emptyLinePlaceholder":521},[460,176338,176339],{"class":462,"line":482},[460,176340,522],{"emptyLinePlaceholder":521},[460,176342,176343,176345,176348],{"class":462,"line":488},[460,176344,48352],{"class":887},[460,176346,176347],{"class":929}," add_count",[460,176349,48358],{"class":466},[460,176351,176352,176355],{"class":462,"line":494},[460,176353,176354],{"class":887},"    global",[460,176356,176357],{"class":466}," count\n",[460,176359,176360,176362,176364],{"class":462,"line":500},[460,176361,173926],{"class":466},[460,176363,3467],{"class":887},[460,176365,71910],{"class":900},[460,176367,176368],{"class":462,"line":506},[460,176369,522],{"emptyLinePlaceholder":521},[460,176371,176372],{"class":462,"line":512},[460,176373,522],{"emptyLinePlaceholder":521},[460,176375,176376],{"class":462,"line":518},[460,176377,176378],{"class":466},"add_count()\n",[460,176380,176381,176383],{"class":462,"line":525},[460,176382,46824],{"class":900},[460,176384,176385],{"class":466},"(count)\n",[14,176387,176388],{},"不建议大量使用全局变量，项目变大后很难维护。",[18,176390,176392],{"id":176391},"_510-函数嵌套调用","5.10 函数嵌套调用",[14,176394,176395],{},"一个函数中可以调用另一个函数。",[451,176397,176399],{"className":46787,"code":176398,"language":46789,"meta":32,"style":32},"def print_line():\n    print(\"-\" * 30)\n\n\ndef print_info(name, age):\n    print_line()\n    print(f\"姓名:{name}\")\n    print(f\"年龄:{age}\")\n    print_line()\n\n\nprint_info(\"小明\", 18)\n",[457,176400,176401,176410,176424,176428,176432,176441,176446,176466,176487,176491,176495,176499],{"__ignoreMap":32},[460,176402,176403,176405,176408],{"class":462,"line":463},[460,176404,48352],{"class":887},[460,176406,176407],{"class":929}," print_line",[460,176409,48358],{"class":466},[460,176411,176412,176414,176416,176418,176420,176422],{"class":462,"line":476},[460,176413,47706],{"class":900},[460,176415,2174],{"class":466},[460,176417,48888],{"class":1353},[460,176419,8325],{"class":887},[460,176421,2115],{"class":900},[460,176423,3754],{"class":466},[460,176425,176426],{"class":462,"line":482},[460,176427,522],{"emptyLinePlaceholder":521},[460,176429,176430],{"class":462,"line":488},[460,176431,522],{"emptyLinePlaceholder":521},[460,176433,176434,176436,176439],{"class":462,"line":494},[460,176435,48352],{"class":887},[460,176437,176438],{"class":929}," print_info",[460,176440,163868],{"class":466},[460,176442,176443],{"class":462,"line":500},[460,176444,176445],{"class":466},"    print_line()\n",[460,176447,176448,176450,176452,176454,176456,176458,176460,176462,176464],{"class":462,"line":506},[460,176449,47706],{"class":900},[460,176451,2174],{"class":466},[460,176453,16804],{"class":887},[460,176455,171175],{"class":1353},[460,176457,17607],{"class":900},[460,176459,3440],{"class":466},[460,176461,612],{"class":900},[460,176463,16993],{"class":1353},[460,176465,3754],{"class":466},[460,176467,176468,176470,176472,176474,176477,176479,176481,176483,176485],{"class":462,"line":512},[460,176469,47706],{"class":900},[460,176471,2174],{"class":466},[460,176473,16804],{"class":887},[460,176475,176476],{"class":1353},"\"年龄:",[460,176478,17607],{"class":900},[460,176480,3989],{"class":466},[460,176482,612],{"class":900},[460,176484,16993],{"class":1353},[460,176486,3754],{"class":466},[460,176488,176489],{"class":462,"line":518},[460,176490,176445],{"class":466},[460,176492,176493],{"class":462,"line":525},[460,176494,522],{"emptyLinePlaceholder":521},[460,176496,176497],{"class":462,"line":531},[460,176498,522],{"emptyLinePlaceholder":521},[460,176500,176501,176504,176506,176508,176510],{"class":462,"line":537},[460,176502,176503],{"class":466},"print_info(",[460,176505,164381],{"class":1353},[460,176507,904],{"class":466},[460,176509,2361],{"class":900},[460,176511,3754],{"class":466},[14,176513,176514],{},"这种方式可以把小功能组合成大功能。",[18,176516,176518],{"id":176517},"_511-参数检查","5.11 参数检查",[14,176520,176521],{},"函数内部可以检查参数是否合法。",[451,176523,176525],{"className":46787,"code":176524,"language":46789,"meta":32,"style":32},"def divide(a, b):\n    if b == 0:\n        return None\n    return a \u002F b\n\n\nresult = divide(10, 0)\n\nif result is None:\n    print(\"除数不能为0\")\nelse:\n    print(result)\n",[457,176526,176527,176536,176548,176554,176564,176568,176572,176589,176593,176605,176616,176622],{"__ignoreMap":32},[460,176528,176529,176531,176534],{"class":462,"line":463},[460,176530,48352],{"class":887},[460,176532,176533],{"class":929}," divide",[460,176535,165586],{"class":466},[460,176537,176538,176540,176542,176544,176546],{"class":462,"line":476},[460,176539,19622],{"class":887},[460,176541,27346],{"class":466},[460,176543,19471],{"class":887},[460,176545,2224],{"class":900},[460,176547,20257],{"class":466},[460,176549,176550,176552],{"class":462,"line":482},[460,176551,31206],{"class":887},[460,176553,166665],{"class":900},[460,176555,176556,176558,176560,176562],{"class":462,"line":488},[460,176557,20605],{"class":887},[460,176559,27333],{"class":466},[460,176561,8331],{"class":887},[460,176563,165597],{"class":466},[460,176565,176566],{"class":462,"line":494},[460,176567,522],{"emptyLinePlaceholder":521},[460,176569,176570],{"class":462,"line":500},[460,176571,522],{"emptyLinePlaceholder":521},[460,176573,176574,176576,176578,176581,176583,176585,176587],{"class":462,"line":506},[460,176575,175799],{"class":466},[460,176577,894],{"class":887},[460,176579,176580],{"class":466}," divide(",[460,176582,2096],{"class":900},[460,176584,904],{"class":466},[460,176586,936],{"class":900},[460,176588,3754],{"class":466},[460,176590,176591],{"class":462,"line":512},[460,176592,522],{"emptyLinePlaceholder":521},[460,176594,176595,176597,176599,176601,176603],{"class":462,"line":518},[460,176596,18100],{"class":887},[460,176598,176045],{"class":466},[460,176600,55232],{"class":887},[460,176602,55238],{"class":900},[460,176604,20257],{"class":466},[460,176606,176607,176609,176611,176614],{"class":462,"line":525},[460,176608,47706],{"class":900},[460,176610,2174],{"class":466},[460,176612,176613],{"class":1353},"\"除数不能为0\"",[460,176615,3754],{"class":466},[460,176617,176618,176620],{"class":462,"line":531},[460,176619,3763],{"class":887},[460,176621,20257],{"class":466},[460,176623,176624,176626],{"class":462,"line":537},[460,176625,47706],{"class":900},[460,176627,92698],{"class":466},[18,176629,176631],{"id":176630},"_512-类型提示","5.12 类型提示",[14,176633,176634],{},"类型提示不会强制限制运行，但能让编辑器提示更准确。",[451,176636,176638],{"className":46787,"code":176637,"language":46789,"meta":32,"style":32},"def add(a: int, b: int) -> int:\n    return a + b\n",[457,176639,176640,176663],{"__ignoreMap":32},[460,176641,176642,176644,176646,176649,176651,176654,176656,176659,176661],{"class":462,"line":463},[460,176643,48352],{"class":887},[460,176645,21716],{"class":929},[460,176647,176648],{"class":466},"(a: ",[460,176650,16759],{"class":900},[460,176652,176653],{"class":466},", b: ",[460,176655,16759],{"class":900},[460,176657,176658],{"class":466},") -> ",[460,176660,16759],{"class":900},[460,176662,20257],{"class":466},[460,176664,176665,176667,176669,176671],{"class":462,"line":476},[460,176666,20605],{"class":887},[460,176668,27333],{"class":466},[460,176670,8495],{"class":887},[460,176672,165597],{"class":466},[14,176674,176675],{},"字符串参数：",[451,176677,176679],{"className":46787,"code":176678,"language":46789,"meta":32,"style":32},"def say_hello(name: str) -> None:\n    print(f\"你好，{name}\")\n",[457,176680,176681,176698],{"__ignoreMap":32},[460,176682,176683,176685,176687,176690,176692,176694,176696],{"class":462,"line":463},[460,176684,48352],{"class":887},[460,176686,175489],{"class":929},[460,176688,176689],{"class":466},"(name: ",[460,176691,6393],{"class":900},[460,176693,176658],{"class":466},[460,176695,110179],{"class":900},[460,176697,20257],{"class":466},[460,176699,176700,176702,176704,176706,176708,176710,176712,176714,176716],{"class":462,"line":476},[460,176701,47706],{"class":900},[460,176703,2174],{"class":466},[460,176705,16804],{"class":887},[460,176707,171547],{"class":1353},[460,176709,17607],{"class":900},[460,176711,3440],{"class":466},[460,176713,612],{"class":900},[460,176715,16993],{"class":1353},[460,176717,3754],{"class":466},[14,176719,176720],{},"列表参数：",[451,176722,176724],{"className":46787,"code":176723,"language":46789,"meta":32,"style":32},"def get_total(numbers: list[int]) -> int:\n    total = 0\n    for number in numbers:\n        total += number\n    return total\n",[457,176725,176726,176745,176753,176765,176774],{"__ignoreMap":32},[460,176727,176728,176730,176733,176736,176738,176741,176743],{"class":462,"line":463},[460,176729,48352],{"class":887},[460,176731,176732],{"class":929}," get_total",[460,176734,176735],{"class":466},"(numbers: list[",[460,176737,16759],{"class":900},[460,176739,176740],{"class":466},"]) -> ",[460,176742,16759],{"class":900},[460,176744,20257],{"class":466},[460,176746,176747,176749,176751],{"class":462,"line":476},[460,176748,173800],{"class":466},[460,176750,894],{"class":887},[460,176752,13996],{"class":900},[460,176754,176755,176757,176760,176762],{"class":462,"line":482},[460,176756,19722],{"class":887},[460,176758,176759],{"class":466}," number ",[460,176761,11713],{"class":887},[460,176763,176764],{"class":466}," numbers:\n",[460,176766,176767,176769,176771],{"class":462,"line":488},[460,176768,174475],{"class":466},[460,176770,3467],{"class":887},[460,176772,176773],{"class":466}," number\n",[460,176775,176776,176778],{"class":462,"line":494},[460,176777,20605],{"class":887},[460,176779,176780],{"class":466}," total\n",[14,176782,176783],{},"学习初期可以先掌握基础语法，后续写项目时逐渐加类型提示。",[18,176785,176787],{"id":176786},"_513-小案例atm函数拆分","5.13 小案例：ATM函数拆分",[451,176789,176791],{"className":46787,"code":176790,"language":46789,"meta":32,"style":32},"balance = 1000\n\n\ndef show_menu():\n    print(\"====== ATM ======\")\n    print(\"1. 查询余额\")\n    print(\"2. 存款\")\n    print(\"3. 取款\")\n    print(\"0. 退出\")\n\n\ndef show_balance():\n    print(f\"当前余额:{balance}元\")\n\n\ndef save_money():\n    global balance\n    money = float(input(\"请输入存款金额:\"))\n    if money \u003C= 0:\n        print(\"金额必须大于0\")\n        return\n    balance += money\n    print(\"存款成功\")\n    show_balance()\n\n\ndef withdraw_money():\n    global balance\n    money = float(input(\"请输入取款金额:\"))\n    if money \u003C= 0:\n        print(\"金额必须大于0\")\n        return\n    if money > balance:\n        print(\"余额不足\")\n        return\n    balance -= money\n    print(\"取款成功\")\n    show_balance()\n\n\nwhile True:\n    show_menu()\n    choice = input(\"请输入操作:\")\n\n    if choice == \"1\":\n        show_balance()\n    elif choice == \"2\":\n        save_money()\n    elif choice == \"3\":\n        withdraw_money()\n    elif choice == \"0\":\n        print(\"退出系统\")\n        break\n    else:\n        print(\"输入错误\")\n",[457,176792,176793,176803,176807,176811,176819,176830,176840,176850,176860,176870,176874,176878,176887,176909,176913,176917,176926,176932,176952,176964,176975,176979,176988,176999,177004,177008,177012,177021,177027,177046,177058,177068,177072,177083,177093,177097,177105,177116,177120,177124,177128,177136,177141,177155,177159,177171,177176,177188,177193,177205,177210,177222,177232,177236,177242],{"__ignoreMap":32},[460,176794,176795,176798,176800],{"class":462,"line":463},[460,176796,176797],{"class":466},"balance ",[460,176799,894],{"class":887},[460,176801,176802],{"class":900}," 1000\n",[460,176804,176805],{"class":462,"line":476},[460,176806,522],{"emptyLinePlaceholder":521},[460,176808,176809],{"class":462,"line":482},[460,176810,522],{"emptyLinePlaceholder":521},[460,176812,176813,176815,176817],{"class":462,"line":488},[460,176814,48352],{"class":887},[460,176816,166526],{"class":929},[460,176818,48358],{"class":466},[460,176820,176821,176823,176825,176828],{"class":462,"line":494},[460,176822,47706],{"class":900},[460,176824,2174],{"class":466},[460,176826,176827],{"class":1353},"\"====== ATM ======\"",[460,176829,3754],{"class":466},[460,176831,176832,176834,176836,176838],{"class":462,"line":500},[460,176833,47706],{"class":900},[460,176835,2174],{"class":466},[460,176837,175141],{"class":1353},[460,176839,3754],{"class":466},[460,176841,176842,176844,176846,176848],{"class":462,"line":506},[460,176843,47706],{"class":900},[460,176845,2174],{"class":466},[460,176847,175152],{"class":1353},[460,176849,3754],{"class":466},[460,176851,176852,176854,176856,176858],{"class":462,"line":512},[460,176853,47706],{"class":900},[460,176855,2174],{"class":466},[460,176857,175163],{"class":1353},[460,176859,3754],{"class":466},[460,176861,176862,176864,176866,176868],{"class":462,"line":518},[460,176863,47706],{"class":900},[460,176865,2174],{"class":466},[460,176867,175174],{"class":1353},[460,176869,3754],{"class":466},[460,176871,176872],{"class":462,"line":525},[460,176873,522],{"emptyLinePlaceholder":521},[460,176875,176876],{"class":462,"line":531},[460,176877,522],{"emptyLinePlaceholder":521},[460,176879,176880,176882,176885],{"class":462,"line":537},[460,176881,48352],{"class":887},[460,176883,176884],{"class":929}," show_balance",[460,176886,48358],{"class":466},[460,176888,176889,176891,176893,176895,176898,176900,176903,176905,176907],{"class":462,"line":543},[460,176890,47706],{"class":900},[460,176892,2174],{"class":466},[460,176894,16804],{"class":887},[460,176896,176897],{"class":1353},"\"当前余额:",[460,176899,17607],{"class":900},[460,176901,176902],{"class":466},"balance",[460,176904,612],{"class":900},[460,176906,171505],{"class":1353},[460,176908,3754],{"class":466},[460,176910,176911],{"class":462,"line":549},[460,176912,522],{"emptyLinePlaceholder":521},[460,176914,176915],{"class":462,"line":555},[460,176916,522],{"emptyLinePlaceholder":521},[460,176918,176919,176921,176924],{"class":462,"line":560},[460,176920,48352],{"class":887},[460,176922,176923],{"class":929}," save_money",[460,176925,48358],{"class":466},[460,176927,176928,176930],{"class":462,"line":566},[460,176929,176354],{"class":887},[460,176931,164592],{"class":466},[460,176933,176934,176937,176939,176941,176943,176945,176947,176950],{"class":462,"line":572},[460,176935,176936],{"class":466},"    money ",[460,176938,894],{"class":887},[460,176940,124290],{"class":900},[460,176942,2174],{"class":466},[460,176944,70068],{"class":900},[460,176946,2174],{"class":466},[460,176948,176949],{"class":1353},"\"请输入存款金额:\"",[460,176951,6311],{"class":466},[460,176953,176954,176956,176958,176960,176962],{"class":462,"line":578},[460,176955,19622],{"class":887},[460,176957,164635],{"class":466},[460,176959,3748],{"class":887},[460,176961,2224],{"class":900},[460,176963,20257],{"class":466},[460,176965,176966,176968,176970,176973],{"class":462,"line":812},[460,176967,48856],{"class":900},[460,176969,2174],{"class":466},[460,176971,176972],{"class":1353},"\"金额必须大于0\"",[460,176974,3754],{"class":466},[460,176976,176977],{"class":462,"line":818},[460,176978,166854],{"class":887},[460,176980,176981,176984,176986],{"class":462,"line":824},[460,176982,176983],{"class":466},"    balance ",[460,176985,3467],{"class":887},[460,176987,164668],{"class":466},[460,176989,176990,176992,176994,176997],{"class":462,"line":2074},[460,176991,47706],{"class":900},[460,176993,2174],{"class":466},[460,176995,176996],{"class":1353},"\"存款成功\"",[460,176998,3754],{"class":466},[460,177000,177001],{"class":462,"line":2088},[460,177002,177003],{"class":466},"    show_balance()\n",[460,177005,177006],{"class":462,"line":2103},[460,177007,522],{"emptyLinePlaceholder":521},[460,177009,177010],{"class":462,"line":2122},[460,177011,522],{"emptyLinePlaceholder":521},[460,177013,177014,177016,177019],{"class":462,"line":2144},[460,177015,48352],{"class":887},[460,177017,177018],{"class":929}," withdraw_money",[460,177020,48358],{"class":466},[460,177022,177023,177025],{"class":462,"line":2158},[460,177024,176354],{"class":887},[460,177026,164592],{"class":466},[460,177028,177029,177031,177033,177035,177037,177039,177041,177044],{"class":462,"line":2163},[460,177030,176936],{"class":466},[460,177032,894],{"class":887},[460,177034,124290],{"class":900},[460,177036,2174],{"class":466},[460,177038,70068],{"class":900},[460,177040,2174],{"class":466},[460,177042,177043],{"class":1353},"\"请输入取款金额:\"",[460,177045,6311],{"class":466},[460,177047,177048,177050,177052,177054,177056],{"class":462,"line":2168},[460,177049,19622],{"class":887},[460,177051,164635],{"class":466},[460,177053,3748],{"class":887},[460,177055,2224],{"class":900},[460,177057,20257],{"class":466},[460,177059,177060,177062,177064,177066],{"class":462,"line":2183},[460,177061,48856],{"class":900},[460,177063,2174],{"class":466},[460,177065,176972],{"class":1353},[460,177067,3754],{"class":466},[460,177069,177070],{"class":462,"line":2194},[460,177071,166854],{"class":887},[460,177073,177074,177076,177078,177080],{"class":462,"line":2199},[460,177075,19622],{"class":887},[460,177077,164635],{"class":466},[460,177079,17668],{"class":887},[460,177081,177082],{"class":466}," balance:\n",[460,177084,177085,177087,177089,177091],{"class":462,"line":2204},[460,177086,48856],{"class":900},[460,177088,2174],{"class":466},[460,177090,164730],{"class":1353},[460,177092,3754],{"class":466},[460,177094,177095],{"class":462,"line":2212},[460,177096,166854],{"class":887},[460,177098,177099,177101,177103],{"class":462,"line":2257},[460,177100,176983],{"class":466},[460,177102,164745],{"class":887},[460,177104,164668],{"class":466},[460,177106,177107,177109,177111,177114],{"class":462,"line":2285},[460,177108,47706],{"class":900},[460,177110,2174],{"class":466},[460,177112,177113],{"class":1353},"\"取款成功\"",[460,177115,3754],{"class":466},[460,177117,177118],{"class":462,"line":2298},[460,177119,177003],{"class":466},[460,177121,177122],{"class":462,"line":2303},[460,177123,522],{"emptyLinePlaceholder":521},[460,177125,177126],{"class":462,"line":2308},[460,177127,522],{"emptyLinePlaceholder":521},[460,177129,177130,177132,177134],{"class":462,"line":2318},[460,177131,123156],{"class":887},[460,177133,109785],{"class":900},[460,177135,20257],{"class":466},[460,177137,177138],{"class":462,"line":2333},[460,177139,177140],{"class":466},"    show_menu()\n",[460,177142,177143,177145,177147,177149,177151,177153],{"class":462,"line":2338},[460,177144,175185],{"class":466},[460,177146,894],{"class":887},[460,177148,76796],{"class":900},[460,177150,2174],{"class":466},[460,177152,167566],{"class":1353},[460,177154,3754],{"class":466},[460,177156,177157],{"class":462,"line":2343},[460,177158,522],{"emptyLinePlaceholder":521},[460,177160,177161,177163,177165,177167,177169],{"class":462,"line":2353},[460,177162,19622],{"class":887},[460,177164,167579],{"class":466},[460,177166,19471],{"class":887},[460,177168,167584],{"class":1353},[460,177170,20257],{"class":466},[460,177172,177173],{"class":462,"line":2368},[460,177174,177175],{"class":466},"        show_balance()\n",[460,177177,177178,177180,177182,177184,177186],{"class":462,"line":2381},[460,177179,55597],{"class":887},[460,177181,167579],{"class":466},[460,177183,19471],{"class":887},[460,177185,167603],{"class":1353},[460,177187,20257],{"class":466},[460,177189,177190],{"class":462,"line":2394},[460,177191,177192],{"class":466},"        save_money()\n",[460,177194,177195,177197,177199,177201,177203],{"class":462,"line":2399},[460,177196,55597],{"class":887},[460,177198,167579],{"class":466},[460,177200,19471],{"class":887},[460,177202,167621],{"class":1353},[460,177204,20257],{"class":466},[460,177206,177207],{"class":462,"line":2404},[460,177208,177209],{"class":466},"        withdraw_money()\n",[460,177211,177212,177214,177216,177218,177220],{"class":462,"line":2414},[460,177213,55597],{"class":887},[460,177215,167579],{"class":466},[460,177217,19471],{"class":887},[460,177219,167675],{"class":1353},[460,177221,20257],{"class":466},[460,177223,177224,177226,177228,177230],{"class":462,"line":2428},[460,177225,48856],{"class":900},[460,177227,2174],{"class":466},[460,177229,167686],{"class":1353},[460,177231,3754],{"class":466},[460,177233,177234],{"class":462,"line":2440},[460,177235,48032],{"class":887},[460,177237,177238,177240],{"class":462,"line":2445},[460,177239,172515],{"class":887},[460,177241,20257],{"class":466},[460,177243,177244,177246,177248,177250],{"class":462,"line":2450},[460,177245,48856],{"class":900},[460,177247,2174],{"class":466},[460,177249,167707],{"class":1353},[460,177251,3754],{"class":466},[14,177253,177254],{},"这个案例展示了函数拆分的价值：主流程只负责调度，具体业务交给函数。",[18,177256,177258],{"id":177257},"_514-易错点","5.14 易错点",[103,177260,177261,177264,177267,177272,177277,177280],{},[43,177262,177263],{},"函数定义后必须调用才会执行。",[43,177265,177266],{},"函数名后面有括号才是调用。",[43,177268,177269,177271],{},[457,177270,33464],{}," 后面的代码不会执行。",[43,177273,177274,177275,44794],{},"没有返回值的函数默认返回 ",[457,177276,110179],{},[43,177278,177279],{},"局部变量不能在函数外部访问。",[43,177281,177282,177283,177285],{},"不要滥用 ",[457,177284,176319],{},"，更好的方式是让函数返回新值。",[14,177287,177288,177289,177291],{},"例如不用 ",[457,177290,176319],{}," 改写存款：",[451,177293,177295],{"className":46787,"code":177294,"language":46789,"meta":32,"style":32},"def save_money(balance, money):\n    return balance + money\n\n\nbalance = 1000\nbalance = save_money(balance, 200)\nprint(balance)\n",[457,177296,177297,177306,177317,177321,177325,177333,177346],{"__ignoreMap":32},[460,177298,177299,177301,177303],{"class":462,"line":463},[460,177300,48352],{"class":887},[460,177302,176923],{"class":929},[460,177304,177305],{"class":466},"(balance, money):\n",[460,177307,177308,177310,177313,177315],{"class":462,"line":476},[460,177309,20605],{"class":887},[460,177311,177312],{"class":466}," balance ",[460,177314,8495],{"class":887},[460,177316,164668],{"class":466},[460,177318,177319],{"class":462,"line":482},[460,177320,522],{"emptyLinePlaceholder":521},[460,177322,177323],{"class":462,"line":488},[460,177324,522],{"emptyLinePlaceholder":521},[460,177326,177327,177329,177331],{"class":462,"line":494},[460,177328,176797],{"class":466},[460,177330,894],{"class":887},[460,177332,176802],{"class":900},[460,177334,177335,177337,177339,177342,177344],{"class":462,"line":500},[460,177336,176797],{"class":466},[460,177338,894],{"class":887},[460,177340,177341],{"class":466}," save_money(balance, ",[460,177343,5490],{"class":900},[460,177345,3754],{"class":466},[460,177347,177348,177350],{"class":462,"line":506},[460,177349,46824],{"class":900},[460,177351,177352],{"class":466},"(balance)\n",[18,177354,177356],{"id":177355},"_515-本章练习","5.15 本章练习",[103,177358,177359,177366,177372,177378,177384],{},[43,177360,177361,177362,177365],{},"定义函数 ",[457,177363,177364],{},"print_student(name, age)","，输出学生信息。",[43,177367,177361,177368,177371],{},[457,177369,177370],{},"get_max(a, b, c)","，返回三个数中的最大值。",[43,177373,177361,177374,177377],{},[457,177375,177376],{},"is_even(num)","，判断一个数是否为偶数。",[43,177379,177361,177380,177383],{},[457,177381,177382],{},"calculate_bmi(weight, height)","，返回 BMI。",[43,177385,177386],{},"把第 4 章的菜单程序拆分成多个函数。",[1944,177388,177389],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":32,"searchDepth":476,"depth":476,"links":177391},[177392,177393,177394,177395,177396,177397,177398,177399,177400,177404,177405,177406,177407,177408,177409],{"id":175412,"depth":476,"text":175413},{"id":175453,"depth":476,"text":175454},{"id":175543,"depth":476,"text":175544},{"id":175624,"depth":476,"text":175625},{"id":175757,"depth":476,"text":175758},{"id":175879,"depth":476,"text":175880},{"id":176001,"depth":476,"text":176002},{"id":176078,"depth":476,"text":176079},{"id":176200,"depth":476,"text":176201,"children":177401},[177402,177403],{"id":176204,"depth":482,"text":176205},{"id":176262,"depth":482,"text":176263},{"id":176391,"depth":476,"text":176392},{"id":176517,"depth":476,"text":176518},{"id":176630,"depth":476,"text":176631},{"id":176786,"depth":476,"text":176787},{"id":177257,"depth":476,"text":177258},{"id":177355,"depth":476,"text":177356},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch5",{"title":175404,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch5-函数基础","Eht1XzIe9875ocKpFbsjhzVr6wLsbs8TqR7KqoAw9_M",{"id":177416,"title":177417,"body":177418,"description":16682,"extension":16683,"meta":180462,"navigation":521,"path":180463,"seo":180464,"stem":180465,"__hash__":180466},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch6-数据容器.md","6. 数据容器",{"type":7,"value":177419,"toc":180443},[177420,177423,177427,177430,177433,177537,177540,177544,177547,177627,177630,177634,177637,177697,177700,177736,177739,177754,177758,177831,177834,177889,177892,177962,177965,178049,178059,178117,178121,178166,178169,178195,178198,178304,178308,178311,178353,178356,178420,178423,178427,178430,178491,178494,178524,178527,178565,178569,178572,178581,178584,178708,178711,178752,178756,178759,178770,178810,178813,178828,178833,178836,178903,178906,178996,179000,179003,179051,179054,179081,179083,179113,179116,179136,179139,179170,179173,179206,179210,179213,179237,179240,179264,179267,179291,179295,179298,179428,179431,179511,179514,179589,179593,179596,179646,179649,179691,179694,179718,179720,179744,179747,179802,179805,179871,179875,179878,179881,179919,179922,179975,179978,180024,180027,180060,180063,180067,180386,180390,180419,180423,180440],[10,177421,177417],{"id":177422},"_6-数据容器",[18,177424,177426],{"id":177425},"_61-什么是数据容器","6.1 什么是数据容器",[14,177428,177429],{},"数据容器用于一次保存多个数据。",[14,177431,177432],{},"常见容器：",[16884,177434,177435,177452],{},[16887,177436,177437],{},[16890,177438,177439,177441,177444,177447,177450],{},[16893,177440,42183],{},[16893,177442,177443],{},"是否有序",[16893,177445,177446],{},"是否可变",[16893,177448,177449],{},"是否允许重复",[16893,177451,43903],{},[16930,177453,177454,177472,177488,177503,177520],{},[16890,177455,177456,177459,177462,177465,177468],{},[16935,177457,177458],{},"list列表",[16935,177460,177461],{},"有序",[16935,177463,177464],{},"可变",[16935,177466,177467],{},"允许",[16935,177469,177470],{},[457,177471,169750],{},[16890,177473,177474,177477,177479,177482,177484],{},[16935,177475,177476],{},"tuple元组",[16935,177478,177461],{},[16935,177480,177481],{},"不可变",[16935,177483,177467],{},[16935,177485,177486],{},[457,177487,169763],{},[16890,177489,177490,177493,177495,177497,177499],{},[16935,177491,177492],{},"str字符串",[16935,177494,177461],{},[16935,177496,177481],{},[16935,177498,177467],{},[16935,177500,177501],{},[457,177502,170373],{},[16890,177504,177505,177508,177511,177513,177516],{},[16935,177506,177507],{},"set集合",[16935,177509,177510],{},"无序",[16935,177512,177464],{},[16935,177514,177515],{},"不允许",[16935,177517,177518],{},[457,177519,169788],{},[16890,177521,177522,177525,177527,177529,177532],{},[16935,177523,177524],{},"dict字典",[16935,177526,177461],{},[16935,177528,177464],{},[16935,177530,177531],{},"key不允许重复",[16935,177533,177534],{},[457,177535,177536],{},"{\"name\": \"小明\"}",[14,177538,177539],{},"Python 3.7 之后，字典保持插入顺序。",[18,177541,177543],{"id":177542},"_62-列表list","6.2 列表list",[14,177545,177546],{},"列表用于保存一组有顺序的数据。",[451,177548,177550],{"className":46787,"code":177549,"language":46789,"meta":32,"style":32},"names = [\"小明\", \"小红\", \"小刚\"]\nnumbers = [1, 2, 3, 4]\nmixed = [\"小明\", 18, True]\nempty = []\n",[457,177551,177552,177572,177597,177618],{"__ignoreMap":32},[460,177553,177554,177556,177558,177560,177562,177564,177566,177568,177570],{"class":462,"line":463},[460,177555,174873],{"class":466},[460,177557,894],{"class":887},[460,177559,897],{"class":466},[460,177561,164381],{"class":1353},[460,177563,904],{"class":466},[460,177565,165429],{"class":1353},[460,177567,904],{"class":466},[460,177569,174224],{"class":1353},[460,177571,13307],{"class":466},[460,177573,177574,177577,177579,177581,177583,177585,177587,177589,177591,177593,177595],{"class":462,"line":476},[460,177575,177576],{"class":466},"numbers ",[460,177578,894],{"class":887},[460,177580,897],{"class":466},[460,177582,901],{"class":900},[460,177584,904],{"class":466},[460,177586,907],{"class":900},[460,177588,904],{"class":466},[460,177590,913],{"class":900},[460,177592,904],{"class":466},[460,177594,918],{"class":900},[460,177596,13307],{"class":466},[460,177598,177599,177602,177604,177606,177608,177610,177612,177614,177616],{"class":462,"line":482},[460,177600,177601],{"class":466},"mixed ",[460,177603,894],{"class":887},[460,177605,897],{"class":466},[460,177607,164381],{"class":1353},[460,177609,904],{"class":466},[460,177611,2361],{"class":900},[460,177613,904],{"class":466},[460,177615,47882],{"class":900},[460,177617,13307],{"class":466},[460,177619,177620,177623,177625],{"class":462,"line":488},[460,177621,177622],{"class":466},"empty ",[460,177624,894],{"class":887},[460,177626,11766],{"class":466},[14,177628,177629],{},"推荐一个列表中保存同类数据，代码更清晰。",[18,177631,177633],{"id":177632},"_63-列表索引","6.3 列表索引",[14,177635,177636],{},"正向索引从 0 开始：",[451,177638,177640],{"className":46787,"code":177639,"language":46789,"meta":32,"style":32},"names = [\"小明\", \"小红\", \"小刚\"]\n\nprint(names[0])\nprint(names[1])\nprint(names[2])\n",[457,177641,177642,177662,177666,177677,177687],{"__ignoreMap":32},[460,177643,177644,177646,177648,177650,177652,177654,177656,177658,177660],{"class":462,"line":463},[460,177645,174873],{"class":466},[460,177647,894],{"class":887},[460,177649,897],{"class":466},[460,177651,164381],{"class":1353},[460,177653,904],{"class":466},[460,177655,165429],{"class":1353},[460,177657,904],{"class":466},[460,177659,174224],{"class":1353},[460,177661,13307],{"class":466},[460,177663,177664],{"class":462,"line":476},[460,177665,522],{"emptyLinePlaceholder":521},[460,177667,177668,177670,177673,177675],{"class":462,"line":482},[460,177669,46824],{"class":900},[460,177671,177672],{"class":466},"(names[",[460,177674,936],{"class":900},[460,177676,13249],{"class":466},[460,177678,177679,177681,177683,177685],{"class":462,"line":488},[460,177680,46824],{"class":900},[460,177682,177672],{"class":466},[460,177684,901],{"class":900},[460,177686,13249],{"class":466},[460,177688,177689,177691,177693,177695],{"class":462,"line":494},[460,177690,46824],{"class":900},[460,177692,177672],{"class":466},[460,177694,907],{"class":900},[460,177696,13249],{"class":466},[14,177698,177699],{},"反向索引从 -1 开始：",[451,177701,177703],{"className":46787,"code":177702,"language":46789,"meta":32,"style":32},"print(names[-1])  # 小刚\nprint(names[-2])  # 小红\n",[457,177704,177705,177721],{"__ignoreMap":32},[460,177706,177707,177709,177711,177713,177715,177718],{"class":462,"line":463},[460,177708,46824],{"class":900},[460,177710,177672],{"class":466},[460,177712,17259],{"class":887},[460,177714,901],{"class":900},[460,177716,177717],{"class":466},"])  ",[460,177719,177720],{"class":942},"# 小刚\n",[460,177722,177723,177725,177727,177729,177731,177733],{"class":462,"line":476},[460,177724,46824],{"class":900},[460,177726,177672],{"class":466},[460,177728,17259],{"class":887},[460,177730,907],{"class":900},[460,177732,177717],{"class":466},[460,177734,177735],{"class":942},"# 小红\n",[14,177737,177738],{},"索引越界会报错：",[451,177740,177742],{"className":46787,"code":177741,"language":46789,"meta":32,"style":32},"print(names[3])\n",[457,177743,177744],{"__ignoreMap":32},[460,177745,177746,177748,177750,177752],{"class":462,"line":463},[460,177747,46824],{"class":900},[460,177749,177672],{"class":466},[460,177751,913],{"class":900},[460,177753,13249],{"class":466},[18,177755,177757],{"id":177756},"_64-列表常用方法","6.4 列表常用方法",[451,177759,177761],{"className":46787,"code":177760,"language":46789,"meta":32,"style":32},"names = [\"小明\", \"小红\"]\n\nnames.append(\"小刚\")\nnames.insert(1, \"小李\")\nnames.extend([\"小王\", \"小赵\"])\n\nprint(names)\n",[457,177762,177763,177779,177783,177792,177806,177820,177824],{"__ignoreMap":32},[460,177764,177765,177767,177769,177771,177773,177775,177777],{"class":462,"line":463},[460,177766,174873],{"class":466},[460,177768,894],{"class":887},[460,177770,897],{"class":466},[460,177772,164381],{"class":1353},[460,177774,904],{"class":466},[460,177776,165429],{"class":1353},[460,177778,13307],{"class":466},[460,177780,177781],{"class":462,"line":476},[460,177782,522],{"emptyLinePlaceholder":521},[460,177784,177785,177788,177790],{"class":462,"line":482},[460,177786,177787],{"class":466},"names.append(",[460,177789,174224],{"class":1353},[460,177791,3754],{"class":466},[460,177793,177794,177797,177799,177801,177804],{"class":462,"line":488},[460,177795,177796],{"class":466},"names.insert(",[460,177798,901],{"class":900},[460,177800,904],{"class":466},[460,177802,177803],{"class":1353},"\"小李\"",[460,177805,3754],{"class":466},[460,177807,177808,177811,177813,177815,177818],{"class":462,"line":494},[460,177809,177810],{"class":466},"names.extend([",[460,177812,25170],{"class":1353},[460,177814,904],{"class":466},[460,177816,177817],{"class":1353},"\"小赵\"",[460,177819,13249],{"class":466},[460,177821,177822],{"class":462,"line":500},[460,177823,522],{"emptyLinePlaceholder":521},[460,177825,177826,177828],{"class":462,"line":506},[460,177827,46824],{"class":900},[460,177829,177830],{"class":466},"(names)\n",[14,177832,177833],{},"删除元素：",[451,177835,177837],{"className":46787,"code":177836,"language":46789,"meta":32,"style":32},"names.remove(\"小红\")\nlast = names.pop()\nfirst = names.pop(0)\ndel names[0]\nnames.clear()\n",[457,177838,177839,177848,177858,177872,177884],{"__ignoreMap":32},[460,177840,177841,177844,177846],{"class":462,"line":463},[460,177842,177843],{"class":466},"names.remove(",[460,177845,165429],{"class":1353},[460,177847,3754],{"class":466},[460,177849,177850,177853,177855],{"class":462,"line":476},[460,177851,177852],{"class":466},"last ",[460,177854,894],{"class":887},[460,177856,177857],{"class":466}," names.pop()\n",[460,177859,177860,177863,177865,177868,177870],{"class":462,"line":482},[460,177861,177862],{"class":466},"first ",[460,177864,894],{"class":887},[460,177866,177867],{"class":466}," names.pop(",[460,177869,936],{"class":900},[460,177871,3754],{"class":466},[460,177873,177874,177877,177880,177882],{"class":462,"line":488},[460,177875,177876],{"class":887},"del",[460,177878,177879],{"class":466}," names[",[460,177881,936],{"class":900},[460,177883,13307],{"class":466},[460,177885,177886],{"class":462,"line":494},[460,177887,177888],{"class":466},"names.clear()\n",[14,177890,177891],{},"查询和统计：",[451,177893,177895],{"className":46787,"code":177894,"language":46789,"meta":32,"style":32},"numbers = [1, 2, 3, 2, 4]\n\nprint(numbers.index(3))\nprint(numbers.count(2))\nprint(len(numbers))\n",[457,177896,177897,177925,177929,177940,177951],{"__ignoreMap":32},[460,177898,177899,177901,177903,177905,177907,177909,177911,177913,177915,177917,177919,177921,177923],{"class":462,"line":463},[460,177900,177576],{"class":466},[460,177902,894],{"class":887},[460,177904,897],{"class":466},[460,177906,901],{"class":900},[460,177908,904],{"class":466},[460,177910,907],{"class":900},[460,177912,904],{"class":466},[460,177914,913],{"class":900},[460,177916,904],{"class":466},[460,177918,907],{"class":900},[460,177920,904],{"class":466},[460,177922,918],{"class":900},[460,177924,13307],{"class":466},[460,177926,177927],{"class":462,"line":476},[460,177928,522],{"emptyLinePlaceholder":521},[460,177930,177931,177933,177936,177938],{"class":462,"line":482},[460,177932,46824],{"class":900},[460,177934,177935],{"class":466},"(numbers.index(",[460,177937,913],{"class":900},[460,177939,6311],{"class":466},[460,177941,177942,177944,177947,177949],{"class":462,"line":488},[460,177943,46824],{"class":900},[460,177945,177946],{"class":466},"(numbers.count(",[460,177948,907],{"class":900},[460,177950,6311],{"class":466},[460,177952,177953,177955,177957,177959],{"class":462,"line":494},[460,177954,46824],{"class":900},[460,177956,2174],{"class":466},[460,177958,23856],{"class":900},[460,177960,177961],{"class":466},"(numbers))\n",[14,177963,177964],{},"排序：",[451,177966,177968],{"className":46787,"code":177967,"language":46789,"meta":32,"style":32},"numbers = [3, 1, 5, 2]\n\nnumbers.sort()\nprint(numbers)\n\nnumbers.sort(reverse=True)\nprint(numbers)\n\nnumbers.reverse()\nprint(numbers)\n",[457,177969,177970,177994,177998,178003,178010,178014,178028,178034,178038,178043],{"__ignoreMap":32},[460,177971,177972,177974,177976,177978,177980,177982,177984,177986,177988,177990,177992],{"class":462,"line":463},[460,177973,177576],{"class":466},[460,177975,894],{"class":887},[460,177977,897],{"class":466},[460,177979,913],{"class":900},[460,177981,904],{"class":466},[460,177983,901],{"class":900},[460,177985,904],{"class":466},[460,177987,7290],{"class":900},[460,177989,904],{"class":466},[460,177991,907],{"class":900},[460,177993,13307],{"class":466},[460,177995,177996],{"class":462,"line":476},[460,177997,522],{"emptyLinePlaceholder":521},[460,177999,178000],{"class":462,"line":482},[460,178001,178002],{"class":466},"numbers.sort()\n",[460,178004,178005,178007],{"class":462,"line":488},[460,178006,46824],{"class":900},[460,178008,178009],{"class":466},"(numbers)\n",[460,178011,178012],{"class":462,"line":494},[460,178013,522],{"emptyLinePlaceholder":521},[460,178015,178016,178019,178022,178024,178026],{"class":462,"line":500},[460,178017,178018],{"class":466},"numbers.sort(",[460,178020,178021],{"class":3380},"reverse",[460,178023,894],{"class":887},[460,178025,47882],{"class":900},[460,178027,3754],{"class":466},[460,178029,178030,178032],{"class":462,"line":506},[460,178031,46824],{"class":900},[460,178033,178009],{"class":466},[460,178035,178036],{"class":462,"line":512},[460,178037,522],{"emptyLinePlaceholder":521},[460,178039,178040],{"class":462,"line":518},[460,178041,178042],{"class":466},"numbers.reverse()\n",[460,178044,178045,178047],{"class":462,"line":525},[460,178046,46824],{"class":900},[460,178048,178009],{"class":466},[14,178050,178051,178054,178055,178058],{},[457,178052,178053],{},"sort()"," 会修改原列表，",[457,178056,178057],{},"sorted()"," 返回新列表。",[451,178060,178062],{"className":46787,"code":178061,"language":46789,"meta":32,"style":32},"numbers = [3, 1, 5, 2]\nnew_numbers = sorted(numbers)\n\nprint(numbers)\nprint(new_numbers)\n",[457,178063,178064,178088,178100,178104,178110],{"__ignoreMap":32},[460,178065,178066,178068,178070,178072,178074,178076,178078,178080,178082,178084,178086],{"class":462,"line":463},[460,178067,177576],{"class":466},[460,178069,894],{"class":887},[460,178071,897],{"class":466},[460,178073,913],{"class":900},[460,178075,904],{"class":466},[460,178077,901],{"class":900},[460,178079,904],{"class":466},[460,178081,7290],{"class":900},[460,178083,904],{"class":466},[460,178085,907],{"class":900},[460,178087,13307],{"class":466},[460,178089,178090,178093,178095,178098],{"class":462,"line":476},[460,178091,178092],{"class":466},"new_numbers ",[460,178094,894],{"class":887},[460,178096,178097],{"class":900}," sorted",[460,178099,178009],{"class":466},[460,178101,178102],{"class":462,"line":482},[460,178103,522],{"emptyLinePlaceholder":521},[460,178105,178106,178108],{"class":462,"line":488},[460,178107,46824],{"class":900},[460,178109,178009],{"class":466},[460,178111,178112,178114],{"class":462,"line":494},[460,178113,46824],{"class":900},[460,178115,178116],{"class":466},"(new_numbers)\n",[18,178118,178120],{"id":178119},"_65-列表遍历","6.5 列表遍历",[451,178122,178124],{"className":46787,"code":178123,"language":46789,"meta":32,"style":32},"names = [\"小明\", \"小红\", \"小刚\"]\n\nfor name in names:\n    print(name)\n",[457,178125,178126,178146,178150,178160],{"__ignoreMap":32},[460,178127,178128,178130,178132,178134,178136,178138,178140,178142,178144],{"class":462,"line":463},[460,178129,174873],{"class":466},[460,178131,894],{"class":887},[460,178133,897],{"class":466},[460,178135,164381],{"class":1353},[460,178137,904],{"class":466},[460,178139,165429],{"class":1353},[460,178141,904],{"class":466},[460,178143,174224],{"class":1353},[460,178145,13307],{"class":466},[460,178147,178148],{"class":462,"line":476},[460,178149,522],{"emptyLinePlaceholder":521},[460,178151,178152,178154,178156,178158],{"class":462,"line":482},[460,178153,19547],{"class":887},[460,178155,174909],{"class":466},[460,178157,11713],{"class":887},[460,178159,174914],{"class":466},[460,178161,178162,178164],{"class":462,"line":488},[460,178163,47706],{"class":900},[460,178165,165153],{"class":466},[14,178167,178168],{},"需要索引时：",[451,178170,178172],{"className":46787,"code":178171,"language":46789,"meta":32,"style":32},"for index, name in enumerate(names):\n    print(index, name)\n",[457,178173,178174,178188],{"__ignoreMap":32},[460,178175,178176,178178,178181,178183,178185],{"class":462,"line":463},[460,178177,19547],{"class":887},[460,178179,178180],{"class":466}," index, name ",[460,178182,11713],{"class":887},[460,178184,48011],{"class":900},[460,178186,178187],{"class":466},"(names):\n",[460,178189,178190,178192],{"class":462,"line":476},[460,178191,47706],{"class":900},[460,178193,178194],{"class":466},"(index, name)\n",[14,178196,178197],{},"统计总分：",[451,178199,178201],{"className":46787,"code":178200,"language":46789,"meta":32,"style":32},"scores = [90, 85, 66, 78]\ntotal = 0\n\nfor score in scores:\n    total += score\n\navg = total \u002F len(scores)\nprint(f\"平均分:{avg:.2f}\")\n",[457,178202,178203,178228,178236,178240,178251,178259,178263,178280],{"__ignoreMap":32},[460,178204,178205,178208,178210,178212,178214,178216,178218,178220,178222,178224,178226],{"class":462,"line":463},[460,178206,178207],{"class":466},"scores ",[460,178209,894],{"class":887},[460,178211,897],{"class":466},[460,178213,17573],{"class":900},[460,178215,904],{"class":466},[460,178217,17452],{"class":900},[460,178219,904],{"class":466},[460,178221,16996],{"class":900},[460,178223,904],{"class":466},[460,178225,17285],{"class":900},[460,178227,13307],{"class":466},[460,178229,178230,178232,178234],{"class":462,"line":476},[460,178231,171753],{"class":466},[460,178233,894],{"class":887},[460,178235,13996],{"class":900},[460,178237,178238],{"class":462,"line":482},[460,178239,522],{"emptyLinePlaceholder":521},[460,178241,178242,178244,178246,178248],{"class":462,"line":488},[460,178243,19547],{"class":887},[460,178245,172276],{"class":466},[460,178247,11713],{"class":887},[460,178249,178250],{"class":466}," scores:\n",[460,178252,178253,178255,178257],{"class":462,"line":494},[460,178254,173800],{"class":466},[460,178256,3467],{"class":887},[460,178258,18147],{"class":466},[460,178260,178261],{"class":462,"line":500},[460,178262,522],{"emptyLinePlaceholder":521},[460,178264,178265,178268,178270,178273,178275,178277],{"class":462,"line":506},[460,178266,178267],{"class":466},"avg ",[460,178269,894],{"class":887},[460,178271,178272],{"class":466}," total ",[460,178274,8331],{"class":887},[460,178276,23829],{"class":900},[460,178278,178279],{"class":466},"(scores)\n",[460,178281,178282,178284,178286,178288,178291,178293,178296,178298,178300,178302],{"class":462,"line":512},[460,178283,46824],{"class":900},[460,178285,2174],{"class":466},[460,178287,16804],{"class":887},[460,178289,178290],{"class":1353},"\"平均分:",[460,178292,17607],{"class":900},[460,178294,178295],{"class":466},"avg",[460,178297,171652],{"class":887},[460,178299,612],{"class":900},[460,178301,16993],{"class":1353},[460,178303,3754],{"class":466},[18,178305,178307],{"id":178306},"_66-元组tuple","6.6 元组tuple",[14,178309,178310],{},"元组和列表类似，但不可修改。",[451,178312,178314],{"className":46787,"code":178313,"language":46789,"meta":32,"style":32},"point = (10, 20)\ninfo = (\"小明\", 18, \"北京\")\n",[457,178315,178316,178333],{"__ignoreMap":32},[460,178317,178318,178321,178323,178325,178327,178329,178331],{"class":462,"line":463},[460,178319,178320],{"class":466},"point ",[460,178322,894],{"class":887},[460,178324,11704],{"class":466},[460,178326,2096],{"class":900},[460,178328,904],{"class":466},[460,178330,2110],{"class":900},[460,178332,3754],{"class":466},[460,178334,178335,178337,178339,178341,178343,178345,178347,178349,178351],{"class":462,"line":476},[460,178336,130807],{"class":466},[460,178338,894],{"class":887},[460,178340,11704],{"class":466},[460,178342,164381],{"class":1353},[460,178344,904],{"class":466},[460,178346,2361],{"class":900},[460,178348,904],{"class":466},[460,178350,85424],{"class":1353},[460,178352,3754],{"class":466},[14,178354,178355],{},"单元素元组必须加逗号：",[451,178357,178359],{"className":46787,"code":178358,"language":46789,"meta":32,"style":32},"t1 = (10,)\nt2 = (10)\n\nprint(type(t1))  # tuple\nprint(type(t2))  # int\n",[457,178360,178361,178375,178388,178392,178406],{"__ignoreMap":32},[460,178362,178363,178366,178368,178370,178372],{"class":462,"line":463},[460,178364,178365],{"class":466},"t1 ",[460,178367,894],{"class":887},[460,178369,11704],{"class":466},[460,178371,2096],{"class":900},[460,178373,178374],{"class":466},",)\n",[460,178376,178377,178380,178382,178384,178386],{"class":462,"line":476},[460,178378,178379],{"class":466},"t2 ",[460,178381,894],{"class":887},[460,178383,11704],{"class":466},[460,178385,2096],{"class":900},[460,178387,3754],{"class":466},[460,178389,178390],{"class":462,"line":482},[460,178391,522],{"emptyLinePlaceholder":521},[460,178393,178394,178396,178398,178400,178403],{"class":462,"line":488},[460,178395,46824],{"class":900},[460,178397,2174],{"class":466},[460,178399,117600],{"class":900},[460,178401,178402],{"class":466},"(t1))  ",[460,178404,178405],{"class":942},"# tuple\n",[460,178407,178408,178410,178412,178414,178417],{"class":462,"line":494},[460,178409,46824],{"class":900},[460,178411,2174],{"class":466},[460,178413,117600],{"class":900},[460,178415,178416],{"class":466},"(t2))  ",[460,178418,178419],{"class":942},"# int\n",[14,178421,178422],{},"元组适合保存不希望被修改的数据，如坐标、配置项。",[18,178424,178426],{"id":178425},"_67-字符串str","6.7 字符串str",[14,178428,178429],{},"字符串也是序列，可以索引、切片和遍历。",[451,178431,178433],{"className":46787,"code":178432,"language":46789,"meta":32,"style":32},"text = \"python\"\n\nprint(text[0])\nprint(text[-1])\n\nfor ch in text:\n    print(ch)\n",[457,178434,178435,178443,178447,178458,178470,178474,178485],{"__ignoreMap":32},[460,178436,178437,178439,178441],{"class":462,"line":463},[460,178438,170937],{"class":466},[460,178440,894],{"class":887},[460,178442,174174],{"class":1353},[460,178444,178445],{"class":462,"line":476},[460,178446,522],{"emptyLinePlaceholder":521},[460,178448,178449,178451,178454,178456],{"class":462,"line":482},[460,178450,46824],{"class":900},[460,178452,178453],{"class":466},"(text[",[460,178455,936],{"class":900},[460,178457,13249],{"class":466},[460,178459,178460,178462,178464,178466,178468],{"class":462,"line":488},[460,178461,46824],{"class":900},[460,178463,178453],{"class":466},[460,178465,17259],{"class":887},[460,178467,901],{"class":900},[460,178469,13249],{"class":466},[460,178471,178472],{"class":462,"line":494},[460,178473,522],{"emptyLinePlaceholder":521},[460,178475,178476,178478,178480,178482],{"class":462,"line":500},[460,178477,19547],{"class":887},[460,178479,174185],{"class":466},[460,178481,11713],{"class":887},[460,178483,178484],{"class":466}," text:\n",[460,178486,178487,178489],{"class":462,"line":506},[460,178488,47706],{"class":900},[460,178490,174196],{"class":466},[14,178492,178493],{},"字符串不可变：",[451,178495,178497],{"className":46787,"code":178496,"language":46789,"meta":32,"style":32},"text = \"python\"\ntext[0] = \"P\"  # 报错\n",[457,178498,178499,178507],{"__ignoreMap":32},[460,178500,178501,178503,178505],{"class":462,"line":463},[460,178502,170937],{"class":466},[460,178504,894],{"class":887},[460,178506,174174],{"class":1353},[460,178508,178509,178512,178514,178516,178518,178521],{"class":462,"line":476},[460,178510,178511],{"class":466},"text[",[460,178513,936],{"class":900},[460,178515,11884],{"class":466},[460,178517,894],{"class":887},[460,178519,178520],{"class":1353}," \"P\"",[460,178522,178523],{"class":942},"  # 报错\n",[14,178525,178526],{},"如果要得到新字符串：",[451,178528,178530],{"className":46787,"code":178529,"language":46789,"meta":32,"style":32},"text = \"python\"\ntext = \"P\" + text[1:]\nprint(text)\n",[457,178531,178532,178540,178558],{"__ignoreMap":32},[460,178533,178534,178536,178538],{"class":462,"line":463},[460,178535,170937],{"class":466},[460,178537,894],{"class":887},[460,178539,174174],{"class":1353},[460,178541,178542,178544,178546,178548,178550,178553,178555],{"class":462,"line":476},[460,178543,170937],{"class":466},[460,178545,894],{"class":887},[460,178547,178520],{"class":1353},[460,178549,61870],{"class":887},[460,178551,178552],{"class":466}," text[",[460,178554,901],{"class":900},[460,178556,178557],{"class":466},":]\n",[460,178559,178560,178562],{"class":462,"line":482},[460,178561,46824],{"class":900},[460,178563,178564],{"class":466},"(text)\n",[18,178566,178568],{"id":178567},"_68-切片","6.8 切片",[14,178570,178571],{},"切片用于从序列中取一部分。",[451,178573,178575],{"className":46787,"code":178574,"language":46789,"meta":32,"style":32},"序列[开始:结束:步长]\n",[457,178576,178577],{"__ignoreMap":32},[460,178578,178579],{"class":462,"line":463},[460,178580,178574],{"class":466},[14,178582,178583],{},"结束位置不包含。",[451,178585,178587],{"className":46787,"code":178586,"language":46789,"meta":32,"style":32},"nums = [0, 1, 2, 3, 4, 5, 6]\n\nprint(nums[1:4])    # [1, 2, 3]\nprint(nums[:3])     # [0, 1, 2]\nprint(nums[3:])     # [3, 4, 5, 6]\nprint(nums[::2])    # [0, 2, 4, 6]\nprint(nums[::-1])   # 反转\n",[457,178588,178589,178626,178630,178649,178664,178678,178692],{"__ignoreMap":32},[460,178590,178591,178594,178596,178598,178600,178602,178604,178606,178608,178610,178612,178614,178616,178618,178620,178622,178624],{"class":462,"line":463},[460,178592,178593],{"class":466},"nums ",[460,178595,894],{"class":887},[460,178597,897],{"class":466},[460,178599,936],{"class":900},[460,178601,904],{"class":466},[460,178603,901],{"class":900},[460,178605,904],{"class":466},[460,178607,907],{"class":900},[460,178609,904],{"class":466},[460,178611,913],{"class":900},[460,178613,904],{"class":466},[460,178615,918],{"class":900},[460,178617,904],{"class":466},[460,178619,7290],{"class":900},[460,178621,904],{"class":466},[460,178623,4064],{"class":900},[460,178625,13307],{"class":466},[460,178627,178628],{"class":462,"line":476},[460,178629,522],{"emptyLinePlaceholder":521},[460,178631,178632,178634,178637,178639,178641,178643,178646],{"class":462,"line":482},[460,178633,46824],{"class":900},[460,178635,178636],{"class":466},"(nums[",[460,178638,901],{"class":900},[460,178640,1357],{"class":466},[460,178642,918],{"class":900},[460,178644,178645],{"class":466},"])    ",[460,178647,178648],{"class":942},"# [1, 2, 3]\n",[460,178650,178651,178653,178656,178658,178661],{"class":462,"line":488},[460,178652,46824],{"class":900},[460,178654,178655],{"class":466},"(nums[:",[460,178657,913],{"class":900},[460,178659,178660],{"class":466},"])     ",[460,178662,178663],{"class":942},"# [0, 1, 2]\n",[460,178665,178666,178668,178670,178672,178675],{"class":462,"line":494},[460,178667,46824],{"class":900},[460,178669,178636],{"class":466},[460,178671,913],{"class":900},[460,178673,178674],{"class":466},":])     ",[460,178676,178677],{"class":942},"# [3, 4, 5, 6]\n",[460,178679,178680,178682,178685,178687,178689],{"class":462,"line":500},[460,178681,46824],{"class":900},[460,178683,178684],{"class":466},"(nums[::",[460,178686,907],{"class":900},[460,178688,178645],{"class":466},[460,178690,178691],{"class":942},"# [0, 2, 4, 6]\n",[460,178693,178694,178696,178698,178700,178702,178705],{"class":462,"line":506},[460,178695,46824],{"class":900},[460,178697,178684],{"class":466},[460,178699,17259],{"class":887},[460,178701,901],{"class":900},[460,178703,178704],{"class":466},"])   ",[460,178706,178707],{"class":942},"# 反转\n",[14,178709,178710],{},"字符串切片：",[451,178712,178714],{"className":46787,"code":178713,"language":46789,"meta":32,"style":32},"text = \"abcdef\"\nprint(text[1:4])\nprint(text[::-1])\n",[457,178715,178716,178725,178739],{"__ignoreMap":32},[460,178717,178718,178720,178722],{"class":462,"line":463},[460,178719,170937],{"class":466},[460,178721,894],{"class":887},[460,178723,178724],{"class":1353}," \"abcdef\"\n",[460,178726,178727,178729,178731,178733,178735,178737],{"class":462,"line":476},[460,178728,46824],{"class":900},[460,178730,178453],{"class":466},[460,178732,901],{"class":900},[460,178734,1357],{"class":466},[460,178736,918],{"class":900},[460,178738,13249],{"class":466},[460,178740,178741,178743,178746,178748,178750],{"class":462,"line":482},[460,178742,46824],{"class":900},[460,178744,178745],{"class":466},"(text[::",[460,178747,17259],{"class":887},[460,178749,901],{"class":900},[460,178751,13249],{"class":466},[18,178753,178755],{"id":178754},"_69-集合set","6.9 集合set",[14,178757,178758],{},"集合特点：",[103,178760,178761,178764,178767],{},[43,178762,178763],{},"无序。",[43,178765,178766],{},"元素不重复。",[43,178768,178769],{},"可以做交集、并集、差集。",[451,178771,178773],{"className":46787,"code":178772,"language":46789,"meta":32,"style":32},"nums = {1, 2, 3, 3, 4}\nprint(nums)\n",[457,178774,178775,178803],{"__ignoreMap":32},[460,178776,178777,178779,178781,178783,178785,178787,178789,178791,178793,178795,178797,178799,178801],{"class":462,"line":463},[460,178778,178593],{"class":466},[460,178780,894],{"class":887},[460,178782,20959],{"class":466},[460,178784,901],{"class":900},[460,178786,904],{"class":466},[460,178788,907],{"class":900},[460,178790,904],{"class":466},[460,178792,913],{"class":900},[460,178794,904],{"class":466},[460,178796,913],{"class":900},[460,178798,904],{"class":466},[460,178800,918],{"class":900},[460,178802,821],{"class":466},[460,178804,178805,178807],{"class":462,"line":476},[460,178806,46824],{"class":900},[460,178808,178809],{"class":466},"(nums)\n",[14,178811,178812],{},"创建空集合：",[451,178814,178816],{"className":46787,"code":178815,"language":46789,"meta":32,"style":32},"s = set()\n",[457,178817,178818],{"__ignoreMap":32},[460,178819,178820,178822,178824,178826],{"class":462,"line":463},[460,178821,27044],{"class":466},[460,178823,894],{"class":887},[460,178825,134215],{"class":900},[460,178827,10758],{"class":466},[14,178829,25511,178830,178832],{},[457,178831,48864],{}," 是空字典，不是空集合。",[14,178834,178835],{},"集合常用操作：",[451,178837,178839],{"className":46787,"code":178838,"language":46789,"meta":32,"style":32},"s = {1, 2, 3}\n\ns.add(4)\ns.remove(2)\ns.discard(10)\nprint(len(s))\n",[457,178840,178841,178861,178865,178874,178883,178892],{"__ignoreMap":32},[460,178842,178843,178845,178847,178849,178851,178853,178855,178857,178859],{"class":462,"line":463},[460,178844,27044],{"class":466},[460,178846,894],{"class":887},[460,178848,20959],{"class":466},[460,178850,901],{"class":900},[460,178852,904],{"class":466},[460,178854,907],{"class":900},[460,178856,904],{"class":466},[460,178858,913],{"class":900},[460,178860,821],{"class":466},[460,178862,178863],{"class":462,"line":476},[460,178864,522],{"emptyLinePlaceholder":521},[460,178866,178867,178870,178872],{"class":462,"line":482},[460,178868,178869],{"class":466},"s.add(",[460,178871,918],{"class":900},[460,178873,3754],{"class":466},[460,178875,178876,178879,178881],{"class":462,"line":488},[460,178877,178878],{"class":466},"s.remove(",[460,178880,907],{"class":900},[460,178882,3754],{"class":466},[460,178884,178885,178888,178890],{"class":462,"line":494},[460,178886,178887],{"class":466},"s.discard(",[460,178889,2096],{"class":900},[460,178891,3754],{"class":466},[460,178893,178894,178896,178898,178900],{"class":462,"line":500},[460,178895,46824],{"class":900},[460,178897,2174],{"class":466},[460,178899,23856],{"class":900},[460,178901,178902],{"class":466},"(s))\n",[14,178904,178905],{},"交并差：",[451,178907,178909],{"className":46787,"code":178908,"language":46789,"meta":32,"style":32},"a = {1, 2, 3}\nb = {3, 4, 5}\n\nprint(a & b)  # 交集\nprint(a | b)  # 并集\nprint(a - b)  # 差集\n",[457,178910,178911,178931,178951,178955,178970,178983],{"__ignoreMap":32},[460,178912,178913,178915,178917,178919,178921,178923,178925,178927,178929],{"class":462,"line":463},[460,178914,27383],{"class":466},[460,178916,894],{"class":887},[460,178918,20959],{"class":466},[460,178920,901],{"class":900},[460,178922,904],{"class":466},[460,178924,907],{"class":900},[460,178926,904],{"class":466},[460,178928,913],{"class":900},[460,178930,821],{"class":466},[460,178932,178933,178935,178937,178939,178941,178943,178945,178947,178949],{"class":462,"line":476},[460,178934,27409],{"class":466},[460,178936,894],{"class":887},[460,178938,20959],{"class":466},[460,178940,913],{"class":900},[460,178942,904],{"class":466},[460,178944,918],{"class":900},[460,178946,904],{"class":466},[460,178948,7290],{"class":900},[460,178950,821],{"class":466},[460,178952,178953],{"class":462,"line":482},[460,178954,522],{"emptyLinePlaceholder":521},[460,178956,178957,178959,178962,178964,178967],{"class":462,"line":488},[460,178958,46824],{"class":900},[460,178960,178961],{"class":466},"(a ",[460,178963,17090],{"class":887},[460,178965,178966],{"class":466}," b)  ",[460,178968,178969],{"class":942},"# 交集\n",[460,178971,178972,178974,178976,178978,178980],{"class":462,"line":494},[460,178973,46824],{"class":900},[460,178975,178961],{"class":466},[460,178977,17630],{"class":887},[460,178979,178966],{"class":466},[460,178981,178982],{"class":942},"# 并集\n",[460,178984,178985,178987,178989,178991,178993],{"class":462,"line":500},[460,178986,46824],{"class":900},[460,178988,178961],{"class":466},[460,178990,17259],{"class":887},[460,178992,178966],{"class":466},[460,178994,178995],{"class":942},"# 差集\n",[18,178997,178999],{"id":178998},"_610-字典dict","6.10 字典dict",[14,179001,179002],{},"字典通过 key-value 保存数据。",[451,179004,179006],{"className":46787,"code":179005,"language":46789,"meta":32,"style":32},"student = {\n    \"name\": \"小明\",\n    \"age\": 18,\n    \"score\": 95\n}\n",[457,179007,179008,179016,179026,179037,179047],{"__ignoreMap":32},[460,179009,179010,179012,179014],{"class":462,"line":463},[460,179011,163974],{"class":466},[460,179013,894],{"class":887},[460,179015,1348],{"class":466},[460,179017,179018,179020,179022,179024],{"class":462,"line":476},[460,179019,161513],{"class":1353},[460,179021,1961],{"class":466},[460,179023,164381],{"class":1353},[460,179025,1363],{"class":466},[460,179027,179028,179031,179033,179035],{"class":462,"line":482},[460,179029,179030],{"class":1353},"    \"age\"",[460,179032,1961],{"class":466},[460,179034,2361],{"class":900},[460,179036,1363],{"class":466},[460,179038,179039,179042,179044],{"class":462,"line":488},[460,179040,179041],{"class":1353},"    \"score\"",[460,179043,1961],{"class":466},[460,179045,179046],{"class":900},"95\n",[460,179048,179049],{"class":462,"line":494},[460,179050,821],{"class":466},[14,179052,179053],{},"获取值：",[451,179055,179057],{"className":46787,"code":179056,"language":46789,"meta":32,"style":32},"print(student[\"name\"])\nprint(student.get(\"name\"))\n",[457,179058,179059,179070],{"__ignoreMap":32},[460,179060,179061,179063,179066,179068],{"class":462,"line":463},[460,179062,46824],{"class":900},[460,179064,179065],{"class":466},"(student[",[460,179067,78848],{"class":1353},[460,179069,13249],{"class":466},[460,179071,179072,179074,179077,179079],{"class":462,"line":476},[460,179073,46824],{"class":900},[460,179075,179076],{"class":466},"(student.get(",[460,179078,78848],{"class":1353},[460,179080,6311],{"class":466},[14,179082,31839],{},[451,179084,179086],{"className":46787,"code":179085,"language":46789,"meta":32,"style":32},"student[\"address\"]     # key不存在会报错\nstudent.get(\"address\") # key不存在返回None\n",[457,179087,179088,179101],{"__ignoreMap":32},[460,179089,179090,179092,179095,179098],{"class":462,"line":463},[460,179091,167352],{"class":466},[460,179093,179094],{"class":1353},"\"address\"",[460,179096,179097],{"class":466},"]     ",[460,179099,179100],{"class":942},"# key不存在会报错\n",[460,179102,179103,179106,179108,179110],{"class":462,"line":476},[460,179104,179105],{"class":466},"student.get(",[460,179107,179094],{"class":1353},[460,179109,8296],{"class":466},[460,179111,179112],{"class":942},"# key不存在返回None\n",[14,179114,179115],{},"设置默认值：",[451,179117,179119],{"className":46787,"code":179118,"language":46789,"meta":32,"style":32},"print(student.get(\"address\", \"未知\"))\n",[457,179120,179121],{"__ignoreMap":32},[460,179122,179123,179125,179127,179129,179131,179134],{"class":462,"line":463},[460,179124,46824],{"class":900},[460,179126,179076],{"class":466},[460,179128,179094],{"class":1353},[460,179130,904],{"class":466},[460,179132,179133],{"class":1353},"\"未知\"",[460,179135,6311],{"class":466},[14,179137,179138],{},"新增和修改：",[451,179140,179142],{"className":46787,"code":179141,"language":46789,"meta":32,"style":32},"student[\"age\"] = 19\nstudent[\"address\"] = \"北京\"\n",[457,179143,179144,179157],{"__ignoreMap":32},[460,179145,179146,179148,179150,179152,179154],{"class":462,"line":463},[460,179147,167352],{"class":466},[460,179149,85279],{"class":1353},[460,179151,11884],{"class":466},[460,179153,894],{"class":887},[460,179155,179156],{"class":900}," 19\n",[460,179158,179159,179161,179163,179165,179167],{"class":462,"line":476},[460,179160,167352],{"class":466},[460,179162,179094],{"class":1353},[460,179164,11884],{"class":466},[460,179166,894],{"class":887},[460,179168,179169],{"class":1353}," \"北京\"\n",[14,179171,179172],{},"删除：",[451,179174,179176],{"className":46787,"code":179175,"language":46789,"meta":32,"style":32},"score = student.pop(\"score\")\ndel student[\"age\"]\nstudent.clear()\n",[457,179177,179178,179191,179201],{"__ignoreMap":32},[460,179179,179180,179182,179184,179187,179189],{"class":462,"line":463},[460,179181,169851],{"class":466},[460,179183,894],{"class":887},[460,179185,179186],{"class":466}," student.pop(",[460,179188,165965],{"class":1353},[460,179190,3754],{"class":466},[460,179192,179193,179195,179197,179199],{"class":462,"line":476},[460,179194,177876],{"class":887},[460,179196,166642],{"class":466},[460,179198,85279],{"class":1353},[460,179200,13307],{"class":466},[460,179202,179203],{"class":462,"line":482},[460,179204,179205],{"class":466},"student.clear()\n",[18,179207,179209],{"id":179208},"_611-字典遍历","6.11 字典遍历",[14,179211,179212],{},"遍历 key：",[451,179214,179216],{"className":46787,"code":179215,"language":46789,"meta":32,"style":32},"for key in student:\n    print(key, student[key])\n",[457,179217,179218,179230],{"__ignoreMap":32},[460,179219,179220,179222,179225,179227],{"class":462,"line":463},[460,179221,19547],{"class":887},[460,179223,179224],{"class":466}," key ",[460,179226,11713],{"class":887},[460,179228,179229],{"class":466}," student:\n",[460,179231,179232,179234],{"class":462,"line":476},[460,179233,47706],{"class":900},[460,179235,179236],{"class":466},"(key, student[key])\n",[14,179238,179239],{},"遍历 value：",[451,179241,179243],{"className":46787,"code":179242,"language":46789,"meta":32,"style":32},"for value in student.values():\n    print(value)\n",[457,179244,179245,179257],{"__ignoreMap":32},[460,179246,179247,179249,179252,179254],{"class":462,"line":463},[460,179248,19547],{"class":887},[460,179250,179251],{"class":466}," value ",[460,179253,11713],{"class":887},[460,179255,179256],{"class":466}," student.values():\n",[460,179258,179259,179261],{"class":462,"line":476},[460,179260,47706],{"class":900},[460,179262,179263],{"class":466},"(value)\n",[14,179265,179266],{},"遍历 key 和 value：",[451,179268,179270],{"className":46787,"code":179269,"language":46789,"meta":32,"style":32},"for key, value in student.items():\n    print(key, value)\n",[457,179271,179272,179284],{"__ignoreMap":32},[460,179273,179274,179276,179279,179281],{"class":462,"line":463},[460,179275,19547],{"class":887},[460,179277,179278],{"class":466}," key, value ",[460,179280,11713],{"class":887},[460,179282,179283],{"class":466}," student.items():\n",[460,179285,179286,179288],{"class":462,"line":476},[460,179287,47706],{"class":900},[460,179289,179290],{"class":466},"(key, value)\n",[18,179292,179294],{"id":179293},"_612-嵌套容器","6.12 嵌套容器",[14,179296,179297],{},"列表中保存字典，是项目中最常见的结构之一。",[451,179299,179301],{"className":46787,"code":179300,"language":46789,"meta":32,"style":32},"students = [\n    {\"name\": \"小明\", \"age\": 18, \"score\": 95},\n    {\"name\": \"小红\", \"age\": 17, \"score\": 88},\n    {\"name\": \"小刚\", \"age\": 19, \"score\": 72},\n]\n\nfor student in students:\n    print(student[\"name\"], student[\"score\"])\n",[457,179302,179303,179311,179339,179367,179395,179399,179403,179413],{"__ignoreMap":32},[460,179304,179305,179307,179309],{"class":462,"line":463},[460,179306,174209],{"class":466},[460,179308,894],{"class":887},[460,179310,1385],{"class":466},[460,179312,179313,179315,179317,179319,179321,179323,179325,179327,179329,179331,179333,179335,179337],{"class":462,"line":476},[460,179314,162878],{"class":466},[460,179316,78848],{"class":1353},[460,179318,1961],{"class":466},[460,179320,164381],{"class":1353},[460,179322,904],{"class":466},[460,179324,85279],{"class":1353},[460,179326,1961],{"class":466},[460,179328,2361],{"class":900},[460,179330,904],{"class":466},[460,179332,165965],{"class":1353},[460,179334,1961],{"class":466},[460,179336,17696],{"class":900},[460,179338,21439],{"class":466},[460,179340,179341,179343,179345,179347,179349,179351,179353,179355,179357,179359,179361,179363,179365],{"class":462,"line":482},[460,179342,162878],{"class":466},[460,179344,78848],{"class":1353},[460,179346,1961],{"class":466},[460,179348,165429],{"class":1353},[460,179350,904],{"class":466},[460,179352,85279],{"class":1353},[460,179354,1961],{"class":466},[460,179356,17346],{"class":900},[460,179358,904],{"class":466},[460,179360,165965],{"class":1353},[460,179362,1961],{"class":466},[460,179364,17526],{"class":900},[460,179366,21439],{"class":466},[460,179368,179369,179371,179373,179375,179377,179379,179381,179383,179385,179387,179389,179391,179393],{"class":462,"line":488},[460,179370,162878],{"class":466},[460,179372,78848],{"class":1353},[460,179374,1961],{"class":466},[460,179376,174224],{"class":1353},[460,179378,904],{"class":466},[460,179380,85279],{"class":1353},[460,179382,1961],{"class":466},[460,179384,17394],{"class":900},[460,179386,904],{"class":466},[460,179388,165965],{"class":1353},[460,179390,1961],{"class":466},[460,179392,17140],{"class":900},[460,179394,21439],{"class":466},[460,179396,179397],{"class":462,"line":494},[460,179398,13307],{"class":466},[460,179400,179401],{"class":462,"line":500},[460,179402,522],{"emptyLinePlaceholder":521},[460,179404,179405,179407,179409,179411],{"class":462,"line":506},[460,179406,19547],{"class":887},[460,179408,166630],{"class":466},[460,179410,11713],{"class":887},[460,179412,166635],{"class":466},[460,179414,179415,179417,179419,179421,179424,179426],{"class":462,"line":512},[460,179416,47706],{"class":900},[460,179418,179065],{"class":466},[460,179420,78848],{"class":1353},[460,179422,179423],{"class":466},"], student[",[460,179425,165965],{"class":1353},[460,179427,13249],{"class":466},[14,179429,179430],{},"统计平均分：",[451,179432,179434],{"className":46787,"code":179433,"language":46789,"meta":32,"style":32},"total = 0\n\nfor student in students:\n    total += student[\"score\"]\n\navg = total \u002F len(students)\nprint(f\"平均分:{avg:.2f}\")\n",[457,179435,179436,179444,179448,179458,179470,179474,179489],{"__ignoreMap":32},[460,179437,179438,179440,179442],{"class":462,"line":463},[460,179439,171753],{"class":466},[460,179441,894],{"class":887},[460,179443,13996],{"class":900},[460,179445,179446],{"class":462,"line":476},[460,179447,522],{"emptyLinePlaceholder":521},[460,179449,179450,179452,179454,179456],{"class":462,"line":482},[460,179451,19547],{"class":887},[460,179453,166630],{"class":466},[460,179455,11713],{"class":887},[460,179457,166635],{"class":466},[460,179459,179460,179462,179464,179466,179468],{"class":462,"line":488},[460,179461,173800],{"class":466},[460,179463,3467],{"class":887},[460,179465,166642],{"class":466},[460,179467,165965],{"class":1353},[460,179469,13307],{"class":466},[460,179471,179472],{"class":462,"line":494},[460,179473,522],{"emptyLinePlaceholder":521},[460,179475,179476,179478,179480,179482,179484,179486],{"class":462,"line":500},[460,179477,178267],{"class":466},[460,179479,894],{"class":887},[460,179481,178272],{"class":466},[460,179483,8331],{"class":887},[460,179485,23829],{"class":900},[460,179487,179488],{"class":466},"(students)\n",[460,179490,179491,179493,179495,179497,179499,179501,179503,179505,179507,179509],{"class":462,"line":506},[460,179492,46824],{"class":900},[460,179494,2174],{"class":466},[460,179496,16804],{"class":887},[460,179498,178290],{"class":1353},[460,179500,17607],{"class":900},[460,179502,178295],{"class":466},[460,179504,171652],{"class":887},[460,179506,612],{"class":900},[460,179508,16993],{"class":1353},[460,179510,3754],{"class":466},[14,179512,179513],{},"查找学生：",[451,179515,179517],{"className":46787,"code":179516,"language":46789,"meta":32,"style":32},"target = input(\"请输入学生姓名:\")\n\nfor student in students:\n    if student[\"name\"] == target:\n        print(student)\n        break\nelse:\n    print(\"没有找到\")\n",[457,179518,179519,179534,179538,179548,179562,179568,179572,179578],{"__ignoreMap":32},[460,179520,179521,179523,179525,179527,179529,179532],{"class":462,"line":463},[460,179522,126071],{"class":466},[460,179524,894],{"class":887},[460,179526,76796],{"class":900},[460,179528,2174],{"class":466},[460,179530,179531],{"class":1353},"\"请输入学生姓名:\"",[460,179533,3754],{"class":466},[460,179535,179536],{"class":462,"line":476},[460,179537,522],{"emptyLinePlaceholder":521},[460,179539,179540,179542,179544,179546],{"class":462,"line":482},[460,179541,19547],{"class":887},[460,179543,166630],{"class":466},[460,179545,11713],{"class":887},[460,179547,166635],{"class":466},[460,179549,179550,179552,179554,179556,179558,179560],{"class":462,"line":488},[460,179551,19622],{"class":887},[460,179553,166642],{"class":466},[460,179555,78848],{"class":1353},[460,179557,11884],{"class":466},[460,179559,19471],{"class":887},[460,179561,174925],{"class":466},[460,179563,179564,179566],{"class":462,"line":494},[460,179565,48856],{"class":900},[460,179567,164535],{"class":466},[460,179569,179570],{"class":462,"line":500},[460,179571,48032],{"class":887},[460,179573,179574,179576],{"class":462,"line":506},[460,179575,3763],{"class":887},[460,179577,20257],{"class":466},[460,179579,179580,179582,179584,179587],{"class":462,"line":512},[460,179581,47706],{"class":900},[460,179583,2174],{"class":466},[460,179585,179586],{"class":1353},"\"没有找到\"",[460,179588,3754],{"class":466},[18,179590,179592],{"id":179591},"_613-容器通用操作","6.13 容器通用操作",[14,179594,179595],{},"长度：",[451,179597,179599],{"className":46787,"code":179598,"language":46789,"meta":32,"style":32},"len([1, 2, 3])\nlen(\"abc\")\nlen({\"name\": \"小明\"})\n",[457,179600,179601,179620,179630],{"__ignoreMap":32},[460,179602,179603,179605,179608,179610,179612,179614,179616,179618],{"class":462,"line":463},[460,179604,23856],{"class":900},[460,179606,179607],{"class":466},"([",[460,179609,901],{"class":900},[460,179611,904],{"class":466},[460,179613,907],{"class":900},[460,179615,904],{"class":466},[460,179617,913],{"class":900},[460,179619,13249],{"class":466},[460,179621,179622,179624,179626,179628],{"class":462,"line":476},[460,179623,23856],{"class":900},[460,179625,2174],{"class":466},[460,179627,170373],{"class":1353},[460,179629,3754],{"class":466},[460,179631,179632,179634,179637,179639,179641,179643],{"class":462,"line":482},[460,179633,23856],{"class":900},[460,179635,179636],{"class":466},"({",[460,179638,78848],{"class":1353},[460,179640,1961],{"class":466},[460,179642,164381],{"class":1353},[460,179644,179645],{"class":466},"})\n",[14,179647,179648],{},"最大最小：",[451,179650,179652],{"className":46787,"code":179651,"language":46789,"meta":32,"style":32},"max([1, 2, 3])\nmin([1, 2, 3])\n",[457,179653,179654,179672],{"__ignoreMap":32},[460,179655,179656,179658,179660,179662,179664,179666,179668,179670],{"class":462,"line":463},[460,179657,13378],{"class":900},[460,179659,179607],{"class":466},[460,179661,901],{"class":900},[460,179663,904],{"class":466},[460,179665,907],{"class":900},[460,179667,904],{"class":466},[460,179669,913],{"class":900},[460,179671,13249],{"class":466},[460,179673,179674,179677,179679,179681,179683,179685,179687,179689],{"class":462,"line":476},[460,179675,179676],{"class":900},"min",[460,179678,179607],{"class":466},[460,179680,901],{"class":900},[460,179682,904],{"class":466},[460,179684,907],{"class":900},[460,179686,904],{"class":466},[460,179688,913],{"class":900},[460,179690,13249],{"class":466},[14,179692,179693],{},"求和：",[451,179695,179697],{"className":46787,"code":179696,"language":46789,"meta":32,"style":32},"sum([1, 2, 3])\n",[457,179698,179699],{"__ignoreMap":32},[460,179700,179701,179704,179706,179708,179710,179712,179714,179716],{"class":462,"line":463},[460,179702,179703],{"class":900},"sum",[460,179705,179607],{"class":466},[460,179707,901],{"class":900},[460,179709,904],{"class":466},[460,179711,907],{"class":900},[460,179713,904],{"class":466},[460,179715,913],{"class":900},[460,179717,13249],{"class":466},[14,179719,177964],{},[451,179721,179723],{"className":46787,"code":179722,"language":46789,"meta":32,"style":32},"sorted([3, 1, 2])\n",[457,179724,179725],{"__ignoreMap":32},[460,179726,179727,179730,179732,179734,179736,179738,179740,179742],{"class":462,"line":463},[460,179728,179729],{"class":900},"sorted",[460,179731,179607],{"class":466},[460,179733,913],{"class":900},[460,179735,904],{"class":466},[460,179737,901],{"class":900},[460,179739,904],{"class":466},[460,179741,907],{"class":900},[460,179743,13249],{"class":466},[14,179745,179746],{},"类型转换：",[451,179748,179750],{"className":46787,"code":179749,"language":46789,"meta":32,"style":32},"list(\"abc\")\ntuple([1, 2, 3])\nset([1, 1, 2, 3])\n",[457,179751,179752,179762,179780],{"__ignoreMap":32},[460,179753,179754,179756,179758,179760],{"class":462,"line":463},[460,179755,168563],{"class":900},[460,179757,2174],{"class":466},[460,179759,170373],{"class":1353},[460,179761,3754],{"class":466},[460,179763,179764,179766,179768,179770,179772,179774,179776,179778],{"class":462,"line":476},[460,179765,169758],{"class":900},[460,179767,179607],{"class":466},[460,179769,901],{"class":900},[460,179771,904],{"class":466},[460,179773,907],{"class":900},[460,179775,904],{"class":466},[460,179777,913],{"class":900},[460,179779,13249],{"class":466},[460,179781,179782,179784,179786,179788,179790,179792,179794,179796,179798,179800],{"class":462,"line":482},[460,179783,169783],{"class":900},[460,179785,179607],{"class":466},[460,179787,901],{"class":900},[460,179789,904],{"class":466},[460,179791,901],{"class":900},[460,179793,904],{"class":466},[460,179795,907],{"class":900},[460,179797,904],{"class":466},[460,179799,913],{"class":900},[460,179801,13249],{"class":466},[14,179803,179804],{},"成员判断：",[451,179806,179808],{"className":46787,"code":179807,"language":46789,"meta":32,"style":32},"print(\"a\" in \"abc\")\nprint(1 in [1, 2, 3])\nprint(\"name\" in {\"name\": \"小明\"})\n",[457,179809,179810,179827,179851],{"__ignoreMap":32},[460,179811,179812,179814,179816,179819,179822,179825],{"class":462,"line":463},[460,179813,46824],{"class":900},[460,179815,2174],{"class":466},[460,179817,179818],{"class":1353},"\"a\"",[460,179820,179821],{"class":887}," in",[460,179823,179824],{"class":1353}," \"abc\"",[460,179826,3754],{"class":466},[460,179828,179829,179831,179833,179835,179837,179839,179841,179843,179845,179847,179849],{"class":462,"line":476},[460,179830,46824],{"class":900},[460,179832,2174],{"class":466},[460,179834,901],{"class":900},[460,179836,179821],{"class":887},[460,179838,897],{"class":466},[460,179840,901],{"class":900},[460,179842,904],{"class":466},[460,179844,907],{"class":900},[460,179846,904],{"class":466},[460,179848,913],{"class":900},[460,179850,13249],{"class":466},[460,179852,179853,179855,179857,179859,179861,179863,179865,179867,179869],{"class":462,"line":482},[460,179854,46824],{"class":900},[460,179856,2174],{"class":466},[460,179858,78848],{"class":1353},[460,179860,179821],{"class":887},[460,179862,20959],{"class":466},[460,179864,78848],{"class":1353},[460,179866,1961],{"class":466},[460,179868,164381],{"class":1353},[460,179870,179645],{"class":466},[18,179872,179874],{"id":179873},"_614-推导式","6.14 推导式",[14,179876,179877],{},"推导式用于快速生成容器。",[14,179879,179880],{},"列表推导式：",[451,179882,179884],{"className":46787,"code":179883,"language":46789,"meta":32,"style":32},"nums = [i for i in range(1, 6)]\nprint(nums)\n",[457,179885,179886,179913],{"__ignoreMap":32},[460,179887,179888,179890,179892,179895,179897,179899,179901,179903,179905,179907,179909,179911],{"class":462,"line":463},[460,179889,178593],{"class":466},[460,179891,894],{"class":887},[460,179893,179894],{"class":466}," [i ",[460,179896,19547],{"class":887},[460,179898,13991],{"class":466},[460,179900,11713],{"class":887},[460,179902,48848],{"class":900},[460,179904,2174],{"class":466},[460,179906,901],{"class":900},[460,179908,904],{"class":466},[460,179910,4064],{"class":900},[460,179912,111793],{"class":466},[460,179914,179915,179917],{"class":462,"line":476},[460,179916,46824],{"class":900},[460,179918,178809],{"class":466},[14,179920,179921],{},"带条件：",[451,179923,179925],{"className":46787,"code":179924,"language":46789,"meta":32,"style":32},"even_nums = [i for i in range(1, 101) if i % 2 == 0]\nprint(even_nums)\n",[457,179926,179927,179968],{"__ignoreMap":32},[460,179928,179929,179932,179934,179936,179938,179940,179942,179944,179946,179948,179950,179952,179954,179956,179958,179960,179962,179964,179966],{"class":462,"line":463},[460,179930,179931],{"class":466},"even_nums ",[460,179933,894],{"class":887},[460,179935,179894],{"class":466},[460,179937,19547],{"class":887},[460,179939,13991],{"class":466},[460,179941,11713],{"class":887},[460,179943,48848],{"class":900},[460,179945,2174],{"class":466},[460,179947,901],{"class":900},[460,179949,904],{"class":466},[460,179951,17075],{"class":900},[460,179953,8296],{"class":466},[460,179955,18100],{"class":887},[460,179957,13991],{"class":466},[460,179959,2328],{"class":887},[460,179961,1442],{"class":900},[460,179963,116052],{"class":887},[460,179965,2224],{"class":900},[460,179967,13307],{"class":466},[460,179969,179970,179972],{"class":462,"line":476},[460,179971,46824],{"class":900},[460,179973,179974],{"class":466},"(even_nums)\n",[14,179976,179977],{},"字典推导式：",[451,179979,179981],{"className":46787,"code":179980,"language":46789,"meta":32,"style":32},"squares = {i: i ** 2 for i in range(1, 6)}\nprint(squares)\n",[457,179982,179983,180017],{"__ignoreMap":32},[460,179984,179985,179988,179990,179993,179995,179997,180000,180002,180004,180006,180008,180010,180012,180014],{"class":462,"line":463},[460,179986,179987],{"class":466},"squares ",[460,179989,894],{"class":887},[460,179991,179992],{"class":466}," {i: i ",[460,179994,27126],{"class":887},[460,179996,1442],{"class":900},[460,179998,179999],{"class":887}," for",[460,180001,13991],{"class":466},[460,180003,11713],{"class":887},[460,180005,48848],{"class":900},[460,180007,2174],{"class":466},[460,180009,901],{"class":900},[460,180011,904],{"class":466},[460,180013,4064],{"class":900},[460,180015,180016],{"class":466},")}\n",[460,180018,180019,180021],{"class":462,"line":476},[460,180020,46824],{"class":900},[460,180022,180023],{"class":466},"(squares)\n",[14,180025,180026],{},"集合推导式：",[451,180028,180030],{"className":46787,"code":180029,"language":46789,"meta":32,"style":32},"chars = {ch for ch in \"hello\"}\nprint(chars)\n",[457,180031,180032,180053],{"__ignoreMap":32},[460,180033,180034,180037,180039,180042,180044,180046,180048,180051],{"class":462,"line":463},[460,180035,180036],{"class":466},"chars ",[460,180038,894],{"class":887},[460,180040,180041],{"class":466}," {ch ",[460,180043,19547],{"class":887},[460,180045,174185],{"class":466},[460,180047,11713],{"class":887},[460,180049,180050],{"class":1353}," \"hello\"",[460,180052,821],{"class":466},[460,180054,180055,180057],{"class":462,"line":476},[460,180056,46824],{"class":900},[460,180058,180059],{"class":466},"(chars)\n",[14,180061,180062],{},"推导式适合简单逻辑，复杂逻辑还是写普通循环。",[18,180064,180066],{"id":180065},"_615-小案例学生成绩统计","6.15 小案例：学生成绩统计",[451,180068,180070],{"className":46787,"code":180069,"language":46789,"meta":32,"style":32},"students = [\n    {\"name\": \"小明\", \"score\": 95},\n    {\"name\": \"小红\", \"score\": 88},\n    {\"name\": \"小刚\", \"score\": 72},\n    {\"name\": \"小李\", \"score\": 59},\n]\n\ntotal = 0\nmax_student = students[0]\npassed = []\n\nfor student in students:\n    total += student[\"score\"]\n\n    if student[\"score\"] > max_student[\"score\"]:\n        max_student = student\n\n    if student[\"score\"] >= 60:\n        passed.append(student)\n\navg = total \u002F len(students)\n\nprint(f\"平均分:{avg:.2f}\")\nprint(f\"最高分学生:{max_student['name']} {max_student['score']}\")\nprint(f\"及格人数:{len(passed)}\")\n",[457,180071,180072,180080,180100,180120,180140,180160,180164,180168,180176,180190,180199,180203,180213,180225,180229,180249,180258,180262,180278,180283,180287,180301,180305,180327,180363],{"__ignoreMap":32},[460,180073,180074,180076,180078],{"class":462,"line":463},[460,180075,174209],{"class":466},[460,180077,894],{"class":887},[460,180079,1385],{"class":466},[460,180081,180082,180084,180086,180088,180090,180092,180094,180096,180098],{"class":462,"line":476},[460,180083,162878],{"class":466},[460,180085,78848],{"class":1353},[460,180087,1961],{"class":466},[460,180089,164381],{"class":1353},[460,180091,904],{"class":466},[460,180093,165965],{"class":1353},[460,180095,1961],{"class":466},[460,180097,17696],{"class":900},[460,180099,21439],{"class":466},[460,180101,180102,180104,180106,180108,180110,180112,180114,180116,180118],{"class":462,"line":482},[460,180103,162878],{"class":466},[460,180105,78848],{"class":1353},[460,180107,1961],{"class":466},[460,180109,165429],{"class":1353},[460,180111,904],{"class":466},[460,180113,165965],{"class":1353},[460,180115,1961],{"class":466},[460,180117,17526],{"class":900},[460,180119,21439],{"class":466},[460,180121,180122,180124,180126,180128,180130,180132,180134,180136,180138],{"class":462,"line":488},[460,180123,162878],{"class":466},[460,180125,78848],{"class":1353},[460,180127,1961],{"class":466},[460,180129,174224],{"class":1353},[460,180131,904],{"class":466},[460,180133,165965],{"class":1353},[460,180135,1961],{"class":466},[460,180137,17140],{"class":900},[460,180139,21439],{"class":466},[460,180141,180142,180144,180146,180148,180150,180152,180154,180156,180158],{"class":462,"line":494},[460,180143,162878],{"class":466},[460,180145,78848],{"class":1353},[460,180147,1961],{"class":466},[460,180149,177803],{"class":1353},[460,180151,904],{"class":466},[460,180153,165965],{"class":1353},[460,180155,1961],{"class":466},[460,180157,17593],{"class":900},[460,180159,21439],{"class":466},[460,180161,180162],{"class":462,"line":500},[460,180163,13307],{"class":466},[460,180165,180166],{"class":462,"line":506},[460,180167,522],{"emptyLinePlaceholder":521},[460,180169,180170,180172,180174],{"class":462,"line":512},[460,180171,171753],{"class":466},[460,180173,894],{"class":887},[460,180175,13996],{"class":900},[460,180177,180178,180181,180183,180186,180188],{"class":462,"line":518},[460,180179,180180],{"class":466},"max_student ",[460,180182,894],{"class":887},[460,180184,180185],{"class":466}," students[",[460,180187,936],{"class":900},[460,180189,13307],{"class":466},[460,180191,180192,180195,180197],{"class":462,"line":525},[460,180193,180194],{"class":466},"passed ",[460,180196,894],{"class":887},[460,180198,11766],{"class":466},[460,180200,180201],{"class":462,"line":531},[460,180202,522],{"emptyLinePlaceholder":521},[460,180204,180205,180207,180209,180211],{"class":462,"line":537},[460,180206,19547],{"class":887},[460,180208,166630],{"class":466},[460,180210,11713],{"class":887},[460,180212,166635],{"class":466},[460,180214,180215,180217,180219,180221,180223],{"class":462,"line":543},[460,180216,173800],{"class":466},[460,180218,3467],{"class":887},[460,180220,166642],{"class":466},[460,180222,165965],{"class":1353},[460,180224,13307],{"class":466},[460,180226,180227],{"class":462,"line":549},[460,180228,522],{"emptyLinePlaceholder":521},[460,180230,180231,180233,180235,180237,180239,180241,180244,180246],{"class":462,"line":555},[460,180232,19622],{"class":887},[460,180234,166642],{"class":466},[460,180236,165965],{"class":1353},[460,180238,11884],{"class":466},[460,180240,17668],{"class":887},[460,180242,180243],{"class":466}," max_student[",[460,180245,165965],{"class":1353},[460,180247,180248],{"class":466},"]:\n",[460,180250,180251,180254,180256],{"class":462,"line":560},[460,180252,180253],{"class":466},"        max_student ",[460,180255,894],{"class":887},[460,180257,166658],{"class":466},[460,180259,180260],{"class":462,"line":566},[460,180261,522],{"emptyLinePlaceholder":521},[460,180263,180264,180266,180268,180270,180272,180274,180276],{"class":462,"line":572},[460,180265,19622],{"class":887},[460,180267,166642],{"class":466},[460,180269,165965],{"class":1353},[460,180271,11884],{"class":466},[460,180273,3738],{"class":887},[460,180275,172330],{"class":900},[460,180277,20257],{"class":466},[460,180279,180280],{"class":462,"line":578},[460,180281,180282],{"class":466},"        passed.append(student)\n",[460,180284,180285],{"class":462,"line":812},[460,180286,522],{"emptyLinePlaceholder":521},[460,180288,180289,180291,180293,180295,180297,180299],{"class":462,"line":818},[460,180290,178267],{"class":466},[460,180292,894],{"class":887},[460,180294,178272],{"class":466},[460,180296,8331],{"class":887},[460,180298,23829],{"class":900},[460,180300,179488],{"class":466},[460,180302,180303],{"class":462,"line":824},[460,180304,522],{"emptyLinePlaceholder":521},[460,180306,180307,180309,180311,180313,180315,180317,180319,180321,180323,180325],{"class":462,"line":2074},[460,180308,46824],{"class":900},[460,180310,2174],{"class":466},[460,180312,16804],{"class":887},[460,180314,178290],{"class":1353},[460,180316,17607],{"class":900},[460,180318,178295],{"class":466},[460,180320,171652],{"class":887},[460,180322,612],{"class":900},[460,180324,16993],{"class":1353},[460,180326,3754],{"class":466},[460,180328,180329,180331,180333,180335,180338,180340,180343,180345,180347,180349,180351,180353,180355,180357,180359,180361],{"class":462,"line":2088},[460,180330,46824],{"class":900},[460,180332,2174],{"class":466},[460,180334,16804],{"class":887},[460,180336,180337],{"class":1353},"\"最高分学生:",[460,180339,17607],{"class":900},[460,180341,180342],{"class":466},"max_student[",[460,180344,167375],{"class":1353},[460,180346,17649],{"class":466},[460,180348,612],{"class":900},[460,180350,20959],{"class":900},[460,180352,180342],{"class":466},[460,180354,167413],{"class":1353},[460,180356,17649],{"class":466},[460,180358,612],{"class":900},[460,180360,16993],{"class":1353},[460,180362,3754],{"class":466},[460,180364,180365,180367,180369,180371,180374,180377,180380,180382,180384],{"class":462,"line":2103},[460,180366,46824],{"class":900},[460,180368,2174],{"class":466},[460,180370,16804],{"class":887},[460,180372,180373],{"class":1353},"\"及格人数:",[460,180375,180376],{"class":900},"{len",[460,180378,180379],{"class":466},"(passed)",[460,180381,612],{"class":900},[460,180383,16993],{"class":1353},[460,180385,3754],{"class":466},[18,180387,180389],{"id":180388},"_616-易错点","6.16 易错点",[103,180391,180392,180395,180398,180401,180407,180416],{},[43,180393,180394],{},"列表可变，元组和字符串不可变。",[43,180396,180397],{},"切片结束位置不包含。",[43,180399,180400],{},"字典通过 key 取值，不是通过索引。",[43,180402,180403,180404,44794],{},"空集合要用 ",[457,180405,180406],{},"set()",[43,180408,118859,180409,180412,180413,44794],{},[457,180410,180411],{},"student[\"key\"]"," 前要确认 key 存在，或用 ",[457,180414,180415],{},"get()",[43,180417,180418],{},"嵌套容器要先看清楚每一层是什么类型。",[18,180420,180422],{"id":180421},"_617-本章练习","6.17 本章练习",[103,180424,180425,180428,180431,180434,180437],{},[43,180426,180427],{},"定义列表保存 5 个成绩，计算最高分、最低分、平均分。",[43,180429,180430],{},"输入一句话，统计每个字符出现次数。",[43,180432,180433],{},"使用集合去除列表中的重复元素。",[43,180435,180436],{},"使用字典保存一个学生的信息，并实现修改成绩。",[43,180438,180439],{},"使用列表字典结构保存多个学生，实现按姓名查询。",[1944,180441,180442],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":180444},[180445,180446,180447,180448,180449,180450,180451,180452,180453,180454,180455,180456,180457,180458,180459,180460,180461],{"id":177425,"depth":476,"text":177426},{"id":177542,"depth":476,"text":177543},{"id":177632,"depth":476,"text":177633},{"id":177756,"depth":476,"text":177757},{"id":178119,"depth":476,"text":178120},{"id":178306,"depth":476,"text":178307},{"id":178425,"depth":476,"text":178426},{"id":178567,"depth":476,"text":178568},{"id":178754,"depth":476,"text":178755},{"id":178998,"depth":476,"text":178999},{"id":179208,"depth":476,"text":179209},{"id":179293,"depth":476,"text":179294},{"id":179591,"depth":476,"text":179592},{"id":179873,"depth":476,"text":179874},{"id":180065,"depth":476,"text":180066},{"id":180388,"depth":476,"text":180389},{"id":180421,"depth":476,"text":180422},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch6",{"title":177417,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch6-数据容器","T8eCc8Q5mua2_dsYsMoauSCMOs5j-QG3lppjk0eGwro",{"id":180468,"title":180469,"body":180470,"description":16682,"extension":16683,"meta":182642,"navigation":521,"path":182643,"seo":182644,"stem":182645,"__hash__":182646},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch7-函数进阶.md","7. 函数进阶",{"type":7,"value":180471,"toc":182617},[180472,180475,180479,180482,180562,180565,180586,180589,180593,180596,180658,180661,180678,180682,180685,180730,180732,180740,180744,180747,180829,180832,180835,180860,180863,180886,180890,180893,180895,180957,180960,180962,181013,181017,181021,181027,181132,181136,181142,181213,181217,181220,181288,181291,181371,181375,181381,181417,181420,181423,181533,181539,181543,181546,181618,181621,181625,181629,181634,181696,181700,181705,181773,181777,181782,181898,181902,181905,181985,181988,181992,181995,182099,182101,182116,182119,182123,182261,182269,182273,182275,182286,182288,182546,182550,182582,182586,182614],[10,180473,180469],{"id":180474},"_7-函数进阶",[18,180476,180478],{"id":180477},"_71-多返回值","7.1 多返回值",[14,180480,180481],{},"Python 函数可以返回多个值，本质上返回的是元组。",[451,180483,180485],{"className":46787,"code":180484,"language":46789,"meta":32,"style":32},"def get_info():\n    name = \"小明\"\n    age = 18\n    score = 95\n    return name, age, score\n\n\nresult = get_info()\nprint(result)\nprint(type(result))\n",[457,180486,180487,180496,180504,180512,180521,180528,180532,180536,180545,180551],{"__ignoreMap":32},[460,180488,180489,180491,180494],{"class":462,"line":463},[460,180490,48352],{"class":887},[460,180492,180493],{"class":929}," get_info",[460,180495,48358],{"class":466},[460,180497,180498,180500,180502],{"class":462,"line":476},[460,180499,166863],{"class":466},[460,180501,894],{"class":887},[460,180503,163846],{"class":1353},[460,180505,180506,180508,180510],{"class":462,"line":482},[460,180507,166879],{"class":466},[460,180509,894],{"class":887},[460,180511,161044],{"class":900},[460,180513,180514,180516,180518],{"class":462,"line":488},[460,180515,166894],{"class":466},[460,180517,894],{"class":887},[460,180519,180520],{"class":900}," 95\n",[460,180522,180523,180525],{"class":462,"line":494},[460,180524,20605],{"class":887},[460,180526,180527],{"class":466}," name, age, score\n",[460,180529,180530],{"class":462,"line":500},[460,180531,522],{"emptyLinePlaceholder":521},[460,180533,180534],{"class":462,"line":506},[460,180535,522],{"emptyLinePlaceholder":521},[460,180537,180538,180540,180542],{"class":462,"line":512},[460,180539,175799],{"class":466},[460,180541,894],{"class":887},[460,180543,180544],{"class":466}," get_info()\n",[460,180546,180547,180549],{"class":462,"line":518},[460,180548,46824],{"class":900},[460,180550,92698],{"class":466},[460,180552,180553,180555,180557,180559],{"class":462,"line":525},[460,180554,46824],{"class":900},[460,180556,2174],{"class":466},[460,180558,117600],{"class":900},[460,180560,180561],{"class":466},"(result))\n",[14,180563,180564],{},"可以直接解包：",[451,180566,180568],{"className":46787,"code":180567,"language":46789,"meta":32,"style":32},"name, age, score = get_info()\nprint(name, age, score)\n",[457,180569,180570,180579],{"__ignoreMap":32},[460,180571,180572,180575,180577],{"class":462,"line":463},[460,180573,180574],{"class":466},"name, age, score ",[460,180576,894],{"class":887},[460,180578,180544],{"class":466},[460,180580,180581,180583],{"class":462,"line":476},[460,180582,46824],{"class":900},[460,180584,180585],{"class":466},"(name, age, score)\n",[14,180587,180588],{},"返回多个值适合函数需要同时给出多个结果时使用。",[18,180590,180592],{"id":180591},"_72-位置参数","7.2 位置参数",[14,180594,180595],{},"位置参数按顺序传递。",[451,180597,180599],{"className":46787,"code":180598,"language":46789,"meta":32,"style":32},"def introduce(name, age):\n    print(f\"我叫{name}，今年{age}岁\")\n\n\nintroduce(\"小明\", 18)\n",[457,180600,180601,180609,180637,180641,180645],{"__ignoreMap":32},[460,180602,180603,180605,180607],{"class":462,"line":463},[460,180604,48352],{"class":887},[460,180606,163865],{"class":929},[460,180608,163868],{"class":466},[460,180610,180611,180613,180615,180617,180619,180621,180623,180625,180627,180629,180631,180633,180635],{"class":462,"line":476},[460,180612,47706],{"class":900},[460,180614,2174],{"class":466},[460,180616,16804],{"class":887},[460,180618,163879],{"class":1353},[460,180620,17607],{"class":900},[460,180622,3440],{"class":466},[460,180624,612],{"class":900},[460,180626,163888],{"class":1353},[460,180628,17607],{"class":900},[460,180630,3989],{"class":466},[460,180632,612],{"class":900},[460,180634,163897],{"class":1353},[460,180636,3754],{"class":466},[460,180638,180639],{"class":462,"line":482},[460,180640,522],{"emptyLinePlaceholder":521},[460,180642,180643],{"class":462,"line":488},[460,180644,522],{"emptyLinePlaceholder":521},[460,180646,180647,180650,180652,180654,180656],{"class":462,"line":494},[460,180648,180649],{"class":466},"introduce(",[460,180651,164381],{"class":1353},[460,180653,904],{"class":466},[460,180655,2361],{"class":900},[460,180657,3754],{"class":466},[14,180659,180660],{},"顺序错了就会得到错误含义：",[451,180662,180664],{"className":46787,"code":180663,"language":46789,"meta":32,"style":32},"introduce(18, \"小明\")\n",[457,180665,180666],{"__ignoreMap":32},[460,180667,180668,180670,180672,180674,180676],{"class":462,"line":463},[460,180669,180649],{"class":466},[460,180671,2361],{"class":900},[460,180673,904],{"class":466},[460,180675,164381],{"class":1353},[460,180677,3754],{"class":466},[18,180679,180681],{"id":180680},"_73-关键字参数","7.3 关键字参数",[14,180683,180684],{},"关键字参数按参数名传递。",[451,180686,180688],{"className":46787,"code":180687,"language":46789,"meta":32,"style":32},"introduce(name=\"小明\", age=18)\nintroduce(age=18, name=\"小明\")\n",[457,180689,180690,180710],{"__ignoreMap":32},[460,180691,180692,180694,180696,180698,180700,180702,180704,180706,180708],{"class":462,"line":463},[460,180693,180649],{"class":466},[460,180695,3440],{"class":3380},[460,180697,894],{"class":887},[460,180699,164381],{"class":1353},[460,180701,904],{"class":466},[460,180703,3989],{"class":3380},[460,180705,894],{"class":887},[460,180707,2361],{"class":900},[460,180709,3754],{"class":466},[460,180711,180712,180714,180716,180718,180720,180722,180724,180726,180728],{"class":462,"line":476},[460,180713,180649],{"class":466},[460,180715,3989],{"class":3380},[460,180717,894],{"class":887},[460,180719,2361],{"class":900},[460,180721,904],{"class":466},[460,180723,3440],{"class":3380},[460,180725,894],{"class":887},[460,180727,164381],{"class":1353},[460,180729,3754],{"class":466},[14,180731,132427],{},[103,180733,180734,180737],{},[43,180735,180736],{},"顺序不容易错。",[43,180738,180739],{},"调用时可读性更强。",[18,180741,180743],{"id":180742},"_74-默认参数","7.4 默认参数",[14,180745,180746],{},"默认参数给参数设置默认值。",[451,180748,180750],{"className":46787,"code":180749,"language":46789,"meta":32,"style":32},"def connect(host, port=3306):\n    print(f\"连接{host}:{port}\")\n\n\nconnect(\"localhost\")\nconnect(\"localhost\", 6379)\n",[457,180751,180752,180768,180798,180802,180806,180816],{"__ignoreMap":32},[460,180753,180754,180756,180758,180761,180763,180766],{"class":462,"line":463},[460,180755,48352],{"class":887},[460,180757,136586],{"class":929},[460,180759,180760],{"class":466},"(host, port",[460,180762,894],{"class":887},[460,180764,180765],{"class":900},"3306",[460,180767,47194],{"class":466},[460,180769,180770,180772,180774,180776,180779,180781,180783,180785,180787,180789,180792,180794,180796],{"class":462,"line":476},[460,180771,47706],{"class":900},[460,180773,2174],{"class":466},[460,180775,16804],{"class":887},[460,180777,180778],{"class":1353},"\"连接",[460,180780,17607],{"class":900},[460,180782,43806],{"class":466},[460,180784,612],{"class":900},[460,180786,1357],{"class":1353},[460,180788,17607],{"class":900},[460,180790,180791],{"class":466},"port",[460,180793,612],{"class":900},[460,180795,16993],{"class":1353},[460,180797,3754],{"class":466},[460,180799,180800],{"class":462,"line":482},[460,180801,522],{"emptyLinePlaceholder":521},[460,180803,180804],{"class":462,"line":488},[460,180805,522],{"emptyLinePlaceholder":521},[460,180807,180808,180811,180814],{"class":462,"line":494},[460,180809,180810],{"class":466},"connect(",[460,180812,180813],{"class":1353},"\"localhost\"",[460,180815,3754],{"class":466},[460,180817,180818,180820,180822,180824,180827],{"class":462,"line":500},[460,180819,180810],{"class":466},[460,180821,180813],{"class":1353},[460,180823,904],{"class":466},[460,180825,180826],{"class":900},"6379",[460,180828,3754],{"class":466},[14,180830,180831],{},"注意：默认参数必须放在非默认参数后面。",[14,180833,180834],{},"错误：",[451,180836,180838],{"className":46787,"code":180837,"language":46789,"meta":32,"style":32},"def connect(port=3306, host):\n    pass\n",[457,180839,180840,180856],{"__ignoreMap":32},[460,180841,180842,180844,180846,180849,180851,180853],{"class":462,"line":463},[460,180843,48352],{"class":887},[460,180845,136586],{"class":929},[460,180847,180848],{"class":466},"(port",[460,180850,894],{"class":887},[460,180852,180765],{"class":900},[460,180854,180855],{"class":466},", host):\n",[460,180857,180858],{"class":462,"line":476},[460,180859,164030],{"class":887},[14,180861,180862],{},"正确：",[451,180864,180866],{"className":46787,"code":180865,"language":46789,"meta":32,"style":32},"def connect(host, port=3306):\n    pass\n",[457,180867,180868,180882],{"__ignoreMap":32},[460,180869,180870,180872,180874,180876,180878,180880],{"class":462,"line":463},[460,180871,48352],{"class":887},[460,180873,136586],{"class":929},[460,180875,180760],{"class":466},[460,180877,894],{"class":887},[460,180879,180765],{"class":900},[460,180881,47194],{"class":466},[460,180883,180884],{"class":462,"line":476},[460,180885,164030],{"class":887},[18,180887,180889],{"id":180888},"_75-默认参数的坑","7.5 默认参数的坑",[14,180891,180892],{},"不要使用可变对象作为默认参数。",[14,180894,172116],{},[451,180896,180898],{"className":46787,"code":180897,"language":46789,"meta":32,"style":32},"def add_item(item, items=[]):\n    items.append(item)\n    return items\n\n\nprint(add_item(\"a\"))\nprint(add_item(\"b\"))\n",[457,180899,180900,180915,180920,180927,180931,180935,180946],{"__ignoreMap":32},[460,180901,180902,180904,180907,180910,180912],{"class":462,"line":463},[460,180903,48352],{"class":887},[460,180905,180906],{"class":929}," add_item",[460,180908,180909],{"class":466},"(item, items",[460,180911,894],{"class":887},[460,180913,180914],{"class":466},"[]):\n",[460,180916,180917],{"class":462,"line":476},[460,180918,180919],{"class":466},"    items.append(item)\n",[460,180921,180922,180924],{"class":462,"line":482},[460,180923,20605],{"class":887},[460,180925,180926],{"class":466}," items\n",[460,180928,180929],{"class":462,"line":488},[460,180930,522],{"emptyLinePlaceholder":521},[460,180932,180933],{"class":462,"line":494},[460,180934,522],{"emptyLinePlaceholder":521},[460,180936,180937,180939,180942,180944],{"class":462,"line":500},[460,180938,46824],{"class":900},[460,180940,180941],{"class":466},"(add_item(",[460,180943,179818],{"class":1353},[460,180945,6311],{"class":466},[460,180947,180948,180950,180952,180955],{"class":462,"line":506},[460,180949,46824],{"class":900},[460,180951,180941],{"class":466},[460,180953,180954],{"class":1353},"\"b\"",[460,180956,6311],{"class":466},[14,180958,180959],{},"第二次调用会复用第一次的列表。",[14,180961,170381],{},[451,180963,180965],{"className":46787,"code":180964,"language":46789,"meta":32,"style":32},"def add_item(item, items=None):\n    if items is None:\n        items = []\n    items.append(item)\n    return items\n",[457,180966,180967,180981,180994,181003,181007],{"__ignoreMap":32},[460,180968,180969,180971,180973,180975,180977,180979],{"class":462,"line":463},[460,180970,48352],{"class":887},[460,180972,180906],{"class":929},[460,180974,180909],{"class":466},[460,180976,894],{"class":887},[460,180978,110179],{"class":900},[460,180980,47194],{"class":466},[460,180982,180983,180985,180988,180990,180992],{"class":462,"line":476},[460,180984,19622],{"class":887},[460,180986,180987],{"class":466}," items ",[460,180989,55232],{"class":887},[460,180991,55238],{"class":900},[460,180993,20257],{"class":466},[460,180995,180996,180999,181001],{"class":462,"line":482},[460,180997,180998],{"class":466},"        items ",[460,181000,894],{"class":887},[460,181002,11766],{"class":466},[460,181004,181005],{"class":462,"line":488},[460,181006,180919],{"class":466},[460,181008,181009,181011],{"class":462,"line":494},[460,181010,20605],{"class":887},[460,181012,180926],{"class":466},[18,181014,181016],{"id":181015},"_76-不定长参数","7.6 不定长参数",[23,181018,181020],{"id":181019},"_761-args","7.6.1 *args",[14,181022,181023,181026],{},[457,181024,181025],{},"*args"," 接收任意数量的位置参数，得到元组。",[451,181028,181030],{"className":46787,"code":181029,"language":46789,"meta":32,"style":32},"def add(*args):\n    total = 0\n    for num in args:\n        total += num\n    return total\n\n\nprint(add(1, 2, 3))\nprint(add(1, 2, 3, 4, 5))\n",[457,181031,181032,181045,181053,181064,181073,181079,181083,181087,181106],{"__ignoreMap":32},[460,181033,181034,181036,181038,181040,181042],{"class":462,"line":463},[460,181035,48352],{"class":887},[460,181037,21716],{"class":929},[460,181039,2174],{"class":466},[460,181041,8320],{"class":887},[460,181043,181044],{"class":466},"args):\n",[460,181046,181047,181049,181051],{"class":462,"line":476},[460,181048,173800],{"class":466},[460,181050,894],{"class":887},[460,181052,13996],{"class":900},[460,181054,181055,181057,181059,181061],{"class":462,"line":482},[460,181056,19722],{"class":887},[460,181058,170673],{"class":466},[460,181060,11713],{"class":887},[460,181062,181063],{"class":466}," args:\n",[460,181065,181066,181068,181070],{"class":462,"line":488},[460,181067,174475],{"class":466},[460,181069,3467],{"class":887},[460,181071,181072],{"class":466}," num\n",[460,181074,181075,181077],{"class":462,"line":494},[460,181076,20605],{"class":887},[460,181078,176780],{"class":466},[460,181080,181081],{"class":462,"line":500},[460,181082,522],{"emptyLinePlaceholder":521},[460,181084,181085],{"class":462,"line":506},[460,181086,522],{"emptyLinePlaceholder":521},[460,181088,181089,181091,181094,181096,181098,181100,181102,181104],{"class":462,"line":512},[460,181090,46824],{"class":900},[460,181092,181093],{"class":466},"(add(",[460,181095,901],{"class":900},[460,181097,904],{"class":466},[460,181099,907],{"class":900},[460,181101,904],{"class":466},[460,181103,913],{"class":900},[460,181105,6311],{"class":466},[460,181107,181108,181110,181112,181114,181116,181118,181120,181122,181124,181126,181128,181130],{"class":462,"line":518},[460,181109,46824],{"class":900},[460,181111,181093],{"class":466},[460,181113,901],{"class":900},[460,181115,904],{"class":466},[460,181117,907],{"class":900},[460,181119,904],{"class":466},[460,181121,913],{"class":900},[460,181123,904],{"class":466},[460,181125,918],{"class":900},[460,181127,904],{"class":466},[460,181129,7290],{"class":900},[460,181131,6311],{"class":466},[23,181133,181135],{"id":181134},"_762-kwargs","7.6.2 **kwargs",[14,181137,181138,181141],{},[457,181139,181140],{},"**kwargs"," 接收任意数量的关键字参数，得到字典。",[451,181143,181145],{"className":46787,"code":181144,"language":46789,"meta":32,"style":32},"def print_info(**kwargs):\n    for key, value in kwargs.items():\n        print(key, value)\n\n\nprint_info(name=\"小明\", age=18, city=\"北京\")\n",[457,181146,181147,181160,181171,181177,181181,181185],{"__ignoreMap":32},[460,181148,181149,181151,181153,181155,181157],{"class":462,"line":463},[460,181150,48352],{"class":887},[460,181152,176438],{"class":929},[460,181154,2174],{"class":466},[460,181156,27126],{"class":887},[460,181158,181159],{"class":466},"kwargs):\n",[460,181161,181162,181164,181166,181168],{"class":462,"line":476},[460,181163,19722],{"class":887},[460,181165,179278],{"class":466},[460,181167,11713],{"class":887},[460,181169,181170],{"class":466}," kwargs.items():\n",[460,181172,181173,181175],{"class":462,"line":482},[460,181174,48856],{"class":900},[460,181176,179290],{"class":466},[460,181178,181179],{"class":462,"line":488},[460,181180,522],{"emptyLinePlaceholder":521},[460,181182,181183],{"class":462,"line":494},[460,181184,522],{"emptyLinePlaceholder":521},[460,181186,181187,181189,181191,181193,181195,181197,181199,181201,181203,181205,181207,181209,181211],{"class":462,"line":500},[460,181188,176503],{"class":466},[460,181190,3440],{"class":3380},[460,181192,894],{"class":887},[460,181194,164381],{"class":1353},[460,181196,904],{"class":466},[460,181198,3989],{"class":3380},[460,181200,894],{"class":887},[460,181202,2361],{"class":900},[460,181204,904],{"class":466},[460,181206,86415],{"class":3380},[460,181208,894],{"class":887},[460,181210,85424],{"class":1353},[460,181212,3754],{"class":466},[18,181214,181216],{"id":181215},"_77-参数解包","7.7 参数解包",[14,181218,181219],{},"列表或元组解包为位置参数：",[451,181221,181223],{"className":46787,"code":181222,"language":46789,"meta":32,"style":32},"def add(a, b, c):\n    return a + b + c\n\n\nnums = [1, 2, 3]\nprint(add(*nums))\n",[457,181224,181225,181234,181249,181253,181257,181277],{"__ignoreMap":32},[460,181226,181227,181229,181231],{"class":462,"line":463},[460,181228,48352],{"class":887},[460,181230,21716],{"class":929},[460,181232,181233],{"class":466},"(a, b, c):\n",[460,181235,181236,181238,181240,181242,181244,181246],{"class":462,"line":476},[460,181237,20605],{"class":887},[460,181239,27333],{"class":466},[460,181241,8495],{"class":887},[460,181243,27346],{"class":466},[460,181245,8495],{"class":887},[460,181247,181248],{"class":466}," c\n",[460,181250,181251],{"class":462,"line":482},[460,181252,522],{"emptyLinePlaceholder":521},[460,181254,181255],{"class":462,"line":488},[460,181256,522],{"emptyLinePlaceholder":521},[460,181258,181259,181261,181263,181265,181267,181269,181271,181273,181275],{"class":462,"line":494},[460,181260,178593],{"class":466},[460,181262,894],{"class":887},[460,181264,897],{"class":466},[460,181266,901],{"class":900},[460,181268,904],{"class":466},[460,181270,907],{"class":900},[460,181272,904],{"class":466},[460,181274,913],{"class":900},[460,181276,13307],{"class":466},[460,181278,181279,181281,181283,181285],{"class":462,"line":500},[460,181280,46824],{"class":900},[460,181282,181093],{"class":466},[460,181284,8320],{"class":887},[460,181286,181287],{"class":466},"nums))\n",[14,181289,181290],{},"字典解包为关键字参数：",[451,181292,181294],{"className":46787,"code":181293,"language":46789,"meta":32,"style":32},"def introduce(name, age):\n    print(f\"{name} {age}\")\n\n\ninfo = {\"name\": \"小明\", \"age\": 18}\nintroduce(**info)\n",[457,181295,181296,181304,181330,181334,181338,181362],{"__ignoreMap":32},[460,181297,181298,181300,181302],{"class":462,"line":463},[460,181299,48352],{"class":887},[460,181301,163865],{"class":929},[460,181303,163868],{"class":466},[460,181305,181306,181308,181310,181312,181314,181316,181318,181320,181322,181324,181326,181328],{"class":462,"line":476},[460,181307,47706],{"class":900},[460,181309,2174],{"class":466},[460,181311,16804],{"class":887},[460,181313,16993],{"class":1353},[460,181315,17607],{"class":900},[460,181317,3440],{"class":466},[460,181319,612],{"class":900},[460,181321,20959],{"class":900},[460,181323,3989],{"class":466},[460,181325,612],{"class":900},[460,181327,16993],{"class":1353},[460,181329,3754],{"class":466},[460,181331,181332],{"class":462,"line":482},[460,181333,522],{"emptyLinePlaceholder":521},[460,181335,181336],{"class":462,"line":488},[460,181337,522],{"emptyLinePlaceholder":521},[460,181339,181340,181342,181344,181346,181348,181350,181352,181354,181356,181358,181360],{"class":462,"line":494},[460,181341,130807],{"class":466},[460,181343,894],{"class":887},[460,181345,20959],{"class":466},[460,181347,78848],{"class":1353},[460,181349,1961],{"class":466},[460,181351,164381],{"class":1353},[460,181353,904],{"class":466},[460,181355,85279],{"class":1353},[460,181357,1961],{"class":466},[460,181359,2361],{"class":900},[460,181361,821],{"class":466},[460,181363,181364,181366,181368],{"class":462,"line":500},[460,181365,180649],{"class":466},[460,181367,27126],{"class":887},[460,181369,181370],{"class":466},"info)\n",[18,181372,181374],{"id":181373},"_78-匿名函数lambda","7.8 匿名函数lambda",[14,181376,181377,181380],{},[457,181378,181379],{},"lambda"," 用于定义简单匿名函数。",[451,181382,181384],{"className":46787,"code":181383,"language":46789,"meta":32,"style":32},"add = lambda a, b: a + b\nprint(add(1, 2))\n",[457,181385,181386,181403],{"__ignoreMap":32},[460,181387,181388,181391,181393,181396,181399,181401],{"class":462,"line":463},[460,181389,181390],{"class":466},"add ",[460,181392,894],{"class":887},[460,181394,181395],{"class":887}," lambda",[460,181397,181398],{"class":466}," a, b: a ",[460,181400,8495],{"class":887},[460,181402,165597],{"class":466},[460,181404,181405,181407,181409,181411,181413,181415],{"class":462,"line":476},[460,181406,46824],{"class":900},[460,181408,181093],{"class":466},[460,181410,901],{"class":900},[460,181412,904],{"class":466},[460,181414,907],{"class":900},[460,181416,6311],{"class":466},[14,181418,181419],{},"常和排序、过滤等函数一起使用。",[14,181421,181422],{},"按分数排序：",[451,181424,181426],{"className":46787,"code":181425,"language":46789,"meta":32,"style":32},"students = [\n    {\"name\": \"小明\", \"score\": 95},\n    {\"name\": \"小红\", \"score\": 88},\n    {\"name\": \"小刚\", \"score\": 72},\n]\n\nstudents.sort(key=lambda item: item[\"score\"], reverse=True)\nprint(students)\n",[457,181427,181428,181436,181456,181476,181496,181500,181504,181527],{"__ignoreMap":32},[460,181429,181430,181432,181434],{"class":462,"line":463},[460,181431,174209],{"class":466},[460,181433,894],{"class":887},[460,181435,1385],{"class":466},[460,181437,181438,181440,181442,181444,181446,181448,181450,181452,181454],{"class":462,"line":476},[460,181439,162878],{"class":466},[460,181441,78848],{"class":1353},[460,181443,1961],{"class":466},[460,181445,164381],{"class":1353},[460,181447,904],{"class":466},[460,181449,165965],{"class":1353},[460,181451,1961],{"class":466},[460,181453,17696],{"class":900},[460,181455,21439],{"class":466},[460,181457,181458,181460,181462,181464,181466,181468,181470,181472,181474],{"class":462,"line":482},[460,181459,162878],{"class":466},[460,181461,78848],{"class":1353},[460,181463,1961],{"class":466},[460,181465,165429],{"class":1353},[460,181467,904],{"class":466},[460,181469,165965],{"class":1353},[460,181471,1961],{"class":466},[460,181473,17526],{"class":900},[460,181475,21439],{"class":466},[460,181477,181478,181480,181482,181484,181486,181488,181490,181492,181494],{"class":462,"line":488},[460,181479,162878],{"class":466},[460,181481,78848],{"class":1353},[460,181483,1961],{"class":466},[460,181485,174224],{"class":1353},[460,181487,904],{"class":466},[460,181489,165965],{"class":1353},[460,181491,1961],{"class":466},[460,181493,17140],{"class":900},[460,181495,21439],{"class":466},[460,181497,181498],{"class":462,"line":494},[460,181499,13307],{"class":466},[460,181501,181502],{"class":462,"line":500},[460,181503,522],{"emptyLinePlaceholder":521},[460,181505,181506,181509,181511,181513,181515,181517,181519,181521,181523,181525],{"class":462,"line":506},[460,181507,181508],{"class":466},"students.sort(",[460,181510,168439],{"class":3380},[460,181512,168442],{"class":887},[460,181514,168445],{"class":466},[460,181516,165965],{"class":1353},[460,181518,126695],{"class":466},[460,181520,178021],{"class":3380},[460,181522,894],{"class":887},[460,181524,47882],{"class":900},[460,181526,3754],{"class":466},[460,181528,181529,181531],{"class":462,"line":512},[460,181530,46824],{"class":900},[460,181532,179488],{"class":466},[14,181534,181535,181536,181538],{},"如果逻辑复杂，不要硬写 ",[457,181537,181379],{},"，定义普通函数更清晰。",[18,181540,181542],{"id":181541},"_79-函数作为参数","7.9 函数作为参数",[14,181544,181545],{},"函数可以作为参数传给另一个函数。",[451,181547,181549],{"className":46787,"code":181548,"language":46789,"meta":32,"style":32},"def add(a, b):\n    return a + b\n\n\ndef calculate(a, b, func):\n    return func(a, b)\n\n\nprint(calculate(10, 20, add))\n",[457,181550,181551,181559,181569,181573,181577,181587,181594,181598,181602],{"__ignoreMap":32},[460,181552,181553,181555,181557],{"class":462,"line":463},[460,181554,48352],{"class":887},[460,181556,21716],{"class":929},[460,181558,165586],{"class":466},[460,181560,181561,181563,181565,181567],{"class":462,"line":476},[460,181562,20605],{"class":887},[460,181564,27333],{"class":466},[460,181566,8495],{"class":887},[460,181568,165597],{"class":466},[460,181570,181571],{"class":462,"line":482},[460,181572,522],{"emptyLinePlaceholder":521},[460,181574,181575],{"class":462,"line":488},[460,181576,522],{"emptyLinePlaceholder":521},[460,181578,181579,181581,181584],{"class":462,"line":494},[460,181580,48352],{"class":887},[460,181582,181583],{"class":929}," calculate",[460,181585,181586],{"class":466},"(a, b, func):\n",[460,181588,181589,181591],{"class":462,"line":500},[460,181590,20605],{"class":887},[460,181592,181593],{"class":466}," func(a, b)\n",[460,181595,181596],{"class":462,"line":506},[460,181597,522],{"emptyLinePlaceholder":521},[460,181599,181600],{"class":462,"line":512},[460,181601,522],{"emptyLinePlaceholder":521},[460,181603,181604,181606,181609,181611,181613,181615],{"class":462,"line":518},[460,181605,46824],{"class":900},[460,181607,181608],{"class":466},"(calculate(",[460,181610,2096],{"class":900},[460,181612,904],{"class":466},[460,181614,2110],{"class":900},[460,181616,181617],{"class":466},", add))\n",[14,181619,181620],{},"这种思想在排序、回调、框架中经常出现。",[18,181622,181624],{"id":181623},"_710-mapfiltersorted","7.10 map、filter、sorted",[23,181626,181628],{"id":181627},"_7101-map","7.10.1 map",[14,181630,181631,181633],{},[457,181632,6864],{}," 对每个元素执行函数。",[451,181635,181637],{"className":46787,"code":181636,"language":46789,"meta":32,"style":32},"nums = [1, 2, 3, 4]\nresult = map(lambda x: x * 2, nums)\nprint(list(result))\n",[457,181638,181639,181663,181686],{"__ignoreMap":32},[460,181640,181641,181643,181645,181647,181649,181651,181653,181655,181657,181659,181661],{"class":462,"line":463},[460,181642,178593],{"class":466},[460,181644,894],{"class":887},[460,181646,897],{"class":466},[460,181648,901],{"class":900},[460,181650,904],{"class":466},[460,181652,907],{"class":900},[460,181654,904],{"class":466},[460,181656,913],{"class":900},[460,181658,904],{"class":466},[460,181660,918],{"class":900},[460,181662,13307],{"class":466},[460,181664,181665,181667,181669,181672,181674,181676,181679,181681,181683],{"class":462,"line":476},[460,181666,175799],{"class":466},[460,181668,894],{"class":887},[460,181670,181671],{"class":900}," map",[460,181673,2174],{"class":466},[460,181675,181379],{"class":887},[460,181677,181678],{"class":466}," x: x ",[460,181680,8320],{"class":887},[460,181682,1442],{"class":900},[460,181684,181685],{"class":466},", nums)\n",[460,181687,181688,181690,181692,181694],{"class":462,"line":482},[460,181689,46824],{"class":900},[460,181691,2174],{"class":466},[460,181693,168563],{"class":900},[460,181695,180561],{"class":466},[23,181697,181699],{"id":181698},"_7102-filter","7.10.2 filter",[14,181701,181702,181704],{},[457,181703,3726],{}," 保留满足条件的元素。",[451,181706,181708],{"className":46787,"code":181707,"language":46789,"meta":32,"style":32},"nums = [1, 2, 3, 4, 5]\nresult = filter(lambda x: x % 2 == 0, nums)\nprint(list(result))\n",[457,181709,181710,181738,181763],{"__ignoreMap":32},[460,181711,181712,181714,181716,181718,181720,181722,181724,181726,181728,181730,181732,181734,181736],{"class":462,"line":463},[460,181713,178593],{"class":466},[460,181715,894],{"class":887},[460,181717,897],{"class":466},[460,181719,901],{"class":900},[460,181721,904],{"class":466},[460,181723,907],{"class":900},[460,181725,904],{"class":466},[460,181727,913],{"class":900},[460,181729,904],{"class":466},[460,181731,918],{"class":900},[460,181733,904],{"class":466},[460,181735,7290],{"class":900},[460,181737,13307],{"class":466},[460,181739,181740,181742,181744,181747,181749,181751,181753,181755,181757,181759,181761],{"class":462,"line":476},[460,181741,175799],{"class":466},[460,181743,894],{"class":887},[460,181745,181746],{"class":900}," filter",[460,181748,2174],{"class":466},[460,181750,181379],{"class":887},[460,181752,181678],{"class":466},[460,181754,2328],{"class":887},[460,181756,1442],{"class":900},[460,181758,116052],{"class":887},[460,181760,2224],{"class":900},[460,181762,181685],{"class":466},[460,181764,181765,181767,181769,181771],{"class":462,"line":482},[460,181766,46824],{"class":900},[460,181768,2174],{"class":466},[460,181770,168563],{"class":900},[460,181772,180561],{"class":466},[23,181774,181776],{"id":181775},"_7103-sorted","7.10.3 sorted",[14,181778,181779,181781],{},[457,181780,179729],{}," 返回排序后的新列表。",[451,181783,181785],{"className":46787,"code":181784,"language":46789,"meta":32,"style":32},"students = [\n    {\"name\": \"小明\", \"score\": 95},\n    {\"name\": \"小红\", \"score\": 88},\n    {\"name\": \"小刚\", \"score\": 72},\n]\n\nresult = sorted(students, key=lambda item: item[\"score\"], reverse=True)\nprint(result)\n",[457,181786,181787,181795,181815,181835,181855,181859,181863,181892],{"__ignoreMap":32},[460,181788,181789,181791,181793],{"class":462,"line":463},[460,181790,174209],{"class":466},[460,181792,894],{"class":887},[460,181794,1385],{"class":466},[460,181796,181797,181799,181801,181803,181805,181807,181809,181811,181813],{"class":462,"line":476},[460,181798,162878],{"class":466},[460,181800,78848],{"class":1353},[460,181802,1961],{"class":466},[460,181804,164381],{"class":1353},[460,181806,904],{"class":466},[460,181808,165965],{"class":1353},[460,181810,1961],{"class":466},[460,181812,17696],{"class":900},[460,181814,21439],{"class":466},[460,181816,181817,181819,181821,181823,181825,181827,181829,181831,181833],{"class":462,"line":482},[460,181818,162878],{"class":466},[460,181820,78848],{"class":1353},[460,181822,1961],{"class":466},[460,181824,165429],{"class":1353},[460,181826,904],{"class":466},[460,181828,165965],{"class":1353},[460,181830,1961],{"class":466},[460,181832,17526],{"class":900},[460,181834,21439],{"class":466},[460,181836,181837,181839,181841,181843,181845,181847,181849,181851,181853],{"class":462,"line":488},[460,181838,162878],{"class":466},[460,181840,78848],{"class":1353},[460,181842,1961],{"class":466},[460,181844,174224],{"class":1353},[460,181846,904],{"class":466},[460,181848,165965],{"class":1353},[460,181850,1961],{"class":466},[460,181852,17140],{"class":900},[460,181854,21439],{"class":466},[460,181856,181857],{"class":462,"line":494},[460,181858,13307],{"class":466},[460,181860,181861],{"class":462,"line":500},[460,181862,522],{"emptyLinePlaceholder":521},[460,181864,181865,181867,181869,181871,181874,181876,181878,181880,181882,181884,181886,181888,181890],{"class":462,"line":506},[460,181866,175799],{"class":466},[460,181868,894],{"class":887},[460,181870,178097],{"class":900},[460,181872,181873],{"class":466},"(students, ",[460,181875,168439],{"class":3380},[460,181877,168442],{"class":887},[460,181879,168445],{"class":466},[460,181881,165965],{"class":1353},[460,181883,126695],{"class":466},[460,181885,178021],{"class":3380},[460,181887,894],{"class":887},[460,181889,47882],{"class":900},[460,181891,3754],{"class":466},[460,181893,181894,181896],{"class":462,"line":512},[460,181895,46824],{"class":900},[460,181897,92698],{"class":466},[18,181899,181901],{"id":181900},"_711-闭包入门","7.11 闭包入门",[14,181903,181904],{},"闭包指内部函数使用了外部函数的变量，并且外部函数返回内部函数。",[451,181906,181908],{"className":46787,"code":181907,"language":46789,"meta":32,"style":32},"def outer(base):\n    def inner(num):\n        return base + num\n\n    return inner\n\n\nadd_10 = outer(10)\nprint(add_10(5))\n",[457,181909,181910,181920,181930,181941,181945,181952,181956,181960,181974],{"__ignoreMap":32},[460,181911,181912,181914,181917],{"class":462,"line":463},[460,181913,48352],{"class":887},[460,181915,181916],{"class":929}," outer",[460,181918,181919],{"class":466},"(base):\n",[460,181921,181922,181924,181927],{"class":462,"line":476},[460,181923,47209],{"class":887},[460,181925,181926],{"class":929}," inner",[460,181928,181929],{"class":466},"(num):\n",[460,181931,181932,181934,181937,181939],{"class":462,"line":482},[460,181933,31206],{"class":887},[460,181935,181936],{"class":466}," base ",[460,181938,8495],{"class":887},[460,181940,181072],{"class":466},[460,181942,181943],{"class":462,"line":488},[460,181944,522],{"emptyLinePlaceholder":521},[460,181946,181947,181949],{"class":462,"line":494},[460,181948,20605],{"class":887},[460,181950,181951],{"class":466}," inner\n",[460,181953,181954],{"class":462,"line":500},[460,181955,522],{"emptyLinePlaceholder":521},[460,181957,181958],{"class":462,"line":506},[460,181959,522],{"emptyLinePlaceholder":521},[460,181961,181962,181965,181967,181970,181972],{"class":462,"line":512},[460,181963,181964],{"class":466},"add_10 ",[460,181966,894],{"class":887},[460,181968,181969],{"class":466}," outer(",[460,181971,2096],{"class":900},[460,181973,3754],{"class":466},[460,181975,181976,181978,181981,181983],{"class":462,"line":518},[460,181977,46824],{"class":900},[460,181979,181980],{"class":466},"(add_10(",[460,181982,7290],{"class":900},[460,181984,6311],{"class":466},[14,181986,181987],{},"闭包常用于保存状态、构造函数工厂。入门阶段了解即可。",[18,181989,181991],{"id":181990},"_712-装饰器入门","7.12 装饰器入门",[14,181993,181994],{},"装饰器用于在不修改原函数代码的情况下，给函数增加功能。",[451,181996,181998],{"className":46787,"code":181997,"language":46789,"meta":32,"style":32},"def log(func):\n    def wrapper():\n        print(\"函数开始执行\")\n        func()\n        print(\"函数执行结束\")\n\n    return wrapper\n\n\n@log\ndef say_hello():\n    print(\"hello\")\n\n\nsay_hello()\n",[457,181999,182000,182009,182018,182029,182034,182045,182049,182056,182060,182064,182069,182077,182087,182091,182095],{"__ignoreMap":32},[460,182001,182002,182004,182006],{"class":462,"line":463},[460,182003,48352],{"class":887},[460,182005,10986],{"class":929},[460,182007,182008],{"class":466},"(func):\n",[460,182010,182011,182013,182016],{"class":462,"line":476},[460,182012,47209],{"class":887},[460,182014,182015],{"class":929}," wrapper",[460,182017,48358],{"class":466},[460,182019,182020,182022,182024,182027],{"class":462,"line":482},[460,182021,48856],{"class":900},[460,182023,2174],{"class":466},[460,182025,182026],{"class":1353},"\"函数开始执行\"",[460,182028,3754],{"class":466},[460,182030,182031],{"class":462,"line":488},[460,182032,182033],{"class":466},"        func()\n",[460,182035,182036,182038,182040,182043],{"class":462,"line":494},[460,182037,48856],{"class":900},[460,182039,2174],{"class":466},[460,182041,182042],{"class":1353},"\"函数执行结束\"",[460,182044,3754],{"class":466},[460,182046,182047],{"class":462,"line":500},[460,182048,522],{"emptyLinePlaceholder":521},[460,182050,182051,182053],{"class":462,"line":506},[460,182052,20605],{"class":887},[460,182054,182055],{"class":466}," wrapper\n",[460,182057,182058],{"class":462,"line":512},[460,182059,522],{"emptyLinePlaceholder":521},[460,182061,182062],{"class":462,"line":518},[460,182063,522],{"emptyLinePlaceholder":521},[460,182065,182066],{"class":462,"line":525},[460,182067,182068],{"class":929},"@log\n",[460,182070,182071,182073,182075],{"class":462,"line":531},[460,182072,48352],{"class":887},[460,182074,175489],{"class":929},[460,182076,48358],{"class":466},[460,182078,182079,182081,182083,182085],{"class":462,"line":537},[460,182080,47706],{"class":900},[460,182082,2174],{"class":466},[460,182084,22349],{"class":1353},[460,182086,3754],{"class":466},[460,182088,182089],{"class":462,"line":543},[460,182090,522],{"emptyLinePlaceholder":521},[460,182092,182093],{"class":462,"line":549},[460,182094,522],{"emptyLinePlaceholder":521},[460,182096,182097],{"class":462,"line":555},[460,182098,175524],{"class":466},[14,182100,172767],{},[451,182102,182104],{"className":46787,"code":182103,"language":46789,"meta":32,"style":32},"say_hello = log(say_hello)\n",[457,182105,182106],{"__ignoreMap":32},[460,182107,182108,182111,182113],{"class":462,"line":463},[460,182109,182110],{"class":466},"say_hello ",[460,182112,894],{"class":887},[460,182114,182115],{"class":466}," log(say_hello)\n",[14,182117,182118],{},"装饰器在 Web 框架、权限校验、日志统计中很常见。",[18,182120,182122],{"id":182121},"_713-带参数函数的装饰器","7.13 带参数函数的装饰器",[451,182124,182126],{"className":46787,"code":182125,"language":46789,"meta":32,"style":32},"def log(func):\n    def wrapper(*args, **kwargs):\n        print(\"函数开始执行\")\n        result = func(*args, **kwargs)\n        print(\"函数执行结束\")\n        return result\n\n    return wrapper\n\n\n@log\ndef add(a, b):\n    return a + b\n\n\nprint(add(10, 20))\n",[457,182127,182128,182136,182153,182163,182182,182192,182199,182203,182209,182213,182217,182221,182229,182239,182243,182247],{"__ignoreMap":32},[460,182129,182130,182132,182134],{"class":462,"line":463},[460,182131,48352],{"class":887},[460,182133,10986],{"class":929},[460,182135,182008],{"class":466},[460,182137,182138,182140,182142,182144,182146,182149,182151],{"class":462,"line":476},[460,182139,47209],{"class":887},[460,182141,182015],{"class":929},[460,182143,2174],{"class":466},[460,182145,8320],{"class":887},[460,182147,182148],{"class":466},"args, ",[460,182150,27126],{"class":887},[460,182152,181159],{"class":466},[460,182154,182155,182157,182159,182161],{"class":462,"line":482},[460,182156,48856],{"class":900},[460,182158,2174],{"class":466},[460,182160,182026],{"class":1353},[460,182162,3754],{"class":466},[460,182164,182165,182168,182170,182173,182175,182177,182179],{"class":462,"line":488},[460,182166,182167],{"class":466},"        result ",[460,182169,894],{"class":887},[460,182171,182172],{"class":466}," func(",[460,182174,8320],{"class":887},[460,182176,182148],{"class":466},[460,182178,27126],{"class":887},[460,182180,182181],{"class":466},"kwargs)\n",[460,182183,182184,182186,182188,182190],{"class":462,"line":494},[460,182185,48856],{"class":900},[460,182187,2174],{"class":466},[460,182189,182042],{"class":1353},[460,182191,3754],{"class":466},[460,182193,182194,182196],{"class":462,"line":500},[460,182195,31206],{"class":887},[460,182197,182198],{"class":466}," result\n",[460,182200,182201],{"class":462,"line":506},[460,182202,522],{"emptyLinePlaceholder":521},[460,182204,182205,182207],{"class":462,"line":512},[460,182206,20605],{"class":887},[460,182208,182055],{"class":466},[460,182210,182211],{"class":462,"line":518},[460,182212,522],{"emptyLinePlaceholder":521},[460,182214,182215],{"class":462,"line":525},[460,182216,522],{"emptyLinePlaceholder":521},[460,182218,182219],{"class":462,"line":531},[460,182220,182068],{"class":929},[460,182222,182223,182225,182227],{"class":462,"line":537},[460,182224,48352],{"class":887},[460,182226,21716],{"class":929},[460,182228,165586],{"class":466},[460,182230,182231,182233,182235,182237],{"class":462,"line":543},[460,182232,20605],{"class":887},[460,182234,27333],{"class":466},[460,182236,8495],{"class":887},[460,182238,165597],{"class":466},[460,182240,182241],{"class":462,"line":549},[460,182242,522],{"emptyLinePlaceholder":521},[460,182244,182245],{"class":462,"line":555},[460,182246,522],{"emptyLinePlaceholder":521},[460,182248,182249,182251,182253,182255,182257,182259],{"class":462,"line":560},[460,182250,46824],{"class":900},[460,182252,181093],{"class":466},[460,182254,2096],{"class":900},[460,182256,904],{"class":466},[460,182258,2110],{"class":900},[460,182260,6311],{"class":466},[14,182262,182263,182264,115511,182266,182268],{},"这个写法使用 ",[457,182265,181025],{},[457,182267,181140],{}," 接收原函数的所有参数。",[18,182270,182272],{"id":182271},"_714-小案例通用统计函数","7.14 小案例：通用统计函数",[14,182274,137785],{},[103,182276,182277,182280,182283],{},[43,182278,182279],{},"给定一组学生数据。",[43,182281,182282],{},"封装函数，根据传入规则筛选学生。",[43,182284,182285],{},"筛选及格、优秀、未成年学生。",[14,182287,26500],{},[451,182289,182291],{"className":46787,"code":182290,"language":46789,"meta":32,"style":32},"students = [\n    {\"name\": \"小明\", \"age\": 18, \"score\": 95},\n    {\"name\": \"小红\", \"age\": 17, \"score\": 88},\n    {\"name\": \"小刚\", \"age\": 19, \"score\": 59},\n]\n\n\ndef filter_students(students, condition):\n    result = []\n    for student in students:\n        if condition(student):\n            result.append(student)\n    return result\n\n\npassed = filter_students(students, lambda s: s[\"score\"] >= 60)\nexcellent = filter_students(students, lambda s: s[\"score\"] >= 90)\nunder_age = filter_students(students, lambda s: s[\"age\"] \u003C 18)\n\nprint(passed)\nprint(excellent)\nprint(under_age)\n",[457,182292,182293,182301,182329,182357,182385,182389,182393,182397,182407,182415,182425,182432,182437,182443,182447,182451,182475,182498,182521,182525,182532,182539],{"__ignoreMap":32},[460,182294,182295,182297,182299],{"class":462,"line":463},[460,182296,174209],{"class":466},[460,182298,894],{"class":887},[460,182300,1385],{"class":466},[460,182302,182303,182305,182307,182309,182311,182313,182315,182317,182319,182321,182323,182325,182327],{"class":462,"line":476},[460,182304,162878],{"class":466},[460,182306,78848],{"class":1353},[460,182308,1961],{"class":466},[460,182310,164381],{"class":1353},[460,182312,904],{"class":466},[460,182314,85279],{"class":1353},[460,182316,1961],{"class":466},[460,182318,2361],{"class":900},[460,182320,904],{"class":466},[460,182322,165965],{"class":1353},[460,182324,1961],{"class":466},[460,182326,17696],{"class":900},[460,182328,21439],{"class":466},[460,182330,182331,182333,182335,182337,182339,182341,182343,182345,182347,182349,182351,182353,182355],{"class":462,"line":482},[460,182332,162878],{"class":466},[460,182334,78848],{"class":1353},[460,182336,1961],{"class":466},[460,182338,165429],{"class":1353},[460,182340,904],{"class":466},[460,182342,85279],{"class":1353},[460,182344,1961],{"class":466},[460,182346,17346],{"class":900},[460,182348,904],{"class":466},[460,182350,165965],{"class":1353},[460,182352,1961],{"class":466},[460,182354,17526],{"class":900},[460,182356,21439],{"class":466},[460,182358,182359,182361,182363,182365,182367,182369,182371,182373,182375,182377,182379,182381,182383],{"class":462,"line":488},[460,182360,162878],{"class":466},[460,182362,78848],{"class":1353},[460,182364,1961],{"class":466},[460,182366,174224],{"class":1353},[460,182368,904],{"class":466},[460,182370,85279],{"class":1353},[460,182372,1961],{"class":466},[460,182374,17394],{"class":900},[460,182376,904],{"class":466},[460,182378,165965],{"class":1353},[460,182380,1961],{"class":466},[460,182382,17593],{"class":900},[460,182384,21439],{"class":466},[460,182386,182387],{"class":462,"line":494},[460,182388,13307],{"class":466},[460,182390,182391],{"class":462,"line":500},[460,182392,522],{"emptyLinePlaceholder":521},[460,182394,182395],{"class":462,"line":506},[460,182396,522],{"emptyLinePlaceholder":521},[460,182398,182399,182401,182404],{"class":462,"line":512},[460,182400,48352],{"class":887},[460,182402,182403],{"class":929}," filter_students",[460,182405,182406],{"class":466},"(students, condition):\n",[460,182408,182409,182411,182413],{"class":462,"line":518},[460,182410,175716],{"class":466},[460,182412,894],{"class":887},[460,182414,11766],{"class":466},[460,182416,182417,182419,182421,182423],{"class":462,"line":525},[460,182418,19722],{"class":887},[460,182420,166630],{"class":466},[460,182422,11713],{"class":887},[460,182424,166635],{"class":466},[460,182426,182427,182429],{"class":462,"line":531},[460,182428,3702],{"class":887},[460,182430,182431],{"class":466}," condition(student):\n",[460,182433,182434],{"class":462,"line":537},[460,182435,182436],{"class":466},"            result.append(student)\n",[460,182438,182439,182441],{"class":462,"line":543},[460,182440,20605],{"class":887},[460,182442,182198],{"class":466},[460,182444,182445],{"class":462,"line":549},[460,182446,522],{"emptyLinePlaceholder":521},[460,182448,182449],{"class":462,"line":555},[460,182450,522],{"emptyLinePlaceholder":521},[460,182452,182453,182455,182457,182460,182462,182465,182467,182469,182471,182473],{"class":462,"line":560},[460,182454,180194],{"class":466},[460,182456,894],{"class":887},[460,182458,182459],{"class":466}," filter_students(students, ",[460,182461,181379],{"class":887},[460,182463,182464],{"class":466}," s: s[",[460,182466,165965],{"class":1353},[460,182468,11884],{"class":466},[460,182470,3738],{"class":887},[460,182472,172330],{"class":900},[460,182474,3754],{"class":466},[460,182476,182477,182480,182482,182484,182486,182488,182490,182492,182494,182496],{"class":462,"line":566},[460,182478,182479],{"class":466},"excellent ",[460,182481,894],{"class":887},[460,182483,182459],{"class":466},[460,182485,181379],{"class":887},[460,182487,182464],{"class":466},[460,182489,165965],{"class":1353},[460,182491,11884],{"class":466},[460,182493,3738],{"class":887},[460,182495,172281],{"class":900},[460,182497,3754],{"class":466},[460,182499,182500,182503,182505,182507,182509,182511,182513,182515,182517,182519],{"class":462,"line":572},[460,182501,182502],{"class":466},"under_age ",[460,182504,894],{"class":887},[460,182506,182459],{"class":466},[460,182508,181379],{"class":887},[460,182510,182464],{"class":466},[460,182512,85279],{"class":1353},[460,182514,11884],{"class":466},[460,182516,781],{"class":887},[460,182518,170778],{"class":900},[460,182520,3754],{"class":466},[460,182522,182523],{"class":462,"line":578},[460,182524,522],{"emptyLinePlaceholder":521},[460,182526,182527,182529],{"class":462,"line":812},[460,182528,46824],{"class":900},[460,182530,182531],{"class":466},"(passed)\n",[460,182533,182534,182536],{"class":462,"line":818},[460,182535,46824],{"class":900},[460,182537,182538],{"class":466},"(excellent)\n",[460,182540,182541,182543],{"class":462,"line":824},[460,182542,46824],{"class":900},[460,182544,182545],{"class":466},"(under_age)\n",[18,182547,182549],{"id":182548},"_715-易错点","7.15 易错点",[103,182551,182552,182555,182563,182568,182579],{},[43,182553,182554],{},"默认参数不要写可变对象。",[43,182556,182557,182559,182560,182562],{},[457,182558,181025],{}," 是元组，",[457,182561,181140],{}," 是字典。",[43,182564,182565,182567],{},[457,182566,181379],{}," 只适合简单表达式。",[43,182569,182570,115511,182572,182574,182575,182578],{},[457,182571,6864],{},[457,182573,3726],{}," 的结果是迭代器，常用 ",[457,182576,182577],{},"list()"," 转换查看。",[43,182580,182581],{},"装饰器会改变函数调用链，初学时先理解执行顺序。",[18,182583,182585],{"id":182584},"_716-本章练习","7.16 本章练习",[103,182587,182588,182595,182601,182606,182611],{},[43,182589,182590,182591,182594],{},"写函数 ",[457,182592,182593],{},"calc(*args)","，返回所有数字的和、最大值、最小值。",[43,182596,182590,182597,182600],{},[457,182598,182599],{},"print_user(**kwargs)","，输出用户所有字段。",[43,182602,118859,182603,182605],{},[457,182604,181379],{}," 对学生列表按年龄排序。",[43,182607,118859,182608,182610],{},[457,182609,3726],{}," 找出成绩不及格的学生。",[43,182612,182613],{},"写一个装饰器，统计函数执行前后的提示信息。",[1944,182615,182616],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":182618},[182619,182620,182621,182622,182623,182624,182628,182629,182630,182631,182636,182637,182638,182639,182640,182641],{"id":180477,"depth":476,"text":180478},{"id":180591,"depth":476,"text":180592},{"id":180680,"depth":476,"text":180681},{"id":180742,"depth":476,"text":180743},{"id":180888,"depth":476,"text":180889},{"id":181015,"depth":476,"text":181016,"children":182625},[182626,182627],{"id":181019,"depth":482,"text":181020},{"id":181134,"depth":482,"text":181135},{"id":181215,"depth":476,"text":181216},{"id":181373,"depth":476,"text":181374},{"id":181541,"depth":476,"text":181542},{"id":181623,"depth":476,"text":181624,"children":182632},[182633,182634,182635],{"id":181627,"depth":482,"text":181628},{"id":181698,"depth":482,"text":181699},{"id":181775,"depth":482,"text":181776},{"id":181900,"depth":476,"text":181901},{"id":181990,"depth":476,"text":181991},{"id":182121,"depth":476,"text":182122},{"id":182271,"depth":476,"text":182272},{"id":182548,"depth":476,"text":182549},{"id":182584,"depth":476,"text":182585},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch7",{"title":180469,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch7-函数进阶","vkwD4uN4GcTXYEVJo4HqYbW1G2UwuNGXsRcL7zWXd5Q",{"id":182648,"title":182649,"body":182650,"description":16682,"extension":16683,"meta":185169,"navigation":521,"path":185170,"seo":185171,"stem":185172,"__hash__":185173},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch8-文件操作.md","8. 文件操作",{"type":7,"value":182651,"toc":185144},[182652,182655,182659,182662,182665,182696,182700,182704,182707,182734,182738,182741,182792,182795,182810,182813,182848,182852,182854,182878,182881,182941,182945,182949,182952,183009,183012,183032,183036,183039,183102,183106,183109,183165,183172,183196,183200,183203,183266,183270,183275,183326,183329,183333,183338,183405,183408,183490,183494,183499,183550,183553,183557,183560,183563,183571,183574,183620,183623,183669,183673,183679,183723,183726,183772,183775,183815,183818,183879,183883,183886,183976,183979,184121,184124,184191,184195,184198,184201,184342,184345,184423,184426,184602,184606,184608,184619,184621,184820,184824,185068,185072,185106,185110,185141],[10,182653,182649],{"id":182654},"_8-文件操作",[18,182656,182658],{"id":182657},"_81-文件操作的意义","8.1 文件操作的意义",[14,182660,182661],{},"程序运行时，变量保存在内存中。程序结束后，内存数据通常会消失。文件可以把数据保存到磁盘，实现持久化。",[14,182663,182664],{},"常见文件类型：",[103,182666,182667,182673,182679,182685,182691],{},[43,182668,182669,182672],{},[457,182670,182671],{},".txt","：普通文本。",[43,182674,182675,182678],{},[457,182676,182677],{},".csv","：表格文本。",[43,182680,182681,182684],{},[457,182682,182683],{},".json","：结构化数据。",[43,182686,182687,182690],{},[457,182688,182689],{},".log","：日志文件。",[43,182692,182693,182695],{},[457,182694,160845],{},"：Python 源代码。",[18,182697,182699],{"id":182698},"_82-路径","8.2 路径",[23,182701,182703],{"id":182702},"_821-相对路径","8.2.1 相对路径",[14,182705,182706],{},"相对当前运行目录：",[451,182708,182710],{"className":46787,"code":182709,"language":46789,"meta":32,"style":32},"open(\"data.txt\", \"r\", encoding=\"utf-8\")\n",[457,182711,182712],{"__ignoreMap":32},[460,182713,182714,182716,182718,182720,182722,182724,182726,182728,182730,182732],{"class":462,"line":463},[460,182715,10704],{"class":900},[460,182717,2174],{"class":466},[460,182719,161289],{"class":1353},[460,182721,904],{"class":466},[460,182723,161294],{"class":1353},[460,182725,904],{"class":466},[460,182727,161299],{"class":3380},[460,182729,894],{"class":887},[460,182731,161304],{"class":1353},[460,182733,3754],{"class":466},[23,182735,182737],{"id":182736},"_822-绝对路径","8.2.2 绝对路径",[14,182739,182740],{},"从根目录或盘符开始：",[451,182742,182744],{"className":46787,"code":182743,"language":46789,"meta":32,"style":32},"open(\"\u002Fhome\u002Fuser\u002Fdata.txt\", \"r\", encoding=\"utf-8\")\nopen(\"D:\u002Fdata\u002Fdata.txt\", \"r\", encoding=\"utf-8\")\n",[457,182745,182746,182769],{"__ignoreMap":32},[460,182747,182748,182750,182752,182755,182757,182759,182761,182763,182765,182767],{"class":462,"line":463},[460,182749,10704],{"class":900},[460,182751,2174],{"class":466},[460,182753,182754],{"class":1353},"\"\u002Fhome\u002Fuser\u002Fdata.txt\"",[460,182756,904],{"class":466},[460,182758,161294],{"class":1353},[460,182760,904],{"class":466},[460,182762,161299],{"class":3380},[460,182764,894],{"class":887},[460,182766,161304],{"class":1353},[460,182768,3754],{"class":466},[460,182770,182771,182773,182775,182778,182780,182782,182784,182786,182788,182790],{"class":462,"line":476},[460,182772,10704],{"class":900},[460,182774,2174],{"class":466},[460,182776,182777],{"class":1353},"\"D:\u002Fdata\u002Fdata.txt\"",[460,182779,904],{"class":466},[460,182781,161294],{"class":1353},[460,182783,904],{"class":466},[460,182785,161299],{"class":3380},[460,182787,894],{"class":887},[460,182789,161304],{"class":1353},[460,182791,3754],{"class":466},[14,182793,182794],{},"Windows 路径建议写成：",[451,182796,182798],{"className":46787,"code":182797,"language":46789,"meta":32,"style":32},"path = \"D:\u002Fdata\u002Fdata.txt\"\n",[457,182799,182800],{"__ignoreMap":32},[460,182801,182802,182805,182807],{"class":462,"line":463},[460,182803,182804],{"class":466},"path ",[460,182806,894],{"class":887},[460,182808,182809],{"class":1353}," \"D:\u002Fdata\u002Fdata.txt\"\n",[14,182811,182812],{},"或原始字符串：",[451,182814,182816],{"className":46787,"code":182815,"language":46789,"meta":32,"style":32},"path = r\"D:\\data\\data.txt\"\n",[457,182817,182818],{"__ignoreMap":32},[460,182819,182820,182822,182824,182826,182828,182831,182834,182837,182839,182841,182843,182846],{"class":462,"line":463},[460,182821,182804],{"class":466},[460,182823,894],{"class":887},[460,182825,33539],{"class":887},[460,182827,16993],{"class":1353},[460,182829,182830],{"class":64280},"D:",[460,182832,182833],{"class":900},"\\d",[460,182835,182836],{"class":64280},"ata",[460,182838,182833],{"class":900},[460,182840,182836],{"class":64280},[460,182842,6000],{"class":900},[460,182844,182845],{"class":64280},"txt",[460,182847,41545],{"class":1353},[18,182849,182851],{"id":182850},"_83-open函数","8.3 open函数",[14,182853,5927],{},[451,182855,182857],{"className":46787,"code":182856,"language":46789,"meta":32,"style":32},"file = open(文件路径, 打开模式, encoding=\"utf-8\")\n",[457,182858,182859],{"__ignoreMap":32},[460,182860,182861,182863,182865,182867,182870,182872,182874,182876],{"class":462,"line":463},[460,182862,61658],{"class":3380},[460,182864,2943],{"class":887},[460,182866,161284],{"class":900},[460,182868,182869],{"class":466},"(文件路径, 打开模式, ",[460,182871,161299],{"class":3380},[460,182873,894],{"class":887},[460,182875,161304],{"class":1353},[460,182877,3754],{"class":466},[14,182879,182880],{},"常见模式：",[16884,182882,182883,182892],{},[16887,182884,182885],{},[16890,182886,182887,182890],{},[16893,182888,182889],{},"模式",[16893,182891,42281],{},[16930,182893,182894,182903,182912,182921,182931],{},[16890,182895,182896,182900],{},[16935,182897,182898],{},[457,182899,17389],{},[16935,182901,182902],{},"只读，文件不存在会报错",[16890,182904,182905,182909],{},[16935,182906,182907],{},[457,182908,17510],{},[16935,182910,182911],{},"只写，文件不存在会创建，存在会清空",[16890,182913,182914,182918],{},[16935,182915,182916],{},[457,182917,2756],{},[16935,182919,182920],{},"追加，文件不存在会创建",[16890,182922,182923,182928],{},[16935,182924,182925],{},[457,182926,182927],{},"rb",[16935,182929,182930],{},"二进制只读",[16890,182932,182933,182938],{},[16935,182934,182935],{},[457,182936,182937],{},"wb",[16935,182939,182940],{},"二进制只写",[18,182942,182944],{"id":182943},"_84-读取文件","8.4 读取文件",[23,182946,182948],{"id":182947},"_841-read","8.4.1 read",[14,182950,182951],{},"一次读取全部内容：",[451,182953,182955],{"className":46787,"code":182954,"language":46789,"meta":32,"style":32},"file = open(\"data.txt\", \"r\", encoding=\"utf-8\")\ncontent = file.read()\nprint(content)\nfile.close()\n",[457,182956,182957,182983,182995,183002],{"__ignoreMap":32},[460,182958,182959,182961,182963,182965,182967,182969,182971,182973,182975,182977,182979,182981],{"class":462,"line":463},[460,182960,61658],{"class":3380},[460,182962,2943],{"class":887},[460,182964,161284],{"class":900},[460,182966,2174],{"class":466},[460,182968,161289],{"class":1353},[460,182970,904],{"class":466},[460,182972,161294],{"class":1353},[460,182974,904],{"class":466},[460,182976,161299],{"class":3380},[460,182978,894],{"class":887},[460,182980,161304],{"class":1353},[460,182982,3754],{"class":466},[460,182984,182985,182988,182990,182992],{"class":462,"line":476},[460,182986,182987],{"class":466},"content ",[460,182989,894],{"class":887},[460,182991,162646],{"class":3380},[460,182993,182994],{"class":466},".read()\n",[460,182996,182997,182999],{"class":462,"line":482},[460,182998,46824],{"class":900},[460,183000,183001],{"class":466},"(content)\n",[460,183003,183004,183006],{"class":462,"line":488},[460,183005,61658],{"class":3380},[460,183007,183008],{"class":466},".close()\n",[14,183010,183011],{},"可以指定读取字符数：",[451,183013,183015],{"className":46787,"code":183014,"language":46789,"meta":32,"style":32},"content = file.read(10)\n",[457,183016,183017],{"__ignoreMap":32},[460,183018,183019,183021,183023,183025,183028,183030],{"class":462,"line":463},[460,183020,182987],{"class":466},[460,183022,894],{"class":887},[460,183024,162646],{"class":3380},[460,183026,183027],{"class":466},".read(",[460,183029,2096],{"class":900},[460,183031,3754],{"class":466},[23,183033,183035],{"id":183034},"_842-readline","8.4.2 readline",[14,183037,183038],{},"一次读取一行：",[451,183040,183042],{"className":46787,"code":183041,"language":46789,"meta":32,"style":32},"file = open(\"data.txt\", \"r\", encoding=\"utf-8\")\n\nline = file.readline()\nprint(line)\n\nfile.close()\n",[457,183043,183044,183070,183074,183085,183092,183096],{"__ignoreMap":32},[460,183045,183046,183048,183050,183052,183054,183056,183058,183060,183062,183064,183066,183068],{"class":462,"line":463},[460,183047,61658],{"class":3380},[460,183049,2943],{"class":887},[460,183051,161284],{"class":900},[460,183053,2174],{"class":466},[460,183055,161289],{"class":1353},[460,183057,904],{"class":466},[460,183059,161294],{"class":1353},[460,183061,904],{"class":466},[460,183063,161299],{"class":3380},[460,183065,894],{"class":887},[460,183067,161304],{"class":1353},[460,183069,3754],{"class":466},[460,183071,183072],{"class":462,"line":476},[460,183073,522],{"emptyLinePlaceholder":521},[460,183075,183076,183078,183080,183082],{"class":462,"line":482},[460,183077,161745],{"class":466},[460,183079,894],{"class":887},[460,183081,162646],{"class":3380},[460,183083,183084],{"class":466},".readline()\n",[460,183086,183087,183089],{"class":462,"line":488},[460,183088,46824],{"class":900},[460,183090,183091],{"class":466},"(line)\n",[460,183093,183094],{"class":462,"line":494},[460,183095,522],{"emptyLinePlaceholder":521},[460,183097,183098,183100],{"class":462,"line":500},[460,183099,61658],{"class":3380},[460,183101,183008],{"class":466},[23,183103,183105],{"id":183104},"_843-readlines","8.4.3 readlines",[14,183107,183108],{},"读取所有行，返回列表：",[451,183110,183112],{"className":46787,"code":183111,"language":46789,"meta":32,"style":32},"file = open(\"data.txt\", \"r\", encoding=\"utf-8\")\nlines = file.readlines()\nprint(lines)\nfile.close()\n",[457,183113,183114,183140,183152,183159],{"__ignoreMap":32},[460,183115,183116,183118,183120,183122,183124,183126,183128,183130,183132,183134,183136,183138],{"class":462,"line":463},[460,183117,61658],{"class":3380},[460,183119,2943],{"class":887},[460,183121,161284],{"class":900},[460,183123,2174],{"class":466},[460,183125,161289],{"class":1353},[460,183127,904],{"class":466},[460,183129,161294],{"class":1353},[460,183131,904],{"class":466},[460,183133,161299],{"class":3380},[460,183135,894],{"class":887},[460,183137,161304],{"class":1353},[460,183139,3754],{"class":466},[460,183141,183142,183145,183147,183149],{"class":462,"line":476},[460,183143,183144],{"class":466},"lines ",[460,183146,894],{"class":887},[460,183148,162646],{"class":3380},[460,183150,183151],{"class":466},".readlines()\n",[460,183153,183154,183156],{"class":462,"line":482},[460,183155,46824],{"class":900},[460,183157,183158],{"class":466},"(lines)\n",[460,183160,183161,183163],{"class":462,"line":488},[460,183162,61658],{"class":3380},[460,183164,183008],{"class":466},[14,183166,183167,183168,183171],{},"每一行通常带有换行符，可以用 ",[457,183169,183170],{},"strip()"," 去掉：",[451,183173,183175],{"className":46787,"code":183174,"language":46789,"meta":32,"style":32},"for line in lines:\n    print(line.strip())\n",[457,183176,183177,183189],{"__ignoreMap":32},[460,183178,183179,183181,183184,183186],{"class":462,"line":463},[460,183180,19547],{"class":887},[460,183182,183183],{"class":466}," line ",[460,183185,11713],{"class":887},[460,183187,183188],{"class":466}," lines:\n",[460,183190,183191,183193],{"class":462,"line":476},[460,183192,47706],{"class":900},[460,183194,183195],{"class":466},"(line.strip())\n",[23,183197,183199],{"id":183198},"_844-直接遍历文件对象","8.4.4 直接遍历文件对象",[14,183201,183202],{},"推荐读取大文件时使用：",[451,183204,183206],{"className":46787,"code":183205,"language":46789,"meta":32,"style":32},"file = open(\"data.txt\", \"r\", encoding=\"utf-8\")\n\nfor line in file:\n    print(line.strip())\n\nfile.close()\n",[457,183207,183208,183234,183238,183250,183256,183260],{"__ignoreMap":32},[460,183209,183210,183212,183214,183216,183218,183220,183222,183224,183226,183228,183230,183232],{"class":462,"line":463},[460,183211,61658],{"class":3380},[460,183213,2943],{"class":887},[460,183215,161284],{"class":900},[460,183217,2174],{"class":466},[460,183219,161289],{"class":1353},[460,183221,904],{"class":466},[460,183223,161294],{"class":1353},[460,183225,904],{"class":466},[460,183227,161299],{"class":3380},[460,183229,894],{"class":887},[460,183231,161304],{"class":1353},[460,183233,3754],{"class":466},[460,183235,183236],{"class":462,"line":476},[460,183237,522],{"emptyLinePlaceholder":521},[460,183239,183240,183242,183244,183246,183248],{"class":462,"line":482},[460,183241,19547],{"class":887},[460,183243,183183],{"class":466},[460,183245,11713],{"class":887},[460,183247,162646],{"class":3380},[460,183249,20257],{"class":466},[460,183251,183252,183254],{"class":462,"line":488},[460,183253,47706],{"class":900},[460,183255,183195],{"class":466},[460,183257,183258],{"class":462,"line":494},[460,183259,522],{"emptyLinePlaceholder":521},[460,183261,183262,183264],{"class":462,"line":500},[460,183263,61658],{"class":3380},[460,183265,183008],{"class":466},[18,183267,183269],{"id":183268},"_85-with语句","8.5 with语句",[14,183271,183272,183274],{},[457,183273,122326],{}," 会自动关闭文件，推荐使用。",[451,183276,183278],{"className":46787,"code":183277,"language":46789,"meta":32,"style":32},"with open(\"data.txt\", \"r\", encoding=\"utf-8\") as file:\n    content = file.read()\n    print(content)\n",[457,183279,183280,183310,183320],{"__ignoreMap":32},[460,183281,183282,183284,183286,183288,183290,183292,183294,183296,183298,183300,183302,183304,183306,183308],{"class":462,"line":463},[460,183283,122326],{"class":887},[460,183285,161284],{"class":900},[460,183287,2174],{"class":466},[460,183289,161289],{"class":1353},[460,183291,904],{"class":466},[460,183293,161294],{"class":1353},[460,183295,904],{"class":466},[460,183297,161299],{"class":3380},[460,183299,894],{"class":887},[460,183301,161304],{"class":1353},[460,183303,8296],{"class":466},[460,183305,47790],{"class":887},[460,183307,162646],{"class":3380},[460,183309,20257],{"class":466},[460,183311,183312,183314,183316,183318],{"class":462,"line":476},[460,183313,161316],{"class":466},[460,183315,894],{"class":887},[460,183317,162646],{"class":3380},[460,183319,182994],{"class":466},[460,183321,183322,183324],{"class":462,"line":482},[460,183323,47706],{"class":900},[460,183325,183001],{"class":466},[14,183327,183328],{},"等价于打开文件、读取、最后关闭，但更安全。",[18,183330,183332],{"id":183331},"_86-写入文件","8.6 写入文件",[14,183334,183335,183337],{},[457,183336,17510],{}," 模式会清空原文件。",[451,183339,183341],{"className":46787,"code":183340,"language":46789,"meta":32,"style":32},"with open(\"data.txt\", \"w\", encoding=\"utf-8\") as file:\n    file.write(\"hello\\n\")\n    file.write(\"python\\n\")\n",[457,183342,183343,183373,183390],{"__ignoreMap":32},[460,183344,183345,183347,183349,183351,183353,183355,183357,183359,183361,183363,183365,183367,183369,183371],{"class":462,"line":463},[460,183346,122326],{"class":887},[460,183348,161284],{"class":900},[460,183350,2174],{"class":466},[460,183352,161289],{"class":1353},[460,183354,904],{"class":466},[460,183356,166469],{"class":1353},[460,183358,904],{"class":466},[460,183360,161299],{"class":3380},[460,183362,894],{"class":887},[460,183364,161304],{"class":1353},[460,183366,8296],{"class":466},[460,183368,47790],{"class":887},[460,183370,162646],{"class":3380},[460,183372,20257],{"class":466},[460,183374,183375,183378,183381,183384,183386,183388],{"class":462,"line":476},[460,183376,183377],{"class":3380},"    file",[460,183379,183380],{"class":466},".write(",[460,183382,183383],{"class":1353},"\"hello",[460,183385,171018],{"class":900},[460,183387,16993],{"class":1353},[460,183389,3754],{"class":466},[460,183391,183392,183394,183396,183399,183401,183403],{"class":462,"line":482},[460,183393,183377],{"class":3380},[460,183395,183380],{"class":466},[460,183397,183398],{"class":1353},"\"python",[460,183400,171018],{"class":900},[460,183402,16993],{"class":1353},[460,183404,3754],{"class":466},[14,183406,183407],{},"写入多行：",[451,183409,183411],{"className":46787,"code":183410,"language":46789,"meta":32,"style":32},"lines = [\"小明,18\\n\", \"小红,17\\n\", \"小刚,19\\n\"]\n\nwith open(\"students.txt\", \"w\", encoding=\"utf-8\") as file:\n    file.writelines(lines)\n",[457,183412,183413,183448,183452,183483],{"__ignoreMap":32},[460,183414,183415,183417,183419,183421,183424,183426,183428,183430,183433,183435,183437,183439,183442,183444,183446],{"class":462,"line":463},[460,183416,183144],{"class":466},[460,183418,894],{"class":887},[460,183420,897],{"class":466},[460,183422,183423],{"class":1353},"\"小明,18",[460,183425,171018],{"class":900},[460,183427,16993],{"class":1353},[460,183429,904],{"class":466},[460,183431,183432],{"class":1353},"\"小红,17",[460,183434,171018],{"class":900},[460,183436,16993],{"class":1353},[460,183438,904],{"class":466},[460,183440,183441],{"class":1353},"\"小刚,19",[460,183443,171018],{"class":900},[460,183445,16993],{"class":1353},[460,183447,13307],{"class":466},[460,183449,183450],{"class":462,"line":476},[460,183451,522],{"emptyLinePlaceholder":521},[460,183453,183454,183456,183458,183460,183463,183465,183467,183469,183471,183473,183475,183477,183479,183481],{"class":462,"line":482},[460,183455,122326],{"class":887},[460,183457,161284],{"class":900},[460,183459,2174],{"class":466},[460,183461,183462],{"class":1353},"\"students.txt\"",[460,183464,904],{"class":466},[460,183466,166469],{"class":1353},[460,183468,904],{"class":466},[460,183470,161299],{"class":3380},[460,183472,894],{"class":887},[460,183474,161304],{"class":1353},[460,183476,8296],{"class":466},[460,183478,47790],{"class":887},[460,183480,162646],{"class":3380},[460,183482,20257],{"class":466},[460,183484,183485,183487],{"class":462,"line":488},[460,183486,183377],{"class":3380},[460,183488,183489],{"class":466},".writelines(lines)\n",[18,183491,183493],{"id":183492},"_87-追加文件","8.7 追加文件",[14,183495,183496,183498],{},[457,183497,2756],{}," 模式不会清空原内容，而是在末尾追加。",[451,183500,183502],{"className":46787,"code":183501,"language":46789,"meta":32,"style":32},"with open(\"log.txt\", \"a\", encoding=\"utf-8\") as file:\n    file.write(\"程序启动\\n\")\n",[457,183503,183504,183535],{"__ignoreMap":32},[460,183505,183506,183508,183510,183512,183515,183517,183519,183521,183523,183525,183527,183529,183531,183533],{"class":462,"line":463},[460,183507,122326],{"class":887},[460,183509,161284],{"class":900},[460,183511,2174],{"class":466},[460,183513,183514],{"class":1353},"\"log.txt\"",[460,183516,904],{"class":466},[460,183518,179818],{"class":1353},[460,183520,904],{"class":466},[460,183522,161299],{"class":3380},[460,183524,894],{"class":887},[460,183526,161304],{"class":1353},[460,183528,8296],{"class":466},[460,183530,47790],{"class":887},[460,183532,162646],{"class":3380},[460,183534,20257],{"class":466},[460,183536,183537,183539,183541,183544,183546,183548],{"class":462,"line":476},[460,183538,183377],{"class":3380},[460,183540,183380],{"class":466},[460,183542,183543],{"class":1353},"\"程序启动",[460,183545,171018],{"class":900},[460,183547,16993],{"class":1353},[460,183549,3754],{"class":466},[14,183551,183552],{},"日志类文件常用追加模式。",[18,183554,183556],{"id":183555},"_88-文件编码","8.8 文件编码",[14,183558,183559],{},"编码决定文字如何保存为字节。",[14,183561,183562],{},"常见编码：",[103,183564,183565,183568],{},[43,183566,183567],{},"UTF-8：推荐。",[43,183569,183570],{},"GBK：部分 Windows 中文文件常见。",[14,183572,183573],{},"读取文件乱码时，可以尝试：",[451,183575,183577],{"className":46787,"code":183576,"language":46789,"meta":32,"style":32},"with open(\"data.txt\", \"r\", encoding=\"gbk\") as file:\n    content = file.read()\n",[457,183578,183579,183610],{"__ignoreMap":32},[460,183580,183581,183583,183585,183587,183589,183591,183593,183595,183597,183599,183602,183604,183606,183608],{"class":462,"line":463},[460,183582,122326],{"class":887},[460,183584,161284],{"class":900},[460,183586,2174],{"class":466},[460,183588,161289],{"class":1353},[460,183590,904],{"class":466},[460,183592,161294],{"class":1353},[460,183594,904],{"class":466},[460,183596,161299],{"class":3380},[460,183598,894],{"class":887},[460,183600,183601],{"class":1353},"\"gbk\"",[460,183603,8296],{"class":466},[460,183605,47790],{"class":887},[460,183607,162646],{"class":3380},[460,183609,20257],{"class":466},[460,183611,183612,183614,183616,183618],{"class":462,"line":476},[460,183613,161316],{"class":466},[460,183615,894],{"class":887},[460,183617,162646],{"class":3380},[460,183619,182994],{"class":466},[14,183621,183622],{},"写文件时建议统一 UTF-8：",[451,183624,183626],{"className":46787,"code":183625,"language":46789,"meta":32,"style":32},"with open(\"data.txt\", \"w\", encoding=\"utf-8\") as file:\n    file.write(\"中文内容\")\n",[457,183627,183628,183658],{"__ignoreMap":32},[460,183629,183630,183632,183634,183636,183638,183640,183642,183644,183646,183648,183650,183652,183654,183656],{"class":462,"line":463},[460,183631,122326],{"class":887},[460,183633,161284],{"class":900},[460,183635,2174],{"class":466},[460,183637,161289],{"class":1353},[460,183639,904],{"class":466},[460,183641,166469],{"class":1353},[460,183643,904],{"class":466},[460,183645,161299],{"class":3380},[460,183647,894],{"class":887},[460,183649,161304],{"class":1353},[460,183651,8296],{"class":466},[460,183653,47790],{"class":887},[460,183655,162646],{"class":3380},[460,183657,20257],{"class":466},[460,183659,183660,183662,183664,183667],{"class":462,"line":476},[460,183661,183377],{"class":3380},[460,183663,183380],{"class":466},[460,183665,183666],{"class":1353},"\"中文内容\"",[460,183668,3754],{"class":466},[18,183670,183672],{"id":183671},"_89-pathlib","8.9 pathlib",[14,183674,183675,183678],{},[457,183676,183677],{},"pathlib"," 是现代 Python 推荐的路径处理方式。",[451,183680,183682],{"className":46787,"code":183681,"language":46789,"meta":32,"style":32},"from pathlib import Path\n\npath = Path(\"data\") \u002F \"students.txt\"\nprint(path)\n",[457,183683,183684,183694,183698,183716],{"__ignoreMap":32},[460,183685,183686,183688,183690,183692],{"class":462,"line":463},[460,183687,47145],{"class":887},[460,183689,122804],{"class":466},[460,183691,46801],{"class":887},[460,183693,122809],{"class":466},[460,183695,183696],{"class":462,"line":476},[460,183697,522],{"emptyLinePlaceholder":521},[460,183699,183700,183702,183704,183706,183709,183711,183713],{"class":462,"line":482},[460,183701,182804],{"class":466},[460,183703,894],{"class":887},[460,183705,123038],{"class":466},[460,183707,183708],{"class":1353},"\"data\"",[460,183710,8296],{"class":466},[460,183712,8331],{"class":887},[460,183714,183715],{"class":1353}," \"students.txt\"\n",[460,183717,183718,183720],{"class":462,"line":488},[460,183719,46824],{"class":900},[460,183721,183722],{"class":466},"(path)\n",[14,183724,183725],{},"创建目录：",[451,183727,183729],{"className":46787,"code":183728,"language":46789,"meta":32,"style":32},"from pathlib import Path\n\ndata_dir = Path(\"data\")\ndata_dir.mkdir(exist_ok=True)\n",[457,183730,183731,183741,183745,183758],{"__ignoreMap":32},[460,183732,183733,183735,183737,183739],{"class":462,"line":463},[460,183734,47145],{"class":887},[460,183736,122804],{"class":466},[460,183738,46801],{"class":887},[460,183740,122809],{"class":466},[460,183742,183743],{"class":462,"line":476},[460,183744,522],{"emptyLinePlaceholder":521},[460,183746,183747,183750,183752,183754,183756],{"class":462,"line":482},[460,183748,183749],{"class":466},"data_dir ",[460,183751,894],{"class":887},[460,183753,123038],{"class":466},[460,183755,183708],{"class":1353},[460,183757,3754],{"class":466},[460,183759,183760,183763,183766,183768,183770],{"class":462,"line":488},[460,183761,183762],{"class":466},"data_dir.mkdir(",[460,183764,183765],{"class":3380},"exist_ok",[460,183767,894],{"class":887},[460,183769,47882],{"class":900},[460,183771,3754],{"class":466},[14,183773,183774],{},"判断文件是否存在：",[451,183776,183778],{"className":46787,"code":183777,"language":46789,"meta":32,"style":32},"path = Path(\"data\u002Fstudents.txt\")\n\nif path.exists():\n    print(\"文件存在\")\n",[457,183779,183780,183793,183797,183804],{"__ignoreMap":32},[460,183781,183782,183784,183786,183788,183791],{"class":462,"line":463},[460,183783,182804],{"class":466},[460,183785,894],{"class":887},[460,183787,123038],{"class":466},[460,183789,183790],{"class":1353},"\"data\u002Fstudents.txt\"",[460,183792,3754],{"class":466},[460,183794,183795],{"class":462,"line":476},[460,183796,522],{"emptyLinePlaceholder":521},[460,183798,183799,183801],{"class":462,"line":482},[460,183800,18100],{"class":887},[460,183802,183803],{"class":466}," path.exists():\n",[460,183805,183806,183808,183810,183813],{"class":462,"line":488},[460,183807,47706],{"class":900},[460,183809,2174],{"class":466},[460,183811,183812],{"class":1353},"\"文件存在\"",[460,183814,3754],{"class":466},[14,183816,183817],{},"读写文本：",[451,183819,183821],{"className":46787,"code":183820,"language":46789,"meta":32,"style":32},"path = Path(\"data.txt\")\n\npath.write_text(\"hello python\", encoding=\"utf-8\")\ncontent = path.read_text(encoding=\"utf-8\")\nprint(content)\n",[457,183822,183823,183835,183839,183856,183873],{"__ignoreMap":32},[460,183824,183825,183827,183829,183831,183833],{"class":462,"line":463},[460,183826,182804],{"class":466},[460,183828,894],{"class":887},[460,183830,123038],{"class":466},[460,183832,161289],{"class":1353},[460,183834,3754],{"class":466},[460,183836,183837],{"class":462,"line":476},[460,183838,522],{"emptyLinePlaceholder":521},[460,183840,183841,183844,183846,183848,183850,183852,183854],{"class":462,"line":482},[460,183842,183843],{"class":466},"path.write_text(",[460,183845,160369],{"class":1353},[460,183847,904],{"class":466},[460,183849,161299],{"class":3380},[460,183851,894],{"class":887},[460,183853,161304],{"class":1353},[460,183855,3754],{"class":466},[460,183857,183858,183860,183862,183865,183867,183869,183871],{"class":462,"line":488},[460,183859,182987],{"class":466},[460,183861,894],{"class":887},[460,183863,183864],{"class":466}," path.read_text(",[460,183866,161299],{"class":3380},[460,183868,894],{"class":887},[460,183870,161304],{"class":1353},[460,183872,3754],{"class":466},[460,183874,183875,183877],{"class":462,"line":494},[460,183876,46824],{"class":900},[460,183878,183001],{"class":466},[18,183880,183882],{"id":183881},"_810-json文件","8.10 JSON文件",[14,183884,183885],{},"JSON 是常见的数据交换格式，适合保存列表、字典这类结构化数据。",[451,183887,183889],{"className":46787,"code":183888,"language":46789,"meta":32,"style":32},"import json\n\nstudent = {\n    \"name\": \"小明\",\n    \"age\": 18,\n    \"score\": 95\n}\n\ntext = json.dumps(student, ensure_ascii=False, indent=2)\nprint(text)\n",[457,183890,183891,183897,183901,183909,183919,183929,183937,183941,183945,183970],{"__ignoreMap":32},[460,183892,183893,183895],{"class":462,"line":463},[460,183894,46801],{"class":887},[460,183896,161584],{"class":466},[460,183898,183899],{"class":462,"line":476},[460,183900,522],{"emptyLinePlaceholder":521},[460,183902,183903,183905,183907],{"class":462,"line":482},[460,183904,163974],{"class":466},[460,183906,894],{"class":887},[460,183908,1348],{"class":466},[460,183910,183911,183913,183915,183917],{"class":462,"line":488},[460,183912,161513],{"class":1353},[460,183914,1961],{"class":466},[460,183916,164381],{"class":1353},[460,183918,1363],{"class":466},[460,183920,183921,183923,183925,183927],{"class":462,"line":494},[460,183922,179030],{"class":1353},[460,183924,1961],{"class":466},[460,183926,2361],{"class":900},[460,183928,1363],{"class":466},[460,183930,183931,183933,183935],{"class":462,"line":500},[460,183932,179041],{"class":1353},[460,183934,1961],{"class":466},[460,183936,179046],{"class":900},[460,183938,183939],{"class":462,"line":506},[460,183940,821],{"class":466},[460,183942,183943],{"class":462,"line":512},[460,183944,522],{"emptyLinePlaceholder":521},[460,183946,183947,183949,183951,183954,183956,183958,183960,183962,183964,183966,183968],{"class":462,"line":518},[460,183948,170937],{"class":466},[460,183950,894],{"class":887},[460,183952,183953],{"class":466}," json.dumps(student, ",[460,183955,161630],{"class":3380},[460,183957,894],{"class":887},[460,183959,50292],{"class":900},[460,183961,904],{"class":466},[460,183963,166505],{"class":3380},[460,183965,894],{"class":887},[460,183967,907],{"class":900},[460,183969,3754],{"class":466},[460,183971,183972,183974],{"class":462,"line":525},[460,183973,46824],{"class":900},[460,183975,178564],{"class":466},[14,183977,183978],{},"写入 JSON 文件：",[451,183980,183982],{"className":46787,"code":183981,"language":46789,"meta":32,"style":32},"import json\n\nstudents = [\n    {\"name\": \"小明\", \"age\": 18, \"score\": 95},\n    {\"name\": \"小红\", \"age\": 17, \"score\": 88},\n]\n\nwith open(\"students.json\", \"w\", encoding=\"utf-8\") as file:\n    json.dump(students, file, ensure_ascii=False, indent=2)\n",[457,183983,183984,183990,183994,184002,184030,184058,184062,184066,184096],{"__ignoreMap":32},[460,183985,183986,183988],{"class":462,"line":463},[460,183987,46801],{"class":887},[460,183989,161584],{"class":466},[460,183991,183992],{"class":462,"line":476},[460,183993,522],{"emptyLinePlaceholder":521},[460,183995,183996,183998,184000],{"class":462,"line":482},[460,183997,174209],{"class":466},[460,183999,894],{"class":887},[460,184001,1385],{"class":466},[460,184003,184004,184006,184008,184010,184012,184014,184016,184018,184020,184022,184024,184026,184028],{"class":462,"line":488},[460,184005,162878],{"class":466},[460,184007,78848],{"class":1353},[460,184009,1961],{"class":466},[460,184011,164381],{"class":1353},[460,184013,904],{"class":466},[460,184015,85279],{"class":1353},[460,184017,1961],{"class":466},[460,184019,2361],{"class":900},[460,184021,904],{"class":466},[460,184023,165965],{"class":1353},[460,184025,1961],{"class":466},[460,184027,17696],{"class":900},[460,184029,21439],{"class":466},[460,184031,184032,184034,184036,184038,184040,184042,184044,184046,184048,184050,184052,184054,184056],{"class":462,"line":494},[460,184033,162878],{"class":466},[460,184035,78848],{"class":1353},[460,184037,1961],{"class":466},[460,184039,165429],{"class":1353},[460,184041,904],{"class":466},[460,184043,85279],{"class":1353},[460,184045,1961],{"class":466},[460,184047,17346],{"class":900},[460,184049,904],{"class":466},[460,184051,165965],{"class":1353},[460,184053,1961],{"class":466},[460,184055,17526],{"class":900},[460,184057,21439],{"class":466},[460,184059,184060],{"class":462,"line":500},[460,184061,13307],{"class":466},[460,184063,184064],{"class":462,"line":506},[460,184065,522],{"emptyLinePlaceholder":521},[460,184067,184068,184070,184072,184074,184076,184078,184080,184082,184084,184086,184088,184090,184092,184094],{"class":462,"line":512},[460,184069,122326],{"class":887},[460,184071,161284],{"class":900},[460,184073,2174],{"class":466},[460,184075,166324],{"class":1353},[460,184077,904],{"class":466},[460,184079,166469],{"class":1353},[460,184081,904],{"class":466},[460,184083,161299],{"class":3380},[460,184085,894],{"class":887},[460,184087,161304],{"class":1353},[460,184089,8296],{"class":466},[460,184091,47790],{"class":887},[460,184093,162646],{"class":3380},[460,184095,20257],{"class":466},[460,184097,184098,184101,184103,184105,184107,184109,184111,184113,184115,184117,184119],{"class":462,"line":518},[460,184099,184100],{"class":466},"    json.dump(students, ",[460,184102,61658],{"class":3380},[460,184104,904],{"class":466},[460,184106,161630],{"class":3380},[460,184108,894],{"class":887},[460,184110,50292],{"class":900},[460,184112,904],{"class":466},[460,184114,166505],{"class":3380},[460,184116,894],{"class":887},[460,184118,907],{"class":900},[460,184120,3754],{"class":466},[14,184122,184123],{},"读取 JSON 文件：",[451,184125,184127],{"className":46787,"code":184126,"language":46789,"meta":32,"style":32},"import json\n\nwith open(\"students.json\", \"r\", encoding=\"utf-8\") as file:\n    students = json.load(file)\n\nprint(students)\n",[457,184128,184129,184135,184139,184169,184181,184185],{"__ignoreMap":32},[460,184130,184131,184133],{"class":462,"line":463},[460,184132,46801],{"class":887},[460,184134,161584],{"class":466},[460,184136,184137],{"class":462,"line":476},[460,184138,522],{"emptyLinePlaceholder":521},[460,184140,184141,184143,184145,184147,184149,184151,184153,184155,184157,184159,184161,184163,184165,184167],{"class":462,"line":482},[460,184142,122326],{"class":887},[460,184144,161284],{"class":900},[460,184146,2174],{"class":466},[460,184148,166324],{"class":1353},[460,184150,904],{"class":466},[460,184152,161294],{"class":1353},[460,184154,904],{"class":466},[460,184156,161299],{"class":3380},[460,184158,894],{"class":887},[460,184160,161304],{"class":1353},[460,184162,8296],{"class":466},[460,184164,47790],{"class":887},[460,184166,162646],{"class":3380},[460,184168,20257],{"class":466},[460,184170,184171,184173,184175,184177,184179],{"class":462,"line":488},[460,184172,167530],{"class":466},[460,184174,894],{"class":887},[460,184176,162657],{"class":466},[460,184178,61658],{"class":3380},[460,184180,3754],{"class":466},[460,184182,184183],{"class":462,"line":494},[460,184184,522],{"emptyLinePlaceholder":521},[460,184186,184187,184189],{"class":462,"line":500},[460,184188,46824],{"class":900},[460,184190,179488],{"class":466},[18,184192,184194],{"id":184193},"_811-csv文件","8.11 CSV文件",[14,184196,184197],{},"CSV 是逗号分隔值，常用于表格数据。",[14,184199,184200],{},"写入 CSV：",[451,184202,184204],{"className":46787,"code":184203,"language":46789,"meta":32,"style":32},"import csv\n\nstudents = [\n    [\"姓名\", \"年龄\", \"成绩\"],\n    [\"小明\", 18, 95],\n    [\"小红\", 17, 88],\n]\n\nwith open(\"students.csv\", \"w\", encoding=\"utf-8\", newline=\"\") as file:\n    writer = csv.writer(file)\n    writer.writerows(students)\n",[457,184205,184206,184213,184217,184225,184243,184259,184275,184279,184283,184323,184337],{"__ignoreMap":32},[460,184207,184208,184210],{"class":462,"line":463},[460,184209,46801],{"class":887},[460,184211,184212],{"class":466}," csv\n",[460,184214,184215],{"class":462,"line":476},[460,184216,522],{"emptyLinePlaceholder":521},[460,184218,184219,184221,184223],{"class":462,"line":482},[460,184220,174209],{"class":466},[460,184222,894],{"class":887},[460,184224,1385],{"class":466},[460,184226,184227,184230,184232,184234,184236,184238,184241],{"class":462,"line":488},[460,184228,184229],{"class":466},"    [",[460,184231,89227],{"class":1353},[460,184233,904],{"class":466},[460,184235,89260],{"class":1353},[460,184237,904],{"class":466},[460,184239,184240],{"class":1353},"\"成绩\"",[460,184242,11640],{"class":466},[460,184244,184245,184247,184249,184251,184253,184255,184257],{"class":462,"line":494},[460,184246,184229],{"class":466},[460,184248,164381],{"class":1353},[460,184250,904],{"class":466},[460,184252,2361],{"class":900},[460,184254,904],{"class":466},[460,184256,17696],{"class":900},[460,184258,11640],{"class":466},[460,184260,184261,184263,184265,184267,184269,184271,184273],{"class":462,"line":500},[460,184262,184229],{"class":466},[460,184264,165429],{"class":1353},[460,184266,904],{"class":466},[460,184268,17346],{"class":900},[460,184270,904],{"class":466},[460,184272,17526],{"class":900},[460,184274,11640],{"class":466},[460,184276,184277],{"class":462,"line":506},[460,184278,13307],{"class":466},[460,184280,184281],{"class":462,"line":512},[460,184282,522],{"emptyLinePlaceholder":521},[460,184284,184285,184287,184289,184291,184294,184296,184298,184300,184302,184304,184306,184308,184311,184313,184315,184317,184319,184321],{"class":462,"line":518},[460,184286,122326],{"class":887},[460,184288,161284],{"class":900},[460,184290,2174],{"class":466},[460,184292,184293],{"class":1353},"\"students.csv\"",[460,184295,904],{"class":466},[460,184297,166469],{"class":1353},[460,184299,904],{"class":466},[460,184301,161299],{"class":3380},[460,184303,894],{"class":887},[460,184305,161304],{"class":1353},[460,184307,904],{"class":466},[460,184309,184310],{"class":3380},"newline",[460,184312,894],{"class":887},[460,184314,6606],{"class":1353},[460,184316,8296],{"class":466},[460,184318,47790],{"class":887},[460,184320,162646],{"class":3380},[460,184322,20257],{"class":466},[460,184324,184325,184328,184330,184333,184335],{"class":462,"line":525},[460,184326,184327],{"class":466},"    writer ",[460,184329,894],{"class":887},[460,184331,184332],{"class":466}," csv.writer(",[460,184334,61658],{"class":3380},[460,184336,3754],{"class":466},[460,184338,184339],{"class":462,"line":531},[460,184340,184341],{"class":466},"    writer.writerows(students)\n",[14,184343,184344],{},"读取 CSV：",[451,184346,184348],{"className":46787,"code":184347,"language":46789,"meta":32,"style":32},"import csv\n\nwith open(\"students.csv\", \"r\", encoding=\"utf-8\") as file:\n    reader = csv.reader(file)\n    for row in reader:\n        print(row)\n",[457,184349,184350,184356,184360,184390,184404,184416],{"__ignoreMap":32},[460,184351,184352,184354],{"class":462,"line":463},[460,184353,46801],{"class":887},[460,184355,184212],{"class":466},[460,184357,184358],{"class":462,"line":476},[460,184359,522],{"emptyLinePlaceholder":521},[460,184361,184362,184364,184366,184368,184370,184372,184374,184376,184378,184380,184382,184384,184386,184388],{"class":462,"line":482},[460,184363,122326],{"class":887},[460,184365,161284],{"class":900},[460,184367,2174],{"class":466},[460,184369,184293],{"class":1353},[460,184371,904],{"class":466},[460,184373,161294],{"class":1353},[460,184375,904],{"class":466},[460,184377,161299],{"class":3380},[460,184379,894],{"class":887},[460,184381,161304],{"class":1353},[460,184383,8296],{"class":466},[460,184385,47790],{"class":887},[460,184387,162646],{"class":3380},[460,184389,20257],{"class":466},[460,184391,184392,184395,184397,184400,184402],{"class":462,"line":488},[460,184393,184394],{"class":466},"    reader ",[460,184396,894],{"class":887},[460,184398,184399],{"class":466}," csv.reader(",[460,184401,61658],{"class":3380},[460,184403,3754],{"class":466},[460,184405,184406,184408,184411,184413],{"class":462,"line":494},[460,184407,19722],{"class":887},[460,184409,184410],{"class":466}," row ",[460,184412,11713],{"class":887},[460,184414,184415],{"class":466}," reader:\n",[460,184417,184418,184420],{"class":462,"line":500},[460,184419,48856],{"class":900},[460,184421,184422],{"class":466},"(row)\n",[14,184424,184425],{},"使用字典写入：",[451,184427,184429],{"className":46787,"code":184428,"language":46789,"meta":32,"style":32},"import csv\n\nstudents = [\n    {\"name\": \"小明\", \"age\": 18, \"score\": 95},\n    {\"name\": \"小红\", \"age\": 17, \"score\": 88},\n]\n\nwith open(\"students.csv\", \"w\", encoding=\"utf-8\", newline=\"\") as file:\n    fieldnames = [\"name\", \"age\", \"score\"]\n    writer = csv.DictWriter(file, fieldnames=fieldnames)\n    writer.writeheader()\n    writer.writerows(students)\n",[457,184430,184431,184437,184441,184449,184477,184505,184509,184513,184551,184572,184593,184598],{"__ignoreMap":32},[460,184432,184433,184435],{"class":462,"line":463},[460,184434,46801],{"class":887},[460,184436,184212],{"class":466},[460,184438,184439],{"class":462,"line":476},[460,184440,522],{"emptyLinePlaceholder":521},[460,184442,184443,184445,184447],{"class":462,"line":482},[460,184444,174209],{"class":466},[460,184446,894],{"class":887},[460,184448,1385],{"class":466},[460,184450,184451,184453,184455,184457,184459,184461,184463,184465,184467,184469,184471,184473,184475],{"class":462,"line":488},[460,184452,162878],{"class":466},[460,184454,78848],{"class":1353},[460,184456,1961],{"class":466},[460,184458,164381],{"class":1353},[460,184460,904],{"class":466},[460,184462,85279],{"class":1353},[460,184464,1961],{"class":466},[460,184466,2361],{"class":900},[460,184468,904],{"class":466},[460,184470,165965],{"class":1353},[460,184472,1961],{"class":466},[460,184474,17696],{"class":900},[460,184476,21439],{"class":466},[460,184478,184479,184481,184483,184485,184487,184489,184491,184493,184495,184497,184499,184501,184503],{"class":462,"line":494},[460,184480,162878],{"class":466},[460,184482,78848],{"class":1353},[460,184484,1961],{"class":466},[460,184486,165429],{"class":1353},[460,184488,904],{"class":466},[460,184490,85279],{"class":1353},[460,184492,1961],{"class":466},[460,184494,17346],{"class":900},[460,184496,904],{"class":466},[460,184498,165965],{"class":1353},[460,184500,1961],{"class":466},[460,184502,17526],{"class":900},[460,184504,21439],{"class":466},[460,184506,184507],{"class":462,"line":500},[460,184508,13307],{"class":466},[460,184510,184511],{"class":462,"line":506},[460,184512,522],{"emptyLinePlaceholder":521},[460,184514,184515,184517,184519,184521,184523,184525,184527,184529,184531,184533,184535,184537,184539,184541,184543,184545,184547,184549],{"class":462,"line":512},[460,184516,122326],{"class":887},[460,184518,161284],{"class":900},[460,184520,2174],{"class":466},[460,184522,184293],{"class":1353},[460,184524,904],{"class":466},[460,184526,166469],{"class":1353},[460,184528,904],{"class":466},[460,184530,161299],{"class":3380},[460,184532,894],{"class":887},[460,184534,161304],{"class":1353},[460,184536,904],{"class":466},[460,184538,184310],{"class":3380},[460,184540,894],{"class":887},[460,184542,6606],{"class":1353},[460,184544,8296],{"class":466},[460,184546,47790],{"class":887},[460,184548,162646],{"class":3380},[460,184550,20257],{"class":466},[460,184552,184553,184556,184558,184560,184562,184564,184566,184568,184570],{"class":462,"line":518},[460,184554,184555],{"class":466},"    fieldnames ",[460,184557,894],{"class":887},[460,184559,897],{"class":466},[460,184561,78848],{"class":1353},[460,184563,904],{"class":466},[460,184565,85279],{"class":1353},[460,184567,904],{"class":466},[460,184569,165965],{"class":1353},[460,184571,13307],{"class":466},[460,184573,184574,184576,184578,184581,184583,184585,184588,184590],{"class":462,"line":525},[460,184575,184327],{"class":466},[460,184577,894],{"class":887},[460,184579,184580],{"class":466}," csv.DictWriter(",[460,184582,61658],{"class":3380},[460,184584,904],{"class":466},[460,184586,184587],{"class":3380},"fieldnames",[460,184589,894],{"class":887},[460,184591,184592],{"class":466},"fieldnames)\n",[460,184594,184595],{"class":462,"line":531},[460,184596,184597],{"class":466},"    writer.writeheader()\n",[460,184599,184600],{"class":462,"line":537},[460,184601,184341],{"class":466},[18,184603,184605],{"id":184604},"_812-小案例文本词频统计","8.12 小案例：文本词频统计",[14,184607,137785],{},[103,184609,184610,184613,184616],{},[43,184611,184612],{},"读取文本文件。",[43,184614,184615],{},"统计每个单词出现次数。",[43,184617,184618],{},"输出出现次数最多的前 10 个单词。",[14,184620,26500],{},[451,184622,184624],{"className":46787,"code":184623,"language":46789,"meta":32,"style":32},"from pathlib import Path\n\npath = Path(\"article.txt\")\ncontent = path.read_text(encoding=\"utf-8\")\n\nwords = content.lower().split()\ncounter = {}\n\nfor word in words:\n    word = word.strip(\".,!?;:\\\"'()[]\")\n    if not word:\n        continue\n    counter[word] = counter.get(word, 0) + 1\n\nitems = sorted(counter.items(), key=lambda item: item[1], reverse=True)\n\nfor word, count in items[:10]:\n    print(word, count)\n",[457,184625,184626,184636,184640,184653,184669,184673,184683,184692,184696,184708,184728,184737,184741,184759,184763,184793,184797,184813],{"__ignoreMap":32},[460,184627,184628,184630,184632,184634],{"class":462,"line":463},[460,184629,47145],{"class":887},[460,184631,122804],{"class":466},[460,184633,46801],{"class":887},[460,184635,122809],{"class":466},[460,184637,184638],{"class":462,"line":476},[460,184639,522],{"emptyLinePlaceholder":521},[460,184641,184642,184644,184646,184648,184651],{"class":462,"line":482},[460,184643,182804],{"class":466},[460,184645,894],{"class":887},[460,184647,123038],{"class":466},[460,184649,184650],{"class":1353},"\"article.txt\"",[460,184652,3754],{"class":466},[460,184654,184655,184657,184659,184661,184663,184665,184667],{"class":462,"line":488},[460,184656,182987],{"class":466},[460,184658,894],{"class":887},[460,184660,183864],{"class":466},[460,184662,161299],{"class":3380},[460,184664,894],{"class":887},[460,184666,161304],{"class":1353},[460,184668,3754],{"class":466},[460,184670,184671],{"class":462,"line":494},[460,184672,522],{"emptyLinePlaceholder":521},[460,184674,184675,184678,184680],{"class":462,"line":500},[460,184676,184677],{"class":466},"words ",[460,184679,894],{"class":887},[460,184681,184682],{"class":466}," content.lower().split()\n",[460,184684,184685,184688,184690],{"class":462,"line":506},[460,184686,184687],{"class":466},"counter ",[460,184689,894],{"class":887},[460,184691,11672],{"class":466},[460,184693,184694],{"class":462,"line":512},[460,184695,522],{"emptyLinePlaceholder":521},[460,184697,184698,184700,184703,184705],{"class":462,"line":518},[460,184699,19547],{"class":887},[460,184701,184702],{"class":466}," word ",[460,184704,11713],{"class":887},[460,184706,184707],{"class":466}," words:\n",[460,184709,184710,184713,184715,184718,184721,184723,184726],{"class":462,"line":525},[460,184711,184712],{"class":466},"    word ",[460,184714,894],{"class":887},[460,184716,184717],{"class":466}," word.strip(",[460,184719,184720],{"class":1353},"\".,!?;:",[460,184722,170988],{"class":900},[460,184724,184725],{"class":1353},"'()[]\"",[460,184727,3754],{"class":466},[460,184729,184730,184732,184734],{"class":462,"line":531},[460,184731,19622],{"class":887},[460,184733,55235],{"class":887},[460,184735,184736],{"class":466}," word:\n",[460,184738,184739],{"class":462,"line":537},[460,184740,163005],{"class":887},[460,184742,184743,184746,184748,184751,184753,184755,184757],{"class":462,"line":543},[460,184744,184745],{"class":466},"    counter[word] ",[460,184747,894],{"class":887},[460,184749,184750],{"class":466}," counter.get(word, ",[460,184752,936],{"class":900},[460,184754,8296],{"class":466},[460,184756,8495],{"class":887},[460,184758,71910],{"class":900},[460,184760,184761],{"class":462,"line":549},[460,184762,522],{"emptyLinePlaceholder":521},[460,184764,184765,184768,184770,184772,184775,184777,184779,184781,184783,184785,184787,184789,184791],{"class":462,"line":555},[460,184766,184767],{"class":466},"items ",[460,184769,894],{"class":887},[460,184771,178097],{"class":900},[460,184773,184774],{"class":466},"(counter.items(), ",[460,184776,168439],{"class":3380},[460,184778,168442],{"class":887},[460,184780,168445],{"class":466},[460,184782,901],{"class":900},[460,184784,126695],{"class":466},[460,184786,178021],{"class":3380},[460,184788,894],{"class":887},[460,184790,47882],{"class":900},[460,184792,3754],{"class":466},[460,184794,184795],{"class":462,"line":560},[460,184796,522],{"emptyLinePlaceholder":521},[460,184798,184799,184801,184804,184806,184809,184811],{"class":462,"line":566},[460,184800,19547],{"class":887},[460,184802,184803],{"class":466}," word, count ",[460,184805,11713],{"class":887},[460,184807,184808],{"class":466}," items[:",[460,184810,2096],{"class":900},[460,184812,180248],{"class":466},[460,184814,184815,184817],{"class":462,"line":572},[460,184816,47706],{"class":900},[460,184818,184819],{"class":466},"(word, count)\n",[18,184821,184823],{"id":184822},"_813-小案例学生信息持久化","8.13 小案例：学生信息持久化",[451,184825,184827],{"className":46787,"code":184826,"language":46789,"meta":32,"style":32},"import json\nfrom pathlib import Path\n\nDATA_FILE = Path(\"students.json\")\n\n\ndef load_students():\n    if not DATA_FILE.exists():\n        return []\n\n    with open(DATA_FILE, \"r\", encoding=\"utf-8\") as file:\n        return json.load(file)\n\n\ndef save_students(students):\n    with open(DATA_FILE, \"w\", encoding=\"utf-8\") as file:\n        json.dump(students, file, ensure_ascii=False, indent=2)\n\n\nstudents = load_students()\nstudents.append({\"name\": \"小明\", \"age\": 18, \"score\": 95})\nsave_students(students)\nprint(\"保存成功\")\n",[457,184828,184829,184835,184845,184849,184861,184865,184869,184877,184887,184893,184897,184927,184937,184941,184945,184953,184983,185007,185011,185015,185023,185052,185057],{"__ignoreMap":32},[460,184830,184831,184833],{"class":462,"line":463},[460,184832,46801],{"class":887},[460,184834,161584],{"class":466},[460,184836,184837,184839,184841,184843],{"class":462,"line":476},[460,184838,47145],{"class":887},[460,184840,122804],{"class":466},[460,184842,46801],{"class":887},[460,184844,122809],{"class":466},[460,184846,184847],{"class":462,"line":482},[460,184848,522],{"emptyLinePlaceholder":521},[460,184850,184851,184853,184855,184857,184859],{"class":462,"line":488},[460,184852,166317],{"class":900},[460,184854,2943],{"class":887},[460,184856,123038],{"class":466},[460,184858,166324],{"class":1353},[460,184860,3754],{"class":466},[460,184862,184863],{"class":462,"line":494},[460,184864,522],{"emptyLinePlaceholder":521},[460,184866,184867],{"class":462,"line":500},[460,184868,522],{"emptyLinePlaceholder":521},[460,184870,184871,184873,184875],{"class":462,"line":506},[460,184872,48352],{"class":887},[460,184874,166341],{"class":929},[460,184876,48358],{"class":466},[460,184878,184879,184881,184883,184885],{"class":462,"line":512},[460,184880,19622],{"class":887},[460,184882,55235],{"class":887},[460,184884,166352],{"class":900},[460,184886,166355],{"class":466},[460,184888,184889,184891],{"class":462,"line":518},[460,184890,31206],{"class":887},[460,184892,11766],{"class":466},[460,184894,184895],{"class":462,"line":525},[460,184896,522],{"emptyLinePlaceholder":521},[460,184898,184899,184901,184903,184905,184907,184909,184911,184913,184915,184917,184919,184921,184923,184925],{"class":462,"line":531},[460,184900,50483],{"class":887},[460,184902,161284],{"class":900},[460,184904,2174],{"class":466},[460,184906,166317],{"class":900},[460,184908,904],{"class":466},[460,184910,161294],{"class":1353},[460,184912,904],{"class":466},[460,184914,161299],{"class":3380},[460,184916,894],{"class":887},[460,184918,161304],{"class":1353},[460,184920,8296],{"class":466},[460,184922,47790],{"class":887},[460,184924,162646],{"class":3380},[460,184926,20257],{"class":466},[460,184928,184929,184931,184933,184935],{"class":462,"line":537},[460,184930,31206],{"class":887},[460,184932,162657],{"class":466},[460,184934,61658],{"class":3380},[460,184936,3754],{"class":466},[460,184938,184939],{"class":462,"line":543},[460,184940,522],{"emptyLinePlaceholder":521},[460,184942,184943],{"class":462,"line":549},[460,184944,522],{"emptyLinePlaceholder":521},[460,184946,184947,184949,184951],{"class":462,"line":555},[460,184948,48352],{"class":887},[460,184950,166451],{"class":929},[460,184952,166454],{"class":466},[460,184954,184955,184957,184959,184961,184963,184965,184967,184969,184971,184973,184975,184977,184979,184981],{"class":462,"line":560},[460,184956,50483],{"class":887},[460,184958,161284],{"class":900},[460,184960,2174],{"class":466},[460,184962,166317],{"class":900},[460,184964,904],{"class":466},[460,184966,166469],{"class":1353},[460,184968,904],{"class":466},[460,184970,161299],{"class":3380},[460,184972,894],{"class":887},[460,184974,161304],{"class":1353},[460,184976,8296],{"class":466},[460,184978,47790],{"class":887},[460,184980,162646],{"class":3380},[460,184982,20257],{"class":466},[460,184984,184985,184987,184989,184991,184993,184995,184997,184999,185001,185003,185005],{"class":462,"line":566},[460,184986,166490],{"class":466},[460,184988,61658],{"class":3380},[460,184990,904],{"class":466},[460,184992,161630],{"class":3380},[460,184994,894],{"class":887},[460,184996,50292],{"class":900},[460,184998,904],{"class":466},[460,185000,166505],{"class":3380},[460,185002,894],{"class":887},[460,185004,907],{"class":900},[460,185006,3754],{"class":466},[460,185008,185009],{"class":462,"line":572},[460,185010,522],{"emptyLinePlaceholder":521},[460,185012,185013],{"class":462,"line":578},[460,185014,522],{"emptyLinePlaceholder":521},[460,185016,185017,185019,185021],{"class":462,"line":812},[460,185018,174209],{"class":466},[460,185020,894],{"class":887},[460,185022,167535],{"class":466},[460,185024,185025,185028,185030,185032,185034,185036,185038,185040,185042,185044,185046,185048,185050],{"class":462,"line":818},[460,185026,185027],{"class":466},"students.append({",[460,185029,78848],{"class":1353},[460,185031,1961],{"class":466},[460,185033,164381],{"class":1353},[460,185035,904],{"class":466},[460,185037,85279],{"class":1353},[460,185039,1961],{"class":466},[460,185041,2361],{"class":900},[460,185043,904],{"class":466},[460,185045,165965],{"class":1353},[460,185047,1961],{"class":466},[460,185049,17696],{"class":900},[460,185051,179645],{"class":466},[460,185053,185054],{"class":462,"line":824},[460,185055,185056],{"class":466},"save_students(students)\n",[460,185058,185059,185061,185063,185066],{"class":462,"line":2074},[460,185060,46824],{"class":900},[460,185062,2174],{"class":466},[460,185064,185065],{"class":1353},"\"保存成功\"",[460,185067,3754],{"class":466},[18,185069,185071],{"id":185070},"_814-易错点","8.14 易错点",[103,185073,185074,185078,185084,185089,185096,185103],{},[43,185075,185076,183337],{},[457,185077,17510],{},[43,185079,185080,185081,44794],{},"读写中文要指定 ",[457,185082,185083],{},"encoding=\"utf-8\"",[43,185085,185086,185087,44794],{},"打开文件后要关闭，推荐使用 ",[457,185088,122326],{},[43,185090,185091,185092,185095],{},"读取大文件不要直接 ",[457,185093,185094],{},"read()"," 全部内容。",[43,185097,185098,185099,185102],{},"Windows 写 CSV 时建议加 ",[457,185100,185101],{},"newline=\"\"","，避免空行。",[43,185104,185105],{},"JSON 只能保存基础数据类型，不能直接保存函数、文件对象等。",[18,185107,185109],{"id":185108},"_815-本章练习","8.15 本章练习",[103,185111,185112,185119,185124,185127,185130],{},[43,185113,185114,185115,185118],{},"写入一个 ",[457,185116,185117],{},"students.txt","，每行保存一个学生姓名。",[43,185120,118848,185121,185123],{},[457,185122,185117],{}," 并输出所有学生。",[43,185125,185126],{},"把学生列表保存为 JSON 文件。",[43,185128,185129],{},"从 JSON 文件读取学生数据，计算平均分。",[43,185131,185132,185133,185136,185137,185140],{},"写一个日志函数 ",[457,185134,185135],{},"write_log(message)","，每次调用向 ",[457,185138,185139],{},"app.log"," 追加一行。",[1944,185142,185143],{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":32,"searchDepth":476,"depth":476,"links":185145},[185146,185147,185151,185152,185158,185159,185160,185161,185162,185163,185164,185165,185166,185167,185168],{"id":182657,"depth":476,"text":182658},{"id":182698,"depth":476,"text":182699,"children":185148},[185149,185150],{"id":182702,"depth":482,"text":182703},{"id":182736,"depth":482,"text":182737},{"id":182850,"depth":476,"text":182851},{"id":182943,"depth":476,"text":182944,"children":185153},[185154,185155,185156,185157],{"id":182947,"depth":482,"text":182948},{"id":183034,"depth":482,"text":183035},{"id":183104,"depth":482,"text":183105},{"id":183198,"depth":482,"text":183199},{"id":183268,"depth":476,"text":183269},{"id":183331,"depth":476,"text":183332},{"id":183492,"depth":476,"text":183493},{"id":183555,"depth":476,"text":183556},{"id":183671,"depth":476,"text":183672},{"id":183881,"depth":476,"text":183882},{"id":184193,"depth":476,"text":184194},{"id":184604,"depth":476,"text":184605},{"id":184822,"depth":476,"text":184823},{"id":185070,"depth":476,"text":185071},{"id":185108,"depth":476,"text":185109},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch8",{"title":182649,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch8-文件操作","TCxYv9FRIlOsuS2LeUSgcbxHSxHOruKUW4ZecWBr6Yo",{"id":185175,"title":185176,"body":185177,"description":16682,"extension":16683,"meta":187363,"navigation":521,"path":187364,"seo":187365,"stem":187366,"__hash__":187367},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Fch9-异常模块与包.md","9. 异常、模块与包",{"type":7,"value":185178,"toc":187330},[185179,185182,185186,185189,185192,185284,185286,185305,185310,185314,185317,185320,185349,185356,185359,185363,185366,185395,185397,185449,185455,185508,185512,185610,185613,185680,185684,185741,185743,185749,185753,185758,185764,185855,185860,185864,185867,185945,185948,185986,185990,186108,186111,186115,186118,186163,186166,186170,186175,186181,186231,186234,186265,186269,186273,186303,186307,186342,186346,186381,186421,186425,186441,186444,186448,186452,186531,186535,186576,186580,186635,186639,186673,186677,186707,186716,186723,186729,186786,186789,186797,186800,186804,186811,186814,186820,186823,186840,186845,186849,186855,186868,186871,186908,186911,186922,186925,186939,186942,186956,186960,186967,187000,187003,187005,187011,187014,187018,187020,187026,187031,187204,187208,187271,187275,187299,187303,187327],[10,185180,185176],{"id":185181},"_9-异常模块与包",[18,185183,185185],{"id":185184},"_91-什么是异常","9.1 什么是异常",[14,185187,185188],{},"异常是程序运行过程中出现的错误。",[14,185190,185191],{},"常见异常：",[16884,185193,185194,185203],{},[16887,185195,185196],{},[16890,185197,185198,185201],{},[16893,185199,185200],{},"异常",[16893,185202,42281],{},[16930,185204,185205,185215,185225,185234,185244,185254,185264,185274],{},[16890,185206,185207,185212],{},[16935,185208,185209],{},[457,185210,185211],{},"NameError",[16935,185213,185214],{},"使用了未定义变量",[16890,185216,185217,185222],{},[16935,185218,185219],{},[457,185220,185221],{},"TypeError",[16935,185223,185224],{},"类型不匹配",[16890,185226,185227,185231],{},[16935,185228,185229],{},[457,185230,169327],{},[16935,185232,185233],{},"值不合法",[16890,185235,185236,185241],{},[16935,185237,185238],{},[457,185239,185240],{},"IndexError",[16935,185242,185243],{},"列表索引越界",[16890,185245,185246,185251],{},[16935,185247,185248],{},[457,185249,185250],{},"KeyError",[16935,185252,185253],{},"字典 key 不存在",[16890,185255,185256,185261],{},[16935,185257,185258],{},[457,185259,185260],{},"FileNotFoundError",[16935,185262,185263],{},"文件不存在",[16890,185265,185266,185271],{},[16935,185267,185268],{},[457,185269,185270],{},"ZeroDivisionError",[16935,185272,185273],{},"除数为 0",[16890,185275,185276,185281],{},[16935,185277,185278],{},[457,185279,185280],{},"ImportError",[16935,185282,185283],{},"导入失败",[14,185285,31586],{},[451,185287,185289],{"className":46787,"code":185288,"language":46789,"meta":32,"style":32},"num = int(\"abc\")\n",[457,185290,185291],{"__ignoreMap":32},[460,185292,185293,185295,185297,185299,185301,185303],{"class":462,"line":463},[460,185294,170280],{"class":466},[460,185296,894],{"class":887},[460,185298,18917],{"class":900},[460,185300,2174],{"class":466},[460,185302,170373],{"class":1353},[460,185304,3754],{"class":466},[14,185306,185307,185308,44794],{},"会触发 ",[457,185309,169327],{},[18,185311,185313],{"id":185312},"_92-为什么要处理异常","9.2 为什么要处理异常",[14,185315,185316],{},"如果不处理异常，程序会直接终止。",[14,185318,185319],{},"例如用户输入年龄：",[451,185321,185323],{"className":46787,"code":185322,"language":46789,"meta":32,"style":32},"age = int(input(\"请输入年龄:\"))\nprint(age)\n",[457,185324,185325,185343],{"__ignoreMap":32},[460,185326,185327,185329,185331,185333,185335,185337,185339,185341],{"class":462,"line":463},[460,185328,161039],{"class":466},[460,185330,894],{"class":887},[460,185332,18917],{"class":900},[460,185334,2174],{"class":466},[460,185336,70068],{"class":900},[460,185338,2174],{"class":466},[460,185340,166887],{"class":1353},[460,185342,6311],{"class":466},[460,185344,185345,185347],{"class":462,"line":476},[460,185346,46824],{"class":900},[460,185348,170254],{"class":466},[14,185350,185351,185352,185355],{},"用户输入 ",[457,185353,185354],{},"abc","，程序就会报错退出。",[14,185357,185358],{},"异常处理可以让程序在出错时给出友好提示，并继续运行。",[18,185360,185362],{"id":185361},"_93-try-except","9.3 try except",[14,185364,185365],{},"基础语法：",[451,185367,185369],{"className":46787,"code":185368,"language":46789,"meta":32,"style":32},"try:\n    可能出错的代码\nexcept:\n    出错后的处理代码\n",[457,185370,185371,185378,185383,185390],{"__ignoreMap":32},[460,185372,185373,185376],{"class":462,"line":463},[460,185374,185375],{"class":887},"try",[460,185377,20257],{"class":466},[460,185379,185380],{"class":462,"line":476},[460,185381,185382],{"class":466},"    可能出错的代码\n",[460,185384,185385,185388],{"class":462,"line":482},[460,185386,185387],{"class":887},"except",[460,185389,20257],{"class":466},[460,185391,185392],{"class":462,"line":488},[460,185393,185394],{"class":466},"    出错后的处理代码\n",[14,185396,31586],{},[451,185398,185400],{"className":46787,"code":185399,"language":46789,"meta":32,"style":32},"try:\n    age = int(input(\"请输入年龄:\"))\n    print(age)\nexcept:\n    print(\"年龄必须是数字\")\n",[457,185401,185402,185408,185426,185432,185438],{"__ignoreMap":32},[460,185403,185404,185406],{"class":462,"line":463},[460,185405,185375],{"class":887},[460,185407,20257],{"class":466},[460,185409,185410,185412,185414,185416,185418,185420,185422,185424],{"class":462,"line":476},[460,185411,166879],{"class":466},[460,185413,894],{"class":887},[460,185415,18917],{"class":900},[460,185417,2174],{"class":466},[460,185419,70068],{"class":900},[460,185421,2174],{"class":466},[460,185423,166887],{"class":1353},[460,185425,6311],{"class":466},[460,185427,185428,185430],{"class":462,"line":482},[460,185429,47706],{"class":900},[460,185431,170254],{"class":466},[460,185433,185434,185436],{"class":462,"line":488},[460,185435,185387],{"class":887},[460,185437,20257],{"class":466},[460,185439,185440,185442,185444,185447],{"class":462,"line":494},[460,185441,47706],{"class":900},[460,185443,2174],{"class":466},[460,185445,185446],{"class":1353},"\"年龄必须是数字\"",[460,185448,3754],{"class":466},[14,185450,185451,185452,185454],{},"不建议裸写 ",[457,185453,185387],{},"，最好指定异常类型。",[451,185456,185458],{"className":46787,"code":185457,"language":46789,"meta":32,"style":32},"try:\n    age = int(input(\"请输入年龄:\"))\n    print(age)\nexcept ValueError:\n    print(\"年龄必须是数字\")\n",[457,185459,185460,185466,185484,185490,185498],{"__ignoreMap":32},[460,185461,185462,185464],{"class":462,"line":463},[460,185463,185375],{"class":887},[460,185465,20257],{"class":466},[460,185467,185468,185470,185472,185474,185476,185478,185480,185482],{"class":462,"line":476},[460,185469,166879],{"class":466},[460,185471,894],{"class":887},[460,185473,18917],{"class":900},[460,185475,2174],{"class":466},[460,185477,70068],{"class":900},[460,185479,2174],{"class":466},[460,185481,166887],{"class":1353},[460,185483,6311],{"class":466},[460,185485,185486,185488],{"class":462,"line":482},[460,185487,47706],{"class":900},[460,185489,170254],{"class":466},[460,185491,185492,185494,185496],{"class":462,"line":488},[460,185493,185387],{"class":887},[460,185495,166719],{"class":900},[460,185497,20257],{"class":466},[460,185499,185500,185502,185504,185506],{"class":462,"line":494},[460,185501,47706],{"class":900},[460,185503,2174],{"class":466},[460,185505,185446],{"class":1353},[460,185507,3754],{"class":466},[18,185509,185511],{"id":185510},"_94-捕获多个异常","9.4 捕获多个异常",[451,185513,185515],{"className":46787,"code":185514,"language":46789,"meta":32,"style":32},"try:\n    nums = [1, 2, 3]\n    index = int(input(\"请输入索引:\"))\n    print(nums[index])\nexcept ValueError:\n    print(\"索引必须是整数\")\nexcept IndexError:\n    print(\"索引越界\")\n",[457,185516,185517,185523,185544,185564,185571,185579,185590,185599],{"__ignoreMap":32},[460,185518,185519,185521],{"class":462,"line":463},[460,185520,185375],{"class":887},[460,185522,20257],{"class":466},[460,185524,185525,185528,185530,185532,185534,185536,185538,185540,185542],{"class":462,"line":476},[460,185526,185527],{"class":466},"    nums ",[460,185529,894],{"class":887},[460,185531,897],{"class":466},[460,185533,901],{"class":900},[460,185535,904],{"class":466},[460,185537,907],{"class":900},[460,185539,904],{"class":466},[460,185541,913],{"class":900},[460,185543,13307],{"class":466},[460,185545,185546,185549,185551,185553,185555,185557,185559,185562],{"class":462,"line":482},[460,185547,185548],{"class":466},"    index ",[460,185550,894],{"class":887},[460,185552,18917],{"class":900},[460,185554,2174],{"class":466},[460,185556,70068],{"class":900},[460,185558,2174],{"class":466},[460,185560,185561],{"class":1353},"\"请输入索引:\"",[460,185563,6311],{"class":466},[460,185565,185566,185568],{"class":462,"line":488},[460,185567,47706],{"class":900},[460,185569,185570],{"class":466},"(nums[index])\n",[460,185572,185573,185575,185577],{"class":462,"line":494},[460,185574,185387],{"class":887},[460,185576,166719],{"class":900},[460,185578,20257],{"class":466},[460,185580,185581,185583,185585,185588],{"class":462,"line":500},[460,185582,47706],{"class":900},[460,185584,2174],{"class":466},[460,185586,185587],{"class":1353},"\"索引必须是整数\"",[460,185589,3754],{"class":466},[460,185591,185592,185594,185597],{"class":462,"line":506},[460,185593,185387],{"class":887},[460,185595,185596],{"class":900}," IndexError",[460,185598,20257],{"class":466},[460,185600,185601,185603,185605,185608],{"class":462,"line":512},[460,185602,47706],{"class":900},[460,185604,2174],{"class":466},[460,185606,185607],{"class":1353},"\"索引越界\"",[460,185609,3754],{"class":466},[14,185611,185612],{},"多个异常使用相同处理逻辑：",[451,185614,185616],{"className":46787,"code":185615,"language":46789,"meta":32,"style":32},"try:\n    num = int(input(\"请输入数字:\"))\n    print(10 \u002F num)\nexcept (ValueError, ZeroDivisionError):\n    print(\"输入不合法\")\n",[457,185617,185618,185624,185642,185655,185669],{"__ignoreMap":32},[460,185619,185620,185622],{"class":462,"line":463},[460,185621,185375],{"class":887},[460,185623,20257],{"class":466},[460,185625,185626,185628,185630,185632,185634,185636,185638,185640],{"class":462,"line":476},[460,185627,61897],{"class":466},[460,185629,894],{"class":887},[460,185631,18917],{"class":900},[460,185633,2174],{"class":466},[460,185635,70068],{"class":900},[460,185637,2174],{"class":466},[460,185639,170289],{"class":1353},[460,185641,6311],{"class":466},[460,185643,185644,185646,185648,185650,185652],{"class":462,"line":482},[460,185645,47706],{"class":900},[460,185647,2174],{"class":466},[460,185649,2096],{"class":900},[460,185651,170539],{"class":887},[460,185653,185654],{"class":466}," num)\n",[460,185656,185657,185659,185661,185663,185665,185667],{"class":462,"line":488},[460,185658,185387],{"class":887},[460,185660,11704],{"class":466},[460,185662,169327],{"class":900},[460,185664,904],{"class":466},[460,185666,185270],{"class":900},[460,185668,47194],{"class":466},[460,185670,185671,185673,185675,185678],{"class":462,"line":494},[460,185672,47706],{"class":900},[460,185674,2174],{"class":466},[460,185676,185677],{"class":1353},"\"输入不合法\"",[460,185679,3754],{"class":466},[18,185681,185683],{"id":185682},"_95-获取异常信息","9.5 获取异常信息",[451,185685,185687],{"className":46787,"code":185686,"language":46789,"meta":32,"style":32},"try:\n    num = int(\"abc\")\nexcept ValueError as e:\n    print(f\"出错了:{e}\")\n",[457,185688,185689,185695,185709,185720],{"__ignoreMap":32},[460,185690,185691,185693],{"class":462,"line":463},[460,185692,185375],{"class":887},[460,185694,20257],{"class":466},[460,185696,185697,185699,185701,185703,185705,185707],{"class":462,"line":476},[460,185698,61897],{"class":466},[460,185700,894],{"class":887},[460,185702,18917],{"class":900},[460,185704,2174],{"class":466},[460,185706,170373],{"class":1353},[460,185708,3754],{"class":466},[460,185710,185711,185713,185715,185717],{"class":462,"line":482},[460,185712,185387],{"class":887},[460,185714,166719],{"class":900},[460,185716,80767],{"class":887},[460,185718,185719],{"class":466}," e:\n",[460,185721,185722,185724,185726,185728,185731,185733,185735,185737,185739],{"class":462,"line":488},[460,185723,47706],{"class":900},[460,185725,2174],{"class":466},[460,185727,16804],{"class":887},[460,185729,185730],{"class":1353},"\"出错了:",[460,185732,17607],{"class":900},[460,185734,3609],{"class":466},[460,185736,612],{"class":900},[460,185738,16993],{"class":1353},[460,185740,3754],{"class":466},[14,185742,160950],{},[451,185744,185747],{"className":185745,"code":185746,"language":8391,"meta":32},[21693],"出错了:invalid literal for int() with base 10: 'abc'\n",[457,185748,185746],{"__ignoreMap":32},[18,185750,185752],{"id":185751},"_96-else和finally","9.6 else和finally",[14,185754,185755,185757],{},[457,185756,3763],{},"：没有异常时执行。",[14,185759,185760,185763],{},[457,185761,185762],{},"finally","：无论是否异常都会执行。",[451,185765,185767],{"className":46787,"code":185766,"language":46789,"meta":32,"style":32},"try:\n    num = int(input(\"请输入数字:\"))\nexcept ValueError:\n    print(\"输入错误\")\nelse:\n    print(f\"输入正确:{num}\")\nfinally:\n    print(\"程序结束\")\n",[457,185768,185769,185775,185793,185801,185811,185817,185838,185844],{"__ignoreMap":32},[460,185770,185771,185773],{"class":462,"line":463},[460,185772,185375],{"class":887},[460,185774,20257],{"class":466},[460,185776,185777,185779,185781,185783,185785,185787,185789,185791],{"class":462,"line":476},[460,185778,61897],{"class":466},[460,185780,894],{"class":887},[460,185782,18917],{"class":900},[460,185784,2174],{"class":466},[460,185786,70068],{"class":900},[460,185788,2174],{"class":466},[460,185790,170289],{"class":1353},[460,185792,6311],{"class":466},[460,185794,185795,185797,185799],{"class":462,"line":482},[460,185796,185387],{"class":887},[460,185798,166719],{"class":900},[460,185800,20257],{"class":466},[460,185802,185803,185805,185807,185809],{"class":462,"line":488},[460,185804,47706],{"class":900},[460,185806,2174],{"class":466},[460,185808,167707],{"class":1353},[460,185810,3754],{"class":466},[460,185812,185813,185815],{"class":462,"line":494},[460,185814,3763],{"class":887},[460,185816,20257],{"class":466},[460,185818,185819,185821,185823,185825,185828,185830,185832,185834,185836],{"class":462,"line":500},[460,185820,47706],{"class":900},[460,185822,2174],{"class":466},[460,185824,16804],{"class":887},[460,185826,185827],{"class":1353},"\"输入正确:",[460,185829,17607],{"class":900},[460,185831,18224],{"class":466},[460,185833,612],{"class":900},[460,185835,16993],{"class":1353},[460,185837,3754],{"class":466},[460,185839,185840,185842],{"class":462,"line":506},[460,185841,185762],{"class":887},[460,185843,20257],{"class":466},[460,185845,185846,185848,185850,185853],{"class":462,"line":512},[460,185847,47706],{"class":900},[460,185849,2174],{"class":466},[460,185851,185852],{"class":1353},"\"程序结束\"",[460,185854,3754],{"class":466},[14,185856,185857,185859],{},[457,185858,185762],{}," 常用于释放资源，如关闭文件、关闭网络连接。",[18,185861,185863],{"id":185862},"_97-抛出异常","9.7 抛出异常",[14,185865,185866],{},"程序可以主动抛出异常。",[451,185868,185870],{"className":46787,"code":185869,"language":46789,"meta":32,"style":32},"def set_age(age):\n    if age \u003C 0:\n        raise ValueError(\"年龄不能为负数\")\n    print(f\"年龄:{age}\")\n\n\nset_age(-1)\n",[457,185871,185872,185881,185893,185906,185926,185930,185934],{"__ignoreMap":32},[460,185873,185874,185876,185879],{"class":462,"line":463},[460,185875,48352],{"class":887},[460,185877,185878],{"class":929}," set_age",[460,185880,175908],{"class":466},[460,185882,185883,185885,185887,185889,185891],{"class":462,"line":476},[460,185884,19622],{"class":887},[460,185886,32157],{"class":466},[460,185888,781],{"class":887},[460,185890,2224],{"class":900},[460,185892,20257],{"class":466},[460,185894,185895,185897,185899,185901,185904],{"class":462,"line":482},[460,185896,117925],{"class":887},[460,185898,166719],{"class":900},[460,185900,2174],{"class":466},[460,185902,185903],{"class":1353},"\"年龄不能为负数\"",[460,185905,3754],{"class":466},[460,185907,185908,185910,185912,185914,185916,185918,185920,185922,185924],{"class":462,"line":488},[460,185909,47706],{"class":900},[460,185911,2174],{"class":466},[460,185913,16804],{"class":887},[460,185915,176476],{"class":1353},[460,185917,17607],{"class":900},[460,185919,3989],{"class":466},[460,185921,612],{"class":900},[460,185923,16993],{"class":1353},[460,185925,3754],{"class":466},[460,185927,185928],{"class":462,"line":494},[460,185929,522],{"emptyLinePlaceholder":521},[460,185931,185932],{"class":462,"line":500},[460,185933,522],{"emptyLinePlaceholder":521},[460,185935,185936,185939,185941,185943],{"class":462,"line":506},[460,185937,185938],{"class":466},"set_age(",[460,185940,17259],{"class":887},[460,185942,901],{"class":900},[460,185944,3754],{"class":466},[14,185946,185947],{},"调用者可以捕获：",[451,185949,185951],{"className":46787,"code":185950,"language":46789,"meta":32,"style":32},"try:\n    set_age(-1)\nexcept ValueError as e:\n    print(e)\n",[457,185952,185953,185959,185970,185980],{"__ignoreMap":32},[460,185954,185955,185957],{"class":462,"line":463},[460,185956,185375],{"class":887},[460,185958,20257],{"class":466},[460,185960,185961,185964,185966,185968],{"class":462,"line":476},[460,185962,185963],{"class":466},"    set_age(",[460,185965,17259],{"class":887},[460,185967,901],{"class":900},[460,185969,3754],{"class":466},[460,185971,185972,185974,185976,185978],{"class":462,"line":482},[460,185973,185387],{"class":887},[460,185975,166719],{"class":900},[460,185977,80767],{"class":887},[460,185979,185719],{"class":466},[460,185981,185982,185984],{"class":462,"line":488},[460,185983,47706],{"class":900},[460,185985,83157],{"class":466},[18,185987,185989],{"id":185988},"_98-自定义异常","9.8 自定义异常",[451,185991,185993],{"className":46787,"code":185992,"language":46789,"meta":32,"style":32},"class BalanceNotEnoughError(Exception):\n    pass\n\n\ndef withdraw(balance, money):\n    if money > balance:\n        raise BalanceNotEnoughError(\"余额不足\")\n    return balance - money\n\n\ntry:\n    balance = withdraw(100, 200)\nexcept BalanceNotEnoughError as e:\n    print(e)\n",[457,185994,185995,186009,186013,186017,186021,186029,186039,186050,186060,186064,186068,186074,186091,186102],{"__ignoreMap":32},[460,185996,185997,185999,186002,186004,186007],{"class":462,"line":463},[460,185998,31148],{"class":887},[460,186000,186001],{"class":929}," BalanceNotEnoughError",[460,186003,2174],{"class":466},[460,186005,186006],{"class":900},"Exception",[460,186008,47194],{"class":466},[460,186010,186011],{"class":462,"line":476},[460,186012,164030],{"class":887},[460,186014,186015],{"class":462,"line":482},[460,186016,522],{"emptyLinePlaceholder":521},[460,186018,186019],{"class":462,"line":488},[460,186020,522],{"emptyLinePlaceholder":521},[460,186022,186023,186025,186027],{"class":462,"line":494},[460,186024,48352],{"class":887},[460,186026,164679],{"class":929},[460,186028,177305],{"class":466},[460,186030,186031,186033,186035,186037],{"class":462,"line":500},[460,186032,19622],{"class":887},[460,186034,164635],{"class":466},[460,186036,17668],{"class":887},[460,186038,177082],{"class":466},[460,186040,186041,186043,186046,186048],{"class":462,"line":506},[460,186042,117925],{"class":887},[460,186044,186045],{"class":466}," BalanceNotEnoughError(",[460,186047,164730],{"class":1353},[460,186049,3754],{"class":466},[460,186051,186052,186054,186056,186058],{"class":462,"line":512},[460,186053,20605],{"class":887},[460,186055,177312],{"class":466},[460,186057,17259],{"class":887},[460,186059,164668],{"class":466},[460,186061,186062],{"class":462,"line":518},[460,186063,522],{"emptyLinePlaceholder":521},[460,186065,186066],{"class":462,"line":525},[460,186067,522],{"emptyLinePlaceholder":521},[460,186069,186070,186072],{"class":462,"line":531},[460,186071,185375],{"class":887},[460,186073,20257],{"class":466},[460,186075,186076,186078,186080,186083,186085,186087,186089],{"class":462,"line":537},[460,186077,176983],{"class":466},[460,186079,894],{"class":887},[460,186081,186082],{"class":466}," withdraw(",[460,186084,2325],{"class":900},[460,186086,904],{"class":466},[460,186088,5490],{"class":900},[460,186090,3754],{"class":466},[460,186092,186093,186095,186098,186100],{"class":462,"line":543},[460,186094,185387],{"class":887},[460,186096,186097],{"class":466}," BalanceNotEnoughError ",[460,186099,47790],{"class":887},[460,186101,185719],{"class":466},[460,186103,186104,186106],{"class":462,"line":549},[460,186105,47706],{"class":900},[460,186107,83157],{"class":466},[14,186109,186110],{},"入门阶段大多数情况使用内置异常即可。",[18,186112,186114],{"id":186113},"_99-traceback","9.9 traceback",[14,186116,186117],{},"调试时可以输出完整异常堆栈。",[451,186119,186121],{"className":46787,"code":186120,"language":46789,"meta":32,"style":32},"import traceback\n\ntry:\n    int(\"abc\")\nexcept ValueError:\n    traceback.print_exc()\n",[457,186122,186123,186130,186134,186140,186150,186158],{"__ignoreMap":32},[460,186124,186125,186127],{"class":462,"line":463},[460,186126,46801],{"class":887},[460,186128,186129],{"class":466}," traceback\n",[460,186131,186132],{"class":462,"line":476},[460,186133,522],{"emptyLinePlaceholder":521},[460,186135,186136,186138],{"class":462,"line":482},[460,186137,185375],{"class":887},[460,186139,20257],{"class":466},[460,186141,186142,186144,186146,186148],{"class":462,"line":488},[460,186143,18525],{"class":900},[460,186145,2174],{"class":466},[460,186147,170373],{"class":1353},[460,186149,3754],{"class":466},[460,186151,186152,186154,186156],{"class":462,"line":494},[460,186153,185387],{"class":887},[460,186155,166719],{"class":900},[460,186157,20257],{"class":466},[460,186159,186160],{"class":462,"line":500},[460,186161,186162],{"class":466},"    traceback.print_exc()\n",[14,186164,186165],{},"日志系统中常把异常堆栈记录到文件。",[18,186167,186169],{"id":186168},"_910-什么是模块","9.10 什么是模块",[14,186171,186172,186173,140476],{},"模块就是一个 ",[457,186174,160845],{},[14,186176,186177,186178,41031],{},"例如创建 ",[457,186179,186180],{},"my_math.py",[451,186182,186184],{"className":46787,"code":186183,"language":46789,"meta":32,"style":32},"def add(a, b):\n    return a + b\n\n\ndef sub(a, b):\n    return a - b\n",[457,186185,186186,186194,186204,186208,186212,186221],{"__ignoreMap":32},[460,186187,186188,186190,186192],{"class":462,"line":463},[460,186189,48352],{"class":887},[460,186191,21716],{"class":929},[460,186193,165586],{"class":466},[460,186195,186196,186198,186200,186202],{"class":462,"line":476},[460,186197,20605],{"class":887},[460,186199,27333],{"class":466},[460,186201,8495],{"class":887},[460,186203,165597],{"class":466},[460,186205,186206],{"class":462,"line":482},[460,186207,522],{"emptyLinePlaceholder":521},[460,186209,186210],{"class":462,"line":488},[460,186211,522],{"emptyLinePlaceholder":521},[460,186213,186214,186216,186219],{"class":462,"line":494},[460,186215,48352],{"class":887},[460,186217,186218],{"class":929}," sub",[460,186220,165586],{"class":466},[460,186222,186223,186225,186227,186229],{"class":462,"line":500},[460,186224,20605],{"class":887},[460,186226,27333],{"class":466},[460,186228,17259],{"class":887},[460,186230,165597],{"class":466},[14,186232,186233],{},"在另一个文件中导入：",[451,186235,186237],{"className":46787,"code":186236,"language":46789,"meta":32,"style":32},"import my_math\n\nprint(my_math.add(1, 2))\n",[457,186238,186239,186246,186250],{"__ignoreMap":32},[460,186240,186241,186243],{"class":462,"line":463},[460,186242,46801],{"class":887},[460,186244,186245],{"class":466}," my_math\n",[460,186247,186248],{"class":462,"line":476},[460,186249,522],{"emptyLinePlaceholder":521},[460,186251,186252,186254,186257,186259,186261,186263],{"class":462,"line":482},[460,186253,46824],{"class":900},[460,186255,186256],{"class":466},"(my_math.add(",[460,186258,901],{"class":900},[460,186260,904],{"class":466},[460,186262,907],{"class":900},[460,186264,6311],{"class":466},[18,186266,186268],{"id":186267},"_911-import导入","9.11 import导入",[23,186270,186272],{"id":186271},"_9111-导入模块","9.11.1 导入模块",[451,186274,186276],{"className":46787,"code":186275,"language":46789,"meta":32,"style":32},"import random\n\nprint(random.randint(1, 10))\n",[457,186277,186278,186284,186288],{"__ignoreMap":32},[460,186279,186280,186282],{"class":462,"line":463},[460,186281,46801],{"class":887},[460,186283,61632],{"class":466},[460,186285,186286],{"class":462,"line":476},[460,186287,522],{"emptyLinePlaceholder":521},[460,186289,186290,186292,186295,186297,186299,186301],{"class":462,"line":482},[460,186291,46824],{"class":900},[460,186293,186294],{"class":466},"(random.randint(",[460,186296,901],{"class":900},[460,186298,904],{"class":466},[460,186300,2096],{"class":900},[460,186302,6311],{"class":466},[23,186304,186306],{"id":186305},"_9112-导入指定内容","9.11.2 导入指定内容",[451,186308,186310],{"className":46787,"code":186309,"language":46789,"meta":32,"style":32},"from random import randint\n\nprint(randint(1, 10))\n",[457,186311,186312,186323,186327],{"__ignoreMap":32},[460,186313,186314,186316,186318,186320],{"class":462,"line":463},[460,186315,47145],{"class":887},[460,186317,74001],{"class":466},[460,186319,46801],{"class":887},[460,186321,186322],{"class":466}," randint\n",[460,186324,186325],{"class":462,"line":476},[460,186326,522],{"emptyLinePlaceholder":521},[460,186328,186329,186331,186334,186336,186338,186340],{"class":462,"line":482},[460,186330,46824],{"class":900},[460,186332,186333],{"class":466},"(randint(",[460,186335,901],{"class":900},[460,186337,904],{"class":466},[460,186339,2096],{"class":900},[460,186341,6311],{"class":466},[23,186343,186345],{"id":186344},"_9113-起别名","9.11.3 起别名",[451,186347,186349],{"className":46787,"code":186348,"language":46789,"meta":32,"style":32},"import random as rd\n\nprint(rd.randint(1, 10))\n",[457,186350,186351,186362,186366],{"__ignoreMap":32},[460,186352,186353,186355,186357,186359],{"class":462,"line":463},[460,186354,46801],{"class":887},[460,186356,74001],{"class":466},[460,186358,47790],{"class":887},[460,186360,186361],{"class":466}," rd\n",[460,186363,186364],{"class":462,"line":476},[460,186365,522],{"emptyLinePlaceholder":521},[460,186367,186368,186370,186373,186375,186377,186379],{"class":462,"line":482},[460,186369,46824],{"class":900},[460,186371,186372],{"class":466},"(rd.randint(",[460,186374,901],{"class":900},[460,186376,904],{"class":466},[460,186378,2096],{"class":900},[460,186380,6311],{"class":466},[451,186382,186384],{"className":46787,"code":186383,"language":46789,"meta":32,"style":32},"from random import randint as rint\n\nprint(rint(1, 10))\n",[457,186385,186386,186402,186406],{"__ignoreMap":32},[460,186387,186388,186390,186392,186394,186397,186399],{"class":462,"line":463},[460,186389,47145],{"class":887},[460,186391,74001],{"class":466},[460,186393,46801],{"class":887},[460,186395,186396],{"class":466}," randint ",[460,186398,47790],{"class":887},[460,186400,186401],{"class":466}," rint\n",[460,186403,186404],{"class":462,"line":476},[460,186405,522],{"emptyLinePlaceholder":521},[460,186407,186408,186410,186413,186415,186417,186419],{"class":462,"line":482},[460,186409,46824],{"class":900},[460,186411,186412],{"class":466},"(rint(",[460,186414,901],{"class":900},[460,186416,904],{"class":466},[460,186418,2096],{"class":900},[460,186420,6311],{"class":466},[23,186422,186424],{"id":186423},"_9114-不推荐星号导入","9.11.4 不推荐星号导入",[451,186426,186428],{"className":46787,"code":186427,"language":46789,"meta":32,"style":32},"from random import *\n",[457,186429,186430],{"__ignoreMap":32},[460,186431,186432,186434,186436,186438],{"class":462,"line":463},[460,186433,47145],{"class":887},[460,186435,74001],{"class":466},[460,186437,46801],{"class":887},[460,186439,186440],{"class":887}," *\n",[14,186442,186443],{},"这种写法会让当前文件多出很多名字，容易冲突，不利于阅读。",[18,186445,186447],{"id":186446},"_912-常用内置模块","9.12 常用内置模块",[23,186449,186451],{"id":186450},"_9121-random","9.12.1 random",[451,186453,186455],{"className":46787,"code":186454,"language":46789,"meta":32,"style":32},"import random\n\nprint(random.randint(1, 10))\nprint(random.choice([\"小明\", \"小红\", \"小刚\"]))\nprint(random.sample([1, 2, 3, 4, 5], 2))\n",[457,186456,186457,186463,186467,186481,186500],{"__ignoreMap":32},[460,186458,186459,186461],{"class":462,"line":463},[460,186460,46801],{"class":887},[460,186462,61632],{"class":466},[460,186464,186465],{"class":462,"line":476},[460,186466,522],{"emptyLinePlaceholder":521},[460,186468,186469,186471,186473,186475,186477,186479],{"class":462,"line":482},[460,186470,46824],{"class":900},[460,186472,186294],{"class":466},[460,186474,901],{"class":900},[460,186476,904],{"class":466},[460,186478,2096],{"class":900},[460,186480,6311],{"class":466},[460,186482,186483,186485,186488,186490,186492,186494,186496,186498],{"class":462,"line":488},[460,186484,46824],{"class":900},[460,186486,186487],{"class":466},"(random.choice([",[460,186489,164381],{"class":1353},[460,186491,904],{"class":466},[460,186493,165429],{"class":1353},[460,186495,904],{"class":466},[460,186497,174224],{"class":1353},[460,186499,49494],{"class":466},[460,186501,186502,186504,186507,186509,186511,186513,186515,186517,186519,186521,186523,186525,186527,186529],{"class":462,"line":494},[460,186503,46824],{"class":900},[460,186505,186506],{"class":466},"(random.sample([",[460,186508,901],{"class":900},[460,186510,904],{"class":466},[460,186512,907],{"class":900},[460,186514,904],{"class":466},[460,186516,913],{"class":900},[460,186518,904],{"class":466},[460,186520,918],{"class":900},[460,186522,904],{"class":466},[460,186524,7290],{"class":900},[460,186526,126695],{"class":466},[460,186528,907],{"class":900},[460,186530,6311],{"class":466},[23,186532,186534],{"id":186533},"_9122-time","9.12.2 time",[451,186536,186538],{"className":46787,"code":186537,"language":46789,"meta":32,"style":32},"import time\n\nprint(time.time())\ntime.sleep(1)\nprint(\"1秒后执行\")\n",[457,186539,186540,186546,186550,186557,186565],{"__ignoreMap":32},[460,186541,186542,186544],{"class":462,"line":463},[460,186543,46801],{"class":887},[460,186545,48234],{"class":466},[460,186547,186548],{"class":462,"line":476},[460,186549,522],{"emptyLinePlaceholder":521},[460,186551,186552,186554],{"class":462,"line":482},[460,186553,46824],{"class":900},[460,186555,186556],{"class":466},"(time.time())\n",[460,186558,186559,186561,186563],{"class":462,"line":488},[460,186560,109564],{"class":466},[460,186562,901],{"class":900},[460,186564,3754],{"class":466},[460,186566,186567,186569,186571,186574],{"class":462,"line":494},[460,186568,46824],{"class":900},[460,186570,2174],{"class":466},[460,186572,186573],{"class":1353},"\"1秒后执行\"",[460,186575,3754],{"class":466},[23,186577,186579],{"id":186578},"_9123-datetime","9.12.3 datetime",[451,186581,186583],{"className":46787,"code":186582,"language":46789,"meta":32,"style":32},"from datetime import datetime\n\nnow = datetime.now()\nprint(now)\nprint(now.strftime(\"%Y-%m-%d %H:%M:%S\"))\n",[457,186584,186585,186597,186601,186611,186618],{"__ignoreMap":32},[460,186586,186587,186589,186592,186594],{"class":462,"line":463},[460,186588,47145],{"class":887},[460,186590,186591],{"class":466}," datetime ",[460,186593,46801],{"class":887},[460,186595,186596],{"class":466}," datetime\n",[460,186598,186599],{"class":462,"line":476},[460,186600,522],{"emptyLinePlaceholder":521},[460,186602,186603,186606,186608],{"class":462,"line":482},[460,186604,186605],{"class":466},"now ",[460,186607,894],{"class":887},[460,186609,186610],{"class":466}," datetime.now()\n",[460,186612,186613,186615],{"class":462,"line":488},[460,186614,46824],{"class":900},[460,186616,186617],{"class":466},"(now)\n",[460,186619,186620,186622,186625,186628,186630,186633],{"class":462,"line":494},[460,186621,46824],{"class":900},[460,186623,186624],{"class":466},"(now.strftime(",[460,186626,186627],{"class":1353},"\"%Y-%m-",[460,186629,171184],{"class":900},[460,186631,186632],{"class":1353}," %H:%M:%S\"",[460,186634,6311],{"class":466},[23,186636,186638],{"id":186637},"_9124-os","9.12.4 os",[451,186640,186642],{"className":46787,"code":186641,"language":46789,"meta":32,"style":32},"import os\n\nprint(os.getcwd())\nprint(os.listdir(\".\"))\n",[457,186643,186644,186650,186654,186661],{"__ignoreMap":32},[460,186645,186646,186648],{"class":462,"line":463},[460,186647,46801],{"class":887},[460,186649,61609],{"class":466},[460,186651,186652],{"class":462,"line":476},[460,186653,522],{"emptyLinePlaceholder":521},[460,186655,186656,186658],{"class":462,"line":482},[460,186657,46824],{"class":900},[460,186659,186660],{"class":466},"(os.getcwd())\n",[460,186662,186663,186665,186668,186671],{"class":462,"line":488},[460,186664,46824],{"class":900},[460,186666,186667],{"class":466},"(os.listdir(",[460,186669,186670],{"class":1353},"\".\"",[460,186672,6311],{"class":466},[23,186674,186676],{"id":186675},"_9125-sys","9.12.5 sys",[451,186678,186680],{"className":46787,"code":186679,"language":46789,"meta":32,"style":32},"import sys\n\nprint(sys.version)\nprint(sys.path)\n",[457,186681,186682,186689,186693,186700],{"__ignoreMap":32},[460,186683,186684,186686],{"class":462,"line":463},[460,186685,46801],{"class":887},[460,186687,186688],{"class":466}," sys\n",[460,186690,186691],{"class":462,"line":476},[460,186692,522],{"emptyLinePlaceholder":521},[460,186694,186695,186697],{"class":462,"line":482},[460,186696,46824],{"class":900},[460,186698,186699],{"class":466},"(sys.version)\n",[460,186701,186702,186704],{"class":462,"line":488},[460,186703,46824],{"class":900},[460,186705,186706],{"class":466},"(sys.path)\n",[18,186708,186710,186711,186713,186714,16993],{"id":186709},"_913-if-name-main","9.13 if ",[3944,186712,3440],{}," == \"",[3944,186715,116551],{},[14,186717,186718,186719,186722],{},"模块被直接运行和被导入时，",[457,186720,186721],{},"__name__"," 的值不同。",[14,186724,186725,186726,41031],{},"创建 ",[457,186727,186728],{},"my_module.py",[451,186730,186732],{"className":46787,"code":186731,"language":46789,"meta":32,"style":32},"def add(a, b):\n    return a + b\n\n\nif __name__ == \"__main__\":\n    print(add(1, 2))\n",[457,186733,186734,186742,186752,186756,186760,186772],{"__ignoreMap":32},[460,186735,186736,186738,186740],{"class":462,"line":463},[460,186737,48352],{"class":887},[460,186739,21716],{"class":929},[460,186741,165586],{"class":466},[460,186743,186744,186746,186748,186750],{"class":462,"line":476},[460,186745,20605],{"class":887},[460,186747,27333],{"class":466},[460,186749,8495],{"class":887},[460,186751,165597],{"class":466},[460,186753,186754],{"class":462,"line":482},[460,186755,522],{"emptyLinePlaceholder":521},[460,186757,186758],{"class":462,"line":488},[460,186759,522],{"emptyLinePlaceholder":521},[460,186761,186762,186764,186766,186768,186770],{"class":462,"line":494},[460,186763,18100],{"class":887},[460,186765,47627],{"class":900},[460,186767,116052],{"class":887},[460,186769,116055],{"class":1353},[460,186771,20257],{"class":466},[460,186773,186774,186776,186778,186780,186782,186784],{"class":462,"line":500},[460,186775,47706],{"class":900},[460,186777,181093],{"class":466},[460,186779,901],{"class":900},[460,186781,904],{"class":466},[460,186783,907],{"class":900},[460,186785,6311],{"class":466},[14,186787,186788],{},"作用：",[103,186790,186791,186794],{},[43,186792,186793],{},"直接运行该文件时，执行测试代码。",[43,186795,186796],{},"被其他文件导入时，不执行测试代码。",[14,186798,186799],{},"这是写模块时很常用的习惯。",[18,186801,186803],{"id":186802},"_914-包","9.14 包",[14,186805,186806,186807,186810],{},"包是包含 ",[457,186808,186809],{},"__init__.py"," 的目录，用于组织多个模块。",[14,186812,186813],{},"目录结构：",[451,186815,186818],{"className":186816,"code":186817,"language":8391,"meta":32},[21693],"project\u002F\n  main.py\n  utils\u002F\n    __init__.py\n    file_utils.py\n    string_utils.py\n",[457,186819,186817],{"__ignoreMap":32},[14,186821,186822],{},"导入：",[451,186824,186826],{"className":46787,"code":186825,"language":46789,"meta":32,"style":32},"from utils.file_utils import read_file\n",[457,186827,186828],{"__ignoreMap":32},[460,186829,186830,186832,186835,186837],{"class":462,"line":463},[460,186831,47145],{"class":887},[460,186833,186834],{"class":466}," utils.file_utils ",[460,186836,46801],{"class":887},[460,186838,186839],{"class":466}," read_file\n",[14,186841,186842,186844],{},[457,186843,186809],{}," 可以为空，也可以写包初始化逻辑。",[18,186846,186848],{"id":186847},"_915-第三方包","9.15 第三方包",[14,186850,186851,186852,186854],{},"第三方包通过 ",[457,186853,40244],{}," 安装。",[451,186856,186858],{"className":40235,"code":186857,"language":40237,"meta":32,"style":32},"pip install requests\n",[457,186859,186860],{"__ignoreMap":32},[460,186861,186862,186864,186866],{"class":462,"line":463},[460,186863,40244],{"class":929},[460,186865,40247],{"class":1353},[460,186867,160591],{"class":1353},[14,186869,186870],{},"使用：",[451,186872,186874],{"className":46787,"code":186873,"language":46789,"meta":32,"style":32},"import requests\n\nresponse = requests.get(\"https:\u002F\u002Fwww.example.com\")\nprint(response.status_code)\n",[457,186875,186876,186882,186886,186901],{"__ignoreMap":32},[460,186877,186878,186880],{"class":462,"line":463},[460,186879,46801],{"class":887},[460,186881,160591],{"class":466},[460,186883,186884],{"class":462,"line":476},[460,186885,522],{"emptyLinePlaceholder":521},[460,186887,186888,186891,186893,186896,186899],{"class":462,"line":482},[460,186889,186890],{"class":466},"response ",[460,186892,894],{"class":887},[460,186894,186895],{"class":466}," requests.get(",[460,186897,186898],{"class":1353},"\"https:\u002F\u002Fwww.example.com\"",[460,186900,3754],{"class":466},[460,186902,186903,186905],{"class":462,"line":488},[460,186904,46824],{"class":900},[460,186906,186907],{"class":466},"(response.status_code)\n",[14,186909,186910],{},"查看已安装包：",[451,186912,186914],{"className":40235,"code":186913,"language":40237,"meta":32,"style":32},"pip list\n",[457,186915,186916],{"__ignoreMap":32},[460,186917,186918,186920],{"class":462,"line":463},[460,186919,40244],{"class":929},[460,186921,133448],{"class":1353},[14,186923,186924],{},"导出项目依赖：",[451,186926,186927],{"className":40235,"code":160786,"language":40237,"meta":32,"style":32},[457,186928,186929],{"__ignoreMap":32},[460,186930,186931,186933,186935,186937],{"class":462,"line":463},[460,186932,40244],{"class":929},[460,186934,160795],{"class":1353},[460,186936,42633],{"class":887},[460,186938,160800],{"class":1353},[14,186940,186941],{},"安装项目依赖：",[451,186943,186944],{"className":40235,"code":160806,"language":40237,"meta":32,"style":32},[457,186945,186946],{"__ignoreMap":32},[460,186947,186948,186950,186952,186954],{"class":462,"line":463},[460,186949,40244],{"class":929},[460,186951,40247],{"class":1353},[460,186953,134132],{"class":900},[460,186955,160800],{"class":1353},[18,186957,186959],{"id":186958},"_916-模块搜索路径","9.16 模块搜索路径",[14,186961,186962,186963,186966],{},"Python 导入模块时会在 ",[457,186964,186965],{},"sys.path"," 中查找。",[451,186968,186970],{"className":46787,"code":186969,"language":46789,"meta":32,"style":32},"import sys\n\nfor path in sys.path:\n    print(path)\n",[457,186971,186972,186978,186982,186994],{"__ignoreMap":32},[460,186973,186974,186976],{"class":462,"line":463},[460,186975,46801],{"class":887},[460,186977,186688],{"class":466},[460,186979,186980],{"class":462,"line":476},[460,186981,522],{"emptyLinePlaceholder":521},[460,186983,186984,186986,186989,186991],{"class":462,"line":482},[460,186985,19547],{"class":887},[460,186987,186988],{"class":466}," path ",[460,186990,11713],{"class":887},[460,186992,186993],{"class":466}," sys.path:\n",[460,186995,186996,186998],{"class":462,"line":488},[460,186997,47706],{"class":900},[460,186999,183722],{"class":466},[14,187001,187002],{},"优先查找当前运行目录，所以文件名不要和标准库同名。",[14,187004,172116],{},[451,187006,187009],{"className":187007,"code":187008,"language":8391,"meta":32},[21693],"random.py\njson.py\ntime.py\n",[457,187010,187008],{"__ignoreMap":32},[14,187012,187013],{},"这些文件名可能导致导入异常。",[18,187015,187017],{"id":187016},"_917-小案例工具包拆分","9.17 小案例：工具包拆分",[14,187019,186813],{},[451,187021,187024],{"className":187022,"code":187023,"language":8391,"meta":32},[21693],"student_system\u002F\n  main.py\n  services\u002F\n    __init__.py\n    student_service.py\n  utils\u002F\n    __init__.py\n    file_utils.py\n",[457,187025,187023],{"__ignoreMap":32},[14,187027,187028,41031],{},[457,187029,187030],{},"utils\u002Ffile_utils.py",[451,187032,187034],{"className":46787,"code":187033,"language":46789,"meta":32,"style":32},"import json\nfrom pathlib import Path\n\n\ndef read_json(path):\n    path = Path(path)\n    if not path.exists():\n        return []\n\n    with open(path, \"r\", encoding=\"utf-8\") as file:\n        return json.load(file)\n\n\ndef write_json(path, data):\n    with open(path, \"w\", encoding=\"utf-8\") as file:\n        json.dump(data, file, ensure_ascii=False, indent=2)\n",[457,187035,187036,187042,187052,187056,187060,187070,187080,187088,187094,187098,187125,187135,187139,187143,187153,187179],{"__ignoreMap":32},[460,187037,187038,187040],{"class":462,"line":463},[460,187039,46801],{"class":887},[460,187041,161584],{"class":466},[460,187043,187044,187046,187048,187050],{"class":462,"line":476},[460,187045,47145],{"class":887},[460,187047,122804],{"class":466},[460,187049,46801],{"class":887},[460,187051,122809],{"class":466},[460,187053,187054],{"class":462,"line":482},[460,187055,522],{"emptyLinePlaceholder":521},[460,187057,187058],{"class":462,"line":488},[460,187059,522],{"emptyLinePlaceholder":521},[460,187061,187062,187064,187067],{"class":462,"line":494},[460,187063,48352],{"class":887},[460,187065,187066],{"class":929}," read_json",[460,187068,187069],{"class":466},"(path):\n",[460,187071,187072,187075,187077],{"class":462,"line":500},[460,187073,187074],{"class":466},"    path ",[460,187076,894],{"class":887},[460,187078,187079],{"class":466}," Path(path)\n",[460,187081,187082,187084,187086],{"class":462,"line":506},[460,187083,19622],{"class":887},[460,187085,55235],{"class":887},[460,187087,183803],{"class":466},[460,187089,187090,187092],{"class":462,"line":512},[460,187091,31206],{"class":887},[460,187093,11766],{"class":466},[460,187095,187096],{"class":462,"line":518},[460,187097,522],{"emptyLinePlaceholder":521},[460,187099,187100,187102,187104,187107,187109,187111,187113,187115,187117,187119,187121,187123],{"class":462,"line":525},[460,187101,50483],{"class":887},[460,187103,161284],{"class":900},[460,187105,187106],{"class":466},"(path, ",[460,187108,161294],{"class":1353},[460,187110,904],{"class":466},[460,187112,161299],{"class":3380},[460,187114,894],{"class":887},[460,187116,161304],{"class":1353},[460,187118,8296],{"class":466},[460,187120,47790],{"class":887},[460,187122,162646],{"class":3380},[460,187124,20257],{"class":466},[460,187126,187127,187129,187131,187133],{"class":462,"line":531},[460,187128,31206],{"class":887},[460,187130,162657],{"class":466},[460,187132,61658],{"class":3380},[460,187134,3754],{"class":466},[460,187136,187137],{"class":462,"line":537},[460,187138,522],{"emptyLinePlaceholder":521},[460,187140,187141],{"class":462,"line":543},[460,187142,522],{"emptyLinePlaceholder":521},[460,187144,187145,187147,187150],{"class":462,"line":549},[460,187146,48352],{"class":887},[460,187148,187149],{"class":929}," write_json",[460,187151,187152],{"class":466},"(path, data):\n",[460,187154,187155,187157,187159,187161,187163,187165,187167,187169,187171,187173,187175,187177],{"class":462,"line":555},[460,187156,50483],{"class":887},[460,187158,161284],{"class":900},[460,187160,187106],{"class":466},[460,187162,166469],{"class":1353},[460,187164,904],{"class":466},[460,187166,161299],{"class":3380},[460,187168,894],{"class":887},[460,187170,161304],{"class":1353},[460,187172,8296],{"class":466},[460,187174,47790],{"class":887},[460,187176,162646],{"class":3380},[460,187178,20257],{"class":466},[460,187180,187181,187184,187186,187188,187190,187192,187194,187196,187198,187200,187202],{"class":462,"line":560},[460,187182,187183],{"class":466},"        json.dump(data, ",[460,187185,61658],{"class":3380},[460,187187,904],{"class":466},[460,187189,161630],{"class":3380},[460,187191,894],{"class":887},[460,187193,50292],{"class":900},[460,187195,904],{"class":466},[460,187197,166505],{"class":3380},[460,187199,894],{"class":887},[460,187201,907],{"class":900},[460,187203,3754],{"class":466},[14,187205,187206,41031],{},[457,187207,169100],{},[451,187209,187211],{"className":46787,"code":187210,"language":46789,"meta":32,"style":32},"from utils.file_utils import read_json, write_json\n\nstudents = read_json(\"students.json\")\nstudents.append({\"name\": \"小明\", \"score\": 95})\nwrite_json(\"students.json\", students)\n",[457,187212,187213,187224,187228,187241,187261],{"__ignoreMap":32},[460,187214,187215,187217,187219,187221],{"class":462,"line":463},[460,187216,47145],{"class":887},[460,187218,186834],{"class":466},[460,187220,46801],{"class":887},[460,187222,187223],{"class":466}," read_json, write_json\n",[460,187225,187226],{"class":462,"line":476},[460,187227,522],{"emptyLinePlaceholder":521},[460,187229,187230,187232,187234,187237,187239],{"class":462,"line":482},[460,187231,174209],{"class":466},[460,187233,894],{"class":887},[460,187235,187236],{"class":466}," read_json(",[460,187238,166324],{"class":1353},[460,187240,3754],{"class":466},[460,187242,187243,187245,187247,187249,187251,187253,187255,187257,187259],{"class":462,"line":488},[460,187244,185027],{"class":466},[460,187246,78848],{"class":1353},[460,187248,1961],{"class":466},[460,187250,164381],{"class":1353},[460,187252,904],{"class":466},[460,187254,165965],{"class":1353},[460,187256,1961],{"class":466},[460,187258,17696],{"class":900},[460,187260,179645],{"class":466},[460,187262,187263,187266,187268],{"class":462,"line":494},[460,187264,187265],{"class":466},"write_json(",[460,187267,166324],{"class":1353},[460,187269,187270],{"class":466},", students)\n",[18,187272,187274],{"id":187273},"_918-易错点","9.18 易错点",[103,187276,187277,187280,187285,187290,187293,187296],{},[43,187278,187279],{},"异常处理不要把所有错误都吞掉，至少要输出提示。",[43,187281,187282,187283,44794],{},"能指定异常类型就不要裸写 ",[457,187284,185387],{},[43,187286,187287,187289],{},[457,187288,185762],{}," 无论是否出错都会执行。",[43,187291,187292],{},"模块文件名不要和标准库重名。",[43,187294,187295],{},"导入自己写的模块时，要注意运行目录。",[43,187297,187298],{},"第三方包要安装到当前解释器或虚拟环境中。",[18,187300,187302],{"id":187301},"_919-本章练习","9.19 本章练习",[103,187304,187305,187308,187311,187317,187324],{},[43,187306,187307],{},"写一个安全输入整数函数，输入错误时提示并重新输入。",[43,187309,187310],{},"写函数读取文件，如果文件不存在则返回空字符串。",[43,187312,186725,187313,187316],{},[457,187314,187315],{},"math_utils.py","，实现加减乘除函数并导入使用。",[43,187318,187319,187320,187323],{},"创建一个 ",[457,187321,187322],{},"utils"," 包，把 JSON 读写函数放进去。",[43,187325,187326],{},"写一个程序，捕获除零异常和输入格式异常。",[1944,187328,187329],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":476,"depth":476,"links":187331},[187332,187333,187334,187335,187336,187337,187338,187339,187340,187341,187342,187348,187355,187357,187358,187359,187360,187361,187362],{"id":185184,"depth":476,"text":185185},{"id":185312,"depth":476,"text":185313},{"id":185361,"depth":476,"text":185362},{"id":185510,"depth":476,"text":185511},{"id":185682,"depth":476,"text":185683},{"id":185751,"depth":476,"text":185752},{"id":185862,"depth":476,"text":185863},{"id":185988,"depth":476,"text":185989},{"id":186113,"depth":476,"text":186114},{"id":186168,"depth":476,"text":186169},{"id":186267,"depth":476,"text":186268,"children":187343},[187344,187345,187346,187347],{"id":186271,"depth":482,"text":186272},{"id":186305,"depth":482,"text":186306},{"id":186344,"depth":482,"text":186345},{"id":186423,"depth":482,"text":186424},{"id":186446,"depth":476,"text":186447,"children":187349},[187350,187351,187352,187353,187354],{"id":186450,"depth":482,"text":186451},{"id":186533,"depth":482,"text":186534},{"id":186578,"depth":482,"text":186579},{"id":186637,"depth":482,"text":186638},{"id":186675,"depth":482,"text":186676},{"id":186709,"depth":476,"text":187356},"9.13 if name == \"main\"",{"id":186802,"depth":476,"text":186803},{"id":186847,"depth":476,"text":186848},{"id":186958,"depth":476,"text":186959},{"id":187016,"depth":476,"text":187017},{"id":187273,"depth":476,"text":187274},{"id":187301,"depth":476,"text":187302},{},"\u002Fwiki\u002F2024-10-10-python\u002Fch9",{"title":185176,"description":16682},"wiki\u002F2024-10-10-python教程\u002Fch9-异常模块与包","8DoHUbhjhl_mmNCItpRjdgW7aUS0tCEWZltQGpr-eIk",{"id":187369,"title":187370,"body":187371,"description":187534,"extension":16683,"meta":187535,"navigation":521,"path":187536,"seo":187537,"stem":187538,"__hash__":187539},"wiki\u002Fwiki\u002F2024-10-10-python教程\u002Findex.md","Python教程",{"type":7,"value":187372,"toc":187529},[187373,187376,187379,187382,187393,187395,187469,187472,187475,187478,187481,187484,187487,187490,187493,187496,187499],[10,187374,187370],{"id":187375},"python教程",[14,187377,187378],{},"这份笔记参考黑马程序员 Python 快速入门课程的学习路线整理，内容按“先能写、再写对、最后能做小项目”的顺序展开。笔记不是课程逐字稿，而是把知识点、代码模板、易错点和练习整理成适合复习的版本。(用于回顾复习，初版)",[14,187380,187381],{},"建议学习环境：",[103,187383,187384,187387,187390],{},[43,187385,187386],{},"Python 版本：Python 3.10 及以上。",[43,187388,187389],{},"编辑器：PyCharm、VS Code 或系统终端均可。",[43,187391,187392],{},"学习方式：每章先看概念，再手敲代码，最后完成练习。",[18,187394,131571],{"id":131571},[103,187396,187397,187403,187409,187415,187421,187427,187433,187439,187445,187451,187457,187463],{},[43,187398,187399],{},[2756,187400,187402],{"href":187401},".\u002Fch1-Python","Python环境与第一个程序",[43,187404,187405],{},[2756,187406,187408],{"href":187407},".\u002Fch2","基础语法、变量与字符串",[43,187410,187411],{},[2756,187412,187414],{"href":187413},".\u002Fch3","判断语句",[43,187416,187417],{},[2756,187418,187420],{"href":187419},".\u002Fch4","循环语句",[43,187422,187423],{},[2756,187424,187426],{"href":187425},".\u002Fch5","函数基础",[43,187428,187429],{},[2756,187430,187432],{"href":187431},".\u002Fch6","数据容器",[43,187434,187435],{},[2756,187436,187438],{"href":187437},".\u002Fch7","函数进阶",[43,187440,187441],{},[2756,187442,187444],{"href":187443},".\u002Fch8","文件操作",[43,187446,187447],{},[2756,187448,187450],{"href":187449},".\u002Fch9","异常、模块与包",[43,187452,187453],{},[2756,187454,187456],{"href":187455},".\u002Fch10-JSONpyecharts","JSON与pyecharts折线图",[43,187458,187459],{},[2756,187460,187462],{"href":187461},".\u002Fch11","面向对象基础",[43,187464,187465],{},[2756,187466,187468],{"href":187467},".\u002Fch12","综合案例与复习路线",[18,187470,187471],{"id":187471},"学习路线",[14,187473,187474],{},"第一阶段：能运行程序。",[14,187476,187477],{},"重点是安装 Python、理解解释器、掌握变量、输入输出、字符串格式化、判断和循环。完成这一阶段后，应该能写出猜数字、成绩等级、九九乘法表、简单菜单程序。",[14,187479,187480],{},"第二阶段：能组织数据。",[14,187482,187483],{},"重点是列表、元组、字符串、集合、字典、切片、遍历、通用函数和推导式。完成这一阶段后，应该能处理一批学生信息、订单数据、文本统计数据。",[14,187485,187486],{},"第三阶段：能封装逻辑。",[14,187488,187489],{},"重点是函数定义、参数、返回值、作用域、lambda、函数作为参数传递。完成这一阶段后，应该开始把重复代码拆成函数，而不是把所有逻辑写在一个文件里。",[14,187491,187492],{},"第四阶段：能做小项目。",[14,187494,187495],{},"重点是文件读写、JSON、异常处理、模块包、第三方库、面向对象和可视化。完成这一阶段后，应该能写学生管理系统、账单统计、疫情或销售数据可视化这类入门项目。",[18,187497,187498],{"id":187498},"参考资料",[103,187500,187501,187508,187515,187522],{},[43,187502,187503,187504],{},"黑马程序员 Python 入门教程推荐：",[2756,187505,187506],{"href":187506,"rel":187507},"https:\u002F\u002Fwww.itheima.com\u002Fnews\u002F20230425\u002F174034.html",[4943],[43,187509,187510,187511],{},"Python 官方中文教程：",[2756,187512,187513],{"href":187513,"rel":187514},"https:\u002F\u002Fdocs.python.org\u002Fzh-cn\u002F3\u002Ftutorial\u002Findex.html",[4943],[43,187516,187517,187518],{},"Python 标准库文档：",[2756,187519,187520],{"href":187520,"rel":187521},"https:\u002F\u002Fdocs.python.org\u002Fzh-cn\u002F3\u002Flibrary\u002Findex.html",[4943],[43,187523,187524,187525],{},"pyecharts 文档：",[2756,187526,187527],{"href":187527,"rel":187528},"https:\u002F\u002Fpyecharts.org\u002F",[4943],{"title":32,"searchDepth":476,"depth":476,"links":187530},[187531,187532,187533],{"id":131571,"depth":476,"text":131571},{"id":187471,"depth":476,"text":187471},{"id":187498,"depth":476,"text":187498},"参考黑马程序员 Python 快速入门路线整理的零基础到综合案例笔记",{"category":39791},"\u002Fwiki\u002F2024-10-10-python",{"title":187370,"description":187534},"wiki\u002F2024-10-10-python教程\u002Findex","yzEa8npVBj3xNU8x-4oSrDG7SfzITAVZlXDa1SwCYiA",1781331397376]