<pre class="line-numbers"><code class="language-python">def bytes2human(n): symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y') prefix = {} for i, s in enumerate(symbols): prefix[s] = 1 << (i + 1) * 10 for s in reversed(symbols): if n >= prefix[s]: value = float(n) / prefix[s] return '%.1f%s' % (value,s) return '%sB' % n </code></pre>python
<h2 id="toc_0">python語言n = (n+1)<<1是什麼意思</h2>測試
<p>前提n得有一個初始值,好比n=1,否則會報錯那麼n=n+1的意思就1+1再賦值給變量n,那麼n就等於2。而後<<符號是按位左移的意思,就是把對象轉爲2進制,有效數字往左移動。<<1就是按位左移1個單位。好比2<<1意思就是2按位左移1個單位,2的二進制就是00000010,左移一位就是00000100,轉爲十進制就是4。那麼按位左移多少個單位的操做,你能夠理解爲對象乘以2的單位次方。上面的2<<1也就是2乘以2的1次方等於4。用編譯器測試一下:</p>code
<pre class="line-numbers"><code class="language-python">>>> n=2 >>> n=n+1 >>> n 3 >>> n<<1 >>> n=(n+1)<<1 >>> n 8 </code></pre>對象