2020. 6. 18. 19:14ㆍInvestment Story/금융공학 - 파이썬
지난 포스팅에서
함수를 정의하는 방법에 대해 알아보았는데요.
이번 포스팅에서는,
함수 내외에서 사용되는 변수들의 종류와
람다 함수 그리고 모듈까지 알아보겠습니다.
전역변수와 지역변수
먼저 전역변수(Global Variable)와
지역변수(Local Variable)에 대해 알아볼게요.
간단히 이야기하자면
전역변수는 코드 전체에서 사용될 수 있는 변수를 이야기 하고요,
지역변수는 지정된 함수 내에서만 사용되는 변수를 이야기합니다.
이렇게 이야기하니까 잘 안와닿죠.
예시를 들어볼게요.
위와 같은 코드가 있습니다.
그런데 이상하게 a라는 변수가 2개나 지정되어 있네요.
함수 밖에 a는 3으로 지정되어 있고,
함수 안에 a는 1로 지정되어 있습니다.
우리는 여기서 밖에 있는 a, 즉 3이란 값을 갖고 있는 a를 전역변수라 하고,
함수 내에 있는 a, 즉 1이란 값을 갖고 있는 a를 지역변수라고 합니다.
그러니 밖에 있는 a는 코드 전역에서 사용되는 변수이고,
함수 내에 있는 a는 그 함수 내에서만 사용되는 변수이겠죠.
그럼 리턴 값은 a+3이라고 되어 있는데
어떤 값이 출력될까요?
정답은 함수 내에선 지역변수의 우선순위가 높기 때문에
4가 출력될 것입니다.
확인해볼까요?
그러면 함수 내에 지역변수를 지우고 테스트를 다시 해보겠습니다.
아래처럼요
위에선 freedom 함수 내에 따로 지역변수가 지정되어 있지 않죠,
그럼 return 할 때 쓰이는 전역변수 a를 사용할 테니
출력은 6이 되겠죠?
확인해보겠습니다.
6이 반환되는 것을 확인할 수 있습니다.
지역변수는 함수 외에서 사용될 수 없습니다.
함수 외부에서 지역변수를 치면 오류가 생깁니다.
함수 내에서 x라는 변수를 만들었죠.
그럼 외부에서 x를 호출하면 호출될까요?
에러가 발생합니다.
x가 지정되지 않았다는 메시지와 함께요.
이렇게 지역변수는 함수외에서 사용될 수 없습니다.
그런데 함수 내에서 지역변수 말고 전역변수를 지정하고 싶은데,
그럴 땐 어떻게 할까요?
그럴 때는 함수내에서 global 변수를 쳐주시면 됩니다.
예시를 보시죠.
위와 같은 예시인데,
global x 라는 문구가 추가되었습니다.
이는 x는 이 함수가 실행되고 난 이후에도 계속 사용되는 전역변수라는 말이 내포되어 있습니다.
즉 함수를 한번 실행하고 난 후
x를 호출해도 호출이 됩니다.
이미 전역변수로 지정이 되었기 때문이죠.
이상으로 지역변수와 전역변수를 알아보았습니다.
람다함수
함수는 기존에 def를 이용해서 정의하는 방법도 있었지만
람다형식으로 생성할 수 도 있는데요
기존 함수와는 다른 람다함수에 대해 알아보겠습니다.
람다함수의 형식은 아래와 같습니다
lambda 변수 : 표현식
저희가 배운 덧셈 함수는 아래처럼 표현하였죠
위와 같이 만든 후
freedom(10,30)
이런식으로 실행하면
40이라는 값을 기대했죠.
이런식으로요.
이걸 람다 함수로 표현할 수 있습니다.
이렇게요
x,y라는 변수를 사용해 : 뒤에 표현식 즉, 덧셈을 표현하고
뒤에 입력값을 넣으면 되는 것이죠.
람다함수도 사용될 때가 분명히 있으니
꼭 알아두어야 할 함수입니다.
모듈
모듈은 코드 외부에 저장된 파일입니다.
모듈은 함수가 될 수 있고, 변수나 클래스가 될 수 있는데요.
즉 한 번 저장해두고, 다시 작성할 필요없이 불러와 쉽게 사용가능하게 만들어 주는 기능을 합니다.
설치시 자동으로 설치되는 표준 모듈이 있고요,
사용자가 직접 만드는 사용자 정의 모듈이 있습니다.
그리고 마지막으로 다른 사람이 만든 모듈을 가져다 쓸 수 도 있겠죠?
그럼 저희가 설치한 아나콘다 기준으로,
아나콘다 설치시 기본 배포된 모듈을 통해 모듈이 무엇인지 확인하겠습니다.
아나콘다 설치한 위치에 보면 Lib이라는 폴더가 있는데
그 안에 수많은 모듈들이 존재 합니다.
이런식으로 수많은 모듈들이 존재합니다.
기본으로 설치된 모듈들이고 확장명은 py형식으로 되어있네요
그럼 우리는 이러한 모듈들을 import 하여 사용할 수 있습니다.
저는 그럼 calendar 모듈을 import해서 사용해보겠습니다.
먼저 calendar 모듈을 import 시켜야겠죠.
그리고 아래와 같이 calendar 함수 내에 있는 기능을 사용할 수 있습니다.
제가 프로그래밍을 한 것도 아니고 그냥 가져다 쓴 걸로
저렇게 2020 달력을 구할 수 있게 되었습니다.
이처럼 모듈 잘 활용하면 무궁무진하게 활용 가능하겠죠?
꼭 제가 모듈을 작성하지 않는다고 하더라도,
다른 사람이 작성해둔 모듈을 활용하여 좀더 쉽게 코딩을 할 수 있겠죠.
그럼 오늘 포스팅은 여기서 마치겠습니다.
감사합니다.
'Investment Story > 금융공학 - 파이썬' 카테고리의 다른 글
18. 파일 읽기와 쓰기 (0) | 2020.07.08 |
---|---|
17. 에러와 예외처리 (1) | 2020.06.27 |
15. 함수 정의하기 (0) | 2020.06.15 |
14. 집합(set) 알아보기 (0) | 2020.06.13 |
13. 딕셔너리 알아보기 (0) | 2020.06.13 |