Python语法,方法名前面的点

时间:2017-12-18 13:54:04

标签: python

我正在尝试理解代码:

x = 1 
size = 16  
for i in range(size):
    print((' ' * (size - i)) + bin(x)[2:]
    .replace('0', '  ').replace('1', ' *'))
    x ^= x << 1

replace之前的点如何应用于上面的print语句?

为什么会引发错误?

for i in range(3):
    print(i)
    .replace('1','ONE')

第一个例子打印出来:

                 *
                * *
               *   *
              * * * *
             *       *
            * *     * *
           *   *   *   *
          * * * * * * * *
         *               *
        * *             * *
       *   *           *   *
      * * * *         * * * *
     *       *       *       *
    * *     * *     * *     * *
   *   *   *   *   *   *   *   *
  * * * * * * * * * * * * * * * *

我期待第二个会打印出来:

0
ONE
2

2 个答案:

答案 0 :(得分:4)

您的代码:

Other dialect flags

通过引入一些变量更清楚:

x = 1
size = 16
for i in range(size):
    print((' ' * (size - i)) + bin(x)[2:]
        .replace('0', '  ').replace('1', ' *'))
    x ^= x << 1

行开头的点不是错误的原因是你有一个未闭合的括号,Python正在寻找下一行的剩余部分。

答案 1 :(得分:-2)

print方法不返回值,因此您无法将replace方法链接到该方法上。相反,你需要使用一个字符串。

因此正确的代码是

for i in range(3):
    print(str(i).replace('1','ONE'))