2016-12-28 3 views
1

Wie übergebe ich Boolean als Argument an eine Methode?Übergeben Sie boolesche Werte als Eingabe für die Methode

Zum Beispiel habe ich einen Code wie folgt:

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): 
... 

Da sind starttls als String aus invoke_tls Methode übergeben, in der Methodendefinition invoke_tls, wenn require_tls nicht gesetzt ist falsch standardmäßig boolean, starttls ist genommen als "True" (String)

Bitte lassen Sie mich wissen, ob es einen Weg gibt, den ich Booleschen Typ als optionale Parameter in Python übergeben kann.

Ich weiß, dass ein Weg, um die Zeichenfolge zu verarbeiten, wenn sonst Zustand und verarbeiten sie wie folgt:

def t_or_f(arg): 
    ua = str(arg).upper() 
    if 'TRUE'.startswith(ua): 
     return True 
    elif 'FALSE'.startswith(ua): 
     return False 

Aber, lassen Sie es mich wissen, ob es ein anderer wirksamer oder besserer Weg ist Boolesche Wert zu übergeben als Eingabe für eine andere Methode?

+0

Wenn Sie es nicht passieren zu spezifizieren, 'false' wird der Standardwert übergeben werden. – Maroun

+0

Gleich wie Sie einen anderen Parameter übergeben. Booleans sind nicht besonders. – user2357112

+0

Warum machst du es zu einer Schnur? – TheLazyScripter

Antwort

5

Es gibt nichts besonderes über True oder False Werte ...

invoke_tls(self, auth_type, auth_value, starttls) 

Wenn das, was Sie meinen, ist, wie bestimmte Parameter zu übergeben aber nicht andere, Python hat "Schlüsselwortparameter":

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 ermöglicht auch Keyword-Argumente dynamisch ... zum Beispiel

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

Danke, aber was ist, wenn der Wert für c von einer anderen Methode kommt und der Variablenname x ist? Wir können also 'foo (1, c = x)' nicht aufrufen. Also habe ich 'foo (1," c =% s "% x)' –

+0

verwendet Du kannst und soll 'foo (1, c = x)' verwenden. Ich kann das Problem hier nicht sehen. – Jollywatt

+1

@ArunShankar: Wenn der ** Name ** des Parameters dynamisch ist, können Sie die Syntax '** dict' im Aufruf verwenden. Wenn das Problem nur Parameterwert ist, können Sie einfach 'foo (1, c = x) schreiben' – 6502

1

Boolean ist ein Datentyp und kann wie jeder andere Datentyp übergeben werden.

Check:

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

Ausgang:

True 
Verwandte Themen