<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>对象