, sen sonunda göreceksiniz:Python: `Bir modülde izin verilmez return` nedeninden modüllerden derlenen Python bayt bakarsak
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
yani Bir return
, bir modülün kök seviyesinde mükemmel şekilde geçerlidir. Ancak, kaynak kodda kullanmaya çalışırsanız, aşağıdakileri elde edersiniz:
SyntaxError: 'return' outside function
Neden?
Bu elbette bir dil tasarımı kararıdır. Ama neden alındı? Bir modülde return
genellikle oldukça kullanışlıdır. Örneğin. Bazen bir modülün başında bu kodu yazmak istiyorum:
import sys
if sys.platform != "linux2":
print "your platform is not yet supported"
# define some stubs
def foo(): pass
def bar(): pass
return
Ve (ben istemiyorum modül değil yükleme neden olur çünkü) orada bir istisna yükseltmek istemiyoruz.
Aslında anında Python bytecode manipüle ve sadece geri dönüşü yapmak (ya da iade yapılır sonuna kadar benim durumda atlamada) hangi birlikte bazı kodlar sızdı. Bu çalışıyor. Sadece CPython'un tek nedeni, bir kod nesnesini işlemek için standart bir yol olmamasıdır. Kod,
Here kodudur. olası cevapları için
: Ben gerçek kanıt tercih ediyorum, bu konuda ya da öylesine Guido van Rossum bazı geçmiş tablolar, çok değil sadece herhangi bir rasgele tartışması. Tabi ki bu, hem avantajlar (hem de sunulanlar gibi) ve dezavantajlarım olabilir ama ben buna karşı büyük bir sebep görmüyorum.
neden bir istisna oluşturmadınız? Bu, yürütmeyi durdurup istisnai durumun dinlenmesi için arayanın neden olduğu hakkında bilgi döndürür. –
@JoranBeasley: Modülü yüklemez. Hala modülü yüklemek istediğim durumlar hakkında konuşuyorum. – Albert
daha sonra kullanıcının alabileceği ayrı bir modül var ... eğer desteklenmiyorsa desteklenmemesi gerekiyorsa ... '__init __. Py' yapabilmeniz için şunu deneyin: import no_linux2; hariç: no_linux2' –