LoginSignup
2
2

More than 5 years have passed since last update.

pythonで環境変数を取得するとstring型なので、booleanぽくFalseと環境変数に格納してもif文でTrueとなる

Posted at

はじめに

環境変数を取得すると、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を格納する際は気をつけましょう。
いや、格納しないほうがいいんじゃないか。ということでした。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2