-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
416 lines (221 loc) · 289 KB
/
Copy pathatom.xml
File metadata and controls
416 lines (221 loc) · 289 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>FSJZ</title>
<link href="https://fsjz2020.github.io/atom.xml" rel="self"/>
<link href="https://fsjz2020.github.io/"/>
<updated>2023-11-17T09:22:57.382Z</updated>
<id>https://fsjz2020.github.io/</id>
<author>
<name>FSJZ</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>周志华-机器学习</title>
<link href="https://fsjz2020.github.io/2023/10/04/%E5%91%A8%E5%BF%97%E5%8D%8E-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2023/10/04/%E5%91%A8%E5%BF%97%E5%8D%8E-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/</id>
<published>2023-10-04T03:38:21.000Z</published>
<updated>2023-11-17T09:22:57.382Z</updated>
<content type="html"><![CDATA[<span id="more"></span><h1 id="第二章"><a href="#第二章" class="headerlink" title="第二章"></a>第二章</h1><p>m个样本中有a个样本分类错误,则错误率</p><script type="math/tex; mode=display">E=\frac{a}{m}</script><p>精度=1-错误率,</p><pre class="mermaid">graph LR误差-->训练误差or经验误差误差-->泛化误差</pre><p>过拟合(过配) 与 欠拟合(欠配)</p><h2 id="从数据集中产生训练集和测试集的方法"><a href="#从数据集中产生训练集和测试集的方法" class="headerlink" title="从数据集中产生训练集和测试集的方法"></a>从数据集中产生训练集和测试集的方法</h2><ol><li>留出法</li></ol><blockquote><p>将数据集拆成互斥的两部分,一部分作为训练集,一部分作为测试集,采用若干次随机划分,重复进行实验评估后取平均值作为留出法的评估结果。</p><p>常见做法是将2/3或4/5的样本作为训练集,剩余的样本作为测试集。</p></blockquote><ol><li>交叉验证法</li></ol><blockquote><p>将数据集D划分成K个大小相似的互斥子集,每次用k-1个子集作为训练集,1个子集作为测试集,从而可进行k次训练和测试。k最常用的取值是10。</p><p>k折交叉验证通常要采用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。</p></blockquote><ol><li></li></ol>]]></content>
<summary type="html"><span id="more"></span>
<h1 id="第二章"><a href="#第二章" class="headerlink" title="第二章"></a>第二章</h1><p>m个样本中有a个样本分类错误,则错误率</p>
<script type="math</summary>
<category term="机器学习" scheme="https://fsjz2020.github.io/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
</entry>
<entry>
<title>processing学习</title>
<link href="https://fsjz2020.github.io/2023/08/16/processing%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2023/08/16/processing%E5%AD%A6%E4%B9%A0/</id>
<published>2023-08-16T15:28:40.000Z</published>
<updated>2023-09-27T04:36:43.388Z</updated>
<content type="html"><![CDATA[<p>Processing学习笔记</p><span id="more"></span><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">line(x1,y1,x2,y2)<span class="comment">#直线</span></span><br><span class="line">size(width,height)<span class="comment">#窗口大小</span></span><br><span class="line">background(r,g,b)<span class="comment">#背景颜色</span></span><br><span class="line">stroke(<span class="number">255</span>)<span class="comment">#描边颜色</span></span><br><span class="line">stroke(<span class="number">255</span>, <span class="number">128</span>, <span class="number">0</span>)<span class="comment"># 三原色版</span></span><br><span class="line">stroke(<span class="string">"#FF8000"</span>) <span class="comment"># 十六进制版</span></span><br><span class="line">stroke(<span class="number">255</span>, <span class="number">128</span>, <span class="number">0</span>, <span class="number">128</span>)<span class="comment"># 增加透明度,透明度取值范围0~255</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>填充和描边颜色会影响绘制到屏幕上的所有几何图形,直到下一个填充和描边函数为止。</p><h1 id="交互式程序"><a href="#交互式程序" class="headerlink" title="交互式程序"></a>交互式程序</h1><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">setup</span>():</span></span><br><span class="line"> size(<span class="number">400</span>, <span class="number">400</span>)</span><br><span class="line"> stroke(<span class="number">255</span>)</span><br><span class="line"> background(<span class="number">192</span>, <span class="number">64</span>, <span class="number">0</span>)</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">draw</span>():</span></span><br><span class="line"> line(<span class="number">150</span>, <span class="number">25</span>, mouseX, mouseY)</span><br><span class="line"> saveFrame(<span class="string">"output-####.png"</span>)</span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">mousePressed</span>():</span></span><br><span class="line"> background(<span class="number">192</span>, <span class="number">64</span>, <span class="number">0</span>)</span><br></pre></td></tr></table></figure><p>setup()块执行一次,draw()重复运行,mousePressed()当鼠标按下时执行。</p><p> saveFrame( )将保存程序输出的 TIFF 格式图像的编号序列</p><h1 id="渲染器"><a href="#渲染器" class="headerlink" title="渲染器"></a>渲染器</h1><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">size(<span class="number">400</span>, <span class="number">400</span>, P2D)</span><br><span class="line"><span class="comment"># P2D渲染器使用OpenGL来更快地渲染二维图形,同时使用Processing更简单的图形API和Processing开发环境的简单应用程序导出。</span></span><br><span class="line">size(<span class="number">400</span>, <span class="number">400</span>, P3D)</span><br><span class="line"><span class="comment"># P3D 渲染器还使用 OpenGL 来实现更快的渲染。它可以绘制空间中的三维物体和二维物体以及灯光、纹理和材质。</span></span><br><span class="line">size(<span class="number">400</span>, <span class="number">400</span>, PDF, <span class="string">"output.pdf"</span>)</span><br><span class="line"><span class="comment"># PDF渲染器将所有几何图形绘制到文件而不是屏幕上。要使用 PDF,除了更改 size() 函数之外,还必须选择“导入库”,然后从“草图”菜单中选择“PDF”。这是默认渲染器的近亲,但直接写入 PDF 文件。</span></span><br></pre></td></tr></table></figure><h1 id="基本绘图"><a href="#基本绘图" class="headerlink" title="基本绘图"></a>基本绘图</h1><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">line</span><br><span class="line">point</span><br><span class="line">rect(x,y,width,height)</span><br><span class="line">rectMode(CENTER)<span class="comment">#可选CENTER、CORNERS</span></span><br><span class="line">ellipseMode(CORNERS)</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">stroke描边</span><br><span class="line">fill填充</span><br><span class="line">noStroke取消描边</span><br><span class="line">noFill取消填充</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="自定义颜色范围"><a href="#自定义颜色范围" class="headerlink" title="自定义颜色范围"></a>自定义颜色范围</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">colorMode(RGB,<span class="number">100</span>)</span><br><span class="line">colorMode(RGB,<span class="number">100</span>,<span class="number">500</span>,<span class="number">10</span>,<span class="number">255</span>)</span><br><span class="line"><span class="comment">#颜色模式也可以设为HSB</span></span><br></pre></td></tr></table></figure><h2 id="交互式控制"><a href="#交互式控制" class="headerlink" title="交互式控制"></a>交互式控制</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">draw</span>():</span></span><br><span class="line">frameRate(<span class="number">12</span>)</span><br><span class="line"> println(<span class="built_in">str</span>(mouseX)+<span class="string">":"</span>+<span class="built_in">str</span>(mouseY))</span><br></pre></td></tr></table></figure><p>屏幕宽度和高度分别为<code>width</code>和<code>height</code></p><p><code>pmouseX</code>和<code>pmouseY</code>存储前一帧的鼠标值</p><p><code>mousePressed</code>检测鼠标按下状态</p><p><code>mouseButton</code>检测鼠标按下按键</p><p><code>strokeWeight</code>设置描边的粗细</p><p><code>key</code>保存最近按下的按键,<code>text</code>输出文字消息,<code>textSize</code>设置文字大小。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> (key == CODED):</span><br><span class="line"> <span class="keyword">if</span> (keyCode == ALT):</span><br><span class="line"> y = <span class="number">20</span></span><br><span class="line"> <span class="keyword">elif</span> (keyCode == DOWN):</span><br><span class="line"> y = <span class="number">50</span></span><br></pre></td></tr></table></figure><h2 id="鼠标事件"><a href="#鼠标事件" class="headerlink" title="鼠标事件"></a>鼠标事件</h2><p>鼠标事件函数有 mousePressed()、mouseReleased()、mouseMoved() 和 mouseDragged()</p><h2 id="键盘事件"><a href="#键盘事件" class="headerlink" title="键盘事件"></a>键盘事件</h2><p>keyPressed()和keyReleased()</p><h2 id="事件流程"><a href="#事件流程" class="headerlink" title="事件流程"></a>事件流程</h2><p>draw()函数每秒显示60帧,noLoop()停止draw()循环,Loop()恢复操作,</p><p>redraw()运行draw()中的代码一次,停止执行。</p><h2 id="光标图标"><a href="#光标图标" class="headerlink" title="光标图标"></a>光标图标</h2><p>使用noCursor()隐藏鼠标光标,使用cursor()设置不同的图标</p><p>运行noCursor()隐藏鼠标光标,使用cursor()显示图标</p><p>cursor()参数选项:ARROW, CROSS, HAND, MOVE, TEXT, and WAIT</p><h2 id="图像操作"><a href="#图像操作" class="headerlink" title="图像操作"></a>图像操作</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">img=loadImage(<span class="string">"test.jpg"</span>)</span><br></pre></td></tr></table></figure><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">createImage(<span class="number">200</span>,<span class="number">200</span>,RGB)</span><br></pre></td></tr></table></figure><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">image(img,<span class="number">0</span>,<span class="number">0</span>,<span class="number">640</span>,<span class="number">320</span>)</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">tint(light,alpha)</span><br><span class="line">tint(red,green,blue)</span><br><span class="line">tint(red,green,blue,alpha)</span><br></pre></td></tr></table></figure><h2 id="像素操作"><a href="#像素操作" class="headerlink" title="像素操作"></a>像素操作</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">loadPixels()</span><br><span class="line">pixels=...</span><br><span class="line">updatePixels()</span><br></pre></td></tr></table></figure><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">constrain(r,<span class="number">0</span>,<span class="number">255</span>)<span class="comment">#将范围限制在0-255</span></span><br><span class="line">dist(x,y,mouseX,mouseY)</span><br></pre></td></tr></table></figure><h2 id="字符串"><a href="#字符串" class="headerlink" title="字符串"></a>字符串</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">createFont("Arial",20,True)</span><br><span class="line">textFont(f)</span><br><span class="line">textAlign(CENTER)</span><br><span class="line">text(message,0,0)</span><br></pre></td></tr></table></figure><h2 id="2D变换"><a href="#2D变换" class="headerlink" title="2D变换"></a>2D变换</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">pushMatrix() <span class="comment">#保存当前坐标参数</span></span><br><span class="line">popMatrix() <span class="comment">#恢复当前坐标参数</span></span><br><span class="line">radians() <span class="comment"># 将度数转为弧度数</span></span><br><span class="line">degrees() <span class="comment">#将弧度数转为度数</span></span><br><span class="line">scale(<span class="number">3.0</span>,<span class="number">0.5</span>) <span class="comment">#缩放x轴3倍,y轴0.5倍</span></span><br></pre></td></tr></table></figure><p>每次执行draw()函数时,坐标系会恢复到原来的状态,原点位于窗口左上方,不旋转,不缩放。</p><p>对于三维,可使用translate,给三个参数,scale类似,三维的旋转可使用rotateX、rotateY和rotateZ</p><h2 id="P3D"><a href="#P3D" class="headerlink" title="P3D"></a>P3D</h2><p><img src="https://py.processing.org/tutorials/p3d/imgs/coordinatesystem.png" alt="img"></p><p>python版本对P3D支持的不好,使用Java版会好一些</p><p><strong>灯光</strong></p><p>默认灯光直接使用light,环境光使用ambientLight,定向光使用directiveLight,聚光SpotLight,点光pointLight</p><h2 id="在命令行使用processing"><a href="#在命令行使用processing" class="headerlink" title="在命令行使用processing"></a>在命令行使用processing</h2><p>安装Java8(实测更高版本的也能用),配置环境变量</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">java -jar processing-py.jar your-sketch.py</span><br></pre></td></tr></table></figure><p><strong>其他参数</strong></p><p>-Xms 初始堆大小 -Xmx最大堆大小</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">java -Xms256m -Xmx1024m -jar processing-py.jar </span><br></pre></td></tr></table></figure><p>当导入文件时,先从data目录下查找,如果找不到,再从同目录下查找。</p><p><strong>导入库</strong></p><p>将库文件放到草图文件相同目录的“libraries”文件夹下,使用<code>add_library("module")</code>。</p><h2 id="杂记"><a href="#杂记" class="headerlink" title="杂记"></a>杂记</h2><p>processing.py基于Jython实现,Jython实现的是python2.7,有些功能和python3不兼容。</p>]]></content>
<summary type="html"><p>Processing学习笔记</p></summary>
<category term="python" scheme="https://fsjz2020.github.io/tags/python/"/>
<category term="processing" scheme="https://fsjz2020.github.io/tags/processing/"/>
</entry>
<entry>
<title>C++笔记</title>
<link href="https://fsjz2020.github.io/2023/07/13/C++%E7%AC%94%E8%AE%B0/"/>
<id>https://fsjz2020.github.io/2023/07/13/C++%E7%AC%94%E8%AE%B0/</id>
<published>2023-07-12T16:45:08.000Z</published>
<updated>2023-08-05T15:22:31.039Z</updated>
<content type="html"><![CDATA[<p>C++ Primer Plus笔记,学校编的教材讲的一言难尽</p><span id="more"></span><h1 id="第二章"><a href="#第二章" class="headerlink" title="第二章"></a>第二章</h1><p>C语言中只写<code>main()</code>默认<code>int main()</code>。</p><p>C++ main()与main(void)等效,而C语言则表示对是否接受参数保持沉默。</p><p>主函数的<code>return 0;</code>可以省略</p><h2 id="注释"><a href="#注释" class="headerlink" title="注释"></a>注释</h2><p><code>//</code>是C++风格,<code>/* */</code>是C风格。</p><h2 id="命名空间"><a href="#命名空间" class="headerlink" title="命名空间"></a>命名空间</h2><p><code>using namespace std;</code></p><p><code>using std::cout;</code></p><h2 id="格式化"><a href="#格式化" class="headerlink" title="格式化"></a>格式化</h2><p>一行代码中不可分割的元素叫做标记(token)。通常必须用空白(空格、制表符和回车)将两个标记分开。 </p><h1 id="第三章"><a href="#第三章" class="headerlink" title="第三章"></a>第三章</h1><p>以两个下划线或下划线和大写字母打头的名称保留给实现。以一个下划线开头的名称保留给实现,用作全局标识符。</p><blockquote><p>命名约定俗成的一些规矩:n表示整型,str或sz表示字符串,b表示布尔值,p表示指针,c表示单个字符。</p></blockquote><h2 id="整数"><a href="#整数" class="headerlink" title="整数"></a>整数</h2><p>C++提供了一种灵活的标准,确保了最小长度。</p><h2 id="长度"><a href="#长度" class="headerlink" title="长度"></a>长度</h2><p>使用<code>sizeof</code>运算符查看类型名或变量名长度</p><blockquote><p><code>sizeof(int)</code>或<code>sizeof test</code>当查看变量名时,括号是可选的。</p></blockquote><h2 id="声明"><a href="#声明" class="headerlink" title="声明"></a>声明</h2><p>C++在C之上增加了新的声明语法</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">a</span><span class="params">(<span class="number">5</span>)</span></span>;</span><br></pre></td></tr></table></figure><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">int</span> <span class="class"><span class="keyword">enum</span>{</span><span class="number">5</span>};</span><br><span class="line"><span class="keyword">int</span> syss={};</span><br></pre></td></tr></table></figure><p>unsigned是unsigned int的缩写;</p><h2 id="进制"><a href="#进制" class="headerlink" title="进制"></a>进制</h2><p>第一位为1~9,则为十进制;第一位为0,第二位为1~7,则为8进制;前两位为0x或0X,则为16进制。</p><p>编译器通过数字后缀来分配变量长度</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cout << <span class="keyword">sizeof</span> <span class="number">114514uLL</span> << endl;</span><br></pre></td></tr></table></figure><p>常见的后缀有u(unsigned int),l(long),ul(顺序无所谓,unsigned long),ull(unsigned long long)。</p><p>C++中,对不带后缀的十进制整数,将使用能够存储该整数的最小类型来表示,int,long,long long;对不带后缀的八进制或十六进制整数,将采用int,unsigned int,unsigned long,unsigned long long。</p><h2 id="字符"><a href="#字符" class="headerlink" title="字符"></a>字符</h2><p>可以使用八进制和十六进制编码表示转义序列,如<code>\032</code>,<code>\x1a</code>。</p><p><code>char</code>在默认情况下既不是没有符号,也不是有符号。是否有符号由C++实现决定。</p><p><code>wchar_t</code>表示宽字符类型,宽字符可以在字符或字符串前加个L标识,如<code>L'p'</code>,输出显示字符串时使用wcout</p><h2 id="常量"><a href="#常量" class="headerlink" title="常量"></a>常量</h2><p>C++中使用const定义常量,不推荐使用#define</p><h2 id="浮点数"><a href="#浮点数" class="headerlink" title="浮点数"></a>浮点数</h2><p>浮点数有E表示法,如<code>3.14E4</code>等。</p><h2 id="类型转换"><a href="#类型转换" class="headerlink" title="类型转换"></a>类型转换</h2><p>在计算表达式时,C++将bool、char、unsigned char和short值转换为int。</p><p>强制类型转换有两种方式,</p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">(<span class="keyword">long</span>) <span class="function">thorn</span></span><br><span class="line"><span class="function"><span class="title">long</span> <span class="params">(thorn)</span></span></span><br></pre></td></tr></table></figure><p>C++还引入了4个强制类型转换的运算符</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">static_cast</span><<span class="keyword">long</span>>(thorn)</span><br></pre></td></tr></table></figure><p>auto声明自动判断变量类型。</p><h1 id="第四章"><a href="#第四章" class="headerlink" title="第四章"></a>第四章</h1><p>C++11初始化数组时可省略<code>=</code></p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">double</span> a[<span class="number">2</span>] {<span class="number">112</span>,<span class="number">1123</span>};</span><br></pre></td></tr></table></figure><h2 id="字符串拼接"><a href="#字符串拼接" class="headerlink" title="字符串拼接"></a>字符串拼接</h2><p>任何两个由空白分隔的字符串常量将自动拼接成一个,第一个字符串末尾的<code>\0</code>会被取代。</p><h2 id="字符串输入"><a href="#字符串输入" class="headerlink" title="字符串输入"></a>字符串输入</h2><p><code>cin</code>使用空白作为分隔符,处理字符串输入。</p><p>读取中间含有空格的字符串可使用<code>cin.getline()</code>。</p><blockquote><p>一种变体</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cin.<span class="built_in">get</span>(a,<span class="number">20</span>).<span class="built_in">get</span>()</span><br></pre></td></tr></table></figure></blockquote><h2 id="string类型"><a href="#string类型" class="headerlink" title="string类型"></a>string类型</h2><p>C++98添加了string类型</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">string str1;</span><br><span class="line">cin >> str1;</span><br><span class="line">cout << str1 << endl;</span><br></pre></td></tr></table></figure><p>string可直接赋值,并且可通过+操作实现字符串拼接</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">string str1, str2, str3;</span><br><span class="line">str1 = <span class="string">"Hello"</span>;</span><br><span class="line">str2 = <span class="string">"World"</span>;</span><br><span class="line">cout << str1 + <span class="string">" "</span> + str2 << endl;</span><br></pre></td></tr></table></figure><p>C++使用前缀u8表示Unicode字符串类型,还新增了原始字符串类型,原始字符串中的回车输出到屏幕上也是回车。</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cout<<<span class="string">R"(1"\n")"</span><<endl;</span><br></pre></td></tr></table></figure><p>如果想在原始字符串中包含”(、)”,可以通过在”和(之间添加其他字符修改标识符。</p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cout << <span class="string">R"1("()")1"</span> << endl;</span><br></pre></td></tr></table></figure><h2 id="结构类型"><a href="#结构类型" class="headerlink" title="结构类型"></a>结构类型</h2><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">abc</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">char</span> a1;</span><br><span class="line"> <span class="keyword">int</span> a2;</span><br><span class="line"> string a3;</span><br><span class="line">};</span><br><span class="line">abc x1 = {</span><br><span class="line"> <span class="string">'a'</span>,</span><br><span class="line"> <span class="number">114514</span>,</span><br><span class="line"> <span class="string">"Hello"</span>};</span><br><span class="line">abc x2 {<span class="string">'b'</span>,<span class="number">1919810</span>,<span class="string">"World"</span>};</span><br><span class="line">abc x3 {};</span><br><span class="line">cout << x1.a1 << x1.a2 << x1.a3 << endl;</span><br></pre></td></tr></table></figure><p>C++中定义结构可以省略struct,初始化时,等号可省略,使用空的大括号时,表示将所有元素初始化为0。</p><p>两个相同的结构之间可以互相赋值。</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">abc</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">char</span> a1;</span><br><span class="line"> <span class="keyword">int</span> a2;</span><br><span class="line"> string a3;</span><br><span class="line">} a1{<span class="string">'c'</span>, <span class="number">1</span>, <span class="string">"2"</span>};</span><br></pre></td></tr></table></figure><p>定义结构时,可以同时声明变量并进行赋值。还可以省略结构名称。</p><h3 id="结构数组"><a href="#结构数组" class="headerlink" title="结构数组"></a>结构数组</h3><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">abc x4[<span class="number">2</span>] = {{<span class="string">'d'</span>, <span class="number">2</span>, <span class="string">"CC"</span>}, {<span class="string">'e'</span>, <span class="number">4</span>, <span class="string">"DD"</span>}};</span><br></pre></td></tr></table></figure><h3 id="结构中的位字段"><a href="#结构中的位字段" class="headerlink" title="结构中的位字段"></a>结构中的位字段</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">def</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">unsigned</span> <span class="keyword">int</span> : <span class="number">4</span>;</span><br><span class="line"> <span class="keyword">unsigned</span> SN : <span class="number">5</span>;</span><br><span class="line"> <span class="keyword">bool</span> goodIn : <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">bool</span> goodTorgle : <span class="number">1</span>;</span><br><span class="line">};</span><br></pre></td></tr></table></figure><h2 id="共用体-节省空间"><a href="#共用体-节省空间" class="headerlink" title="共用体(节省空间)"></a>共用体(节省空间)</h2><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">union</span> <span class="title">a</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">int</span> a1;</span><br><span class="line"> <span class="keyword">long</span> a2;</span><br><span class="line"> <span class="keyword">long</span> <span class="keyword">long</span> a3;</span><br><span class="line">};</span><br><span class="line">a c1;</span><br><span class="line">c1.a3 = <span class="number">1e14</span>;</span><br><span class="line">cout << c1.a3 << endl;</span><br></pre></td></tr></table></figure><p>共用体的长度为其最大成员长度。</p><h3 id="匿名共用体"><a href="#匿名共用体" class="headerlink" title="匿名共用体"></a>匿名共用体</h3><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">unitest</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">char</span> a;</span><br><span class="line"> <span class="class"><span class="keyword">union</span> </span></span><br><span class="line"><span class="class"> {</span></span><br><span class="line"> <span class="keyword">int</span> a1;</span><br><span class="line"> <span class="keyword">char</span> a2[<span class="number">4</span>]; </span><br><span class="line"> };</span><br><span class="line"> <span class="keyword">double</span> c1;</span><br><span class="line">};</span><br><span class="line">unitest test;</span><br><span class="line">test.a1 = <span class="number">3</span>;</span><br></pre></td></tr></table></figure><p>a1和a2位于相同的地址。</p><h2 id="枚举"><a href="#枚举" class="headerlink" title="枚举"></a>枚举</h2><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">enum</span> <span class="title">spec</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> red,</span><br><span class="line"> orange,</span><br><span class="line"> yellow,</span><br><span class="line"> green</span><br><span class="line">};</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="keyword">int</span> a;</span><br><span class="line"> a = orange;</span><br><span class="line"> cout << a;</span><br><span class="line"> spec testvar;</span><br><span class="line"> testvar = <span class="built_in">spec</span>(<span class="number">3</span>);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h3 id="设置枚举类型的值"><a href="#设置枚举类型的值" class="headerlink" title="设置枚举类型的值"></a>设置枚举类型的值</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">enum</span> <span class="title">spec</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> red,</span><br><span class="line"> orange,</span><br><span class="line"> yellow=<span class="number">100</span>,</span><br><span class="line"> green</span><br><span class="line">};</span><br></pre></td></tr></table></figure><p>这样red为0,orange为1,green为101;</p><p>可以创建多个值相同的枚举变量。</p><h3 id="取值范围"><a href="#取值范围" class="headerlink" title="取值范围"></a>取值范围</h3><p>枚举变量可取的值不一定是枚举定义中的值,可根据上界和下界确定枚举变量的取值范围。上界确定方法为,120->128,最大为127。如果枚举变量中最小值为正数,则下界为0,否则,下界确定的方法和上界相同。</p><h2 id="指针"><a href="#指针" class="headerlink" title="指针"></a>指针</h2><p>分配空间</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">int</span> *p=<span class="keyword">new</span> <span class="keyword">int</span>;</span><br></pre></td></tr></table></figure><p>在C++中,值为0的指针成为空指针。</p><p>使用delete释放内存只会释放内存空间,不会删除指针本身,可以指向别的内存地址。</p><p>不要重复释放内存(除非指针是空指针,这种情况可以)。</p><p>静态联编(编译时分配内存) VS 动态联编(运行时分配内存)</p><p>分配数组</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">int</span> *p=<span class="keyword">new</span> <span class="keyword">int</span> [<span class="number">10</span>];</span><br><span class="line">...</span><br><span class="line"><span class="keyword">delete</span> [] p;</span><br></pre></td></tr></table></figure><p>用引号括起来的字符串传递的是字符串首字符的地址。</p><h3 id="动态结构"><a href="#动态结构" class="headerlink" title="动态结构"></a>动态结构</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">test</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">char</span> cht;</span><br><span class="line"> <span class="keyword">int</span> intt;</span><br><span class="line">};</span><br><span class="line">test *p = <span class="keyword">new</span> test;</span><br><span class="line">p->cht;</span><br><span class="line">(*p).intt;</span><br></pre></td></tr></table></figure><h2 id="内存管理"><a href="#内存管理" class="headerlink" title="内存管理"></a>内存管理</h2><p>C++中有三种管理数据内存的方法,自动存储、静态存储和动态存储。</p><h3 id="自动存储"><a href="#自动存储" class="headerlink" title="自动存储"></a>自动存储</h3><p>在函数内部定义的常规变量使用自动存储空间,被称为自动变量,通常存储在栈中。</p><h3 id="静态存储"><a href="#静态存储" class="headerlink" title="静态存储"></a>静态存储</h3><p>静态存储是整个程序执行期间都存在的存储方式,有两种方式,一是定义在函数外部,另一种方式是使用关键词static。</p><h3 id="动态存储"><a href="#动态存储" class="headerlink" title="动态存储"></a>动态存储</h3><p>使用new和delete分配和释放内存空间。</p><h2 id="vector-和-array"><a href="#vector-和-array" class="headerlink" title="vector 和 array"></a>vector 和 array</h2><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">vector<<span class="keyword">int</span>> <span class="title">a</span><span class="params">(<span class="number">3</span>)</span></span>;</span><br></pre></td></tr></table></figure><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">array<<span class="keyword">int</span>, 5> a1 = {<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>};</span><br></pre></td></tr></table></figure><p>vector存储在堆中,array存储在栈中,两者均存在索引越界的问题,使用at方法可在索引前进行检查,但是会增加程序执行时间。</p><h1 id="第五章"><a href="#第五章" class="headerlink" title="第五章"></a>第五章</h1><p>C++将赋值表达式的值定义为左侧成员的值。</p><h2 id="递增-递减运算符"><a href="#递增-递减运算符" class="headerlink" title="递增/递减运算符"></a>递增/递减运算符</h2><p>对于类而言,前缀版本效率比后缀版本高。</p><p><em>++p执行先将p指针++再取值,++\</em>p表示先取值再++,*p++表示先取值,再对地址++。</p><h2 id="逗号表达式"><a href="#逗号表达式" class="headerlink" title="逗号表达式"></a>逗号表达式</h2><p>先计算第一个表达式,再计算第二个表达式。逗号表达式的值是第二部分的值。所有运算符中,逗号表达式的优先级是最低的。</p><h2 id="关系运算符"><a href="#关系运算符" class="headerlink" title="关系运算符"></a>关系运算符</h2><p>关系运算符的优先级比算术运算符低。</p><h2 id="类型别名"><a href="#类型别名" class="headerlink" title="类型别名"></a>类型别名</h2><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">typedef</span> typeName aliasName;</span><br></pre></td></tr></table></figure><p>typedef不会创建新类型,只会为已有的类型创建一个新名称。</p><h2 id="基于范围的for循环"><a href="#基于范围的for循环" class="headerlink" title="基于范围的for循环"></a>基于范围的for循环</h2><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">double</span> price[<span class="number">5</span>] = {<span class="number">1.0</span>, <span class="number">2.0</span>, <span class="number">3.0</span>, <span class="number">4.0</span>};</span><br><span class="line"><span class="keyword">for</span> (<span class="keyword">double</span> x : price)</span><br><span class="line">{</span><br><span class="line"> cout << x << endl;</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>如果检测到EOF,则将eofbit和failbit设置为1,因此可将cin.eof和cin.fail放在读取后。</p><h1 id="第七章"><a href="#第七章" class="headerlink" title="第七章"></a>第七章</h1><p>当用于函数头和函数原型时,<code>int * arr</code>和<code>int arr[]</code>是相同的。</p><p>传递数组时,函数中使用的是原数组。</p><p>可以使用<code>void test(const int a [],int n)</code>这样的方式禁止在函数内修改原数组的值。</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">int</span> age=<span class="number">50</span>;</span><br><span class="line"><span class="keyword">const</span> <span class="keyword">int</span> *p=&age;</span><br></pre></td></tr></table></figure><p>上边的这段代码无法通过p指针修改age变量的值,但是可以通过age变量进行修改。另外,</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="keyword">int</span> age=<span class="number">50</span>;</span><br><span class="line"><span class="keyword">int</span> * p=&age;</span><br></pre></td></tr></table></figure><p>这种情况是<strong>不允许</strong>的。</p><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">int</span> age=<span class="number">50</span>;</span><br><span class="line"><span class="keyword">int</span> * <span class="keyword">const</span> p=&age;</span><br></pre></td></tr></table></figure><p>这样声明的p指针只能指向age,但是age的值能通过p指针进行xiu’gai</p>]]></content>
<summary type="html"><p>C++ Primer Plus笔记,学校编的教材讲的一言难尽</p></summary>
<category term="C++" scheme="https://fsjz2020.github.io/tags/C/"/>
</entry>
<entry>
<title>深度学习笔记</title>
<link href="https://fsjz2020.github.io/2023/05/10/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"/>
<id>https://fsjz2020.github.io/2023/05/10/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</id>
<published>2023-05-10T01:48:14.000Z</published>
<updated>2023-08-16T15:34:13.850Z</updated>
<content type="html"><![CDATA[<h2 id="数据操作"><a href="#数据操作" class="headerlink" title=" 数据操作"></a> 数据操作</h2><h3 id="原地操作"><a href="#原地操作" class="headerlink" title="原地操作"></a>原地操作</h3><p>使用x[:]=x+y或x+=y来进行原地操作。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">x=torch.randn((<span class="number">3</span>,<span class="number">4</span>))</span><br><span class="line">y=torch.arange(<span class="number">12</span>).reshape((<span class="number">3</span>,<span class="number">4</span>))</span><br><span class="line">before=<span class="built_in">id</span>(x)</span><br><span class="line">x[:]=x+y</span><br><span class="line"><span class="built_in">id</span>(x)==before</span><br><span class="line">-------------------------------</span><br><span class="line"><span class="literal">True</span></span><br></pre></td></tr></table></figure><span id="more"></span><h3 id="类型转换"><a href="#类型转换" class="headerlink" title="类型转换"></a>类型转换</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">2</span>]: <span class="keyword">import</span> torch</span><br><span class="line"></span><br><span class="line">In [<span class="number">3</span>]: a = torch.tensor([<span class="number">3.14</span>])</span><br><span class="line"></span><br><span class="line">In [<span class="number">4</span>]: a.item(), <span class="built_in">float</span>(a), <span class="built_in">int</span>(a)</span><br><span class="line">Out[<span class="number">4</span>]: (<span class="number">3.140000104904175</span>, <span class="number">3.140000104904175</span>, <span class="number">3</span>)</span><br></pre></td></tr></table></figure><p>使用$\mathbf{b}$表示向量,使用$\mathbf{B}$表示矩阵</p><h3 id="矩阵操作"><a href="#矩阵操作" class="headerlink" title="矩阵操作"></a>矩阵操作</h3><p><code>x.T</code></p><p>张量是描述具有任意数量轴的n维数组的通用方法。</p><h4 id="均值"><a href="#均值" class="headerlink" title="均值"></a>均值</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">x.mean()</span><br><span class="line">x.<span class="built_in">sum</span>()/x.numel()</span><br></pre></td></tr></table></figure><h4 id="非降维求和"><a href="#非降维求和" class="headerlink" title="非降维求和"></a>非降维求和</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">x_sum=x.<span class="built_in">sum</span>(axis=<span class="number">1</span>,keepdims=<span class="literal">True</span>)</span><br></pre></td></tr></table></figure><h4 id="累计总和"><a href="#累计总和" class="headerlink" title="累计总和"></a>累计总和</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">s.cumsum(axis=<span class="number">0</span>)</span><br></pre></td></tr></table></figure><h4 id="矩阵向量积"><a href="#矩阵向量积" class="headerlink" title="矩阵向量积"></a>矩阵向量积</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">torch.mv(A,x)</span><br></pre></td></tr></table></figure><h4 id="矩阵乘法"><a href="#矩阵乘法" class="headerlink" title="矩阵乘法"></a>矩阵乘法</h4><p>类似于很多个矩阵向量积</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">torch.mm(A,b)</span><br></pre></td></tr></table></figure><h4 id="向量范数"><a href="#向量范数" class="headerlink" title="向量范数"></a>向量范数</h4><script type="math/tex; mode=display">||x||_2=\sqrt{\sum_{i=1}^nx_i^2}</script><script type="math/tex; mode=display">||x||_1=\sum_{i=1}^n|x_i|</script><p>推而广之</p><script type="math/tex; mode=display">||x||_p=(\sum_{i=1}^n|x_i|^p)^{\frac{1}{p}}</script><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">torch.norm(u)</span><br></pre></td></tr></table></figure><h2 id="线性回归"><a href="#线性回归" class="headerlink" title="线性回归"></a>线性回归</h2><p>给定特征估计目标的过程称为预测或推断,但更经常使用预测,在统计学中推断更多的表示基于数据集估计参数。</p><p>输入值都是已经给定的,并且只有⼀个计算神经元。由于模型重点在发生计算的地方,所以通常在计算层数时不考虑输入层。</p><p>对于线性回归,每个输入都与每个输出相连,我们将这种变换称为全连接层或稠密层。</p>]]></content>
<summary type="html"><h2 id="数据操作"><a href="#数据操作" class="headerlink" title=" 数据操作"></a> 数据操作</h2><h3 id="原地操作"><a href="#原地操作" class="headerlink" title="原地操作"></a>原地操作</h3><p>使用x[:]=x+y或x+=y来进行原地操作。</p>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">x=torch.randn((<span class="number">3</span>,<span class="number">4</span>))</span><br><span class="line">y=torch.arange(<span class="number">12</span>).reshape((<span class="number">3</span>,<span class="number">4</span>))</span><br><span class="line">before=<span class="built_in">id</span>(x)</span><br><span class="line">x[:]=x+y</span><br><span class="line"><span class="built_in">id</span>(x)==before</span><br><span class="line">-------------------------------</span><br><span class="line"><span class="literal">True</span></span><br></pre></td></tr></table></figure></summary>
<category term="python" scheme="https://fsjz2020.github.io/tags/python/"/>
<category term="深度学习" scheme="https://fsjz2020.github.io/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
</entry>
<entry>
<title>JS学习笔记</title>
<link href="https://fsjz2020.github.io/2023/02/17/JS%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"/>
<id>https://fsjz2020.github.io/2023/02/17/JS%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/</id>
<published>2023-02-17T11:23:41.000Z</published>
<updated>2023-02-17T11:31:09.852Z</updated>
<content type="html"><![CDATA[<p>JavaScript学习笔记</p><span id="more"></span><h1 id="代码结构"><a href="#代码结构" class="headerlink" title="代码结构"></a>代码结构</h1><h2 id="语句"><a href="#语句" class="headerlink" title="语句"></a>语句</h2><p>语句之间一般以分号分割</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">alert(<span class="string">"Hello"</span>);alert(<span class="string">"World"</span>);</span><br></pre></td></tr></table></figure><p>当有换行时可以省略分号</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">alert(<span class="string">"Hello"</span>)</span><br><span class="line">alert(<span class="string">"World"</span>)</span><br></pre></td></tr></table></figure><h2 id="注释"><a href="#注释" class="headerlink" title="注释"></a>注释</h2><p>JavaScript注释标记与C语言相同</p>]]></content>
<summary type="html"><p>JavaScript学习笔记</p></summary>
<category term="JavaScript" scheme="https://fsjz2020.github.io/tags/JavaScript/"/>
</entry>
<entry>
<title>微信小程序开发</title>
<link href="https://fsjz2020.github.io/2023/01/04/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91/"/>
<id>https://fsjz2020.github.io/2023/01/04/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91/</id>
<published>2023-01-04T11:30:38.000Z</published>
<updated>2023-05-10T01:46:15.024Z</updated>
<content type="html"><![CDATA[<p>App和page的关系</p><span id="more"></span><pre class="mermaid">graph TDApp-->Page1App-->Page2App-->Page3Page1-->Compnent1Page1-->Compnent2Page1-->Compnent3Page2-->Compnent4Page3-->Compnent5</pre><h2 id="App组成"><a href="#App组成" class="headerlink" title="App组成"></a>App组成</h2><blockquote><p>app.js(非必须)</p><p>app.wxss(非必须)</p><p>app.json(必须包含pages注册)</p></blockquote><p><img src="/2023/01/04/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91/image-20230104210716886.png" alt="image-20230104210716886"></p><p>放到第一个的,是首页,即index</p><h2 id="Page组成"><a href="#Page组成" class="headerlink" title="Page组成"></a>Page组成</h2><blockquote><p>page.js: 负责页面逻辑 必须有</p><p>page.wxml: 负责页面结构,进行数据渲染,必须有</p><p>page.wxss: 页面样式</p><p>page.json: Component注册</p></blockquote><h2 id="小程序配置"><a href="#小程序配置" class="headerlink" title="小程序配置"></a>小程序配置</h2><blockquote><p>项目开发配置(project.config.json)</p><ul><li>可通过详情以可视化的方式配置</li></ul><p>小程序收录配置(sitemap.json)</p><ul><li><a href="https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html">sitemap配置</a></li><li>前期不用关心,后期按需配置即可</li></ul><p>全局配置(app.json)</p><ul><li><a href="https://developers.weixin.qq.com/miniprogram/dev/framework/config.html#%E9%A1%B5%E9%9D%A2%E9%85%8D%E7%BD%AE">全局配置</a></li><li>重点掌握page,window,tabbar</li></ul><p>页面配置</p><ul><li>页面同名.json</li></ul></blockquote><h2 id="WXML"><a href="#WXML" class="headerlink" title="WXML"></a>WXML</h2><p>数据绑定</p><p>支持简单运算、逻辑判断以及三目运算符</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">block</span> <span class="attr">wx:if</span>=<span class="string">"{{score>=60}}"</span>></span></span><br><span class="line"><span class="tag"><<span class="name">view</span>></span>及格<span class="tag"></<span class="name">view</span>></span></span><br><span class="line"><span class="tag"><<span class="name">view</span>></span>没有挂科<span class="tag"></<span class="name">view</span>></span></span><br><span class="line"><span class="tag"></<span class="name">block</span>></span></span><br></pre></td></tr></table></figure><p>hidden会渲染,但不显示</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">view</span> <span class="attr">hidden</span>=<span class="string">"{{True}}"</span>></span>测试<span class="tag"></<span class="name">view</span>></span></span><br></pre></td></tr></table></figure><p>遍历渲染</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">block</span> <span class="attr">wx:for</span>=<span class="string">"{{courselist}}"</span> <span class="attr">wx:for-index</span>=<span class="string">"idx"</span> <span class="attr">wx:for-item</span>=<span class="string">"courseItem"</span>></span></span><br><span class="line"><span class="tag"><<span class="name">view</span> <span class="attr">src</span>=<span class="string">{{item.data}}</span>></span> <span class="tag"></<span class="name">view</span>></span></span><br><span class="line"><span class="tag"><<span class="name">block</span>></span></span><br></pre></td></tr></table></figure><p>如果是两层循环,则item使用就近原则,取内部</p><h3 id="模板定义"><a href="#模板定义" class="headerlink" title="模板定义"></a>模板定义</h3><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">template</span> <span class="attr">name</span>=<span class="string">'test'</span>></span></span><br><span class="line"><span class="tag"><<span class="name">view</span>></span></span><br><span class="line">{{title}}</span><br><span class="line"> <span class="tag"></<span class="name">view</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">view</span>></span></span><br><span class="line"> {{desc}}<span class="tag"></<span class="name">view</span>></span></span><br><span class="line"><span class="tag"></<span class="name">template</span>></span></span><br><span class="line"><span class="comment"><!--使用--></span></span><br><span class="line"><span class="tag"><<span class="name">template</span> <span class="attr">is</span>=<span class="string">"test"</span> <span class="attr">data</span>=<span class="string">"{{title:'模板测试',desc:'模板测试组件'}}"</span>></span><span class="tag"></<span class="name">template</span>></span></span><br></pre></td></tr></table></figure><p>template不是可视化的模板</p><p><strong>文件导入</strong></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">import</span> <span class="attr">src</span>=<span class="string">"/templates/itlike/itlike.wxml"</span> /></span></span><br></pre></td></tr></table></figure><h3 id="WXS-WeiXin-Script"><a href="#WXS-WeiXin-Script" class="headerlink" title="WXS(WeiXin Script)"></a>WXS(WeiXin Script)</h3><p>小程序的一种脚本语言,用来构建出页面结构</p><p>wxs编写在<code><wxs></code>或.wxs文件中,都是独立的模块</p><h2 id="WXSS"><a href="#WXSS" class="headerlink" title="WXSS"></a>WXSS</h2><p>内联样式</p><p>project.wxss</p><p>app.wxss(全局样式),能影响到页面样式,影响不到组件样式</p><h3 id="尺寸单位"><a href="#尺寸单位" class="headerlink" title="尺寸单位"></a>尺寸单位</h3><p>为了兼顾不同手机屏幕宽度</p><p><strong>rpx(responsive pixel),</strong>屏幕宽度固定为750rpx</p><h2 id="内置组件"><a href="#内置组件" class="headerlink" title="内置组件"></a>内置组件</h2><h3 id="text组件"><a href="#text组件" class="headerlink" title="text组件"></a>text组件</h3><p>内部只能嵌套text组件,行内元素,不能自由修改尺寸,可通过display属性修改样式</p><h3 id="image组件"><a href="#image组件" class="headerlink" title="image组件"></a>image组件</h3><p>用于展示图片(本地图片和远程图片)</p><h3 id="icon组件"><a href="#icon组件" class="headerlink" title="icon组件"></a>icon组件</h3><p>负责展示一些特定类型的图标</p><h3 id="button组件"><a href="#button组件" class="headerlink" title="button组件"></a>button组件</h3><p>用于接收用户的点击,来执行不同的业务逻辑</p>]]></content>
<summary type="html"><p>App和page的关系</p></summary>
<category term="微信小程序" scheme="https://fsjz2020.github.io/tags/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/"/>
</entry>
<entry>
<title>单片机常见通信协议</title>
<link href="https://fsjz2020.github.io/2022/12/07/%E5%8D%95%E7%89%87%E6%9C%BA%E5%B8%B8%E8%A7%81%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE/"/>
<id>https://fsjz2020.github.io/2022/12/07/%E5%8D%95%E7%89%87%E6%9C%BA%E5%B8%B8%E8%A7%81%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE/</id>
<published>2022-12-07T12:26:41.000Z</published>
<updated>2022-12-15T02:55:46.868Z</updated>
<content type="html"><![CDATA[<p>单片机常见的通信方式有UART、USART、I2C(IIC)、SPI、USB、CAN、DMA</p><span id="more"></span><h1 id="UART"><a href="#UART" class="headerlink" title="UART"></a>UART</h1><p>UART(Universal Asynchronous Receiver/Transmitter),通用异步收发器。</p><p><img src="/2022/12/07/%E5%8D%95%E7%89%87%E6%9C%BA%E5%B8%B8%E8%A7%81%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE/image-20221207203500316.png" alt="image-20221207203500316"></p><p>首先连接两个单片机的GND,使电源基准相同。</p><p>当两个单片机传输数据时,一位一位的发送。UART通信过程遵循低位先发,高位后发的原则。</p><p>发送一位二进制数据的持续时间为1/baud。在通信之前,两个单片机首先要约定好两个单片机之间的通信波特率。</p><p>UART通信,一个字节是8位,没有通信信号时,通信线路保持高电平,当要发送数据之前,先发一位0表示起始位,然后发送8位数据位,按照从低位到高位发送,数据位发送完之后,再发一位1表示停止位。发送8位数据实际上发送了10位。</p><p><img src="/2022/12/07/%E5%8D%95%E7%89%87%E6%9C%BA%E5%B8%B8%E8%A7%81%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE/image-20221207204533134.png" alt="image-20221207204533134"></p><blockquote><p>RS232接口一共有9个引脚</p><p>1、载波检测 DCD;2、接收数据 RXD;3、 发送数据 TXD;4、数据终端准备好 DTR;5、信号地线 SG;6、数据准备好 DSR;7、请求发送 RTS;8、清除发送 CTS;9、振铃提示 RI</p><p><img src="/2022/12/07/%E5%8D%95%E7%89%87%E6%9C%BA%E5%B8%B8%E8%A7%81%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE/image-20221207204825923.png" alt="image-20221207204825923"></p><p>RS232标准采用负逻辑,-3V~-15V代表1,+3V~+15V代表0,使用电平转换芯片MAX232可以将RS232电平转换成可以与单片机相连的电压。</p></blockquote><p>UART串口常用波特率为300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200</p>]]></content>
<summary type="html"><p>单片机常见的通信方式有UART、USART、I2C(IIC)、SPI、USB、CAN、DMA</p></summary>
<category term="单片机" scheme="https://fsjz2020.github.io/tags/%E5%8D%95%E7%89%87%E6%9C%BA/"/>
</entry>
<entry>
<title>numpy笔记(二)</title>
<link href="https://fsjz2020.github.io/2022/07/02/numpy%E7%AC%94%E8%AE%B0-%E4%BA%8C/"/>
<id>https://fsjz2020.github.io/2022/07/02/numpy%E7%AC%94%E8%AE%B0-%E4%BA%8C/</id>
<published>2022-07-02T14:13:38.000Z</published>
<updated>2022-09-17T06:16:03.238Z</updated>
<content type="html"><![CDATA[<h1 id="运算"><a href="#运算" class="headerlink" title="运算"></a>运算</h1><p>numpy默认乘为逐个元素相乘,如果想计算矩阵乘法,可用@或dot函数</p><span id="more"></span><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">A=np.array([[<span class="number">1</span>,<span class="number">1</span>],[<span class="number">0</span>,<span class="number">1</span>]])</span><br><span class="line">B=np.array([[<span class="number">2</span>,<span class="number">0</span>],[<span class="number">3</span>,<span class="number">4</span>]])</span><br><span class="line">A@B</span><br><span class="line">A.dot(B)</span><br></pre></td></tr></table></figure><h1 id="形状变换"><a href="#形状变换" class="headerlink" title="形状变换"></a>形状变换</h1><blockquote><p>a.ravel()扁平化</p><p>a.T转置</p><p>a.reshape((2,-1,3)),-1代表自适应形状</p></blockquote><h2 id="合并"><a href="#合并" class="headerlink" title="合并"></a>合并</h2><blockquote><p>np.column_stack((a,b))仅对1维数组有用,2维数组与np.hstack((a,b))相同</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">a=np.array([<span class="number">4</span>,<span class="number">2</span>])</span><br><span class="line">b=np.array([<span class="number">3</span>,<span class="number">8</span>])</span><br><span class="line">np.column_stack((a,b))</span><br><span class="line"><span class="meta">>>> </span>array([[<span class="number">4</span>, <span class="number">3</span>],</span><br><span class="line"> [<span class="number">2</span>, <span class="number">8</span>]])</span><br></pre></td></tr></table></figure></blockquote><p>普通的相等只是给个引用,不会创建一个新变量</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>a=np.arange(<span class="number">12</span>).reshape(<span class="number">3</span>,<span class="number">4</span>)</span><br><span class="line"><span class="meta">>>> </span>a</span><br><span class="line">array([[ <span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],</span><br><span class="line"> [ <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>],</span><br><span class="line"> [ <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]])</span><br><span class="line"><span class="meta">>>> </span>b=a</span><br><span class="line"><span class="meta">>>> </span>b <span class="keyword">is</span> a</span><br><span class="line"><span class="literal">True</span></span><br></pre></td></tr></table></figure><p>narray.view()会创建个数组,使用原数组的数据</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>c = a.view()</span><br><span class="line"><span class="meta">>>> </span>c <span class="keyword">is</span> a</span><br><span class="line"><span class="literal">False</span></span><br><span class="line"><span class="meta">>>> </span>c.base <span class="keyword">is</span> a</span><br><span class="line"><span class="literal">True</span></span><br><span class="line"><span class="meta">>>> </span>c.flags.owndata</span><br><span class="line"><span class="literal">False</span></span><br><span class="line"><span class="meta">>>> </span>c = c.reshape((<span class="number">2</span>, <span class="number">6</span>))</span><br><span class="line"><span class="meta">>>> </span>a.shape</span><br><span class="line">(<span class="number">3</span>, <span class="number">4</span>)</span><br><span class="line"><span class="meta">>>> </span>c[<span class="number">0</span>, <span class="number">4</span>] = <span class="number">1234</span></span><br><span class="line"><span class="meta">>>> </span>a</span><br><span class="line">array([[<span class="number">0</span>,<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>],</span><br><span class="line">[<span class="number">1234</span>,<span class="number">5</span>,<span class="number">6</span>,<span class="number">7</span>],</span><br><span class="line">[<span class="number">8</span>,<span class="number">9</span>,<span class="number">10</span>,<span class="number">11</span>]])</span><br><span class="line"><span class="meta">>>> </span>s = a[ : , <span class="number">1</span>:<span class="number">3</span>]</span><br><span class="line"><span class="meta">>>> </span>s[:] = <span class="number">10</span></span><br><span class="line"><span class="meta">>>> </span>a</span><br><span class="line">array([[<span class="number">0</span>,<span class="number">10</span>,<span class="number">10</span>,<span class="number">3</span>],</span><br><span class="line">[<span class="number">1234</span>,<span class="number">10</span>,<span class="number">10</span>,<span class="number">7</span>],</span><br><span class="line">[<span class="number">8</span>,<span class="number">10</span>,<span class="number">10</span>,<span class="number">11</span>]])</span><br></pre></td></tr></table></figure><p>深拷贝创建一个新的变量</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>d=a.copy()</span><br><span class="line"><span class="meta">>>> </span>d.base <span class="keyword">is</span> a</span><br><span class="line"><span class="literal">False</span></span><br><span class="line"><span class="meta">>>> </span>d[<span class="number">1</span>,<span class="number">1</span>]=<span class="number">1234</span></span><br><span class="line"><span class="meta">>>> </span>d</span><br><span class="line">array([[ <span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],</span><br><span class="line"> [ <span class="number">4</span>, <span class="number">1234</span>, <span class="number">6</span>, <span class="number">7</span>],</span><br><span class="line"> [ <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]])</span><br><span class="line"><span class="meta">>>> </span>a</span><br><span class="line">array([[ <span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],</span><br><span class="line"> [ <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>],</span><br><span class="line"> [ <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>]])</span><br></pre></td></tr></table></figure><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">a=np.arange(<span class="built_in">int</span>(<span class="number">1e8</span>))</span><br><span class="line">b=a.copy()</span><br><span class="line"><span class="keyword">del</span> a</span><br></pre></td></tr></table></figure><p>若使用b=a,则执行<code>del a</code>后,a仍然在内存里</p>]]></content>
<summary type="html"><h1 id="运算"><a href="#运算" class="headerlink" title="运算"></a>运算</h1><p>numpy默认乘为逐个元素相乘,如果想计算矩阵乘法,可用@或dot函数</p></summary>
<category term="numpy" scheme="https://fsjz2020.github.io/tags/numpy/"/>
</entry>
<entry>
<title>yaml学习</title>
<link href="https://fsjz2020.github.io/2022/06/05/yaml%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2022/06/05/yaml%E5%AD%A6%E4%B9%A0/</id>
<published>2022-06-05T08:47:06.000Z</published>
<updated>2022-06-06T07:26:28.110Z</updated>
<content type="html"><![CDATA[<p><img src="/2022/06/05/yaml%E5%AD%A6%E4%B9%A0/u=3348710092,4003996263&fm=253&fmt=auto&app=138&f=JPEG.jpeg" alt="img" style="zoom:50%;"></p><span id="more"></span><p>YAML是一个可读性高,用来表达数据序列化的格式,后缀<code>.yaml</code>或<code>.yml</code>。</p><h1 id="语法"><a href="#语法" class="headerlink" title="语法"></a>语法</h1><ul><li>使用缩进表示层级关系</li><li>缩进的空格数不重要,只要相同层级的元素左对齐即可</li><li><h1 id="表示注释"><a href="#表示注释" class="headerlink" title="表示注释"></a>表示注释</h1></li></ul><h1 id="基本数据类型"><a href="#基本数据类型" class="headerlink" title="基本数据类型"></a>基本数据类型</h1><p>纯量、数组、对象</p><h1 id="格式"><a href="#格式" class="headerlink" title="格式"></a>格式</h1><p>null或~表示空值</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#comment here</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">test</span></span><br><span class="line"><span class="attr">version:</span> <span class="number">5.6</span></span><br><span class="line"><span class="attr">port:</span> <span class="number">6379</span></span><br><span class="line"><span class="attr">stdin:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">image:</span> <span class="literal">null</span></span><br><span class="line"><span class="comment">#date and time</span></span><br><span class="line"><span class="attr">date:</span> <span class="number">2022-06-05T15:00:00+02:00</span></span><br><span class="line"></span><br><span class="line"><span class="attr">singleLineString:</span> <span class="string">>-</span> <span class="comment">#>表示多行文字,且每行文字后的回车以空格替换,-表示不要最后一行的回车</span></span><br><span class="line"> <span class="string">This</span> <span class="string">is</span> <span class="string">a</span> <span class="string">single</span> <span class="string">line</span> <span class="string">string</span></span><br><span class="line"> <span class="string">another</span> <span class="string">line</span></span><br><span class="line"> <span class="string">and</span> <span class="string">another</span></span><br><span class="line"><span class="attr">OtherLineString:</span> <span class="string">|</span></span><br><span class="line"><span class="string"> This is a single line string</span></span><br><span class="line"><span class="string"> another line</span></span><br><span class="line"><span class="string"> and another</span></span><br><span class="line"><span class="string"></span> <span class="comment">#|表示保留换行符</span></span><br><span class="line"><span class="comment">#数组</span></span><br><span class="line"><span class="attr">ports:</span></span><br><span class="line"><span class="bullet">-</span> <span class="number">5433</span></span><br><span class="line"><span class="bullet">-</span> <span class="number">5634</span></span><br><span class="line"><span class="attr">ports1:</span> [<span class="number">6379</span>, <span class="number">6380</span>]</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p><img src="/2022/06/05/yaml%E5%AD%A6%E4%B9%A0/u=3348710092,4003996263&fm=253&fmt=auto&app=138&f=JPEG.jpeg" alt="img" style="zoom:50%;"></p></summary>
<category term="yaml" scheme="https://fsjz2020.github.io/tags/yaml/"/>
</entry>
<entry>
<title>json学习</title>
<link href="https://fsjz2020.github.io/2022/06/04/json%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2022/06/04/json%E5%AD%A6%E4%B9%A0/</id>
<published>2022-06-04T09:07:47.000Z</published>
<updated>2022-06-06T07:26:17.650Z</updated>
<content type="html"><![CDATA[<p><img src="/2022/06/04/json%E5%AD%A6%E4%B9%A0/u=2878167530,1086893345&fm=253&fmt=auto&app=138&f=JPEG.jpeg" alt="img" style="zoom:50%;"></p><p>JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式,目前使用的特别广泛。</p><span id="more"></span><h1 id="语法格式"><a href="#语法格式" class="headerlink" title="语法格式"></a>语法格式</h1><ul><li>对象表示为键值对</li><li>数据由逗号分隔</li><li>花括号保存对象</li><li>方括号保存数组</li></ul><p>值可以为字符串、数字、数组和json对象。</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">{</span><br><span class="line"> <span class="attr">"key"</span>:<span class="string">"value"</span>,</span><br><span class="line"> <span class="attr">"key2"</span>:<span class="number">-1234.567</span>,</span><br><span class="line"> <span class="attr">"Key3"</span>:</span><br><span class="line"> {</span><br><span class="line"> <span class="attr">"name"</span>:<span class="string">"FS\"JZ"</span>,</span><br><span class="line"> <span class="attr">"age"</span>:<span class="number">20</span></span><br><span class="line"> },</span><br><span class="line"> <span class="attr">"key4"</span>:[<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>],</span><br><span class="line"> <span class="attr">"key6"</span>:[</span><br><span class="line"> {</span><br><span class="line"> <span class="attr">"name"</span>:<span class="string">"a"</span>,</span><br><span class="line"> <span class="attr">"age"</span>:<span class="number">18</span></span><br><span class="line"> },</span><br><span class="line"> {</span><br><span class="line"> <span class="attr">"name"</span>:<span class="string">"b"</span>,</span><br><span class="line"> <span class="attr">"age"</span>:<span class="number">19</span></span><br><span class="line"> },</span><br><span class="line"> {</span><br><span class="line"> <span class="attr">"name"</span>:<span class="string">"c"</span>,</span><br><span class="line"> <span class="attr">"age"</span>:<span class="number">20</span></span><br><span class="line"> },</span><br><span class="line"> {</span><br><span class="line"> <span class="attr">"name"</span>:<span class="string">"d"</span>,</span><br><span class="line"> <span class="attr">"age"</span>:<span class="number">21</span></span><br><span class="line"> },</span><br><span class="line"> ],</span><br><span class="line"> <span class="attr">"key7"</span>:<span class="literal">null</span></span><br><span class="line">}</span><br></pre></td></tr></table></figure><h1 id="取值"><a href="#取值" class="headerlink" title="取值"></a>取值</h1><p>key6[0].name</p><h1 id="转义"><a href="#转义" class="headerlink" title="转义"></a>转义</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">\\</span><br><span class="line">\"</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p><img src="/2022/06/04/json%E5%AD%A6%E4%B9%A0/u=2878167530,1086893345&fm=253&fmt=auto&app=138&f=JPEG.jpeg" alt="img" style="zoom:50%;"></p>
<p>JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式,目前使用的特别广泛。</p></summary>
<category term="json" scheme="https://fsjz2020.github.io/tags/json/"/>
</entry>
<entry>
<title>git学习</title>
<link href="https://fsjz2020.github.io/2022/03/22/git%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2022/03/22/git%E5%AD%A6%E4%B9%A0/</id>
<published>2022-03-22T10:36:40.000Z</published>
<updated>2023-10-01T06:26:31.456Z</updated>
<content type="html"><![CDATA[<p><img src="/2022/03/22/git%E5%AD%A6%E4%B9%A0/u=1832660845,1003644526&fm=253&fmt=auto&app=120&f=JPEG.jpeg" alt="img" style="zoom:33%;"></p><span id="more"></span><h1 id="安装配置"><a href="#安装配置" class="headerlink" title="安装配置"></a>安装配置</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name <span class="string">"YourName"</span></span><br><span class="line">git config --global user.email <span class="string">"email@xample.com"</span></span><br></pre></td></tr></table></figure><p><strong>创建库</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git init</span><br></pre></td></tr></table></figure><h1 id="添加文件"><a href="#添加文件" class="headerlink" title="添加文件"></a>添加文件</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git add README.txt file.txt</span><br><span class="line">git commit -m <span class="string">"Message"</span></span><br></pre></td></tr></table></figure><p><strong>查看状态</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git status</span><br></pre></td></tr></table></figure><p><strong>比较差异</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git diff README.txt</span><br></pre></td></tr></table></figure><h1 id="回退版本"><a href="#回退版本" class="headerlink" title="回退版本"></a>回退版本</h1><p><strong>查看修改记录</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">log</span></span><br><span class="line">git <span class="built_in">log</span> --pretty=oneline <span class="comment">#一行显示</span></span><br></pre></td></tr></table></figure><p><strong>回退版本</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git reset --hard HEAD^</span><br></pre></td></tr></table></figure><p>回退两个版本就用</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git reset --hard HEAD^^</span><br><span class="line"><span class="comment">#或</span></span><br><span class="line">git reset --hard HEAD~100</span><br></pre></td></tr></table></figure><p><strong>返回现在的版本</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git reset --hard 1094a<span class="comment">#commit提交的前几位</span></span><br></pre></td></tr></table></figure><p><strong>git有一个指令用来记录输入过的指令</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git reflog</span><br></pre></td></tr></table></figure><p><strong>撤销修改</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git restore -- README.txt</span><br></pre></td></tr></table></figure><p>没有提交到暂存区,则恢复到修改之前的状态,若已提交到暂存区,则恢复到最初提交到暂存区的版本</p><p><strong>撤销暂存区的修改</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git reset HEAD README.txt</span><br></pre></td></tr></table></figure><p><strong>删除文件</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git rm test.txt</span><br></pre></td></tr></table></figure><h1 id="远程库"><a href="#远程库" class="headerlink" title="远程库"></a>远程库</h1><p><strong>连接远程库</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git remote add origin git@server-name:path/repo-name.git</span><br></pre></td></tr></table></figure><p>origin是远程库名</p><p><strong>将本地库推送到远程</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git push -u origin master</span><br></pre></td></tr></table></figure><p><strong>以后推送</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git push origin master</span><br></pre></td></tr></table></figure><p><strong>查看远程库信息</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git remote -v</span><br></pre></td></tr></table></figure><p><strong>删除远程库</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git remote rm origin</span><br></pre></td></tr></table></figure><p><strong>远程克隆</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> git@server-name:path/repo-name.git</span><br></pre></td></tr></table></figure><p><strong>从远程抓取</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git pull</span><br></pre></td></tr></table></figure><h1 id="分支管理"><a href="#分支管理" class="headerlink" title="分支管理"></a>分支管理</h1><p><strong>创建分支并切换</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git checkout -b dev</span><br></pre></td></tr></table></figure><p>等价于</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git branch dev</span><br><span class="line">git checkout dev</span><br></pre></td></tr></table></figure><p><strong>查看当前所有分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git branch</span><br></pre></td></tr></table></figure><p><strong>切换分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git checkout master</span><br></pre></td></tr></table></figure><p><strong>合并分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git merge dev</span><br></pre></td></tr></table></figure><p>将指定分支合并到当前分支</p><p><strong>删除分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git branch -d dev</span><br></pre></td></tr></table></figure><p><strong>另一种切换分支的方式</strong></p><p>切换未创建的分支</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git switch -c dev</span><br></pre></td></tr></table></figure><p>切换已有分支</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git switch master</span><br></pre></td></tr></table></figure><p><strong>冲突解决</strong></p><p>无法合并需要手动解决冲突再合并</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">log</span> --graph --pretty=oneline --abbrev-commit</span><br></pre></td></tr></table></figure><p>可查看分支合并图</p><p><strong>禁用Fast forward</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git merge --no-ff -m <span class="string">"message"</span> dev</span><br></pre></td></tr></table></figure><p>合并后的历史有分支</p><p><strong>bug分支</strong></p><p>使用<code>git stash</code>将工作现场储藏起来,使用<code>git stash list</code>查看工作现场,使用<code>git stash apply</code>恢复现场,使用<code>git stash drop</code>清除记录,或直接使用<code>git stash pop</code>恢复现场+清除记录。</p><p>可以多次<code>git stash</code>,恢复时只需要<code>git stash apply stash@{0}</code>形式恢复对应的版本</p><p>修复bug后将修改后的代码同步到分支上来可以用</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git cherry-pick 4c805e2</span><br></pre></td></tr></table></figure><p><strong>删除未合并的分支</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git branch -D dev</span><br></pre></td></tr></table></figure><h1 id="标签管理"><a href="#标签管理" class="headerlink" title="标签管理"></a>标签管理</h1><p><strong>添加标签</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git tag v1.0</span><br><span class="line">git tag v0.9 2782bfc</span><br><span class="line">git tag -a v0.1 -m <span class="string">"version 0.1 released"</span> 1049adb</span><br></pre></td></tr></table></figure><p><strong>显示信息</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git show <tagname></span><br></pre></td></tr></table></figure><p><strong>显示所有标签</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git tag</span><br></pre></td></tr></table></figure><p><strong>删除标签</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git tag -d v0.1</span><br></pre></td></tr></table></figure><p><strong>将标签推送到远程</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git push origin v0.1</span><br></pre></td></tr></table></figure><p><strong>将所有标签推送到远程</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git push origin --tags</span><br></pre></td></tr></table></figure><p><strong>删除远程标签</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git tag -d v0.9</span><br><span class="line">git push origin :refs/tags/v0.9</span><br></pre></td></tr></table></figure><h1 id="定义git"><a href="#定义git" class="headerlink" title="定义git"></a>定义git</h1><p><strong>忽略特殊文件</strong></p><p>在Git的根工作区下存放一个<code>.gitignore</code>的文件,将需要忽略的文件名放进去</p><p><strong>强制添加文件</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git add -f <filename></span><br></pre></td></tr></table></figure><p><a href="https://github.com/github/gitignore">github<code>.gitignore模板</code></a></p><p><strong>添加快捷键</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git config --global alias.st status</span><br></pre></td></tr></table></figure><p>单个仓库下的配置文件放在<code>.git/config</code>下,全局<strong>git</strong>配置存放在用户名目录中</p><h1 id="更新-阅读Pro-Git笔记"><a href="#更新-阅读Pro-Git笔记" class="headerlink" title="更新(阅读Pro Git笔记)"></a>更新(阅读Pro Git笔记)</h1><p>VCS:版本控制系统</p><p>其他版本控制系统基于差异,git基于快照</p><p><strong>三种状态:</strong>已修改、已暂存、已提交</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git config --system --global --<span class="built_in">local</span> </span><br></pre></td></tr></table></figure><p>分别配置全局、当前用户和当前仓库的配置,就近原则,即针对仓库的覆盖全局的。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git config --list</span><br><span class="line">git config --show-origin user.name</span><br><span class="line">git config <key></span><br></pre></td></tr></table></figure><p>检查某一项的配置</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">help</span> <verb></span><br><span class="line">git <verb> --<span class="built_in">help</span></span><br><span class="line">git <verb> -h <span class="comment">#简短参考</span></span><br></pre></td></tr></table></figure><p>某一命令的帮助</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git add <files></span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git status -s</span><br></pre></td></tr></table></figure><p>查看工作区状态</p><p>左栏表示暂存区状态,右栏表示工作区状态</p><h2 id="gitignore格式规范"><a href="#gitignore格式规范" class="headerlink" title=".gitignore格式规范"></a>.gitignore格式规范</h2><ul><li>所有空行和以#开头的行会被git忽略</li><li>使用glob模式(shell使用的简化的正则表达式)匹配</li><li>可以以<code>/</code>开头防止递归</li><li>以<code>/</code>结尾指定目录</li><li>模式前加<code>!</code>取反</li></ul><p>子目录下的<code>.gitignore</code>仅作用于它所在的目录</p><h2 id="查看修改内容"><a href="#查看修改内容" class="headerlink" title="查看修改内容"></a>查看修改内容</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git diff <span class="comment"># 查看尚未暂存的改动</span></span><br><span class="line">git diff --staged [--cached] <span class="comment">#两者为同义词</span></span><br></pre></td></tr></table></figure><h2 id="提交修改"><a href="#提交修改" class="headerlink" title="提交修改"></a>提交修改</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">git commit -a -m <span class="string">'message'</span></span><br><span class="line">git rm test.txt <span class="comment">#删除暂存区和工作目录下的</span></span><br><span class="line">git rm --cached test.txt <span class="comment">#只删除暂存区的</span></span><br><span class="line">git mv README.md README <span class="comment"># 重命名操作</span></span><br><span class="line">git <span class="built_in">log</span> -p <span class="comment"># 显示每次提交引入的差异</span></span><br><span class="line">git <span class="built_in">log</span> --pretty=oneline[short][full][fuller]</span><br></pre></td></tr></table></figure><h2 id="撤销操作"><a href="#撤销操作" class="headerlink" title="撤销操作"></a>撤销操作</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git commit -amend <span class="comment">#当你忘了添加某个文件,而提交时,使用这个可以让新提交换掉旧提交</span></span><br><span class="line">git reset HEAD README.md <span class="comment">#取消暂存</span></span><br><span class="line">git checkout -- README.md <span class="comment"># 取消修改</span></span><br></pre></td></tr></table></figure><h2 id="远程仓库"><a href="#远程仓库" class="headerlink" title="远程仓库"></a>远程仓库</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">git remote -v <span class="comment">#显示读写远程仓库使用的git简写及对应的url</span></span><br><span class="line">git fetch orgin <span class="comment"># 从远程下载数据,不会合并和修改你当前的工作</span></span><br><span class="line">git remote show <span class="comment"># 显示所有远程分支</span></span><br><span class="line">git remote rename orgin or <span class="comment"># 重命名远程仓库</span></span><br><span class="line">git remote remove origin <span class="comment"># 移除远程仓库</span></span><br></pre></td></tr></table></figure><h2 id="标签"><a href="#标签" class="headerlink" title="标签"></a>标签</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p><img src="/2022/03/22/git%E5%AD%A6%E4%B9%A0/u=1832660845,1003644526&fm=253&fmt=auto&app=120&f=JPEG.jpeg" alt="img" style="zoom:33%;"></p></summary>
<category term="git" scheme="https://fsjz2020.github.io/tags/git/"/>
</entry>
<entry>
<title>Python正则学习</title>
<link href="https://fsjz2020.github.io/2022/02/26/Python%E6%AD%A3%E5%88%99%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2022/02/26/Python%E6%AD%A3%E5%88%99%E5%AD%A6%E4%B9%A0/</id>
<published>2022-02-26T13:39:26.000Z</published>
<updated>2022-03-01T02:26:51.477Z</updated>
<content type="html"><![CDATA[<p>.</p><span id="more"></span><p><strong>search</strong>:寻找string中的第一个pattern</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">1</span>]: <span class="keyword">import</span> re</span><br><span class="line">In [<span class="number">2</span>]: a = <span class="string">"is"</span></span><br><span class="line">In [<span class="number">3</span>]: b = <span class="string">"This is a string for test"</span></span><br><span class="line">In [<span class="number">4</span>]: re.search(a, b)</span><br><span class="line">Out[<span class="number">4</span>]: <re.Match <span class="built_in">object</span>; span=(<span class="number">2</span>, <span class="number">4</span>), match=<span class="string">'is'</span>></span><br><span class="line">In [<span class="number">5</span>]: match = re.search(a, b)</span><br><span class="line">In [<span class="number">6</span>]: match.start()</span><br><span class="line">Out[<span class="number">6</span>]: <span class="number">2</span></span><br><span class="line">In [<span class="number">7</span>]: match.end()</span><br><span class="line">Out[<span class="number">7</span>]: <span class="number">4</span></span><br></pre></td></tr></table></figure><p><strong>findall</strong>:找到所有的符合的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">8</span>]: re.findall(a, b)</span><br><span class="line">Out[<span class="number">8</span>]: [<span class="string">'is'</span>, <span class="string">'is'</span>]</span><br></pre></td></tr></table></figure><p><strong>finditer</strong>:返回迭代器</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">9</span>]: re.finditer(a, b)</span><br><span class="line">Out[<span class="number">9</span>]: <callable_iterator at <span class="number">0x1d2e0145310</span>></span><br><span class="line">In [<span class="number">10</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> re.finditer(a, b):</span><br><span class="line"> ...: <span class="built_in">print</span>(i)</span><br><span class="line"><re.Match <span class="built_in">object</span>; span=(<span class="number">2</span>, <span class="number">4</span>), match=<span class="string">'is'</span>></span><br><span class="line"><re.Match <span class="built_in">object</span>; span=(<span class="number">5</span>, <span class="number">7</span>), match=<span class="string">'is'</span>></span><br></pre></td></tr></table></figure><p><strong>match</strong>:只能匹配开头符合的</p><p><strong>fullmatch</strong>:要求整个字符串都与模式匹配</p><div class="table-container"><table><thead><tr><th style="text-align:center"><strong>标志</strong></th><th style="text-align:center">作用</th></tr></thead><tbody><tr><td style="text-align:center">IGNORECASE</td><td style="text-align:center">使匹配不区分大小写</td></tr><tr><td style="text-align:center">MULTILINE</td><td style="text-align:center">使匹配可以匹配多行</td></tr><tr><td style="text-align:center">DOTALL</td><td style="text-align:center">使.可以匹配换行符</td></tr><tr><td style="text-align:center">ASCII</td><td style="text-align:center">匹配ASCII码而不是UNICODE</td></tr></tbody></table></div><p><strong>嵌入标志</strong></p><p>在表达式前用<strong>(?i)</strong>来嵌入</p><div class="table-container"><table><thead><tr><th style="text-align:center">标志</th><th style="text-align:center">缩写</th></tr></thead><tbody><tr><td style="text-align:center">ASCII</td><td style="text-align:center">a</td></tr><tr><td style="text-align:center">IGNORECASE</td><td style="text-align:center">i</td></tr><tr><td style="text-align:center">MUTILINE</td><td style="text-align:center">m</td></tr><tr><td style="text-align:center">DOTALL</td><td style="text-align:center">s</td></tr><tr><td style="text-align:center">VERBOSE</td><td style="text-align:center">x</td></tr></tbody></table></div><p><strong>组命名</strong></p><p><strong>(?P<name>)</name></strong></p><p><strong>组引用</strong></p><p><strong>(?P=name)</strong></p><p><strong>不同选择模式</strong></p><p><strong>?(id)yes_pattern|no_pattern</strong></p><p>id是组号或编号</p><p><strong>sub</strong>替换</p><p><strong>subn</strong>替换并返回替换次数</p>]]></content>
<summary type="html"><p>.</p></summary>
<category term="Python" scheme="https://fsjz2020.github.io/tags/Python/"/>
<category term="re" scheme="https://fsjz2020.github.io/tags/re/"/>
</entry>
<entry>
<title>numpy笔记</title>
<link href="https://fsjz2020.github.io/2022/02/19/numpy%E7%AC%94%E8%AE%B0/"/>
<id>https://fsjz2020.github.io/2022/02/19/numpy%E7%AC%94%E8%AE%B0/</id>
<published>2022-02-19T08:35:27.000Z</published>
<updated>2022-02-23T15:35:07.843Z</updated>
<content type="html"><![CDATA[<p>.</p><span id="more"></span><h1 id="Numpy创建数组"><a href="#Numpy创建数组" class="headerlink" title="Numpy创建数组"></a>Numpy创建数组</h1><h2 id="从无到有"><a href="#从无到有" class="headerlink" title="从无到有"></a>从无到有</h2><p><strong>numpy.empty(shape,dtype=int,order=’C’)</strong></p><p>创建一个未初始化的数组</p><blockquote><p>shape:形状</p><p>dtype:数据类型</p><p>order:”C”行优先,”F”列优先</p></blockquote><p><strong>numpy.zeros(shape,dtype=int,order=’C’)</strong></p><p>创建全0数组</p><p><strong>numpy.ones(shape,dtype=int,order=’C’)</strong></p><p>创建全1数组</p><h2 id="从已有创建新的"><a href="#从已有创建新的" class="headerlink" title="从已有创建新的"></a>从已有创建新的</h2><p><strong>numpy.asarray(a,dtype=float,order=’C’)</strong></p><blockquote><p>a可以是列表</p></blockquote><p><strong>numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)</strong>从流读取</p><blockquote><p>count:默认-1读取所有</p><p>offset:读取位置,默认为0</p></blockquote><p><strong>numpy.fromiter(iterable,dtype,count=-1)</strong></p><p>从可迭代对象读取</p><h2 id="从数值范围创建新的"><a href="#从数值范围创建新的" class="headerlink" title="从数值范围创建新的"></a>从数值范围创建新的</h2><p><strong>numpy.arange(start,stop,step,dtype)</strong></p><blockquote><p>start:默认为0</p><p>stop:终止值(不包含)</p><p>step:步长,默认为1</p><p>dtype:数据类型</p></blockquote><p><strong>numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)</strong></p><blockquote><p>endpoint:是否包含终止值,默认为True</p><p>retstep:是否包含步长</p></blockquote><p><strong>numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)</strong></p><blockquote><p>start:起始阶</p><p>stop:终止阶</p><p>base:底数</p></blockquote><h2 id="花式索引"><a href="#花式索引" class="headerlink" title="花式索引"></a>花式索引</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="meta">>>> </span>a=np.arange(<span class="number">32</span>).reshape(<span class="number">8</span>,<span class="number">4</span>)</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(a)</span><br><span class="line">[[ <span class="number">0</span> <span class="number">1</span> <span class="number">2</span> <span class="number">3</span>]</span><br><span class="line"> [ <span class="number">4</span> <span class="number">5</span> <span class="number">6</span> <span class="number">7</span>]</span><br><span class="line"> [ <span class="number">8</span> <span class="number">9</span> <span class="number">10</span> <span class="number">11</span>]</span><br><span class="line"> [<span class="number">12</span> <span class="number">13</span> <span class="number">14</span> <span class="number">15</span>]</span><br><span class="line"> [<span class="number">16</span> <span class="number">17</span> <span class="number">18</span> <span class="number">19</span>]</span><br><span class="line"> [<span class="number">20</span> <span class="number">21</span> <span class="number">22</span> <span class="number">23</span>]</span><br><span class="line"> [<span class="number">24</span> <span class="number">25</span> <span class="number">26</span> <span class="number">27</span>]</span><br><span class="line"> [<span class="number">28</span> <span class="number">29</span> <span class="number">30</span> <span class="number">31</span>]]</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(a[[<span class="number">4</span>,<span class="number">2</span>,<span class="number">1</span>,<span class="number">7</span>]])</span><br><span class="line">[[<span class="number">16</span> <span class="number">17</span> <span class="number">18</span> <span class="number">19</span>]</span><br><span class="line"> [ <span class="number">8</span> <span class="number">9</span> <span class="number">10</span> <span class="number">11</span>]</span><br><span class="line"> [ <span class="number">4</span> <span class="number">5</span> <span class="number">6</span> <span class="number">7</span>]</span><br><span class="line"> [<span class="number">28</span> <span class="number">29</span> <span class="number">30</span> <span class="number">31</span>]]</span><br></pre></td></tr></table></figure><h2 id="多个数组索引"><a href="#多个数组索引" class="headerlink" title="多个数组索引"></a>多个数组索引</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="meta">>>> </span>a=np.arange(<span class="number">32</span>).reshape(<span class="number">8</span>,<span class="number">4</span>)</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(a)</span><br><span class="line">[[ <span class="number">0</span> <span class="number">1</span> <span class="number">2</span> <span class="number">3</span>]</span><br><span class="line"> [ <span class="number">4</span> <span class="number">5</span> <span class="number">6</span> <span class="number">7</span>]</span><br><span class="line"> [ <span class="number">8</span> <span class="number">9</span> <span class="number">10</span> <span class="number">11</span>]</span><br><span class="line"> [<span class="number">12</span> <span class="number">13</span> <span class="number">14</span> <span class="number">15</span>]</span><br><span class="line"> [<span class="number">16</span> <span class="number">17</span> <span class="number">18</span> <span class="number">19</span>]</span><br><span class="line"> [<span class="number">20</span> <span class="number">21</span> <span class="number">22</span> <span class="number">23</span>]</span><br><span class="line"> [<span class="number">24</span> <span class="number">25</span> <span class="number">26</span> <span class="number">27</span>]</span><br><span class="line"> [<span class="number">28</span> <span class="number">29</span> <span class="number">30</span> <span class="number">31</span>]]</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(a[np.ix_([<span class="number">1</span>,<span class="number">5</span>,<span class="number">7</span>,<span class="number">2</span>],[<span class="number">0</span>,<span class="number">3</span>,<span class="number">1</span>,<span class="number">2</span>])])</span><br><span class="line">[[ <span class="number">4</span> <span class="number">7</span> <span class="number">5</span> <span class="number">6</span>]</span><br><span class="line"> [<span class="number">20</span> <span class="number">23</span> <span class="number">21</span> <span class="number">22</span>]</span><br><span class="line"> [<span class="number">28</span> <span class="number">31</span> <span class="number">29</span> <span class="number">30</span>]</span><br><span class="line"> [ <span class="number">8</span> <span class="number">11</span> <span class="number">9</span> <span class="number">10</span>]]</span><br></pre></td></tr></table></figure><h1 id="广播-BroadCast"><a href="#广播-BroadCast" class="headerlink" title="广播(BroadCast)"></a>广播(BroadCast)</h1><p>当两个数组长度和维数相同,则算术运算是对应位的算术运算</p><p>若长度不相同,则将短的扩充到与长的长度相同再运算</p><blockquote><p>规则(来自<a href="https://www.runoob.com/numpy/numpy-broadcast.html">菜鸟教程</a>):</p><ul><li>数组拥有相同形状。</li><li>当前维度的值相等。</li><li>当前维度的值有一个是 1。</li></ul></blockquote><h1 id="数组迭代"><a href="#数组迭代" class="headerlink" title="数组迭代"></a>数组迭代</h1><p><strong>numpy.nditer(a,order=’C’)</strong></p><blockquote><p>迭代顺序C风格行优先,F风格列优先</p></blockquote><h1 id="数组操作"><a href="#数组操作" class="headerlink" title="数组操作"></a>数组操作</h1><h2 id="修改数组形状"><a href="#修改数组形状" class="headerlink" title="修改数组形状"></a>修改数组形状</h2><div class="table-container"><table><thead><tr><th style="text-align:center">函数</th><th style="text-align:center">作用</th></tr></thead><tbody><tr><td style="text-align:center">reshape</td><td style="text-align:center">不改变数据条件下修改形状</td></tr><tr><td style="text-align:center">flat</td><td style="text-align:center">数组元素迭代器</td></tr><tr><td style="text-align:center">flatten</td><td style="text-align:center">返回一份数组拷贝,对拷贝做修改不影响原始数据</td></tr><tr><td style="text-align:center">ravel</td><td style="text-align:center">返回展开数组</td></tr></tbody></table></div><p><strong>numpy.reshape(arr,newshape,order=’C’)</strong></p><blockquote><p>arr:原数组</p><p>newshape:整数或整数数组</p><p>order:C按行,F按列,A原顺序,K元素在内存中的顺序</p></blockquote><p><strong>numpy.ndarray.flat</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="meta">>>> </span>a=np.arange(<span class="number">10</span>)</span><br><span class="line"><span class="meta">>>> </span><span class="keyword">for</span> i <span class="keyword">in</span> a.flat:</span><br><span class="line"><span class="meta">... </span> <span class="built_in">print</span>(i)</span><br><span class="line">...</span><br><span class="line"><span class="number">0</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line"><span class="number">6</span></span><br><span class="line"><span class="number">7</span></span><br><span class="line"><span class="number">8</span></span><br><span class="line"><span class="number">9</span></span><br></pre></td></tr></table></figure><p><strong>numpy.ndarray.flatten(order=’C’)</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>a=np.arange(<span class="number">8</span>).reshape(<span class="number">2</span>,<span class="number">4</span>)</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(a)</span><br><span class="line">[[<span class="number">0</span> <span class="number">1</span> <span class="number">2</span> <span class="number">3</span>]</span><br><span class="line"> [<span class="number">4</span> <span class="number">5</span> <span class="number">6</span> <span class="number">7</span>]]</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(a.flatten(order=<span class="string">'K'</span>))</span><br><span class="line">[<span class="number">0</span> <span class="number">1</span> <span class="number">2</span> <span class="number">3</span> <span class="number">4</span> <span class="number">5</span> <span class="number">6</span> <span class="number">7</span>]</span><br></pre></td></tr></table></figure><p><strong>numpy.ravel(a,order=’C’)</strong></p><p>将数组展平</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>b=np.arange(<span class="number">1</span>,<span class="number">65</span>).reshape(<span class="number">4</span>,<span class="number">4</span>,<span class="number">4</span>)</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(b.ravel())</span><br><span class="line">[ <span class="number">1</span> <span class="number">2</span> <span class="number">3</span> <span class="number">4</span> <span class="number">5</span> <span class="number">6</span> <span class="number">7</span> <span class="number">8</span> <span class="number">9</span> <span class="number">10</span> <span class="number">11</span> <span class="number">12</span> <span class="number">13</span> <span class="number">14</span> <span class="number">15</span> <span class="number">16</span> <span class="number">17</span> <span class="number">18</span> <span class="number">19</span> <span class="number">20</span> <span class="number">21</span> <span class="number">22</span> <span class="number">23</span> <span class="number">24</span></span><br><span class="line"> <span class="number">25</span> <span class="number">26</span> <span class="number">27</span> <span class="number">28</span> <span class="number">29</span> <span class="number">30</span> <span class="number">31</span> <span class="number">32</span> <span class="number">33</span> <span class="number">34</span> <span class="number">35</span> <span class="number">36</span> <span class="number">37</span> <span class="number">38</span> <span class="number">39</span> <span class="number">40</span> <span class="number">41</span> <span class="number">42</span> <span class="number">43</span> <span class="number">44</span> <span class="number">45</span> <span class="number">46</span> <span class="number">47</span> <span class="number">48</span></span><br><span class="line"> <span class="number">49</span> <span class="number">50</span> <span class="number">51</span> <span class="number">52</span> <span class="number">53</span> <span class="number">54</span> <span class="number">55</span> <span class="number">56</span> <span class="number">57</span> <span class="number">58</span> <span class="number">59</span> <span class="number">60</span> <span class="number">61</span> <span class="number">62</span> <span class="number">63</span> <span class="number">64</span>]</span><br></pre></td></tr></table></figure><h2 id="翻转数组"><a href="#翻转数组" class="headerlink" title="翻转数组"></a>翻转数组</h2><p><strong>numpy.trranspose(arr,axes)</strong></p><blockquote><p>arr:要操作的数组</p><p>axes:对应维度</p></blockquote><p><strong>numpy.ndarray.T</strong></p><p>与上相同</p><p><strong>numpy.rollaxis(arr,axis,start)</strong></p><blockquote><p>arr:数组</p><p>axis:要向后滚动的轴</p><p>start:默认为0</p></blockquote><p><strong>numpy.swapaxes(arr,axis1,axis2)</strong></p><blockquote><p>arr:输入的数组</p><p>axis1:第一个轴</p><p>axis2:第二个轴</p></blockquote><h2 id="修改维度"><a href="#修改维度" class="headerlink" title="修改维度"></a>修改维度</h2><p><strong>numpy.broadcast_to(array,shape,subok)</strong></p><p>将array广播到shape形状</p><p><strong>numpy.expand_dims(arr,axis)</strong></p><p>在指定位置插入新的轴</p><p><strong>numpy.squeeze(arr,axis)</strong></p><p>从arr中删除axis维坐标</p><h2 id="连接数组"><a href="#连接数组" class="headerlink" title="连接数组"></a>连接数组</h2><p><strong>numpy.concatenate((a1,a2,…),axis)</strong></p><p>沿现有轴连接形状相同的两个或多个数组</p><p><strong>numpy.stack(arrays,axis)</strong></p><p>沿新轴连接新序列</p><p><strong>numpy.hstack(arrays)</strong></p><p>水平堆叠</p><p><strong>numpy.vstack(arrays)</strong></p><p>垂直堆叠</p><h2 id="分割数组"><a href="#分割数组" class="headerlink" title="分割数组"></a>分割数组</h2><p><strong>numpy.split(ary,indices_or_sections,axis)</strong></p><blockquote><p>ary:数组</p><p>indices_or_sections:如果是整数,为分成多少部分,如果是数组,则是在哪里开始分</p><p>axis:沿哪个方向切分</p></blockquote><p><strong>numpy.hsplit(ary,nums)</strong></p><p>水平切分</p><p><strong>numpy.vsplit(ary,nums)</strong></p><p>垂直切分</p><h2 id="数组元素添加与删除"><a href="#数组元素添加与删除" class="headerlink" title="数组元素添加与删除"></a>数组元素添加与删除</h2><p><strong>numpy.resize(arr,shape)</strong></p><p>与reshape作用差不多</p><p><strong>numpy.append(arr,values,axis=None)</strong></p><p>当axis为None时,返回的是一维数组</p><p><strong>numpy.insert(arr,obj,values,axis)</strong></p><p>未提供axis数组会被展开</p><p><strong>numpy.delete(arr,obj,axis)</strong></p><p>未传递axis数组会被展开</p><p><strong>numpy.unique(arr,return_index,return_inverse,return_count)</strong></p><blockquote><p>arr:输入数组</p><p>return_index:返回新数组元素在旧列表中的位置</p><p>return_inverse:返回旧数组元素在新列表中的位置</p><p>return_count:返回每个元素的个数</p></blockquote><h1 id="位运算"><a href="#位运算" class="headerlink" title="位运算"></a>位运算</h1><p><strong>bitwise_and</strong>对元素数组执行位运算</p><p><strong>bitwise_or</strong>对元素数组执行或运算</p><p><strong>invert</strong>按位取反</p><p><strong>left_shift</strong>向左移动二进制</p><p><strong>right_shift</strong>向右移动二进制</p><p><strong>binary_repr</strong>二进制表示</p><h1 id="字符串函数"><a href="#字符串函数" class="headerlink" title="字符串函数"></a>字符串函数</h1><p>字符串函数与python自带的string方法类似</p><h1 id="数学函数"><a href="#数学函数" class="headerlink" title="数学函数"></a>数学函数</h1><p>sin、cos、tan、arcsin、arccos、arctan、degrees、around、floor(小于或等于指定表达式的最大整数,向下取整)、ceil(向上取整)</p><h1 id="算术函数"><a href="#算术函数" class="headerlink" title="算术函数"></a>算术函数</h1><p>add、subtract、multiply、divide、reciprocal(倒数)、power(幂)、<strong>mod、remainder</strong>(取余)</p><h1 id="统计函数"><a href="#统计函数" class="headerlink" title="统计函数"></a>统计函数</h1><p><strong>amin、amax</strong>(计算指定轴的最小最大值)<strong>ptp</strong>(计算数组元素最大值与最小值的差值)</p><p><strong>percentile</strong>(百分位数)</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line">a=np.array([[<span class="number">4</span>,<span class="number">8</span>,<span class="number">6</span>],[<span class="number">2</span>,<span class="number">3</span>,<span class="number">9</span>]])</span><br><span class="line"><span class="built_in">print</span>(np.percentile(a,<span class="number">50</span>))</span><br><span class="line"><span class="built_in">print</span>(np.percentile(a,<span class="number">50</span>,axis=<span class="number">0</span>,keepdims=<span class="literal">True</span>))</span><br><span class="line"><span class="built_in">print</span>(np.percentile(a,<span class="number">50</span>,axis=<span class="number">1</span>,keepdims=<span class="literal">True</span>))</span><br><span class="line"><span class="number">5.0</span></span><br><span class="line">[[<span class="number">3.</span> <span class="number">5.5</span> <span class="number">7.5</span>]]</span><br><span class="line">[[<span class="number">6.</span>]</span><br><span class="line"> [<span class="number">3.</span>]]</span><br></pre></td></tr></table></figure><p><strong>median</strong>(中位数)、<strong>mean</strong>(平均数)、<strong>average</strong>(加权平均数)、<strong>std</strong>(标准差)、<strong>var</strong>(方差)</p>]]></content>
<summary type="html"><p>.</p></summary>
<category term="numpy" scheme="https://fsjz2020.github.io/tags/numpy/"/>
<category term="python" scheme="https://fsjz2020.github.io/tags/python/"/>
</entry>
<entry>
<title>xml学习</title>
<link href="https://fsjz2020.github.io/2022/02/18/xml%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2022/02/18/xml%E5%AD%A6%E4%B9%A0/</id>
<published>2022-02-18T12:40:21.000Z</published>
<updated>2022-02-18T13:59:38.124Z</updated>
<content type="html"><![CDATA[<p><strong>xml:可扩展标记语言,用来传输和存储数据</strong></p><span id="more"></span><p>xml必须有一个根节点,名称随意,头声明可有可无(建议有),标签配对,大小写敏感</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta"><?xml version="1.0" encoding="utf-8"?></span></span><br><span class="line"><span class="tag"><<span class="name">root</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">user</span>></span>用户<span class="tag"></<span class="name">user</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">age</span>></span>18<span class="tag"></<span class="name">age</span>></span></span><br><span class="line"> <span class="comment"><!--注释--></span></span><br><span class="line"><span class="tag"></<span class="name">root</span>></span></span><br></pre></td></tr></table></figure><p><strong>转义字符</strong></p><div class="table-container"><table><thead><tr><th style="text-align:center">\<</th><th style="text-align:center"><</th><th>less than</th></tr></thead><tbody><tr><td style="text-align:center">\></td><td style="text-align:center">></td><td>greater than</td></tr><tr><td style="text-align:center">\&</td><td style="text-align:center">&</td><td>ampersand</td></tr><tr><td style="text-align:center">\'</td><td style="text-align:center">‘</td><td>apostrophe</td></tr><tr><td style="text-align:center">\"</td><td style="text-align:center">“</td><td>quotation mark</td></tr></tbody></table></div><p><strong>属性</strong></p><p>一个标签可以有多个属性,属性的值必须用引号括起来(单引号,双引号均可)</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">root</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">human</span> <span class="attr">age</span>=<span class="string">"18"</span>></span></span><br><span class="line"> man</span><br><span class="line"> <span class="tag"></<span class="name">human</span>></span></span><br><span class="line"><span class="tag"></<span class="name">root</span>></span></span><br></pre></td></tr></table></figure><p><strong>CDATA</strong></p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">root</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">test</span>></span><![CDATA[<>><<<>><<&''""""&]]><span class="tag"></<span class="name">test</span>></span></span><br><span class="line"><span class="tag"></<span class="name">root</span>></span></span><br></pre></td></tr></table></figure><p><img src="/2022/02/18/xml%E5%AD%A6%E4%B9%A0/image-20220218215729099.png" alt="image-20220218215729099"></p>]]></content>
<summary type="html"><p><strong>xml:可扩展标记语言,用来传输和存储数据</strong></p></summary>
<category term="xml" scheme="https://fsjz2020.github.io/tags/xml/"/>
</entry>
<entry>
<title>PyQt5学习</title>
<link href="https://fsjz2020.github.io/2022/02/10/PyQt5%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2022/02/10/PyQt5%E5%AD%A6%E4%B9%A0/</id>
<published>2022-02-10T05:57:07.000Z</published>
<updated>2022-09-17T06:20:07.765Z</updated>
<content type="html"><![CDATA[<p>.</p><span id="more"></span><p>QApplication是整个应用,QWidget是不同窗口,他们在PyQt5.QtWidgets下</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> QApplication,QWidget</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__==<span class="string">'__main__'</span>:</span><br><span class="line"> <span class="comment">#创建应用</span></span><br><span class="line"> app=QApplication(sys.argv)</span><br><span class="line"> <span class="comment">#创建窗口</span></span><br><span class="line"> w=QWidget()</span><br><span class="line"> <span class="comment">#窗口尺寸</span></span><br><span class="line"> w.resize(<span class="number">300</span>,<span class="number">150</span>)</span><br><span class="line"> <span class="comment">#窗口位置</span></span><br><span class="line"> w.move(<span class="number">300</span>,<span class="number">300</span>)</span><br><span class="line"> <span class="comment">#窗口图标</span></span><br><span class="line"> w.setWindowTitle(<span class="string">'桌面应用'</span>)</span><br><span class="line"> <span class="comment">#显示</span></span><br><span class="line"> w.show()</span><br><span class="line"> <span class="comment">#正常退出</span></span><br><span class="line"> sys.exit(app.exec_())</span><br></pre></td></tr></table></figure><p><strong>将ui文件转换为py文件</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pyuic5 -o demo.py demo.ui</span><br></pre></td></tr></table></figure><p><strong>通过ui生成的py文件生成窗口</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">import</span> Ui_demo2</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> QApplication,QMainWindow</span><br><span class="line"><span class="keyword">if</span> __name__==<span class="string">"__main__"</span>:</span><br><span class="line"> app=QApplication(sys.argv)</span><br><span class="line"> mainWindow=QMainWindow()</span><br><span class="line"> ui=Ui_demo2.Ui_MainWindow()</span><br><span class="line"> ui.setupUi(mainWindow)</span><br><span class="line"> mainWindow.show()</span><br><span class="line"> sys.exit(app.exec_())</span><br></pre></td></tr></table></figure><p><strong>热键</strong></p><p>在每个标签后使用格式如<code>(&A)</code>类的字符</p><p><strong>主窗口类型</strong></p><blockquote><p>QMainWindow:包含菜单栏、工具栏、状态栏和标题栏</p><p>QWidget:是对话窗口的基类。无菜单栏、工具栏、状态栏</p><p>QDialog:不确定具体用途</p></blockquote><p><strong>获取窗口宽度和高度以及位置</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> QHBoxLayout,QMainWindow,QApplication,QPushButton,QWidget</span><br><span class="line"><span class="keyword">from</span> matplotlib.widgets <span class="keyword">import</span> Widget</span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">onClick_button</span>():</span></span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"Onclick"</span>)</span><br><span class="line"> <span class="comment">#从窗口开始算</span></span><br><span class="line"> <span class="built_in">print</span>(widget.x())</span><br><span class="line"> <span class="built_in">print</span>(widget.y())<span class="comment">#不包含标题栏的位置</span></span><br><span class="line"> <span class="built_in">print</span>(widget.width())</span><br><span class="line"> <span class="built_in">print</span>(widget.height())</span><br><span class="line"> <span class="comment">#从工作区开始算</span></span><br><span class="line"> <span class="built_in">print</span>(widget.geometry().x())</span><br><span class="line"> <span class="built_in">print</span>(widget.geometry().y())</span><br><span class="line"> <span class="built_in">print</span>(widget.geometry().width())</span><br><span class="line"> <span class="built_in">print</span>(widget.geometry().height())</span><br><span class="line"></span><br><span class="line">app=QApplication(sys.argv)</span><br><span class="line">widget=QWidget()</span><br><span class="line">btn=QPushButton(widget)</span><br><span class="line">btn.setText(<span class="string">"按钮"</span>)</span><br><span class="line">btn.clicked.connect(onClick_button)</span><br><span class="line">btn.move(<span class="number">24</span>,<span class="number">52</span>)</span><br><span class="line">widget.resize(<span class="number">300</span>,<span class="number">240</span>)<span class="comment">#设置工作区的尺寸</span></span><br><span class="line">widget.move(<span class="number">250</span>,<span class="number">200</span>)</span><br><span class="line">widget.show()</span><br><span class="line">sys.exit(app.exec_())</span><br></pre></td></tr></table></figure><p><strong>LineEdit校验器</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtGui <span class="keyword">import</span> QIntValidator,QDoubleValidator,QRegExpValidator</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtCore <span class="keyword">import</span> QRegExp</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">QLineEditValidator</span>(<span class="params">QWidget</span>):</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self</span>):</span></span><br><span class="line"> <span class="built_in">super</span>().__init__()</span><br><span class="line"> self.initUI()</span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">initUI</span>(<span class="params">self</span>):</span></span><br><span class="line"> formLayout=QFormLayout()</span><br><span class="line"> self.setWindowTitle(<span class="string">"校验器"</span>)</span><br><span class="line"> intLineEdit=QLineEdit()</span><br><span class="line"> doubleLineEdit=QLineEdit()</span><br><span class="line"> validatorLineEdit=QLineEdit()</span><br><span class="line"> formLayout.addRow(<span class="string">'整数类型'</span>,intLineEdit)</span><br><span class="line"> formLayout.addRow(<span class="string">'浮点类型'</span>,doubleLineEdit)</span><br><span class="line"> formLayout.addRow(<span class="string">'正则表达式'</span>,validatorLineEdit)</span><br><span class="line"></span><br><span class="line"> intLineEdit.setPlaceholderText(<span class="string">"数字"</span>)</span><br><span class="line"> doubleLineEdit.setPlaceholderText(<span class="string">"浮点"</span>)</span><br><span class="line"> validatorLineEdit.setPlaceholderText(<span class="string">"字母数字"</span>)</span><br><span class="line"></span><br><span class="line"> intvalidator=QIntValidator(self)</span><br><span class="line"> intvalidator.setRange(<span class="number">1</span>,<span class="number">99</span>)</span><br><span class="line"></span><br><span class="line"> doublevalidator=QDoubleValidator(self)</span><br><span class="line"> doublevalidator.setRange(-<span class="number">360</span>,<span class="number">360</span>)</span><br><span class="line"> doublevalidator.setNotation(QDoubleValidator.StandardNotation)</span><br><span class="line"> doublevalidator.setDecimals(<span class="number">2</span>)</span><br><span class="line"></span><br><span class="line"> reg=QRegExp(<span class="string">'[a-zA-Z0-9]+$'</span>)</span><br><span class="line"> validator=QRegExpValidator(self)</span><br><span class="line"> validator.setRegExp(reg)</span><br><span class="line"></span><br><span class="line"> intLineEdit.setValidator(intvalidator)</span><br><span class="line"> doubleLineEdit.setValidator(doublevalidator)</span><br><span class="line"> validatorLineEdit.setValidator(validator)</span><br><span class="line"></span><br><span class="line"> self.setLayout(formLayout)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">"__main__"</span>:</span><br><span class="line"> app = QApplication(sys.argv)</span><br><span class="line"> main=QLineEditValidator()</span><br><span class="line"> main.show()</span><br><span class="line"> sys.exit(app.exec_())</span><br></pre></td></tr></table></figure><p><strong>使用掩码限制输入</strong></p><p><img src="/2022/02/10/PyQt5%E5%AD%A6%E4%B9%A0/image-20220212094924849-16446305676461.png" alt="image-20220212094924849"></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">QLineEditMask</span>(<span class="params">QWidget</span>):</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self</span>):</span></span><br><span class="line"> <span class="built_in">super</span>().__init__()</span><br><span class="line"> self.initUI()</span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">initUI</span>(<span class="params">self</span>):</span></span><br><span class="line"> formLayout=QFormLayout()</span><br><span class="line"> self.setWindowTitle(<span class="string">"掩码限制输入"</span>)</span><br><span class="line"></span><br><span class="line"> ipLineEdit=QLineEdit()</span><br><span class="line"> macLineEdit=QLineEdit()</span><br><span class="line"> dateLineEdit=QLineEdit()</span><br><span class="line"> licenceLineEdit=QLineEdit()</span><br><span class="line"></span><br><span class="line"> ipLineEdit.setInputMask(<span class="string">'000.000.000.000;_'</span>)</span><br><span class="line"> macLineEdit.setInputMask(<span class="string">'HH:HH:HH:HH:HH:HH;_'</span>)</span><br><span class="line"> dateLineEdit.setInputMask(<span class="string">'0000-00-00 00:00:00'</span>)</span><br><span class="line"> licenceLineEdit.setInputMask(<span class="string">'>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#'</span>)</span><br><span class="line"></span><br><span class="line"> formLayout.addRow(<span class="string">'数字掩码'</span>,ipLineEdit)</span><br><span class="line"> formLayout.addRow(<span class="string">'Mac掩码'</span>,macLineEdit)</span><br><span class="line"> formLayout.addRow(<span class="string">'日期掩码'</span>,dateLineEdit)</span><br><span class="line"> formLayout.addRow(<span class="string">'许可证掩码'</span>,licenceLineEdit)</span><br><span class="line"></span><br><span class="line"> self.setLayout(formLayout)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">"__main__"</span>:</span><br><span class="line"> app= QApplication(sys.argv)</span><br><span class="line"> main=QLineEditMask()</span><br><span class="line"> main.show()</span><br><span class="line"> sys.exit(app.exec_())</span><br></pre></td></tr></table></figure><p><img src="/2022/02/10/PyQt5%E5%AD%A6%E4%B9%A0/image-20220212095938686.png" alt="image-20220212095938686"></p><p><strong>下拉选择控件(大字体)</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtGui <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtCore <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ComBoxDemo</span>(<span class="params">QWidget</span>):</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self</span>):</span></span><br><span class="line"> <span class="built_in">super</span>().__init__()</span><br><span class="line"> self.initUI()</span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">initUI</span>(<span class="params">self</span>):</span></span><br><span class="line"> layout=QVBoxLayout()</span><br><span class="line"> self.label=QLabel(<span class="string">"请选择编程语言"</span>)</span><br><span class="line"> self.label.setFont(QFont(<span class="string">'黑体'</span>, <span class="number">100</span>))</span><br><span class="line"> self.label.setAlignment(Qt.AlignCenter)</span><br><span class="line"> self.combox=QComboBox()</span><br><span class="line"> self.combox.setFont(QFont(<span class="string">'黑体'</span>,<span class="number">50</span>))</span><br><span class="line"> self.combox.addItem(<span class="string">"C++"</span>)</span><br><span class="line"> self.combox.addItem(<span class="string">"Python"</span>)</span><br><span class="line"> self.combox.addItems([<span class="string">"Java"</span>,<span class="string">"C#"</span>,<span class="string">"JavaScript"</span>])</span><br><span class="line"> self.combox.currentIndexChanged.connect(self.selectChange)</span><br><span class="line"> layout.addWidget(self.label)</span><br><span class="line"> layout.addWidget(self.combox)</span><br><span class="line"> self.setLayout(layout)</span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">selectChange</span>(<span class="params">self,i</span>):</span></span><br><span class="line"> self.label.setText(self.combox.currentText())</span><br><span class="line"> self.label.adjustSize()</span><br><span class="line"> <span class="keyword">for</span> count <span class="keyword">in</span> <span class="built_in">range</span>(self.combox.count()):</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">'items'</span>+<span class="built_in">str</span>(count)+<span class="string">'='</span>+self.combox.itemText(count))</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">'current index'</span>,i)</span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">"__main__"</span>:</span><br><span class="line"> app = QApplication(sys.argv)</span><br><span class="line"> main = ComBoxDemo()</span><br><span class="line"> main.show()</span><br><span class="line"> sys.exit(app.exec_())</span><br></pre></td></tr></table></figure><p><img src="/2022/02/10/PyQt5%E5%AD%A6%E4%B9%A0/image-20220212175729721.png" alt="image-20220212175729721"></p><p><strong>滑动条控件</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtGui <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtCore <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">SliderDemo</span>(<span class="params">QDialog</span>):</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self</span>):</span></span><br><span class="line"> <span class="built_in">super</span>().__init__()</span><br><span class="line"> self.initUI()</span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">initUI</span>(<span class="params">self</span>):</span></span><br><span class="line"> </span><br><span class="line"> layout=QVBoxLayout()</span><br><span class="line"> self.label = QLabel(<span class="string">'你好'</span>)</span><br><span class="line"> self.label.setAlignment(Qt.AlignCenter)</span><br><span class="line"> self.slider=QSlider(Qt.Horizontal)</span><br><span class="line"> self.slider.setMinimum(<span class="number">12</span>)</span><br><span class="line"> self.slider.setMaximum(<span class="number">400</span>)</span><br><span class="line"> self.slider.setTickPosition(QSlider.TicksBelow)</span><br><span class="line"> self.slider.setTickInterval(<span class="number">6</span>)</span><br><span class="line"> layout.addWidget(self.label)</span><br><span class="line"> layout.addWidget(self.slider)</span><br><span class="line"> self.slider.valueChanged.connect(self.getvalue)</span><br><span class="line"> self.setLayout(layout)</span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">getvalue</span>(<span class="params">self</span>):</span></span><br><span class="line"> self.label.setFont(QFont(<span class="string">'黑体'</span>, self.slider.value()))</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">"__main__"</span>:</span><br><span class="line"> app = QApplication(sys.argv)</span><br><span class="line"> main = SliderDemo()</span><br><span class="line"> main.show()</span><br><span class="line"> sys.exit(app.exec_())</span><br><span class="line"></span><br></pre></td></tr></table></figure><p><img src="/2022/02/10/PyQt5%E5%AD%A6%E4%B9%A0/image-20220212213448429.png" alt="image-20220212213448429"></p><p><strong>自定义信号槽</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> signal <span class="keyword">import</span> signal</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtCore <span class="keyword">import</span> *</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">MyTypeSignal</span>(<span class="params">QObject</span>):</span></span><br><span class="line"> signal=pyqtSignal(<span class="built_in">str</span>)</span><br><span class="line"> signal2=pyqtSignal([<span class="built_in">int</span>,<span class="built_in">str</span>],[<span class="built_in">str</span>])<span class="comment">#信号重载,输入参数可以是一个整型一个字符串,也可是一个zheng'x</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">run</span>(<span class="params">self</span>):</span></span><br><span class="line"> self.signal.emit(<span class="string">"test"</span>)</span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">run1</span>(<span class="params">self</span>):</span></span><br><span class="line"> self.signal2.emit(<span class="number">1</span>,<span class="string">'test'</span>)</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">MySlot</span>(<span class="params">QObject</span>):</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">get</span>(<span class="params">self,msg</span>):</span></span><br><span class="line"> <span class="built_in">print</span>(msg)</span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">get1</span>(<span class="params">self,msg,msg2</span>):</span></span><br><span class="line"> <span class="built_in">print</span>(msg)</span><br><span class="line"> <span class="built_in">print</span>(msg2)</span><br><span class="line"><span class="keyword">if</span> __name__==<span class="string">"__main__"</span>:</span><br><span class="line"> signal=MyTypeSignal()</span><br><span class="line"> slot=MySlot()</span><br><span class="line"> signal.signal.connect(slot.get)</span><br><span class="line"> signal.signal2.connect(slot.get1)</span><br><span class="line"> signal.run()</span><br><span class="line"> signal.run1()</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>.</p></summary>
<category term="python" scheme="https://fsjz2020.github.io/tags/python/"/>
<category term="PyQt" scheme="https://fsjz2020.github.io/tags/PyQt/"/>
</entry>
<entry>
<title>Lua笔记</title>
<link href="https://fsjz2020.github.io/2022/02/02/Lua%E7%AC%94%E8%AE%B0/"/>
<id>https://fsjz2020.github.io/2022/02/02/Lua%E7%AC%94%E8%AE%B0/</id>
<published>2022-02-02T14:24:17.000Z</published>
<updated>2022-02-08T12:06:08.927Z</updated>
<content type="html"><![CDATA[<p>.</p><span id="more"></span><h1 id="基础知识"><a href="#基础知识" class="headerlink" title="基础知识"></a>基础知识</h1><p>使用-i可以让Lua在执行完指定的程序后进入交互模式</p><p>调用函数可以用dofile,如在交互模式下,使用dofile(“test.lua”),可以将test.lua中的函数加载到当前环境中</p><p>注释用<code>--</code></p><p>多行注释:</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">--[[多行</span></span><br><span class="line"><span class="comment">长注释</span></span><br><span class="line"><span class="comment">]]</span></span><br></pre></td></tr></table></figure><p>常用方法(不执行语句)</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">--[[</span></span><br><span class="line"><span class="comment">print(10)</span></span><br><span class="line"><span class="comment">--]]</span></span><br></pre></td></tr></table></figure><p>当想要执行时</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">---[[</span></span><br><span class="line"><span class="built_in">print</span>(<span class="number">10</span>)</span><br><span class="line"><span class="comment">--]]</span></span><br></pre></td></tr></table></figure><h2 id="全局变量"><a href="#全局变量" class="headerlink" title="全局变量"></a>全局变量</h2><p>变量未赋值默认为<code>nil</code>,Lua不区分赋值为nil的变量和未初始化变量</p><h2 id="类型和值"><a href="#类型和值" class="headerlink" title="类型和值"></a>类型和值</h2><p>Lua有8种基本类型</p><ol><li>nil(空)</li><li>boolean(布尔)</li><li>number(数值)</li><li>string(字符串)</li><li>userdata(用户数据)</li><li>function(函数)</li><li>thread(线程)</li><li>table(表)</li></ol><p>使用type()可以获取值对应的类型</p><h3 id="Boolean"><a href="#Boolean" class="headerlink" title="Boolean"></a>Boolean</h3><p>Lua语言将<strong>false</strong>和<strong>nil</strong>视作假,其他视为真</p><h3 id="逻辑操作"><a href="#逻辑操作" class="headerlink" title="逻辑操作"></a>逻辑操作</h3><p><strong>and</strong></p><p>如果第一个操作数为假,返回第一个操作数,否则返回第二个</p><p><strong>or</strong></p><p>如果第一个操作数不为假,返回第一个,否则返回第二个</p><p><strong>not</strong>永远返回Boolean类型的值</p><h2 id="解释器"><a href="#解释器" class="headerlink" title="解释器"></a>解释器</h2><p><strong>参数</strong></p><p><code>-e</code>直接在命令行输入代码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lua -e <span class="string">"print(10)"</span></span><br></pre></td></tr></table></figure><h1 id="数值"><a href="#数值" class="headerlink" title="数值"></a>数值</h1><p>Lua5.2及之前的版本数值均以双精度浮点格式表示</p><p>Lua5.3可以采用64位int或双精度浮点类型</p><p><code>type(3)</code>和<code>type(3.0)</code>都是number</p><p>可以用<code>math.type(3)</code>和<code>math.type(3.0)</code>区分整型与浮点型</p><p>整除法<strong><code>//</code></strong>恒向负无穷取整</p><h2 id="关系运算"><a href="#关系运算" class="headerlink" title="关系运算"></a>关系运算</h2><p><code><</code> <code>></code> <code><=</code> <code>>=</code> <code>==</code> <code>~=</code></p><h2 id="数学库"><a href="#数学库" class="headerlink" title="数学库"></a>数学库</h2><p>包含三角函数,指数函数,取整函数,最大和最小函数,随机数,pi以及huge,所有三角函数均以弧度为单位</p><h3 id="math-random"><a href="#math-random" class="headerlink" title="math.random"></a>math.random</h3><p>不带参数返回<strong>[0,1)</strong>内的均匀分布,带1个参数m,返回<strong>[1,m]</strong>的伪随机整数,两个参数l和m返回<strong>[l,m]</strong>的伪随机整数。</p><h4 id="math-randomseed"><a href="#math-randomseed" class="headerlink" title="math.randomseed()"></a>math.randomseed()</h4><p>用于设置伪随机数发生器的种子</p><h3 id="取整"><a href="#取整" class="headerlink" title="取整"></a>取整</h3><p><strong>floor</strong>(向下取整)<strong>ceil</strong>(向上取整)<strong>modf</strong>(向零取整)</p><p>可以用浮点值与零进行按位或运算,将浮点值强制转换为整型值</p><p><img src="/2022/02/02/Lua%E7%AC%94%E8%AE%B0/image-20220203154955309.png" alt="image-20220203154955309"></p><p>或用<strong>math.tointeger()</strong>,当参数含有小数或超出2^53时返回nil</p><h1 id="字符串"><a href="#字符串" class="headerlink" title="字符串"></a>字符串</h1><p>与python相同,字符串是不可变量,可以用#获取字符串的长度,可以用<code>..</code>拼接字符串,可以用单引号或双引号创建字符串,与python相同</p><p><strong>三种方式</strong></p><p><img src="/2022/02/02/Lua%E7%AC%94%E8%AE%B0/image-20220203172336366.png" alt="image-20220203172336366"></p><p><code>\ddd</code>或<code>\xhh</code>或<code>\u{h...h}</code></p><p>多行字符</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">page=<span class="string">[[</span></span><br><span class="line"><span class="string">1</span></span><br><span class="line"><span class="string">2</span></span><br><span class="line"><span class="string">3</span></span><br><span class="line"><span class="string">4</span></span><br><span class="line"><span class="string">]]</span></span><br><span class="line"><span class="comment">--或</span></span><br><span class="line"><span class="comment">--两个中括号间等号数量相同</span></span><br><span class="line">page=<span class="string">[====[</span></span><br><span class="line"><span class="string">1</span></span><br><span class="line"><span class="string">2</span></span><br><span class="line"><span class="string">3</span></span><br><span class="line"><span class="string">4</span></span><br><span class="line"><span class="string">]====]</span></span><br></pre></td></tr></table></figure><p>\z跳过所有空白字符</p><h2 id="类型转换"><a href="#类型转换" class="headerlink" title="类型转换"></a>类型转换</h2><p><strong>tonumber()</strong>将字符串转换为数值</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">tonumber</span>(<span class="string">"100101"</span>,<span class="number">2</span>)<span class="comment">--可以使用2到36指明任意进制</span></span><br></pre></td></tr></table></figure><p><strong>tostring()</strong>将数值转换为字符串</p><h2 id="字符库方法"><a href="#字符库方法" class="headerlink" title="字符库方法"></a>字符库方法</h2><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">string</span>.<span class="built_in">rep</span>(s,n)</span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">len</span>(s)</span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">upper</span>(s)</span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">lower</span>(s)</span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">reverse</span>(s)</span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">sub</span>(s,i,j)<span class="comment">--索引字符串中从i到j的字符,包括第i个和第j个,下标从1开始,最后一个为-1,=</span></span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">char</span>(<span class="number">97</span>)</span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">byte</span>(<span class="string">"abc"</span>)<span class="comment">--返回第一个字符的数值表示</span></span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">byte</span>(<span class="string">"abc"</span>,i)<span class="comment">--返回第i个字符的数值表示</span></span><br><span class="line"><span class="built_in">string</span>.<span class="built_in">byte</span>(<span class="string">"abc"</span>,i,j)<span class="comment">--返回第i到j个字符的数值表示</span></span><br></pre></td></tr></table></figure><p><strong>格式化字符串</strong></p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">string</span>.<span class="built_in">format</span>(<span class="string">"%x"</span>,a)<span class="comment">--格式与c语言printf类似,x代表十六进制整数</span></span><br></pre></td></tr></table></figure><p>设<strong>s</strong>是一个字符串,可以用s:sub(i,j)来代替string.sub(s,i,j)</p><p><strong>string.find(“hello world”,”wor”)</strong>寻找子串</p><p><strong>string.gsub(“hello world”,”l”,”.”)</strong>替换子串</p><p><strong>utf8.char()</strong>和<strong>utf8.codepoint()</strong>等价于<strong>string.char()</strong>和<strong>string.byte()</strong></p><p><strong>utf8.codepoint()</strong>中的位置采用的是字节索引,可以用<strong>utf8.offset()</strong>获取字符在字符串中的索引</p><p><strong>utf8.codes()</strong></p><h1 id="表"><a href="#表" class="headerlink" title="表"></a>表</h1><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">a={}</span><br><span class="line">a[<span class="string">"x"</span>]=<span class="number">10</span></span><br><span class="line">a=<span class="literal">nil</span></span><br><span class="line">a.x==a[<span class="string">"x"</span>] <span class="comment">--True</span></span><br></pre></td></tr></table></figure><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">days={<span class="string">"Sunday"</span>,<span class="string">"Monday"</span>,<span class="string">"Tuesday"</span>,<span class="string">"Wednesday"</span>,<span class="string">"Thursday"</span>,<span class="string">"Friday"</span>,<span class="string">"Saturday"</span>}</span><br><span class="line"><span class="built_in">print</span>(day[<span class="number">4</span>]) <span class="comment">--Wednesday</span></span><br><span class="line">a={x=<span class="number">10</span>,y=<span class="number">20</span>}</span><br><span class="line"><span class="comment">--等价于</span></span><br><span class="line">a={};a.x=<span class="number">10</span>;a.y=<span class="number">20</span></span><br></pre></td></tr></table></figure><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">{x=<span class="number">0</span>,y=<span class="number">0</span>}<span class="comment">--{["x"]=0,["y"]=0}</span></span><br></pre></td></tr></table></figure><p>可以使用#获取序列(索引为{1,n}形成的表,值为nil的键实际不在表中)的长度</p><p>可以用<strong>pairs()</strong>遍历表中的元素,不过出现的键值对随机</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">> <span class="keyword">for</span> k,v <span class="keyword">in</span> <span class="built_in">pairs</span>(<span class="built_in">arg</span>) <span class="keyword">do</span></span><br><span class="line">>> <span class="built_in">print</span>(k,v)</span><br><span class="line">>> <span class="keyword">end</span></span><br><span class="line"><span class="number">0</span> lua</span><br></pre></td></tr></table></figure><p>对于列表,可以用<strong>ipairs()</strong></p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">> <span class="keyword">for</span> u,v <span class="keyword">in</span> <span class="built_in">ipairs</span>(t) <span class="keyword">do</span></span><br><span class="line">>> <span class="built_in">print</span>(u,v)</span><br><span class="line">>> <span class="keyword">end</span></span><br><span class="line"><span class="number">1</span> <span class="number">10</span></span><br><span class="line"><span class="number">2</span> <span class="function"><span class="keyword">function</span>: 0000000065<span class="title">b9cff0</span></span></span><br><span class="line"><span class="function">3 12</span></span><br><span class="line"><span class="function">4 <span class="title">hi</span></span></span><br></pre></td></tr></table></figure><p>遍历一定是按照顺序进行的</p><h2 id="表标准库"><a href="#表标准库" class="headerlink" title="表标准库"></a>表标准库</h2><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">table</span>.<span class="built_in">insert</span>(t,<span class="number">1</span>,x)<span class="comment">--在列表第一个位置插入x</span></span><br><span class="line"><span class="built_in">table</span>.<span class="built_in">insert</span>(t,x)<span class="comment">--在列表最后插入x</span></span><br><span class="line"><span class="built_in">table</span>.<span class="built_in">remove</span>(t)<span class="comment">--删除列表最后一个元素</span></span><br><span class="line"><span class="built_in">table</span>.<span class="built_in">remove</span>(t,x)<span class="comment">--删除列表第x个元素</span></span><br><span class="line"><span class="built_in">table</span>.move(a,f,e,t)<span class="comment">--将a表中从f到e的元素移动到t位置上</span></span><br><span class="line"><span class="built_in">table</span>.move(a,f,e,t,b)<span class="comment">--将上述元素移动到b表中</span></span><br></pre></td></tr></table></figure><h1 id="函数"><a href="#函数" class="headerlink" title="函数"></a>函数</h1><p>当函数参数只有一个且为字符串或表构造器时,括号可选</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">print</span><span class="string">"HelloWorld"</span></span><br><span class="line"><span class="built_in">type</span>{}</span><br></pre></td></tr></table></figure><p>当输入参数不够时,其他的参数被赋值为nil,当输入的参数过多时,多余的参数被丢弃</p><p>当一个函数作为表达式的最后一个参数时才会返回所有的返回值,否则只会返回第一个值,如</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">foo</span><span class="params">()</span></span></span><br><span class="line"> <span class="keyword">return</span> <span class="string">"a"</span>,<span class="string">"b"</span></span><br><span class="line"><span class="keyword">end</span></span><br><span class="line">x,y,z=foo(),<span class="number">20</span></span><br><span class="line"><span class="built_in">print</span>(x,y,z)</span><br><span class="line">a <span class="number">20</span> <span class="literal">nil</span></span><br></pre></td></tr></table></figure><p>将函数调用用一个圆括号括起来可以强制只返回一个结果</p><p>用<code>...</code>表示可变长度参数</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">sum</span><span class="params">(...)</span></span></span><br><span class="line"> <span class="keyword">local</span> s=<span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> _,v <span class="keyword">in</span> <span class="built_in">ipairs</span>{...} <span class="keyword">do</span></span><br><span class="line"> s=s+v</span><br><span class="line"> <span class="keyword">end</span></span><br><span class="line"> <span class="keyword">return</span> s</span><br><span class="line"><span class="keyword">end</span></span><br><span class="line"><span class="built_in">print</span>(sum(<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>,<span class="number">6</span>,<span class="number">7</span>,<span class="number">8</span>,<span class="number">9</span>))</span><br><span class="line"><span class="number">42</span></span><br></pre></td></tr></table></figure><p>此外,还可用<code>table.pack(...)</code>返回一个表,这个表中保存了参数n</p><p>还可用<code>select</code>,select返回selector后的所有参数,当selector为#号时,返回额外参数的总数</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">print</span>(<span class="built_in">select</span>(<span class="number">1</span>,<span class="string">"a"</span>,<span class="string">"b"</span>,<span class="string">"c"</span>)) <span class="comment">--a b c</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">select</span>(<span class="number">2</span>,<span class="string">"a"</span>,<span class="string">"b"</span>,<span class="string">"c"</span>)) <span class="comment">--b c</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">select</span>(<span class="string">"#"</span>,<span class="string">"a"</span>,<span class="string">"b"</span>,<span class="string">"c"</span>)) <span class="comment">--3</span></span><br></pre></td></tr></table></figure><p>还有一个函数为<code>table.unpack()</code>与table.pack()相反,其参数时一个数组,返回数组中的所有元素</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">table</span>.<span class="built_in">unpack</span>({<span class="string">"sun"</span>,<span class="string">"mon"</span>,<span class="string">"tue"</span>,<span class="string">"wed"</span>},<span class="number">2</span>,<span class="number">3</span>) <span class="comment">--mon tue</span></span><br></pre></td></tr></table></figure><h2 id="尾调用"><a href="#尾调用" class="headerlink" title="尾调用"></a>尾调用</h2><p>尾调用是指在一个函数的结尾递归调用一个函数,此后不进行任何操作,称为尾调用</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">test</span><span class="params">()</span></span></span><br><span class="line"> <span class="keyword">return</span> g(x)</span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><p>好处是无论递归多少层,栈都不会溢出</p><h1 id="输入输出"><a href="#输入输出" class="headerlink" title="输入输出"></a>输入输出</h1><p><code>io.write()</code>可以读取任意数量的字符串并将其写入到当前输入流,可以有多个参数,应避免使用<code>io.write(a..b..c)</code>,而是使用<code>io.write(a,b,c)</code></p><p><code>io.read()</code></p><div class="table-container"><table><thead><tr><th style="text-align:center">参数</th><th style="text-align:center">作用</th></tr></thead><tbody><tr><td style="text-align:center">“a”</td><td style="text-align:center">读取整个文件</td></tr><tr><td style="text-align:center">“l”</td><td style="text-align:center">读取下一行(丢弃换行符)</td></tr><tr><td style="text-align:center">“L”</td><td style="text-align:center">读取下一行(保留换行符)</td></tr><tr><td style="text-align:center">“n”</td><td style="text-align:center">读取一个数值</td></tr><tr><td style="text-align:center">num</td><td style="text-align:center">以字符串读取num个字符</td></tr></tbody></table></div><p><code>io.read(0)</code>是一个特例,用于测试是否到达了末尾,如果没有到达末尾,返回空字符串,若到达了末尾,返回nil</p><p><code>io.open()</code>打开文件,与C语言相同,r只读,w只写,a附加</p><p>可以用<code>io.input()</code>和<code>io.output()</code>设置输入流和输出流</p><h2 id="打开文件"><a href="#打开文件" class="headerlink" title="打开文件"></a>打开文件</h2><p>可以使用<code>io.open()</code>打开文件,有两个参数,一个参数是打开的文件的名称,另一个是模式,r,w,a,b,若打开错误返回nil和错误码</p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">local</span> f=<span class="built_in">assert</span>(<span class="built_in">io</span>.<span class="built_in">open</span>(filename,<span class="string">"r"</span>))</span><br><span class="line"><span class="keyword">local</span> t=f:<span class="built_in">read</span>(<span class="string">"a"</span>)</span><br><span class="line">f:<span class="built_in">close</span>()</span><br></pre></td></tr></table></figure><p><code>io.popen("command","mode")</code>这个函数有两个参数,第一个为在命令行所执行的指令,第二个为模式,可以为r(读取)或w(写入)</p><h1 id="其他知识"><a href="#其他知识" class="headerlink" title="其他知识"></a>其他知识</h1><p>lua变量默认是全局变量,局部变量使用前必须用<strong><code>local</code></strong>声明,在交互模式下每行代码就是个代码段,所以要想连续输入多行代码,可以将其放入<code>do...end</code>中</p><h2 id="控制结构"><a href="#控制结构" class="headerlink" title="控制结构"></a>控制结构</h2><p><strong><code>if...then...else...end</code></strong></p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> a<<span class="number">0</span> <span class="keyword">then</span></span><br><span class="line"> a=<span class="number">0</span></span><br><span class="line"><span class="keyword">end</span></span><br><span class="line"><span class="keyword">if</span> a<b <span class="keyword">then</span></span><br><span class="line"> <span class="keyword">return</span> a</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"> <span class="keyword">return</span> b</span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><p><strong><code>if...then...elseif...then...else...end</code></strong></p><p><strong><code>while</code></strong></p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">local</span> i=<span class="number">1</span></span><br><span class="line"><span class="keyword">while</span> a[i] <span class="keyword">do</span></span><br><span class="line"> <span class="built_in">print</span>(a[i])</span><br><span class="line"> i=i+<span class="number">1</span></span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><p><strong><code>repeat...until...</code></strong></p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">local</span> line</span><br><span class="line"><span class="keyword">repeat</span></span><br><span class="line"> line=<span class="built_in">io</span>.<span class="built_in">read</span>()</span><br><span class="line"><span class="keyword">until</span> line~=<span class="string">""</span></span><br><span class="line"><span class="built_in">print</span>(line)</span><br></pre></td></tr></table></figure><p>循环内声明的变量作用域包括until后面</p><p><strong><code>for</code></strong></p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> var=exp1,exp2,exp3 <span class="keyword">do</span></span><br><span class="line"> something</span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><p>初始exp1,结束exp2,步长exp3[可选],默认步长为1,若不想设置上限可以使用常量<strong><code>math.huge</code></strong></p><p><strong><code>goto</code></strong></p><p>标签格式为:<strong><code>::label::</code></strong></p><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">a=<span class="number">1</span></span><br><span class="line"><span class="keyword">goto</span> test</span><br><span class="line">a=<span class="number">2</span></span><br><span class="line">::test::</span><br><span class="line"><span class="built_in">print</span>(a)</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>.</p></summary>
<category term="Lua" scheme="https://fsjz2020.github.io/tags/Lua/"/>
</entry>
<entry>
<title>python句法</title>
<link href="https://fsjz2020.github.io/2022/01/28/python%E5%8F%A5%E6%B3%95/"/>
<id>https://fsjz2020.github.io/2022/01/28/python%E5%8F%A5%E6%B3%95/</id>
<published>2022-01-28T14:58:20.000Z</published>
<updated>2022-01-30T15:25:10.072Z</updated>
<content type="html"><![CDATA[<p><strong>python句法分析</strong><a href="https://docs.python.org/zh-cn/3.9/reference/index.html">来源:python官方reference</a></p><span id="more"></span><h1 id="行结构"><a href="#行结构" class="headerlink" title="行结构"></a>行结构</h1><h2 id="编码声明"><a href="#编码声明" class="headerlink" title="编码声明"></a>编码声明</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">coding[=:]\s*([-\w.]+)</span><br></pre></td></tr></table></figure><h1 id="数据模型"><a href="#数据模型" class="headerlink" title="数据模型"></a>数据模型</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">graph TB</span><br><span class="line">A[对象]-->B[编号]</span><br><span class="line">A[对象]-->C[类型]</span><br><span class="line">A[对象]-->D[值]</span><br></pre></td></tr></table></figure><p><img src="/2022/01/28/python%E5%8F%A5%E6%B3%95/image-20220129191159535.png" alt="image-20220129191159535"></p><p>可以用<strong>id()</strong>显示编号的地址</p><h2 id="序列"><a href="#序列" class="headerlink" title="序列"></a>序列</h2><p>列表可用<code>list1[0:10:2]</code>选中位置为偶数的元素</p><h2 id="用户自定义函数"><a href="#用户自定义函数" class="headerlink" title="用户自定义函数"></a>用户自定义函数</h2><div class="table-container"><table><thead><tr><th style="text-align:center">属性</th><th style="text-align:center">意义</th></tr></thead><tbody><tr><td style="text-align:center">__doc__</td><td style="text-align:center">函数文档,没有为None</td></tr><tr><td style="text-align:center">__name__</td><td style="text-align:center">函数名称</td></tr><tr><td style="text-align:center">__module__</td><td style="text-align:center">函数所属模块的名称</td></tr><tr><td style="text-align:center">__globals__</td><td style="text-align:center">存放该函数的模块的全局命名空间</td></tr><tr><td style="text-align:center">__annotations__</td><td style="text-align:center">包含参数标注的字典</td></tr><tr><td style="text-align:center">__kwdefaults__</td><td style="text-align:center">只包含关键字参数默认值的字典</td></tr></tbody></table></div>]]></content>
<summary type="html"><p><strong>python句法分析</strong><a href="https://docs.python.org/zh-cn/3.9/reference/index.html">来源:python官方reference</a></p></summary>
<category term="python" scheme="https://fsjz2020.github.io/tags/python/"/>
</entry>
<entry>
<title>Python笔记</title>
<link href="https://fsjz2020.github.io/2022/01/16/Python%E7%AC%94%E8%AE%B0/"/>
<id>https://fsjz2020.github.io/2022/01/16/Python%E7%AC%94%E8%AE%B0/</id>
<published>2022-01-16T07:27:41.000Z</published>
<updated>2022-01-28T03:29:17.915Z</updated>
<content type="html"><![CDATA[<p>.</p><span id="more"></span><h1 id="函数参数传递"><a href="#函数参数传递" class="headerlink" title="函数参数传递"></a>函数参数传递</h1><p>Python函数参数可以包含一个<code>*name</code>和一个<code>**name</code>,其中<code>*name</code>可以接收多余的位置参数,并写到一个<strong>元组</strong>里,<code>**name</code>可以接收一个字典,在写程序时<code>*name</code>必须写在<code>**name</code>前</p><h2 id="特殊参数"><a href="#特殊参数" class="headerlink" title="特殊参数"></a>特殊参数</h2><p><img src="/2022/01/16/Python%E7%AC%94%E8%AE%B0/image-20220116154226837.png" alt="image-20220116154226837"></p><p><strong>/</strong>前的参数为仅限位置参数,<strong>*</strong>后的参数为仅限关键字参数</p><h2 id="解包参数列表"><a href="#解包参数列表" class="headerlink" title="解包参数列表"></a>解包参数列表</h2><p><strong>*</strong>解包列表,<strong>**</strong>解包字典</p><h2 id="Lambda"><a href="#Lambda" class="headerlink" title="Lambda"></a>Lambda</h2><p>语法</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">lambda</span> argument_list:expresion</span><br></pre></td></tr></table></figure><h1 id="数据结构"><a href="#数据结构" class="headerlink" title="数据结构"></a>数据结构</h1><h2 id="列表"><a href="#列表" class="headerlink" title="列表"></a>列表</h2><p>list.<strong>append</strong>(x)</p><p> 在列表的末尾添加一个元素</p><p>list.<strong>extend</strong>(iterable)</p><p> 使用可迭代对象(如字符,列表)等扩展列表</p><p>list.<strong>insert</strong>(i,x)</p><p> 在i位置处插入一个元素x</p><p>list.<strong>remove</strong>(x)</p><p> 移除列表中第一个值为x的值</p><p>list.<strong>pop</strong>([i])</p><p> 删除列表中给定位置的元素并返回它</p><p>list.<strong>clear</strong>()</p><p> 删除列表中的所有元素</p><p>list.<strong>index</strong>(x[,start[,end]])</p><p> 返回列表中第一个值为x的从零开始的索引,start和end将搜索限制为列表的特定的子序列,最终返回的值还是相对于整个序列开始计算的。</p><p>list.<strong>count</strong>(x)</p><p> 返回元素x在列表中出现的次数</p><p>list.<strong>sort</strong>(*,key=None,reverse=False)</p><p> 对列表中的元素进行排序</p><p>list.<strong>reverse</strong>()</p><p> 反转列表中的元素</p><p>list.<strong>copy</strong>()</p><p> 返回列表中的浅拷贝</p><blockquote><p><strong>zip</strong>()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。</p><p>如list(zip([1,2,3],[4,5,6],[7,8,9]))返回[(1,4,7),(2,5,8),(3,6,9)]</p></blockquote><h2 id="元组"><a href="#元组" class="headerlink" title="元组"></a>元组</h2><p>一个元组由几个被逗号隔开的值组成,例如</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">t=<span class="number">12345</span>,<span class="number">54321</span>,<span class="string">'hello'</span></span><br><span class="line">u=t,(<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>)</span><br></pre></td></tr></table></figure><p>如果想创建0个元素或1个元素的元组,可以通过以下代码实现</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">empty=()<span class="comment">#创建0个元素的元组</span></span><br><span class="line">singleton=<span class="string">'hello'</span>,<span class="comment">#创建1个元素的元组</span></span><br></pre></td></tr></table></figure><p><strong>注意:</strong>不能通过圆括号包围一个元素来建立只有一个元素的元组</p><hr><blockquote><p>一些花里胡哨的操作</p><p>t=1,2,3</p><p>x,y,z=t</p></blockquote><h2 id="集合"><a href="#集合" class="headerlink" title="集合"></a>集合</h2><p>集合是由不重复元素组成的无序的集,可以通过花括号或set()创建集合,要创建空集合只能通过set()</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>test={<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>,<span class="number">4</span>,<span class="number">4</span>,<span class="number">3</span>,<span class="number">2</span>,<span class="number">1</span>}</span><br><span class="line"><span class="meta">>>> </span>test</span><br><span class="line">{<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>}</span><br><span class="line"><span class="meta">>>> </span><span class="number">1</span> <span class="keyword">in</span> test</span><br><span class="line"><span class="literal">True</span></span><br><span class="line"><span class="meta">>>> </span>a = <span class="built_in">set</span>(<span class="string">'abracadabra'</span>)</span><br><span class="line"><span class="meta">>>> </span>b = <span class="built_in">set</span>(<span class="string">'alacazam'</span>)</span><br><span class="line"><span class="meta">>>> </span>a</span><br><span class="line">{<span class="string">'a'</span>, <span class="string">'r'</span>, <span class="string">'c'</span>, <span class="string">'b'</span>, <span class="string">'d'</span>}</span><br><span class="line"><span class="meta">>>> </span>b</span><br><span class="line">{<span class="string">'a'</span>, <span class="string">'m'</span>, <span class="string">'l'</span>, <span class="string">'c'</span>, <span class="string">'z'</span>}</span><br><span class="line"><span class="meta">>>> </span>a-b</span><br><span class="line">{<span class="string">'r'</span>, <span class="string">'d'</span>, <span class="string">'b'</span>}</span><br><span class="line"><span class="meta">>>> </span>a|b</span><br><span class="line">{<span class="string">'a'</span>, <span class="string">'m'</span>, <span class="string">'l'</span>, <span class="string">'r'</span>, <span class="string">'c'</span>, <span class="string">'b'</span>, <span class="string">'z'</span>, <span class="string">'d'</span>}</span><br><span class="line"><span class="meta">>>> </span>a&b</span><br><span class="line">{<span class="string">'a'</span>, <span class="string">'c'</span>}</span><br><span class="line"><span class="meta">>>> </span>a^b</span><br><span class="line">{<span class="string">'m'</span>, <span class="string">'z'</span>, <span class="string">'l'</span>, <span class="string">'r'</span>, <span class="string">'d'</span>, <span class="string">'b'</span>}</span><br></pre></td></tr></table></figure><p>类似于列表推导式,集合也支持推导式形式</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>a = {x <span class="keyword">for</span> x <span class="keyword">in</span> <span class="string">'abracadabra'</span> <span class="keyword">if</span> x <span class="keyword">not</span> <span class="keyword">in</span> <span class="string">'abc'</span>}</span><br><span class="line"><span class="meta">>>> </span>a</span><br><span class="line">{<span class="string">'r'</span>, <span class="string">'d'</span>}</span><br></pre></td></tr></table></figure><h2 id="字典"><a href="#字典" class="headerlink" title="字典"></a>字典</h2><p>字典以关键字为索引,关键字必须为不可变对象,如数字、字符串或元组;字符串是<strong>键:值</strong>对的集合,键必须是唯一的,可以用del来删除一个键值对。</p><p>可以使用list(d)来列出d字典中所有键的列表(按插入次序排列)</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>tel={<span class="string">'jack'</span>:<span class="number">4098</span>,<span class="string">'sape'</span>:<span class="number">4139</span>}</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">type</span>(tel)</span><br><span class="line"><<span class="class"><span class="keyword">class</span> '<span class="title">dict</span>'></span></span><br></pre></td></tr></table></figure><p>dict()构造函数可以直接从键值对序列里创建字典</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="built_in">dict</span>([(<span class="string">'sape'</span>, <span class="number">4139</span>), (<span class="string">'guido'</span>, <span class="number">4127</span>), (<span class="string">'jack'</span>, <span class="number">4098</span>)])</span><br><span class="line">{<span class="string">'sape'</span>: <span class="number">4139</span>, <span class="string">'guido'</span>: <span class="number">4127</span>, <span class="string">'jack'</span>: <span class="number">4098</span>}</span><br></pre></td></tr></table></figure><p>也可以这样使用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="built_in">dict</span>(sape=<span class="number">4139</span>, guido=<span class="number">4127</span>, jack=<span class="number">4098</span>)</span><br><span class="line">{<span class="string">'sape'</span>: <span class="number">4139</span>, <span class="string">'guido'</span>: <span class="number">4127</span>, <span class="string">'jack'</span>: <span class="number">4098</span>}</span><br></pre></td></tr></table></figure><p>可以用items()方法将关键字和值一块取出</p><p>逆向循环一个序列,可以使用<strong>reversed()</strong>函数</p><p>去除重复元素可用set(),返回一个<strong>集合</strong>,再用sorted()输出排好序的<strong>列表</strong></p><h2 id="条件控制"><a href="#条件控制" class="headerlink" title="条件控制"></a>条件控制</h2><p><strong>in</strong>和<strong>not in</strong>可以校验一个值是否在(或不在)一个序列里,<strong>is</strong>和<strong>is not</strong>可以比较是不是同一个操作对象</p><p>比较操作可以传递,如<code>a<b==c</code>会比较a是否小于b并且b是否等于c</p><p><code>and</code>和<code>or</code>是短路操作符,一旦符合要求,不会继续执行后边的判断,当用作普通值而非布尔值时,<br>短路操作符的返回值通常是最后一个变量。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>string1, string2, string3 = <span class="string">''</span>, <span class="string">'Trondheim'</span>, <span class="string">'Hammer Dance'</span></span><br><span class="line"><span class="meta">>>> </span>non_null = string1 <span class="keyword">or</span> string2 <span class="keyword">or</span> string3</span><br><span class="line"><span class="meta">>>> </span>non_null</span><br><span class="line"><span class="string">'Trondheim'</span></span><br></pre></td></tr></table></figure><p>python在表达式中赋值必须用<code>:=</code></p><h2 id="比较"><a href="#比较" class="headerlink" title="比较"></a>比较</h2><p>见代码</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>) < (<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>)</span><br><span class="line">[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>] < [<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>]</span><br><span class="line"><span class="string">'ABC'</span> < <span class="string">'C'</span> < <span class="string">'Pascal'</span> < <span class="string">'Python'</span></span><br><span class="line">(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>) < (<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>)</span><br><span class="line">(<span class="number">1</span>, <span class="number">2</span>) < (<span class="number">1</span>, <span class="number">2</span>, -<span class="number">1</span>)</span><br><span class="line">(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>) == (<span class="number">1.0</span>, <span class="number">2.0</span>, <span class="number">3.0</span>)</span><br><span class="line">(<span class="number">1</span>, <span class="number">2</span>, (<span class="string">'aa'</span>, <span class="string">'ab'</span>)) < (<span class="number">1</span>, <span class="number">2</span>, (<span class="string">'abc'</span>, <span class="string">'a'</span>), <span class="number">4</span>)</span><br></pre></td></tr></table></figure><h1 id="模块"><a href="#模块" class="headerlink" title="模块"></a>模块</h1><p>模块名存放在<code>__name__</code>里</p><p><strong>几种调入方式</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> module_name1</span><br><span class="line"><span class="keyword">from</span> module_name2 <span class="keyword">import</span> name1,name2</span><br><span class="line"><span class="keyword">from</span> module_name3 <span class="keyword">import</span> * <span class="comment">#会调入所有非下划线开头的名称</span></span><br><span class="line"><span class="keyword">import</span> module_name4 <span class="keyword">as</span> mdn4</span><br></pre></td></tr></table></figure><p>每个模块在每个解释器会话中只被导入一次,如果你更改了你的模块,则必须重新启动解释器,或者,如果它只是一个要交互式地测试的模块,请使用 <code>importlib.reload()</code>,例如 <code>import importlib; importlib.reload(modulename)</code>。</p><p>执行模块的话<code>__name__</code>为<code>__main__</code></p><h2 id="标准模块"><a href="#标准模块" class="headerlink" title="标准模块"></a>标准模块</h2><p> sys.ps1和sys.ps2主要用作主要和辅助提示的字符串</p> <figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="keyword">import</span> sys</span><br><span class="line"><span class="meta">>>> </span>sys.ps1</span><br><span class="line"><span class="string">'>>> '</span></span><br><span class="line"><span class="meta">>>> </span>sys.ps2</span><br><span class="line"><span class="string">'... '</span></span><br></pre></td></tr></table></figure><p>sys.path 变量是一个字符串列表,用于确定解释器的模块搜索路径。</p><h2 id="dir-函数"><a href="#dir-函数" class="headerlink" title="dir()函数"></a>dir()函数</h2><p>函数 dir() 用于查找模块定义的名称。它返回一个排序过的字符串列表</p><p>如果没有参数,dir() 会列出当前定义的名称</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="built_in">dir</span>()</span><br><span class="line">[<span class="string">'__annotations__'</span>, <span class="string">'__builtins__'</span>, <span class="string">'__doc__'</span>, <span class="string">'__loader__'</span>, <span class="string">'__name__'</span>, <span class="string">'__package__'</span>, <span class="string">'__spec__'</span>]</span><br><span class="line">>>></span><br></pre></td></tr></table></figure><p>dir() 不会列出内置函数和变量的名称。它们的定义是在标准模块 builtins 中:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="keyword">import</span> builtins</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">dir</span>(builtins)</span><br><span class="line">[<span class="string">'ArithmeticError'</span>, <span class="string">'AssertionError'</span>, <span class="string">'AttributeError'</span>, <span class="string">'BaseException'</span>, <span class="string">'BlockingIOError'</span>, <span class="string">'BrokenPipeError'</span>, <span class="string">'BufferError'</span>, <span class="string">'BytesWarning'</span>, <span class="string">'ChildProcessError'</span>, <span class="string">'ConnectionAbortedError'</span>, <span class="string">'ConnectionError'</span>, <span class="string">'ConnectionRefusedError'</span>, <span class="string">'ConnectionResetError'</span>, <span class="string">'DeprecationWarning'</span>, <span class="string">'EOFError'</span>, <span class="string">'Ellipsis'</span>, <span class="string">'EnvironmentError'</span>, <span class="string">'Exception'</span>, <span class="string">'False'</span>, <span class="string">'FileExistsError'</span>, <span class="string">'FileNotFoundError'</span>, <span class="string">'FloatingPointError'</span>, <span class="string">'FutureWarning'</span>, <span class="string">'GeneratorExit'</span>, <span class="string">'IOError'</span>, <span class="string">'ImportError'</span>, <span class="string">'ImportWarning'</span>, <span class="string">'IndentationError'</span>, <span class="string">'IndexError'</span>, <span class="string">'InterruptedError'</span>, <span class="string">'IsADirectoryError'</span>, <span class="string">'KeyError'</span>, <span class="string">'KeyboardInterrupt'</span>, <span class="string">'LookupError'</span>, <span class="string">'MemoryError'</span>, <span class="string">'ModuleNotFoundError'</span>, <span class="string">'NameError'</span>, <span class="string">'None'</span>, <span class="string">'NotADirectoryError'</span>, <span class="string">'NotImplemented'</span>, <span class="string">'NotImplementedError'</span>, <span class="string">'OSError'</span>, <span class="string">'OverflowError'</span>, <span class="string">'PendingDeprecationWarning'</span>, <span class="string">'PermissionError'</span>, <span class="string">'ProcessLookupError'</span>, <span class="string">'RecursionError'</span>, <span class="string">'ReferenceError'</span>, <span class="string">'ResourceWarning'</span>, <span class="string">'RuntimeError'</span>, <span class="string">'RuntimeWarning'</span>, <span class="string">'StopAsyncIteration'</span>, <span class="string">'StopIteration'</span>, <span class="string">'SyntaxError'</span>, <span class="string">'SyntaxWarning'</span>, <span class="string">'SystemError'</span>, <span class="string">'SystemExit'</span>, <span class="string">'TabError'</span>, <span class="string">'TimeoutError'</span>, <span class="string">'True'</span>, <span class="string">'TypeError'</span>, <span class="string">'UnboundLocalError'</span>, <span class="string">'UnicodeDecodeError'</span>, <span class="string">'UnicodeEncodeError'</span>, <span class="string">'UnicodeError'</span>, <span class="string">'UnicodeTranslateError'</span>, <span class="string">'UnicodeWarning'</span>, <span class="string">'UserWarning'</span>, <span class="string">'ValueError'</span>, <span class="string">'Warning'</span>, <span class="string">'WindowsError'</span>, <span class="string">'ZeroDivisionError'</span>, <span class="string">'_'</span>, <span class="string">'__build_class__'</span>, <span class="string">'__debug__'</span>, <span class="string">'__doc__'</span>, <span class="string">'__import__'</span>, <span class="string">'__loader__'</span>, <span class="string">'__name__'</span>, <span class="string">'__package__'</span>, <span class="string">'__spec__'</span>, <span class="string">'abs'</span>, <span class="string">'all'</span>, <span class="string">'any'</span>, <span class="string">'ascii'</span>, <span class="string">'bin'</span>, <span class="string">'bool'</span>, <span class="string">'breakpoint'</span>, <span class="string">'bytearray'</span>, <span class="string">'bytes'</span>, <span class="string">'callable'</span>, <span class="string">'chr'</span>, <span class="string">'classmethod'</span>, <span class="string">'compile'</span>, <span class="string">'complex'</span>, <span class="string">'copyright'</span>, <span class="string">'credits'</span>, <span class="string">'delattr'</span>, <span class="string">'dict'</span>, <span class="string">'dir'</span>, <span class="string">'divmod'</span>, <span class="string">'enumerate'</span>, <span class="string">'eval'</span>, <span class="string">'exec'</span>, <span class="string">'exit'</span>, <span class="string">'filter'</span>, <span class="string">'float'</span>, <span class="string">'format'</span>, <span class="string">'frozenset'</span>, <span class="string">'getattr'</span>, <span class="string">'globals'</span>, <span class="string">'hasattr'</span>, <span class="string">'hash'</span>, <span class="string">'help'</span>, <span class="string">'hex'</span>, <span class="string">'id'</span>, <span class="string">'input'</span>, <span class="string">'int'</span>, <span class="string">'isinstance'</span>, <span class="string">'issubclass'</span>, <span class="string">'iter'</span>, <span class="string">'len'</span>, <span class="string">'license'</span>, <span class="string">'list'</span>, <span class="string">'locals'</span>, <span class="string">'map'</span>, <span class="string">'max'</span>, <span class="string">'memoryview'</span>, <span class="string">'min'</span>, <span class="string">'next'</span>, <span class="string">'object'</span>, <span class="string">'oct'</span>, <span class="string">'open'</span>, <span class="string">'ord'</span>, <span class="string">'pow'</span>, <span class="string">'print'</span>, <span class="string">'property'</span>, <span class="string">'quit'</span>, <span class="string">'range'</span>, <span class="string">'repr'</span>, <span class="string">'reversed'</span>, <span class="string">'round'</span>, <span class="string">'set'</span>, <span class="string">'setattr'</span>, <span class="string">'slice'</span>, <span class="string">'sorted'</span>, <span class="string">'staticmethod'</span>, <span class="string">'str'</span>, <span class="string">'sum'</span>, <span class="string">'super'</span>, <span class="string">'tuple'</span>, <span class="string">'type'</span>, <span class="string">'vars'</span>, <span class="string">'zip'</span>]</span><br></pre></td></tr></table></figure><h2 id="包"><a href="#包" class="headerlink" title="包"></a>包</h2><p>包是一种通过用”带点号的模块名“构造 Python 模块命名空间的方法,使用加点的模块名可以使多模块软件包的作者不必担心彼此的模块名称一样。</p><p>一个包中必须含有<code>__init__.py</code>才能称为包</p><h3 id="从包中导入"><a href="#从包中导入" class="headerlink" title="从包中导入*"></a>从包中导入*</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> package.submodule <span class="keyword">import</span> *</span><br></pre></td></tr></table></figure><p>如果submodule中的<code>__init__.py</code>中定义了名为<code>__all__</code>的列表,则根据此列表中的元素导入,若没有定义这个变量,则导入子模块中定义的所有变量</p><h3 id="子包参考"><a href="#子包参考" class="headerlink" title="子包参考"></a>子包参考</h3><p>当包构成子包时,可以使用绝对导入来引用兄弟包的子模块,也可以使用相对导入,如</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> . <span class="keyword">import</span> echo</span><br><span class="line"><span class="keyword">from</span> .. <span class="keyword">import</span> formats</span><br><span class="line"><span class="keyword">from</span> ..filters <span class="keyword">import</span> equalizer</span><br></pre></td></tr></table></figure><p><strong>注意:</strong>相对导入是基于当前模块的名称进行导入的,python的主模块名称总为<code>__main__</code>,故主模块必须始终使用绝对导入。</p><h1 id="输入输出"><a href="#输入输出" class="headerlink" title="输入输出"></a>输入输出</h1><h2 id="格式化字符串"><a href="#格式化字符串" class="headerlink" title="格式化字符串"></a>格式化字符串</h2><p>在字符串的开头加上<strong>f</strong>或<strong>F</strong>,在此字符串中可以使用<strong>{}</strong>包裹的变量,如</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span>year=<span class="string">'2022'</span></span><br><span class="line"><span class="meta">>>> </span>month=<span class="string">'1'</span></span><br><span class="line"><span class="meta">>>> </span>day=<span class="string">'19'</span></span><br><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(<span class="string">f'Today is <span class="subst">{year}</span>/<span class="subst">{month}</span>/<span class="subst">{day}</span>'</span>)</span><br><span class="line">Today <span class="keyword">is</span> <span class="number">2022</span>/<span class="number">1</span>/<span class="number">19</span></span><br></pre></td></tr></table></figure><p>字符串类型有format()方法,花括号内内容为<code>{字段名!转换字段:格式说明符}</code></p><p>格式说明符内内容为<code>[[填充]对齐方式][正负号][#][0][宽度][分组选项][.精度][类型码]</code>具体使用方法可参考<a href="https://blog.csdn.net/jpch89/article/details/84099277">https://blog.csdn.net/jpch89/article/details/84099277</a></p><h3 id="str和repr"><a href="#str和repr" class="headerlink" title="str和repr"></a>str和repr</h3><p>str可以将其它类型的数据转化为人可读的格式,repr则将字符转换为解释器可读的格式。</p><h2 id="手动格式化字符串"><a href="#手动格式化字符串" class="headerlink" title="手动格式化字符串"></a>手动格式化字符串</h2><p><strong>ljust(n)</strong>和<strong>rjust(n)</strong>左对齐和右对齐并补空格至n位,<strong>center(n)</strong>居中对齐</p><p><strong>str.zfill()</strong> ,它会在数字字符串的左边填充零。能识别正负号:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="string">'12'</span>.zfill(<span class="number">5</span>)</span><br><span class="line"><span class="string">'00012'</span></span><br><span class="line"><span class="meta">>>> </span><span class="string">'-3.14'</span>.zfill(<span class="number">7</span>)</span><br><span class="line"><span class="string">'-003.14'</span></span><br><span class="line"><span class="meta">>>> </span><span class="string">'3.14159265359'</span>.zfill(<span class="number">5</span>)</span><br><span class="line"><span class="string">'3.14159265359'</span></span><br></pre></td></tr></table></figure><h2 id="旧的字符串格式方法"><a href="#旧的字符串格式方法" class="headerlink" title="旧的字符串格式方法"></a>旧的字符串格式方法</h2><p>% 运算符(求余)也可用于字符串格式化。给定 ‘string’ % values,则 string 中的 % 实例会以零<br>个或多个 values 元素替换。此操作通常被称为字符串插值。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="built_in">print</span>(<span class="string">'This is a test number %5.3f %3.5f'</span> % (<span class="number">54</span>,<span class="number">45</span>))</span><br><span class="line">This <span class="keyword">is</span> a test number <span class="number">54.000</span> <span class="number">45.00000</span></span><br></pre></td></tr></table></figure><h2 id="读写文件"><a href="#读写文件" class="headerlink" title="读写文件"></a>读写文件</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">f=<span class="built_in">open</span>(<span class="string">'file'</span>,<span class="string">'w'</span>)</span><br></pre></td></tr></table></figure><div class="table-container"><table><thead><tr><th style="text-align:center">字符</th><th style="text-align:center">含义</th></tr></thead><tbody><tr><td style="text-align:center">w</td><td style="text-align:center">只能写入</td></tr><tr><td style="text-align:center">r</td><td style="text-align:center">只能读取</td></tr><tr><td style="text-align:center">a</td><td style="text-align:center">打开文件追加内容</td></tr><tr><td style="text-align:center">r+</td><td style="text-align:center">读写</td></tr></tbody></table></div><p>默认为’r’</p><h3 id="读文件的方法"><a href="#读文件的方法" class="headerlink" title="读文件的方法"></a>读文件的方法</h3><p><strong>f.read(size)</strong>若以文本方式打开,返回size个字符,若以二进制方式打开,返回size个字节,若到达文件末尾返回空字符</p><p><strong>f.readline()</strong>从文件中读取一行,换行符(\n)留在字符串的末尾,如果 <strong>f.readline()</strong> 返回一个空的字符串,则表示已经到达了文件末尾</p><p>要从文件中读取行,可以循环遍历文件对象,这是内存高效,快速的,并简化代码:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line">... <span class="built_in">print</span>(line, end=<span class="string">''</span>)</span><br><span class="line">...</span><br><span class="line">This <span class="keyword">is</span> the first line of the file.</span><br><span class="line">Second line of the file</span><br></pre></td></tr></table></figure><p>如果想以列表方式读取文件所有行可用<strong>list(f)</strong>或<strong>f.readlines()</strong></p><p><strong>f.tell()</strong>返回一个整数,这个数字为文件对象在文件中的位置</p><p><strong>f.seek(offset,whence)</strong>改变文件对象的位置,offset提供偏移量,whence提供参考点,0表示开头,1表示使用当前文件位置,2表示使用文件末尾,默认为0</p><h1 id="异常处理"><a href="#异常处理" class="headerlink" title="异常处理"></a>异常处理</h1><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> x=<span class="built_in">int</span>(<span class="built_in">input</span>(<span class="string">""</span>))</span><br><span class="line"> <span class="keyword">except</span> ValueError:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"Error"</span>)</span><br><span class="line"> <span class="keyword">break</span></span><br></pre></td></tr></table></figure><p>首先,执行try子句,若无异常,跳过except,若异常和except后的内容一样,则执行except后的子句</p><p>若except后不跟异常类型,则可以处理所有异常</p><p>try后可跟else子句,使用时必须放在except后面</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> arg <span class="keyword">in</span> sys.argv[<span class="number">1</span>:]:</span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">f = <span class="built_in">open</span>(arg, <span class="string">'r'</span>)</span><br><span class="line"><span class="keyword">except</span> OSError:</span><br><span class="line"><span class="built_in">print</span>(<span class="string">'cannot open'</span>, arg)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line"><span class="built_in">print</span>(arg, <span class="string">'has'</span>, <span class="built_in">len</span>(f.readlines()), <span class="string">'lines'</span>)</span><br><span class="line">f.close()</span><br></pre></td></tr></table></figure><p>try不出错则执行else中的内容</p><h2 id="异常链"><a href="#异常链" class="headerlink" title="异常链"></a>异常链</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>:</span><br><span class="line"> <span class="number">1</span>/<span class="number">0</span></span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> E:</span><br><span class="line"> <span class="keyword">raise</span> TypeError(<span class="string">'Bad'</span>)</span><br></pre></td></tr></table></figure><p>报错信息:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">Traceback (most recent call last):</span><br><span class="line"> File <span class="string">"<stdin>"</span>, line <span class="number">2</span>, <span class="keyword">in</span> <module></span><br><span class="line">ZeroDivisionError: division by zero</span><br><span class="line"></span><br><span class="line">During handling of the above exception, another exception occurred:</span><br><span class="line"></span><br><span class="line">Traceback (most recent call last):</span><br><span class="line"> File <span class="string">"<stdin>"</span>, line <span class="number">4</span>, <span class="keyword">in</span> <module></span><br><span class="line">TypeError: Bad</span><br></pre></td></tr></table></figure><p>可以使用from使报错信息更明确</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>:</span><br><span class="line"> <span class="number">1</span>/<span class="number">0</span></span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> E:</span><br><span class="line"> <span class="keyword">raise</span> TypeError(<span class="string">'Bad'</span>) <span class="keyword">from</span> E</span><br></pre></td></tr></table></figure><p>报错信息:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">Traceback (most recent call last):</span><br><span class="line"> File <span class="string">"<stdin>"</span>, line <span class="number">2</span>, <span class="keyword">in</span> <module></span><br><span class="line">ZeroDivisionError: division by zero</span><br><span class="line"></span><br><span class="line">The above exception was the direct cause of the following exception:</span><br><span class="line"></span><br><span class="line">Traceback (most recent call last):</span><br><span class="line"> File <span class="string">"<stdin>"</span>, line <span class="number">4</span>, <span class="keyword">in</span> <module></span><br><span class="line">TypeError: Bad</span><br></pre></td></tr></table></figure><p>可以使用<code>from None</code>使只报Exception里的错</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>:</span><br><span class="line"> <span class="number">1</span>/<span class="number">0</span></span><br><span class="line"><span class="keyword">except</span> Exception <span class="keyword">as</span> E:</span><br><span class="line"> <span class="keyword">raise</span> TypeError(<span class="string">'Bad'</span>) <span class="keyword">from</span> <span class="literal">None</span></span><br></pre></td></tr></table></figure><p>报错信息</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Traceback (most recent call last):</span><br><span class="line"> File <span class="string">"<stdin>"</span>, line <span class="number">4</span>, <span class="keyword">in</span> <module></span><br><span class="line">TypeError: Bad</span><br></pre></td></tr></table></figure><h2 id="用户自定义异常"><a href="#用户自定义异常" class="headerlink" title="用户自定义异常"></a>用户自定义异常</h2><p>异常通常应该直接或间接由Exception类派生</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Error</span>(<span class="params">Exception</span>):</span></span><br><span class="line"> <span class="keyword">pass</span></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Error1</span>(<span class="params">Error</span>):</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self,expression,message</span>):</span></span><br><span class="line"> self.expression=expression</span><br><span class="line"> self.message=message</span><br></pre></td></tr></table></figure><h2 id="finally语句"><a href="#finally语句" class="headerlink" title="finally语句"></a>finally语句</h2><p>无论try有没有异常,都会执行finally后的语句</p><p>若try无异常,则try的语句执行完后执行finally中的语句</p><p>若try出现异常,则在报错前先执行finally中的语句然后报错</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">graph TB</span><br><span class="line">try-->语句1--未报错-->else-->语句4-->finally</span><br><span class="line">finally-->语句2</span><br><span class="line">语句1--报错-->except--未报错-->语句3-->finally</span><br><span class="line">except--报错-->finally</span><br><span class="line">语句2-->退出</span><br></pre></td></tr></table></figure><p><img src="/2022/01/16/Python%E7%AC%94%E8%AE%B0/image-20220120115629582.png" alt="image-20220120115629582"></p><h2 id="预清理操作"><a href="#预清理操作" class="headerlink" title="预清理操作"></a>预清理操作</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">'test.txt'</span>) <span class="keyword">as</span> f:</span><br><span class="line"><span class="keyword">for</span> line <span class="keyword">in</span> f:</span><br><span class="line"> <span class="built_in">print</span>(line)</span><br></pre></td></tr></table></figure><p>执行完操作以后,f文件对象会被自动关闭</p><h1 id="类"><a href="#类" class="headerlink" title="类"></a>类</h1><h2 id="global-and-nonlocal"><a href="#global-and-nonlocal" class="headerlink" title="global and nonlocal"></a>global and nonlocal</h2><p>关于<strong>global</strong>和<strong>nonlocal</strong>的使用方法,可以参考这篇博客<a href="https://blog.csdn.net/xCyansun/article/details/79672634">https://blog.csdn.net/xCyansun/article/details/79672634</a></p><h2 id="定义类"><a href="#定义类" class="headerlink" title="定义类"></a>定义类</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ClassName</span>:</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><p>类对象支持<strong>属性引用</strong>和<strong>实例化</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ClassName</span>:</span></span><br><span class="line"> <span class="string">"""A very simple class"""</span></span><br><span class="line"> i=<span class="number">12345</span></span><br><span class="line"> </span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">f</span>(<span class="params">self</span>):</span></span><br><span class="line"> <span class="keyword">return</span> <span class="string">'Hello World!'</span></span><br></pre></td></tr></table></figure><p>类的变量不能为mutable类型</p><h2 id="继承"><a href="#继承" class="headerlink" title="继承"></a>继承</h2><p>Python有两个内置函数可被用于继承机制</p><ul><li><p><strong>isinstance()</strong>来检查一个实例的类型</p><blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="class"><span class="keyword">class</span> <span class="title">MyClass</span>():</span></span><br><span class="line"><span class="meta">>>> </span>... <span class="keyword">pass</span></span><br><span class="line"><span class="meta">>>> </span>...</span><br><span class="line"><span class="meta">>>> </span>x=MyClass()</span><br><span class="line"><span class="meta">>>> </span><span class="built_in">isinstance</span>(x,MyClass)</span><br><span class="line"><span class="meta">>>> </span><span class="literal">True</span></span><br></pre></td></tr></table></figure></blockquote></li><li><p><strong>issubclass()</strong>来检查一个类是否是另一个类的子类</p><blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">>>> </span><span class="built_in">issubclass</span>(<span class="built_in">bool</span>,<span class="built_in">int</span>)</span><br><span class="line"><span class="literal">True</span></span><br></pre></td></tr></table></figure></blockquote></li></ul><h2 id="私有变量"><a href="#私有变量" class="headerlink" title="私有变量"></a>私有变量</h2><p>带有一个下划线的名称应当看作是API的非共有部分(如_spam)</p><p><strong>名称改写:</strong>任何形式为<strong>__spam</strong>(至少有两个前缀下划线,至多一个后缀下划线)的文本将被替换为<strong>_classname__spam</strong></p><h2 id="迭代器与生成器"><a href="#迭代器与生成器" class="headerlink" title="迭代器与生成器"></a>迭代器与生成器</h2><p>迭代器,对一个对象使用<strong>iter()</strong>,返回迭代器,迭代器有<strong>next()</strong>方法,可以返回迭代器的下一个值,如果到达末尾,则返回<strong>StopIteration</strong></p><p>生成器表达式语法类似于列表推导式,但外层是圆括号而非方括号</p><h1 id="标准库"><a href="#标准库" class="headerlink" title="标准库"></a>标准库</h1><h2 id="操作系统接口"><a href="#操作系统接口" class="headerlink" title="操作系统接口"></a>操作系统接口</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line">os.getcwd()</span><br><span class="line">os.chdir(<span class="string">'/test'</span>)</span><br><span class="line">os.system(<span class="string">'cls'</span>)</span><br></pre></td></tr></table></figure><h2 id="文件通配符"><a href="#文件通配符" class="headerlink" title="文件通配符"></a>文件通配符</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> glob</span><br><span class="line">glob.glob(<span class="string">'*.py'</span>)</span><br></pre></td></tr></table></figure><h2 id="命令行参数"><a href="#命令行参数" class="headerlink" title="命令行参数"></a>命令行参数</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="built_in">print</span>(sys.argv)</span><br></pre></td></tr></table></figure><h2 id="错误输出重定向和程序终止"><a href="#错误输出重定向和程序终止" class="headerlink" title="错误输出重定向和程序终止"></a>错误输出重定向和程序终止</h2><p>sys模块具有<strong>stdin</strong>、<strong>stdout</strong>、<strong>stderr</strong>属性,终止脚本的最直接的方法是使用<code>sys.exit()</code></p><h2 id="正则表达式"><a href="#正则表达式" class="headerlink" title="正则表达式"></a>正则表达式</h2><p><code>re</code>模块</p><h2 id="数学"><a href="#数学" class="headerlink" title="数学"></a>数学</h2><p><code>math</code>模块,<code>random</code>模块,<code>statistics</code>模块</p><h2 id="日期和时间"><a href="#日期和时间" class="headerlink" title="日期和时间"></a>日期和时间</h2><p><code>datetime</code>模块</p><h2 id="数据压缩"><a href="#数据压缩" class="headerlink" title="数据压缩"></a>数据压缩</h2><p><code>zlib, gzip, bz2, lzma, zipfile 和 tarfile</code>模块</p><h1 id="虚拟环境"><a href="#虚拟环境" class="headerlink" title="虚拟环境"></a>虚拟环境</h1><p>创建虚拟环境</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python -m venv test<span class="comment">#test为文件夹名称</span></span><br></pre></td></tr></table></figure><p>激活</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">.\test\Scripts\activate.bat</span><br></pre></td></tr></table></figure><h2 id="pip"><a href="#pip" class="headerlink" title="pip"></a>pip</h2><p>命令</p><blockquote><p>install 安装<br>download 下载<br>uninstall 卸载<br>freeze 将安装的包列表导出成想要的格式<br>list 显示安装的包列表<br>show 显示包的信息<br>check 检查包依赖<br>config<br>search 在Pypi上寻找包<br>cache<br>index<br>wheel<br>hash<br>completion<br>debug<br>help 帮助</p></blockquote><p><strong>install</strong></p><blockquote><p>pip install numpy</p><p>pip install numpy==1.20.1</p><p>pip install —upgrade requests</p></blockquote><p><strong>show</strong></p><blockquote><p>$pip show numpy<br>Name: numpy<br>Version: 1.21.5<br>Summary: NumPy is the fundamental package for array computing with Python.<br>Home-page: <a href="https://www.numpy.org">https://www.numpy.org</a><br>Author: Travis E. Oliphant et al.<br>Author-email:<br>License: BSD<br>Location: d:\pyth39\lib\site-packages<br>Requires:<br>Required-by: h5py, Keras-Preprocessing, librosa, matplotlib, numba, opencv-python, opt-einsum, pandas, resampy, scikit-learn, scipy, seaborn, tensorboard, tensorflow, torchvision, umap-learn, visdom, wordcloud</p></blockquote><p><strong>list</strong></p><blockquote><p>$pip list<br>Package Version<br>-————- ———-<br>pip 21.3.1<br>setuptools 56.0.0</p></blockquote><p><strong>freeze</strong></p><blockquote><p>pip freeze > requirements.txt</p><h1 id="然后可以使用"><a href="#然后可以使用" class="headerlink" title="然后可以使用"></a>然后可以使用</h1><p>pip install -r requirements.txt</p></blockquote><h1 id="附录"><a href="#附录" class="headerlink" title="附录"></a>附录</h1><h2 id="交互式启动文件"><a href="#交互式启动文件" class="headerlink" title="交互式启动文件"></a>交互式启动文件</h2><p>在Windows的环境变量中添加名为PYTHONSTARTUP的项,将值指向一个py文件,这样,当进行交互式操作时,会首先执行这个所指向的文件</p><h2 id="定制模块"><a href="#定制模块" class="headerlink" title="定制模块"></a>定制模块</h2><p>首先使用site模块获得用户自定义site-package的位置</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> site</span><br><span class="line">site.getusersitepackages()</span><br></pre></td></tr></table></figure><p>然后在得到的文件夹建立一个<code>usercustomize.py</code>的文件,这样每次启动python都会首先执行这个文件,与<code>PYTHONSTARTUP</code>不同的是,<code>usercustomize.py</code>文件的命名空间与交互式窗口不同</p><p><code>sitecustomize.py</code>与<code>usercustomize.py</code>作用相同,不过它比<code>usercustomize.py</code>先调用。</p><p>此外,可用<code>python -s</code>禁用自动导入</p>]]></content>
<summary type="html"><p>.</p></summary>
<category term="Python" scheme="https://fsjz2020.github.io/tags/Python/"/>
</entry>
<entry>
<title>Blender快捷键记录</title>
<link href="https://fsjz2020.github.io/2022/01/12/Blender%E5%BF%AB%E6%8D%B7%E9%94%AE%E8%AE%B0%E5%BD%95/"/>
<id>https://fsjz2020.github.io/2022/01/12/Blender%E5%BF%AB%E6%8D%B7%E9%94%AE%E8%AE%B0%E5%BD%95/</id>
<published>2022-01-12T06:48:05.000Z</published>
<updated>2022-01-15T05:00:01.403Z</updated>
<content type="html"><![CDATA[<p><img src="/2022/01/12/Blender%E5%BF%AB%E6%8D%B7%E9%94%AE%E8%AE%B0%E5%BD%95/u=2994461402,3237906530&fm=26&fmt=auto.jpeg" alt="img"></p><span id="more"></span><div class="table-container"><table><thead><tr><th style="text-align:center">快捷键</th><th style="text-align:center">作用</th></tr></thead><tbody><tr><td style="text-align:center">0</td><td style="text-align:center">进入摄像机视图</td></tr><tr><td style="text-align:center">5</td><td style="text-align:center">透视/正交切换</td></tr><tr><td style="text-align:center">7/Ctrl+7</td><td style="text-align:center">顶视图/底视图</td></tr><tr><td style="text-align:center">1/Ctrl+1</td><td style="text-align:center">前视图/后视图</td></tr><tr><td style="text-align:center">3/Ctrl+3</td><td style="text-align:center">右视图/左视图</td></tr><tr><td style="text-align:center">9</td><td style="text-align:center">视图翻转</td></tr><tr><td style="text-align:center">Ctrl+Alt+0</td><td style="text-align:center">将当前活动窗口设为摄像机视图</td></tr><tr><td style="text-align:center">Ctrl+Alt+q</td><td style="text-align:center">四视图切换</td></tr><tr><td style="text-align:center">.</td><td style="text-align:center">聚焦物体</td></tr><tr><td style="text-align:center">Ctrl+.</td><td style="text-align:center">将四个视图都聚焦</td></tr><tr><td style="text-align:center">/</td><td style="text-align:center">屏蔽其他物体</td></tr><tr><td style="text-align:center">Home</td><td style="text-align:center">显示全场景</td></tr><tr><td style="text-align:center">Ctrl+`</td><td style="text-align:center">显示/关闭Gizmo</td></tr><tr><td style="text-align:center">G</td><td style="text-align:center">移动</td></tr><tr><td style="text-align:center">R</td><td style="text-align:center">旋转</td></tr><tr><td style="text-align:center">S</td><td style="text-align:center">缩放</td></tr><tr><td style="text-align:center">A</td><td style="text-align:center">全选</td></tr><tr><td style="text-align:center">AA</td><td style="text-align:center">取消全选</td></tr><tr><td style="text-align:center">W</td><td style="text-align:center">切换选择模式</td></tr><tr><td style="text-align:center">Ctrl+Space</td><td style="text-align:center">鼠标所在窗口最大化</td></tr><tr><td style="text-align:center">Ctrl+Alt+Space</td><td style="text-align:center">鼠标所在窗口最大化(隐藏功能区)</td></tr><tr><td style="text-align:center">Shift+D</td><td style="text-align:center">非关联复制</td></tr><tr><td style="text-align:center">Shift+右键</td><td style="text-align:center">移动游标</td></tr><tr><td style="text-align:center">,</td><td style="text-align:center">弹出坐标菜单</td></tr><tr><td style="text-align:center">.</td><td style="text-align:center">弹出变换轴心点菜单</td></tr><tr><td style="text-align:center">Shift+Tab</td><td style="text-align:center">打开/关闭吸附</td></tr><tr><td style="text-align:center">O</td><td style="text-align:center">打开/关闭衰减编辑</td></tr><tr><td style="text-align:center">Ctrl+.</td><td style="text-align:center">进入/退出原点移动模式</td></tr><tr><td style="text-align:center">Shift+Z</td><td style="text-align:center">进入透显模式</td></tr><tr><td style="text-align:center">Shift+S</td><td style="text-align:center">进行游标操作</td></tr><tr><td style="text-align:center">Ctrl+J</td><td style="text-align:center">合并</td></tr><tr><td style="text-align:center">L</td><td style="text-align:center">选中相连元素</td></tr><tr><td style="text-align:center">P</td><td style="text-align:center">拆分</td></tr><tr><td style="text-align:center">Shift+R</td><td style="text-align:center">重做</td></tr><tr><td style="text-align:center">Shift+~</td><td style="text-align:center">进入第一人称模式<br>在此模式下可以通过WASD进行移动,Q下降,E上升<br>Shift加速移动,Alt减速移动<br>空格键位移至准星指定的位置</td></tr><tr><td style="text-align:center">I</td><td style="text-align:center">设置关键帧</td></tr><tr><td style="text-align:center">H</td><td style="text-align:center">隐藏</td></tr><tr><td style="text-align:center">Alt+H</td><td style="text-align:center">显示</td></tr><tr><td style="text-align:center"><img src="/2022/01/12/Blender%E5%BF%AB%E6%8D%B7%E9%94%AE%E8%AE%B0%E5%BD%95/image-20220114192932983.png" alt="image-20220114192932983"></td><td style="text-align:center">显示禁用&渲染禁用</td></tr><tr><td style="text-align:center">Ctrl+P</td><td style="text-align:center">建立父子级</td></tr><tr><td style="text-align:center">Alt+P</td><td style="text-align:center">清空父子级</td></tr><tr><td style="text-align:center">Ctrl+M</td><td style="text-align:center">镜像</td></tr><tr><td style="text-align:center">Ctrl+I</td><td style="text-align:center">反选</td></tr><tr><td style="text-align:center">Alt+E</td><td style="text-align:center">打开挤出菜单</td></tr><tr><td style="text-align:center">Ctrl+B</td><td style="text-align:center">倒角<br>参数解释:<br><img src="/2022/01/12/Blender%E5%BF%AB%E6%8D%B7%E9%94%AE%E8%AE%B0%E5%BD%95/image-20220115093756916.png" alt="image-20220115093756916"></td></tr><tr><td style="text-align:center"></td></tr></tbody></table></div>]]></content>
<summary type="html"><p><img src="/2022/01/12/Blender%E5%BF%AB%E6%8D%B7%E9%94%AE%E8%AE%B0%E5%BD%95/u=2994461402,3237906530&amp;fm=26&amp;fmt=auto.jpeg" alt="img"></p></summary>
<category term="Blender" scheme="https://fsjz2020.github.io/tags/Blender/"/>
</entry>
<entry>
<title>mermaid学习</title>
<link href="https://fsjz2020.github.io/2022/01/03/mermaid%E5%AD%A6%E4%B9%A0/"/>
<id>https://fsjz2020.github.io/2022/01/03/mermaid%E5%AD%A6%E4%B9%A0/</id>
<published>2022-01-03T08:48:08.000Z</published>
<updated>2022-01-05T10:59:56.118Z</updated>
<content type="html"><![CDATA[<p>Mermaid是一个用于画流程图、状态图、时序图、甘特图的库,广泛用于Markdown编辑中。</p><span id="more"></span><h1 id="流程图-flowchart"><a href="#流程图-flowchart" class="headerlink" title="流程图(flowchart)"></a>流程图(flowchart)</h1><h2 id="方向"><a href="#方向" class="headerlink" title="方向"></a>方向</h2><div class="table-container"><table><thead><tr><th style="text-align:center">代码</th><th style="text-align:center">字符</th></tr></thead><tbody><tr><td style="text-align:center">TB</td><td style="text-align:center">从上到下</td></tr><tr><td style="text-align:center">TD</td><td style="text-align:center">从上到下</td></tr><tr><td style="text-align:center">BT</td><td style="text-align:center">从下到上</td></tr><tr><td style="text-align:center">RL</td><td style="text-align:center">从右向左</td></tr><tr><td style="text-align:center">LR</td><td style="text-align:center">从左向右</td></tr></tbody></table></div><h2 id="节点形状"><a href="#节点形状" class="headerlink" title="节点形状"></a>节点形状</h2><h3 id="默认节点"><a href="#默认节点" class="headerlink" title="默认节点"></a>默认节点</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID</span><br></pre></td></tr></table></figure><h2 id="带文本的节点"><a href="#带文本的节点" class="headerlink" title="带文本的节点"></a>带文本的节点</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[This is the text]</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[This is the text]</span><br></pre></td></tr></table></figure><h3 id="圆角节点"><a href="#圆角节点" class="headerlink" title="圆角节点"></a>圆角节点</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID(This is the text)</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID(This is the text)</span><br></pre></td></tr></table></figure><h3 id="子程序形状的节点"><a href="#子程序形状的节点" class="headerlink" title="子程序形状的节点"></a>子程序形状的节点</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[[This is the text]]</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[[This is the text]]</span><br></pre></td></tr></table></figure><h3 id="圆柱形状的节点"><a href="#圆柱形状的节点" class="headerlink" title="圆柱形状的节点"></a>圆柱形状的节点</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[(This is the text)]</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[(This is the text)]</span><br></pre></td></tr></table></figure><h3 id="圆形节点"><a href="#圆形节点" class="headerlink" title="圆形节点"></a>圆形节点</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID((This is the text))</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID((This is the text))</span><br></pre></td></tr></table></figure><h3 id="不对称形状的节点"><a href="#不对称形状的节点" class="headerlink" title="不对称形状的节点"></a>不对称形状的节点</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID>This is the text]</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID>This is the text]</span><br></pre></td></tr></table></figure><h3 id="菱形节点"><a href="#菱形节点" class="headerlink" title="菱形节点"></a>菱形节点</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID{This is the text}</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID{This is the text}</span><br></pre></td></tr></table></figure><h3 id="六边形"><a href="#六边形" class="headerlink" title="六边形"></a>六边形</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID{{This is the text}}</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID{{This is the text}}</span><br></pre></td></tr></table></figure><h3 id="平行四边形"><a href="#平行四边形" class="headerlink" title="平行四边形"></a>平行四边形</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[\This is the text\]</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[\This is the text\]</span><br></pre></td></tr></table></figure><h3 id="另一种平行四边形"><a href="#另一种平行四边形" class="headerlink" title="另一种平行四边形"></a>另一种平行四边形</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[/This is the text/]</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[/This is the text/]</span><br></pre></td></tr></table></figure><h3 id="梯形"><a href="#梯形" class="headerlink" title="梯形"></a>梯形</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[/This is the text\]</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[/This is the text\]</span><br></pre></td></tr></table></figure><h3 id="倒梯形"><a href="#倒梯形" class="headerlink" title="倒梯形"></a>倒梯形</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[\This is the text/]</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">ID[\This is the text/]</span><br></pre></td></tr></table></figure><h2 id="节点之间的连接"><a href="#节点之间的连接" class="headerlink" title="节点之间的连接"></a>节点之间的连接</h2><h2 id="带箭头的链接"><a href="#带箭头的链接" class="headerlink" title="带箭头的链接"></a>带箭头的链接</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A-->B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A-->B</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="实线连接"><a href="#实线连接" class="headerlink" title="实线连接"></a>实线连接</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A---B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A---B</span><br></pre></td></tr></table></figure><h3 id="链接带文字"><a href="#链接带文字" class="headerlink" title="链接带文字"></a>链接带文字</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A--This is a text!---B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A--This is a text!---B</span><br></pre></td></tr></table></figure><p>或者</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A---|This is a text!|B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A---|This is a text!|B</span><br></pre></td></tr></table></figure><h3 id="带箭头和文本的连接"><a href="#带箭头和文本的连接" class="headerlink" title="带箭头和文本的连接"></a>带箭头和文本的连接</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A--This is a text!-->B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A--This is a text!-->B</span><br></pre></td></tr></table></figure><h3 id="虚线连接"><a href="#虚线连接" class="headerlink" title="虚线连接"></a>虚线连接</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A-.-B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A-.-B</span><br></pre></td></tr></table></figure><h3 id="虚线箭头连接"><a href="#虚线箭头连接" class="headerlink" title="虚线箭头连接"></a>虚线箭头连接</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A-.->B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A-.->B</span><br></pre></td></tr></table></figure><h3 id="粗实线连接"><a href="#粗实线连接" class="headerlink" title="粗实线连接"></a>粗实线连接</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A===B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A===B</span><br></pre></td></tr></table></figure><h3 id="粗实线箭头连接"><a href="#粗实线箭头连接" class="headerlink" title="粗实线箭头连接"></a>粗实线箭头连接</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A==>B</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A==>B</span><br></pre></td></tr></table></figure><h3 id="其他连接方式"><a href="#其他连接方式" class="headerlink" title="其他连接方式"></a>其他连接方式</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A--oB--xCo--oD<-->Ex--xF</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line">A--oB--xC o--oD<-->E x--xF</span><br></pre></td></tr></table></figure><h2 id="例子"><a href="#例子" class="headerlink" title="例子"></a>例子</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart TB</span><br><span class="line">A & B & C ---> D & E & F</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flowchart TB</span><br><span class="line">A & B & C ---> D & E & F</span><br></pre></td></tr></table></figure><h2 id="子图"><a href="#子图" class="headerlink" title="子图"></a>子图</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">subgraph title</span><br><span class="line">graph definition</span><br><span class="line">end</span><br></pre></td></tr></table></figure><h3 id="例子-1"><a href="#例子-1" class="headerlink" title="例子"></a>例子</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">flowchart TB</span><br><span class="line">c1-->a2</span><br><span class="line">subgraph one[名字]</span><br><span class="line">a1-->a2</span><br><span class="line">end</span><br><span class="line">subgraph two</span><br><span class="line">b1-->b2</span><br><span class="line">end</span><br><span class="line">subgraph three</span><br><span class="line">c1-->c2</span><br><span class="line">end</span><br><span class="line">one-->two</span><br><span class="line">two-->three</span><br><span class="line">three-->a2</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">flowchart TB</span><br><span class="line">c1-->a2</span><br><span class="line">subgraph one[名字]</span><br><span class="line">a1-->a2</span><br><span class="line">end</span><br><span class="line">subgraph two</span><br><span class="line">b1-->b2</span><br><span class="line">end</span><br><span class="line">subgraph three</span><br><span class="line">c1-->c2</span><br><span class="line">end</span><br><span class="line">one-->two</span><br><span class="line">two-->three</span><br><span class="line">three-->a2</span><br></pre></td></tr></table></figure><h2 id="样式设置"><a href="#样式设置" class="headerlink" title="样式设置"></a>样式设置</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line"> id1(Start)-->id2(Stop)</span><br><span class="line"> style id1 fill:#f9f,stroke:#333,stroke-width:4px</span><br><span class="line"> style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">flowchart LR</span><br><span class="line"> id1(Start)-->id2(Stop)</span><br><span class="line"> style id1 fill:#f9f,stroke:#333,stroke-width:4px</span><br><span class="line"> style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5</span><br></pre></td></tr></table></figure><h1 id="时序图"><a href="#时序图" class="headerlink" title="时序图"></a>时序图</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">sequenceDiagram</span><br><span class="line"> Alice->>John: Hello John, how are you?</span><br><span class="line"> John-->>Alice: Great!</span><br><span class="line"> Alice->>John: See you later!</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>Mermaid是一个用于画流程图、状态图、时序图、甘特图的库,广泛用于Markdown编辑中。</p></summary>
<category term="Markdown" scheme="https://fsjz2020.github.io/tags/Markdown/"/>
</entry>
</feed>