요점은 어떻게 피할 수 있습니까?
자세한 내용은 아래 링크를 참조하십시오. 특히 paxdiablo의 답변입니다. 변수가 있는지 어떻게 확인합니까?
짐작 하셨겠지만 런타임에 존재를 알 수없는 변수가있는 웹 페이지를 프로그래밍 한 시나리오가 있습니다.
무슨 일이 일어나고 있는지는 사용자가 여러 가지 형식의 정보를 업로드한다는 것입니다. 더 구체적으로 말하면 주소입니다. 예를 들어, 거리에는 방향 (남서쪽, 북쪽)이있을 수 있고 주소에는 콘도 한정자 (unit # 2F)가있을 수 있습니다. 이것들 (또는 그들과 같은 것 / 시나리오)은 다른 변수에 할당되고 표현 될 것입니다. 데이터가 내 코드에서 조작됨에 따라 조건문이 있습니다.
if street_dir_var:
#do something
따라서 내 질문 (들) : 왜 이것이 잘못된 형식이며 적절한 대체물은 무엇입니까?
추신-중요한 경우 Python으로 코딩 중입니다.
조건부는 괜찮습니다. 문제는 street_dir_var
정의되지 않은 경우 해당 행이 NameError
. 기술적으로를 잡을 수는 NameError
있지만 유지 관리 할 수없는 지저분한 코드를 만듭니다. 또한 변수 이름에 데이터를 넣는다 는 것을 암시 하는데, 이는 나쁜 코드 냄새입니다.
일반적으로 변수는 액세스를 시도하는 논리 분기에 정의되어야합니다. 어떤 이유로 든 "적용되지 않음"이라면 최소한 None
. 이것은 변수에 대한 훌륭한 기본값으로 사용되며 종종 필요한 키워드 인수의 기본값으로 사용됩니다.
여기에서 더 구체적으로 알아 보려면 :
이것들 (또는 그들과 같은 것 / 시나리오)은 다른 변수에 할당되고 표현 될 것입니다.
정말 나쁜 코드 냄새. 이러한 모든 변수는 단일 주소에 대한 데이터를 나타냅니다. 이러한 모든 변수를 클래스, a , a 또는 a 같은 단일 변수 로 집계해야 합니다 .list
dict
namedtuple
class Address:
def __init__(self, **kwargs):
self.street = kwargs.get('street')
self.directional = kwargs.get('directional')
self.condo = kwargs.get('condo')
user_data = parse_data(some_data_source) # user_data looks like a dict
address = Address(**user_data)
하나의 주소, 하나의 컨테이너. address.condo
일 수 None
있지만 적어도 내가 요청할 때 정의됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다