何谓"沙发"?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了何谓"沙发"?相关的知识,希望对你有一定的参考价值。
1 据说沙发这个词最早出现是在一个成人论坛基本上沙发的由来是:有人发了美女图,回帖的人说好正点,要坐沙发打手枪
然后,凡是发了好图得到支持的都说坐沙发
后来,许多思想高尚的人不理解沙发这个词,然后就认为沙发指的是第一个回帖的人现在很多人第一个回帖就说坐是沙发,真是请使用文明用语至极 ,看个抗日的贴也去坐沙发,看个政治贴也去坐沙发,真的好精力 向那么多老是坐沙发的人致敬!!!!!
2、我还看见一个解释是:“一群人在看贴,突然很新的一个帖子发上来,第一个回帖的感叹了一句:sofast,之后所有的新资源都有人上去感叹sofast..沙发就是sofast的谐音,然后就这么流传下来了。”
3、在论坛里面,一般都会有很多人参加,楼主发出主贴表示发出论坛的主题,然后邀请各位友友进来谈论,主人--楼主要招待各位客人,家里当然会有沙发,板凳等招待客人,但是客人太多,而且要平等对待各位客人,所以只能以先到为尊,第一个先到者(第一个回帖)就可以坐沙发,而第二个只能坐板凳了,第三个就是地板了,为了安慰自己或者不嫌弃楼主的招待,可以把地板当真皮地板,呵呵,有意思吧!
4、第一个回复帖子一般认为是最快的,但是有些人,其实是大多数人根本就没有认真看主贴,只是为了抢第一个“支持者--顶”才发贴,所以叫“瞎发”音似“沙发”!但是越来越多的友友真的认为第一个回帖就是“沙发”所以更抢着去坐或躺,然后在慢慢的欣赏主贴的内容。
网络名词“沙发”考
沙发者,sofa也,源自英文。作为一个音译词,“沙发”二字其实看不出什么字面意义。但你知道沙发是什么东西吗?肯定懂。人们都见惯了,于是也就懂了。
在论坛,常常有人回复“沙发”。在楼主的身后,一群人抢着想要坐上去,那么网络名词“沙发”到底是什么意思呐?
简单地说,“沙发(SF)”指第一个回帖的人。
如果这个解释不足以让人满意,那么我们可以看看一些网上的传说。
据传,“沙发”一词最早出现在一个叫“断XX”的色情论坛,在某一天,一位坛友发布了一篇新贴,当时贴里面有一个漂亮动人的裸体尤物,第一个回贴的人回复:“哈哈我要坐在沙发上打手枪……”于是“沙发”就这样诞生了。之后,每当贴子里有漂亮女性的裸体出现,第一个回贴的人都回复“沙发”(坐在沙发上×××)。日复一日,“沙发”一词就从色情论坛传遍了全国所有的论坛。但当中了解“沙发”含意的人其实并不多,只是盲目跟风。
知道了这一层意思,是不是大家就失去了抢沙发的兴致呢?不然。习惯成自然,大不了我们就用“柔软的、可以将人包裹的大型椅子”替代这两个字吧。
“沙发”只有一个,不是人人都有机会坐上去的。那怎么办呢?此后就又诞生了一系列相关的网络名词,用来垫在众网友的屁股下面——
● “椅子”:第二个回帖的人。
● “板凳”:第三个回帖的人。
● “地板”:连板凳都没得坐的人。
在大虾发布的帖子后面,椅子、板凳也不是唾手可得的,坐地板又太凉。于是,抢座未得手的人,开始声称自己坐了“床”,或着坐了楼主的“大腿”~~~
码到这里,基本上可以Over了。尤记得列子有一回发贴后想要抢自己的沙发,结果晚了一步,没办法,只好自嘲“坐在了自己的大腿上”。
沙发:第一个回帖的人。后来,坐不到沙发的人,声称自己坐了“床”或楼主的“大腿”~
这里是些论坛日常用语对你也许有用。 ^-^
1、BBS:①Bulletin Board System的缩写,指电子公告板系统,国内统称论坛。②波霸,Big-Breasted Sister的缩写。
2、斑竹:版主,也可写作板猪。由于拼音输入造成的美妙谐音。副版主叫“板斧”。
3、马甲:注册会员又注册了其他的名字,这些名字统称为马甲,与马甲相对的是主ID。
4、菜鸟:原指电脑水平比较低的人,后来广泛运用于现实生活中,指在某领域不太拿手的人。与之相对的就是老鸟。
5、大虾:“大侠”的通假,指网龄比较长的资深网虫,或者某一方面(如电脑技术,或者文章水平)特别高超的人,一般人缘声誉较好才会得到如此称呼。
6、灌水:原指在论坛发表的没什么阅读价值的帖子,现在习惯上会把绝大多数发帖、回帖统称为“灌水”,不含贬义。
7、纯净水:无任何实质内容的灌水,也说水蒸气。
8、水手:喜欢灌水的人。级别高的也称水桶、水鬼、水仙。指女性灌水狂人时,还有个特定称呼:水母。
9、潜水:天天在论坛里呆着,但是不发帖,只看帖子、而且注意论坛日常事务的人。
10、打铁:写帖子,一般指有点儿重量的帖子。
11、拍砖:对某人某帖发表与其他人不同看法和理解的帖子。
例句:侠友们拍砖请注意口气和态度,否则很容易转化为人参公鸡。
12、刷屏:打开一个论坛,所有的主题帖都是同一个ID发的。
13、扫楼:也叫刷墙,打开一个论坛,所有主题帖的最后一个回复都是同一个ID的。
14、楼主:发主题帖的人。
15、盖楼:回同一个主题帖,一般粉丝比较喜欢盖楼。
16、楼上的:比你先一步回复同一个主题帖的人,与之相对的是“楼下的”。
17、几楼的:除楼主外,所有回复帖子的人,依次可称为“2楼的”、“3楼的”……
18、椅子:第二个回帖的人。
19、板凳:第三个回帖的人。
20、地板:连板凳都没得坐的人。
21、顶:一般论坛里的帖子一旦有人回复,就到主题列表的最上面去了。这个回复的动作叫做“顶”,与“顶”相对的是“沉”。
例句:这个帖子要是你不顶,它就沉下去啦。
22、走召弓虽:超强,通常用于回帖时表示对主题帖的膜拜。
23、驴友:泛指爱好旅游,经常一起结伴出游的人。
例句:阿肥去年才和松风古琴他们一起去过新疆,现在又要征集驴友去湖南啦。
24、汗:表示惭愧、无可奈何之意。衍生词有:暴汗、大汗、汗死、瀑布汗、暴雨梨花汗等。
25、倒:晕倒,表示对某帖某人或某现实很惊异。
26、寒:对某帖某人或某现象感到浑身发冷。
27、抓狂:形容自己受不了某人某帖的刺激而行为失常,处于暴走状态中。
28、踩一脚:也称踢一脚、留个爪子印等,都是跟帖之意。
29、路过:不想认真回帖,但又想拿回帖的分数或经验值。与之相对的字眼还有:顶、默、灌水、无语、飘过、路过等。
例句:在侠客社区,凡回帖只回路过、顶、默、灌水、无语、飘过、路过等字眼的行为,都会被视为故意灌水。
30、闪:离开。
31、匿鸟:隐身了。“匿”作“藏匿”讲;“了”是多音字,在句尾本该读“LE”,有人喜欢误读“LIAO”,遂谐音为“鸟”。
32、找抽帖:楼主发的帖子内容特别找抽,让绝大多数人都不待见,也称找砖帖。
33、火星帖:很久以前已经被无数人看过转过的旧帖,转火星帖的人被称为火星人。通常回帖会这样说:楼主还是快回火星吧,地球是很危险滴。(来自周星星《少林足球》)
34、恐龙:长得不漂亮的女性网民,含贬义。与之相对的是“青蛙”,形容相貌抱歉的男性网民。
35、犬科:喜欢追逐论坛里的女生的那种类型,尤其喜欢死缠烂打。
我们论坛很多哈~
36、狼族:热爱美色,不过比犬科作风正派一点,不会纠缠。
37、……的说:动词后置的一种用法,来自日文语法。
38、……ing:动词进行时的一种用法,来自英文语法。
39、残念:可惜之意,引申有“碎碎念”等。
40、×××××:儿童不宜的内容。
41、王道:相当于“权威、真理”之意。
42、黑旺财:旺财是《唐伯虎点秋香》里的一条狗,狗者,犬也。黑犬,就是“默”。此典出自晋江。
43、小白:①白烂的昵称,指专在网上无事生非的人。②“小**”的缩写。
44、小黑:黑名单。
45、浸小黑:ID被登记进黑名单。
46、小强:《唐伯虎点秋香》中的那只蟑螂,泛指生命力特别顽强的人。
47、粉丝:FANS的音译,超迷某人或某物的一类人,也称扇子、蕃薯,简称“粉”或“迷”。
48、包子:形容某人笨,或者长相欠佳。
49、蛋白质:笨蛋+**+神经质。
50、白骨精:白领+骨干+精英。
51、腊鸭:垃圾(来自《麦唛》系列)。“挂腊鸭”在粤语俗语中指吊颈自杀。
52、Kuso:日语“粪”的发音。起先是教游戏玩家如何把“烂Game认真玩”的意思,后来经台湾传入大陆,渐渐演化成“恶搞”之意。
53、维客:喜欢使用WIKI这种超文本技术的网络爱好者。
54、博客:一种网上共享空间,让人以日记的方式在网络上展现自己的形式。博客让两个女人飞速走红:木子美和芙蓉姐姐。
55、黑客:又称骇客,指在电脑领域有特殊才能或技巧的人。这类人运用自己的才能或技巧,要么是专门检测系统漏洞,要么有可能做有违道德或法律的事。
56、红客:具有====义倾向的中国网络技术爱好者,与黑客相对。
57、朋客:起源于“朋克”。电脑朋客现在越来越多的被等同于电脑罪犯了。
58、闪客:使用Flash软件做动画的人,我们看到的很多电子贺卡和网站MTV都是闪客的杰作。
59、极客:也称奇客,Geek,指有较高超电脑能力的人。 参考技术A 沙发
一种解释:“沙发”是个外来词,根据英语单词sofa 音译而来.也就是我们坐的工具,以前叫凳子,现在高级啦~用外裹真皮及合成皮,构架是用木材或钢材内衬棉絮及其他泡沫材料等做成的椅子,整体比较舒适。
二种解释:指论坛上第一个回帖的人的位置。 据说沙发这个词最早出现是在一个成人论坛,基本上沙发的由来是:有人发了美女图,回帖的人说好正点,要坐沙发XXX。然后,凡是发了好图得到支持的都说坐沙发。后来,许多思想高尚的人不理解沙发这个词然后就认为沙发指的是第一个回帖的人,现在很多人第一个回帖就说坐是沙发。
目前一般有以下几种解析:
1、据说沙发这个词最早出现是在一个成人论坛,基本上沙发的由来是:有人发了美女图,回帖的人说好正点,要坐沙发XXX。然后,凡是发了好图得到支持的都说坐沙发。后来,许多思想高尚的人不理解沙发这个词然后就认为沙发指的是第一个回帖的人,现在很多人第一个回帖就说坐是沙发。
2、我还看见一个解释是:“一群人在看贴,突然很新的一个帖子发上来,第一个回帖的感叹了一句:sofast,之后所有的新资源都有人上去感叹sofast..沙发就是sofast的谐音,然后就这么流传下来了。”
3、在论坛里面,一般都会有很多人参加,楼主发出主贴表示发出论坛的主题,然后邀请各位友友进来谈论,主人--楼主要招待各位客人,家里当然会有沙发,板凳等招待客人,但是客人太多,而且要平等对待各位客人,所以只能以先到为尊,第一个先到者(第一个回帖)就可以坐沙发,而第二个只能坐板凳了,第三个就是地板了,为了安慰自己或者不嫌弃楼主的招待,可以把地板当真皮地板,呵呵,有意思吧!
4、第一个回复帖子一般认为是最快的,但是有些人,其实是大多数人根本就没有认真看主贴,只是为了抢第一个“支持者--顶”才发贴,所以叫“瞎发”音似“沙发”!但是越来越多的友友真的认为第一个回帖就是“沙发”所以更抢着去坐或躺,然后在慢慢的欣赏主贴的内容。
还有一种解释是:second floor即指论坛回帖的第二楼,谐音“沙发”
<沙发>和<顶>的由来
初见沙发和顶这个词的时候是在一成人论坛
基本上沙发和顶的由来是:有人发了美女图
回帖的人说好正点,想顶美女要坐沙发打手枪
然后,凡是发了好图得到支持的都说坐沙发都说要顶
后来,许多智商低下或者所谓思想高尚的人不理解沙发和顶这个词
然后就认为沙发指的是第一个回帖的人
现在很多人第一个回帖就说坐是沙发,真是傻到至极
看个抗日的贴也去坐沙发,要顶,看个政治贴也去坐沙发,也要去顶
丫真的好精力向那么多老是坐沙发的致敬!!!!!!! 参考技术B 第一个跟帖的人称为“坐沙发”。
据说沙发这个词最早出现是在一个成人论坛,基本上沙发的由来是:有人发了美女图,回帖的人说好正点,要坐沙发XXX。然后,凡是发了好图得到支持的都说坐沙发。后来,许多思想高尚的人不理解沙发这个词然后就认为沙发指的是第一个回帖的人,现在很多人第一个回帖就说坐是沙发,真是... 看个抗日的贴也去坐沙发,看个政治贴也去坐沙发,你丫真的好精力。向那么多老是坐沙发的致敬!!!
说句实话这个解释到是很有道理的。也是可以考证的,以前网络上就数成人论坛比较热门,住的人多,词汇就多了。
不过我还看见一个解释是:“一群人在看贴,突然很新的一个资源出来,第一个回帖的感叹了一句:so fast,之后所有的新资源都有人上去感叹so fast..沙发就是so fast的谐音,然后就这么流传下来了。”
无论是那种说法,现在在论坛上这个词都已经被滥用了,而且也成为灌水的一种方式,估计今后论坛也要封掉这个词。一论坛上网友云:“用得太多简直泛滥,也间接导致帖子回复质量的急剧下降。这流俗的东西简直让我想到刀郎大哥那第一场雪! ”而且现在还引申出了第三楼的是坐板凳,使用第一个说法很容易解释,抢不到沙发坐,板凳也将就。如果使用第二种说法就完全不能解释板凳是什么了?那么像这么算的话,第四楼就是坐地板、第五楼就是坐地下室、第六楼是坐到什么地方的呢?
很多词都可以进化的,特别是网络热门词汇。可能沙发开始真的是那个意思,不过这么多年来大家坐惯了,就渐渐忘了它的本意,现在就拿来说明是抢到了第一位坐着沙发看贴。本回答被提问者采纳 参考技术C 目前一般有以下几种解析:
1、据说沙发这个词最早出现是在一个成人论坛,基本上沙发的由来是:有人发了美女图,回帖的人说好正点,要坐沙发XXX。然后,凡是发了好图得到支持的都说坐沙发。后来,许多思想高尚的人不理解沙发这个词然后就认为沙发指的是第一个回帖的人,现在很多人第一个回帖就说坐是沙发。
2、我还看见一个解释是:“一群人在看贴,突然很新的一个帖子发上来,第一个回帖的感叹了一句:sofast,之后所有的新资源都有人上去感叹sofast..沙发就是sofast的谐音,然后就这么流传下来了。”
3、在论坛里面,一般都会有很多人参加,楼主发出主贴表示发出论坛的主题,然后邀请各位友友进来谈论,主人--楼主要招待各位客人,家里当然会有沙发,板凳等招待客人,但是客人太多,而且要平等对待各位客人,所以只能以先到为尊,第一个先到者(第一个回帖)就可以坐沙发,而第二个只能坐板凳了,第三个就是地板了,为了安慰自己或者不嫌弃楼主的招待,可以把地板当真皮地板,呵呵,有意思吧!
4、第一个回复帖子一般认为是最快的,但是有些人,其实是大多数人根本就没有认真看主贴,只是为了抢第一个“支持者--顶”才发贴,所以叫“瞎发”音似“沙发”!但是越来越多的友友真的认为第一个回帖就是“沙发”所以更抢着去坐或躺,然后在慢慢的欣赏主贴的内容。 参考技术D 坐“沙发”的由来
近来看见喜欢坐沙发的人越来越多,难道沙发真的那么好坐吗?到底沙发是什么意思?
沙发应该是从英文sofa翻译过来的'外来词'。金山词霸的解释是:装有弹簧或厚垫的靠背椅。这个我想大家都知道,不是废话吗?然后看看这个文章就知道是用来干什么的了。
下面是沙发的由来:
据说沙发这个词最早出现是在一个成人论坛,基本上沙发的由来是:有人发了美女图,回帖的人说好正点,要坐沙发打飞机。然后,凡是发了好图得到支持的都说坐沙发。后来,许多思想高尚的人不理解沙发这个词然后就认为沙发指的是第一个回帖的人,现在很多人第一个回帖就说坐是沙发,真是... 看个抗日的贴也去坐沙发,看个政治贴也去坐沙发,你丫真的好精力。向那么多老是坐沙发的致敬!!!
说句实话这个解释到是很有道理的。也是可以考证的,以前网络上就数成人论坛比较热门,住的人多,词汇就多了。
不过我还看见一个解释是:“一群人在看贴,突然很新的一个资源出来,第一个回帖的感叹了一句:so fast,之后所有的新资源都有人上去感叹so fast..沙发就是so fast的谐音,然后就这么流传下来了。”
无论是那种说法,现在在论坛上这个词都已经被滥用了,而且也成为灌水的一种方式,估计今后论坛也要封掉这个词。一论坛上网友云:“用得太多简直泛滥,也间接导致帖子回复质量的急剧下降。这流俗的东西简直让我想到刀郎大哥那第一场雪! ”而且现在还引申出了第三楼的是坐板凳,使用第一个说法很容易解释,抢不到沙发坐,板凳也将就。如果使用第二种说法就完全不能解释板凳是什么了?那么像这么算的话,第四楼就是坐地板、第五楼就是坐地下室、第六楼是坐到什么地方的呢?
很多词都可以进化的,特别是网络热门词汇。可能沙发开始真的是那个意思,不过这么多年来大家坐惯了,就渐渐忘了它的本意,现在就拿来说明是抢到了第一位坐着沙发看贴。不过我泡论坛这么久很少坐过沙发,也没有用过“沙发”一次,可能有点吃不到葡萄说葡萄酸吧!
参考资料:百度知道
python "yield"(转载)
转载地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?
我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。
如何生成斐波那契數列
斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前 N 个数是一个非常简单的问题,许多初学者都可以轻易写出如下函数:
清单 1. 简单输出斐波那契數列前 N 个数
def fab(max): n, a, b = 0, 0, 1 while n < max: print b a, b = b, a + b n = n + 1
执行 fab(5),我们可以得到如下输出:
>>> fab(5) 1 1 2 3 5
结果没有问题,但有经验的开发者会指出,直接在 fab 函数中用 print 打印数字会导致该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列。
要提高 fab 函数的可复用性,最好不要直接打印出数列,而是返回一个 List。以下是 fab 函数改写后的第二个版本:
清单 2. 输出斐波那契數列前 N 个数第二版
def fab(max): n, a, b = 0, 0, 1 L = [] while n < max: L.append(b) a, b = b, a + b n = n + 1 return L
可以使用如下方式打印出 fab 函数返回的 List:
>>> for n in fab(5): ... print n ... 1 1 2 3 5
改写后的 fab 函数通过返回 List 能满足复用性的要求,但是更有经验的开发者会指出,该函数在运行中占用的内存会随着参数 max 的增大而增大,如果要控制内存占用,最好不要用 List
来保存中间结果,而是通过 iterable 对象来迭代。例如,在 Python2.x 中,代码:
清单 3. 通过 iterable 对象来迭代
for i in range(1000): pass
会导致生成一个 1000 个元素的 List,而代码:
for i in xrange(1000): pass
则不会生成一个 1000 个元素的 List,而是在每次迭代中返回下一个数值,内存空间占用很小。因为 xrange 不返回 List,而是返回一个 iterable 对象。
利用 iterable 我们可以把 fab 函数改写为一个支持 iterable 的 class,以下是第三个版本的 Fab:
清单 4. 第三个版本
class Fab(object): def __init__(self, max): self.max = max self.n, self.a, self.b = 0, 0, 1 def __iter__(self): return self def next(self): if self.n < self.max: r = self.b self.a, self.b = self.b, self.a + self.b self.n = self.n + 1 return r raise StopIteration()
Fab 类通过 next() 不断返回数列的下一个数,内存占用始终为常数:
>>> for n in Fab(5): ... print n ... 1 1 2 3 5
然而,使用 class 改写的这个版本,代码远远没有第一版的 fab 函数来得简洁。如果我们想要保持第一版 fab 函数的简洁性,同时又要获得 iterable 的效果,yield 就派上用场了:
清单 5. 使用 yield 的第四版
def fab(max): n, a, b = 0, 0, 1 while n < max: yield b # print b a, b = b, a + b n = n + 1 ‘‘‘
第四个版本的 fab 和第一版相比,仅仅把 print b 改为了 yield b,就在保持简洁性的同时获得了 iterable 的效果。
调用第四版的 fab 和第二版的 fab 完全一致:
>>> for n in fab(5): ... print n ... 1 1 2 3 5
简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。
也可以手动调用 fab(5) 的 next() 方法(因为 fab(5) 是一个 generator 对象,该对象具有 next() 方法),这样我们就可以更清楚地看到 fab 的执行流程:
清单 6. 执行流程
>>> f = fab(5) >>> f.next() 1 >>> f.next() 1 >>> f.next() 2 >>> f.next() 3 >>> f.next() 5 >>> f.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
当函数执行结束时,generator 自动抛出 StopIteration 异常,表示迭代完成。在 for 循环里,无需处理 StopIteration 异常,循环会正常结束。
我们可以得出以下结论:
一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。
yield 的好处是显而易见的,把一个函数改写为一个 generator 就获得了迭代能力,比起用类的实例保存状态来计算下一个 next() 的值,不仅代码简洁,而且执行流程异常清晰。
如何判断一个函数是否是一个特殊的 generator 函数?可以利用 isgeneratorfunction 判断:
清单 7. 使用 isgeneratorfunction 判断
>>> from inspect import isgeneratorfunction >>> isgeneratorfunction(fab) True
要注意区分 fab 和 fab(5),fab 是一个 generator function,而 fab(5) 是调用 fab 返回的一个 generator,好比类的定义和类的实例的区别:
清单 8. 类的定义和类的实例
>>> import types >>> isinstance(fab, types.GeneratorType) False >>> isinstance(fab(5), types.GeneratorType) True
fab 是无法迭代的,而 fab(5) 是可迭代的:
>>> from collections import Iterable >>> isinstance(fab, Iterable) False >>> isinstance(fab(5), Iterable) True
每次调用 fab 函数都会生成一个新的 generator 实例,各实例互不影响:
>>> f1 = fab(3) >>> f2 = fab(5) >>> print ‘f1:‘, f1.next() f1: 1 >>> print ‘f2:‘, f2.next() f2: 1 >>> print ‘f1:‘, f1.next() f1: 1 >>> print ‘f2:‘, f2.next() f2: 1 >>> print ‘f1:‘, f1.next() f1: 2 >>> print ‘f2:‘, f2.next() f2: 2 >>> print ‘f2:‘, f2.next() f2: 3 >>> print ‘f2:‘, f2.next() f2: 5
return 的作用
在一个 generator function 中,如果没有 return,则默认执行至函数完毕,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。
另一个例子
另一个 yield 的例子来源于文件读取。如果直接对文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。通过 yield,我们不再需要编写读文件的迭代类,就可以轻松实现文件读取:
清单 9. 另一个 yield 的例子
def read_file(fpath): BLOCK_SIZE = 1024 with open(fpath, ‘rb‘) as f: while True: block = f.read(BLOCK_SIZE) if block: yield block else: return
以上仅仅简单介绍了 yield 的基本概念和用法,yield 在 Python 3 中还有更强大的用法,我们会在后续文章中讨论。
注:本文的代码均在 Python 2.7 中调试通过
以上是关于何谓"沙发"?的主要内容,如果未能解决你的问题,请参考以下文章