gpt4 book ai didi

python - 如何通过 "Duck Typing"区分元组和简单字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:51 24 4
gpt4 key购买 nike

我是编程新手,所以如果我犯了一个荒谬的错误,请原谅我将以下内容称为 Duck Typing。

我有一个程序接收一个字符串一个元组(包含字符串)作为单个参数。

例子:

def proc(arg):
try:
arg is a tuple
handle arg a tuple
except:
arg is a simple string
handle it so

根据参数是否为元组,我希望函数有不同的行为。

我不想进行类型检查,而是想使用 try..except 过程。

我考虑过尝试 arg[0],但 Python 中的字符串也是对象,在这方面它们的行为类似于元组并返回一些东西。

我可以在这里做什么?

谢谢。

最佳答案

在你的情况下,我建议你不要尝试..except 因为你想根据变量的类型做出不同的行为......

只有当你的行为没有不同时,你才应该使用 try..except。

来 self 的评论:

You should use exceptions for when your code expects things to act in the same way always and does not. here, you want the code to behave differently depending on the variable, so you should not try..except, but rather check what it is

您可以使用 isinstance .

isinstance(x, tuple)

引用this post isinstancetype

的区别

All about Duck Typing and Forgiveness


使用您的代码和我的回答来创建解决方案:

def proc(arg):
if isinstance(arg, tuple):
# handle as tuple
elif isinstance(arg, str):
# handle as str
else:
# unhandled?

关于python - 如何通过 "Duck Typing"区分元组和简单字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15905498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com