WEBVTT

1
00:00:00.440 --> 00:00:02.440
您好，欢迎来到艺术家脚本。

2
00:00:02.450 --> 00:00:06.390
我的名字Sybren，这集叫烤。我的补充。

3
00:00:06.400 --> 00:00:09.820
我在社交媒体上询问了您的附加组件供我烘焙

4
00:00:09.830 --> 00:00:12.570
这样我们就可以经历它并看看有什么不好的地方。

5
00:00:12.570 --> 00:00:14.780
什么是好的，如何改进。

6
00:00:14.780 --> 00:00:18.290
我们观察了几个不同的成年人，在这一集的最后，我

7
00:00:18.290 --> 00:00:22.260
将提取一些一般提示和技巧供您在自己的程式码中使用

8
00:00:22.540 --> 00:00:25.500
汤普森在推特上说，嘿，谢谢，这是个好主意。

9
00:00:25.510 --> 00:00:28.740
我很高兴能有一些专业人士参与我的程式设计工作。

10
00:00:28.750 --> 00:00:32.430
第一个附加元件是 M 工作流程的专案经理，

11
00:00:32.430 --> 00:00:35.860
其他附加元件是一个简单的工具，用于在混合文件中重新载入图像，

12
00:00:35.860 --> 00:00:38.460
如果您有时间，请随意挑选一个，加油，

13
00:00:38.640 --> 00:00:40.710
我会先选第二个，因为

14
00:00:40.710 --> 00:00:43.350
看起来简单又美好。

15
00:00:43.540 --> 00:00:47.840
让我们来看看 Git hub 上的程式码，第一件事

16
00:00:47.840 --> 00:00:49.910
我注意到它有一个描述

17
00:00:49.910 --> 00:00:52.860
很好，并且可以自动重新加载图像纹理。

18
00:00:53.840 --> 00:00:56.130
然后有一堆文件，还有一个

19
00:00:56.130 --> 00:00:58.730
撕破脸说它可以容纳 80 个成年人。

20
00:00:58.730 --> 00:01:01.820
因此它与更现代的搅拌机版本兼容。

21
00:01:01.820 --> 00:01:04.959
我假设它也可以在 2.80 以上的版本上运行。

22
00:01:05.440 --> 00:01:07.540
它可以刷新混合文件的所有图像。

23
00:01:07.540 --> 00:01:11.600
它可以使用术语 or 来获取修改后的图像档案并在需要时重新载入它们。

24
00:01:11.610 --> 00:01:14.650
这非常方便，我已经想使用它了。

25
00:01:14.660 --> 00:01:18.530
它有一个下载链接，还有一个小演示视频。

26
00:01:18.540 --> 00:01:19.860
如果你想观看视频，

27
00:01:19.860 --> 00:01:23.660
我已将连结放在说明中，以便您只需单击即可。

28
00:01:23.670 --> 00:01:27.500
我正在查看那里的所有文件，但我不会

29
00:01:27.510 --> 00:01:32.330
确切地知道开发人员使用这些功能会发生什么。

30
00:01:32.340 --> 00:01:35.990
嗯，有 DEV，我不知道 DEV 怎么样

31
00:01:36.000 --> 00:01:39.550
与开发者功能不同，还有杂项

32
00:01:40.240 --> 00:01:43.820
可能是杂项的缩写。那么某些功能会去哪里呢？

33
00:01:43.820 --> 00:01:47.390
会不会很杂？会不会聋了？开发商会做尾巴吗？

34
00:01:47.400 --> 00:01:51.930
会是函数吗？所以我总是尽量避免命名事物。

35
00:01:51.940 --> 00:01:55.860
你尾随或帮手或杂物。

36
00:01:55.860 --> 00:01:59.300
一般来说，这表明它只是一个包

37
00:01:59.300 --> 00:02:01.960
随著时间的推移会扩展的东西

38
00:02:02.240 --> 00:02:04.660
这不是您想要在原始程式码中出现的内容。

39
00:02:05.340 --> 00:02:07.860
现在，让我们来看看分钟文件，

40
00:02:08.740 --> 00:02:12.760
文件中有 19 行，原始码有 71 行。

41
00:02:13.140 --> 00:02:16.810
这是一个相当小的文件，但非常好。所以它提供了一个很好的概述。

42
00:02:16.810 --> 00:02:18.930
它从版权资讯开始。

43
00:02:18.940 --> 00:02:24.060
当然是GPL许可证，法案资讯都给了，甚至节目

44
00:02:24.440 --> 00:02:26.960
您可以在其中找到此附加元件的设置

45
00:02:27.440 --> 00:02:32.360
那。欧元疲软。到目前为止，它已经记录了您重要的馅饼的轨迹。超好的。

46
00:02:32.940 --> 00:02:37.530
现在它导入导入库并从 period 进行检查并导入开发人员，

47
00:02:37.530 --> 00:02:39.800
这意味著从当前模组开始，

48
00:02:39.800 --> 00:02:42.060
导入名为 Developer You tales 的子模组。

49
00:02:42.440 --> 00:02:45.020
然后它尝试重新加载这是否有效。

50
00:02:45.020 --> 00:02:47.250
但一般重载方案是

51
00:02:47.250 --> 00:02:49.310
与多文件模组有点不同。

52
00:02:49.310 --> 00:02:51.350
但如果这对你有用，那就没问题了。

53
00:02:51.360 --> 00:02:54.620
然后我们的模组正在开发详细资讯设定成人模组。

54
00:02:54.620 --> 00:02:56.770
路径名指向本地。

