日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python布尔类型的两个值_布尔人有两个可能的值。是否有三种可能值的类型?

發布時間:2023/12/16 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python布尔类型的两个值_布尔人有两个可能的值。是否有三种可能值的类型? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與None并行的問題存在于false=0,true=1,unknown=2(unknown實際上也不是真的,但是如果不小心的話,它將被求值為true)。

我想出了一個老套的辦法,至少能得到你想要的東西,我想。它至少可以為您提供在if/else和其他布爾求值實例中以三元方式求值的東西。class Yes(object):

def __nonzero__(self):

return True

class No(object):

def __nonzero__(self):

return False

class Unknown(object):

def __nonzero__(self):

raise ValueError('Unknown typed values do not evaluate to True/False. Try using Ternary.eval().')

class Ternary(object):

def __init__(self, yes, no, unknown):

setattr(self, yes, Yes())

setattr(self, no, No())

setattr(self, unknown, Unknown())

@staticmethod

def eval(value, unknown_eval):

if isinstance(value, Unknown):

return unknown_eval

return bool(value)

用法:t = Ternary('yes', 'no', 'unknown')

# Do stuff to assign ternary value to x

if Ternary.eval(x, True):

print 'x is yes or unknown'

if Ternary.eval(x, False):

print 'x is yes only'

你可以做Yes,No,和未知的偽單子,這可以讓你稍微改進eval。當你知道你的值將是yes或no時,你仍然可以進行簡單的if檢查,但是如果你試圖在Unknown上直接執行bool()(即if x),你將得到一個TypeError。這將使您的代碼更加明確,因為每次您檢查三元類型的值時,您都必須在代碼中定義您希望在該條件的上下文中如何處理未知,所以這是一個優點。

編輯:

我想到了另一種方法,這種方法不需要特別的處理,但不太靈活。上翻:class Unknown(object):

def __init__(self, eval):

self._eval = eval

def __nonzero__(self):

return self._eval

class Ternary(object):

def __init__(self, yes, no, unknown, unknown_eval):

setattr(self, yes, Yes())

setattr(self, no, No())

setattr(self, unknown, Unknown(unknown_eval))

用法:t1 = Ternary('yes', 'no', 'unknown', True)

t2 = Ternary('yes', 'no', 'unknown', False)

# Do stuff to assign ternary values to x1 and x2

if x1:

print 'x is yes or unknown'

if x2:

print 'x is yes only'

這樣做的好處是允許nonzero在Unknown中作為spec調用工作,但它的缺點是從實例化開始就設置了Unknown的eval,并且不再允許Unknown成為偽單例。

總結

以上是生活随笔為你收集整理的python布尔类型的两个值_布尔人有两个可能的值。是否有三种可能值的类型?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。