2016-10-17 15 views
3

Я пытаюсь понять другой авторский код для написания парсера в проекте «NAND to Tetris», но не понимаю, что он имеет в виду при использовании операторов «<>», как показано в этом фрагменте кода. Я включил их конструктор для ссылки на функцию self.commands.Что означают операторы «<>» в Python?

def __init__(self,fname): 
    self.fname = fname 
    self.commands = open(fname, 'r').readlines() 
    self.cleanUp() 
. 
. 
. 

def hasMoreCommands(self): 
    """Return True if more commands to parse else return False""" 
    return self.commands <> [ ] 

Кажется, что это более простой способ определить, есть ли в коде больше строк. Это верно? Спасибо за любой вклад в этот вопрос! Пожалуйста, дайте мне знать, поможет ли дополнительная информация.

+2

Не равный, такой же, как '! ='. – AChampion

+0

Я думаю, что оно начиналось как «меньше или больше», подобно тому, как '<=' означает «меньше или равно». Но это делает его синонимом «не равным». –

ответ

6

В Python 2.x, <> такой же, как != но использование является устаревшим и не приветствуется в пользу более нового использования, который !=

Обратитесь к руководству по разделу Comparision

Так, return self.commands <> [ ] такое же как return self.commands != [ ] что означает, что self.commands не пустой список, который в соответствии с вашим строки документации

Возвращает True, если несколько команд, чтобы разобрать еще возвращать значение False

+1

Весь блок кода не является идиоматическим Python - если вы хотите проверить, является ли список пустым или нет, просто проверьте его как логическое. 'if self.commands:'. Пустые списки - 'False', непустые списки -' True'. –

+0

@PeterDeGlopper: Это отдельный аргумент, который я не сделал, я хочу отвлечься. – Abhijit

+0

Большое спасибо за ссылку и объяснение! Abhijit: Я буду отмечать ваш комментарий как ответ, когда это позволит мне! –