|  |      1ethego      2015-09-21 13:15:08 +08:00 %u 的这种格式化字符串的方法非常的不 pythonic ,建议使用`.format ()`方法 | 
|  |      2hhrmatata      2015-09-21 13:17:17 +08:00 用-1 去替换%u ,所以当然还是负数 | 
|  |      3ethego      2015-09-21 13:23:12 +08:00 我的朋友里写惯 c 系语言的人转学 python 都习惯用百分号格式化字符串。。 | 
|  |      4initialdp OP | 
|  |      5ethego      2015-09-21 13:29:36 +08:00 ```python print "a={0}".format (abs (-1 )) ``` | 
|  |      6ethego      2015-09-21 13:31:58 +08:00 @initialdp 字符串本身就是一个对象,有方法 format (),然后实用 abs 函数取绝对值。这样更符合 python 的风格。 | 
|  |      7initialdp OP @ethego 居然用上了 abs 函数,这种处理方式也不好看啊。 我改成这样也可以了: print "a=%u" % (-1&0xFFFFFFFF ) 总之,我以为%u 是与 C 语言对应的格式化,没想到是个坑。 | 
|      9timonwong      2015-09-21 13:37:04 +08:00  1 @initialdp Python 的 percent format 是没有指定 'u' 的。 u 在 python 源码里,都是处理为 'd' | 
|  |      12ethego      2015-09-21 13:41:16 +08:00 @timonwong 在 python2 里,数字就三种类型,长整型,整型和浮点型, python3 里就只有两种,没有了长整型。真心建议楼主放下一些 c 系的思维去学 python ,去感受一下动态类型语言的好处。 | 
|  |      14ethego      2015-09-21 13:45:06 +08:00 @timonwong 感觉像是历史遗留问题,我还是全力推荐面向对象的写法。我有朋友写 c 系的转写 python 一眼就能看出来,一股浓浓的、别扭的 c 系风,怎么看怎么难受。 | 
|      16timonwong      2015-09-21 13:48:32 +08:00 @ethego logging ,怎么样都是浓浓的 C-style dig 一下也许能发现 logging.Formatter | 
|  |      17ethego      2015-09-21 13:54:24 +08:00 @timonwong 看了下 python3 的 logging 模块,已经是面向对象的写法了,所以看起来还是个历史遗留问题。 | 
|  |      18initialdp OP | 
|  |      20TimePPT PRO 2.7 以上建议用 format | 
|  |      21hahastudio      2015-09-21 15:38:50 +08:00  1 https://docs.python.org/2/library/stdtypes.html#string-formatting %u Obsolete type – it is identical to 'd'. See https://www.python.org/dev/peps/pep-0237/ | 
|  |      23ethego      2015-09-21 21:16:05 +08:00 @msg7086 python 又不限制你强制面向对象,当然提供了很多面向过程的写法,不爽你可以全部用面向对象的写法写 python 也没有问题啊。 |