55
00:02:56.780 --> 00:03:02.560
好的，魔法正在发生，然后是类，并且是一个空列表。进而

56
00:03:02.840 --> 00:03:04.300
所以这基本上是

57
00:03:04.300 --> 00:03:07.850
我猜收集了所有需要的Python类

58
00:03:07.850 --> 00:03:10.960
从子模组注册和注销。

59
00:03:11.340 --> 00:03:13.610
通常我不会这样做。

60
00:03:13.610 --> 00:03:17.360
我会给每个停止模组它自己的注册和未注册功能。

61
00:03:17.370 --> 00:03:22.180
只需从顶层函数呼叫即可。这样就没有魔法了。

62
00:03:22.190 --> 00:03:25.260
从哪里调用事物都非常清楚。

63
00:03:25.740 --> 00:03:28.760
是的，我不是这种魔法的忠实粉丝。

64
00:03:29.240 --> 00:03:32.480
然后是 from dot 函数，导入重新载入启动。

65
00:03:32.480 --> 00:03:36.540
因此，从子模组功能中，它导入了重新载入启动的东西。

66
00:03:36.550 --> 00:03:37.760
我认为这是一个功能。

67
00:03:38.240 --> 00:03:39.760
一

68
00:03:40.440 --> 00:03:40.950
好的

69
00:03:41.640 --> 00:03:43.650
然后，对于寄存器，一些

70
00:03:44.140 --> 00:03:46.860
添加的属性都很好。

71
00:03:47.240 --> 00:03:51.090
然后对于CLS中的类别称为暂存器类别。是的。

72
00:03:51.090 --> 00:03:55.460
因此，这使用您在此处定义的类别列表

73
00:03:55.940 --> 00:03:58.630
然后注册一切。好的。

74
00:03:58.630 --> 00:04:02.860
然后重新载入启动被加入为载入后处理程序。

75
00:04:03.240 --> 00:04:09.070
这里的 Dell CLS 确实没有必要，因为唯一可以做的就是

76
00:04:09.070 --> 00:04:14.520
在 python 中它会删除 CLS 名称，但在下一种情况下，

77
00:04:14.520 --> 00:04:17.140
无论如何，CLS 都会分配给它下一个类别。

78
00:04:17.140 --> 00:04:18.560
那么它又存在了。

79
00:04:18.589 --> 00:04:22.050
这与 C plus plus 不同，它会删除记忆体中的实际物件。

80
00:04:22.240 --> 00:04:25.990
它只是从当前名称空间中删除该名称，以便您无法再使用它

81
00:04:26.440 --> 00:04:30.130
因为所有的魔法。我仍然不知道在哪里定义了什么。

82
00:04:30.140 --> 00:04:32.710
那么让我们看看另一个文件。

83
00:04:32.720 --> 00:04:35.580
我们先来看看运算符，看看有哪些运算符。

84
00:04:35.580 --> 00:04:40.360
有很多东西正在进口更多东西来自呃哦，

85
00:04:40.440 --> 00:04:44.370
如果您必须从该模组汇入这么多名称，

86
00:04:44.380 --> 00:04:47.760
我宁愿只导入模组本身，

87
00:04:47.940 --> 00:04:52.090
就像从导入函数然后呼叫函数，开始更新，

88
00:04:52.090 --> 00:04:54.250
亲爱的，检视器或功能不明白。

89
00:04:54.260 --> 00:04:56.870
那样。更容易再次看到事物的来源。

90
00:04:56.880 --> 00:05:03.710
这应该是程式码的核心。哦，拜讬。只是不，不要，不，不要这样做。

91
00:05:03.720 --> 00:05:07.260
就像最后你的程式码 python 是基于发明的

92
00:05:07.540 --> 00:05:08.350
和

93
00:05:08.640 --> 00:05:12.060
如果你这样写，就很难看出发生了什么事。

94
00:05:12.070 --> 00:05:17.750
嗯，如果修改列表的长度不等于零。

95
00:05:17.760 --> 00:05:21.610
这意味著如果里面有东西自动指向，

96
00:05:21.610 --> 00:05:24.910
可以将事情转化为对你的霸凌。

97
00:05:24.920 --> 00:05:26.360
所以，所以一个清单。

98
00:05:26.360 --> 00:05:30.060
如果为空则视为 false，如果不为空则视为 true。

99
00:05:30.140 --> 00:05:33.270
所以这意味著你可以说如果修改了列表

100
00:05:33.280 --> 00:05:36.730
而不是土地修改列表不等于零。

101
00:05:36.740 --> 00:05:40.650
我有点超前了。让我们来看看。 WMS 上下文视窗管理器。

102
00:05:40.650 --> 00:05:44.860
好吧，够了。这里没有使用这里没有使用。这样就可以利用了。

103
00:05:44.860 --> 00:05:45.460
降低。

104
00:05:45.740 --> 00:05:49.100
嗯，然后修改后的列表和丢失的列表实际上是修改后的图像。

105
00:05:49.100 --> 00:05:52.470
所以我猜测会重新载入所有修改过的图片，

106
00:05:52.470 --> 00:05:54.350
就像在磁碟上修改的映像一样。

107
00:05:54.440 --> 00:05:57.260
所以最好将其放在一个单独的函数中。那挺好的。

108
00:05:57.940 --> 00:06:02.580
因此，如果图像发生修改，我们会更新检视器，这也很好。

109
00:06:02.590 --> 00:06:04.790
它还传递了上下文。这也很好。

110
00:06:04.800 --> 00:06:08.160
呃，我不知道为什么这里没有上下文。也许没有必要。

