python強制轉換函式 如何防止函式強制轉換為b

2021-10-11 12:49:33 字數 1042 閱讀 4381

理論上,您可以用乙個__call__和乙個引發型別錯誤的__call__將函式包裝在類似函式的物件中。這將非常笨拙,並且可能會導致比捕獲到的更多的不良互動-例如,除非您為此新增更多的特殊處理,否則這些物件將無法作為方法工作-但是您可以這樣做:class nonbooleanfunction(object):

def __init__(self, func):

self.func = func

def __call__(self, *args, **kwargs):

return self.func(*args, **kwargs)

def __bool__(self):

raise typeerror

__nonzero__ = __bool__

@nonbooleanfunction

def is_nighttime():

return true # we're at the sun-earth l2 point or something.

if is_nighttime:

# typeerror!

還有很多東西你抓不到:

^$你必須記住,把它顯式地應用到任何你不想被當作布林函式的函式。對於不能控制的函式和方法,您也不能做太多的工作;例如,不能將此應用於str.islower來捕獲{}。在

如果您想捕捉這樣的東西,我建議您改用靜態分析工具。我認為像pycharm這樣的ide可能會警告您,應該有一些linting工具可以捕捉到這一點。在

如果您希望這些東西作為方法工作,這裡有額外的處理方法:import functools

class nonbooleanfunction(object):

... # other methods omitted for brevity

def __get__(self, instance, owner):

if instance is none:

return self

return nonbooleanfunction(functools.partial(self.func, instance))

python中的I O,以及強制型別轉換函式

我們用得一直是輸出函式 print 現在我們來自己輸入一些東西,也就是讓計算機知道從使用者那裡取得資訊的命令輸入 input 目錄 eg1 取得輸入 eg2 字串和數值 eg3 輸入其他型別 eg4 格式化輸出函式 強制型別轉換補充 username input 請輸入你的姓名 獲得你輸入你字元 p...

函式指標的強制型別轉換

先給出結論 函式指標是可以通過強制型別轉換而指向具有不同函式簽名的函式的,但是,轉換後,該函式指標沒辦法正確呼叫所指向的函式 不能給函式傳遞引數。下文給出得出這個結論的小故事。前幾天的任務要求寫乙個logger類,該類對外提供一些靜態的方法,但不生成物件。該類的主要作用是用來輸出訊息,不同的是可以由...

pow函式可進行強制轉換

wust oj description 老師給小豪出了一道題目 給你兩個整數x和n 10 x 10,1 n 10 讓你求出x1 x2 x3 xn的結果。小豪現在陷入了困惑中,現在請你來幫他解決這個問題。input 輸入每行兩個整數x和n。output 對於每組測試資料,輸出一行計算結果。sample...