python:我应该用多个print语句还是用”+”来表示连续的句子?

Python: Should I use multiple print statements or “+” for consecutive sentences?

1
2
3
4
5
6
7
8
9
10
11
    print("
INSTRUCTIONS~
Enter:
'c' to use a full fledged calculator,"
)
    print("'a' to add and subtract numbers" +
         "(faster than calculator if you just want to add and subtract),")
    print("'s' to find a number's square root,")
    print("'p' to see powers,")
    print("'n' to arrange numbers in ascending and descending order,")
    print("'f' to calculate factorials,
'x' to exit the program,"
)

在目前的一把"+"线在相同的句子,但并不构成另一个打印表,我想知道这会是一个更好的编程实践。


为了回答你的问题,它们本质上是相同的。这真的是一个可读性的问题,因此个人偏好。

但是,有一种更方便的方法可以做到这一点,那就是使用多行字符串。它们由"""分隔,本质上是能够跨越多行的字符串。

例如,

1
2
print("Hello,
world!"
)

如果说是EOL while scanning string literal,就会抛出一个错误,而

1
2
print("""Hello,
world!"""
)

很好,打印这个:

1
2
Hello,
World!

就像它应该的那样。

说明:与使用行继续符(\不同。这只会转到下一行而不打断字符串,以帮助程序员读取代码。它不包括换行符。

这是:

1
2
print("Hello,\
world!"
)

与此不同:

1
2
print("""Hello,
world!"""
)

虽然这是真的,但它们都是有效的,但它们有不同的结果。前者将打印:

1
Hello,world!

而后者将打印

1
2
Hello,
World!

编辑:在将其用于docstring时,需要注意的是,为了提高可读性而进行的缩进会通过添加额外的制表符来干扰它。例子:

1
2
3
4
5
6
7
8
9
10
11
# Less easily readable
def test():
   """Docstring
Docstring"""

    pass

# More easily readable
def otherTest():
   """Docstring
    Docstring"""

    pass

问题是这两个docstring产生的结果完全相同。python忽略前导空格。

来源:python多行字符串的正确缩进


做任何能使程序易于阅读和维护的事情。


在速度方面,它们是相等的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'

size = 5


def test_multiple_prints():
    for _ in range(size):
        print(text)


def test_single_print():
    big_text = '
'
.join([text for _ in range(size)])
    print(big_text)


%timeit test_multiple_prints()
#1000 loops, best of 3: 702 μs per loop


%timeit test_single_print()
#1000 loops, best of 3: 703 μs per loop