111
00:06:08.160 --> 00:06:11.440
也许使用全域上下文。我不知道这里有风格冲突。

112
00:06:11.440 --> 00:06:14.650
所以这里使用驼峰式大小写，使用底线

113
00:06:14.840 --> 00:06:16.690
嗯，选择一个并坚持下去。

114
00:06:16.690 --> 00:06:19.880
我想说选择 pep 8 中记录的 python 风格，

115
00:06:19.880 --> 00:06:23.060
这意味著在此处使用下划线表示函数

116
00:06:23.840 --> 00:06:26.060
如果没有遗失影像，

117
00:06:27.440 --> 00:06:31.690
自动重新载入遗失的图像，否则是错误的。自动重新载入遗失的图片。

118
00:06:31.690 --> 00:06:34.870
这是真的吗？好吧，你可以在这里重写它。

119
00:06:34.870 --> 00:06:38.750
我的程式码编辑器也有同样的功能，所以我可以告诉你我的意思

120
00:06:39.440 --> 00:06:42.860
首先，我将重新发明它。这已经好一点了。

121
00:06:43.640 --> 00:06:46.760
现在，如果我们比较一下，上面的 F 会发生什么，

122
00:06:46.770 --> 00:06:52.030
我们可以看到，如果土地修改器清单不为零，那么我们就做一些事情。

123
00:06:52.030 --> 00:06:52.170
所以，

124
00:06:52.170 --> 00:06:57.690
首先我们检查该列表是否有元素，然后我们有一个非常相似的

125
00:06:57.690 --> 00:07:00.130
寻找 if 语句来检查它是否是

126
00:07:00.130 --> 00:07:02.450
空了，这会消耗你的脑力。

127
00:07:03.040 --> 00:07:04.120
所以我想说

128
00:07:04.730 --> 00:07:06.550
如果修改了列表，

129
00:07:07.040 --> 00:07:07.750
就是这样。

130
00:07:07.760 --> 00:07:09.670
如果修改列表，则更新查看者，

131
00:07:09.670 --> 00:07:13.890
上下文如果他们的更新检视器中有任何内容，这是

132
00:07:13.890 --> 00:07:17.320
方法更简单，我们也可以做类似的事情。

133
00:07:17.320 --> 00:07:20.300
但这会检查它是否为空，因此它是空的。

134
00:07:20.300 --> 00:07:25.660
如果它不为空，它就会执行此操作。所以这检查它是否为空

135
00:07:26.240 --> 00:07:30.860
如果没有遗漏列表，那么你可以写这个，然后说一些错误的东西。

136
00:07:30.860 --> 00:07:31.880
说了句实话。

137
00:07:31.890 --> 00:07:35.010
我不太喜欢 if not 与 else 结合使用

138
00:07:35.060 --> 00:07:38.400
如果你要同时处理真假案件

139
00:07:38.410 --> 00:07:42.460
无论如何，你不妨透过以下方式摆脱否定

140
00:07:42.470 --> 00:07:44.660
交换 F 中的内容和 else 中的内容？

141
00:07:45.540 --> 00:07:51.560
所以我将 equals 向下移动，将 equals true 向上移动，然后将它们删除，而不是在这里

142
00:07:52.340 --> 00:07:55.800
现在。你所拥有的是连续两张支票

143
00:07:55.970 --> 00:07:59.560
做同样的事情。如果修改了列表，请执行某些操作

144
00:07:59.940 --> 00:08:03.000
如果缺少列表，请执行其他操作。反其道而行。

145
00:08:03.200 --> 00:08:06.650
像这样的改进很酷的一点是它确实有帮助

146
00:08:06.650 --> 00:08:10.060
你的程式码的可读性，我实际上经常这样做。

147
00:08:10.060 --> 00:08:14.280
一旦我写完程式码，我会回去说，好吧，现在可以了，

148
00:08:14.280 --> 00:08:17.440
我可以改进它吗？

149
00:08:17.440 --> 00:08:18.960
我们可以更进一步

150
00:08:19.140 --> 00:08:21.870
因为基本上这就是说如何

151
00:08:21.870 --> 00:08:25.360
当有遗失的图像时重新载入遗失的图像。

152
00:08:25.370 --> 00:08:27.750
所以我们可以把它写成一个表达式。

153
00:08:29.740 --> 00:08:32.860
这做了完全相同的事情

154
00:08:33.340 --> 00:08:36.470
如果缺少清单被认为是真正的牛市。

155
00:08:36.470 --> 00:08:39.510
缺少列表为 true 并将 true 指派给 auto。

156
00:08:39.510 --> 00:08:43.610
重新加载丢失的图像，当列表为空时也是如此，它是还是错误？

157
00:08:43.620 --> 00:08:46.960
所以这一行表达了你真正想要的。

158
00:08:46.970 --> 00:08:50.260
当存在遗失影像时，也要重新检查遗失的影像。

159
00:08:50.740 --> 00:08:52.870
剩下的教练好像是为了调试

160
00:08:52.870 --> 00:08:55.750
在这里您也可以看到导入的问题

161
00:08:56.340 --> 00:09:02.040
如果您汇入 如果您从全域变数汇入 已签署的 Kumar 已重新载入。

162
00:09:02.050 --> 00:09:05.550
现在你突然在这里签名并重新加载并失踪

163
00:09:06.040 --> 00:09:08.460
很难看出它是从哪里来的。

164
00:09:09.540 --> 00:09:10.930
让我们继续添加。

165
00:09:10.940 --> 00:09:14.020
下一个函数是加载前面并立即

