본문 바로가기

CS/Python35

[python] python에서 사용하는 점 3개( ... )의 의미 Python code를 보다보면 점 세개를 연이어 사용하는 코드를 보게된다. 그냥 이런 동작을 하는구나 정도로 이해할 수 있지만 그래도 조금은 더 알아보기 위해서 이번 포스팅을 작성했다. What is it? ... 은 뭔가? 일단 print를 한번 찍어봤다. >>> print(...) Ellipsis >>> Ellipsis 가 출력되는데 그럼 Ellipsis는 뭔가? 사전적 의미로는 생략, 생략부호(...) 이다. 그냥 말 그대로 쩜쩜쩜... 이다. Python에서의 생략부호에 대한 설명은 다음과 같다. The same as the ellipsis literal “...”. Special value used mostly in conjunction with extended slicing syntax fo.. 2021. 12. 12.
[python/string] 문자열 앞 f, r 의 의미 - formatter string과 raw string python으로 작성 된 코드를 보다보면 string 앞에 r 또는 f 가 붙어있는 경우가 있다. 특수한 목적을 위해 사용하는 표현식인데, 우선 f 를 먼저 보자 Formatted string literals 본론부터 말하자면 string 앞 f 는 formatted string 리터럴 을 의미한다. python 3.6 에서부터 사용되기 시작했으며 이전에는 .format 같은 방식으로 사용해 왔었다. formatted string literals 는 아래 코드 예시처럼 사용 가능하다. >>> a = 1 >>> b = 2 >>> fs = f"{a} is a, {b} is b" >>> print(fs) 그러면 출력은 어떻게 나올까? 아래처럼 실제 값을 대입해서 보여준다. 참고삼아 예전에는 이런 방식으로 사용.. 2021. 11. 19.
[python] positional argument 의 개념, 의미 Overview python 문서를 보다보면 positional argument 라는 단어를 많이 접하게 된다. 인자인 것은 알겠는데, 의미가 무엇인지 알아보자. Positional arguments Positional argument의 정의는 다음과 같다. 위치 인자 (positional argument): 키워드 인자가 아닌 인자. 위치 인자들은 인자 목록의 처음에 나오거나 이터러블 의 앞에 * 를 붙여 전달할 수 있다. 예를 들어, 다음과 같은 호출에서 3 과 5 는 모두 위치 인자다. (출처 : python docs ) complex(3, 5) complex(*(3, 5)) 아래는 python3 의 용어집이다. 다른 용어들도 많으니 많은 도움이 될 것이라 생각한다. https://docs.pyth.. 2021. 11. 17.
[python] string object의 count 함수 사용 시 주의사항 Overview 오늘 포스팅은 코드리뷰를 진행하면서 몇 차례 피드백을 받았던 내용을 다루고자 한다. 조금 더 섬세하게, 깊이 생각했다면 이런 부분까지 놓치지 않았을 부분인데, 종종 마음이 급할 때 이런 부분을 놓치는 것 같다. 테스트 코드를 작성하는 과정에서 python unit test 에서 string의 count 내장함수를 통한 결과 확인이 필요했고, 그 확인하는 과정에서의 경험을 나누고자 한다. 아래 내용은 비단, python 에 만 한정되어 적용되는 내용이 아니며, 모든 코드에서 이런 로직은 조심해야 할 내용이다. What's count? count 는 단순하다. python 에서 iterable 한 자료형에서 특정 항목의 갯수를 파악해 주는 내장함수다. 다만, 오늘 얘기하고자 하는 내용은 st.. 2021. 11. 14.
[python] map 함수(map function) 의 사용방법 및 예시 오늘 정리해 볼 주제는 map 함수이다. 최근 tabulate 를 사용하면서 일부 코드수정이 필요했었는데, 다시한번 정리 차원에서 포스팅을 작성한다. 일단 map 은 언제 사용해야 할까? 기능 자체는 iterable 자료형에 담겨있는 값을 특정 함수에 적용하는 것이다. Return an iterator that applies function to every item of iterable, yielding the results. 나는 아래와 같은 경우에, map 함수를 적극 활용했으며, 코드 예시를 보면 어떻게 사용하는지에 대한 느낌이 올 것이다. 1. 리스트에 있는 모든 값을 string으로 변경하고 싶을 때. 2. 리스트 안에 있는 값으로 로그 메시지를 만들어 보고 싶을 때. 내가 사용했던 케이스 중에.. 2021. 11. 13.
[python] 오류출력은 에러로 보내주세요 ! - print 함수의 출력을 stderr 로 보내기 코드 리뷰를 하다 보면 너무나 자주 받는 피드백이 있다. "에러에 대한 print는 stderr로 보내달라." 사실 이제 자연스럽게 할 법도 한데 습관이라는 게 참 만들기가 힘들다. 왜 stderr로 보내야할까? 라는 의구심이 들 수 있다. '그냥 stdout으로 출력하면 어쨋든 볼 수 있는데?' 나는 이런 의구심에 대한 답변을 아래와 같이 할 것 같다. "에러 로그는 따로 남길거에요, 같이 보면 디버깅하기 힘들거든요" 뭐 이것 말고도 다른 이유가 참 많을 거라고 생각이 된다. 다른 모듈에서 호출하는 경우에 stdout 과 stderr를 구분해서 출력하는 함수가 있다면, 일반적인 stdout에 에러 메시지들 까지 호출되어 버린다던가.. 아니면.. 어떤 사람은 파이프를 이용해 stderr만 뽑아내는데 에러.. 2021. 10. 6.
[python] python에서 객체를 string으로 출력하는 방법 Python 에서 class 를 사용하는 일은 정말 많을테고, 이를 출력해 줘야 할 때가 있을텐데 이럴 때 __str__ 메서드를 사용하면 좋습니다. 사실 출력이 더 쉬워진다고 말하기는 어렵지만, 그래도 개발하는 사람들은 str () 을 사용할 수 있기를 기대할 거에요. 그닥 기대가 없는 분들도 많겠지만.. 저는 출력을 해야하는 상황이라면 있었으면 좋겠다 라는 생각이 들곤 했습니다. 그럴 때, 원하는 object에 __str__ 메서드를 구현 함으로써 아래와 같은 결과를 얻을 수 있습니다. class apple: def __init__(s): s.color = 'red' s.size = 'medium' s.price = 5000 def __str__(s): return ( "color:" + s.colo.. 2021. 10. 4.
[Python] String List 내용 문자열(string) 만드는 방법 - join 함수 매일 쓰는 내용이라 더 이상 찾고싶지 않아서 쓰는 글입니다. List 에 string을 보관하게 되는 경우가 많은데, 이럴 떄 밥먹듯이 쓰는 함수가 있습니다. 그것은 바로 join 일단 공신력 있는 레퍼런스를 보고 가시죠. 그냥 사용법만 보고싶으시면 skip해도 무관합니다. https://docs.python.org/3/library/stdtypes.html#str.join Built-in Types — Python 3.9.7 documentation The following sections describe the standard types that are built into the interpreter. The principal built-in types are numerics, sequences, m.. 2021. 10. 1.
[Python unittest] Python 으로 Unit test 만드는 방법 2 - assert 종류 Python unittest 는 값을 검사하고 실패를 확인하기 위해 몇가지 assert 메서드를 제공한다. Version마다 assert 메서드 차이가 존재하는데, 이 부분은 사용 전 반드시 고려되어야 할 것이다. 메서드 검사내용 Version assertEqual(a, b) a == b assertNotEqual(a, b) a != b assertTrue(x) bool(x) is True assertFalse(x) bool(x) is False assertIs(a, b) a is b 3.1 assertIsNot(a, b) a is not b 3.1 assertIsNone(x) x is None 3.1 assertIsNotNone(x) x is not None 3.1 assertIn(a, b) a in .. 2021. 7. 26.
[Python unittest] Python 으로 Unit test 만드는 방법 1 unittest 개요 현재 작업하는 프로젝트에서 python 테스트를 위해 unittest 를 적극 활용하고 있다. 이번에는 간단히 사용방법에 대해서만 정리하고, 작성하면서 겪는 문제점이나 고려해볼만한 사항들은 추후 지속적으로 정리할 예정이다. 자세한 사용 방법은 아래 URL을 참고해 봐도 좋을 것 같다. https://docs.python.org/ko/3/library/unittest.html unittest — 단위 테스트 프레임워크 — Python 3.9.6 문서 unittest — 단위 테스트 프레임워크 소스 코드: Lib/unittest/__init__.py (당신이 이미 테스트 기본 개념에 친숙하다면, assert 메서드 목록으로 건너뛰어도 좋습니다.) unittest 단위 테스트 프레임워크는.. 2021. 7. 20.
Python 개행문자 지우는 방법, strip 과 replace 개요 Python 으로 아래처럼 hostfile을 읽어서 특정 조건에 맞는 값만 새롭게 파일을 쓰는 코드를 만들었는데, 새로 쓰는 파일에는 개행이 아니라 한 라인에 스페이스로 구분을 둬야 했다. 그래서 파일을 읽고 개행문자를 지우는 코드를 작성하게 되어서 기록을 남긴다. 기존 코드 hostfile 호스트 이름이 나열되어 있다. 실제 호스트는 이렇게 이름짓지 않는다. 그저 예시일 뿐이다. t1 t2 t3 t4 c3 c4 c5 python code import os with open("hostfile", "r") as f: lines = f.readlines() with open( "newhost", "w" ) as nf: for l in lines: if 't' in l: nf.write( l ) 파일을 .. 2021. 7. 8.
[Python] 파이썬 문자열 나누는 방법 - 슬라이싱 슬라이싱을 좀 더 다양한 방법으로 해보자. >>> a = "abcdefg" >>> a[:3] 'abc' >>> a[3:] 'defg' >>> a[3:-1] 'def' >>> a[3:-2] 'de' >>> a[3:-3] 'd' >>> a[3:-4] '' >>> a[3:-5] '' 슬라이싱을 사용할 때 좌측에 인덱스를 입력하지 않으면 처음부터 시작하게 되고, 우측에 입력하지 않으면 끝을 의미하게 된다. 2021. 6. 8.
[Python] 문자열 길이구하기, 문자열 잘라내기 문자열 길이구하기 파이썬에서 문자열 구하기는 아주 간단하다. 기본적으로 내장함수를 제공하며 사용 방법은 아래와 같다. >>> a = "I'm groot." >>> len(a) 10 a의 문자열 (공백포함) 이 10 자리임을 아주 쉽게 구할 수 있다! 문자열 잘라내기 파이썬에서 문자열을 잘라내기 위해서는 슬라이싱(Slicing)이라는 기술을 사용해야 한다. 기술이라 하자니 조금 거창하긴 하지만... 아무튼 그렇다. 슬라이싱을 시작하기 전에 인덱싱이라는 개념을 먼저 알고가자. 인덱스란 색인을 의미하는데 특정 위치를 가리키는 것을 의미한다. 아래 코드 예시가 바로 인덱싱이다. >>> a = "abcdefg" >>> a[0] 'a' >>> a[1] 'b' >>> a[2] 'c' >>> a[3] 'd' a 라는 .. 2021. 6. 8.
[Python] 파이썬 문자열 연산 - 더하기 곱하기 및 응용 파이썬 문자열은 문자열 끼리 더하거나 특정 문자열을 필요한 개수만큼 곱할 수 있다. 문자열 더하기 (연결하기) 덧셈 연산을 이용해서 문자열을 연결 가능하다. >>> a = "Hello" >>> b = "World" >>> a + b 'HelloWorld' 문자열 곱하기 문자열 곱하기 연산은 곱한 갯수만큼 해당 문자를 출력해준다. 아래 예시를 보면 어떻게 사용 가능한지 알 수 있다. >>> a="="*10 >>> a '==========' >>> print ( a + "comment" + a ) ==========comment========== >>> print ( a + "\ncomment\n" + a ) ========== comment ========== 문자열 빼기 문자열 빼기연산을 하면 어떻게 될.. 2021. 6. 8.
[Python] 파이썬 자료형 - 문자열 2 ( 여러 줄 문자열 변수에 대입하기 ) 문자열을 사용할 떄 문장이 길어져 여러줄을 사용해야 하는 경우가 발생한다. 이런 경우에 아래와 같은 방법을 사용하면 된다 1. Escape code '\n' 삽입 2. 작은 따옴표 3개 또는 큰 따옴표 3개 사용 2021. 5. 23.