
Just STOP Using Python STRINGS Like This!
파이썬 문자열을 이렇게 사용하지 마세요!
이 글을 읽고나면 후회하지 않으실 겁니다!!!
코드에서 문자열을 사용하는 방법은 누구나 알고 있습니다. 하지만 대부분의 사람들은 이러한 문자열을 비효율적인 방식으로 사용합니다.
아마도 우리는 이 사실조차 깨닫지 못 할 것입니다. 2년 전만 해도 저도 그들 중 하나였습니다. 하지만 제 실수를 깨닫고 바로잡았습니다.
그리고 이를 배우면서 더 빠르고 깔끔하고 가독성 높은 코드를 작성하기 시작했습니다.
제가 저지른 실수와 그 실수를 고친 방법을 공유하고자 이 자리에 섰습니다. 여러분께 많은 도움이 되리라 생각합니다.

1. 루프(loop)에서 문자열 연결에 +를 사용하지 마세요
먼저 저는 문자열을 연결하기 위해 이렇게 작성하곤 했습니다.
result = ""
for i in range(6):
result += str(i)
print(result) # "012345"
하지만 이 방법은 느리고 비효율적이었습니다. 왜냐하면 파이썬에서 문자열은 불변이고 +=를 사용할 때마다 메모리에 새 문자열이 생성되기 때문입니다.
하지만 .join() 메서드를 사용하면 다음과 같이 연결할 수 있습니다.
result = [] # we are using a list
for i in range(6):
result.append(str(i))
print("".join(result))
이 방법은 "".join()이 모든 문자열을 한 번에 처리하므로 더 빠르고 효율적입니다.
2. 문자열 서식 지정에 format() 및 %를 사용하지 마세요
이 방법을 사용하여 문자열 서식을 지정하지 마세요. 두 가지 방법 모두 오래되고 오래된 방식입니다.
name = "kiran"
age = 24
print("My name is %s and I am %d years old." % (name, age)) # This is the Old way
print("My name is {} and I am {} years old.".format(name, age)) # This is slightly better but outdated
이제 이 작업을 더 빠르게 수행할 수 있는 방법이 있습니다. f-string을 사용하면 됩니다. 심지어 인라인 표현식도 지원합니다. 코드를 더 깔끔하고 가독성 있게 만들 수 있습니다.
print(f"My name is {name} and I am {age} years old.")

3. .split()을 사용하여 문자열의 일부를 추출하지 마세요
이전에는 문자열의 일부를 추출해야 할 때 이런 식으로 작성하곤 했습니다.
data = "kiran,24,Developer"
name = data.split(",")[0]
age = data.split(",")[1]
job = data.split(",")[2]
불필요하고 반복적인 분할로 인해 코드가 느려집니다.
그러다 더 나은 방법을 찾았습니다. 이 방법이 더 깔끔하고 효율적이라는 것을 알게 되었습니다.
name, age, job = data.split(",")

4. strip(), lower(), replace()를 따로 사용하지 마세요
먼저 다음과 같이 strip(), lower(), replace()를 각각 따로 작성합니다.
text = " Hello kiran "
cleaned = text.strip()
cleaned = cleaned.lower()
cleaned = cleaned.replace(" ", "_")
하지만 단 한 번의 패스로 이보다 더 나은 성능을 낼 수 있다고 생각했습니다. 그래서 저는 이를 위해 체인 방식을 사용했습니다.
cleaned = text.strip().lower().replace(" ", "_")
5. 하위 문자열을 수동으로 확인하지 마세요
먼저, 저는 이렇게 글을 썼습니다. '내 텍스트에서 어떤 하위 문자열을 찾고 싶습니다.
if "python" in text.lower():
print("Found")
그러다 casefold() 를 발견했습니다. 이것은 lower() 보다 더 공격적입니다. 대소문자를 구분하지 않는 비교의 경우 더 잘 작동합니다.
그런 다음 위의 코드를 다음과 같이 작성하기 시작합니다.
if "python" in text.casefold():
print("Found")
6. startswith() 및 endswith() 을 여러 OR 조건과 함께 사용하지 마세요
이전에는 startswith() 및 endswith() 을 사용하면서 매우 잘못된 접근 방식을 사용했습니다. 가끔 이렇게 여러 개의 OR 조건과 결합하는 경우가 있습니다.
if filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".gif"):
print("This is a valid image file")
그런데 이보다 훨씬 더 효율적이고 효율적으로 만들 수 있다는 사실을 알게 되었습니다. 중복 검사를 피하기 위해 튜플 방법을 사용할 수 있습니다.
if filename.endswith((".jpg", ".png", ".gif")):
print("Valid image file")

7. in 대신 find()를 사용하지 마세요
이전에는 find()를 사용하여 다음과 같은 텍스트를 찾았습니다.
if text.find("error") != -1:
print("Found")
하지만 find()는 텍스트를 찾지 못하면 -1을 반환하는데, 여기서는 불필요한 작업입니다.
그래서 저는 그 작업을 직접 수행하는 in을 사용하기로 결정했습니다. boolean 값을 직접 반환하기 때문에 더 나은 성능을 발휘합니다.
if "error" in text:
print("Found")
8. replace()를 사용하여 문자를 하나씩 제거하지 마세요.
먼저, 저는 주로 다음과 같이 replace()를 사용하여 다음과 같이 단일 문자를 하나씩 대체합니다.
text = "Hello, kiran!"
text = text.replace(",", "").replace("!", "")
이 방법은 단일 문자에서는 잘 작동하지만 여러 문자를 교체하는 경우에는 비효율적입니다.
그러다 re.sub() 를 발견했습니다. 더 효율적이고 유연합니다. 이 함수를 사용하면 이렇게 한 번에 모든 문자를 바꿀 수 있습니다.
import re
text = re.sub(r"[,!]", "", "Hello, World!")

이런 식으로 파이썬 함수를 쓰지 마세요!!!
Just Stop Writing Python Functions Like This!!!이런 식으로 파이썬 함수를 쓰지 마세요!!! 방금 다른 사람의 코드를 검토하고 충격을 받았습니다. 지난주에 다른 사람의 코드를 검토하던 중이었습니
kayoko.tistory.com
의외로 30후~40대중 사이에 첫 직업이 종료된다
말하지 않아서 그렇지.정말 많은 사람이 40대 초반에 첫 직업(직장이 아니라는 점이 중요)의 종료를 경험합니다. 이유는 아주 간단합니다.30대 중반을 넘어서면서 대부분이 조직 내에서 관리자
you-again.tistory.com
#파주, #운정, #코딩, #코딩교육, #프로그램, #프로그래밍, #코드몬스터랩, #헬로우잡스, #안녕잡스
#일산, #온라인, #파주운정신도시, #ai, #교육, #AI직업, #코딩학원, #맞춤교육, #헬로잡스, #목동동
파주, 운정, 코딩, 코딩교육, 프로그램, 프로그래밍, 코드몬스터랩, 헬로우잡스, 안녕잡스
일산, 온라인, 파주운정신도시, ai, 교육, AI직업, 코딩학원, 맞춤교육, 헬로잡스,목동동
참조 : https://python.plainenglish.io/just-stop-using-python-strings-like-this-95317aff9ff9