166
00:09:14.020 --> 00:09:15.750
我看到一些我真的不喜欢的东西

167
00:09:16.240 --> 00:09:17.950
try except 区块的区域

168
00:09:18.440 --> 00:09:22.470
except 它只是一个裸露的 except 所以它会捕获任何东西。

169
00:09:22.480 --> 00:09:25.710
这意味著当使用者按下键盘按钮时它也会捕获键盘中断

170
00:09:25.710 --> 00:09:29.330
按控制 C 中断某些悬挂操作。

171
00:09:29.340 --> 00:09:33.270
它会捕获任何错误，包括您根本不想捕获的错误。

172
00:09:33.280 --> 00:09:38.270
然后这段程式码出现了竞争异常。它不再包含任何东西。

173
00:09:38.270 --> 00:09:40.920
因此，当原始异常提供时

174
00:09:40.920 --> 00:09:43.360
有关出了什么问题的一些资讯。

175
00:09:43.440 --> 00:09:47.620
也许资金无法加载，也许是字体损坏的记忆。

176
00:09:47.620 --> 00:09:49.050
也许还有其他问题。

177
00:09:49.640 --> 00:09:50.450
你永远不知道。

178
00:09:50.840 --> 00:09:51.040
是的，

179
00:09:51.440 --> 00:09:56.170
所以只需删除它即可，否则，这段程式码非常简单，所以没关系。

180
00:09:56.180 --> 00:09:56.710
一，

181
00:09:56.720 --> 00:10:00.500
我真正想看到的最后一件事是一些关于什么的文档

182
00:10:00.500 --> 00:10:05.310
self 就是这种情况，因为当你从上到下浏览程式码时，

183
00:10:05.310 --> 00:10:06.910
你不知道那是什么。

184
00:10:06.920 --> 00:10:11.120
让我们快速浏览一下下一个运算子。这是实际的重新加载计时器。

185
00:10:11.130 --> 00:10:14.800
因为这个影片已经持续了很长一段时间了，所以一切都已经结束了

186
00:10:14.800 --> 00:10:18.750
进入快速上升模式，这里我们有 os 路径的 os 路径连接。

187
00:10:18.750 --> 00:10:21.030
那没有必要。你可以这样做。

188
00:10:21.030 --> 00:10:23.110
我不会创建常规的 python 属性

189
00:10:23.110 --> 00:10:25.720
与贷方属性相同，但属性错误除外。

190
00:10:25.720 --> 00:10:26.960
不，只要修复你的程式码，

191
00:10:26.960 --> 00:10:30.340
确保没有属性错误与 false 比较，不。

192
00:10:30.350 --> 00:10:31.960
如果没有就做

193
00:10:32.540 --> 00:10:33.960
回国后的其他情况。

194
00:10:33.970 --> 00:10:35.130
不，我不会这么做，

195
00:10:35.140 --> 00:10:37.250
你可以这样做，这意味著你

196
00:10:37.250 --> 00:10:40.550
可以翻转这个条件然后返回，

197
00:10:40.550 --> 00:10:43.270
透过这个事件我们可以再做一次。

198
00:10:43.280 --> 00:10:46.760
存在，如果不是别的东西的话。那你可以翻转它

199
00:10:47.240 --> 00:10:50.700
然后这样做，现在我已经发明了这个程式码两倍的程式码，

200
00:10:50.710 --> 00:10:51.820
我们以前见过它。

201
00:10:51.830 --> 00:10:54.770
不，不要在函数的地方这样做，把程式码放在那里，

202
00:10:54.770 --> 00:10:56.230
从两个不同的地方调用它。

203
00:10:56.240 --> 00:10:58.560
其余程式码几乎遵循相同的风格。

204
00:10:58.560 --> 00:11:01.110
所以我不会再经历那件事了。非常感谢。

205
00:11:01.110 --> 00:11:05.150
汤顿借给我你的程式码来进行烘焙，让我们继续下一个。

206
00:11:05.340 --> 00:11:10.970
所以下一个成年人就在一个立方体旁边，他非常切中要点，玫瑰我的补充。那么我们就开始吧。

207
00:11:10.980 --> 00:11:14.160
它也被称为他自己的 Git 中心，因此我们可以滚动浏览它。

208
00:11:14.170 --> 00:11:18.580
我看到一堆文件，其中包括 rip me，这很好。它有一些例子。

209
00:11:18.590 --> 00:11:22.070
它显示了它可以做什么。德国人喜欢称投影机。投影机。

210
00:11:22.070 --> 00:11:23.810
其实在荷兰也一样。

211
00:11:23.820 --> 00:11:28.350
让我们来看看 init 饼图，因为这是所有汇入日志记录开始的地方。

212
00:11:28.540 --> 00:11:32.370
凉爽的。好的。嗯，单独进口。这也不错。

213
00:11:32.380 --> 00:11:36.830
帐单资讯似乎很完整，不是。不要这样做。

214
00:11:36.840 --> 00:11:41.960
这配置了 python 的整个日志记录模组，并且基本上强制每个

215
00:11:41.960 --> 00:11:45.850
使用者以特定格式对所有内容进行侦错日志记录。

216
00:11:45.940 --> 00:11:46.830
这确实是，

217
00:11:46.830 --> 00:11:48.940
这是你应该留给使用者的事情

218
00:11:48.940 --> 00:11:52.010
或其他开发人员控制他们的系统。

219
00:11:52.020 --> 00:11:56.160
另外，这里的日志根本没有被使用。所以创建它没有意义。

220
00:11:56.540 --> 00:11:59.520
好的。每个模组单独注册和未注册的函数。

