传递布尔值作为方法的输入

时间:2016-12-28 07:01:09

标签: python python-2.7

如何将boolean作为参数传递给方法?

例如,我有一个代码如下:

def msg_util(self, auth_type=None,starttls=False):
....
starttls=True
invoke_tls(self, auth_type, auth_value, "require_tls=%s" %starttls)
....
....
def invoke_tls(self, auth_type=None, auth_value=None,range=None,style=None, adminuser=None,require_tls=False):
...

由于starttls作为字符串从invoke_tls方法传递,在方法定义invoke_tls中,如果默认情况下require_tls未设置为布尔值False,{{1}被视为" True" (字符串)

如果我有办法在bothon中将布尔类型作为可选参数传递,请告诉我。

我知道一种方法是在if else条件下处理字符串并按如下方式处理:

starttls

但是,请告诉我是否有其他有效或更好的方法将布尔值作为输入传递给另一个方法?

2 个答案:

答案 0 :(得分:6)

TrueFalse值没有什么特别之处......

invoke_tls(self, auth_type, auth_value, starttls)

如果您的意思是如何传递特定参数而不传递其他参数,则Python具有“关键字参数”:

def foo(a, b=1, c=False):
    print(a, b, c)

foo(1)          # b will be 1 and c False (default values)
foo(1, c=True)  # b will be 1 (default) and c True

Python还允许动态指定关键字参数...例如

parms = {"c" : True}  # Dictionary name → value
foo(1, **parms)       # b will be 1 (default), c will be True

答案 1 :(得分:2)

Boolean是一种数据类型,可以像任何其他数据类型一样传递。

检查:

a = True
def foo(b=None):
    print b
foo(a)

输出:

True
相关问题