Python 43

[TIL] 패키지 사용을 위해 알아야 할 것들

※ 패키지의 초기화를위한 __init__.py - __init__.py 는 패키지의 초기화를 담당하는데 이해하는데 도움이 되도록 실생활에 비유해 보겠다. 기관은 기관에 속한 사람들의 정보를 가지고 있을텐데 대학교의 경우 학생명단에 학생들의 이름 정보를 저장해 놓을 것이다. 하지만 학생명단이 없다면 대학은 그 학생들을 관리할 수 없고 누가 존재하는지도 모를텐데 패키지도 이와 같은 방식으로 자신이 가진 패키지 혹은 모듈 정보를 어딘가에 등록 시켜둬야 한다. 이 역할을 하는 것이 바로 __init__.py 파일이다. ○ 패키지 사용을 위해 알아둘 것들: *와 __all__ - 패키지에 포함된 하위 패키지와 모듈을 불러올 때 '*'를 사용하면 해당 패키지의 이름공간의 모든 이름을 불러온다. 이때 필요 없는 이름..

[TIL] 패키지

※ 패키지 - 패키지(Package)란 모듈의 유기적인 사용을 위해 모듈들을 모아둔 특별한 폴더를 말한다. 폴더를 패키지로 만들면 계층적인 구조를 가질 수 있는데 폴더 내에 폴더를 두는 것과 동일한 구조로 패키지도 계층을 가질 수 있다. 패키지를 만드는 방법은 매우 쉬운데 패키지로 만들 폴더에 __init__.py 파일을 만들어 넣어주면 되는데 __init__.py가 저장된 폴더가 패키지 파일로 인식된다. __init__.py는 내용이 없는 빈 파일이어도 상관이 없다. 패키지에 속해 있는 모듈을 불러오는 방법은 다음 예시와 같다. 더보기 ----C:\wow\test---- smart2.py ----smtpkg2---- __init__.py phone.py camera.py #smart2.py import..

[TIL] 모듈을 사용하는 방법

※ 모듈 사용을 위해 알아둘 것들 - 이번엔 모듈을 사용할 떄 알아둬야 하고 알고있으면 유용할 기본적인 기능들을 나열식으로 설명하고 예시를 작성할 것 이다. 이해가 되지 않는다거나 추가적으로 알고싶은 내용은 아직 이 블로그의 기술 내용이 많이 부족하기 때문에 다른 블로그를 참조하는것이 많은 도움이 될 것이다. ○ from 사용하기 : 어떤 모듈에서 import를 사용해 외부 모듈을 불러들였다면 외부 모듈 이름을 명시하고 접근지정자(.)을 사용해 불러온 모듈의 이름공간에 있는 이름에 접근할 수 있다. 이런 방식으로 접근이 가능한 이유는 import로 불러온 모듈의 이름이 전역 이름공간에 등록되기 때문이다. #main_from.py from sample import sample_func# (from)모듈 이..

[TIL] 모듈 사용의 필요성

※ 모듈의 필요성 - 함수 정의 코드가 길어지면 길어질수록 특정 기능들을 단위별로 모듈로 만든 뒤 import 문으로 모듈을 불러들인다면 메인이 되는 모듈의 코드를 파악하기 쉽고 어렵지 않게 활용할 수 있을 것이다. 예를 들어, 카메라 기능이 필요한 태블릿을 만들어야 한다고 할 때, camera_base 모듈을 import해 사용할 수 있고 이렇게 한다면 카메라 기능이 필요할때마다 모듈만 import 하면 되기 때문에 매우 효율적이다 이전 포스트에서 사용한 예시와 같이 camera_base.py 모듈은 import 문으로 다른 모듈로 불렸을떄 사진을 찍는 기능을 한 번 사용하며 불려졌는데 일반적으로 스마트폰은 이렇게 작동하지 않고 사용자 친화적이지 않다는 점을 깨달았을 것 이다. 그래서 camera나 p..

[TIL] 모듈

※ 모듈 - 파이썬에서 모듈을 호출하기 위해선 import 문으로 호출이 가능하다. 또한, 작성한 모듈을 사용하고자 할 때는 동일한 폴더에 위치시킨 다음 사용해야 함을 유의하여야 한다. 스마트폰의 기능들을 가지고 예시를 들어보겠다. # 카메라 모듈 - camera_base.py def photo(): print("Take a photo") photo() # 전화 모듈 - phone_base.py def makeacall(): print("Make a call") makeacall() 이렇게 만들면 각 기능이 하나의 독립된 프로그램처럼 모듈을 실행할 수 있다. 그리고 스마트폰의 메인이 되는 smart_base.py 모듈을 만들어 해당 기능들을 불러들여볼 것 이다. # smart_base.py import ..

