अक्सर यह कहा जाता है कि RPython (पायथन का सबसेट) स्थिर रूप से टाइप किया गया है। (Wikipedia पर 0)आरपीथॉन में स्थिर रूप से टाइप किया गया क्या है?
प्रारंभ में, मुझे आश्चर्य हुआ कि वे इसे पायथन में कैसे जोड़ देंगे और सोचा था कि उन्होंने प्रत्येक समारोह की शुरुआत में assert isinstance(arg1, ...)
जैसे बयान जोड़ने की आवश्यकता को जोड़ा होगा (लेकिन मैं वास्तव में विश्वास नहीं कर सका उस)।
फिर मैंने कुछ RPython कोड को देखा और यह वास्तव में स्थिर रूप से टाइप नहीं किया गया है। कई मामलों में, यह हो सकता है कि संकलक साबित कर सके कि एक फ़ंक्शन तर्क केवल कुछ प्रकार के हो सकता है लेकिन निश्चित रूप से सभी मामलों में नहीं।
जैसे, इस string.split
की RPython दिया गया है:
def split(value, by, maxsplit=-1):
bylen = len(by)
if bylen == 0:
raise ValueError("empty separator")
res = []
start = 0
while maxsplit != 0:
next = value.find(by, start)
if next < 0:
break
res.append(value[start:next])
start = next + bylen
maxsplit -= 1 # NB. if it's already < 0, it stays < 0
res.append(value[start:len(value)])
return res
RPython के बारे में PyPy प्रलेखन में यह कहा गया है: "चर ज़्यादा से ज़्यादा एक प्रकार का मान होने चाहिए"।
तो, फ़ंक्शन तर्क भी चर के रूप में गिना जाता है? या किस अर्थ में RPython स्थिर रूप से टाइप किया गया है? या यह वास्तव में गलत है?
http://codespeak.net/pypy/dist/pypy/doc/translation.html –