csol缔造者模式密码中 各种神秘好玩机关的沙漠一空中电脑密码是什么? 问题 1+1等于什么提示某手机

&p&好吧,纸糊惯例:高票答案纯属一本正经的胡扯八道。&/p&&p&&br&&/p&&p&&br&&/p&&p&这个是FileZilla,server用来建立ftp服务器,client就不用说了,码农们最喜欢的ftp客户端软件,不知道有没有之一,反正天天见。&/p&&p&&a href=&///?target=https%3A//filezilla-project.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The free FTP solution&i class=&icon-external&&&/i&&/a&&/p&&p&两者刚好一套。自己配个环境,试试看会不会出现“最后一段下载速度缓慢”问题。&/p&&p&&br&&/p&&p&&br&&/p&&p&Wireshark,协议分析利器。实际看看TCP协议运作过程。&/p&&p&&a href=&///?target=https%3A//www.wireshark.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Wireshark · Go Deep.&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&&br&&/p&&p&不要看见贴几张图片就以为那是标准答案。能几乎每个关键点都说错,学成这样还真是难能可贵了。&/p&&p&&br&&/p&&p&1、“慢起动”速度真的慢,但持续时间极短。&/p&&p&慢起动阶段,TCP window从极小(如1、2……10字节等)开始,每个RTT周期下载速度最高增加一倍(RTT已知时,TCP window大小和传输速率成正比,故可认为每个RTT周期下载速度增加一倍)。&/p&&p&出现第一个丢包或满足其它条件时(其它条件较复杂,不讨论),慢起动停止。&/p&&p&&br&&/p&&p&对常见的宽带链路,哪怕RTT取50ms,那也是每50ms链路下载速率翻一番。1秒钟足够下载速率上涨2^20倍。&/p&&p&哪怕最不利情况下,几秒钟也足够跑到链路带宽上限了……&/p&&p&&br&&/p&&p&神TM的“初始下载速度快是因为慢开始”。&/p&&p&&br&&/p&&p&2、“拥塞控制”很稳。&/p&&p&如前所述,你先下个FileZilla-server搭建个环境,然后用FileZilla-client从上面下一个大文件(比如高清视频/游戏安装包什么的)。&/p&&p&打开任务管理器,性能-以太网,看看下载速率稳不稳,是不是一本道答案那样大起大落。&/p&&p&恰恰相反,几乎所有的拥塞控制算法都可以保证“实际数据传输速率在网络允许的最大带宽附近波动”——实际到任务管理器里面看看是不是这样。&/p&&p&&br&&/p&&p&神TM的“后面一直减半减半减半就会越来越慢越慢越慢”——真要把程序写成那样,搞网络的还是买块豆腐碰死算了。&/p&&p&&br&&/p&&p&3、“快速重传”对拥塞控制算法的影响很复杂,不同算法有不同的应对。&/p&&p&&a href=&///?target=https%3A//en.wikipedia.org/wiki/TCP_congestion_control%23Fast_retransmit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TCP congestion control&i class=&icon-external&&&/i&&/a&&/p&&p&要谈论“快速重传”,需要先搞明白DUP ACK。&/p&&p&DUP ACK是这样一种机制:通常情况下,接收端收到发送端发来的包后,需要回一个ACK包。这个ACK包的作用是“通知发送端,编号xx的包我已经收到了,请继续发编号xx+1的包”。那么如果包10延误或丢失了,接收端就可能在收到包9后收到包11、12、13……协议规定,当收到这样不按顺序到来的包时,接收端也要回一个ACK,但这个ACK不能确认包11收到(因为TCP协议允许用一个ACK确认一系列包,比如对包11的ACK意味着包11之前的所有包已经全部收到),而是重复报告“包9已收到,请求包10”——这就叫DUP ACK。发送方见到这种DUP ACK,就明白接收方收到的包乱序了。&/p&&p&&br&&/p&&p&正常情况下,一个包必须经过足够长时间才能确认其丢失,然后发送端才会重传它。这个响应周期太长了,对传输速率影响太大。于是有些算法就利用DUP ACK:一旦连续出现3个DUP ACK,就认为报文已经丢失,于是立即重传DUP ACK请求的下一个包。这就叫“快速重传”。&/p&&p&&br&&/p&&p&快速重传大大加快了网络拥塞的发现/响应速度,依赖它的算法自然就会比“超时重传算法”更“精细”一些——换句话说,就是“在网络允许最大带宽”附近的波动更“细碎”一些,对网络带宽的利用率也更高。&/p&&blockquote&第一次丢包时TCP window size的一半被称为&slow start threshold&,大多流控算法遇到DUP ACK会直接回退到这个值(并不像最古老的算法那样重新执行slow start过程)。这就有效降低了波动幅度。再加上各种缓冲区起到的类“滤波”作用,从而可以用缓冲区内容“填充”网速“低谷”、又用缓冲区空间“削平”网速“高峰”:换句话说,虽然TCP算法的发送速率的确是“锯齿形”曲线,但实际的数据流却相对平缓,只是RTT(可理解为报文发送-响应间隔时间)周期性变化而已。
而最新的BBR算法直接依赖RTT的改变。它把网速稳定在RTT不会增长的最高速率上。
换句话说,它检测的是链路中缓冲区的使用:因为一旦用了缓冲区,那么RTT就会增加,所以RTT增加就说明有设备开始用缓冲区了。而使用缓冲区本身,又是网速已达上限的标志(因为不缓冲就得丢包)。把网速锚定在这里,显然是更科学、更合理的。&/blockquote&&p&&br&&/p&&p&重复一遍:拥塞控制算法的目标是尽量提高网络带宽的利用率、同时尽量保证每个链路公平分享带宽。所谓“拥塞控制算法导致下载越来越慢”纯属胡扯八道。&/p&&p&&br&&/p&&p&PS:google最新的BBR算法无视DUP ACK。它比旧有算法更接近本质。&/p&&p&但这些和主题无关,故不再深入讨论。&/p&&p&&a href=&///?target=http%3A///%3Fthread-6.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TCP BBR算法与Reno/CUBIC的对比&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&————————————————————————————&/p&&p&&br&&/p&&p&如果大家亲自搭建ftp服务器做过实验,就会发现,哪怕下一个100G的大文件,整个下载过程都是非常平稳的:如果没有其它干扰且硬盘访问速度足够,那么你会发现,除了最开始速率略慢、但1秒不到就到了网速上限然后一直保持,直到文件全部下载完毕,没有任何大的波动。&/p&&p&其中,这个“1秒不到就逼近网速上限”就是“慢起动”过程;之后使得网速在几分钟乃至几小时内都一直保持稳定高速的,就是拥塞控制算法。&/p&&p&&br&&/p&&p&&br&&/p&&p&但是……网上到别人的服务器下载文件可不是这样啊?&/p&&p&无论如何,我们已经通过实验证明了,TCP/ftp协议本身没有问题。那么我们就不需要继续在上面浪费时间了。&/p&&p&&br&&/p&&p&那么,问题在哪呢?&/p&&p&&br&&/p&&p&1、很多朋友谈到“多线程下载”了。尤其对P2P下载,这的确是一个重要影响因素。&/p&&p&这是因为,前面提到过,TCP拥塞算法要保证“每个链路公平分享带宽”——嗯,如果一共10M带宽,我和张三等十人每人一条链接ftp下载,那么每人都能达到1M的下载速率,很公平,对吧?&/p&&p&&br&&/p&&p&但,如果张三耍流氓,他多开了一条链接呢?&/p&&p&现在成了每条链接0.9M带宽,仍然很公平,对吧?&/p&&p&……当然不对!&/p&&p&张三是两条链接,他有1.8M的下载速率;而其它9人每人只有1条链接,所以只有0.9M的带宽。&/p&&p&&br&&/p&&p&怎么办?多开链接呗。你敢开三条,我就开四条……你开200条,我开400条……谁开的多谁抢到的带宽就越多,傻子才不开。&/p&&p&(网管:现在你们明白为啥要禁P2P了吧)&/p&&p&(服务提供商也不干了:每条链接都得有个接受/发送缓冲区,这可都是内存啊。你们这么整,我服务器还不得累死。不行,我得配置个策略,每个用户/ip至多只准建立一条链接[实际一般为1~5条],多了就强制断开,反复重试我ban你ip)&/p&&p&(举例只是类似宿舍共用路由的情形;实际上网络任何部分都可能出现瓶颈。但一般来说,瓶颈多出现在末端,即用户路由器和内容提供商服务器那里;另外就是跨国通信带宽不足导致瓶颈——电信-联通这种奇葩情况不予讨论)&/p&&p&&br&&/p&&p&下载一个文件时,只剩最后一点点了,多开链接就不划算了——还没跑满带宽就搬回来了,开越多反而更慢,还讨人厌;还有的干脆从协议上就不支持过小的分块……所以多线程下载到最后,只能1条链接搬,速度自然就慢了。&/p&&p&&br&&/p&&p&但,如果仅仅是争抢带宽的话……经常P2P下载单链接也能跑到400K啊;为什么只剩一点点时,速度总是只剩2~3K?&/p&&p&这是因为:&/p&&p&&br&&/p&&p&2、资源提供者的心机&/p&&p&我们知道,P2P号称“下载者越多速度越快”;原理很简单,程序会自动让每个人把自己下载到的部分分享出去,下载的人越多,分享者自然也越多,速度当然就越快了。&/p&&p&但现实中,有些人只下载不上传(这种行为被形象的称为“吸血”,现在有不少专门的反吸血模块可以检测到他们并拒绝他们下载);同时,多数用户的下载带宽和上传带宽不对等(说的就是你,ADSL;其实现在的光纤宽带,一般也多是下载带宽几倍于上传带宽);最后,多数人夜里挂P2P软件,并且会设置“下载结束后关机”。&/p&&p&这就导致下载量总是远大于上传量——这么一来,“人越多反而越快”就成了一句空话,玩不起来了。&/p&&p&&br&&/p&&p&怎么办?&/p&&p&检查谁快下载完了,限他的速,让他多做会儿种。&/p&&p&&br&&/p&&p&&br&&/p&&p&类似的,普通的下载站,他们当然希望吸引更多用户;怎么吸引呢?丰富的内容+更高的下载速度。&/p&&p&但,想提供更高的下载速度,就必须购买更多的带宽……可买带宽是需要钱钱的……&/p&&p&&br&&/p&&p&怎么办?&/p&&p&当同时下载量太大时,发现一个用户刚开始下载,就给他一个更高的限速,允许他“光速下载”;下载一段时间后再限速——用户没耐心一直盯着看,刚开始速度快让他很高兴,中后期他不看了就降速节约带宽:这就解决了“更快的下载速度”和“带宽得花钱买”之间的矛盾。&/p&&p&&br&&/p&&p&于是,买下和竞争对手一样多的带宽,用户就是感觉我更快!&/p&&p&&br&&/p&&p&————————————————————&/p&&p&&br&&/p&&p&最后,很多人可能会奇怪:下载到最后一点点,速度总是很慢;我暂停/断开一小会儿,重新开始时下载速度就会很快,然后很快又降低到原来的程度了,这是为什么?&/p&&p&&br&&/p&&p&不,这可不是因为高票那个一本道答案的“慢起动”。&/p&&p&&br&&/p&&p&要说清这个,咱得从限速算法的原理说起。&/p&&p&具体细节太复杂了;简而言之,为了满足各种刁钻古怪的要求,限速算法的原理并不是直接限制网络传输速度(没法实现),而是“你想传出去每一个字节的数据,都得得到我的授权;而‘授权令’的产生速度很容易控制;那么如果我每秒只产生1M个授权令,你的传输速率自然最高只有1M/s;最后,规定‘授权令’可累积,但有上限”。&/p&&p&&br&&/p&&p&&br&&/p&&p&明白了这个,问题就很容易解答了:下载到最后速度很慢是因为限速,给你的授权令产生太慢,产生一点你用一点,传输速率自然就被限到几K了;暂停/断开后,授权令就给你累计下来,那么恢复传输后,你就可以一次性把积攒下来的授权给用完——于是瞬时传输速度就飙到了几百K甚至若干M;可一旦积攒的授权用完了,你还是只能等新的授权,传输速率自然就又回到了几K……&/p&&p&你以为自己得了实惠……实际上,瞬时几百K的速度用的还是暂停时本就该分给你的授权;反倒是,因为暂停/断开时间过长,你还因为溢出而浪费了一些“多余”的授权令……&/p&&p&&br&&/p&&p&&br&&/p&&p&PS:很多软件计算传输速率用的是平均值。所以看起来传输速率并不是暴起暴落,而是先600K后300K然后160K最后又回到20K;但实际上只有第一秒是600K,第二秒已经是20K了;但它把两秒的流量加起来一平均……&/p&&p&&br&&/p&&p&PS2:有些时候,因为最后一段时间被严重限速,导致相关线程优先级过低;然后如果软件实现有问题,就很容易在这段时间暴露出来。此时断开链接重试就类似网络版的“重启下说不定就好了”。对这种情况,断开重试的确有助于提高最后一段的下载速度。&/p&&p&&br&&/p&&p&PS3:家用路由器的CPU太弱、内存也太少,所以打开流控/QOS时,经常在一段时间的使用后导致软件状态紊乱。此时,经过路由器的报文延迟极大增加、频频出现丢包/乱序问题,且延迟时间忽高忽低。这也会严重影响下载速率(网游什么的当然更没法玩)。这种情况往往需要重启路由才能恢复正常(有的路由甚至可能因为过热而自动重启)。但如果关闭流控等高级功能,拿这种路由当交换机用,就极少出现这种问题了。&/p&&p&这大概也就是为何外部参数(速率、网口数、支持功能等)差不多的路由器,有的只要几十元,有的却敢“狮子大开口”要几千甚至几万的原因吧。
&/p&&p&PS4:国内因为墙的干扰,有时下载正常内容也会遭遇墙发来的RST包。这也会导致下载中断。由于大多软件不知道如何处理RST包(这种报文太特殊,正常情况下压根就不应该出现),故此时往往只能通过人工干预恢复……&/p&&p&&br&&/p&&p&PS5:如果你对网络感兴趣,想知道更多……那么装个Linux吧。装虚拟机里面也行。&/p&&p&Linux实现了几乎所有的流控算法,你可以从中自由选择,以便观察它们在实际网络环境中的表现。&/p&&p&你可以很容易的使用TCP DUMP配合脚本,深入观察/分析各种算法的表现;还可以利用TC模拟网络抖动、丢包、乱序等几乎所有你能想到的奇葩状况,从而观察异常情况下各种流控算法的实际表现。&/p&&p&&br&&/p&&p&&a href=&///?target=https%3A///developerworks/cn/linux/1412_xiehy_tc/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linux 高级流控&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&///?target=http%3A///Pierre-de-Ronsard/archive//2637622.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&linux--TC - 龙沙宝石 - 博客园&i class=&icon-external&&&/i&&/a&&/p&
好吧,纸糊惯例:高票答案纯属一本正经的胡扯八道。 这个是FileZilla,server用来建立ftp服务器,client就不用说了,码农们最喜欢的ftp客户端软件,不知道有没有之一,反正天天见。两者刚好一套。自己配个环境,试试看会不会出现“最…
&img src=&/v2-1b038db0efd5ddf6d333b3f_b.png& data-rawwidth=&701& data-rawheight=&408& class=&origin_image zh-lightbox-thumb& width=&701& data-original=&/v2-1b038db0efd5ddf6d333b3f_r.png&&&p&双十一你们的手还健在吗? 还在的话来刷一波题?&br&&/p&&p&希望此文可以长期更新并作为一篇Python的面试宝典。每一道题目都附有详细解答,以及更加详细的回答链接。此篇是概念篇,下一篇会更新面试题代码篇。&/p&&p&&img data-rawheight=&408& data-rawwidth=&701& src=&/v2-1b038db0efd5ddf6d333b3f_b.png& class=&origin_image zh-lightbox-thumb& width=&701& data-original=&/v2-1b038db0efd5ddf6d333b3f_r.png&&(一)、这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?&/p&&p&答:如果我们不确定往一个函数中传入多少参数,或者我们希望以元组(tuple)或者列表(list)的形式传参数的时候,我们可以使用*args(单星号)。如果我们不知道往函数中传递多少个关键词参数或者想传入字典的值作为关键词参数的时候我们可以使用**kwargs(双星号),args、kwargs两个标识符是约定俗成的用法。&/p&&p&另一种答法:当函数的参数前面有一个星号*号的时候表示这是一个可变的位置参数,两个星号**表示这个是一个可变的关键词参数。星号*把序列或者集合解包(unpack)成位置参数,两个星号**把字典解包成关键词参数。 &br&&/p&&p&代码辅助理解:&img data-rawheight=&496& data-rawwidth=&856& src=&/v2-4053fc4dad7aa258b2bc7cd_b.png& class=&origin_image zh-lightbox-thumb& width=&856& data-original=&/v2-4053fc4dad7aa258b2bc7cd_r.png&&&/p&&p&(二)、谈一谈Python的装饰器(decorator)&br&&/p&&p&装饰器本质上是一个Python函数,它可以让其它函数在不作任何变动的情况下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景。比如:插入日志、性能测试、事务处理、缓存、权限校验等。有了装饰器我们就可以抽离出大量的与函数功能无关的雷同代码进行重用。&/p&&p&有关于具体的装饰器的用法看这里:&a class=& wrap external& href=&/?target=http%3A///link%3Furl%3DhuR7xMwVwBlE0WQpEmVCsWtnvVbfV62M87wXZ5JQoSPgtl7_9xWym6VABe2YQvu2POqYvDAFAlk6wCQZSHeGpYPmpAIvfvkDJzpxTU4kNui4Bj4nYnzucWAYswvubnfopp7OzZk9zChKIFlB-k9-N9avBrLrjaPf5pdI94wyPw8_Or-jBPU_CkgLzz6N_KoK%26wd%3D%26eqid%3D0fc2279b9& target=&_blank& rel=&nofollow noreferrer&&装饰器 - 廖雪峰的官方网站&i class=&icon-external&&&/i&&/a&&/p&&p&&img data-rawheight=&595& data-rawwidth=&717& src=&/v2-f42f014edec7aef2b3d87cf_b.png& class=&origin_image zh-lightbox-thumb& width=&717& data-original=&/v2-f42f014edec7aef2b3d87cf_r.png&& (三)、简要描述Python的垃圾回收机制(garbage collection)&/p&&p&Python中的垃圾回收是以&b&引用计数&/b&为主,&b&标记-清除&/b&和&b&分代收集&/b&为辅。 &/p&&ul&&li& 引用计数:Python在内存中存储每个对象的引用计数,如果计数变成0,该对象就会消失,分配给该对象的内存就会释放出来。&/li&&li& 标记-清除:一些容器对象,比如list、dict、tuple,instance等可能会出现引用循环,对于这些循环,垃圾回收器会定时回收这些循环(对象之间通过引用(指针)连在一起,构成一个有向图,对象构成这个有向图的节点,而引用关系构成这个有向图的边)。&/li&&li&分代收集:Python把内存根据对象存活时间划分为三代,对象创建之后,垃圾回收器会分配它们所属的代。每个对象都会被分配一个代,而被分配更年轻的代是被优先处理的,因此越晚创建的对象越容易被回收。&br&&/li&&/ul&&p&如果你想要深入了解Python的GC机制,点击这里:&a class=& wrap external& href=&/?target=http%3A///p/1e375fb40506& target=&_blank& rel=&nofollow noreferrer&&[转载]Python垃圾回收机制--完美讲解!&i class=&icon-external&&&/i&&/a&&/p&&p&(四)、Python多线程(multi-threading)。这是个好主意吗?&/p&&p&Python并不支持真正意义上的多线程,Python提供了多线程包。Python中有一个叫Global Interpreter Lock(GIL)的东西,它能确保你的代码中永远只有一个线程在执行。经过GIL的处理,会增加执行的开销。这就意味着如果你先要提高代码执行效率,使用threading不是一个明智的选择,当然如果你的代码是IO密集型,多线程可以明显提高效率,相反如果你的代码是CPU密集型的这种情况下多线程大部分是鸡肋。 &/p&&p&想要深入详细了解多线程,点击这里:&a class=& wrap external& href=&/?target=http%3A//www.jb51.net/article/63784.htm& target=&_blank& rel=&nofollow noreferrer&&详解Python中的多线程编程_python&i class=&icon-external&&&/i&&/a&&/p&&p&想了解一下IO密集和CPU密集可以点击这里:&a href=&/?target=http%3A//blog.csdn.net/q_l_s/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CPU-bound(计算密集型) 和I/O bound(I/O密集型)&i class=&icon-external&&&/i&&/a&&br&&/p&&p&(五)、 说明&b&os,sys&/b&模块不同,并列举常用的模块方法?&/p&&p&官方文档: &br&&/p&&ul&&li&os模板提供了一种方便的使用操作系统函数的方法&/li&&li&sys模板可供访问由解释器使用或维护的变量和与解释器交互的函数&/li&&/ul&&p&另一种回答:&/p&&p&os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口。sys模块负责程序与Python解释器的交互,提供了一系列的函数和变量用户操作Python运行时的环境。&/p&&p&一些常用的方法:&img data-rawheight=&489& data-rawwidth=&703& src=&/v2-34602fbbcd5c3e_b.png& class=&origin_image zh-lightbox-thumb& width=&703& data-original=&/v2-34602fbbcd5c3e_r.png&&&img data-rawheight=&490& data-rawwidth=&1078& src=&/v2-b1cf8ab17dcefeb0c659_b.png& class=&origin_image zh-lightbox-thumb& width=&1078& data-original=&/v2-b1cf8ab17dcefeb0c659_r.png&&一些常用的用法示例:&/p&&p&&img data-rawheight=&465& data-rawwidth=&867& src=&/v2-4f4bf284e545f2ba740143_b.png& class=&origin_image zh-lightbox-thumb& width=&867& data-original=&/v2-4f4bf284e545f2ba740143_r.png&& 想要了解更详细的使用请访问:&a href=&/?target=http%3A///pycode/p/sysos.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&os和sys模块 - 君醉&i class=&icon-external&&&/i&&/a&&/p&&p&(六)、什么是lambda表达式?它有什么好处?&/p&&p&简单来说,lambda表达式通常是当你需要使用一个函数,但是又不想费脑袋去命名一个函数的时候使用,也就是通常所说的匿名函数。&/p&&p&lambda表达式一般的形式是:关键词lambda后面紧接一个或多个参数,紧接一个冒号“:”,紧接一个表达式。lambda表达式是一个表达式不是一个语句。&/p&&p&&img data-rawheight=&185& data-rawwidth=&404& src=&/v2-9aa02ef535d_b.png& class=&content_image& width=&404&& 想更加详细的了解Python中的Lamdba表达式可以点击这里:&a class=&internal& href=&/question/&&Lambda 表达式有何用处?如何使用? - Python&/a&&/p&&p&(七)、Python中pass语句的作用是什么?&/p&&p&pass语句不会执行任何操作,一般作为占位符或者创建占位程序 &/p&&p&(八)、Python是如何进行类型转换的?&/p&&p&Python提供了将变量或值从一种类型转换为另一种类型的内置方法。&img data-rawheight=&566& data-rawwidth=&824& src=&/v2-dd0f7f44bae_b.png& class=&origin_image zh-lightbox-thumb& width=&824& data-original=&/v2-dd0f7f44bae_r.png&& (九)、Python里面如何拷贝一个对象?&/p&&p&Python中对象之间的赋值是按引用传递的,如果要拷贝对象需要使用标准模板中的copy&/p&&ul&&li&copy.copy:浅拷贝,只拷贝父对象,不拷贝父对象的子对象。&/li&&li&copy.deepcopy:深拷贝,拷贝父对象和子对象。&/li&&/ul&&p&&img data-rawheight=&344& data-rawwidth=&864& src=&/v2-bb6b8dd0b523deedfded1f_b.png& class=&origin_image zh-lightbox-thumb& width=&864& data-original=&/v2-bb6b8dd0b523deedfded1f_r.png&&(十)、__new__和__init__的区别。&/p&&ul&&li&__init__为初始化方法,__new__方法是真正的构造函数。&/li&&li&__new__是实例创建之前被调用,它的任务是创建并返回该实例,是静态方法&/li&&li&__init__是实例创建之后被调用的,然后设置对象属性的一些初始值。 &br&&/li&&/ul&&p&总结:__new__方法在__init__方法之前被调用,并且__new__方法的返回值将传递给__init__方法作为第一个参数,最后__init__给这个实例设置一些参数。&/p&&p&&img data-rawheight=&367& data-rawwidth=&643& src=&/v2-1e2c48de9524cbe2d41e6b985a87d448_b.png& class=&origin_image zh-lightbox-thumb& width=&643& data-original=&/v2-1e2c48de9524cbe2d41e6b985a87d448_r.png&&想要更加详细的了解这两个方法,请点击:&a class=& wrap external& href=&/?target=http%3A//my.oschina.net/kinegratii/blog/334968& target=&_blank& rel=&nofollow noreferrer&&Python中的__new__及其用法 &i class=&icon-external&&&/i&&/a&&/p&&p&(十一)、Python中单下划线和双下划线分别是什么?&/p&&ul&&li&__name__:一种约定,Python内部的名字,用来与用户自定义的名字区分开,防止冲突&/li&&li&_name:一种约定,用来指定变量私有&/li&&li&__name:解释器用_classname__name来代替这个名字用以区别和其他类相同的命名&/li&&/ul&&p& 想要更加详细的了解这两者的区别,请点击:&a class=& wrap external& href=&/?target=https%3A///a/1411& target=&_blank& rel=&nofollow noreferrer&&Python中的下划线(译文)&i class=&icon-external&&&/i&&/a&&/p&&p&(十二)、说一说Python自省。&/p&&p&自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型。简单一句话就是运行时能够获得对象的类型。比如:&b&type()、dir()、getattr()、hasattr()、isinstance()
&img data-rawheight=&345& data-rawwidth=&1351& src=&/v2-da6bbea596c241c728f1a7d_b.png& class=&origin_image zh-lightbox-thumb& width=&1351& data-original=&/v2-da6bbea596c241c728f1a7d_r.png&&&/b&&/p&&p&想要完整的理解Python自省,请点击:&a href=&/?target=http%3A///page/87128/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python自省(反射)指南&i class=&icon-external&&&/i&&/a&&/p&&p&&b&有关于元类以及单例模式会在后面文章中做详细的解释说明。 &/b&&br&&/p&&p&本文参考文献资料:&/p&&p&「1」&a class=& wrap external& href=&/?target=http%3A//blog.csdn.net/alvine008/article/details/& target=&_blank& rel=&nofollow noreferrer&&七、PYTHON 一些基础面试题目总结&i class=&icon-external&&&/i&&/a&&/p&&p&「2」&a class=& wrap external& href=&/?target=http%3A///85231/& target=&_blank& rel=&nofollow noreferrer&&很全的 Python 面试题&i class=&icon-external&&&/i&&/a&&/p&&p&「3」&a href=&/?target=http%3A///page/87128/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python自省(反射)指南&i class=&icon-external&&&/i&&/a&&/p&&p&「4」&a href=&/?target=http%3A//blog.csdn.net/mathboylinlin/article/details/9413551& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python学习笔记(十二):lambda表达式与函数式编程&i class=&icon-external&&&/i&&/a&&/p&&p&「5」&a class=& wrap external& href=&/?target=http%3A///Vito2008/p/5044251.html& target=&_blank& rel=&nofollow noreferrer&&Python面试必须要看的15个问题&i class=&icon-external&&&/i&&/a&&/p&&br&&b&学习编程,欢迎关注专栏:&a href=&/passer& class=&internal&&学习编程 - 知乎专栏&/a&&/b&
双十一你们的手还健在吗? 还在的话来刷一波题? 希望此文可以长期更新并作为一篇Python的面试宝典。每一道题目都附有详细解答,以及更加详细的回答链接。此篇是概念篇,下一篇会更新面试题代码篇。(一)、这两个参数是什么意思:*args,**kwargs?我们为…
&img src=&/v2-b733ffa3cb460a51ebf60_b.png& data-rawwidth=&1040& data-rawheight=&666& class=&origin_image zh-lightbox-thumb& width=&1040& data-original=&/v2-b733ffa3cb460a51ebf60_r.png&&&p&如何写好一篇技术文章呢?或者说如何写好一篇Python的技术文章?这应该是技术人都会思考的问题,带着这个问题,我抓取了技术网站伯乐在线的关于Python文章的一些信息,来做一些简单的分析。考虑到每一种语言每一项技术的不统一性,泛泛而谈不可取,所以我会分开说每种语言,今天我们就以Python打个开头,如果大家喜欢,我再接着写些其他语言。&/p&&p&同时这篇文章会在行文间为大家推荐一些好的Python文章,希望对大家有所帮助。&/p&&p&&u&&b&正文开始。&/b&&/u&&/p&&p&抓取的信息:1400篇Python文章信息&br&&/p&&p&数据格式:标题,点赞数,收藏数,评论数,时间,标签&/p&&p&数据部分截图:&/p&&img src=&/v2-fe1d63e8af775_b.png& data-rawwidth=&994& data-rawheight=&816& class=&origin_image zh-lightbox-thumb& width=&994& data-original=&/v2-fe1d63e8af775_r.png&&&p&以上截图在点赞、收藏和评论为空的数据表示为0。&/p&&p&首先我们把所有文章的文章类型分别做统计,做成如下的一张图片。我们会发现伯乐在线中有关于Python的文章大部分都是基础知识相关的文章,深层探讨类的问题还是相对比较少,当然也有可能是它的标签的问题,因为表示知识点深入程度的标签显然一个:基础知识。个人建议加上&u&&b&深入解读&/b&&/u&等诸如此类的标签。&/p&&p&比如这一类文章应该纳入&u&深入解读;&/u&&/p&&a href=&/?target=http%3A///21351/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&深刻理解Python中的元类(metaclass)&i class=&icon-external&&&/i&&/a&&a href=&/?target=http%3A///86869/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&听说你会 Python ?&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///86717/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&详解Python的装饰器 &i class=&icon-external&&&/i&&/a&&br&而这一类文章这一类文章才是真正的基础知识:&a href=&/?target=http%3A///32748/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&给Python初学者的一些技巧&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///86495/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&用 python 实现各种排序算法&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///48541/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python编程中常用的12种基础知识总结&i class=&icon-external&&&/i&&/a&&br&&img src=&/v2-1f73b9dcc32e84abff3a_b.png& data-rawwidth=&877& data-rawheight=&817& class=&origin_image zh-lightbox-thumb& width=&877& data-original=&/v2-1f73b9dcc32e84abff3a_r.png&&&p&这么火爆的基础知识相关的文章,是不是也都是大家喜欢的内容呢?我们继续往下看,我们把每种类型的文章所获得的平均赞数量或者收藏数量计算并做成一张图表看看会是什么样子。&/p&&p&&img src=&/v2-e96c7ab76140debb689fb25d3d799263_b.png& data-rawwidth=&778& data-rawheight=&817& class=&origin_image zh-lightbox-thumb& width=&778& data-original=&/v2-e96c7ab76140debb689fb25d3d799263_r.png&&我们可以看到,与基础知识相关的文章平均收藏量与平均点赞量并不是很高,我猜想的原因可能有两点:大家看基础知识的文章正常就是看完就走,不去收藏不点赞的;第二个原因就是,其实还是有一部分收藏点赞比较多的基础知识的文章的,但是由于基数大,质量层次不齐,导致平均水平偏低。为了证明这一点,我们只需要去把点赞数量排名靠前的几篇基础知识文章拿出来,如下:&/p&&br&&ul&&li&&a href=&/?target=http%3A///84464/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python 资源大全 - &i class=&icon-external&&&/i&&/a&55&/li&&li&&a href=&/?target=http%3A///84326/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&利用Python,四步掌握机器学习 - &i class=&icon-external&&&/i&&/a& 45&/li&&li&&a href=&/?target=http%3A///85231/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&很全的 Python 面试题 - &i class=&icon-external&&&/i&&/a& 39&/li&&li&&a href=&/?target=http%3A///86678/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一行 Python 代码 - &i class=&icon-external&&&/i&&/a& 35&/li&&li&&a href=&/?target=http%3A///80981/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数据科学的完整学习路径(Python版) - &i class=&icon-external&&&/i&&/a& 31&/li&&li&&a href=&/?target=http%3A///84438/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python数据分析学习路径图(120天Get新技能) - &i class=&icon-external&&&/i&&/a& 27&/li&&li&&a href=&/?target=http%3A///86869/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&听说你会 Python ? - &i class=&icon-external&&&/i&&/a&23&/li&&li&&a href=&/?target=http%3A///86100/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python面试中8个必考问题 - &i class=&icon-external&&&/i&&/a& 22&/li&&li&&a href=&/?target=http%3A///32748/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&给Python初学者的一些技巧 - &i class=&icon-external&&&/i&&/a& 21&/li&&/ul&&p&同时我们发现,与书籍相关的文章会收到热烈的追捧,而实践项目也是大家比较偏爱的文章类型之一,看来写这一类的文章往往能收到不错效果,我们这里可以看一下书籍的文章应该如何去写?学习一下套路我找到了这几篇很高赞的书籍文章列表如下。&/p&&a href=&/?target=http%3A///85620/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&如果有人让你推荐Python技术书,请让他看这个列表&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///29281/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&25本免费的Python电子书&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///83552/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[摘要]Python 最佳实践指南&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///765/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&9本免费的Python编程书 &i class=&icon-external&&&/i&&/a&&br&&br&&p&看完这几篇文章作何感想?对的,书籍整理最好附上书籍资源,这都是大众热爱的字眼,这种整理类的文章往往都能收到非常好的效果。&/p&&p&那么,如果你不想写书籍整理类的文章来吸引人,那么还有一个选择实践项目,从上面的图我们可以看出实现项目也是赞数量相当高的一个类型,我这里选择了高赞的几篇文章标题内容来给大家看。&/p&&a href=&/?target=http%3A///81332/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python爬虫入门(1):综述 &i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///83563/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&利用 Python 练习数据挖掘&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///81997/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&用python爬虫抓站的一些技巧总结&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///82758/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一个 11 行 Python 代码实现的神经网络&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///81523/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一起写一个 Web 服务器(2)&i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///86872/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python初学者之网络爬虫 &i class=&icon-external&&&/i&&/a&&a href=&/?target=http%3A///84349/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&用Python写一个简单的微博爬虫 &i class=&icon-external&&&/i&&/a&&br&&a href=&/?target=http%3A///81351/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python爬虫实战(1):爬取糗事百科段子 &i class=&icon-external&&&/i&&/a&&br&&br&&p&好,有什么特点?是不是满眼的爬虫,可能一眼看不出来没有关系,我把所有的实践项目拿出来做一下词云看看。&/p&&p&&img src=&/v2-9e1fffd83a3f_b.png& data-rawwidth=&599& data-rawheight=&556& class=&origin_image zh-lightbox-thumb& width=&599& data-original=&/v2-9e1fffd83a3f_r.png&&&br&现在,是不是更加清晰了一些,如果你想要写一篇受欢迎的实践项目的技术文章,那么爬虫一定是你的不二选择。&/p&&p&那么如何写一篇受欢迎的Python相关的技术文章呢?&/p&&ol&&li&&p&Python书籍整理&/p&&/li&&li&&p&Python爬虫项目实战&/p&&/li&&/ol&&p&于是我大胆的写了一篇文章:Python爬取自盘古开天辟地以来所有Python书籍合集(逗你玩)&/p&&p&当然,一切不留资源的文章都是耍流氓,其实这篇文章出来,也是希望最后挖掘出一些质量比较高的文章推荐给大家,高赞的文章不外乎这几篇:&img src=&/v2-b733ffa3cb460a51ebf60_b.png& data-rawwidth=&1040& data-rawheight=&666& class=&origin_image zh-lightbox-thumb& width=&1040& data-original=&/v2-b733ffa3cb460a51ebf60_r.png&&&/p&&p&如果你还没关注公众号,可以搜索(&b&smcode2016&/b&)或(&b&一个程序员的日常&/b&)&/p&
如何写好一篇技术文章呢?或者说如何写好一篇Python的技术文章?这应该是技术人都会思考的问题,带着这个问题,我抓取了技术网站伯乐在线的关于Python文章的一些信息,来做一些简单的分析。考虑到每一种语言每一项技术的不统一性,泛泛而谈不可取,所以我会…
&img src=&/v2-0957ceda321efbd9b65a6_b.jpg& data-rawwidth=&1438& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1438& data-original=&/v2-0957ceda321efbd9b65a6_r.jpg&&&p&文/KKM&/p&&p&摄/韩松&/p&&p&&br&&/p&&p&&br&&/p&&p&&i&按&/i&&/p&&p&&i&这篇文章传播很广,上了知乎日报和日报的公众号,也被许多摄影媒体转载。这里有几句话说:&/i&&/p&&p&&i&· &b&谢谢&/b&大家的支持,谢谢大家喜欢原画册的照片。也谢谢质疑朋友的探讨。&/i&&/p&&p&&i&· 声明一点,本文只是截取手机摄影后期中的一个小步骤,意在说明一个常用的后期技巧,&b&并非说这个步骤是必须的&/b&,也不是说这是摄影的本质。我也有大量作品是没有裁切过的。&/i&&/p&&p&&i&· 后期进行裁图的操作和前期拍摄重视观察并不矛盾,&b&请勿非此即彼&/b&开喷。&/i&&/p&&p&&i&· 普及一点:&b&后期是正常的&/b&摄影产出步骤,业内普遍观点是裁切、影调、色彩调整很正常。觉得讨论后期就是远离了摄影本质,没有必要。&/i&&/p&&p&&i&· 前期通过机位和拍摄距离的调整来获取图像,和后期进行不影响输出的裁切并无本质区别。裁切是观察取舍过程的延伸,不是深度后期。&/i&&/p&&p&&i&· 本人是个喜欢观察和简要后期的摄影师,恰恰不是后期技术流。&/i&&/p&&p&&i&· 建议手机摄影爱好者重视观察,不要被后期所困。后期不是重点,那是锦上添花。&/i&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&————以下原文————&/p&&p&&i&构图不完美,可能是没有用正确的姿势裁图……&/i&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&1/&/b&&/h2&&h2&&b&揭秘几张获奖照片的裁图前后&/b&&/h2&&p&首先祭出几张刚公布的2017年IPPA获奖照片,展示一下裁图前后对比,感受一下。&/p&&img src=&/v2-3c2dcd05f3c1befbdb5ee0c92e1186dd_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-3c2dcd05f3c1befbdb5ee0c92e1186dd_r.jpg&&&p&&i&▲ 韩松/摄,里斯本,iPhone 7p。2017年全球iPhone摄影大赛其他类荣誉奖&/i&&/p&&p&&br&&/p&&img src=&/v2-bfbbecefe9aaa_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-bfbbecefe9aaa_r.jpg&&&p&&i&▲ 韩松/摄,里斯本,iPhone 7p。2017年全球iPhone摄影大赛旅行类荣誉奖&/i&&/p&&p&&br&&/p&&img src=&/v2-403bf2f2cd8ba1cbd47fc11a25171bd4_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-403bf2f2cd8ba1cbd47fc11a25171bd4_r.jpg&&&p&&i&▲ 韩松/摄,青海,iPhone 7p。2017年全球iPhone摄影大赛动物类荣誉奖&/i&&/p&&p&&br&&/p&&img src=&/v2-bfc7be87ac343cfd83b77_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-bfc7be87ac343cfd83b77_r.jpg&&&p&&i&▲ 韩松/摄,伊斯坦布尔,iPhone 5c。2015年全球iPhone摄影大赛人物类金奖&/i& &/p&&p&&br&&/p&&p&原来都是套路?原来被骗了?别急,请往下看。&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&2/&/b&&/h2&&h2&&b&裁图能解决什么问题?&/b&&/h2&&p&&br&&/p&&p&《&a href=&/p/& class=&internal&&打开手摄构图的正确方式 - 知乎专栏&/a&》一文罗列了三分法、中心线等江湖构图法则,同时也提出了“关键位置”的观点。这些原理理解起来并不难,但我们需要掌握相应的拍片和后期工艺才能实现之。&br&&/p&&p&首先我们需要知道一个事实:&b&想要实现令人满意的构图,一定不只是前期拍摄就能达到的&/b&,还与后期有很大关系,其中最重要的步骤就是裁图。在旅途拍摄、街头摄影、抓拍、抢拍等类型中,拍摄本身是没有太多时间做准备的,能以最快速度掏出手机相机,正确地对焦和曝光已属不易,几乎没有时间去仔细调整相机角度和与被摄场景的距离。且,手机本身也是定焦相机,焦段天生受到局限,电子变焦的调整范围也有限,&b&裁图,也几乎成了必然&/b&。&/p&&p&裁图能解决很多问题,优化构图,因此也被称为“后构图”&/p&&p&&br&&/p&&p&&b&1)裁掉影响主题的多余边角&/b&&/p&&p&关于这点,相信大多数摄影爱好者都是无师自通的。主体元素是什么?主体元素之外,画面的边缘有没有影响这个主体表达的元素存在?这些都是我们裁图首要考虑的问题。&/p&&p&&br&&/p&&img src=&/v2-2f0b32ea853fcc80577c96_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-2f0b32ea853fcc80577c96_r.jpg&&&p&&i&▲ 韩松/摄,柏林,iPhone 7p。拍摄时的最初想法是为这个女孩拍一张人像,然而当时在书市人头攒动,画面里经常会很尴尬地出现许多其他人物,只有靠后期裁切了。&/i& &/p&&p&&br&&/p&&img src=&/v2-c74e1a9db0_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-c74e1a9db0_r.jpg&&&p&&i&▲ 韩松/摄,马耳他,iPhone 7p。&/i&&/p&&p&&i&著名的“蓝窗”,拍摄时很难仔细思考构图,拿到原片后发现左上角露出了一点蓝色的天空,有些抢画面中心洞口主题,因此后期裁掉了左上角的天空,主体更明确。&/i& &/p&&p&&i&2017年全球iPhone摄影大赛景观类荣誉奖&/i& &/p&&p&&br&&/p&&p&&b&2)塑造主题&/b&&/p&&p&有些照片甚至可以通过裁图来重塑主题,原片和裁图后几乎脱胎换骨,这是“二次创作”的过程。&/p&&p&&br&&/p&&i&&img src=&/v2-ee_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-ee_r.jpg&&&/i&&p&&i&▲ 韩松/摄,奈良,iPhone 7p。&/i&&/p&&p&&i&拍摄时表现的是一整只鹿,裁图后只剩下上面很小一部分。比起一整只鹿,裁图后传达了“探出头来”的图像故事。&/i& &/p&&p&&br&&/p&&img src=&/v2-5fecd65b5a3da20fcbde941_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-5fecd65b5a3da20fcbde941_r.jpg&&&p&&i&▲ 韩松/摄,法兰克福,iPhone 7p。&/i&&/p&&p&&i&拍摄时是建筑的整个山墙面,通过裁图重新归置了主题,只表现了屋顶部分,基座、房屋两侧露出的天空都被裁切,更表达出了几何美和纯粹感。&/i&&/p&&p&&br&&/p&&p&&b&3)调整主体元素的比例&/b&&/p&&p&更多时候,裁图的作用是调整主体元素占整个画面的比例。由于主体元素在拍摄后就会固化下来,但通过裁图能使整个图幅表现范围有变化,主体元素的比例也就发生了相对变化。&/p&&p&&br&&/p&&p&&br&&/p&&i&&img src=&/v2-d85db4bc8b305_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-d85db4bc8b305_r.jpg&&&/i&&p&&i&▲ 韩松/摄,华沙,iPhone 7p。&/i&&/p&&p&&i&原片中主体人物大概只占画面四分之一的比例,通过裁图,人物所占画面几乎达到了一半以上,更为丰满。&/i& &/p&&p&&br&&/p&&p&&br&&/p&&i&&img src=&/v2-8ffafca9fceae2c34eef3a_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-8ffafca9fceae2c34eef3a_r.jpg&&&/i&&p&&i&▲ 韩松/摄,莫斯科,iPhone 7p。&/i&&/p&&p&&br&&/p&&p&&b&4)调整主体元素的位置和平衡关系&/b&&/p&&p&这就要求我们更多关注画面元素的位置关系了。三分点、中心点、水平线等构图位置关系,都可以通过裁图实现。&/p&&p&&br&&/p&&p&&br&&/p&&i&&img src=&/v2-a60e90f348e1bcbd830d14_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-a60e90f348e1bcbd830d14_r.jpg&&&/i&&p&&i&▲ 韩松/摄,额尔古纳,一加手机3T。&/i&&/p&&p&&i&拍到的原片人物在阴影交界处,处在画面底部中心偏右一点的位置,有些尴尬。通过裁图,将其置于画面&b&底部中点&/b&,并裁掉地面,使画面变得平衡。&/i& &/p&&p&&br&&/p&&p&&br&&/p&&i&&img src=&/v2-85e14c91fc9e291fa837bd_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-85e14c91fc9e291fa837bd_r.jpg&&&/i&&p&&i&▲ 韩松/摄,里斯本,iPhone 7p。&/i&&/p&&p&&i&原片中人物和路灯影子在画面偏右位置,通过裁图使其位于三分线的位置。&/i& &/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&3/&/b&&/h2&&h2&&b&裁图应该如何操作?&/b&&/h2&&p&&b&1)没用什么奇特的app&/b&&/p&&p&作为最基础的后期步骤,几乎每款修图软件都能完成裁图。由于我喜欢用vsco和snapseed,所以当我决定用哪款软件修图的时候,便会顺手用这款软件的裁图功能。&/p&&p&&br&&/p&&p&&b&2)善用九宫格&/b&&/p&&p&几乎每款软件的裁图功能都会默认带有九宫格参考线,请时刻关注九宫格,用它来对齐水平、垂直等敏感方向。同时,当我们通过裁图实现“三分法”“中心式”等法则,九宫格能够帮助我们快速找到关键位置。&/p&&img src=&/v2-a7f08b07f96af0f3a871c0dc0c3bc3c8_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-a7f08b07f96af0f3a871c0dc0c3bc3c8_r.jpg&&&p&&br&&/p&&p&&b&3)控制好几个图幅比例&/b&&/p&&p&常用的裁切比例有1:1、4:3、16:9等。一般来说除非是很特殊的情况,我自己也会基于这几个比例进行裁切,很少用自由裁图。这几个比例分别对应着方形、标准屏幕、宽屏等经典图幅,且能囊括大多数我们需要的情况。&/p&&p&&br&&/p&&img src=&/v2-eca473b264de0c682f48f70c25f8b51d_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-eca473b264de0c682f48f70c25f8b51d_r.jpg&&&p&&br&&/p&&p&&br&&/p&&h2&&b&4/&/b&&/h2&&h2&&b&关于裁图的一些疑问和释义&/b&&/h2&&p&&b&1)裁图就是作假?&/b&&/p&&p&才不。&/p&&p&后期裁图和拍摄阶段是一脉相承的,都是对画面主题的提炼和对画面元素的经营。&b&后期裁掉一些东西和前期直接用镜头规避一些东西,是没有本质区别的。&/b&真正摄影的作假应该是欺瞒观众拼贴决定瞬间,编造摄影场景等情况,,但裁图是再正常不过的后期步骤。&/p&&p&&br&&/p&&p&&b&2)需要裁图等后期的照片并没有体现真实水平?&/b&&/p&&p&也不。&/p&&p&反而觉得前期与后期都能驾驭才能体现一位摄影师的真实水平。说回到2015年ippa获奖照片,通过色卡分析可以很快发现原片中主线的不和谐色彩(桃红色),作为拍摄者其实在前期就已经思考了主体元素和表达主题,只是其画面占比和图幅比例等&b&需要后期处理才能得以实现&/b&。看似简单的方形裁切,其实本蕴含着很多思考和分析。这一套完整的呈现过程才是真正的水平。&/p&&p&&br&&/p&&img src=&/v2-c856efafd32e76029d0dac4b4c31b7f5_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-c856efafd32e76029d0dac4b4c31b7f5_r.jpg&&&p&&br&&/p&&p&&i&▲ 裁切前后的色卡分析&/i& &/p&&p&&br&&/p&&p&&br&&/p&&p&不妨翻翻自己的原片库,看看还有哪些值得通过裁图拯救的照片。&/p&&p&&br&&/p&&p&————————&br&&a href=&/lives/756096& class=&internal&&知乎 Live - 提高手机摄影水平的关键技巧&/a&&/p&&p&&a href=&/lives/438784& class=&internal&&知乎live-手机如何拍出优质的街头摄影&/a&&br&————————&/p&&p&&br&&i&声明:本文所有文字及照片为原画册工作室原创,版权归韩松、谭凌飞、张薇所有,仅供知乎专栏、原画册微信公众平台发布,若需转载请后台联系。违者必究。&/i&&/p&&p&————————&/p&&p&欢迎关注公众号:&br&&/p&&img src=&/v2-b90b71ed9b9a70e36dfce7_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/v2-b90b71ed9b9a70e36dfce7_r.jpg&&&p&&br&&/p&&p&全球iPhone摄影大赛金奖得主韩松的工作室。&br&原画册丨探场所&/p&
文/KKM摄/韩松 按这篇文章传播很广,上了知乎日报和日报的公众号,也被许多摄影媒体转载。这里有几句话说:· 谢谢大家的支持,谢谢大家喜欢原画册的照片。也谢谢质疑朋友的探讨。· 声明一点,本文只是截取手机摄影后期中的一个小步骤,意在说明…并非说这个步骤是必须的,也不是说这是摄影的本质。我也有大量作品是没有裁切过的。
&p&&b&Awesome Python中文版来啦!&/b&&br&&/p&&p&本文由 &a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&伯乐在线&i class=&icon-external&&&/i&&/a& - &a href=&///?target=http%3A///members/hanxiaomax& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&艾凌风&i class=&icon-external&&&/i&&/a& 翻译,&a href=&///?target=http%3A///members/namco1992& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Namco&i class=&icon-external&&&/i&&/a& 校稿。未经许可,禁止转载!&br&英文出处:&a href=&///?target=https%3A///vinta/awesome-python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a&。欢迎加入&a href=&///?target=http%3A///category/feedback/trans-team/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&翻译组&i class=&icon-external&&&/i&&/a&。&br&&/p&&br&&br&原文链接:&a href=&///?target=http%3A///84464/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python 资源大全&i class=&icon-external&&&/i&&/a&&br&&br&1200+收藏,600+赞,别只顾着自己私藏呀朋友们&br&&p&----------------&/p&&p&这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护。内容包括:Web框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。&/p&&p&伯乐在线已在 GitHub 上发起「Python 资源大全中文版」的整理。欢迎扩散、欢迎加入。&/p&&p&&a href=&///?target=https%3A///jobbole/awesome-python-cn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - jobbole/awesome-python-cn: Python资源大全中文版&i class=&icon-external&&&/i&&/a&&/p&&b&环境管理&/b&&p&管理 Python 版本和环境的工具&/p&&ul&&li&&a href=&///?target=https%3A///qw3rtman/p& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&p&i class=&icon-external&&&/i&&/a& – 非常简单的交互式 python 版本管理工具。&/li&&li&&a href=&///?target=https%3A///yyuu/pyenv& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pyenv&i class=&icon-external&&&/i&&/a& – 简单的 Python 版本管理工具。&/li&&li&&a href=&///?target=https%3A///sashahart/vex& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Vex&i class=&icon-external&&&/i&&/a& – 可以在虚拟环境中执行命令。&/li&&li&&a href=&///?target=https%3A//pypi.python.org/pypi/virtualenv& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&virtualenv&i class=&icon-external&&&/i&&/a& – 创建独立 Python 环境的工具。&/li&&li&&a href=&///?target=https%3A//pypi.python.org/pypi/virtualenvwrapper& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&virtualenvwrapper&i class=&icon-external&&&/i&&/a&- virtualenv 的一组扩展。&/li&&/ul&&b&包管理&/b&&p&管理包和依赖的工具。&/p&&ul&&li&&a href=&///?target=https%3A//pip.pypa.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pip&i class=&icon-external&&&/i&&/a& – Python 包和依赖关系管理工具。&/li&&li&&a href=&///?target=https%3A///nvie/pip-tools& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pip-tools&i class=&icon-external&&&/i&&/a& – 保证 Python 包依赖关系更新的一组工具。&/li&&li&&a href=&///?target=https%3A///conda/conda/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&conda&i class=&icon-external&&&/i&&/a& – 跨平台,Python 二进制包管理工具。&/li&&li&&a href=&///?target=http%3A//clarete.li/curdling/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Curdling&i class=&icon-external&&&/i&&/a& – 管理 Python 包的命令行工具。&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wheel&i class=&icon-external&&&/i&&/a& – Python 分发的新标准,意在取代 eggs。&/li&&/ul&&b&包仓库&/b&&p&本地 PyPI 仓库服务和代理。&/p&&ul&&li&&a href=&///?target=https%3A///pypa/warehouse& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&warehouse&i class=&icon-external&&&/i&&/a& – 下一代 PyPI。&ul&&li&&a href=&///?target=https%3A//warehouse.python.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Warehouse&i class=&icon-external&&&/i&&/a&&a href=&///?target=https%3A//bitbucket.org/pypa/bandersnatch& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&bandersnatch&i class=&icon-external&&&/i&&/a& – PyPA 提供的 PyPI 镜像工具。&/li&&/ul&&/li&&li&&a href=&///?target=http%3A//doc.devpi.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&devpi&i class=&icon-external&&&/i&&/a& – PyPI 服务和打包/测试/分发工具。&/li&&li&&a href=&///?target=https%3A///mvantellingen/localshop& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&localshop&i class=&icon-external&&&/i&&/a& – 本地 PyPI 服务(自定义包并且自动对 PyPI 镜像)。&/li&&/ul&&b&分发&/b&&p&打包为可执行文件以便分发。&/p&&ul&&li&&a href=&///?target=https%3A///pyinstaller/pyinstaller& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PyInstaller&i class=&icon-external&&&/i&&/a& – 将 Python 程序转换成独立的执行文件(跨平台)。&/li&&li&&a href=&///?target=http%3A//dh-virtualenv.readthedocs.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&dh-virtualenv&i class=&icon-external&&&/i&&/a& – 构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。&/li&&li&&a href=&///?target=http%3A//nuitka.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Nuitka&i class=&icon-external&&&/i&&/a& – 将脚本、模块、包编译成可执行文件或扩展模块。&/li&&li&&a href=&///?target=http%3A//pythonhosted.org/py2app/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&py2app&i class=&icon-external&&&/i&&/a& – 将 Python 脚本变为独立软件包(Mac OS X)。&/li&&li&&a href=&///?target=http%3A//www.py2exe.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&py2exe&i class=&icon-external&&&/i&&/a& – 将 Python 脚本变为独立软件包(Windows)。&/li&&li&&a href=&///?target=http%3A//pynsist.readthedocs.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pynsist&i class=&icon-external&&&/i&&/a& – 一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python本身。&/li&&/ul&&b&构建工具&/b&&p&将源码编译成软件。&/p&&ul&&li&&a href=&///?target=http%3A//www.buildout.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&buildout&i class=&icon-external&&&/i&&/a& – 一个构建系统,从多个组件来创建,组装和部署应用。&/li&&li&&a href=&///?target=http%3A//www.yoctoproject.org/docs/1.6/bitbake-user-manual/bitbake-user-manual.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&BitBake&i class=&icon-external&&&/i&&/a& – 针对嵌入式 Linux 的类似 make 的构建工具。&/li&&li&&a href=&///?target=https%3A///p/fabricate/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&fabricate&i class=&icon-external&&&/i&&/a& – 对任何语言自动找到依赖关系的构建工具。&/li&&li&&a href=&///?target=https%3A///ivankravets/platformio& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PlatformIO&i class=&icon-external&&&/i&&/a& – 多平台命令行构建工具。&/li&&li&&a href=&///?target=https%3A///pybuilder/pybuilder& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PyBuilder&i class=&icon-external&&&/i&&/a& – 纯 Python 实现的持续化构建工具。&/li&&li&&a href=&///?target=http%3A//www.scons.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SCons&i class=&icon-external&&&/i&&/a& – 软件构建工具。&/li&&/ul&&b&交互式解析器&/b&&p&交互式 Python 解析器。&/p&&ul&&li&&a href=&///?target=https%3A///ipython/ipython& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IPython&i class=&icon-external&&&/i&&/a& – 功能丰富的工具,非常有效的使用交互式 Python。&/li&&li&&a href=&///?target=http%3A//bpython-interpreter.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&bpython&i class=&icon-external&&&/i&&/a&- 界面丰富的 Python 解析器。&/li&&li&&a href=&///?target=https%3A///jonathanslenders/ptpython& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ptpython&i class=&icon-external&&&/i&&/a& – 高级交互式Python解析器, 构建于&a href=&///?target=https%3A///jonathanslenders/python-prompt-toolkit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python-prompt-toolkit&i class=&icon-external&&&/i&&/a& 之上。&/li&&/ul&&b&文件&/b&&p&文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。&/p&&ul&&li&&a href=&///?target=https%3A//docs.python.org/2/library/imghdr.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&imghdr&i class=&icon-external&&&/i&&/a& – (Python 标准库)检测图片类型。&/li&&li&&a href=&///?target=https%3A//docs.python.org/2/library/mimetypes.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&mimetypes&i class=&icon-external&&&/i&&/a& – (Python 标准库)将文件名映射为 MIME 类型。&/li&&li&&a href=&///?target=https%3A///jaraco/path.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&path.py&i class=&icon-external&&&/i&&/a& – 对 os.path 进行封装的模块。&/li&&li&&a href=&///?target=https%3A//pathlib.readthedocs.org/en/pep428/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pathlib&i class=&icon-external&&&/i&&/a& – (Python3.4+ 标准库)跨平台的、面向对象的路径操作库。&/li&&li&&a href=&///?target=https%3A///ahupp/python-magic& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python-magic&i class=&icon-external&&&/i&&/a&- 文件类型检测的第三方库 libmagic 的 Python 接口。&/li&&li&&a href=&///?target=https%3A///mikeorr/Unipath& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Unipath&i class=&icon-external&&&/i&&/a&- 用面向对象的方式操作文件和目录&/li&&li&&a href=&///?target=https%3A///gorakhargosh/watchdog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&watchdog&i class=&icon-external&&&/i&&/a& – 管理文件系统事件的 API 和 shell 工具&/li&&/ul&&b&日期和时间&/b&&p&操作日期和时间的类库。&/p&&ul&&li&&a href=&///?target=https%3A///crsmithdev/arrow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&arrow&i class=&icon-external&&&/i&&/a&- 更好的 Python 日期时间操作类库。&/li&&li&&a href=&///?target=https%3A///KoffeinFlummi/Chronyk& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Chronyk&i class=&icon-external&&&/i&&/a& – Python 3 的类库,用于解析手写格式的时间和日期。&/li&&li&&a href=&///?target=https%3A//pypi.python.org/pypi/python-dateutil& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&dateutil&i class=&icon-external&&&/i&&/a& – Python datetime 模块的扩展。&/li&&li&&a href=&///?target=https%3A///myusuf3/delorean/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&delorean&i class=&icon-external&&&/i&&/a&- 解决 Python 中有关日期处理的棘手问题的库。&/li&&li&&a href=&///?target=https%3A///zachwill/moment& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&moment&i class=&icon-external&&&/i&&/a& – 一个用来处理时间和日期的Python库。灵感来自于Moment.js。&/li&&li&&a href=&///?target=https%3A///shnode/PyTime& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PyTime&i class=&icon-external&&&/i&&/a& – 一个简单易用的Python模块,用于通过字符串来操作日期/时间。&/li&&li&&a href=&///?target=https%3A//launchpad.net/pytz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pytz&i class=&icon-external&&&/i&&/a& – 现代以及历史版本的世界时区定义。将时区数据库引入Python。&/li&&li&&a href=&///?target=https%3A///dirn/When.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&when.py&i class=&icon-external&&&/i&&/a& – 提供用户友好的函数来帮助用户进行常用的日期和时间操作。&/li&&/ul&&b&文本处理&/b&&p&用于解析和操作文本的库。&/p&&ul&&li&通用&ul&&li&&a href=&///?target=https%3A///chardet/chardet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&chardet&i class=&icon-external&&&/i&&/a& – 字符编码检测器,兼容 Python2 和 Python3。&/li&&li&&a href=&///?target=https%3A//docs.python.org/2/library/difflib.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&difflib&i class=&icon-external&&&/i&&/a& – (Python 标准库)帮助我们进行差异化比较。&/li&&li&&a href=&///?target=https%3A///LuminosoInsight/python-ftfy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ftfy&i class=&icon-external&&&/i&&/a& – 让Unicode文本更完整更连贯。&/li&&li&&a href=&///?target=https%3A///seatgeek/fuzzywuzzy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&fuzzywuzzy&i class=&icon-external&&&/i&&/a& – 模糊字符串匹配。&/li&&li&&a href=&///?target=https%3A///ztane/python-Levenshtein/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Levenshtein&i class=&icon-external&&&/i&&/a& – 快速计算编辑距离以及字符串的相似度。&/li&&li&&a href=&///?target=https%3A///vinta/pangu.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pangu.py&i class=&icon-external&&&/i&&/a& – 在中日韩语字符和数字字母之间添加空格。&/li&&li&&a href=&///?target=https%3A///pwaller/pyfiglet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pyfiglet -figlet&i class=&icon-external&&&/i&&/a& 的 Python实现。&/li&&li&&a href=&///?target=https%3A///stochastic-technologies/shortuuid& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&shortuuid&i class=&icon-external&&&/i&&/a& – 一个生成器库,用以生成简洁的,明白的,URL 安全的 UUID。&/li&&li&&a href=&///?target=https%3A//pypi.python.org/pypi/Unidecode& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&unidecode&i class=&icon-external&&&/i&&/a& – Unicode 文本的 ASCII 转换形式 。&/li&&li&&a href=&///?target=https%3A///moskytw/uniout& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&uniout&i class=&icon-external&&&/i&&/a& – 打印可读的字符,而不是转义的字符串。&/li&&li&&a href=&///?target=https%3A///lxneng/xpinyin& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&xpinyin&i class=&icon-external&&&/i&&/a& – 一个用于把汉字转换为拼音的库。&/li&&/ul&&/li&&li&Slug化&ul&&li&&a href=&///?target=https%3A///dimka665/awesome-slugify& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&awesome-slugify&i class=&icon-external&&&/i&&/a& – 一个 Python slug 化库,可以保持 Unicode。&/li&&li&&a href=&///?target=https%3A///un33k/python-slugify& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python-slugify&i class=&icon-external&&&/i&&/a& – Python slug 化库,可以把 unicode 转化为 ASCII。&/li&&li&&a href=&///?target=https%3A///mozilla/unicode-slugify& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&unicode-slugify&i class=&icon-external&&&/i&&/a& – 一个 slug 工具,可以生成 unicode slugs ,需要依赖 Django 。&/li&&/ul&&/li&&li&解析器&ul&&li&&a href=&///?target=https%3A///daviddrysdale/python-phonenumbers& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&phonenumbers&i class=&icon-external&&&/i&&/a& – 解析,格式化,储存,验证电话号码。&/li&&li&&a href=&///?target=http%3A///ply/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PLY&i class=&icon-external&&&/i&&/a& – lex 和 yacc 解析工具的 Python 实现。&/li&&li&&a href=&///?target=http%3A//pygments.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pygments&i class=&icon-external&&&/i&&/a& – 通用语法高亮工具。&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pyparsing&i class=&icon-external&&&/i&&/a& – 生成通用解析器的框架。&/li&&li&&a href=&///?target=https%3A///derek73/python-nameparser& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python-nameparser&i class=&icon-external&&&/i&&/a& – 把一个人名分解为几个独立的部分。&/li&&li&&a href=&///?target=https%3A///selwin/python-user-agents& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python-user-agents&i class=&icon-external&&&/i&&/a& – 浏览器 user agent 解析器。&/li&&li&&a href=&///?target=https%3A//sqlparse.readthedocs.org/en/latest/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&sqlparse&i class=&icon-external&&&/i&&/a& – 一个无验证的 SQL 解析器。&/li&&/ul&&/li&&/ul&&b&特殊文本格式处理&/b&&p&一些用来解析和操作特殊文本格式的库。&/p&&ul&&li&通用&ul&&li&&a href=&///?target=https%3A///kennethreitz/tablib& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tablib&i class=&icon-external&&&/i&&/a& – 一个用来处理中表格数据的模块。&/li&&/ul&&/li&&li&Office&ul&&li&&a href=&///?target=https%3A///brianray/mm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Marmir&i class=&icon-external&&&/i&&/a& – 把输入的Python 数据结构转换为电子表单。&/li&&li&&a href=&///?target=https%3A//openpyxl.readthedocs.org/en/latest/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&openpyxl&i class=&icon-external&&&/i&&/a& – 一个用来读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的库。&/li&&li&&a href=&///?target=https%3A///python-openxml/python-docx& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python-docx&i class=&icon-external&&&/i&&/a& – 读取,查询以及修改 Microsoft Word
docx 文件。&/li&&li&&a href=&///?target=https%3A///dagwieers/unoconv& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&unoconv&i class=&icon-external&&&/i&&/a& – 在 LibreOffice/OpenOffice 支持的任意文件格式之间进行转换。&/li&&li&&a href=&///?target=https%3A//xlsxwriter.readthedocs.org/en/latest/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&XlsxWriter&i class=&icon-external&&&/i&&/a& – 一个用于创建 Excel .xlsx 文件的 Python 模块。&/li&&li&&a href=&///?target=http%3A//xlwings.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&xlwings&i class=&icon-external&&&/i&&/a& – 一个使得在 Excel 中方便调用 Python 的库(反之亦然),基于 BSD 协议。&/li&&li&&a href=&///?target=https%3A///python-excel/xlwt& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&xlwt&i class=&icon-external&&&/i&&/a& / &a href=&///?target=https%3A///python-excel/xlrd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&xlrd&i class=&icon-external&&&/i&&/a& – 读写 Excel 文件的数据和格式信息。&/li&&li&&a href=&///?target=http%3A//relatorio.tryton.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&relatorio&i class=&icon-external&&&/i&&/a& – 模板化OpenDocument 文件。&/li&&/ul&&/li&&li&PDF&ul&&li&&a href=&///?target=https%3A///euske/pdfminer& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PDFMiner&i class=&icon-external&&&/i&&/a& – 一个用于从PDF文档中抽取信息的工具。&/li&&li&&a href=&///?target=https%3A///mstamy2/PyPDF2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PyPDF2&i class=&icon-external&&&/i&&/a& – 一个可以分割,合并和转换 PDF 页面的库。&/li&&li&&a href=&///?target=http%3A///opensource/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ReportLab&i class=&icon-external&&&/i&&/a& – 快速创建富文本 PDF 文档。&/li&&/ul&&/li&&li&Markdown&ul&&li&&a href=&///?target=https%3A///lepture/mistune& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mistune&i class=&icon-external&&&/i&&/a& – 快速并且功能齐全的纯 Python 实现的 Markdown 解析器。&/li&&li&&a href=&///?target=https%3A///waylan/Python-Markdown& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python-Markdown&i class=&icon-external&&&/i&&/a& – John Gruber’s Markdown 的 Python 版实现。&/li&&/ul&&/li&&li&YAML&ul&&li&&a href=&///?target=http%3A//pyyaml.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PyYAML&i class=&icon-external&&&/i&&/a& – Python 版本的 YAML 解析器。&/li&&/ul&&/li&&li&CSV&ul&&li&&a href=&///?target=https%3A///onyxfish/csvkit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&csvkit&i class=&icon-external&&&/i&&/a& – 用于转换和操作 CSV 的工具。&/li&&/ul&&/li&&li&Archive&ul&&li&&a href=&///?target=https%3A///mitsuhiko/unp& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&unp&i class=&icon-external&&&/i&&/a& – 一个用来方便解包归档文件的命令行工具。&/li&&/ul&&/li&&/ul&&b&自然语言处理&/b&&p&用来处理人类语言的库。&/p&&ul&&li&&a href=&///?target=http%3A//www.nltk.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NLTK&i class=&icon-external&&&/i&&/a& – 一个先进的平台,用以构建处理人类语言数据的 Python 程序。&/li&&li&&a href=&///?target=https%3A///fxsjy/jieba& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jieba&i class=&icon-external&&&/i&&/a& – 中文分词工具。&/li&&li&&a href=&///?target=https%3A///saffsd/langid.py& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&langid.py&i class=&icon-external&&&/i&&/a& – 独立的语言识别系统。&/li&&li&&a href=&///?target=http%3A//www.clips.ua.ac.be/pattern& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pattern&i class=&icon-external&&&/i&&/a& – Python 网络信息挖掘模块。&/li&&li&&a href=&///?target=https%3A///isnowfy/snownlp& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SnowNLP&i class=&icon-external&&&/i&&/a& – 一个用来处理中文文本的库。&/li&&li&&a href=&///?target=http%3A//textblob.readthedocs.org/en/latest/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TextBlob&i class=&icon-external&&&/i&&/a& – 为进行普通自然语言处理任务提供一致的 API。&/li&&li&&a href=&///?target=https%3A///2shou/TextGrocery& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TextGrocery&i class=&icon-external&&&/i&&/a& – 一简单高效的短文本分类工具,基于 LibLinear 和 Jieba。&/li&&/ul&&b&文档&/b&&p&用以生成项目文档的库。&/p&&ul&&li&&a href=&///?target=http%3A//www.sphinx-doc.org/en/latest/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sphinx&i class=&icon-external&&&/i&&/a& – Python 文档生成器。&ul&&li&&a href=&///?target=https%3A///yoloseem/awesome-sphinxdoc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&awesome-sphinxdoc&i class=&icon-external&&&/i&&/a&&/li&&/ul&&/li&&li&&a href=&///?target=http%3A//www.mkdocs.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MkDocs&i class=&icon-external&&&/i&&/a& – 对 Markdown 友好的文档生成器。&/li&&li&&a href=&///?target=https%3A///BurntSushi/pdoc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pdoc&i class=&icon-external&&&/i&&/a& – 一个可以替换Epydoc 的库,可以自动生成 Python 库的 API 文档。&/li&&li&&a href=&///?target=https%3A///pycco-docs/pycco& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pycco&i class=&icon-external&&&/i&&/a& – 文学编程(literate-programming)风格的文档生成器。&/li&&/ul&&b&配置&/b&&p&用来保存和解析配置的库。&/p&&ul&&li&&a href=&///?target=https%3A//www./config-doc/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&config&i class=&icon-external&&&/i&&/a& – &a href=&///?target=https%3A//docs.python.org/2/library/logging.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&logging&i class=&icon-external&&&/i&&/a& 模块作者写的分级配置模块。&/li&&li&&a href=&///?target=http%3A//www.voidspace.org.uk/python/configobj.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ConfigObj&i class=&icon-external&&&/i&&/a& – INI 文件解析器,带验证功能。&/li&&li&&a href=&///?target=https%3A//docs.python.org/2/library/configparser.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ConfigParser&i class=&icon-external&&&/i&&/a& – (Python 标准库) INI 文件解析器。&/li&&li&&a href=&///?target=http%3A//profig.readthedocs.org/en/default/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&profig&i class=&icon-external&&&/i&&/a& – 通过多种格式进行配置,具有数值转换功能。&/li&&li&&a href=&///?target=https%3A///henriquebastos/python-decouple& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python-decouple&i class=&icon-external&&&/i&&/a& – 将设置和代码完全隔离。&/li&&/ul&&b&命令行工具&/b&&p&用于创建命令行程序的库。&/p&&ul&&li&命令行程序开发&ul&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cement&i class=&icon-external&&&/i&&/a& – Python 的命令行程序框架。&/li&&li&&a href=&///?target=http%3A//click.pocoo.org/dev/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&click&i class=&icon-external&&&/i&&/a& – 一个通过组合的方式来创建精美命令行界面的包。&/li&&li&&a href=&///?target=http%3A//docs.openstack.org/developer/cliff/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cliff&i class=&icon-external&&&/i&&/a& – 一个用于创建命令行程序的框架,可以创建具有多层命令的命令行程序。&/li&&li&&a href=&///?target=https%3A///kennethreitz/clint& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&clint&i class=&icon-external&&&/i&&/a& – Python 命令行程序工具。&/li&&li&&a href=&///?target=https%3A//pypi.python.org/pypi/colorama& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&colorama&i class=&icon-external&&&/i&&/a& – 跨平台彩色终端文本。&/li&&li&&a href=&///?target=http%3A//docopt.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&docopt&i class=&icon-external&&&/i&&/a& – Python 风格的命令行参数解析器。&/li&&li&&a href=&///?target=https%3A///chriskiehl/Gooey& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Gooey&i class=&i}

我要回帖

更多关于 csol缔造者模式机关 的文章

更多推荐

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

点击添加站长微信