Подтвердить что ты не робот

Как назначить значение NULL указателю в python?

Я программист. Я новичок в python. В C, когда мы определяем структуру двоичного дерева node, мы назначаем NULL ему правое и левое дочерние элементы как:

struct node 
{
    int val;  
    struct node *right ;  
    struct node *left ;  
};   

И при инициализации node, мы пишем как:

val = some_value  
right = NULL;  
left = NULL;  

Теперь мой вопрос: как мы можем присвоить значение NULL правым и левым указателям node в Python?

И как мы можем протестировать версию NULL Python? В C это будет:

if( ptr->right == NULL )

Спасибо!

4b9b3361

Ответ 1

Все объекты в Python реализованы с помощью ссылок, поэтому в исходном коде нет различия между объектами и указателями на объекты.

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

class Node:
    def __init__(self): #object initializer to set attributes (fields)
        self.val = 0
        self.right = None
        self.left = None

А потом все работает так, как и следовало ожидать:

node = Node()
node.val = some_val #always use . as everything is a reference and -> is not used
node.left = Node()

Обратите внимание, что в отличие от NULL в C, None не является "указателем в никуда": это фактически единственный экземпляр class NoneType. Поэтому, поскольку None является обычным объектом, вы можете проверить его, как и любой другой объект:

if node.left == None:
   print("The left node is None/Null.")

Хотя None является одноэлементным экземпляром, считается более идиоматичным использовать is и сравнивать по ссылочному равенству:

if node.left is None:
   print("The left node is None/Null.")

Ответ 2

Обычно вы можете использовать None, но вы также можете использовать objc.NULL, например.

import objc
val = objc.NULL

Особенно полезно при работе с C-кодом в Python.

Также см.: Примеры python objc.NULL

Ответ 3

left = None

left is None #evaluates to True