# dataProject/data_integrity/test.py

print(f'__name__: {__name__}')

python3 data_integrity/test.py   # __name__: __main__

>>> import data_integrity.test   # __name__: data_integrity.test
def main ():
    print("Hello World")

if __name__ == '__main__':
    main()

이걸 왜 하는가?

underscore _ = ‘don’t use me’ 처럼 하나의 약속인거임

if __name__ == '__main__': 는 it will run as a script 라는 뜻

efficient python code

double_num = [x*2 for x in *range*(5) if x % 2 == 0]

Python Built-In

types : list, tuple, set, dict

functions : print, len, range, round, enumerate, map, zip, filter, type

modules : os, sys, itertools, collections, math

letters = ['a', 'b', 'c']
list(enumerate(letters, start=5))  
#[(5, 'a'), (6, 'b'), (7, 'c')]
a_list = list(range(5))
b_list = map(lambda x : x**2, a_list)
print(list(b_list))    # or [*b_list]
# [0, 1, 4, 9, 16]
# unpack the range object using *
nums_list2 = [*range(1,12,2)]
print(nums_list2) 
# [1, 3, 5, 7, 9, 11]

names = ['A', 'B', 'C', 'D', 'E']
indexed_names_comp = [(i,name) for i,name in enumerate(names)]
# [(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D'), (4, 'E')]

indexed_names_unpack = [*enumerate(names, start=1)]
# [(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E')]

np.array 는 data type이 같기 때문에 overhead가 적다. Requiring all elements be the same type eliminates the overhead needed for data type checking.

Code Profiling