221
00:11:59.520 --> 00:12:04.310
这就是我喜欢看到的。那我们来看看运营商。只有一个。

222
00:12:04.320 --> 00:12:08.510
它用周期设定渲染引擎。让我们来看看投影机本身。

223
00:12:08.510 --> 00:12:09.650
我有点期待

224
00:12:09.840 --> 00:12:13.780
将新投影机新增至场景的操作员。

225
00:12:13.790 --> 00:12:16.950
以同样的方式，我们将猴子网格新增到网格选单中。

226
00:12:17.240 --> 00:12:19.580
同样，您将记录基本冲突称为记录，

227
00:12:19.590 --> 00:12:22.070
这再次复盖您的配置

228
00:12:22.070 --> 00:12:23.950
刚才在不同的模组中说过。

229
00:12:23.950 --> 00:12:26.470
所以这确实是一种奇怪的处理方式。

230
00:12:26.480 --> 00:12:29.690
正如我之前所说，我不喜欢将模组称为助手。

231
00:12:29.690 --> 00:12:33.310
诸如此类的杂项。但让我们来看看这些。

232
00:12:33.320 --> 00:12:37.460
取得投影机取得上下文并仅选择预设为 false 的值。

233
00:12:37.740 --> 00:12:41.810
但是当您查看参考文献时，您只能在只有 selected 为 true 的情况下呼叫它。

234
00:12:41.820 --> 00:12:45.190
那么为什么不直接命名该函数获取选定的投影机并

235
00:12:45.190 --> 00:12:48.850
预设情况下，使用随机颜色 Alpha 等于 false 来结束它。

236
00:12:48.850 --> 00:12:49.920
您只使用它两次。

237
00:12:49.920 --> 00:12:52.940
那为什么不删除预设值并只传递 alpha

238
00:12:52.940 --> 00:12:54.820
是真的，阿尔法是假的，然后你

239
00:12:54.820 --> 00:13:00.250
明确地说我喜欢的是你说阿尔法是真实的，而不仅仅是真实的。

240
00:13:00.260 --> 00:13:03.810
这使得该特定通话中发生的情况变得更加清晰。

241
00:13:03.820 --> 00:13:07.320
那么对于程式码的其余部分，您定义了一些很好的东西，

242
00:13:07.320 --> 00:13:08.600
但我来这里不是为了友善

243
00:13:08.870 --> 00:13:13.680
然后是投影机。 Ot 随机改变颜色。我们看到的第一个运算符。

244
00:13:13.690 --> 00:13:16.060
为什么这不在操作员模组中？

245
00:13:16.070 --> 00:13:19.350
发生了一些奇怪的事情，因为 poll 方法只允许

246
00:13:19.360 --> 00:13:22.950
当所选投影机的数量等于一台时所呼叫的运算子。

247
00:13:23.040 --> 00:13:24.360
但然后你选择。

248
00:13:24.370 --> 00:13:27.770
但在这里，你拿著所有的投影机来观察它们。

249
00:13:27.770 --> 00:13:31.760
因此，如果您选择了多个，则实际上搅拌机将成为搅拌机。

250
00:13:31.760 --> 00:13:34.780
这基本上是处理活动对象之间的区别

251
00:13:34.780 --> 00:13:38.550
致力于选择，这段程式码似乎混淆了两者。

252
00:13:38.560 --> 00:13:40.760
然后使用函数创建项目纹理。

253
00:13:40.940 --> 00:13:43.620
您可以根据解析度建构图像名称，这很好。

254
00:13:43.630 --> 00:13:47.210
然后检查图像是否存在，然后使用

255
00:13:47.220 --> 00:13:50.860
运算符来实际创建图像（如果尚不存在）。

256
00:13:51.740 --> 00:13:55.180
这种方法的问题是该操作符可能会创建

257
00:13:55.180 --> 00:13:57.380
与您指定的名称不同的影像。

258
00:13:57.390 --> 00:14:01.260
即使具有该名称的图像也已经存在。它只会附加 001。

259
00:14:01.270 --> 00:14:04.580
这意味著该行实际上可能会存取错误的图像。

260
00:14:04.590 --> 00:14:08.260
现在，由于前面有一行，发生这种情况的可能性几乎为零。

261
00:14:08.340 --> 00:14:10.500
但我永远不会用这个。反正。

262
00:14:10.510 --> 00:14:13.670
在这里，我们已经解码了我的编辑器，以便我可以向您展示我要做的一些更改。

263
00:14:13.680 --> 00:14:17.870
因此，我不会将其放在 f 中，而是会说图像是这个吗？

264
00:14:17.880 --> 00:14:21.310
这个 get 函数基本上意味著给我一个具有该名称的图像。

265
00:14:21.320 --> 00:14:24.350
如果不存在，不要抛出错误，而只是返回none。

266
00:14:24.360 --> 00:14:29.760
如果不是图像，则建立一个新图像。你可以这样做，

267
00:14:30.640 --> 00:14:33.290
这会创建完全相同的图像，除了它给你

268
00:14:33.290 --> 00:14:35.680
对刚刚建立的资料区块的引用。

269
00:14:35.690 --> 00:14:38.310
因此，即使这个名字不可用，他们

270
00:14:38.310 --> 00:14:40.980
选择其他事情或发生完全不同的事情。

271
00:14:40.990 --> 00:14:44.200
您获得您感兴趣的实际图像资料块

272
00:14:44.330 --> 00:14:46.240
然后你可以设定它的属性。

273
00:14:46.250 --> 00:14:46.830
在这之中，

