파이썬 True 의 실체

(bionic)soyeomul@localhost:~/test$ cat 1.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

if True == 0:
	print("True is 0")
elif True == 1:
	print("True is 1")
else:
	print("i don't know what True is")



(bionic)soyeomul@localhost:~/test$ ls -l 1.py
-rwxrwxr-x. 1 soyeomul soyeomul 160 7월 8 11:13 1.py
(bionic)soyeomul@localhost:~/test$ ./1.py
True is 1
(bionic)soyeomul@localhost:~/test$

[ibus-hangul(서라운딩 패치판)에서 작성했씁니다]

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

if True:
        print("조건문은 참(True)입니다.")
else:
        print("조건문은 거짓(False)입니다.")



(bionic)soyeomul@localhost:~/test$ ./1.py
조건문은 참(True)입니다.

[ibus-hangul(서라운딩 패치판)에서 작성했씁니다]
[ibus-hangul(서라운딩 패치판)에서 오타 수정했습니다 – 코드 첫줄 쉐방선언부에 오타가 있었씁니다]

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys

def f(x):
	return True

fvar = f(sys.argv[0])
print(repr(fvar))
print(type(fvar))

print('------')

def g(x):
	return 'True'

gvar = g(sys.argv[0])
print(repr(gvar))
print(type(gvar))



(bionic)soyeomul@localhost:~/test$ ./1.py
True
<class ‘bool’>

‘True’
<class ‘str’>

[ibus-hangul(서라운딩 패치판)에서 작성했씁니다]

(bionic)soyeomul@localhost:~/test$ cat 2.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys

"""
윤년 산법 출처: 
<https://kama1204.tistory.com/entry/%EC%9C%A4%EB%85%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8>

- 4로 나누어 떨어지는 년도는 윤년이다
- 그 중 100으로 나누어 떨어지는 년도는 윤년이 아니다
- 400으로 나누어 떨어지는 년도는 무조건 윤년이다
"""

def check_yun(year): # 윤년 확인 함수
    year = int(year)
    if year % 400 == 0:
        """400 배수는 무조건 윤년임"""
        return True
    elif year % 4 == 0 and not year % 100 == 0:
        """4의 배수중에서 100의 배수를 제외한 값은 윤년임"""
        return True
    else:
        return False

mycheck = check_yun(sys.argv[1])

print(mycheck)
print(type(mycheck))
    
# 편집: Emacs 26.2 (Ubuntu 18.04)
# 마지막 갱신: 2019년 7월 8일



(bionic)soyeomul@localhost:~/test$ ls -l 2.py
-rwxrwxr-x. 1 soyeomul soyeomul 865 7월 8 18:28 2.py
(bionic)soyeomul@localhost:~/test$ ./2.py 2000
True
<class ‘bool’>
(bionic)soyeomul@localhost:~/test$ ./2.py 2004
True
<class ‘bool’>
(bionic)soyeomul@localhost:~/test$ ./2.py 2100
False
<class ‘bool’>
(bionic)soyeomul@localhost:~/test$ ./2.py 2019
False
<class ‘bool’>
(bionic)soyeomul@localhost:~/test$

[ibus-hangul(서라운딩 패치판)에서 작성했습니다]

(bionic)soyeomul@localhost:~/test$ cat 3.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
윤년 산법 출처: 
<https://kama1204.tistory.com/entry/%EC%9C%A4%EB%85%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8>

- 4로 나누어 떨어지는 년도는 윤년이다
- 그 중 100으로 나누어 떨어지는 년도는 윤년이 아니다
- 400으로 나누어 떨어지는 년도는 무조건 윤년이다
"""

def check_yun(year): # 윤년 확인 함수
    year = int(year)
    if year % 400 == 0:
        """400 배수는 무조건 윤년임"""
        return True
    elif year % 4 == 0 and not year % 100 == 0:
        """4의 배수중에서 100의 배수를 제외한 값은 윤년임"""
        return True
    else:
        return False

"""1945년 일제로부터의 해방부터 2020년 한일전 총선까지"""
year_index = list(range(1945, 2021))

for year in year_index:
    if check_yun(year) == True: # 기간내 윤년만 출력
        print("{0}({1})".format(year, "윤년"))
        
# 편집: Emacs 26.2 (Ubuntu 18.04)
# 마지막 갱신: 2019년 7월 8일
(bionic)soyeomul@localhost:~/test$

[ibus-hangul(서라운딩 패치판)에서 작성했습니다]
스크린샷, 2019-07-08 19-26-23.jpg

(bionic)soyeomul@localhost:~/test$ cat 4.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import time

"""
Spinner taken from:
https://stackoverflow.com/questions/48854567/python-asynchronous-progress-spinner
"""

class mc:
	TRIGGER = True
	STRING = ["안녕하세요", "고맙습니다", "감사합니다"]

def thanks():
	while True:
		for str in mc.STRING:
			sys.stdout.write(str)
			sys.stdout.flush()
			time.sleep(0.5)
			sys.stdout.write("\b\b\b\b\b\b\b\b\b\b")
			if mc.TRIGGER:
				return

thanks() # 제동장치가 True 이므로 한번만 수행후 함수 *탈출(return)*

print("\n------")

mc.TRIGGER = False # 제동장치 해제

thanks() # 무한 순환/반복

# 편집: VIM (Ubuntu 18.04)
# 마지막 갱신: 2019년 7월 9일
(bionic)soyeomul@localhost:~/test$

Truereturn 과의 관계를 확인하고 싶었습니다…;;;

[ibus-hangul(서라운딩 패치판)에서 작성했씁니다]
[우분투 18.04 PEEK 으로 녹화한 GIF를 파일로 첨부했습니다]
[ibus-hangul(서라운딩 패치판)에서 내용을 몇차례 수정했습니다]
Peek 2019-07-09 20-05.gif

True 해설판(한글): https://wikidocs.net/17

True 를 이해하기가 정말 어렵습니다.
그래서 여러가지 테스트를 해봤습니다.
아직도 전 True 가 무엇인지 자세히 모르겠습니다.
그래도 전 True 를 알기위해 더 많은 노력을 기울이려합니다.

감사합니다^^^

소여물 황병희 드림

[ibus-hangul(서라운딩 패치판)에서 작성했습니다.]