0
|
Antoine Viscardi Ziyed · 技术社区 · 6 年前 |
![]() |
1
4
可以是thing或iterable或things的参数都是代码味道。更糟的是当它是一根弦,因为一根弦
是
一个iterable,甚至一个序列(所以你的测试
Python stdlib确实有一些这样的案例是臭名昭著的,
我不知道你的用例是什么,但我想这会更好:
现在用户可以这样调用它:
或者,如果他们碰巧有一个列表,它仍然很容易:
如果这不合适,另一个选项是keywords,甚至可能是keyword-only params:
但是,如果最好的设计真的是一个字符串或一个(非字符串)字符串的iterable,或者一个字符串或一个字符串元组,那么标准的方法是类型切换。它可能看起来有点难看,但它提醒人们注意,你正在做的事情正是你在做的,而且它是以最习惯的方式做的。
|
![]() |
2
1
我允许使用列表和单个字符串作为参数。另外,我认为if/else解决方案没有任何问题,只是您可以直接检查参数是否是
如果检查参数是否可iterable(字符串和列表都可iterable),请小心。 |
![]() |
3
0
使用isinstance()标识输入类型可以提供一个解决方案:
这将允许您输入列表、单个名称的字符串以及包含多个名称(用空格分隔)的字符串:
应用此函数:
获取: ['Eric'] [爱丽丝,约翰] [爱丽丝,艾尔莎,乔治] |
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |