Python 개발자가 자주 하는 질문 모음

Q&A 큐레이션

1. 파이썬과 C언어 중 고민입니다.

안녕하세요 게임 제작을 목표로 독학 중인 23살 입니다. 현재 이산 수학 공부 중에 있으며 언어 공부도 병행 중입니다. 전에 고등학교 때 포인터 까지 배운 기억이 있어서 C언어를 공부하고 있었는데요 친구가 C보단 파이썬이 낫지 않겠냐고 해서 고민이 되기 시작합니다. 나중에 게임제작에서 언리얼을 사용하면 C++ 유니티를 사용하면 C#을 사용하는 걸로 알고있습니다. 저는 C++ 과 C#을 배울 때 C가 도움이 되지 않을까? 라는 생각을 가지고 있었는데 친구의 말에 조금 흔들려서 고민 중입니다. 그냥 배웠었던 C를 공부하는게 나을까요 아니면 새로 파이썬을 공부하는게 나을까요?


답변

안녕하세요! 파이썬이 낫지 않겠냐를 들었을때 흔들렸던 이유가 뭔가요? 게임 개발에 대해 깊이 알지는 못하지만 프로그래밍 언어 관점에서 본다면 C++이 C에서 파생된 언어라 그나마 유사하지만 지금은 많은 부분이 더 발전된 것으로 알고 있습니다. C#은 아예 다른 느낌이구요. 개인적으로 C를 공부하는 이유는 컴퓨터가 프로그래밍 언어와 어떻게 상호작용하는지에 대한 견해를 넓히기 위함이라고 생각합니다. C를 파이썬이나 C# 같은 언어와 비교했을때 조금 더 컴퓨터 친화적인 언어라고 생각하기 때문이에요. 예를 들면, 말씀하신 포인터의 개념이나 메모리 관리를 직접 해줘야하는 부분이요. 개발자 입장에서 파이썬이나 C#은 이런 부분을 직접적으로 제어하면서 작업할 경우가 드물긴하죠. 이런면에서 볼때 C를 공부하면 프로그래밍 언어가 어떻게 돌아가야하는지 근본적으로 배울 수 있고, 그 지식을 바탕으로 C++과 C#을 이해하는데 어느정도 도움이되지 않을까 싶습니다. 하지만 딱 거기까지 인 것 같아요. C++이나 C#을 더 잘하고 싶으시다면 C++이나 C#을 더 깊이 있게 공부하시는 걸 추천드립니다. 반면 파이썬을 배운다면 C로 뭔가를 만들어내는 것보다 확실히 더 빠르게 작업하실 수는 있을거에요. 좀 더 개발자 친화적인 언어니까요. 하지만 파이썬이 인디 게임 개발 외에 큰 규모의 게임 개발에서도 쓰이는지는 잘 모르겠네요. 목표하시는게 어디냐에 따라서 달라질 것 같습니다. 결론은 질문자님이 파이썬에 혹했던 이유 그리고 게임 개발자로서의 목표가 무엇인지에 따라서 파이썬이라는 언어를 배울지 말지 결정하시면 될 것 같습니다. 개인적으로 배워서 나쁠건 없다고 생각합니다. :) (언어에 대한건 사견이라 여러 사람의 의견을 받아보시길 추천드립니다)

외 4개 답변 보러 가기

2. Python과 YAML의 관계

파이썬을 공부하다 보니 YAML과 형식이 많이 비슷하던데(주석 기호까지 똑같더군요) 이 둘의 연관 관계가 있나요?


답변

안녕하세요 문법이 비슷하다일뿐, 두 언어는 완전히 다릅니다. 파이썬은 프로그래밍 언어로 프로그램을 짤 때 사용하죠. 즉, 실행을 시킬 수 있습니다. Yaml은 프로그래밍 언어라기 보다는 "데이터 직렬화 형식"입니다. key, value 형태로 데이터를 보기 좋게 나열해놓고, 데이터를 읽고, 쓸 때 사용하는 언어입니다. 그래서 Yaml은 실행할 수 없고, 데이터를 표현하는 방식을 위한 포맷입니다. 또 다른 데이터 직렬화 언어는 JSON, CSV, XML과 같은 친구들이 있죠. 그래서 둘의 용도는 완전히 다릅니다. 우연히 주석 기호가 같을 뿐인거죠. 감사합니다!

이 질문 바로 가기

3. 파이썬 타입 힌트 넣어주는 방법?

저는 원래 직접 타입힌트 넣어주려고 DataFrame 엄청 많이 사용하고 있었는데요, 이렇게 되면 import도 엄청 많이 사용될 것 같아서 좀 찾아보니까 그냥 string으로 직접 표현하시는 분들도 있으시더라고요? 여러분들은 보통 어떻게 사용하시는지 궁금합니다!


답변

파이썬에서는 함수나 변수 등의 선언 시에 타입 힌트를 제공하는 기능을 제공합니다. 이를 활용하면 코드를 작성하면서 미리 타입을 명시함으로써 코드 가독성을 높일 수 있습니다. 타입 힌트를 사용하는 방법은 매우 간단합니다. 함수의 매개변수나 반환값 등의 타입을 지정하려면, 해당 변수나 함수 뒤에 콜론(:)을 붙인 뒤에 타입을 지정하면 됩니다. #1 예를 들어, 정수형 매개변수를 받고, 문자열을 반환하는 함수를 선언할 때는 다음과 같이 작성할 수 있습니다. #2또한, 변수에 타입을 명시하려면 변수 이름 뒤에 콜론(:)을 붙인 뒤에 타입을 지정합니다. 이처럼 타입 힌트를 사용하면 코드 가독성을 높일 수 있습니다. 또한, IDE나 정적 분석 도구를 활용하여 타입 오류를 빠르게 검출할 수 있습니다.

