Sizin örnek dynamic yazarak, zayıf değil yazarak gösterir. Dinamik yazarak genel bir nesne saklayabilirsiniz veri tipi değişken olduğu anlamına gelir; herhangi bir hedef nesnenin her türlü bağlayıcı bir tutabilir. Kontrast ile, diyelim ki, statik olarak yazılır C #, [*].
int i = 5; // Okay.
i = "5"; // Illegal! i can only hold integers.
Güçlü yazarak bir kez belirli tür bir değer atanmış demektir, nesneler, çeşitli diğer nesnelerle etkileşim konusunda katı kurallara uymak. Zayıf yazarak gibi kurallar daha rahat olduğu anlamına gelir. Bu kesinlikle yazdığınız dilde herhangi bir şekilde mutlaka üstün olduğu anlamına gelmez; sadece bir dil tasarım seçimdir.
Python nesneleri olduklarını yazdıklarınız ayrı bir kavram var, çünkü güçlü yazılmış olarak kabul edilir. Nesneler arasındaki uyumsuz işlemler hatalara neden:
>>> 1 + 1 # Add two integers.
2
>>> "1" + "1" # Concatenate two strings.
'11'
>>> 1 + int("1") # Add two integers.
2
>>> "1" + str(1) # Concatenate two strings.
'11'
>>> 1 + "1" # Undefined! Adding integers and strings is meaningless.
Traceback (most recent call last):
File "", line 5, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Ama PHP, kurallar çok daha rahat kabul edilebilir ne üzeresiniz. Böylece bazı diğer dillere göre daha yazdığınız daha zayıf olarak kabul edilir.
$x = 1 + "1"; // x is 2
[*] Teknik, C # 4 gibi, C # statik olarak yazılan ama bir bağlama başına bazında opt-in dinamik yazarak, dynamic
anahtar kelime sayesinde. Dil bir sürü bu gün dinamik yetenekleri ekleyerek ve hatları bulanıklık, bu nedenle "dil X dinamik" ve "dil Y statik" olduğunu söylemek için giderek daha zor oluyor edilir. Bu ikili bir özellik daha bir skalaya veya bir yelpazenin çok daha fazla bulunuyor.