손만이의 개발노트

제어문 본문

Python

제어문

sonman 2019. 9. 24. 23:56

제어문참고글 : https://docs.python.org/ko/3/tutorial/controlflow.html

 

4. 기타 제어 흐름 도구 — Python 3.7.4 문서

 

docs.python.org


이번 시간에는 제어문 중 for문과 함수의 특이점을 알아보고자 합니다.

 

For문

파이썬의 for문은 일반적인 이터레이터 사용 시

>>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
...     print(w, len(w))
...
cat 3
window 6
defenestrate 12

이런 모양으로 사용이 가능합니다.

다만 주의할 점은 묵시적으로 사본을 만들지 않으므로

>>> for w in words:  # Loop over a slice copy of the entire list.
...     if len(w) > 6:
...         words.insert(0, w)
...
>>> words

이런식으로 코드를 사용하는 경우 무한루프에 빠집니다.

하여 슬라이스 표기법으로 표현하는 경우 묵시적으로 사본을 만들기에

>>> for w in words[:]:  # Loop over a slice copy of the entire list.
...     if len(w) > 6:
...         words.insert(0, w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']

이런식으로 표기해주어야 합니다.

 

함수

함수의 실행은 함수의 지역 변수들을 위한 새 심볼 테이블을 만듭니다. 
좀 더 구체적으로, 함수에서의 모든 변수 대입들은 값을 지역 심볼 테이블에 저장합니다; 
반면에 변수 참조는 먼저 지역 심볼 테이블을 본 다음, 전역 심볼 테이블을 본 후, 
마지막으로 내장 이름들의 테이블을 살핍니다. 그래서, 참조될 수는 있다 하더라도, 
전역 변수들과 둘러싸는 함수의 변수들은 함수 내에서 직접 값이 대입될 수 없습니다 
(전역 변수를 global 문으로 명시하거나 둘러싸는 함수의 변수를 nonlocal 문으로 명시하지 않는 이상).

함수 호출로 전달되는 실제 매개변수들 (인자들)은 호출될 때 호출되는 함수의 
지역 심볼 테이블에 만들어집니다; 그래서 인자들은 값에 의한 호출(call by value)로 전달됩니다 
(값은 항상 객체의 값이 아니라 객체 참조입니다). 
1 함수가 다른 함수를 호출할 때, 그 호출을 위한 새 지역 심볼 테이블이 만들어집니다.

라는 인용문을 보면,

함수는 호출 시 같은명의 변수라도 가장 작은 단위인 지역->전역 순으로 변수를 참조합니다.

'Python' 카테고리의 다른 글

[django] sqlite3에 생성된 db조회  (0) 2020.05.04
[Python]아나콘다 간단 사용법  (0) 2020.05.01
[Python]Json 직렬화/역직렬화  (0) 2020.04.21
파이썬 기타 자료형  (0) 2019.10.08
파이썬 기초 자료형 특징들  (0) 2019.09.17