파이썬의 범위 지정 규칙으로 인해 범위 내에서 일단 초기화 된 모든 변수를 사용할 수 있습니다. 조건문은 새로운 범위를 도입하지 않으므로 다른 언어 (예 : 해당 조건 앞에 변수를 초기화하는 등)의 구문은 반드시 필요한 것은 아닙니다.조건부 변수 초기화의 비법은 무엇입니까?
def foo(optionalvar = None):
# some processing, resulting in...
message = get_message()
if optionalvar is not None:
# some other processing, resulting in...
message = get_other_message()
# ... rest of function that uses message
또는, 우리가 대신 할 수 : 예를 들어, 우리가있을 수 있습니다 물론
def foo(optionalvar = None):
if optionalvar is None:
# processing, resulting in...
message = get_message()
else:
# other processing, resulting in...
message = get_other_message()
# ... rest of function that uses message
의 get_message
및 get_other_message
기능이 많은 코드가 될 기본적으로 관련이없는 수 (당신은 추측 할 수 각 경로 이후의 프로그램 상태가 동일하다는 것); 여기서 목표는 기능의이 부분을 넘어서는 message
을 사용할 준비를하는 것입니다.
더 허용 될 어떤 구조 :
나는 같은 다른 질문을 여러 번 사용 후자의 구조를 본 적이?
'get_message'를 조건부로 실행할지 아니면 무조건 실행 할지를 전적으로 좌우하지 않습니까? – delnan
여기에있는 아이디어는 호출 할 함수가 아니라 오히려'message'의 생성입니다. 함수 자체는 부적합합니다. –
그것이 기능이든 아니든, 의미 론적 차이는 코드의 절반을 무조건 실행한다는 것입니다. 차이가 있다면 논쟁 스타일에는 별다른 의미가 없습니다. – delnan