[TIL] 람다 표현식

※ 람다 표현식 - 람다(Lambda) 표현식은 함수로 취급되나 수학에서 말하는 함수에 가깝다고 보는것이 이해하기 쉬울 것 이다.이 표현식의 특징은 반복문이나 조건문 같은 제어문이 포함될 수 없고 한줄짜리 표현식으로 이루어진다는 것이다. 또한, 함수처럼 정의와 호출이 분리되어 있는 것이 아니라 람다 표현식 자체를 호출하는 것이기 때문에 lambda 인수 : 표현식 과 같이 사용할 수 있다. lambda_func = lambda x : x**2 lambda_func(4) # 출력 결과 16 위와 같이 함수처럼 입력을 받아서 출력을 할 수 있으면서도 따로 정의 없이 사용할 수 있다는 특징으로 수식 연산에 그대로 사용이 가능하다. 또한, 콜백(callback)함수를 만들 때 간단한 수식의 경우 람다함수를 사용..

[TIL] 스코핑룰과 주의점

※ 스코핑룰 - 특정 영역에서 다른 영역의 변수를 참조하는 것은 정해진 규칙을 따른다. 이 규칙은 파이썬뿐만 아니라 모든 언어가 각자만의 스코핑 룰을 가지고 있다. global_var 는 전역 영역에서 정의된 변수로 전역 이름공간에 저장되어 있다. 하지만 이름공간은 영역별로 존재하여 다음과 같은 경우가 있을 수 있다. global_var = 77 def function(): global_var = 100 print(global_var) function() # 출력 결과 100 위와 같은 예시는 지역변수 global_var가 출력된 예시이다. 이름이 동일하면 지역변수가 전역변수를 가리는 일이 발생하는데 이는 다른 영역의 이름공간 변수 이름을 가릴 수 있어 주의해야 한다. ○ 홤수 내 변수 사용시 주의할 점..

[TIL] return

※ return - return은 함수내부에서 사용되는 키워드로 return 이 수행되면 특정 값을 호출원으로 돌려주며 함수가 종료된다. 이를 흔히 함수가 값을 반환(리턴)한다라고 표현하기도 한다. 함수에 return이 없다면 함수 종료시에 기본적으로는 None 객체가 반환이 된다. 즉, 파이썬의 함수는 언제나 값을 반환한다는 것이다. def Test(): x = 1 print(Test()) # 출력 결과 None 좀 더 이해하기 쉽게 다른 예시를 보자면 다음과 같다. def returnTest(a,b,c,d): print(a+b) return b+c print(c+d) returnTest(1,2,3,4) # 출력 결과 3 5 위 예시는 2번과 3번라인은 함수를 호출했을때 정상적으로 수행하고 결과까지 출..

[TIL] 함수

※ 함수 - 함수는 반복적인 작업들을 해야할때 만들어 사용한다면 장점이 있다. 먼저, 함수의 호출로 처리 과정을 대신하기 때문에 코드의 길이가 줄어들며 호출되는 함수의 이름으로 수행하는 기능을 예상할 수 있다. 그리고 개발자가 원하는 함수를 누군가가 만들어 둔 것이 있다면 그것을 참고하여 사용 혹은 수정하여 적용시킬 수 있다. ○ 함수의 정의 - 함수의 정의는 def로 시작한다. 함수는 def 함수 이름(인수, 인수): 와 같이 작성하여야 한다. 하지만 함수 이름을 쓸때 주의하여야 할 점은 파이썬에서 예약된 키워드(ex. for, class)를 사용하면 안된다. 함수 이름을 변수라고 생각하고 이름을 지을 때 변수명명 규칙(Naming Rule)을 따라야 한다. ○ 함수의 호출과 인수 - func_name..

[TIL] 제어문 - while

※ While 문 - while 문도 for 문과 같이 반복을 위한 제어문이지만 확연한 차이점이 있다. while 문에는 조건식이 존재한 다는 점이 가장 큰 차이점이라고 볼 수 있다. 기본적으로 while 조건: 과 같은 형식으로 쓰이는데 보이는 것처럼 주어진 조건이 True 인 동안 루프를 지속하라는 의미이다. 이를 이용해 for 문 처럼 반복할 횟수를 직접 지정할 수 있다. ☆ While문을 반복시키는 도중에 중단하고 싶다면 ctrl+c 를 누르면 중단할 수 있다. while -> for 문 변환에는 정해진 방법은 없다. range 객체가 아니더라도 [1, 2, 3, 4, 5] 와 같은 iterable 객체도 상관없이 사용이 가능하다. ○ 기타 문법 - 리스트 내포가 사전이나 튜플 혹은 셋 타입에 적..