Как is & ldquo; self.argv = argv или sys.argv [:] & rdquo; оценивать? [Дубликат]

Попробуйте это, это должно быть работа, иначе вам нужно распечатать ошибку, чтобы указать вашу проблему

$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * from Users WHERE UserName LIKE '$username'";
$result = mysql_query($sql,$con);

while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}
21
задан Kevin Guan 5 November 2015 в 03:50
поделиться

6 ответов

Предположим, что вы используете значение parameter, но если значение указано None, то вы предпочитаете иметь пустую строку "" вместо None. Что бы вы сделали в целом?

if parameter:
    # use parameter (well your expression using `" " + parameter` in this case
else:
    # use ""

Это то, что делает это выражение. Сначала вы должны понять, что делает оператор and и or:

  • a and b возвращает b, если a is True, else возвращает a.
  • a or b возвращает a, если a is True, else возвращает b.

Итак, ваше выражение:

parameter and (" " + parameter) or ""

, которое фактически эквивалентно:

(parameter and (" " + parameter)) or  ""
#    A1               A2               B
#           A                     or   B

Как выражение оценивается, если:

  • parameter - A1 оценивается как True:
    result = (True and " " + parameter) or ""
    
    result = (" " + parameter) or ""
    
    result = " " + parameter
    
  • parameter - A1 is None:
    result = (None and " " + parameter) or ""
    
    result = None or ""
    
    result = ""
    

Как общее предложение, лучше и читаем использовать выражение формы A if C else B для условного выражения. Поэтому вам лучше использовать:

" " + parameter if parameter else ""

вместо данного выражения. См. PEP 308 - Условное выражение для мотивации выражения if-else.

22
ответ дан Rohit Jain 1 September 2018 в 09:57
поделиться

Он проверяет, имеет ли значение parameter значение. Если это делает, это добавляет пробел. Если он не возвращает пустую строку.

$ python
Python 2.7.2 (default, Oct 11 2012, 20:14:37) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> foo = 'bar'
>>> foo and (" " + foo) or ""
' bar'
2
ответ дан Cfreak 1 September 2018 в 09:57
поделиться

Пустая строка в Python эквивалентна логическому значению False, так же как и пустой список. Строка, которую вы представили, представляет собой версию Python троичного оператора (как отмечено в комментарии ниже, в настоящее время устаревшая конструкция, так как Python теперь имеет реальный тернарный оператор ). Он основан на трех правилах:

  • для a and b, если a - False, тогда b не будет оценен
  • для a or b, если a - True, тогда b не будет оценен
  • значение логического предложения - это значение его последнего оцениваемого выражения

Если parameter оценивает True, вторая часть предложения and будет оценена: (" " + parameter). Поэтому он добавит ведущее пространство к parameter, если это не пустая строка. Вторая часть предложения or не будет оцениваться, поскольку вы уже можете сказать, что все выражение True (True или что-либо всегда True).

Если parameter False (пустая строка в этом контексте), вторая часть предложения and не будет оцениваться, поскольку вы уже можете сказать, что это False (False, и все всегда False). Поэтому вторая часть предложения or получает оценку, возвращающую пустую строку.

Вы можете записать ее более подробным образом:

if parameter:
    return " " + parameter
else:
    return ""
4
ответ дан Community 1 September 2018 в 09:57
поделиться

Python рассматривает пустые строки как имеющие логическое значение «false» и непустые строки как имеющие логическое значение «true».

Таким образом, существует только два возможных результата выражения, то есть для пустая строка и для непустой строки.

Второе, что нужно заметить, это то, какое значение возвращает оператор «или» и «и». Python не возвращает только true или false значение, для строк и / или оператора он возвращает одну из строк (учитывая, что они имеют значение true или false). Python использует ленивый подход:

Для оператора «и», если значение left равно true, правильное значение проверяется и возвращается. если левое значение ложно, то оно возвращается

Для оператора «или», если первое значение истинно, оно возвращается. в противном случае, если второе значение ложно, затем возвращается второе значение

parameter = 'test'
print( parameter and (" " + parameter) or "" )

ouput: test

parameter = ''
print( parameter and (" " + parameter) or "" )

output: (пустая строка)

6
ответ дан Pawel Bragoszewski 1 September 2018 в 09:57
поделиться

Рассмотрим этот TTL. Затем он просто подключается к различным сценариям, чтобы увидеть, что происходит:)

Обратите внимание, что and и or оценивают первое значение, которое сделало их «успешными» или «сбой» - и это не должно быть True или False!

a    b    a or b   a and b
--   --   ------   ------- 
T    T    a (T)    b (T)
T    F    a (T)    b (F)
F    T    b (T)    a (F)
F    F    b (F)    a (F)

T и F представляют значения «Truth-y» и «False-y». Это выражение-цепочка работает , потому что операторы не должны возвращать True или False - это будет либо значение a, либо b.

2
ответ дан user2246674 1 September 2018 в 09:57
поделиться

Со всеми хорошими ответами я нашел эти заявления, помог мне запомнить это лучше и в соответствии с тем, как работает мой мозг (и, надеюсь, для него еще немного):

  • "и" возвращает первый элемент False (например, None, "", [], (), {}, 0) или последний элемент, если нет (например, False не найден)
  • "или" возвращает первый True элемент или последний элемент (например, нет True found)

В итоге все они возвращают первый элемент, который решает исход заявления. (В худшем случае последний элемент в последовательности)

Обратите внимание, что это правило также применяется к прикованным всем «и» или всем «или» операторам

0
ответ дан Zhenhua 1 September 2018 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: