1
def set_attribute(attributes, name, value):
for i, attribute in enumerate(attributes):
if name in attribute:
quote_char = attribute.find('"')
if quote_char == -1:
raise ValueError
return None
attributes[i] = attribute[:quote_char+1] + str(value) + '"'
return attributes
저는 새로운 프로그래머이며 예외 처리를 올바르게 이해하려고합니다. 이 예제 모든 name
에서 파이썬에서 예외 발생시 범위 이해
"
문자를해야한다, 그래서 나는이 실패 할 경우 예외를 발생하고 싶지만, 나는 또한
return None
문이 필요한 경우 이해하려고 노력 (또는 아무것도하지)했다.
필자는 예외 처리기가 발견 될 때까지 각 범위의 수준에서 벗어날 것이라고 생각했습니다.
이
- 첫째, 시도 절 (키워드 시도 사이 제외하고는 문 (들)) 실행 다음 Python tutorial이 말했다.
- 예외가 발생하지 않으면 except 절이 생략되고 try 문의 실행이 완료됩니다.
- try 절 실행 중에 예외가 발생하면 나머지 절이 생략됩니다. 그런 다음 해당 키워드가 except 키워드 뒤에 이라는 예외와 일치하면 except 절이 실행되고 try 문 다음에 실행이 계속됩니다.
- try 절 실행 중에 예외가 발생하면 나머지 절이 생략됩니다. 그런 다음 해당 키워드가 except 키워드 뒤에 이라는 예외와 일치하면 except 절이 실행되고 try 문 다음에 실행이 계속됩니다.
- except 절에 명명 된 예외와 일치하지 않는 예외가 발생하면 외부 try 문으로 전달됩니다. 처리기를 찾지 못하면 처리되지 않은 예외이며 위와 같이 메시지가 과 함께 실행이 중지됩니다.
는하지만,이 설명을 읽은 후, 나는 I don't understand exceptions, but I should 실현하고있다.
간단히 말하면 다음과 같습니다. return None
문이 필요하며 이유는 무엇입니까? 또한 예외가 어떻게 작동하는지에 대한 잘못된 점은 무엇입니까?
예외 처리기가 루트 수준에 있기 때문에 이것은 나에게 의미가 있습니다. 임의로 깊게 중첩 된 함수에 동일한 개념을 적용 할 수 있으며 루트에서 예외가 있으며 여전히 루트에서 처리됩니다. 그렇다면, 제가 제공 한 링크에서 어떤 주장이 나오는지 알고 있습니까? –
죄송합니다. 그 기사에 대해 충분히 언급 할 수 없다. 필자는 이것이 라켓 프로그래머의 관점에서 작성된 것으로 생각하며 그 주요 목적은 라켓에서 파이썬의'try..except..finally' 행동을 구현하는 것입니다. 라켓을 알지 못해서, 그 기사의 대부분이 내 머리 위로 간다. 'try..except ..마침내 시작의 예는 이해할 수있는 물건입니다! :) – unutbu
도움 주셔서 감사합니다. 그래서 본질적으로 나는 마침내 어떻게 작동하는지 연구해야 할 필요가 있습니다. –