星号 `*` 在 Python 3 中的字符串格式化方法 `.format(*) ` 中如何工作?
How does an asterisk `*` work in the string formatting method `.format(*) ` in Python 3?
*
在.format(*)
中有什么用?
在 print(new_string.format(*sum_string))
下面的格式函数中使用它时,它会将输出中 sum_string 的值从 18 更改为 1
为什么会这样?
我已经阅读了以下关于 *args
和 **kwargs
的 link 但无法理解它如何应用于 .format()
函数
What does ** (double star/asterisk) and * (star/asterisk) do for parameters?
sum_string = "18"
new_string = "This is a new string of value {}"
print(new_string.format(sum_string)) #it provides an output of value 18
print(new_string.format(*sum_string)) #it provides an output of value 1
与format
无关。 *
解压参数,如果列表中有 4 个占位符和 4 个元素,则 format
解压参数并填充插槽。示例:
args = range(4)
print(("{}_"*4).format(*args))
打印:
0_1_2_3_
第二种情况:
print(new_string.format(*sum_string))
要解包的参数是字符串的字符(字符串被参数解包视为可迭代),并且由于只有一个占位符,所以只有第一个字符已格式化并打印(与 C 编译器可能会收到的警告相反,printf
、python 不会警告您参数列表太长,它只是不使用所有他们)
使用多个占位符,您会看到这一点:
>>> args = "abcd"
>>> print("{}_{}_{}_{}").format(*args))
a_b_c_d
*
在.format(*)
中有什么用?
在 print(new_string.format(*sum_string))
下面的格式函数中使用它时,它会将输出中 sum_string 的值从 18 更改为 1
为什么会这样?
我已经阅读了以下关于 *args
和 **kwargs
的 link 但无法理解它如何应用于 .format()
函数
What does ** (double star/asterisk) and * (star/asterisk) do for parameters?
sum_string = "18"
new_string = "This is a new string of value {}"
print(new_string.format(sum_string)) #it provides an output of value 18
print(new_string.format(*sum_string)) #it provides an output of value 1
与format
无关。 *
解压参数,如果列表中有 4 个占位符和 4 个元素,则 format
解压参数并填充插槽。示例:
args = range(4)
print(("{}_"*4).format(*args))
打印:
0_1_2_3_
第二种情况:
print(new_string.format(*sum_string))
要解包的参数是字符串的字符(字符串被参数解包视为可迭代),并且由于只有一个占位符,所以只有第一个字符已格式化并打印(与 C 编译器可能会收到的警告相反,printf
、python 不会警告您参数列表太长,它只是不使用所有他们)
使用多个占位符,您会看到这一点:
>>> args = "abcd"
>>> print("{}_{}_{}_{}").format(*args))
a_b_c_d