print函数中的sep和end有什么区别?

6
pets = ['boa', 'cat', 'dog']
for pet in pets:
    print(pet)

boa
cat
dog
>>> for pet in pets:
        print(pet, end=', ')

boa, cat, dog, 
>>> for pet in pets:
        print(pet, end='!!! ')

boa!!! cat!!! dog!!! 

但 sep 呢?我试着将 end 替换为 sep,但没有任何反应。但我知道 sep 用于在打印时分隔,那么我应该如何使用 sep?sep 和 end 之间有什么区别?


3
sep 用于分隔作为 *args 传递的参数。 尝试运行 print('a', 'b', 'c', sep=', ') - vaultah
1
是的,我明白了,谢谢。问题出在我把 sep 放在了 for 循环里面,只有 end 可以在 for 循环中使用。 - MMM
4个回答

12

print 函数 使用 sep 来分隔参数,并在最后一个参数之后使用 end。你的例子很令人困惑,因为你只给了它一个参数。这个例子可能更清晰:

>>> print('boa', 'cat', 'dog', sep=', ', end='!!!\n')
boa, cat, dog!!!

当然,sepend只适用于Python 3的print函数。对于Python 2,以下内容是等效的。

>>> print ', '.join(['boa', 'cat', 'dog']) + '!!!'
boa, cat, dog!!!

你也可以在 Python 2 中使用一个回溯版本的打印函数:

>>> from __future__ import print_function
>>> print('boa', 'cat', 'dog', sep=', ', end='!!!\n')
boa, cat, dog!!!

在Python 2中可以使用print函数。https://dev59.com/42ct5IYBdhLWcg3wV8Ck - vaultah
Python 2有一个print语句,@vaultah,它有重要的区别。首先,它不支持sepend - Don Kirkby
我只是想说,你声称它只能在Python 3中工作是不正确的。 - vaultah
我的观点是,只有 sepend 在Python 3中有效,@vaultah。我已经澄清了答案。 - Don Kirkby
2
实际上,Python 2 的 print 函数支持 sepend参考链接 - vaultah
哦,对了,@vaultah,我忘记了__future__模块。我已经将其添加到答案中了。 - Don Kirkby

1

以下两者等效:

print(*array, sep='abc')
print('abc'.join(str(x) for x in array))

0

sep=''end='' 是两个不同的东西。忽略空格并将变量作为单个字符串。例如:a b-->ab 但是end='' 使 a b-->a b。 请参见下面的示例。 对于 sep=' '

from itertools import permutations
s,k = input().split()
for i in list(permutations(sorted(s), int(k))):
    print(*i,sep='')

    ''' output for sep='': 
    HACK 2
    AC
    AH
    AK
    CA
    CH
    CK
    HA
    HC
    HK
    KA
    KC
    KH
    '''

对于 end=' '

    from itertools import permutations

    s, k = input().split()
    for i in list(permutations(sorted(s), int(k))):
        print(*i, end='')
    '''
HACK 2
A CA HA KC AC HC KH AH CH KK AK CK H
Process finished with exit code 0
'''

0

在数组变量中,你可以使用join代替sep

pets = ['boa', 'cat', 'dog']
res=",".join(pets)
print(res)

输出

boa,cat,dog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接