相关疑难解决方法(0)

type()和isinstance()之间有什么区别?

这两个代码片段之间有什么区别?使用type():

import types

if type(a) is types.DictType:
    do_something()
if type(b) in types.StringTypes:
    do_something_else()
Run Code Online (Sandbox Code Playgroud)

使用isinstance():

if isinstance(a, dict):
    do_something()
if isinstance(b, str) or isinstance(b, unicode):
    do_something_else()
Run Code Online (Sandbox Code Playgroud)

python oop inheritance types

1163
推荐指数
6
解决办法
69万
查看次数

在python中迭代列表或单个元素

我想迭代未知函数的输出.不幸的是,我不知道该函数是返回单个项还是元组.这必须是一个标准问题,必须有一个标准的方法来解决这个问题 - 我现在拥有的是非常难看的.

x = UnknownFunction()
if islist(x):
    iterator = x
else:
    iterator = [x]

def islist(s):
    try:
        len(s)
        return True
    except TypeError:
        return False

for ii in iterator:
    #do stuff
Run Code Online (Sandbox Code Playgroud)

python

20
推荐指数
2
解决办法
2万
查看次数

检测序列参数的正确方法?

我想编写一个接受参数的函数,该参数可以是序列也可以是单个值.值的类型是str,int等,但我希望它被限制为硬编码列表.换句话说,我想知道参数X是否是一个序列或我必须转换为序列以避免以后的特殊套管.我可以

type(X) in (list, tuple)

但是可能还有其他我不知道的序列类型,也没有共同的基类.

-N.

编辑:请参阅下面的"答案",了解为何大多数答案对我没有帮助.也许你有更好的建议.

python types sequences

18
推荐指数
2
解决办法
4365
查看次数

方法中的单个字符串或字符串列表

我已经碰到过好几次了.我正在处理许多可以接受字符串列表的方法.有几次我意外地传递了一个字符串,它被分解成一个列表并且每个字符被使用,这不是所希望的行为.

def test(a,b):
    x = []
    x.extend(a)
    x.extend(b)
    return x

x = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

我不想发生什么:

test(x,'test')
[1, 2, 3, 4, 't', 'e', 's', 't']
Run Code Online (Sandbox Code Playgroud)

我不得不求助于一种奇怪的语法:

test(x,['list']) 
Run Code Online (Sandbox Code Playgroud)

我希望这些隐含地工作:

test(x,'list')
[1, 2, 3, 4, 'test']

test(x,['one', 'two', 'three'])
[1, 2, 3, 4, 'one', 'two', 'three']
Run Code Online (Sandbox Code Playgroud)

我真的觉得有一个"pythonic"的方式来做这个或涉及鸭子打字的东西,但我没有看到它.我知道我可以使用isinstance()来检查它是否是一个字符串,但我觉得有更好的方法.

编辑:我正在使用python 2.4.3

python

10
推荐指数
3
解决办法
4716
查看次数

标签 统计

python ×4

types ×2

inheritance ×1

oop ×1

sequences ×1