我正在使用的库flynt,将通过%的'printf'格式转换为python3.6 +的新f字符串。当转换后的字符串格式可以产生不同的值时,提示我行为不一致:
foo = (1,)
print('%s' % foo) # prints '1'
print(f'{foo}') # prints '(1,)'
不幸的是,无法预测哪些变量中将包含一个元素的元组。因此,我面临的设计问题是要么不转换任何具有单个参数的情况(多数?),要么就转换它们,从而有可能巧妙地改变lint程序的行为。
仅当'%s' % foo
是一个元素的元组或foo
不是元组时,代码foo
才能正常运行。因此,问题归结为:是否存在使用一个元素的元组的任何有效pythonic表达式,还是不太可能出现的极端情况?