这个问题已经在这里有了答案 :
type()和isinstance()有什么区别? (7个答案)
7年前关闭。
我需要知道Python中的变量是字符串还是字典。以下代码有什么问题吗?
if type(x) == type(str()):
do_something_with_a_string(x)
elif type(x) == type(dict()):
do_somethting_with_a_dict(x)
else:
raise ValueError
更新 :我接受了avisser的回答(尽管如果有人解释了为什么isinstance
首选,我会改变主意type(x) is
)。
但是要感谢Nakedfanatic提醒我,使用dict(作为案例陈述)通常比使用if / elif / else系列更干净。
让我详细说明一下我的用例。如果变量是字符串,则需要将其放在列表中。如果是字典,我需要一个唯一值列表。这是我想出的:
def value_list(x):
cases = {str: lambda t: [t],
dict: lambda t: list(set(t.values()))}
try:
return cases[type(x)](x)
except KeyError:
return None
如果isinstance
首选,您将如何编写此value_list()
功能?
如果有人将unicode字符串传递给您的函数会怎样?还是从dict派生的类?还是实现类似dict的接口的类?以下代码涵盖了前两种情况。如果您使用的是Python
2.6,则可能要使用collections.Mapping
而不是dict
按照ABC
PEP
。
def value_list(x):
if isinstance(x, dict):
return list(set(x.values()))
elif isinstance(x, basestring):
return [x]
else:
return None
事实上中的变量比变量慢,这是众所周知的,并且已经在本网站的不同问题中讨论过了。然而,我仍然没有找到答案的一件事是,使用代码中不同函数内部使用的全局变量(如常量)的最佳和最快的方法是什么? 到目前为止,我能找到的最佳解决方案是定义一个函数,在这里我将全局变量分配给局部变量。 输出: 但这是一个丑陋的解决方案,而且比使用局部变量还要慢。在函数内部使用全局/常量变量等效的最著名的方法是什么,而不必将它们
问题内容: 所以,我要做的是在特定网页上运行一个函数(与我的正则表达式匹配)。 现在,我每秒检查一次,并且它可以正常工作,但是我敢肯定,有更好的方法(因为它使网站充斥着大量请求)。 我当时想以某种方式做到这一点,但不确定如何做到。 问题答案: 我当时想用WebDriverWait做到这一点 究竟。首先,查看内置的“预期条件”是否可以解决以下问题: 用法示例: 如果不是,则可以始终创建自定义的“预期
问题内容: 检查给定对象是否为给定类型的最佳方法是什么?如何检查对象是否从给定类型继承? 假设我有一个对象。如何检查是否是? 问题答案: 要检查是的实例还是的任何子类str,请使用(这是“规范”的方式): 要检查的类型是否准确(排除子类): 以下内容也可以使用,并且在某些情况下可能有用: 有关相关信息,请参见Python库参考中的内置函数。 还有一点要注意:在这种情况下,如果您使用的是Python
问题内容: 这将意味着该类已初始化,但未设置变量。 示例类: 实际的类很大,我不想为每个变量检查if(xyz == null)。 问题答案: 尝试这样的事情: 尽管检查每个变量是否可行可能会更好。
问题内容: 查看URL存在并且响应不是404的最佳方法是什么? 问题答案: 您可以使用 手册中的示例2 : 第一个数组元素将包含HTTP响应状态代码。您必须解析它。 请注意,示例中的函数将发出HTTP HEAD请求,这意味着它将不会获取URL的正文。这比使用GET请求(也将返回正文)更有效。 还要注意,通过设置 默认 上下文,任何使用http流上下文的后续调用现在都将发出HEAD请求。因此,确保完
这意味着该类已初始化,但未设置变量。 示例类: 实际的类非常大,我不想检查每个变量是否(xyz==null)。