웹 서비스 개발(FB,BE,SERVER,DB)/Python

5. 파이썬 활용

Zoo_10th 2024. 1. 10.

1. 전역변수와 지역변수

함수 밖에서 생성한 변수는 전역 변수이고, 함수 내에서 생성한 변수는 지역 변수이다. 

 

1-1. 전역 변수(Global Variable)

전역 변수는 함수 내외부에서 모두 사용할 수 있다. 전역 변수는 함수 외부에서 선언되고 정의되며 프로그램 어디서든 접근할 수 있는 변수이다. 함수 내부에서도 전역 변수를 사용할 수 있으며, 전역 변수는 프로그램 전체에서 유효하며, 여러 함수에서 공유하여 사용할 수 있다.

1-2. 지역변수(Local Variable)

지역 변수는 함수 내에서만 사용할 수 있다. 함수 내부에서만 접근할 수 있는 변수이며, 지역변수는 해당 함수 내에서만 유효하며, 함수가 호출될 때 생성되고 함수의 실행이 종료되면 소멸된다. 다른 함수나 전역 영역에서는 해당 변수가 접근할 수 없다.

지역 변수와 전역 변수

 

1-3. 지역 변수를 전역 변수로 사용(global)

지역 변수를 전역 변수로 사용해야 하는 경우에는 global 키워드를 사용하여 지역 변수를 전역 변수로 변환할 수 있다. 변수를 선언하기 전 해당 변수명을 전역 변수로 사용할 것을 미리 선언하면 지역 변수를 전역 변수로 사용할 수 있다.

주의할 점은 global 키워드에는 값이 대입되지 않는 변수명만 작성하고, 실제 변수를 생성하는 부분은 아래 문장에서 실행해야 한다.

지역 변수를 전역 변수로 사용하는 코드이다.

1-4. 함수 안에 함수(global)

이전 변수와 함수는 비슷한 목적으로 사용되지만 변수는 값을 저장하고 함수는 기능을 저장하는 차이가 있지만 둘의 사용은 비슷하다. 전역 변수나 지역 변수와 마찬가지로 함수도 이러한 성질을 갖는다.

함수 안에 함수를 작성하는 것도 가능하며, 함수도 변수와 마찬가지로 생성된 위치에 따라 지역 또는 전역으로 사용된다.

global 사용하며 지역 함수도 전역 함수로 사용할 수 있다.

global 미사용 지역 함수는 호출이 불가하다.
global을 사용하여 지역 함수를 전역 함수로 변경하면 오류가 해결된다.

 

1-5. 비지역변수(nonlocal)

지역 변수로 생성된 변수를 지역 변수가 아닌 변수로 인식하도록 하는 키워드이다.

nonlocal을 사용하게 되면 해당 함수의 지역 변수가 아니라 상위 함수의 변수를 직접 변경해야 한다.

함수 안의 지역 변수는 함수가 작동된 후에 메모리 위치를 반납하는데, nonlocal을 사용할 경우 해당 지역 변수를 비지역 변수로 변경하고 해당 함수의 가장 가까운 곳의 변수를 사용하도록 할 수 있다.

s는 slamdunk와 guard에서 각각 새로운 변수이다.
s는 slamdunk와 guard에서 같은 변수로 사용된다.

2. 한 줄로 표현하기(One-line)

2-1. 조건문 한줄 표현(조건부 표현식_삼항연산자)

if문을 간결하게 표현하는 방식이다. 주로 단순한 조건에 따라 값을 선택해야 할 때 사용된다.

다만 else문이 반드시 필요하다. 또한 elif는 사용할 수 없다.

복잡한 조건이나 다양한 처리가 필요한 경우 if문을 여러 번 사용하는 것이 더 가독성엔 좋다.

2-2. 반복문 한 줄 표현(리스트 컴프리헨션_List Comprehension)

반복문을 사용하여 리스트를 간단하게 생성하는 방법이다.

코드를 간결하고 가독성 있게 작성할 수 있다.

[표현식 for 카운트 변수 in 반복가능객체]

반복가능객체는 리스트, 튜플, 문자열등 순회가능한(interable) 객체이다.

각 항목에  대한 연산이나 조건 등을 표현식에서 수행할 수 있다.

반복문과 조건물을 한 줄로 간결하게 표현할 수도 있으며, 새로운 리스트를 생성하는 작업을 효율적으로 수행할 수 있다.

3. 람다 표현식(Lambda)

익명 함수를 지칭하는 용어로 람다 표현식이라고 부른다. 

람다 함수는 식 형태로 만들어지므로 간단한 함수를 만들 수 있다.

3-1. 람다 표현식 사용법

lambda 뒤에 매개변수를 넣고 뒤에 함수식을 사용하면 된다. 

3-1-1. 람다표현식 기본 사용법 

이름이 없는 함수이므로 재사용이 불가능하다.

람다 표현식 자체를 변수에 저장하여 사용할 수 있다.

람다 표현식에 ()를 사용하여 사용할 인자를 넣어주어 사용할 수 있다.

 

3-1-2. 람다표현식은 변수 생성이 불가

매개변수를 여러 개 지정하여 사용할 수 있지만 지역변수를 생성하는 작업은 람다 표현식에서 불가능하다.

전역 변수를 호출하여 사용하는 것은 가능하다.

 

3-1-3. 람다표현식을 인수로 사용(map)

map(function,iterable 자료)

map 함수는 Mapping의 줄임말로, 다른 함수와 자료를 매핑시키는 함수이다. map 함수의 인자로는 함수와 iterable 자료형 두 가지를 필요로 한다.

map을 리스트와 같은 자료형에 담지 않으면 map 객체로 생성되어 내부 원소를 볼 수 없고, 만약 iterable 한 자료형이 아닐 경우 error가 발생한다.

lambda 표현식의 map, filter는 반복문으로 구현이 가능하다. 단 결과는 같아도 서로 구동방식은 다르다.

map을 사용한 코드

3-1-4. 람다표현식에 특정 요소 찾기(filter)

filter(function, iterable 자료)

람다 표현식을 사용하여 특정 조건을 만족하는 원소를 찾도록 정의할 수 있다.

filter 함수의 사용방법은 map 함수와 같다.

filter를 사용하는 코드

3-1-5. 람다표현식에 누적값 만들기(reduce)

reduce(function, iterable 자료)

람다 표현식은 변수를 생성할 수 없으므로, 사용되는 함수가 reduce이다. 

reduce 함수도 map이나 filter와 사용 방법이 같다.

 

 - 주의사항

1. reduce는 외장 함수이므로 반드시 import를 진행해야 한다.

(from functools import reduce)

2. reduce 함수의 매개변수는 두 개가 필요하다.

3. reduce 함수는 list에 담을 수 없다.

reduce를 사용한 코드

 

728x90

'웹 서비스 개발(FB,BE,SERVER,DB) > Python' 카테고리의 다른 글

7. 모듈(Module)  (2) 2024.01.13
6. 클래스(Class)  (1) 2024.01.10
4. 함수 (Function)  (1) 2024.01.08
3. 제어문(Control Statement)  (0) 2024.01.05
2. 기본연산(Operator)  (0) 2024.01.05

댓글