我正在尝试立即编写一个函数,其目的是遍历一个对象__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}
如果我有这样的功能:
def any_function(type_name, field_name):
def another_function(name):
...
Run Code Online (Sandbox Code Playgroud)
我将如何进行测试any_function?
如果我使用错误的测试定义,我的意思是写作
print(any_function(...))
我正在尝试编写一个函数,它将为我提供一个元组,其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)
任何人都可以弄清楚为什么会这样吗?
我目前正在尝试使用递归将基数提高到 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==0是2^0返回 1,输出最终是x^1,这将返回x。但是,当我运行此代码时,它会达到递归限制。
有任何想法吗?
python ×4
python-3.x ×4
dictionary ×1
inspect ×1
recursion ×1
reduce ×1
tuples ×1
unit-testing ×1