Ben C programcısıyım. Python'da yeniyim. C'de, bir ikili ağaç düğümünün yapısını tanımladığımızda, sağ ve sol çocuğuna NULL atarız:
struct node
{
int val;
struct node *right ;
struct node *left ;
};
Ve bir düğümü başlatırken , olarak yazarız:
val = some_value
right = NULL;
left = NULL;
Şimdi sorum şu: Python'da düğümün sağ ve sol işaretçilerine nasıl NULL değeri atayabiliriz?
Ve NULL'un Python sürümüne karşı nasıl test edebiliriz? C'de şöyle olurdu:
if( ptr->right == NULL )
Teşekkür ederim!
Python'daki tüm nesneler referanslar aracılığıyla uygulanır, bu nedenle nesneler ve nesnelere işaretçiler arasındaki ayrım kaynak kodda mevcut değildir.
NULLun python karşılığı
None` olarak adlandırılır (iyi bilgi burada). Python'daki tüm nesneler referanslar aracılığıyla uygulandığından, yapınızı aşağıdaki gibi görünecek şekilde yeniden yazabilirsiniz:
class Node:
def __init__(self): #object initializer to set attributes (fields)
self.val = 0
self.right = None
self.left = None
Ve sonra beklediğiniz gibi çalışır:
node = Node()
node.val = some_val #always use . as everything is a reference and -> is not used
node.left = Node()
Cdeki
NULLdan farklı olarak,
Nonebir "hiçbir yere" işaretçi değildir: aslında
class NoneTypeın tek örneğidir. Bu nedenle,
None` normal bir nesne olduğundan, onu diğer nesneler gibi test edebilirsiniz:
if node.left == None:
print("The left node is None/Null.")
Her ne kadar None
tekil bir örnek olsa da, is
kullanmak ve referans eşitliği için karşılaştırmak daha deyimsel olarak kabul edilir:
if node.left is None:
print("The left node is None/Null.")
left = None
left is None #evaluates to True