请教大神这里为什么不是 base = 2?
Topic source在int2(x, base=2)中其实相当于把base的值指定为一个默认参数,所以你在调用的时候只用写 int2('10001') 相当于 int('10001', base=2) return的时候base这部分被视为一个**kw参数传入进去 可以这么理解,如果你在return部分指定了base的值,如 return int(x,base=2) 那么你外围的int2调用的时候base无论传入什么样的值都返回的都会是以base=2为基础,这相当于让函数失去了通用性,当你想要调用一些八进制十进制转换的时候,你还是需要再写那么一个函数来适用于不同的进制版本。
事实上教程里面已经声明了,写这个函数是在经常需要转换二进制字符串的环境下,为了提高效率不用每次都显示调用 int(x, base=2) 相当于是一种针对生产情况所做的函数调用简化,但是这个函数还保留了一定的灵活性,让调用的时候不一定必须以二进制数来调用,你还可以显示声明base的值如 int2(x,base=8) 这个时候变为了以8进制为基础的情况了,在这里的话其实和调用了 int(x, base=8) 是相同的了 所以说白了这里是相当于把int函数中默认的base=10给替换成了base=2去了
前面有人说了,这里不宜'return int(x,base=2)',主要的原因是,这样失去了灵活性,每次调用int2,都只是int2(x,base=2),也就是int(x,base=2)。'int2'不可再转化其他进制。
因为int(‘01000111’,base=2)和int(‘01000111’,2)是等价的,见上面的
>>> int('12345', base=8)
5349
>>> int('12345', 16)
74565
- 1
- 2
philaradox
return的时候,为什么不是 return int(x,base=2) 呢?