2013-06-04 14 views
62

これらの2つの間に相違はありますか?どちらを使うべきなのですか?これらの1つは推奨されていませんか?彼らはまったく同じ機能を持っているようです。os.getenvとos.environ.getの違いは?

>>> os.getenv('TERM') 
'xterm' 
>>> os.environ.get('TERM') 
'xterm' 

>>> os.getenv('FOOBAR', "not found") == "not found" 
True 
>>> os.environ.get('FOOBAR', "not found") == "not found" 
True 

答えて

25

一つの違い:環境変数が存在しない場合は

os.environは、例外が発生します。 os.getenvは、例外を発生させますが、iPythonでのPython 2.7ではどれ

+18

OPは 'None'を返す' os.environ.get() 'について質問します(違いを指定しない限り)。env。 var。存在しません。あなたの混乱していることを 'os.environ ['TERM']'を使って疑問にしないでください。 – Anthon

35

this related threadを参照してください。基本的には、インポート時にos.environが見つかり、os.getenvは少なくともCPythonではos.environ.getのラッパーです。

EDIT:コメントに応答するには、CPythonでos.getenvは基本的にos.environ.getへのショートカットです。 os.environがインポート時にosにロードされているので、それだけが os.getenvで同じです。 (Python27)観察

10

を返しません。

>>> import os 
>>> os.getenv?? 
Signature: os.getenv(key, default=None) 
Source: 
def getenv(key, default=None): 
    """Get an environment variable, return None if it doesn't exist. 
    The optional second argument can specify an alternate default.""" 
    return environ.get(key, default) 
File:  ~/venv/lib/python2.7/os.py 
Type:  function 

だから我々はos.getenvos.environ.getの周りだけの単純なラッパーであると結論することができます。

関連する問題