274
00:14:46.870 --> 00:14:50.230
在这种情况下，我们必须设定生成的类型，因为我们不能直接传递它

275
00:14:50.230 --> 00:14:54.850
对于新功能，这只能使用图像点，使用假用户是正确的。

276
00:14:54.860 --> 00:14:57.450
我认为这读起来更好一点，而且

277
00:14:57.450 --> 00:15:00.580
对幕后发生的事情做出更少的假设。

278
00:15:00.820 --> 00:15:02.880
下一个函数在投影机上呼叫。

279
00:15:02.880 --> 00:15:05.000
没有一棵树可以发现，我认为这是一个相当大的树

280
00:15:05.000 --> 00:15:07.590
好名字，因为它准确地说明了它在做什么。

281
00:15:07.600 --> 00:15:11.650
它被记录为该功能将聚光灯变成投影仪

282
00:15:11.840 --> 00:15:13.650
这是我们第一次了解到

283
00:15:13.650 --> 00:15:16.370
投影机实际上被建模为聚光灯。

284
00:15:16.380 --> 00:15:18.410
这实际上是我所期望的

285
00:15:18.410 --> 00:15:20.840
阅读我的内容，而不是在某些程式码中间。

286
00:15:20.850 --> 00:15:23.020
所以当我们向下滚动时我注意到的是

287
00:15:23.020 --> 00:15:25.150
与搅拌机版本进行比较。

288
00:15:25.160 --> 00:15:26.570
我认为这是一个好主意。

289
00:15:26.580 --> 00:15:29.560
唯一的事情是输入区域上的索引

290
00:15:29.560 --> 00:15:32.610
也可以在输入中使用字串而不是写入

291
00:15:32.610 --> 00:15:35.800
三个你也可以写出字串比例原子的其余部分

292
00:15:35.800 --> 00:15:39.430
很无聊，因为写的程式码非常清楚它在做什么。

293
00:15:39.470 --> 00:15:42.810
我唯一的评论是它还可以使用更多评论。

294
00:15:42.820 --> 00:15:46.540
那么，让我们继续讨论我今天要烤的最后一个成人。

295
00:15:46.580 --> 00:15:49.130
安比想知道你要读多久的书

296
00:15:49.130 --> 00:15:51.810
写得好，不只要你的广告。

297
00:15:51.820 --> 00:15:55.950
他将混合纹理工具添加到混合器中以进行简单的图像处理

298
00:15:56.140 --> 00:16:00.220
我希望原始码像描述一样简单。

299
00:16:00.230 --> 00:16:04.740
因此，当我查看该档案时，我已经注意到这里有一个 get 子模组。

300
00:16:04.750 --> 00:16:08.270
取得一些模组是组合多个 Git 储存库的一种方法

301
00:16:08.270 --> 00:16:11.650
到一个专案中，我想添加一个搅拌机。

302
00:16:11.650 --> 00:16:15.200
这实际上可能是矫枉过正了。让我们从馅饼的末尾重新开始。

303
00:16:15.210 --> 00:16:17.460
免费软体，非常好用。

304
00:16:17.640 --> 00:16:20.470
现在我们有了一些重要的魔法。

305
00:16:20.480 --> 00:16:23.130
Numpy是一个Python库，可以让你做数字

306
00:16:23.130 --> 00:16:25.800
处理并且擅长处理大量资料。

307
00:16:25.800 --> 00:16:28.000
所以认为对于这个特殊的情况来说这是一个不错的选择

308
00:16:28.000 --> 00:16:30.140
成人，因为它必须处理图像。

309
00:16:30.150 --> 00:16:33.390
但剩下的显然 Q 派基本上是

310
00:16:33.390 --> 00:16:36.850
库允许您执行与 Numpy 相同的操作，但随后

311
00:16:36.850 --> 00:16:40.100
再次在你的 GPU 上添加一个我认为这是一个不错的选择

312
00:16:40.100 --> 00:16:43.410
在这里使用，但它的处理方式真的很奇怪。

313
00:16:43.420 --> 00:16:46.290
可以将 active 设为 false 或 true，取决于

314
00:16:46.290 --> 00:16:48.250
关于提示点是否已载入。

315
00:16:48.260 --> 00:16:51.560
对我来说，这件外套看起来像是在尝试使用杯子 i（如果存在的话）

316
00:16:51.560 --> 00:16:56.350
从系统中，它可以被加载，否则回退到 Numpy。

317
00:16:56.360 --> 00:16:57.030
然而，

318
00:16:57.030 --> 00:17:01.060
这并不是真正令人困惑的读法，最后我不明白

319
00:17:01.060 --> 00:17:03.400
知道其余程式码将使用什么。

320
00:17:03.940 --> 00:17:06.180
让我举一个例子来说明我将如何做到这一点。

321
00:17:06.190 --> 00:17:06.960
所以首先，

322
00:17:06.960 --> 00:17:09.500
我假设我们想要使用 Q 派，除非

323
00:17:09.500 --> 00:17:11.910
这是不可用的，然后我们想使用裁判。

324
00:17:11.920 --> 00:17:16.270
但最终程式码将使用一个或另一个库。

325
00:17:16.339 --> 00:17:19.440
所以尝试导入占用是可以的。

326
00:17:19.450 --> 00:17:23.880
但让我们将其导入为 np importing Numpy S n p 是

327
00:17:23.880 --> 00:17:27.319
非常常见，因为该前缀在程式码中被大量使用。

328
00:17:27.329 --> 00:17:30.450
两个字母和五个字母之间的差异将是相当大的

