2016-11-10 70 views
0

我是Python新手。Python在函數中使用命令字

這是蟒web服務(燒瓶)的代碼的一部分。

功能登錄使用命令作爲它的參數,然而;我沒有看到任何其他類可以調用登錄函數。

我的問題是: 什麼命令在這裏做?

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

這是一個字符串,它看起來像它包含逗號分隔符的一些信息。 – Barmar

+1

如果你沒有看到任何調用'login()'的東西,我懷疑它是由Flask自動調用的。 Flask文檔應該解釋'command'參數中的內容。 – Barmar

+0

對於包含用戶名和密碼以及其他一些信息的字符串,這似乎是一種'split'的可怕實現。你有這個函數被調用的例子嗎? – brianpck

回答

0

我的猜測是,這是由另一個模塊代碼庫中其他(或可能通過自身瓶自動)地方導入的功能。該代碼是可怕的unpythonic但我可以告訴,command是一個包含用戶名和密碼的字符串,用逗號這樣的分離:

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

更多類似:'登錄( 'AAAAAAAAAAAAAAAAAAA,bbbbbbbbbbbbbbbbbbb,C')' - >'queryUser( 'AA', 'BB')' – brianpck

+1

必須有不只是在它的用戶名和密碼的。注意'command = command [15:]'和'command = command [i + 17:]' – Barmar

+0

可能是真的,函數假設了很多關於字符串的信息,很難說。它從字符串中提取兩個字段,其他字段具有固定長度 –

0

命令將從這個

command = command[1:] 
command = command[:-1] 
command = command[15:] 
被改寫

這樣:

command[16:-1] 
如果你想用逗號信使用分裂出一個字符串

my_list = command.split(',') 

我覺得這些概念2練習將幫助你在你的節目。 (Python不像C)。 關注此爲更多循環細節https://www.youtube.com/watch?v=EnSu9hHGq5o