이 질문 바로 가기

4. 파이썬 클래스 공부는 어떻게 하는게 좋을까요?

구글에서 찾아봐도 딱 볼때만 50% 정도만 이해되고 이걸로 응용하려고하면 감이 안잡힙니다. 저도 코드 짜면서 기능별로 클래스 만들어서 깔끔하게 정리하고 싶은데 아직은 이게 안돼서 한 파일에 다 적고있습니다ㅠㅠ 유료강의라도 좋으니 괜찮다 싶은 영상강의 같은거 추천해주시면 감사하겠습니다.


답변

파이썬 창시자인 귀도 반 로섬이 드롭박스에서 은퇴하기까지 가장 오래 머문 회사이면서 가장 활용을 잘하는 회사의 공개된 프로젝트들입니다. 코드들을 살펴보시면서 린트, 테스트, 로직들을 참고하세요. 그리고 리눅스 패키지들은 오래 전부터 기본적인 부트 프로그램과 gui, 인스톨러가 파이썬으로 작성되어 있습니다. 우분투나 레드햇 계열 리눅스를 로코드 살펴봐도 좋습니다. 모든 언어의 책 속에는 언어의 발전사가 담겨있는데요. (저자 중에도 그냥 옮긴 분도 있겠지만) 잠깐 스치듯 넘어가는 역사를 통해 교과서적인 레퍼런스가 어디에 있는지 힌트를 얻을 수 있답니다. 다른 언어를 배우시더라도 이 부분 유념해두시길 바래요. https://github.com/google?q=&type=all&language=python&sort=

이 질문 바로 가기

5. mac에서 pcl , python pcl 빌드

안녕하세요. 노예입니다. swift 라이다 센서로 포인트 클라우드를 만들었습니다. 이 포인트 클라우드를 필터링 하고 싶어서 검색해보니 pcl , python-pcl 이라는 라이브러리를 깔아야 한다고 합니다 포인트 클라우드를 다루는 분들이 소수여서 python-pcl을 적용할때 pcl의 버전이 1.9 까지 적용이됩니다(현재는 1.12) 그래서 pcl의 버전을 1.9로 낮추고 pcl을 빌드하면 어마어마한 에러가 납니다. openmp 가 없다- 설치 - 경로를 못찾는다 - 경로지정 - qt5가 없다 - 설치 - 경로못찾는다 - 경로지정 - vtk가 없다 - 설치 - 경로지정 등등 큼지막한 에러들은 잡은 상태인데 pcl 안의 .cmake 파일들의 경로가 꼬여있는 상태인것 같습니다 혹시 pcl을 사용해보신 전과가 있으시거나 이 글을 읽고 ”내가 해보니 되더라“ 하시는 분이 계시다면 답글을 달아주세용 (맥베이스 우분투, 윈도우베이스 우분투 시도해 봤습니다만 해결하지 못했고 현재는 윈도우로 해보려고 시도중입니다) 도움을 주시려는분들에게 감사의 말씀을 드립니다.


답변

혹시 파이썬 버전은 몇을 사용하시나요? 파이썬을 3.6이하로 낮추시고 다시 시도해보시는걸 추천드려요 python-pcl의 경우 작년까지만 하더라도 파이썬 3.7부터 pcl 모듈을 찾지 못하는 이슈가 있었습니다. 그래서 작년 기준이긴 하지만 파이썬 2.8~3.6 사이의 버전에서 사용 가능한걸로 알고 있습니다

이 질문 바로 가기

6. 현업 파이썬이서 카프카 많이 사용하시나요?

현업에서 스프링 부트 + 카프카 사용은 해봤는데 파이썬에서 카프카 사용 경험은 없습니다. 혹시 파이썬 + 카프카 현업에서 사용 많이들 하시나요??


답변

카프카는 실시간 데이터 파이프라인 및 스트리밍 에플리케이션을 구축하는데 많이 사용됩니다. 파이썬의 경우 kafka-python 라이브러리가 잘 알려져 있는데요. 로드 밸런싱, 파티셔닝 및 메시지 일괄 처리와 같은 고급 기능은 물론 메시지 생성 및 사용을 위한 간단하고 직관적인 API를 제공합니다. pip install kafka-python 명령으로 설치가 가능하고, 간단한 샘플은 아래와 같습니다. -------------------------------------------------------------------- # `kafka-python`를 사용하여 카프카 프로듀서와 컨슈머를 생성합니다 from kafka import KafkaProducer, KafkaConsumer # 카프카 프로듀서를 생성하고 "test" 토픽으로 메시지를 전송합니다 producer = KafkaProducer(bootstrap_servers=['localhost:9092']) producer.send('test', b'Hello, Kafka!') # 프로듀서의 전송 메시지를 모두 전송하기 위해 flush() 메서드를 호출합니다 producer.flush() # 카프카 컨슈머를 생성하고 "test" 토픽에서 메시지를 읽습니다 consumer = KafkaConsumer('test', bootstrap_servers=['localhost:9092']) # "test" 토픽에서 메시지를 소비합니다 for message in consumer: print(message) --------------------------------------------------------------------

외 2개 답변 보러 가기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!