반응형
main() 함수를 사용하는 주된 이유는 코드의 모듈화와 가독성을 높이기 위함입니다. 
main() 함수는 보통 코드의 진입점(entry point)으로 사용되어 프로그램이 시작되는 지점을 나타냅니다.

 

다음은 main() 함수를 사용하는 몇 가지 이유입니다.


1. 모듈화

main() 함수를 사용하면 코드를 논리적인 단위로 나눌 수 있습니다.

프로그램이 여러 모듈로 나누어져 있을 때, 각 모듈은 자체의 기능을 수행하고 main() 함수는 이러한 모듈들을 통합하여 프로그램을 시작합니다.

 

2. 가독성

코드가 main() 함수를 포함하면 코드의 구조가 명확해지고 가독성이 향상됩니다.

코드를 처음 읽는 사람은 main() 함수가 프로그램의 시작점임을 쉽게 파악할 수 있습니다.

 

3. 재사용성

main() 함수는 여러 부분에서 호출될 수 있습니다. 

예를 들어, 다른 프로그램이나 스크립트에서 main() 함수를 임포트하여 활용할 수 있습니다.

4. 테스트 용이성

main() 함수를 사용하면 테스트하기가 더 쉽습니다.

if __name__ == "__main__": 구문을 활용하여 프로그램이 스크립트로 실행될 때만 특정 코드 블록이 실행되도록 할 수 있습니다.

 

def main():
    # 프로그램의 메인 로직

if __name__ == "__main__":
    main()

 

위 코드와 같은 구조를 사용하면 모듈이 다른 프로그램에 임포트될 때 메인 로직이 실행되지 않아 모듈을 테스트하기가 용이해집니다.

요약하면, main() 함수를 사용하면 코드를 구조화하고, 가독성을 높이며, 재사용성과 테스트 용이성을 향상시킬 수 있습니다.

 

 

 

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형
파이썬에서 문자열을 출력할 때 ' + '와 ' , '와는 차이점이 있습니다.
문자열을 하나로 결합하느냐, 한 줄에 출력하느냐의 차이입니다.

 

1. ' + ' 연산자

  • + 연산자를 사용하면 문자열을 연결할 수 있습니다.
  • 두 개의 문자열을 결합하여 하나의 새로운 문자열을 생성합니다.
  • 문자열과 변수를 결합할 때도 마찬가지 입니다.
# test.py

name = "우기"
age = 25
print("내 이름은 " + name + " 이고 나이는 " + str(age) + "살 입니다.")

'''
( 실행 결과 )
$ python test.py
내 이름은 우기이고 나이는 25살 입니다.
'''

 

 

2. ' , '  콤마

  • 여러 개의 값을 한 줄에 출력해 줍니다.
  • 콤마로 구분된 각각의 문자열이나 변수 값사이에 공백이 추가 됩니다.
# test.py

name = "우기"
age = 25
print("내 이름은 ", name, " 이고 나이는 ", str(age), "살 입니다.")

'''
( 실행 결과 )
$ python test.py
내 이름은  우기  이고 나이는  25 살 입니다.
'''

 

둘 다 모두 문자열을 출력하는 방법이지만 '+'를 사용하면 문자열을 명시적으로 결합하고, ','콤마를 사용하면 자동으로 구분된 형태로 출력됩니다.

 





반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

파이썬 코드를 보면 다음과 같은 코드를 자주 보게 됩니다.

if __name__ == "__main__":

 

__name__이란 모듈(module)의 이름(파일 이름)을 저장하는 파이썬의 내장 변수 입니다.
__main__ 은 최상위 모듈, 즉 현재 실행되는 스크립트를 나타내는 이름입니다. 파일의 이름과 상관없이 제일 처음 실행되는 파일의 모듈 이름은 __main__입니다.
따라서 위의 코드는 모들의 이름이 __main__이면, 즉 if문의 조건이 참(True)이면 if문에 코딩한 내용을 실행하게 됩니다.
즉 현재 스크립트로 실행되는지, 아니면 다름 스크립트의 모듈로 임포트되어 사용되는지를 판단하는 데 사용됩니다.

 

예제를 통해 자세히 알아 보겠습니다.

#  woo.py

def add(a, b):
    print('이 함수는 woo모듈의 add함수 입니다.')
    return a + b
    
# __name__ 변수 출력
print('모듈 이름:', __name__) 

