As wim notes, sen ancak, açma argüman ile yapabilirdi, işe yaramazdı; 255 açıkça verilen bireysel argümanların bir sınırı vardır.
Gösterme:
>>> globals().update(('x{}'.format(i), i) for i in range(8000))
>>> codestr = '("{{}}"*8000).format({})'.format(', '.join('x{}'.format(i) for i in range(8000)))
>>> eval(codestr)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
SyntaxError: more than 255 arguments
sınır CALL_FUNCTION
işlem kodu nasıl tanımlandığı kaynaklanmaktadır; opcode'u belirten tek bir bayt olarak kodlanır, sonra konumsal argümanların sayısı için bir bayt ve bir tane de anahtar kelime argümanlarının sayısı için kodlanır. Teoride, 510'a kadar toplam argümanı ele alabilirken, aslında tutarlılık için muhtemelen 255 argümanını bir araya getiriyorlar. Yani, aslında *
veya **
paketini açmadan 255'ten fazla toplam argümanla bir işlevi arayamazsınız.
Teknik olarak bir uygulama detayı olan BTW; Bu şekilde çalışacak herhangi bir dil şartı yoktur, bu yüzden gelecekte CPython'un (referans tercümanı) serbest bırakılmasıyla değişebilir ve diğer tercümanlarda farklı şekilde davranır (birçoğu şu anda CPython bayt kodu üretmez veya kullanmaz).
Tam olarak ne yapmaya çalışıyorsunuz? Çünkü bu tam kodla, elle 8000 kez bir şeyler yazmak istediğinize benziyor. Yapmaya çalıştığınız şeyi yapmak için kesinlikle daha kolay bir yol olacaktır. – idjaw
"Biçim" in yapıp yapamayacağını (oldukça emin olabilir), bu "biçim" için bir işe benzemez. Ayrıca, ciddi olarak 8000 numaralı değişkenler var mı? – user2357112
Bir sınır yoktur, ancak bunu yapmak zorunda kalmak son derece tavsiye edilmez, çünkü okumak ve sürdürmek çok çirkin olacaktır. Dosyanıza 8000 öğeyi manuel olarak tanıtmak ve her şeyi bir kerede yazmak yerine, satır satır satır yazmak daha iyidir. –