C, JAVA 하다가 파이썬 입문할때 당황했던 포인트중 하나ㅋㅋㅋ 아니 자료형 입력을 안했는데 어떻게 저장이 되지? 그렇다고 또 뜻대로 되는건 꼭 아니네..?(각종 연산하면서 예상치 못한 자료형삑사리에 직면) 적응하면 어느정도 예상이 가능한 부분들이긴 하지만 처음보면 참 당황스럽긴 하죠 영상에 나온것처럼 입문하긴 참 좋은 포인트들이긴 한것같지만, 시행착오 안겪으면 다른 언어 배울때 난감하거나 이해 못할 상황도 많을것같긴 하네요
원래 스크립트 언어로는 간단한 작업만 했기 때문에 타입 시스템이 필요 없었죠. 그런데 지금은 JavaScript나 Python으로 별 걸 다 하니까 코드의 크기가 커지고, 타입이 있는 게 좋다는 결론이 난 것 같습니다. 이 흐름을 연 게 아마 TypeScript 였을텐데, 조만간 JavaScript에도 별도로 타입 힌트가 탑재될 예정이라 대세는 완전히 기울었다고 봐야 할 것 같습니다. 아니면 지금도 JSDoc으로 명시할 수도 있고...(몇 배로 귀찮지만서도) 근데, 가끔 일일이 타입 지정하는 게 귀찮을 때가 있긴 해요. 그렇다고 any로 도배하거나 대충 object 같은 걸로 퉁치면 하는 의미가 없고, 그렇다고 너무 꼼꼼하게 하자니 이게 뭐 하는 짓인가 싶기도 하고...
@@aaa22421주석으로 타입 힌트를 다는 건 JavaScript 본래 기능이 아닙니다. 그래서 이제 언어 자체에서 타입 힌트를 지원 하겠다는거죠. 지난 몇 년 간 JavaScript 문법이 마구 커지고 있어서 이런 게 진짜 필요한지 논란도 있는 것 같습니다만, 주석으로 다는 건 번거롭고 TypeScript하고 주도권 문제도 좀 있는 것 같아서 도입하는 모양이에요.
니콜라스님 안녕하세요! 니콜라쓰님 덕분에 한달전부터 프로그래밍에 입문해서 지금은 파이썬을 독학하고 있는 학생입니다. 니콜라스님의 노마드 코더 사이트에서 강의들을 수강하고 싶은데 전반적으로 어떤 언어강의를 먼저 선택해야 할지, 어떤 커리큘럼을 타야할지 등등이 감이 잘 안옵니다. 니콜라쓰님께서 공들여 만드신 사이트인데 혹시 한번 유튜브에서 사이트에 대한 소개와 설명을 영상으로 다루어 주실 수 있으실까요? 감사합니다.
타입스크립트와 파이썬 말고도 여러 언어에서 타입힌트를 사용하고 있고 파이썬에서도 마찬가지로 사용중인데.. 직접 패키지와 클래스를 만들어서 모듈 형식으로 나눠두면 서로 참조하는 부분에서 Circular Import 문제가 발생해서 약간 골치아파진 적이 있어요. 뭐라 해야할까... 파이썬으로 타입을 정의하기가 다른 언어보다 어렵달까나.. 오늘도 좋은 영상 고맙습니다! Cheers!
타입을 명시하지 않아도 되는건 장점이긴 합니다. 왜냐하면 프로그래밍을 처음하는 초보자를 흡수할수 있으니까요. 어차피 덩치가 큰 프로젝트들은 Hinting이나 Type변환이 필요해서 코드리뷰때 지적을 당하며 기존 타입이 필요한 언어처럼 코딩이 되긴 하죠. C++이나 자바처럼 필수는 아니라도 선택이라면 언어를 쓰는 입장에서 선택사항이니 이건 큰 장점입니다. 무엇보다 간단히 프로토타이핑하기에 이만큼 좋은 언어도 없으니까요~
안녕하세요! I'm a programmer who's learning Korean, and i came here thinking you would speak Korean. 😂 Silly me. Keep making this amazing content, I still enjoyed it even though it was not what im looking for. Is there no korean translated python software, or is everyone forced to use English?? 😮
저는 Swift를 사용하는 중이라 종종 Python 같은 코드를 (타입을 명시하지 않는) 작성하곤 하는데, Swift는 저런 상황해서 알아서 catch해 컴파일 오류를 내주지만 Python은 그렇지 않아서 아쉬웠는데 타입을 명시할 수 있는 옵션이 생기는 것이 매우 반갑네요!
in the officaliy type hints is not mandatory to say that, but every developers need this options so, conclusions we need this type hint P.S : runtime error is very irritating
에러를 못잡는 기능이 동적 타입이라고 생각되기 때문에 동적 타입이라는게 과연 초보자들에게도 편리한 기능인가 라는 생각이 듬... 환경적으로 제한된 타입을 쓰는 경우가 아니라면 에러를 컴파일 단계에서 막아주지 않는다는건 컴파일러의 중요한 기능중 하나가 비어있다는 뜻이기 때문...
동적 언어는 거대한 그래서 다수의 개발자가 투입되어 적지 않은 시간 동안 개발하여야 하는 소프트웨어에는 적합하지 않은 것 같습니다. 마찬가지로 작고 간단한 프로그램은 동적 언어로 개발하는 것이 효과적이죠. 파이썬도 그렇고 자바스크립트도 그렇고 여기저기 많이 쓰이면서 큰 프로그램을 만들때도 쓰이다 보니 정적 타입에 대한 요구 사항이 커지고 말았죠. 만약 파이썬에 타입 선언이 강제된다면 파이썬을 쓸 이유가 없어지지 않을까 싶습니다. 파이썬과 다소 비슷한 편의성을 제공하면서도 훨씬 더 성능이 좋은 정적 타입 언어들은 차고 넘치니까요. 그래서 타입을 강제하지 않는 파이썬의 현재 방향이 옳다고 생각합니다. 여러 사람과 공동 작업이 필요한 큰 프로그램이면 몰라도 혼자서 작업하는 수준의 작은 프로그램이라면 여전히 타입 힌트를 잘 사용하지 않을 것 같습니다. 반대로 큰 덩치의 프로그램은 파이썬보다는 정적 타입 언어를 쓰는 것이 맞다고 생각해요.
니꼬니꼬님, 데이터사이언스의 시대를 맞이하면서 다양한 Table형태의 데이터를 다루는데, R language 패키지인 dplyr (혹은 tidyverse)가 참 실용적이라고 생각해왔는데요, Python에서도 pandas data frame을 dfply 라는 패키지를 통해 비교적 쉽게 정제할 수 있는 것 같던데... 혹시 짧게 소개 가능할까요??🥹
영상에 설명한것 대로 말그대로 "힌트" 일뿐.. 타입 스크립트처럼 컴파일 단에서 타입 오류가 잡히는 개념은 아니란게 중요한 거 같습니다. (물론 코드 리뷰에는 도움이 되겠지만요.) 실수를 줄여준다는거랑 IDE 자동 완성이 제대로 된다는 점에선 큰 장점이고, 강제성이 없다는 점이 파이썬의 자유도를 잘 나타내는 기능이 아닌가 싶네요. 타입 스크립트를 제대로 안배우면 객체 interface 정의할 때 optional 같은 개념을 몰라서 컴파일을 안되서 실행을 못한다던가.. 하는 그런 짜증은 없지 않나 싶습니다
When I begin my code for the first time ( I mean my proto-code) it can interrupt to write my code. In my case, I write type after finish my proto-code.
파이썬과 자바스크립트 같은 인터프리터 언어가 타입에서 자유롭다는 게 배우고 익혀서 쓰는데 훨씬 수월하더라구요. 컴파일러 언어들은 변수나 상수, 함수, 클래스, 심지어 패러미터 하나하나까지 다 써서 나타내야 하니까 복잡해지고 지루해져서 하기 싫어지더라고요. 반 로섬과 아이크에게 정말 감사합니다 ㅋㅋㅋㅋ
동적 타입은 아니지만 변수에 타입을 명시하지 않는 예를 하나 들자면, c++ 같은 정적 타입 언어에서 _type_ _var_ = _expression_ ; 같은 형태의 구문에서 보통 _expression_ 만으로도 변수의 타입을 충분히 유추할 수 있습니다. 이러한 상황에서 만약 타입이 너무 복잡할 때, 타입의 이름을 *auto* 로 대체하여 auto _var_ = _expression_ ;으로 바꾸면 코드를 간결하게 쓸 수 있습니다.
python의 typehint는 너무 약합니다. 말그대로 hint고 강제로 잘못된 타입을 막지는 못하니까요. 다른 오픈소스를 가져와서 사용할때 난감한 것중의 하나가 입력 파라메터가 어떤 타입을 갖는지 알지 못할때입니다. 개발하는 사람 입장에서는 이게 숫자를 넣으라는건지 스트링을 넣으라는건지 모를때가 많아요. python이 간단해보이지만 동작 속도도 느리고 저런 규칙에 대한 제한이 너무 약해서 실무에서 c++로 작성하는 것보다 오히려 고민거리가 많아져서 저는 python사용을 포기했습니다.
이번에 개인 프로젝트를 리팩토링하면서 poetry로 옮기고, pre-commit(-hook) + flake8 + mypy + black + bandit + refurb 이렇게 적용시켰는데, - 전반적으로 문법을 통일해서 깔끔하기도 하고 - IDE 등에서 타입을 잘 띄워주기도 하고 - 타입 오류 수정하면서 버그도 잡고 여러모로 좋은 경험이었습니다ㅎㅎ 한번 시도해보시는걸 추천해요! (저는 추가로 pydantic 데이터 검증 / alembic db 마이그레이션 / pytest 테스트 환경까지 찬찬히 잡아보려고 하는 중이에요!)
그래도 c/c++이나 c#/java같은 시스템 프로그래밍 언어보다는 많이 편리하죠. 중급언어처럼 힙공간을 직접 다루거나 메모리 누수 방지 및 해제를 해줄 필요가 없고 지역변수와 전역변수도 포인터 고민할 필요없이 쉽게 고칠 수 있으니까요. 또한 가상머신 언어들처럼 객체때문에 머리 안 써도 되니...
타입 힌트를 강제하지 않기 때문에 본질로 돌아가진 않았습니다. 다만, 팀과 협업하는 등의 작업이 필요할 때에 추가적으로 사용할 수 있도록 여지를 남겨둔 거죠. "타입 힌트가 있으면 좋다"를 말하는 것도 아닙니다. 상황에 따라 취사선택할 수 있도록 둔 거에요. 어떤 코드는 타입 힌트를 굳이 쓸 필요가 없을 정도로 간결하게 작성해야 할 때도 있잖아요. 그런 경우는 자유에 맡겨둔 거니까요..
그래서 왜 썸네일처럼 쓰지 말라는거임? typehint를 적어야 int형으로 강제할 수 있기 때문에?? 오히려 배열에 string과 int 등 다양한 자료형을 넣고 싶은 경우도 있을텐데... 좀 이해가 안됨ㅋㅋ 만약 썸네일이 int형만 들어가야 하는 배열이라면 typehint를 명시해줘야 하므로 저렇게 쓰면 안된다는게 이해가 되지만, 그렇다는 내용이 없기 때문에 영상을 봐도 해답을 얻지 못하겠음..