纯干货,显存容量2g够用吗大小究竟有什么用

纯干货!显存大小究竟有什么用?
说到显卡,除了显示芯片外,最重要的部分大概就是显存了,在我们前几天介绍APU的时候,还特意提到了什么显存、频率带宽等,相信小伙伴们至少有了一个概念,那就是显存越多越好,越快越好。没错!但显存到底是干啥的?为什么要那么多?那么快呢?估计小伙伴们就不是很清楚了,小编今天就来讲讲这个事儿。
只干一件事,显存说来很简单
显存就是显示卡缓存,缓存这个东西我们前几天也提到过,就是个临时性的数据蓄水池,存放各个硬件的临时数据,也作为内存与各个硬件之间数据交换的缓冲。如果没有缓存,所有硬件的所有数据都要同时从内存读写,而且是以硬件自身的处理速度硬塞给内存,不管而内存这个“水池”的管道有多宽,还有没有其他的数据正在运行,就会造成内存乃至整个电脑数据流严重拥堵。
显存的速度远高于内存
显存的任务就是存储显卡需要的各种数据,我们知道越是精美、越是大尺寸的3D图像,数据量就越大,比如吃鸡的无缝式开放大地图要在一开局就整个搬进显存,所以对显存大小的要求就特别高。要是再设置成高画质,让地图上的草、树、房屋、车辆细节更多,数据量当然也就更加庞大,需要更大的显存支持。
如果显存不够了怎么办呢?多出来的数据还是只能往内存里放,不过内存的性能比显存差得多,堵车肯定会影响显卡性能。例如玩吃鸡的时候如果无法把地图整个装入显存,那么从内存载入地图数据的时候就会出现或多或少的延迟甚至卡顿,这时就要祈祷不要碰上敌人了,如果卡顿时正逢激烈交战,小编只能把一首《凉凉》唱给你听。
总之,显示芯片越强,能提供越好的3D画面,就要求配合的显存容量越大,速度越快。这就是为什么我们看到越高端的显示芯片,显存配置也总是越好,两者的配置几乎总是一一对应的,比如低端的GTX1050显卡安装2GB显存就行,而高端的GTX 1070就得用8GB显存配合,最高端显卡更是用到12GB显存。
3GB、5GB、6GB,GTX1060的显存什么鬼?
凡事总有例外,近期让小伙伴们挠头的三种GTX1060显存配置,怎么就能用同一个显示芯片配合三种不同的显存配置呢?其实道理很简单,这三种GTX1060显卡使用的根本不是同一款显示芯片,规格有明显不同,不过考虑到市场状况,没有进行区分罢了。以3GB版的GTX1060显卡为例,它的芯片比6GB版精简了一个流处理器群,流处理器数量从1280个减少到1152个,性能当然也有明显差距。
GTX 1060 3GB不仅显存变少,芯片也进行了阉割
为什么老黄要玩这种花招呢?因为他看中的还是市场,3GB版本GTX1060占据的是很多玩家特别关注的元价位段,既然GTX 1050Ti没有能力打到这个价位,又不想给GTX1060降价,那就干脆推出一个阉割版GTX1060吧,成本售价更低,能保证玩家流畅吃鸡游戏就行。
GTX1060 3GB在一般游戏中表现尚可,但在对显存容量要求较高的游戏中表现非常糟糕
GTX1060 5GB则是另一个角度的阉割作品,为了满足网吧的需求,通过减少一个内存颗粒来降低成本,而且性能比3GB版略高一些,能让玩家在更高游戏画质下吃鸡了。市场中有一种称谓可以很形象地说明它们的性能与定位,也就是将显存容量融入显卡型号,分别将其称为GTX、1066。
总之,显存的大小对显卡来说是很重要的。以后买显卡的时候不仅要看显示芯片,也一定要关心一下显存的容量哦。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点&b&1. 输入公式:&/b&&br&&p&Mac 下为 ctrl=. (windows下 alt=)&/p&&p&&b&2. 常见运算符:&/b&&/p&&p&【空格】在 word 中起到了转换的作用&br&(为了方便说明,下面使用【空格】代指按一下键盘的空格键)&/p&&ul&&li&&p&&strong&分号:&/strong& 直接a/b【空格】&/p&&/li&&li&&p&&strong&极限:&/strong&\limit【空格】&/p&&/li&&li&&p&&strong&积分:&/strong&\int【空格】&/p&&/li&&li&&p&&b&普通上下标:&/b&下标为 ?=, 上标为 ?shift= (windows下?改为Ctrl)&/p&&/li&&li&&p&&strong&公式上下标:&/strong&_和+, 举例:&/p&&br&&img src=&//www.zhihu.com/equation?tex=%5Cint_%7B3%7D%5E%7B4%7D+x& alt=&\int_{3}^{4} x& eeimg=&1&&&br&可以如以下打出:&br&\int【空格】_3^4【空格】x&/li&&li&&p&&strong&根号:&/strong&有两种打法,看喜欢,举例:&br&&img src=&//www.zhihu.com/equation?tex=%5Csqrt%5Bn%5D%7Ba%2Bb%7D+& alt=&\sqrt[n]{a+b} & eeimg=&1&&&/p&可如下打出:&br&\sqrt【空格】(n&a+b)【空格】&br&也可\root【空格】n\of(a+b)【空格】&/li&&li&&p&&strong&符号:&/strong&\Sigma【空格】\Delta【空格】&/p&&/li&&li&&p&&strong&特殊符号:&/strong& Mac 下? control【空格】&/p&&/li&&/ul&&b&3. 公式自动编号:&/b&&p&&b&关键词:三分表格,标签编号,自动图文集&/b&&br&&a href=&//link.zhihu.com/?target=http%3A//v.youku.com/v_show/id_XMTI5Nzc4OTUyMA%3D%3D.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&优酷视频:Mac Word 2016 公式自动居中和编号&/a&&/p&&p&&b&4. 参考链接:&/b&&/p&&ul&&li&&a href=&//link.zhihu.com/?target=http%3A//blog.csdn.net/ibingow/article/details/8613556& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&教你如何在word中像LaTex那样打公式&/a&&/li&&li&&a href=&http://www.zhihu.com/question/& class=&internal&&(mewing的回答)&/a&&/li&&li&&p&&a href=&//link.zhihu.com/?target=http%3A//unicode.org/notes/tn28/UTN28-PlainTextMath-v3.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Unicode Nearly Plain-Text Encoding of MathematicsVersion 3&/a&&/p&&/li&&/ul&
1. 输入公式: Mac 下为 ctrl=. (windows下 alt=)2. 常见运算符:【空格】在 word 中起到了转换的作用 (为了方便说明,下面使用【空格】代指按一下键盘的空格键)分号: 直接a/b【空格】极限:\limit【空格】积分:\int【空格】普通上下标:下标为 ?=, …
看到这个题目就一股热血冲上心头(≧?≦)!&br&【内含部分图片可能引起您的不适,请慎入】&br&&br&只说说有历史考究的天然资源,人工合成材料pass……&br&&br&【胭脂虫】&br&上面的大家都说了胭脂虫,我随便扩展一下。&br&·&br&这种虫原产于中南美洲,在至少一千八百年前就被古代印第安人用来化妆,给食品染色等广泛用于日常生活。之后的大航海时代被西班牙人带回欧洲,当时的欧洲红色染色传统材料是茜草,特别是四叶茜和六叶茜。胭脂虫的颜色比茜草染出来的红要浓郁很多,所以当时的欧洲贵族们都很喜欢。&br&&p&·&/p&&p&西班牙人为了利益,故意不公布胭脂虫的繁殖技术和物种信息,而让欧洲人对胭脂虫到底是个啥有各种联想,有猜想胭脂虫是一种花的种子、也有人说那是虫变成的果实等等。直到十六世纪末秘密被戳破,大家才知道原来是昆虫。&/p&&p&·&br&&/p&在十六世纪后期,胭脂虫又被东印度公司带到菲律宾,之后传到了中国,叫“洋红”。&br&看到“洋红”这个名字,就能理解为什么胭脂虫的红色会被叫做为洋红的原因了……就像番茄、胡瓜、西瓜一样,加了个“洋”字就带来了浓浓的舶来感……&br&&figure&&img src=&https://pic4.zhimg.com/50/af23ee020f66439fd2afd_b.jpg& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic4.zhimg.com/50/af23ee020f66439fd2afd_r.jpg&&&/figure&聚集在一起的雌虫们&br&·&br&&figure&&img src=&https://pic3.zhimg.com/50/93a62d677adee0e4b4e7_b.jpg& data-rawwidth=&220& data-rawheight=&220& class=&content_image& width=&220&&&/figure&其实胭脂虫染出来的颜色是深枣红色,不是我头一次听说时脑中蹦出来的胭脂红……一想到这点就好心动……&br&·&br&&p&在欧洲17世纪, 保存的许多肖像画里,从画家的写实表现可以判断出画中的人物衣服所表现的颜色和光泽,知道为什么不难看出他们的衣服材质吗?甚至,可以看出来是哪种原料染出来的。尤其是胭脂虫染出的深枣红色更容易被认出来。当年请得起画师用画的方式留住面貌的人,也必定是当时的豪豪们才负担得起的。&/p&&br&【紫胶虫】&br&在上面的胭脂虫东传之前,我们也有自己的染色虫——紫胶虫,也是被当作口红或胭脂的材料。&br&这种虫是南亚的热带特有的虫,中国也有。古代时被叫做“紫鑛”,记载曾被用于调制琉璃。&br&&blockquote&有百寺,琉璃为甓,错以金银,丹彩紫鑛涂地,覆以锦罽,王居亦如之。——《新唐书·南蛮传下·骠》&/blockquote&·&br&其实紫胶虫的色素含量不高,远没有胭脂虫那么高。它们体内的色素有效成分是Laccaic Acid,属于酸溶解的染料。&br&&figure&&img src=&https://pic2.zhimg.com/50/a21a31d3f_b.jpg& data-rawwidth=&944& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&944& data-original=&https://pic2.zhimg.com/50/a21a31d3f_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/50/6cceafb5500defaec821ad3_b.jpg& data-rawwidth=&242& data-rawheight=&220& class=&content_image& width=&242&&&/figure&没找到更准确的图片了……紫胶虫染出来的颜色是略偏紫的红色。&br&&figure&&img src=&https://pic4.zhimg.com/50/b92b1bf26be96d9abb3cf_b.jpg& data-rawwidth=&500& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic4.zhimg.com/50/b92b1bf26be96d9abb3cf_r.jpg&&&/figure&这个就是紫胶虫趴在树枝上分泌出的Lacciac acid,中医叫它“紫草茸”……没错它也是一味中药……&br&·&br&&p&说个跟题目没关系的……染色中使用了高温,紫胶虫的巢还含有虫胶质,冷却了会附着在锅边上,很难洗干净。紫胶虫的胶质有热塑性 ,也是早期黑胶唱片的原料之一&/p&&br&【角倍蚜+盐肤木=五倍子】&br&“五倍子”为角倍蚜在盐肤木上寄生后所形成的虫瘿。&br&寄生在漆树科盐肤木上的蚜虫,雌虫的口器戳进树干/叶柄的表皮……就像人的皮肤被蚊子咬了肿起来的现象,之后雌虫进入肿起来的囊肿里,一群一群地扎堆寄生,所以又被叫做“百虫仓”。&br&图片就是虫瘿部分。&br&&figure&&img src=&https://pic3.zhimg.com/50/a2ff8d99e6b4c17e3d71_b.jpg& data-rawwidth=&500& data-rawheight=&416& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic3.zhimg.com/50/a2ff8d99e6b4c17e3d71_r.jpg&&&/figure&&br&可以染色的部分不是紫胶虫这种昆虫,而是被虫附着过的树皮。树皮被咬产生了单宁。&br&·&br&染色方法是用高温煮,再用铁离子媒染染色,会马上出现蓝黑色的变化……很戏剧性。煮沸的时候,五倍子的闻起来像是酸辣汤的酸咸味道。&br&&figure&&img src=&https://pic4.zhimg.com/50/6bbe364b66f625c0fcfd_b.jpg& data-rawwidth=&500& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic4.zhimg.com/50/6bbe364b66f625c0fcfd_r.jpg&&&/figure&&br&这是五倍子和姜黄染出来的丝巾,五倍子染出来的颜色是带着紫的蓝黑色。&br&·&br&现在在中药铺里可以找到它,被当作止泻药卖……不过,较早之前,五倍子曾经也是钢笔墨水的蓝黑色原料,还是古代牙齿的染色材料。&br&染黑牙齿这个也很有意思,知乎上有相关问题的讨论&a href=&http://www.zhihu.com/question/& class=&internal&&古代日本女性为什么以染黑牙齿为美? - 日本文化&/a&&br&&figure&&img src=&https://pic2.zhimg.com/50/2ae67cddeb_b.jpg& data-rawwidth=&580& data-rawheight=&435& class=&origin_image zh-lightbox-thumb& width=&580& data-original=&https://pic2.zhimg.com/50/2ae67cddeb_r.jpg&&&/figure&这个行为被称作“涅齿”。日本早期的宫中妇女,结婚进宫后,就会立刻使用五倍子将牙齿染黑色。为了表示她们坚贞,不侍二夫的决心。在日本的时代剧中也经常能看到这样的画面……据说,牙齿被五倍子染黑过,都不会生蛀牙……&br&·&br&评论区的@&a href=&http://www.zhihu.com/people/marslovemary& class=&internal&&玛尔斯&/a& 提出不明白“已婚妇女进宫”这部分,解释一下……&br&日本天皇过去的后宫制度中,是没有宦官的。后宫中的女性除了皇上的嫔妃之外,还有代替了中国古代的宦官地位的日本女官、女房。详见&a href=&//link.zhihu.com/?target=http%3A//baike.baidu.com/link%3Furl%3DkpeSMygwNFe0tZty39rNfQMrLgSfXRfJYuLcobZsyS-UV1nWW_SeRYEr2N2zjwAHhSTQ96Ej9_oNmHNfgF7Kjq& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&后宫十二司_百度百科&/a&&br&&br&或许有人会觉得将虫用来当作染料涂料、给食物染色、甚至化妆品有点残忍,心理上也会有点抗拒,甚至恶心。但在过去,那段取得色彩材料有一定难度的时代,我感觉也带着一些小小的浪漫和奢侈。&br&高彩度的色彩,同时也是社会地位的体现,象征着财富与权贵。古代人使用色彩的时候,都费尽了心思, 甚至有些时候,即使有钱有势也未必能用得到或者用得起。&br&看到张公子的回答下有位 &a data-hash=&0ba4fdf146f43b7e9eecc82& href=&//www.zhihu.com/people/0ba4fdf146f43b7e9eecc82& class=&member_mention& data-editable=&true& data-title=&@nic nic& data-hovercard=&p$b$0ba4fdf146f43b7e9eecc82&&@nic nic&/a& 同学的评论“活在如今,真是幸运,所有颜料统一售价”,超级赞同……&br&每个时代在处理技术上,都有各自色彩处理的限制、材料取得的难易、权威上的社会表达约束等条件制约着,不像现代人可以自由自在的使用和表现色彩……我很喜欢画水彩和油画,彩绘中颜料的重要性不言而喻,所以经常会很羡慕会用电脑画画的人,色彩的搭配可以更加更加自由……&br&无论任何阶层、贫富程度,与古代相比现代是个色彩自由的时代~&br&&br&其实还有一些有意思的植物,很多颜色的来历都带着很多故事……可惜我最近比较忙,也不知道大家是否觉得有趣或者稀奇古怪……&br&想继续看的人请告诉我,要是有人喜欢我就继续写了( ? ▽ ` )?&br&&br&————————————二周目新添部分—————————————&br&【贝壳们】&br&&p&牡蛎壳曾经是石灰的原料。烧制牡蛎壳留下的灰是白色的,常常被当做颜料使。台湾人更喜欢将牡蛎壳铺晒在海滩上,放在太阳上晒白,利用天然的紫外线去除杂质,就是所谓的漂白,晒出来的漂白。&br&&/p&&p&&figure&&img src=&https://pic3.zhimg.com/50/879d6da3afc34e4e6dea2_b.jpg& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic3.zhimg.com/50/879d6da3afc34e4e6dea2_r.jpg&&&/figure&有人用牡蛎壳磨成粉来糊大白墙,也有人直接码起牡蛎壳上墙&/p&&figure&&img src=&https://pic4.zhimg.com/50/2ce08f64dc13dc0f6b723fca363406de_b.jpg& data-rawwidth=&690& data-rawheight=&458& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&https://pic4.zhimg.com/50/2ce08f64dc13dc0f6b723fca363406de_r.jpg&&&/figure&&p&·&/p&&p&和牡蛎壳相同性质的是贝壳,能产珍珠的那种,大家都懂的&/p&&figure&&img src=&https://pic3.zhimg.com/50/6a0911dac991c7a445f71_b.jpg& data-rawwidth=&580& data-rawheight=&296& class=&origin_image zh-lightbox-thumb& width=&580& data-original=&https://pic3.zhimg.com/50/6a0911dac991c7a445f71_r.jpg&&&/figure&&p&它俩的区别就在于贝壳内侧有层会反射七彩光的薄层,被叫做“薄膜色”。贝壳烧制或研磨出的粉末,是带着珍珠闪亮的白色,所以除了当普通白色颜料“珍珠白”使用,也是化妆品原料“珍珠粉”。&/p&&p&·&/p&&blockquote&西洋的动物性染色材料Murex trunculus+brandaris+Pupura haemastoma等三种贝壳所取得的分泌物,在阳光的照射下形成了贝紫。——贝紫染色是地中海文化中非常重要的一部分&br&&br&大约在公元1世纪结束时或者公元1世纪早期,尤巴二世创建了一座泰尔紫染料工厂,分解索维拉潮间带岩石间的骨螺和紫色贝壳。这种紫色染料被用于罗马帝国元老院托加长袍的镶边。&/blockquote&&p&“贝紫”其实不是贝壳的名字,其实是骨螺 Murex的鳃下腺,一种位于筋肉和内脏中间部分的呼吸系统组织里的黄色活性分泌物(这个形容怎么看怎么像那个什么……),是不溶于水的。但是染在布料上,晒个太阳氧化后会得到一种纯度很高的紫色色素。氧化过程是初期的黄色分泌腺液日光暴晒后——剧烈地转为绿色——蓝色——红色——紫红——最后成为纯正的紫色。purple这个英文单词就是由紫贝中的purpura演变而来的名称。&/p&&figure&&img src=&https://pic2.zhimg.com/50/8fbfb18a668769dbe62eaa4ba3711e05_b.jpg& data-rawwidth=&419& data-rawheight=&515& class=&content_image& width=&419&&&/figure&&blockquote&在普林尼写《博物志》的时候,已经有了明确可以记述的关于贝紫染色的工艺流程。如书中详细记述:染色海贝的生长期大约在一年左右,春夏季节是采集的时间,因为那个季节会产生大量的分泌物。提取的分泌物要加以处理,方法是将贝内的筋肉和内脏取出,加盐淹泡三天,然后用蒸气加热法,剥落鳃下腺内的分泌物。书中所记载的染色法是:从贝中提取腺,在容器里加入盐和水,加热十天,然后清除表面的浮垢,并通过加人尿来调节色彩的深浅等。罗马帝国在383 年颁布了敕令,禁止贝紫染色的商业和民间行为,而将其确定为国家控制生产的产品,所以称为“帝王紫”。&br&&/blockquote&&p&·&/p&&p&题主提到的“腐烂贝类泡在尿里得到的埃及艳后最爱的皇家紫”中的贝类就是上述的几种骨螺。&br&&/p&&p&可能不同地区的提取方法不同吧……&/p&&p&·&/p&&p&贝紫在欧洲曾经是昂贵和贵族的象征,直到后来一个叫帕金的英国化学家成立了第一家合成染料公司Perkin and Sons。法国的J.Nitanson又发现了乙烯,从而发展了洋红Magenta的染料,取代了贝紫的地位。贝紫现在已经绝迹了。&/p&&figure&&img src=&https://pic2.zhimg.com/50/d5c6eedbea38ff_b.jpg& data-rawwidth=&987& data-rawheight=&1022& class=&origin_image zh-lightbox-thumb& width=&987& data-original=&https://pic2.zhimg.com/50/d5c6eedbea38ff_r.jpg&&&/figure&&br&&br&&p&【燃烧烟】&/p&&p&中国传统的墨主要可以分为松烟墨和油烟墨&/p&&p&·&/p&&p&偏蓝调的松烟墨&/p&&p&曾经在《天工开物》看过制作方法,现在手边找不到原著了……大概凭记忆描述一下:先在松树底部挖个小孔,然后在旁边生小火。随着温度影响,松树的脂液慢慢流出,全部流完时把松树枝加在上面开始加火再烧。收集烧完剩下的松烟,先上胶后锤炼再渗入麝香等香料就做成了。&/p&&p&松烟是粉尘小颗粒,是更浓郁的黑色,古人一般用松烟作山水画、书法,除了提供书画材料,也是中药材,更是印刷、漆器、彩绘的颜料。&/p&&figure&&img src=&https://pic4.zhimg.com/50/a7f9478acfb3d0d755dfebb_b.jpg& data-rawwidth=&311& data-rawheight=&466& class=&content_image& width=&311&&&/figure&&a href=&//link.zhihu.com/?target=http%3A//www.douban.com/note//%3Ftype%3Dlike& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&格物筆記:松煙墨製法&/a&&br&&p&·&/p&&p&偏红调的油烟墨&/p&&p&收集麻油、桐油、猪油等油脂燃烧后形成的烟尘而制成,偏红调其实就是偏棕色&/p&&p&松烟墨没光泽,油烟墨有光泽,所以油烟墨也多用于花鸟画&/p&&figure&&img src=&https://pic4.zhimg.com/50/4b61071a86cabe82727c1_b.jpg& data-rawwidth=&600& data-rawheight=&401& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/50/4b61071a86cabe82727c1_r.jpg&&&/figure&&p&·&/p&&p&野史中的隐形墨&/p&&p&南宋枢密王庶的儿子用明矾在纸上写下“秦桧可斩”,沾水后才看得见。却因为这张纸,之后引发了勒索事件……(这个还要去查书确认一下)&/p&&br&&p&【蓝铜矿石】&/p&&p&其实就是青蓝色的原料,中国古代叫“石青”,普通的矿物性原料……&/p&&figure&&img src=&https://pic2.zhimg.com/50/e6e9ba1dd8b414e9af6720_b.jpg& data-rawwidth=&362& data-rawheight=&264& class=&content_image& width=&362&&&/figure&&p&很想讲讲这个,其一因为群青色真的很美,特别是运用在油画中的时候;其二是有很多名字,名字的演化还有地域性体现了一些很有意思的文化,在古欧洲古中国都有很悠久的历史……&/p&&figure&&img src=&https://pic2.zhimg.com/50/48e8b06ffc73e9179ccf97f_b.jpg& data-rawwidth=&435& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&435& data-original=&https://pic2.zhimg.com/50/48e8b06ffc73e9179ccf97f_r.jpg&&&/figure&&p&拉斐尔圣母像代表作,《西斯廷圣母》,外套部分就是使用了蓝铜矿颜料绘制&/p&&p&&figure&&img src=&https://pic2.zhimg.com/50/e9b80caff76a9e52997a27a_b.jpg& data-rawwidth=&900& data-rawheight=&933& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&https://pic2.zhimg.com/50/e9b80caff76a9e52997a27a_r.jpg&&&/figure&拉斐尔的圣母像Madonna of the Candelabra&/p&&p&教堂圣母像要鲜艳一些……&/p&&p&·&/p&&p&矿物性染料大部分都是有毒的,所以常用于彩绘也有保护木材避免虫蛀的功能&br&&/p&&p&·&/p&&p&青色的代表性矿物性原料,这种矿石叫Lapis lazuli,Lapis在拉丁语中有“石头”的意思、lazuli在波斯语中指“天空”,合起来就是“天空的石头”。“天空的石头”是蓝色的~波斯语是属于阿富汗区域的语言,也是蓝铜矿的产地。天空和大海是永恒的,有着亘古不变的原则,也象征着正义。&/p&&p&·&/p&&p&碱性铜碳酸盐的性质大家都知道。蓝铜矿通常都夹杂着杂色的其他物质,比如纯铜或金,使表面看起来会有金亮的感觉,所以也被叫做青金石Lazurite。较纯的蓝铜矿色彩是深沉才读较高的深蓝,会泛出一点紫色,如英国传统水彩品牌温莎&牛顿的紫色和群青表现力都极其丰富,特别是著名的“温莎紫”。&/p&&p&·&/p&&p&十五六世纪的蓝色颜料都以蓝铜矿为主,从阿富汗地区大量进口,被赋予了高贵、稀少、神圣、美丽等意义,所以又被称为oltremarino“贵重的青色”,在贸易中名字又变成现在大家熟知的ultramarine“群青”——由ultra和marine组成,“跨越”和“海洋”:跨越海洋而来的颜料。(特别说明一下Ultramarine是矿物质的蓝,Indigo是植物蓝)&/p&&p&·&/p&&p&在中国古时候叫“铜绿”,也叫做“銅鏽”。不像西洋自然开采,在中国古时候一般为人工制取:在铜片上涂醋小火微烤,或者是用醋酸闷蒸,闲置几天后表面就产除了蓝绿色的“銅鏽”,再刮下来集中处理使用&/p&&p&·&/p&&p&明代的《金瓶梅》、《西游记》、《三国演义》、《水浒传》里,出现青色的名称表达有:青、天青、鸦青、大青、毛青、石青、豆青、粉青、黑青、绿青、墨青、青旋旋、蓝、翠蓝一共十四种青蓝色。这些细微区别多是由于碱式碳酸铜的化学性质影响的。清明小说大多都着重颜色的描写,特别是《红楼梦》&/p&&blockquote&“全文共出现有763个与色彩相关的词 汇,这些词汇共可以分成八个色系,其中以红色系为最多。共有红、大红、朱、赤、桃红、银红、 丹、水红、绛、赭、粉红、石榴红、朱红、猩、猩红、紫绛、绛红、海棠红、大赤、硬红、嫣红、荔 枝色等22种共314次。光红字出现的次数共226次,比例是占所有色彩的35.56%。也可以从中看出中 国人对红色的喜爱情形,或是影响的深远。 ”&/blockquote&&p&·&/p&&p&跑题跑得可远了……虽然还有很多能讲,但还是打住……&/p&&br&&p&——————————————三周目待编辑——————————————&/p&&p&【紫草】&/p&&p&在当年紫色可是因为齐桓公在全国引领了新风尚呢。详见如下情景对话:&/p&&blockquote&齐桓公好服紫,一国尽服紫。当是时也, 五素不得一紫 。桓公患之,谓管仲曰:“寡人好服紫,紫贵甚, 一国百姓好服紫不已 ,寡人奈何?”管仲曰:“君欲止之,何不试勿衣紫也。谓左右曰:“ 吾甚恶紫之臭(xiù 气味)。” 于是左右适有衣紫而进者,公必曰:“少却,吾恶紫臭。”公曰:“诺”。于是日,郎中(官名,侍卫近臣)莫衣紫; 其明日,国中莫衣紫 ;三日,境内莫衣紫也。——《韩非子》&br&&/blockquote&&p&从这个故事我们可以看出:&/p&&p&1.紫色曾在春秋战国时期的齐国就很流行了,并不是最近出现的。&/p&&p&2.紫色的染料是紫草,全国大流行的需求已经不是野外采集能供应上的,肯定有大规模的人工栽培了&/p&&p&3.当年老百姓想穿什么色儿就穿什么色儿,没有强行规定,大家都能穿紫色,当然前提是你穿得起&/p&&p&4.齐桓公说紫草有点臭……真的有点臭……&/p&&p&5、能染成紫色的面料就是文中的“素”,也就是白绢,吸附能力更强的蚕丝放在这也使行得通的……&/p&&p&所以这段记载无论从技术上还是市场上都不是骗人的,还有政治利益上也是blabla的……&/p&&p&那么紫色衣服在当时是很贵的,比没染的衣服还要贵四倍。可以看出当时要染出一件紫色衣服是很困难的……&/p&&p&首先要农民漫山遍野地找紫草,挖出根部、清洗干净,晒干后贩卖。制衣的手艺人们在收到紫草根前,要先将丝质或者毛质的衣服经过“灰汁”二、三十次反复碱性煤染和干燥等步骤的准备处理,才能进行第二部的侵染染色。紫草根部紫色色素的萃取技术,是在40℃左右的温水浸泡下将色素搓出来,而揉搓色素又是一门技术活。要染紫现代的一块小手帕的面积,就需要两个染色匠花半天在温水中不停揉搓。价格高也是能理解的……&/p&&br&&p&【黄櫨/柘木】&/p&&p&金黄色染料(不是明黄或者正黄哟),它的亲戚在《诗经》中被称为“蒹葭”……这么一说大家就很熟悉了吧……&/p&&p&·&/p&&p&隋唐的皇帝们很是喜欢黃櫨树干部分染出的颜色,也因此而演变成黄色是皇帝服饰的专用色,具体是在咸通9年,唐高宗下的诏书规定的。并且也被遣唐使带到了日本,影响了日本天皇服饰的颜色。&/p&&p&在日本一些古书中也记载了自从嵯峨天皇以来皇袍的颜色制作材料:&/p&&blockquote&&p&「綾一疋、櫨十四斤、蘇芳十一斤、 酢二升、灰三斛、薪三荷」——《延 喜式》、《雜染用度》&/p&&/blockquote&&p&除了櫨木是皇帝专用色的染色材料之外,《本草纲目》又说皇帝专用色的染料是柘木。 不过柘木和櫨木都是很稀有的植物啦,都可以表示尊贵的黄色称为黄袍的染料。也有可能在唐朝前后用櫨木,明代转为使用柘木。這两种材料都有存在的可能性,只是存在的时间不同……不过这也是推论。&/p&&p&·&/p&&p&当然后来皇上们就不穿染制的衣服,改穿真金了:融金箔成漆,捻在丝线上上机编织而成……&/p&&br&&p&【各种红色染料】&/p&&p&因为太多了,挑我觉得少见的点一下……&/p&&p&·&/p&&p&各种动物的血&/p&&p&记载中最常见猩猩的血,很多人猜测这也是“猩红”名称的由来。在一些文献中也有记载:&/p&&p&「永昌郡有猩 猩能言,其血可以染朱罽。」——《華陽國志》&/p&&p&「狒狒…血可染排。」——《酉陽雜俎》&/p&&p&·&/p&&p&龙血,红桉树胶的一种&/p&&p&·&/p&&p&麒麟竭,大部分产自印尼、马拉西亚, 是叫做麒麟血藤樹的果实汁液,麒麟竭的命名,可能是因為麒麟血藤树而得名&/p&&p&·&/p&&p&木红:苏木,苏木的染色部位是在树干,《天工开物》的做法是用水煮沸然后用明礬媒染,就得到了木红色,要是青礬就变成了紫色&/p&&br&&p&【莲子壳】&/p&&br&&p&【核桃】&/p&&p&你们剥过鲜核桃吗?这样的&/p&&br&&p&——————————————四周目【化妆品原料】——————————————&/p&&p&唐代化妆内容就有“敷铅粉,抹胭脂,画黛眉,贴花钿,点面靥,描斜红,涂唇脂”这七个步骤。大体也是以红色和白色为主,再点缀上黑、黄、蓝、绿、紫等颜色。&/p&&br&&p&【白】-&铅&/p&&p&在《墨子》里看过,大禹就曾经制作过白粉。甚至到殷商时期的纣王,也曾经用铅锡烧制白粉,给妲己用。秦始皇也有使用白粉的记录,甚至出现“红妆翠眉”的化妆方式。可见从古代大家就在追求肤色白,并不是现在才有的现象ˊ_&ˋ&/p&&p&·&/p&&p&白色除了有干净的感觉之外,也是神圣的象征。比如白璧、白圭、白木等,甚至动物如白虎、白象、白龟、白猴都是瑞兽的象征。&/p&&p&·&/p&&p&粉的材料古代出现的有胡粉、米粉、豆粉、铅粉、蛤粉等等,近代出现的有锌粉、钛粉、钙粉,有动物、植物和矿物等等……&/p&&p&·&/p&&p&“胡粉”的说法,从字面上看,就可以知道像“胡瓜”一样,也是和西域有关的物品,所以才叫胡粉。&/p&&p&·&/p&&p&另称为铅华/铅粉,也是由于其制法而得名。把铅、醋和盐密封放置在一起(第一次看还以为是做皮蛋的流程=-=),一定时间后铅的表面会产生白色的霜粉。收集霜粉调上豆粉、蛤粉(这里应该是指蛤蜊壳),干了之后制成块状出售。是彩绘、绘画的原料,也是化妆品。胡粉都是有毒的,尝起来有点甜又凉凉的,给人精致的感觉,因此也得到了古代妇女的喜爱。涂在脸上,脸色由白转为白中带青。互粉的制作工序繁复,所以价格也高,一般的妇女会转而使用米粉、豆粉之类的植物类无毒替代品。&/p&&p&·&/p&&blockquote&大行在殡,路人掩涕。固独胡粉饰貌,搔头弄姿,盘旋偃仰,从容冶步,曾无惨怛之心。——《后汉书》&/blockquote&&p&是李固被人打小报告了,说他在丧礼进行中大家都痛哭流涕的时候偏要在脸上扑粉,怪模怪样&/p&&p&·&/p&&p&古时候,主要产在辰、韶这两个地方,也叫“韶粉”。&/p&&p&·&/p&&p&胡粉主要成分为铅,常常因为接触空气中的硫化物变成黑色,敦煌石窟的黑色佛像也是这个原因。后来的画家也因此抛弃胡粉,改用贝壳烧制的、更稳定的氧化钙类蛤粉作为白色颜料。至于现代颜料常见的锌白和钛白,就更加稳定了,白色纯度也更高。&/p&&br&&p&【黑】-&蓝铜矿&/p&&p&除了白色,黑色也是古代评价美女不可缺的条件。古籍中最常出现的就是“黛”,上“代”下“黑”的组合,意思是相通的。&/p&&p&根据古代版“辞海”《释名》的解释,“黛”是去除眉毛的毛,用颜料重新画上的意思;《说文解字》更直接地解释为“画眉也”。黛使用的地方眉毛为主。黛并不是完全属于黑色,也有“青黛”,《康熙字典》上的注释,说“青黛”是“空青而色深”,就是接近黑色的深蓝色。&/p&&p&·&/p&&p&“空青”是矿物性蓝铜矿颜料所借用的颜色名称,常常出现在彩绘中。&/p&&p&·&/p&&p&粉对应白,黛对应黑,黑白分明就说明了古代女性美的标准。&/p&&p&·&/p&&p&古时候人们还会染发,用的是现代一样的石榴果实的石榴皮,能染出黑发。&/p&&br&&p&【红】-&川红花&/p&&p&左“丝”右“工”的结构,也说明了“红”起源和丝织品工作有关,后来才被借用来表现色彩。“红”和化妆品也有着密切的联系,是因为受到汉朝张骞从西域引进“红花”的缘故。&/p&&p&·&/p&&p&中国的红花来自西藏、四川、河南一带的藏红花和川红花,藏红花产量少价格高,一般都只作药,只有川红花才拿来染色。&/p&&p&·&/p&&p&红色被用于化妆的材料叫“胭脂”,历史上还有燕脂、燕支、焉支的叫法。胭脂的材料主要是紫铆、红花汁、山榴汁,紫铆就是前面说过的紫胶小虫子,品质最高,其他两个次之。&/p&&p&·&/p&&p&红花汁是染色后剩下的染液沉淀后的渣,干燥之后就能用了。又被叫做“紫粉”,可以大胆地猜想胭脂色的色相是带着淡紫的粉红色。&/p&&blockquote&“燕支,叶似蓟,花似蒲公,出西方。土人以染,名为燕支。中国人谓之红蓝。以染粉为妇人色,谓之燕支粉。”——晋代崔豹《古今注·草木》&br&“燕支染粉,為婦人色。故匈奴名妻‘阏氏’,言可愛如燕支也。匈奴有〈燕支山歌〉曰:「失我祁連山,使我六畜不繁息,失我閼氏山,使我婦女無顔色。”——張泌《妝樓記》&/blockquote&&p&·&/p&&p&先用胡粉打底,再加红花提取物得到的桃红色,就能得到“桃花妆”。铅白和桃红跳出的色相,唐代称为檀红,也就是粉红、浅红。至于大红色,则叫做“绛唇”。&/p&&p&·&/p&&p&除了以上材料,还有朱砂,古代妇女重要的口红原料,价格也很高,也经常因为高价被形容权贵。朱砂是汞的衍生物,有剧毒。普通妇女口红是红花色素反而更安全。&/p&&p&古代口红的画法也分为这么几十种:石榴娇、大红春、小红春、嫩吴香、半边娇、万金红、圣檀心、露珠儿、内家圆、天宫巧、恪儿殷、淡红心、猩猩晕、小朱龙、格双唐、眉花奴等…………&/p&&p&当时对口红的追求不只有色彩,还有香味……&/p&&p&甲煎是一种人工制作的复合香料,是当时制作高档口脂相当复杂的工艺,而且动用了甘松香、艾纳香、苜蓿香、茅香、藿香、零陵香、上色沉香、雀头香、苏合香、白胶香、白檀香、丁香、麝香、甲香十四种不同的香料,其中大多数属于昂贵的进口香料。&/p&&blockquote&朱唇一点桃花殷,宿妆娇羞偏髻鬟。细看只似阳台女,醉著莫许归巫山。——岑参《醉戏窦子美人》&/blockquote&&p&读起来真是让人脸红心跳……&/p&&p&·&/p&&p&古人富人或美女用的胡粉和朱砂都是有毒物质,不知道是不是“红颜多薄命”的另类解释了。&/p&&br&&p&【黄】-&郁金&/p&&p&起源于南北朝,而又在唐朝流行起来的“额黄”,就是在额头上粘帖金箔或涂黄色颜料的化妆方式。&/p&&p&·&/p&&p&下面有个关于小花痴的故事:&/p&&p&隋炀帝时期,有个女孩叫袁宝儿,是长安所贡御车女,才十五岁,生得娇憨多态,隋炀帝很喜欢她。正好碰上洛阳献上奇花,隋炀帝命令袁宝儿拿着,还给她起了个外号叫司花女。才子虞世南被传唤到宫中写诏书,袁宝儿拿着花站在旁边。不知道是虞世南太帅还是字写得太好,袁宝儿一直呆呆地看着他。隋炀帝看见了也没生气,看着她没学到家画出的鸦黄忍俊不禁,便下令让虞世南作诗来逗逗她。虞世南应诏诚惶诚恐地写下“学画鸦黄半未成,垂肩嚲袖太憨生,缘憨却得君王惜,长把花枝傍辇行。”&/p&&p&绝句中的“鸦黄”也就是额黄。&/p&&p&·&/p&&p&涂额黄的原料多为郁金和黄蘖。&/p&&p&郁金就是郁金香草,但不是现代的荷兰郁金香。&/p&&blockquote&「垂手乱翻雕玉佩,折腰争舞郁金裙。」这是一首描述牡丹花的诗,写花丛绿叶在风中的姿态。传说唐玄宗的爱妃杨玉环喜爱穿著以郁金香染成的黄色裙子,於是成为当时的流行色彩,不论宫中嫔妃、仕宦之家女子争相模仿。&/blockquote&&p&·&/p&&p&贴额黄的方法就类似于花钿了:&/p&&blockquote&从形象资料看,花钿的质地形状千差万别。最简单的花钿仅是一个小小的圆点。复杂的有用金箔片、珍珠、鱼腮骨、鱼鳞、茶油花饼、黑光纸、螺钿壳及云母等材料剪制成的各种花朵形状,其中以梅花最为多见。这可能是承寿阳公主梅花妆的遗意。五代后蜀孟昶妃张太华《葬后见形》写“寻思往日椒房宠,泪湿衣襟损翠钿”,诗中的翠钿是用翠鸟的羽毛制成的。宋代陶谷所著《潸异录》中说:“后唐宫人或网获蜻蜓,爱其翠薄,遂以描金笔涂翅,作小折枝花子。” 这是用蜻蜓翅膀做花钿了。&/blockquote&&br&&p&好累……明天再来加图加细节……&/p&
看到这个题目就一股热血冲上心头(≧?≦)! 【内含部分图片可能引起您的不适,请慎入】 只说说有历史考究的天然资源,人工合成材料pass…… 【胭脂虫】 上面的大家都说了胭脂虫,我随便扩展一下。 · 这种虫原产于中南美洲,在至少一千八百年前就被古代…
&p&公众号内容配上好的图片,真的会加分不少!时下配图网站众多,这里分享8个高质量的配图网站给大家,不仅是公众号,其他你想用到配图的地方都可以在这些网站找到:&/p&&p&&b&(1)pinterest
&a href=&//link.zhihu.com/?target=https%3A//www.pinterest.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&pinterest.com/&/span&&span class=&invisible&&&/span&&/a&&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-ac440a707cf3e0db2edbca_b.jpg& data-rawwidth=&1777& data-rawheight=&864& class=&origin_image zh-lightbox-thumb& width=&1777& data-original=&https://pic3.zhimg.com/50/v2-ac440a707cf3e0db2edbca_r.jpg&&&/figure&&p& pinterest是一个 “视觉社交”网站,采用的是瀑布流的形式展现图片内容,无需用户翻页,新的图片不断自动加载在页面底端,让用户不断的&a href=&//link.zhihu.com/?target=http%3A//baike.baidu.com/view/98537.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&发现&/a&新的图片。 曾入选全球50个最好的网站 。&/p&&br&&p&&b&(2)Pexels
&a href=&//link.zhihu.com/?target=https%3A//www.pexels.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&pexels.com/&/span&&span class=&invisible&&&/span&&/a&&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-893fb10f900a73f3f47aae660c3b43bd_b.jpg& data-rawwidth=&1875& data-rawheight=&828& class=&origin_image zh-lightbox-thumb& width=&1875& data-original=&https://pic1.zhimg.com/50/v2-893fb10f900a73f3f47aae660c3b43bd_r.jpg&&&/figure&&p&Pexels是一个提供海量共享图片素材的网站,每周都会定量更新,所有的图片都会显示详细的信息,例如拍摄的相机型号、光圈、焦距、ISO、图片大分辨率等,高清大图质量很不错。 &/p&&br&&p&&b& (3)Unsplash
&a href=&//link.zhihu.com/?target=https%3A//unsplash.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&unsplash.com/&/span&&span class=&invisible&&&/span&&/a&&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-3b6ca19e00bc72cf4aa24_b.jpg& data-rawwidth=&1881& data-rawheight=&835& class=&origin_image zh-lightbox-thumb& width=&1881& data-original=&https://pic3.zhimg.com/50/v2-3b6ca19e00bc72cf4aa24_r.jpg&&&/figure&&br&&p& Unsplash是一个免费高质量照片的网站,都是真实的摄影照片,照片分辨率也很大, 差不多每天更新 。&/p&&br&&p&&b&(4)Foter
&a href=&//link.zhihu.com/?target=http%3A//foter.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&foter.com/&/span&&span class=&invisible&&&/span&&/a&&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-ee936a1f260e7ccfc6d2f68_b.jpg& data-rawwidth=&1860& data-rawheight=&789& class=&origin_image zh-lightbox-thumb& width=&1860& data-original=&https://pic3.zhimg.com/50/v2-ee936a1f260e7ccfc6d2f68_r.jpg&&&/figure&&p& 目前整合并收录了超过2.2亿的免费素材图像资源。 &/p&&br&&p&&b&(5) magdeleine
&a href=&//link.zhihu.com/?target=http%3A//magdeleine.co/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&magdeleine.co/&/span&&span class=&invisible&&&/span&&/a&&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-6bf48c9416ede4a9e24d_b.jpg& data-rawwidth=&1500& data-rawheight=&864& class=&origin_image zh-lightbox-thumb& width=&1500& data-original=&https://pic3.zhimg.com/50/v2-6bf48c9416ede4a9e24d_r.jpg&&&/figure&&p& Magdeleine 的特色功能是可以通过颜色、情绪寻找图片。 &/p&&br&&p&&b&(6)PicJumbo&/b&
&b&&a href=&//link.zhihu.com/?target=https%3A//picjumbo.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&picjumbo.com/&/span&&span class=&invisible&&&/span&&/a&&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-462f9cece5fb91b1efb058_b.jpg& data-rawwidth=&1587& data-rawheight=&859& class=&origin_image zh-lightbox-thumb& width=&1587& data-original=&https://pic2.zhimg.com/50/v2-462f9cece5fb91b1efb058_r.jpg&&&/figure&&p& 这里提供分辨率为3888像素的全质量图片资源,每天更新,免费使用。&/p&&br&&p&&b&(7) 9GAG
&a href=&//link.zhihu.com/?target=http%3A//9gag.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&9gag.com/&/span&&span class=&invisible&&&/span&&/a&&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-6ac8527277dfbfc76fb3_b.jpg& data-rawwidth=&1883& data-rawheight=&864& class=&origin_image zh-lightbox-thumb& width=&1883& data-original=&https://pic2.zhimg.com/50/v2-6ac8527277dfbfc76fb3_r.jpg&&&/figure&&p& 可能是全球最搞笑的趣图网站。&/p&&br&&p&&b&(8) Icon-Font
&a href=&//link.zhihu.com/?target=http%3A//www.iconfont.cn/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&iconfont.cn/&/span&&span class=&invisible&&&/span&&/a&&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-fd9e4bdae80efd_b.jpg& data-rawwidth=&1412& data-rawheight=&861& class=&origin_image zh-lightbox-thumb& width=&1412& data-original=&https://pic2.zhimg.com/50/v2-fd9e4bdae80efd_r.jpg&&&/figure&&p& 这里有最全的矢量图标。 &/p&&p& —————————————————————————————————————————— &/p&&p&关于笔者,一位80后叔叔。&/p&&p&欢迎关注我的个人公众号:思考的灵魂&/p&
公众号内容配上好的图片,真的会加分不少!时下配图网站众多,这里分享8个高质量的配图网站给大家,不仅是公众号,其他你想用到配图的地方都可以在这些网站找到:(1)pinterest
pinterest是一个 “视觉社交”网站,采用的是瀑布流的…
&figure&&img src=&https://pic1.zhimg.com/v2-deb31c4a9f94b6c4dc9cfed_b.jpg& data-rawwidth=&1200& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic1.zhimg.com/v2-deb31c4a9f94b6c4dc9cfed_r.jpg&&&/figure&&p&&b&Stackoverflow&/b&是一个非常优秀的与程序相关的IT技术问答的英文网站。无论你处在什么状态,当你编程碰到问题的时候你总能找到你想要的答案。学习编程专栏打算翻译这一系列的问答计划进行的方向如下。&/p&&p&翻译Stack Overflow上关于Python的高票问答(Java)(JavaScript)(Php)(C#)每一种语言都会出两到三篇文章,每一篇会有一到三个问题。&/p&&p&感谢朋友&a data-title=&@挠米& data-editable=&true& class=&member_mention& href=&https://www.zhihu.com/people/6cccbadc5c& data-hash=&6cccbadc5c& data-hovercard=&p$b$6cccbadc5c&&@挠米&/a& 在翻译过程中给出的帮助。 &br&&/p&&p&&figure&&img data-rawheight=&80& data-rawwidth=&743& src=&https://pic4.zhimg.com/v2-d1747c9affd_b.jpg& class=&origin_image zh-lightbox-thumb& width=&743& data-original=&https://pic4.zhimg.com/v2-d1747c9affd_r.jpg&&&/figure&问题链接: &a class=& wrap external& href=&https://link.zhihu.com/?target=http%3A//stackoverflow.com/questions/231767/what-does-the-yield-keyword-do& target=&_blank& rel=&nofollow noreferrer&&python - What does the &yield& keyword do?&/a&&/p&&p&问题描述:&/p&&p&Python中关键词yield怎么用?它的作用是什么?举个例子:我正在尝试理解下面的代码&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&_get_child_candidates&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span& &span class=&n&&distance&/span&&span class=&p&&,&/span& &span class=&n&&min_dist&/span&&span class=&p&&,&/span& &span class=&n&&max_dist&/span&&span class=&p&&):&/span&
&span class=&k&&if&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_leftchild&/span& &span class=&ow&&and&/span& &span class=&n&&distance&/span& &span class=&o&&-&/span& &span class=&n&&max_dist&/span& &span class=&o&&&&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_median&/span&&span class=&p&&:&/span&
&span class=&k&&yield&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_leftchild&/span&
&span class=&k&&if&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_rightchild&/span& &span class=&ow&&and&/span& &span class=&n&&distance&/span& &span class=&o&&+&/span& &span class=&n&&max_dist&/span& &span class=&o&&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_median&/span&&span class=&p&&:&/span&
&span class=&k&&yield&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_rightchild&/span&
&/code&&/pre&&/div&&p&下面是对它的调用:&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&n&&result&/span&&span class=&p&&,&/span& &span class=&n&&candidates&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(),&/span& &span class=&p&&[&/span&&span class=&bp&&self&/span&&span class=&p&&]&/span&
&span class=&k&&while&/span& &span class=&n&&candidates&/span&&span class=&p&&:&/span&
&span class=&n&&node&/span& &span class=&o&&=&/span& &span class=&n&&candidates&/span&&span class=&o&&.&/span&&span class=&n&&pop&/span&&span class=&p&&()&/span&
&span class=&n&&distance&/span& &span class=&o&&=&/span& &span class=&n&&node&/span&&span class=&o&&.&/span&&span class=&n&&_get_dist&/span&&span class=&p&&(&/span&&span class=&n&&obj&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&n&&distance&/span& &span class=&o&&&=&/span& &span class=&n&&max_dist&/span& &span class=&ow&&and&/span& &span class=&n&&distance&/span& &span class=&o&&&=&/span& &span class=&n&&min_dist&/span&&span class=&p&&:&/span&
&span class=&n&&result&/span&&span class=&o&&.&/span&&span class=&n&&extend&/span&&span class=&p&&(&/span&&span class=&n&&node&/span&&span class=&o&&.&/span&&span class=&n&&_values&/span&&span class=&p&&)&/span&
&span class=&n&&candidates&/span&&span class=&o&&.&/span&&span class=&n&&extend&/span&&span class=&p&&(&/span&&span class=&n&&node&/span&&span class=&o&&.&/span&&span class=&n&&_get_child_candidates&/span&&span class=&p&&(&/span&&span class=&n&&distance&/span&&span class=&p&&,&/span& &span class=&n&&min_dist&/span&&span class=&p&&,&/span& &span class=&n&&max_dist&/span&&span class=&p&&))&/span&
&span class=&k&&return&/span& &span class=&n&&result&/span&
&/code&&/pre&&/div&&p&我的问题是:当_get_child_candidates这个方法被调用的时候,到底发生了什么?是返回一个list,还是返回一个单个元素?后续的调用将在什么时候终止?&/p&&p&[1]上述代码来自 Jochen Schulz (jrschulz),他做了一个度量空间的Python库。以下是代码的完整链接:&a class=& wrap external& href=&https://link.zhihu.com/?target=http%3A//well-adjusted.de/%257Ejrschulz/mspace/& target=&_blank& rel=&nofollow noreferrer&&Module mspace&/a&.&/p&&figure&&img data-rawheight=&80& data-rawwidth=&662& src=&https://pic3.zhimg.com/v2-2ec7362dc65aaecb830a73_b.jpg& class=&origin_image zh-lightbox-thumb& width=&662& data-original=&https://pic3.zhimg.com/v2-2ec7362dc65aaecb830a73_r.jpg&&&/figure&&p&要理解yield是什么,它干什么。首先你要了解可迭代对象(Iterable),然后再去了解生成器(generators),最后你才能了解yield。&/p&&figure&&img data-rawheight=&120& data-rawwidth=&1100& src=&https://pic4.zhimg.com/v2-4cf58be4be73c6c7cb87c_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&https://pic4.zhimg.com/v2-4cf58be4be73c6c7cb87c_r.jpg&&&/figure&&p&当你定义了一个list之后,你可以一个一个的读取其中的元素。遍历list中的元素这个动作我们就把它称做:迭代(Iteration)。&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&o&&&&&&/span& &span class=&n&&mylist&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&]&/span&
&span class=&o&&&&&&/span& &span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&n&&mylist&/span&&span class=&p&&:&/span&
&span class=&o&&...&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&
&span class=&mi&&1&/span&
&span class=&mi&&2&/span&
&span class=&mi&&3&/span&
&/code&&/pre&&/div&&p&以上的 &i&mylist&/i&&i&是一个&/i&&i&可迭代对象(Iterable),&/i&当你使用&b&列表推导式(&/b&list comprehension)创建一个list,相当于创建了一个可迭代对象(Iterable)。&/p&&p&[1]不理解&b&&b&列表推导式(&/b&list comprehension)&/b&可以点击这里:&a href=&https://link.zhihu.com/?target=http%3A//blog.chinaunix.net/uid--id-3488324.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python 学习笔记 02&/a&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&o&&&&&&/span& &span class=&n&&mylist&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&o&&*&/span&&span class=&n&&x&/span& &span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&)]&/span&
&span class=&o&&&&&&/span& &span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&n&&mylist&/span&&span class=&p&&:&/span&
&span class=&o&&...&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&
&span class=&mi&&0&/span&
&span class=&mi&&1&/span&
&span class=&mi&&4&/span&
&/code&&/pre&&/div&&p&像lists, strings, files...这种任何一个可以用for... in...遍历的对象都称作可迭代对象(Iterable)。使用这些可迭代对象是非常方便的,因为你可以随时随地的去取出你想要的值。但是这些值都是存在内存中的,所以当你有很多值的时候,很可能将会产生不好的效果。&/p&&figure&&img data-rawheight=&120& data-rawwidth=&1100& src=&https://pic4.zhimg.com/v2-6e5afa7e880f58daec0926_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&https://pic4.zhimg.com/v2-6e5afa7e880f58daec0926_r.jpg&&&/figure&&p&生成器(generators)是一种迭代器(iterators),但是你仅仅可以对他们进行一次迭代,这是因为它们并没有把所有的值存在内存中,而是在运行时生成值。&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&o&&&&&&/span& &span class=&n&&mygenerator&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&o&&*&/span&&span class=&n&&x&/span& &span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&))&/span&
&span class=&o&&&&&&/span& &span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&n&&mygenerator&/span&&span class=&p&&:&/span&
&span class=&o&&...&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&
&span class=&mi&&0&/span&
&span class=&mi&&1&/span&
&span class=&mi&&4&/span&
&/code&&/pre&&/div&&p&除了在迭代器(iterators)使用&b&“[]”&/b&,而在 生成器(generators)中使用&b&“()”&/b&这一点不同之外,生成器(generators)是和迭代器(iterators)几乎是一模一样的,但是你永远不能进行第二次“for i in mygenerator”操作,因为一个生成器(generators)只能被使用一次:生成器中的内容,访问一次之后就不能在访问第二次。&/p&&figure&&img data-rawheight=&120& data-rawwidth=&1100& src=&https://pic1.zhimg.com/v2-296a8cfee3e89a0944c1_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&https://pic1.zhimg.com/v2-296a8cfee3e89a0944c1_r.jpg&&&/figure&&p&Yield关键词的用法与return的用法几乎一致,他们只有一个区别: 当某个函数使用Yield时,该函数将返回一个生成器(generators)&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&o&&&&&&/span& &span class=&k&&def&/span& &span class=&nf&&createGenerator&/span&&span class=&p&&():&/span&
&span class=&o&&...&/span&
&span class=&n&&mylist&/span& &span class=&o&&=&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span&
&span class=&o&&...&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&n&&mylist&/span&&span class=&p&&:&/span&
&span class=&o&&...&/span&
&span class=&k&&yield&/span& &span class=&n&&i&/span&&span class=&o&&*&/span&&span class=&n&&i&/span&
&span class=&o&&...&/span&
&span class=&o&&&&&&/span& &span class=&n&&mygenerator&/span& &span class=&o&&=&/span& &span class=&n&&createGenerator&/span&&span class=&p&&()&/span& &span class=&c1&&# create a generator&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&mygenerator&/span&&span class=&p&&)&/span& &span class=&c1&&# mygenerator is an object!&/span&
&span class=&o&&&&/span&&span class=&n&&generator&/span& &span class=&nb&&object&/span& &span class=&n&&createGenerator&/span& &span class=&n&&at&/span& &span class=&mh&&0xb7555c34&/span&&span class=&o&&&&/span&
&span class=&o&&&&&&/span& &span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&n&&mygenerator&/span&&span class=&p&&:&/span&
&span class=&o&&...&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&
&span class=&mi&&0&/span&
&span class=&mi&&1&/span&
&span class=&mi&&4&/span&
&/code&&/pre&&/div&&p&看看上面这个例子,这个例子说明:createGeneraor()函数将会返回一个值的集合,你仅仅需要去遍历一次这个集合就可以得到你想要的结果了。&/p&&p&为了精通 yield ,你必须要理解:当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象,这有点蹊跷不是吗。那么,函数内的代码什么时候执行呢?当你使用for进行迭代的时候.(感谢&a href=&https://www.zhihu.com/people/e4798eac3d9f261da9ed3d3& data-hash=&e4798eac3d9f261da9ed3d3& class=&member_mention& data-hovercard=&p$b$e4798eac3d9f261da9ed3d3&&@Nicolas-L&/a& 提供的译文。)【原来的翻译是:要完全的理解yield,你必须搞明白下面这段话:当使用yield的时候,写在yield后面的代码并不会执行,它仅仅会返回一个生成器(generators),这段代码只会在你遍历这个返回的生成器的时候开始运行。】&/p&&p&现在到了最难理解的地方了:&/p&&p&第一次,for在遍历上述方法中创建的mylist的时候,循环体内的代码将从头开始运行一直到它碰到yield关键词,它将返回循环内的第一个值,然后再次执行循环体内代码,返回循环内产生的第二个值,一直到这个循环结束。&/p&&figure&&img data-rawheight=&120& data-rawwidth=&1100& src=&https://pic1.zhimg.com/v2-cc2dec05e652f_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&https://pic1.zhimg.com/v2-cc2dec05e652f_r.jpg&&&/figure&&p&下面开始讲解你给出的代码。 &/p&&p&Generator(生成器)&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# 在这里,你给node对象创建了一个方法,这个方法将会返回一个生成器。&/span&
&span class=&k&&def&/span& &span class=&nf&&node&/span&&span class=&o&&.&/span&&span class=&n&&_get_child_candidates&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span& &span class=&n&&distance&/span&&span class=&p&&,&/span& &span class=&n&&min_dist&/span&&span class=&p&&,&/span& &span class=&n&&max_dist&/span&&span class=&p&&):&/span&
&span class=&c1&&#在你每次使用生成器(generators)时候会调用下面这段代码。&/span&
&span class=&c1&&#如果node对象还有左子节点,并且深度距离符合下述条件,那么返回下一个子节点。 &/span&
&span class=&k&&if&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_leftchild&/span& &span class=&ow&&and&/span& &span class=&n&&distance&/span& &span class=&o&&-&/span& &span class=&n&&max_dist&/span& &span class=&o&&&&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_median&/span&&span class=&p&&:&/span&
&span class=&k&&yield&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_leftchild&/span&
&span class=&c1&&# 如果node对象还有右子节点,并且深度距离符合下述条件,那么返回下一个子节点。&/span&
&span class=&k&&if&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_rightchild&/span& &span class=&ow&&and&/span& &span class=&n&&distance&/span& &span class=&o&&+&/span& &span class=&n&&max_dist&/span& &span class=&o&&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_median&/span&&span class=&p&&:&/span&
&span class=&k&&yield&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&_rightchild&/span&
&span class=&c1&&# 如果函数运行到了这里,说明Generator(生成器)此时已经为空了。&/span&
&/code&&/pre&&/div&&p& Caller(调用):&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# 创建一个空的list和一个当前对象的引用list&/span&
&span class=&n&&result&/span&&span class=&p&&,&/span& &span class=&n&&candidates&/span& &span class=&o&&=&/span& &span class=&nb&&list&/span&&span class=&p&&(),&/span& &span class=&p&&[&/span&&span class=&bp&&self&/span&&span class=&p&&]&/span&
&span class=&c1&&# 遍历candidates,一开始他仅仅包含一个元素&/span&
&span class=&k&&while&/span& &span class=&n&&candidates&/span&&span class=&p&&:&/span&
&span class=&c1&&# 获取并删除list中最后位置上的candidate&/span&
&span class=&n&&node&/span& &span class=&o&&=&/span& &span class=&n&&candidates&/span&&span class=&o&&.&/span&&span class=&n&&pop&/span&&span class=&p&&()&/span&
&span class=&c1&&# 获取candidate到obj之间的距离&/span&
&span class=&n&&distance&/span& &span class=&o&&=&/span& &span class=&n&&node&/span&&span class=&o&&.&/span&&span class=&n&&_get_dist&/span&&span class=&p&&(&/span&&span class=&n&&obj&/span&&span class=&p&&)&/span&
&span class=&c1&&# 如果距离符合下述条件,则把candidate附加到result里面&/span&
&span class=&k&&if&/span& &span class=&n&&distance&/span& &span class=&o&&&=&/span& &span class=&n&&max_dist&/span& &span class=&ow&&and&/span& &span class=&n&&distance&/span& &span class=&o&&&=&/span& &span class=&n&&min_dist&/span&&span class=&p&&:&/span&
&span class=&n&&result&/span&&span class=&o&&.&/span&&span class=&n&&extend&/span&&span class=&p&&(&/span&&span class=&n&&node&/span&&span class=&o&&.&/span&&span class=&n&&_values&/span&&span class=&p&&)&/span&
&span class=&c1&&#把candidates list中所有candidate对象的所有子节点都添加到candidates中&/span&
&span class=&n&&candidates&/span&&span class=&o&&.&/span&&span class=&n&&extend&/span&&span class=&p&&(&/span&&span class=&n&&node&/span&&span class=&o&&.&/span&&span class=&n&&_get_child_candidates&/span&&span class=&p&&(&/span&&span class=&n&&distance&/span&&span class=&p&&,&/span& &span class=&n&&min_dist&/span&&span class=&p&&,&/span& &span class=&n&&max_dist&/span&&span class=&p&&))&/span&
&span class=&k&&return&/span& &span class=&n&&result&/span&
&/code&&/pre&&/div&&p&================其实到这里问题已经有了一个比较明确的回答了================== &br&&/p&&p&上面的代码有小部分要说明的:&/p&&ul&&li&&p&extend()是list对象的方法,用于在列表末尾一次性追加另一个序列中的多个值。&/p&&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&o&&&&&&/span& &span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&]&/span&
&span class=&o&&&&&&/span& &span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&]&/span&
&span class=&o&&&&&&/span& &span class=&n&&a&/span&&span class=&o&&.&/span&&span class=&n&&extend&/span&&span class=&p&&(&/span&&span class=&n&&b&/span&&span class=&p&&)&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&a&/span&&span class=&p&&)&/span&
&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&]&/span&
&/code&&/pre&&/div&&p&在你的代码中使用的是一个generator(生成器),这有几个优点:&/p&&ol&&li&你不要再次去读取这些值&br&&/li&&li&可能有很多子节点,你不想让他们存在内存中&/li&&/ol&&p&Python不关心某个方法的参数是不是一个列表list,Python预想它是一个可迭代对象(Iterable),所以当这个参数是strings、lists或者generators的时候可以正确执行!这就被称作duck typing[1]&/p&&p&[1]:Duck typing:是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。在 Duck typing中,关注的不是对象的类型本身,而是它是如何使用的。&/p&&p&我们这里可以先暂停,进一步了解一下generator的用法:&/p&&figure&&img data-rawheight=&120& data-rawwidth=&1100& src=&https://pic4.zhimg.com/v2-98daba1dca8a72cf97c57ef4_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&https://pic4.zhimg.com/v2-98daba1dca8a72cf97c57ef4_r.jpg&&&/figure&&p&控制一个 generator防止它被耗尽。&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&o&&&&&&/span& &span class=&k&&class&/span& &span class=&nc&&Bank&/span&&span class=&p&&():&/span& &span class=&c1&&# 我们建造一个银行,并且修建一些ATMs&/span&
&span class=&o&&...&/span&
&span class=&n&&crisis&/span& &span class=&o&&=&/span& &span class=&bp&&False&/span&
&span class=&o&&...&/span&
&span class=&k&&def&/span& &span class=&nf&&create_atm&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&):&/span&
&span class=&o&&...&/span&
&span class=&k&&while&/span& &span class=&ow&&not&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&crisis&/span&&span class=&p&&:&/span&
&span class=&o&&...&/span&
&span class=&k&&yield&/span& &span class=&s2&&&$100&&/span&
&span class=&o&&&&&&/span& &span class=&n&&hsbc&/span& &span class=&o&&=&/span& &span class=&n&&Bank&/span&&span class=&p&&()&/span& &span class=&c1&&# 不出意外的时候,ATM可以任你取钱。&/span&
&span class=&o&&&&&&/span& &span class=&n&&corner_street_atm&/span& &span class=&o&&=&/span& &span class=&n&&hsbc&/span&&span class=&o&&.&/span&&span class=&n&&create_atm&/span&&span class=&p&&()&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&corner_street_atm&/span&&span class=&o&&.&/span&&span class=&n&&next&/span&&span class=&p&&())&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&corner_street_atm&/span&&span class=&o&&.&/span&&span class=&n&&next&/span&&span class=&p&&())&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&([&/span&&span class=&n&&corner_street_atm&/span&&span class=&o&&.&/span&&span class=&n&&next&/span&&span class=&p&&()&/span& &span class=&k&&for&/span& &span class=&n&&cash&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&5&/span&&span class=&p&&)])&/span&
&span class=&p&&[&/span&&span class=&s1&&'$100'&/span&&span class=&p&&,&/span& &span class=&s1&&'$100'&/span&&span class=&p&&,&/span& &span class=&s1&&'$100'&/span&&span class=&p&&,&/span& &span class=&s1&&'$100'&/span&&span class=&p&&,&/span& &span class=&s1&&'$100'&/span&&span class=&p&&]&/span&
&span class=&o&&&&&&/span& &span class=&n&&hsbc&/span&&span class=&o&&.&/span&&span class=&n&&crisis&/span& &span class=&o&&=&/span& &span class=&bp&&True&/span& &span class=&c1&&# 经济危机来了,你不能再取钱了。&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&corner_street_atm&/span&&span class=&o&&.&/span&&span class=&n&&next&/span&&span class=&p&&())&/span&
&span class=&o&&&&/span&&span class=&nb&&type&/span& &span class=&s1&&'exceptions.StopIteration'&/span&&span class=&o&&&&/span&
&span class=&o&&&&&&/span& &span class=&n&&wall_street_atm&/span& &span class=&o&&=&/span& &span class=&n&&hsbc&/span&&span class=&o&&.&/span&&span class=&n&&create_atm&/span&&span class=&p&&()&/span& &span class=&c1&&# it's even true for new ATMs&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&wall_street_atm&/span&&span class=&o&&.&/span&&span class=&n&&next&/span&&span class=&p&&())&/span&
&span class=&o&&&&/span&&span class=&nb&&type&/span& &span class=&s1&&'exceptions.StopIteration'&/span&&span class=&o&&&&/span&
&span class=&o&&&&&&/span& &span class=&n&&hsbc&/span&&span class=&o&&.&/span&&span class=&n&&crisis&/span& &span class=&o&&=&/span& &span class=&bp&&False&/span& &span class=&c1&&# 问题是, 尽管是经济危机之后,ATM还是空的。&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&corner_street_atm&/span&&span class=&o&&.&/span&&span class=&n&&next&/span&&span class=&p&&())&/span&
&span class=&o&&&&/span&&span class=&nb&&type&/span& &span class=&s1&&'exceptions.StopIteration'&/span&&span class=&o&&&&/span&
&span class=&o&&&&&&/span& &span class=&n&&brand_new_atm&/span& &span class=&o&&=&/span& &span class=&n&&hsbc&/span&&span class=&o&&.&/span&&span class=&n&&create_atm&/span&&span class=&p&&()&/span& &span class=&c1&&# 建造一个新的ATM,并使用。&/span&
&span class=&o&&&&&&/span& &span class=&k&&for&/span& &span class=&n&&cash&/span& &span class=&ow&&in&/span& &span class=&n&&brand_new_atm&/span&&span class=&p&&:&/span&
&span class=&o&&...&/span&
&span class=&k&&print&/span& &span class=&n&&cash&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&err&&$&/span&&span class=&mi&&100&/span&
&span class=&o&&...&/span&
&/code&&/pre&&/div&&p&它是非常有用的比如用来控制资源的访问。&/p&&figure&&img data-rawheight=&120& data-rawwidth=&1100& src=&https://pic1.zhimg.com/v2-9c2833dbe4e9d5e9d65b90_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1100& data-original=&https://pic1.zhimg.com/v2-9c2833dbe4e9d5e9d65b90_r.jpg&&&/figure&&p&Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。你曾经有做过一个generator?关联两个generators?并为此感到厌烦吗?&/p&&p&你只需要import itertools.(导入itertools)(有关于Itertools的更多用法,大家可以访问:&a class=& wrap external& href=&https://link.zhihu.com/?target=http%3A//www.liaoxuefeng.com/wiki/095c955c1e6d8bbfac/996f6b32d80b6454caca3d33c965a& target=&_blank& rel=&nofollow noreferrer&&itertools - 廖雪峰的官方网站&/a&) &br&&/p&&p&让我们看个例子:&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&o&&&&&&/span& &span class=&n&&horses&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&]&/span&
&span class=&o&&&&&&/span& &span class=&n&&races&/span& &span class=&o&&=&/span& &span class=&n&&itertools&/span&&span class=&o&&.&/span&&span class=&n&&permutations&/span&&span class=&p&&(&/span&&span class=&n&&horses&/span&&span class=&p&&)&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&races&/span&&span class=&p&&)&/span&
&span class=&o&&&&/span&&span class=&n&&itertools&/span&&span class=&o&&.&/span&&span class=&n&&permutations&/span& &span class=&nb&&object&/span& &span class=&n&&at&/span& &span class=&mh&&0xb754f1dc&/span&&span class=&o&&&&/span&
&span class=&o&&&&&&/span& &span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&n&&itertools&/span&&span class=&o&&.&/span&&span class=&n&&permutations&/span&&span class=&p&&(&/span&&span class=&n&&horses&/span&&span class=&p&&)))&/span&
&span class=&p&&[(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&),&/span&
&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&)]&/span&
&/code&&/pre&&/div&&p&&b&More about it in this article about &a class=& wrap external& href=&https://link.zhihu.com/?target=http%3A//effbot.org/zone/python-for-statement.htm& target=&_blank& rel}

我要回帖

更多关于 显卡显存大小 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信