はじめに
環境変数を取得すると、string型なので、
booleanチックにif文を書いてしまうと、空白でなければすべてTrueになるというお話です。
実行環境
python : 3.6.0
以下やってみる
環境変数に``'True'`を格納
>>> import os
>>> os.environ['IBARAKIISGOOD'] = 'True'
>>> test = os.getenv('IBARAKIISGOOD')
>>> test
'True'
下記の通り、if文で判定すると、Trueとなる。
>>> def test_function(test):
... if test:
... print('test is true')
... else:
... print('test is false')
...
>>> test_function(test)
test is true
環境変数に``'False'`を格納
環境変数に``'False'`を格納して、if文で判定すると、Trueとなってしまった!
>>> os.environ['IBARAKIISGOOD'] = 'False'
>>> test = os.getenv('IBARAKIISGOOD')
>>> test
'False'
>>> test_function(test)
test is true
>>>
茨城はやはりいいところであると判定してくれた!
環境変数に空白を格納
環境変数に空白を格納して判定してみると、falseになった。
>>> os.environ['IBARAKIISGOOD'] = ''
>>> test = os.getenv('IBARAKIISGOOD')
>>> test
''
>>> test_function(test)
test is false
さいごに
以上の結果は、冒頭に記述した通り、環境変数を取得した時の型がstringだったからでした。。
>>> isinstance(test, str)
True
環境変数にTrue, Falseを格納する際は気をつけましょう。
いや、格納しないほうがいいんじゃないか。ということでした。