Python'ın "from" anahtar kelimesi için import
ifadelerinden başka herhangi bir kullanımınız var mı?Python'un "from" anahtar sözcüğünün kullanımı?
cevap
Hayır ve evet.
official Python 2.7.2 grammar'a göre, from
kelimesinin tek oluşumu import_from
numaralı maddede yer almaktadır, bu nedenle hayır. Python 3.1.3 grammar yılında
raise_stmt: 'raise' [test ['from' test]]
görünen yeni fıkra, yani evet.
Python 2.x'te, from
'un yalnızca kullanımı from x import y
ifadesi içindir. Ancak, Python 3.x için, bu raise
açıklamada, örneğin birlikte kullanılabilir:
try:
raise Exception("test")
except Exception as e:
raise Exception("another exception") from e
aşağıdaki kullanım
from __future__ import some_feature
bir ithalat beyanı, söz dizimi ama yerine ithal modül, some_feature
değerine bağlı olarak yorumlayıcı davranışını bir şekilde değiştirir. Örneğin
, from __future__ import with_statement
with
açıklamada Python 2.6 kadar dile eklenmedi halde sen Python 2.5 Python'un with
deyimini kullanmasını sağlar. Kaynak dosyalarının ayrıştırılmasını değiştirdiğinden, kaynak dosyanın başında herhangi bir __future__
içe aktarması görünmelidir.
Daha fazla bilgi için __future__
statement documentation'a bakın.
__future__
ithalat listesi ve Python sürümleri için
__future__
module documentation bakınız.
Bunu başka bir sorunun cevabı olarak mı göndermek istediniz? Sadece tangentially bununla ilgili gibi görünüyor ... –
Aslında, '__future__' modülünden de ithal ediyor. –
@Karl: Hayır, yapmadım. Evet, '__future__' bir modüldür ve' __future__''dan içe aktarma bir import deyimidir. Ama benim amacım, gelecekten ithal etmenin sözdizimsel olarak diğer herhangi bir ithalat ile aynı olduğu zaman, * semantiğinin * bir vanilya ithalatından farklı olduğudur. Sadece diğer sembol isimlerini ithal etmek değil, aynı zamanda tercümanın davranışını da önemli ölçüde değiştiriyor. –
from
anahtar kelimeyi kullanır Python 3.3 yeni syntax for delegating to a subgenerator yoktur.
Bu tam olarak ne yapar? Orijinal istisna bir şekilde örtülü bir şekilde zincirlenmiş mi? Bu bana Pythonic görünmüyor; açıkça bir yapıcı parametresi olarak almak için daha iyi ... bu yüzden kesinlikle başka bir şey yapar? –
Şahsen hiç kullanmadım - Sadece var olduğunu biliyorum, ve doğrudan başka bir sebepten kaynaklanan bir istisnayı yükseltmek için tasarlanmıştır. – rfw