329
00:17:30.460 --> 00:17:33.660
考虑到典型线路上的意义数量。

330
00:17:33.660 --> 00:17:37.810
因此，让我们继续使用该 mp 并使用 Q 派作为替代品。

331
00:17:37.820 --> 00:17:39.690
所以我们要尝试导入 Q 派。

332
00:17:40.040 --> 00:17:44.900
如果失败，他们将导入 Numpy ，两者最终都会作为 mp 名称。

333
00:17:44.900 --> 00:17:46.620
所以一旦完成这件事，

334
00:17:46.630 --> 00:17:51.560
我们可以直接说 mp dot ，它就会使用这里加载的任何内容。

335
00:17:51.640 --> 00:17:54.600
这立即向读者展示了正在发生的事情

336
00:17:54.600 --> 00:17:57.160
这里以及这段程式码背后的意图是什么。

337
00:17:57.640 --> 00:17:57.920
现在，

338
00:17:57.920 --> 00:18:01.920
我已经向前看了一点，kuna Active 仅用于

339
00:18:01.920 --> 00:18:06.680
亚当偏好中的一个地方说古巴激进分子是否错误。

340
00:18:06.680 --> 00:18:13.520
好吧，如果 np 点名称等于 numpy，我们现在可以正确地代替这个，这可以避免

341
00:18:13.520 --> 00:18:15.300
全程追踪已载入的内容和已载入的内容

342
00:18:15.300 --> 00:18:17.670
不是因为 python 已经为我们做到了这一点。

343
00:18:18.340 --> 00:18:21.030
所以优惠券是一个你可以安装的库。

344
00:18:21.040 --> 00:18:23.440
它不与搅拌机捆绑在一起，所以

345
00:18:23.440 --> 00:18:25.620
制作了一个可以为我们下载的运营商，

346
00:18:25.620 --> 00:18:26.590
这非常好。

347
00:18:26.600 --> 00:18:31.000
但他的做法与进口煤炭的分加工不太一样。

348
00:18:31.010 --> 00:18:34.550
我不会那么做，因为这样你的名字里面就有了煤炭的名字，

349
00:18:34.550 --> 00:18:35.350
那里有空间

350
00:18:35.540 --> 00:18:38.700
你会接到这种叫煤炭的电话

351
00:18:38.700 --> 00:18:42.250
并不是很明显它实际上是在呼叫子程序。

352
00:18:42.250 --> 00:18:46.480
所以我总是说进口工艺，这是煤炭的工艺但是，

353
00:18:46.480 --> 00:18:49.450
呼叫的子进程不会检查任何错误。

354
00:18:49.460 --> 00:18:53.060
所以它可能会完全失败，而你却不会知道。

355
00:18:53.440 --> 00:18:54.360
所以代替这个，

356
00:18:54.360 --> 00:18:58.780
使用带有检查等于 true 的运行过程作为参数，那么至少它

357
00:18:58.780 --> 00:19:00.510
将阻止您的指向程式码运行任何

358
00:19:00.510 --> 00:19:03.830
当下载或安装失败时进一步。

359
00:19:03.840 --> 00:19:06.250
在这种情况下，你会遇到双重问题，因为

360
00:19:06.260 --> 00:19:09.720
在导入 QP 之前，您已经说过古巴积极正确。

361
00:19:09.730 --> 00:19:13.480
因此，即使所有这些输入都失败，您的密码也会再次失败。

362
00:19:13.490 --> 00:19:17.770
但随后你的可爱活动已经设定为 true，然后你的状态就一团糟了。

363
00:19:18.140 --> 00:19:20.450
让我们再浏览一下程式码。

364
00:19:21.240 --> 00:19:24.730
我看到很多小函数都在做一些非常具体的事情，

365
00:19:24.730 --> 00:19:28.510
这很好，但命名有点奇怪。

366
00:19:28.520 --> 00:19:29.360
什么是大？

367
00:19:29.740 --> 00:19:32.470
邻居平均值做了什么，它回传什么？

368
00:19:32.470 --> 00:19:35.460
根本没有关于任何类型的文档。

369
00:19:35.460 --> 00:19:39.370
没有任何类型的符号可以解释传回的内容或预期的内容。

370
00:19:39.380 --> 00:19:43.560
特别是当您在这里使用短变数名称时。就像哦我和d

371
00:19:44.280 --> 00:19:45.470
我不知道发生了什么事

372
00:19:45.750 --> 00:19:47.160
零卷

373
00:19:47.740 --> 00:19:48.850
是一个角色零。

374
00:19:49.340 --> 00:19:51.170
为什么它与卷筒不同

375
00:19:52.640 --> 00:19:57.220
为什么角色为零 与这里的广告卷零不同，

376
00:19:57.220 --> 00:20:00.780
如果您有评论需要解释参数的含义。

377
00:20:00.780 --> 00:20:04.220
只需以不同的方式命名参数即可，而不是 SSP

378
00:20:04.230 --> 00:20:06.950
命名的故事而不是激烈的命名强度。

379
00:20:07.440 --> 00:20:09.930
所以卷积是一种影像运算。

380
00:20:10.050 --> 00:20:13.310
这里有一个问题，因为它没有告诉我们是否

381
00:20:13.310 --> 00:20:17.550
来源图像已更改或是否返回新图像。

382
00:20:17.600 --> 00:20:19.790
这是透过此代码允许的。

383
00:20:19.800 --> 00:20:21.620
还有这个灰阶函数，

384
00:20:21.650 --> 00:20:24.110
是否将给定影像转换为灰阶影像

