lzb1001 发表于 2023-3-23 20:50:37

print(value, ..., sep=' ', end='\n', )

根据英文:sep是分隔,end是结尾,所以我一直认为:

favorite = ‘Fishc’
for i in favorite:
        print(i, sep = '&')


的返回值应该是:

F&i&s&h&c


但实际返回结果却不像我理解的那样……

isdkz 发表于 2023-3-23 20:55:12

sep 参数是用于 print() 函数在打印多个参数时分隔它们的。然而,你的例子中,print() 函数只打印了一个参数,即 i。所以 sep 参数在这里并没有起作用。

如果你想实现你想要的那个效果,可以用 * 把 favorite 解包成多个参数

示例代码:
favorite = 'Fishc'
print(*favorite, sep='&')

lzb1001 发表于 2023-3-23 21:27:45

isdkz 发表于 2023-3-23 20:55
sep 参数是用于 print() 函数在打印多个参数时分隔它们的。然而,你的例子中,print() 函数只打印了一个参 ...

感谢指点。

1、print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
   
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

上面红色字体我错误理解成了‘sep:插入一个变量之间的字符串,默认是一个空格’,正确理解应该是‘sep:插入几个变量之间的字符串,默认是一个空格’

2、用 * 把 favorite 解包成多个参数----解包在这是什么意思?不太理解

isdkz 发表于 2023-3-23 21:32:19

lzb1001 发表于 2023-3-23 21:27
感谢指点。

1、print(...)


关于解包(unpacking)的概念,这是Python中一种特殊的语法。当我们在函数调用时使用星号(*)操作符,它会将一个可迭代对象(如列表或元组)“解包”成多个单独的参数。这样,我们可以将一个可迭代对象的元素作为多个独立的参数传递给函数。

lzb1001 发表于 2023-3-23 21:48:14

本帖最后由 lzb1001 于 2023-3-23 21:51 编辑

isdkz 发表于 2023-3-23 21:32
关于解包(unpacking)的概念,这是Python中一种特殊的语法。当我们在函数调用时使用星号(*)操作符,它 ...

>>> favorite = ‘Fishc’

>>> print(*favorite, sep='&')
F&i&s&h&c

>>> print(**favorite, sep='&')
Traceback (most recent call last):
File "<pyshell#72>", line 1, in <module>
    print(**favorite, sep='&')
TypeError: print() argument after ** must be a mapping, not str # 返回错误提示:**后面的参数必须是一个映射,而不能是一个字符串

然而我测试如下时:

>>> a = {'one':1, 'two':2}

>>> print(a)
{'one': 1, 'two': 2}

>>> print(*a, sep = '&')
one&two # 为何返回结果仅仅是key键,而不包含value值?

>>> print(**a, sep = '&') # 为何返回错误提示?
Traceback (most recent call last):
File "<pyshell#80>", line 1, in <module>
    print(**a, sep = '&')
TypeError: 'one' is an invalid keyword argument for print()

lzb1001 发表于 2023-3-23 21:57:34

isdkz 发表于 2023-3-23 21:32
关于解包(unpacking)的概念,这是Python中一种特殊的语法。当我们在函数调用时使用星号(*)操作符,它 ...

print(*favorite, sep='&')

*的作用实际相当于把favorite = ‘Fishc’中F i s h c这五个字符传入print函数作为五个变量

是这样理解的吗?不知道这样表述有无错误?

isdkz 发表于 2023-3-23 21:58:39

lzb1001 发表于 2023-3-23 21:48
>>> favorite = ‘Fishc’

>>> print(*favorite, sep='&')


1、为何返回结果仅仅是key键,而不包含value值

因为字典这个可迭代对象迭代出来的是键

2、为何返回错误提示?

因为 ** 会将字典解包成关键字参数,而 print 是不接受参数名为 one 和 two 的关键字参数的

你想打印值的话可以用以下代码:
a = {'one':1, 'two':2}
print(*a.values(), sep = '&')

isdkz 发表于 2023-3-23 21:59:44

lzb1001 发表于 2023-3-23 21:57
print(*favorite, sep='&')

*的作用实际相当于把favorite = ‘Fishc’中F i s h c这五个字符传入print ...

对的,

* 会解包出可迭代对象的每个元素来作为函数的位置参数
页: [1]
查看完整版本: print(value, ..., sep=' ', end='\n', )