# 이 모듈이 최상위 모듈이면 add( )함수를 실행
if __name__ == '__main__':
    print(add(1, 2))

'''
( 실행 결과 )
$ python woo.py
모듈 이름: __main__
이 함수는 woo모듈의 add함수 입니다.
3
'''

현재 woo.py 모듈만 있고, 따라서 이 모듈이 main이기 때문에 if문 안에 있는 foo( )함수가 실행됩니다.

 

이제 다른 모듈에서 woo모듈을 호출해서 사용해 보겠습니다.

#  boo.py

import woo # woo모듈을 가져 옵니다.

# __name__ 변수 출력
print('모듈 이름:', __name__) 

def sub(a, b):
    print('이 함수는 boo모듈의 sub함수 입니다.')
    return a - b

if __name__ == "__main__": # 이 파일이 시작점일 때만 아래 코드를 실행
    print(woo.add(5, 2))
    print(sub(5, 2))

'''
( 실행 결과 )
$ python boo.py
모듈 이름: woo
모듈 이름: __main__
이 함수는 woo모듈의 add함수 입니다.
7
이 함수는 boo모듈의 sub함수 입니다.
3
'''

woo.py는 boo.py에 import해서 사용하기 때문에 더이상 __main__이 아닙니다.

따라서 모듈이름 woo가 출력됩니다.

반면 지금 실행한 boo.py는 최상위 모듈이기 때문에 모듈 이름은 __main__으로 출력됩니다.

그리고 if문의 조건이 만족하기 때문에 woo.add( )와 sub( )함수 모두 실행 됩니다.

 

__name__ 과 __main__

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형
파일을 원하는 위치부터 원하는 만큼만 읽고 싶을 때 쓰는 메소드입니다.

 

이렇게 읽어 들이 파일을 이용하여 원하는 지점 부터 원하는 만큼 출력할 수 있습니다.

seek( offset [, whence] )

  • offset : 파일 내의 읽기/쓰기 포인터( 커서 )의 위치입니다.
  • whence : 포인터( 커서 )이동의 기준점입니다.
    - 기본값은 0이며 생략할 수 있습니다.
    - 0(기본값)은 파일의 처음을 의미 합니다.
    - 1은 현재 파일의 포인터(커서) 위치를 의미 합니다.
    - 2는 파일의 끝을 의미합니다.

  * [ ] 대괄호 안의 whence는 생략할 수 있습니다.

 

우선 파일을 읽어 객체를 생성합니다.

# test.txt파일을 읽기 모드로 읽어서 foo에 보관합니다.
# test.txt의 내용은 '0123456789 abcdefghi'라고 가정합니다.(20바이트)
foo = open( 'test.txt' , mode='r', encoding='utf-8' )

# 만일 파일의 맨 뒤에서 읽어오려면 파일을 바이너리 모드로 읽어와야 합니다.
# 이때 인코딩은 하지 않습니다.
foo = open( 'test.txt' , mode='rb' )

 

 

import re

# 텍스트 모드로 읽을 때
# foo = open( 'test.txt', mode='r', encoding='utf-8' )

# 바이너리 모드로 읽을 때
foo = open( 'test.txt', mode='rb')
bar = foo.read()
print(bar)
# 출력 텍스트 모드: 0123456789 abcdefghi
# 출력 바이너리 모드: b'0123456789 abcdefghi'

# whence는 생략 되었기 때문에 커서는 처음부터 3글자를 이동한 후에 2글자를 읽어 들입니다.
foo.seek(3)
foobar = foo.read(2)
print(foobar) 
# 출력 텍스트 모드: 34
# 출력 바이너리 모드: b'34'

# 여기서 다시 읽으면 현재 커서의 위치가 5글자 다음에 위치 하기 때문에 그 다음 부터 읽어 들이게 됩니다.
foobar = foo.read(3)
print(foobar) 
# 출력 텍스트 모드: 567
# 출력 바이너리 모드: b'567'

# 커서를 파일 맨뒤에서 5글자 앞(왼쪽)으로 간 후에 2글자를 읽어 옵니다.
# 여기서 주의할 점은 뒤에서 부터 읽어 들이려면, 파일을 가져 올때 바이너리 모드로 가져와야 합니다. mode='rb'
foo.seek(-5, 2)
foobar = foo.read(2)
print(foobar) 
# 출력 텍스트 모드: ef
# 출력 바이너리 모드: b'ef'

 

seek() 메소드 사용법

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,