385
00:20:24.120 --> 00:20:26.850
或它传回影像的灰阶副本。

386
00:20:27.040 --> 00:20:29.750
这应该被很好地记录下来，因为它

387
00:20:29.750 --> 00:20:32.050
确实可以帮助您了解正在发生的事情。

388
00:20:32.840 --> 00:20:36.560
向下卷动大约 1000 行程式码。

389
00:20:36.940 --> 00:20:41.350
我们得到这些类，它们是图像运算子产生器的集合类。

390
00:20:41.740 --> 00:20:45.590
这开始变得有点代码味道。

391
00:20:45.600 --> 00:20:48.930
它有一个名为generate的函数，然后它

392
00:20:48.930 --> 00:20:53.770
将 self 属性中的某些键设定为搅拌机属性

393
00:20:54.640 --> 00:20:58.600
它设定前缀，它设定资讯和类别

394
00:20:58.810 --> 00:21:01.910
然后它有一个软有效负载，它是一个 lambda 函数。

395
00:21:01.920 --> 00:21:04.380
我什至不会进入 lambda 函数实际上是

396
00:21:04.380 --> 00:21:06.960
我想知道这个图像运算符生成器是什么。

397
00:21:07.340 --> 00:21:11.450
我在另一个文件中找到了它，它是一个子图运算符产生器。

398
00:21:11.840 --> 00:21:15.220
它以某种方式获得了一个主名称

399
00:21:15.220 --> 00:21:18.860
通过开始然后它说 49 点等于跌倒

400
00:21:19.340 --> 00:21:21.860
因为我们已经看到了生成函数。

401
00:21:22.240 --> 00:21:27.060
然后最后它把自己的名字设定为image。 Ot，然后是自己的名字。

402
00:21:27.940 --> 00:21:30.550
所以它甚至不

403
00:21:31.640 --> 00:21:32.360
等待。但

404
00:21:32.840 --> 00:21:38.060
在这里你根本没有名字。所以我甚至不知道这个名字从何而来

405
00:21:39.040 --> 00:21:41.220
然后它调用创建了我猜

406
00:21:41.220 --> 00:21:44.510
创建搅拌机操作员，然后它说 self

407
00:21:44.510 --> 00:21:48.450
点 org 点 1st 99 点等于自力

408
00:21:48.450 --> 00:21:51.160
一个已经被设定为假发的帝国。

409
00:21:53.440 --> 00:21:57.150
我在 get stop 模组内找到了运算子产生器。

410
00:21:57.160 --> 00:22:00.090
所以我们从这里开始，它得到了

411
00:22:00.090 --> 00:22:02.840
主名称，然后指派给父名称。

412
00:22:02.840 --> 00:22:06.670
可见，父母才是主人。我什至不知道这意味著什么

413
00:22:07.240 --> 00:22:11.670
嗯，它说的是自我有效负载，而不是具有有效负载功能。

414
00:22:12.140 --> 00:22:12.640
一，

415
00:22:12.650 --> 00:22:15.010
然后还有一堆其他的东西要清空但是

416
00:22:15.010 --> 00:22:17.660
不是最后设定的名称

417
00:22:18.640 --> 00:22:23.950
还有一个 Creator oB 函数可以动态建立一个新类别。

418
00:22:24.340 --> 00:22:28.270
我认为这是聪明的代码，但有点太聪明了。

419
00:22:28.740 --> 00:22:33.040
很难跟上。尤其是当你进入搅拌机时

420
00:22:33.240 --> 00:22:35.360
并且这些运营商已经注册

421
00:22:35.840 --> 00:22:39.110
然后您想要搜寻该运算符的建立位置。

422
00:22:39.110 --> 00:22:40.360
你永远找不到它。

423
00:22:40.840 --> 00:22:44.110
类别大写的命名约定，然后

424
00:22:44.120 --> 00:22:47.260
底线 O T 下划线，然后是标识符的其余部分

425
00:22:47.840 --> 00:22:50.700
这非常有用，因为到处都在使用它。

426
00:22:50.700 --> 00:22:55.220
如果你有 Bp 点暴发户，你可以应用这些规则

427
00:22:55.220 --> 00:22:58.210
然后你可以在搅拌机中为类别名称指定一个名称。

428
00:22:58.210 --> 00:23:02.450
在原始码和这种结构中很容易找到它，

429
00:23:02.940 --> 00:23:04.160
这个名字不存在。

430
00:23:04.170 --> 00:23:06.840
我认为这段程式码的优点是

431
00:23:06.840 --> 00:23:09.920
亲自新增操作员非常容易。

432
00:23:09.920 --> 00:23:13.560
我会让程式码稍微大一点，类型多一点

433
00:23:13.940 --> 00:23:18.040
但然后把所有东西都放在应该很容易找到的地方，

434
00:23:18.040 --> 00:23:20.640
很容易理解事物是如何创建的。

435
00:23:20.700 --> 00:23:22.960
好吧，我们已经走到最后了。

436
00:23:22.970 --> 00:23:25.280
我希望你跟我一样喜欢这次上涨

437
00:23:25.280 --> 00:23:28.770
我最后的想法是把事情命名好，

438
00:23:28.780 --> 00:23:31.960
这样你以后在阅读的时候就不用动脑子了，

439
00:23:32.440 --> 00:23:36.930
尽早返回并改变这些条件，看看是否会有所不同。

440
00:23:36.970 --> 00:23:38.600
这就是本集的内容。

441
00:23:38.600 --> 00:23:42.360
如果您有任何问题或意见，请在下面留下，我很快就会见到您。



