向函数传递字符串时引号引发问题的解决方案咨询
问题解决:正确向函数传递多参数变量
问题本质
你第二种写法里,group是单个字符串,调用pool.get_players(group)时,函数只会收到这一个参数,而非你期望的6个名字参数——这才是报错的核心,和引号本身无关。
解决方案
方案1:直接用列表/元组存储名字(推荐)
不要把名字拼成带引号的字符串,直接用列表或元组存储,再用*操作符解包成多个参数传递:
# 用列表存储名字 group = ['Trevor Zegras', 'Adam Henrique', 'Troy Terry', 'Cam Fowler', 'Dmitry Kulikov', 'John Gibson'] # 用*解包,将列表元素作为单独参数传给函数 players = pool.get_players(*group) # 用元组也可以,效果完全一致 group = ('Trevor Zegras', 'Adam Henrique', 'Troy Terry', 'Cam Fowler', 'Dmitry Kulikov', 'John Gibson') players = pool.get_players(*group)
方案2:如果group已经是带引号的字符串(需解析)
如果group是从外部获取的带引号拼接字符串,可以通过以下两种方式解析:
方式A:用ast.literal_eval安全解析
import ast # 假设这是你拿到的带引号字符串 group_str = "'Trevor Zegras', 'Adam Henrique', 'Troy Terry', 'Cam Fowler', 'Dmitry Kulikov', 'John Gibson'" # 把字符串转成元组 group = ast.literal_eval(f"({group_str})") # 解包传递参数 players = pool.get_players(*group)
方式B:字符串分割处理
group_str = "'Trevor Zegras', 'Adam Henrique', 'Troy Terry', 'Cam Fowler', 'Dmitry Kulikov', 'John Gibson'" # 按', '分割字符串,再去掉每个元素的单引号 group = [name.strip("'") for name in group_str.split(', ')] players = pool.get_players(*group)
为什么你之前的尝试失败
- 单纯移除引号:得到的是
Trevor Zegras, Adam Henrique...这样的单个字符串,函数依然只收到一个参数。 - 直接转元组:
tuple(group_str)会把字符串的每个字符拆成元组元素,完全不是你需要的名字集合。
内容的提问来源于stack exchange,提问作者user1389739
相关产品推荐
相关产品推荐

