2016-11-10 4 views
0

Ich bin neu in Python.Python verwenden Befehlswort in der Funktion

Dies ist Teil des Python-Webservice (Flask) -Codes.

Die Funktion Login verwendet jedoch Befehl als Parameter; Ich sehe keine anderen Klassen, um die Login-Funktion aufzurufen. Meine Frage ist: Was macht Befehl hier?

import MySQLdb as mydb 

def login(command): 
    command = command[1:] 
    command = command[:-1] 
    command = command[15:] 
    i = 0 
    while command[i] != ',': 
     i = i + 1 
    username = command[:i - 1] 
    command = command[i + 17:] 
    i = 0 
    while command[i] != ',': 
     i = i + 1 
    password = command[:i - 1] 
    return queryUser(username, password) 

def queryUser(username, password): 
    sdb = mydb.connect(host='127.0.0.1',user='root',passwd='1',db='testDB') 
    query = sdb.cursor() 
    query.execute("""SELECT user_id FROM user_info WHERE user_id = %s AND user_password = %s""", (username,password,)) 
    if query.fetchone() is not None: 
     query.close() 
     sdb.close() 
     return 'true' 
    else: 
     query.close() 
     sdb.close() 
     return 'false: Invalid username and password' 
+0

Es ist eine Zeichenfolge, und es sieht aus wie es einige Informationen mit Komma Trennzeichen enthält. – Barmar

+1

Wenn Sie 'login()' nicht sehen, vermute ich, dass es von Flask automatisch aufgerufen wird. Die Flask-Dokumentation sollte erklären, was im 'command' Parameter steht. – Barmar

+0

Dies scheint eine abscheuliche Implementierung einer Art "Split" für eine Zeichenfolge zu sein, die den Benutzernamen und das Passwort zusammen mit einigen anderen Informationen enthält. Haben Sie ein Beispiel dafür, wie diese Funktion aufgerufen wird? – brianpck

Antwort

0

Meine Vermutung ist, dass dies eine Funktion von einem anderen Modul irgendwo sonst auf der Code-Basis (oder möglicherweise durch Flask selbst automatisch) eingeführt werden. Der Code schrecklich unpythonic ist aber von dem, was ich sagen kann, command ist eine Zeichenfolge, die einen Benutzernamen und ein Passwort enthält, durch ein Komma wie folgt getrennt:

login('????????????????awd,?????????????????1234cats,?????') → queryUser('awd', '1234cats') 
+0

Eher wie: 'login ('aaaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbbb, c')' -> 'queryUser ('aa', 'bb')' – brianpck

+1

Es muss mehr als nur den Benutzernamen und das Passwort geben. Beachten Sie 'command = command [15:]' und 'command = command [i + 17:]' – Barmar

+0

wahrscheinlich wahr, die Funktion nimmt viel von der Zeichenkette und es ist schwer zu sagen. Es extrahiert zwei Felder aus einer Zeichenfolge, wobei die anderen Felder irgendwie eine feste Länge haben –

0

Befehl würde von diesem

command = command[1:] 
command = command[:-1] 
command = command[15:] 
neu geschrieben werden

dazu:

command[16:-1] 

wenn Sie eine Zeichenfolge durch ein Komma Brief Verwendung aufzuspalten wollen:

my_list = command.split(',') 

Ich denke, mit diesen 2 Konzepten üben wird Ihnen bei Ihrer Programmierung helfen. (Python ist nicht wie C). Watch dies für mehr Schleifen Details https://www.youtube.com/watch?v=EnSu9hHGq5o

Verwandte Themen