小编Tyl*_*ler的帖子

如果项目不是函数,则将项目添加到列表中

我正在尝试立即编写一个函数,其目的是遍历一个对象__dict__,如果该项不是函数,则将一个项添加到字典中.这是我的代码:

def dict_into_list(self):
    result = {}
    for each_key,each_item in self.__dict__.items():
        if inspect.isfunction(each_key):
            continue
        else:
            result[each_key] = each_item
    return result
Run Code Online (Sandbox Code Playgroud)

如果我没弄错的话,inspect.isfunction应该将lambdas识别为函数,对吗?但是,如果我写的话

c = some_object(3)
c.whatever = lambda x : x*3
Run Code Online (Sandbox Code Playgroud)

然后我的功能仍然包括lambda.有人可以解释为什么会这样吗?

例如,如果我有这样的类:

class WhateverObject:
    def __init__(self,value):
        self._value = value
    def blahblah(self):
        print('hello')
a = WhateverObject(5)
Run Code Online (Sandbox Code Playgroud)

所以,如果我说print(a.__dict__),它应该回馈{_value:5}

python dictionary inspect python-3.x

6
推荐指数
1
解决办法
91
查看次数

如何在函数内测试函数?

如果我有这样的功能:

def any_function(type_name, field_name):
    def another_function(name):
        ...
Run Code Online (Sandbox Code Playgroud)

我将如何进行测试any_function

如果我使用错误的测试定义,我的意思是写作 print(any_function(...))

python unit-testing python-3.x

4
推荐指数
1
解决办法
110
查看次数

TypeError:没有初始值的空序列的Reduce()

我正在尝试编写一个函数,它将为我提供一个元组,其0索引是该文件中的行数,其1索引是该文件中的字符数.到目前为止,我有一个元组列表,如下所示:

mapped = [(1, 50), (1, 11), (1, 58)]
Run Code Online (Sandbox Code Playgroud)

我想写的这句话是这样的:

reduce(lambda x:(x[0]+y[0], x[1]+y[1]),(i for i in mapped))
Run Code Online (Sandbox Code Playgroud)

如果它正常工作,那么它应该返回(3,119)的元组.但是,我收到了错误

TypeError: reduce() of empty sequence with no initial value
Run Code Online (Sandbox Code Playgroud)

任何人都可以弄清楚为什么会这样吗?

python reduce tuples python-3.x

3
推荐指数
3
解决办法
1万
查看次数

使用递归将基数提升到指数到指数

我目前正在尝试使用递归将基数提高到 2 的幂,然后将其提高到指数,所以它看起来像x^2^y.

这是我的代码:

def real_multiply(x:int, y:int):
    if y == 0:
        return x
    else:
        return x * real_multiply(x,(2**y)-1)
Run Code Online (Sandbox Code Playgroud)

基本情况y==02^0返回 1,输出最终是x^1,这将返回x。但是,当我运行此代码时,它会达到递归限制。

有任何想法吗?

python recursion python-3.x

-3
推荐指数
1
解决办法
1万
查看次数