나는이 좀 기능을 남용하고,하지만 난 여전히 그것을 할 수 있는지 궁금 생각 - 내가 좋아하는 뭔가하고 싶은 다음 print 1
부분 만 ==이 경우 실행되도록"with"블록에서 조건부로 코드를 실행할 수 있습니까?
with conditional(a):
print 1
을 참된. 이것이 가능합니까?
편집 : 아래 사람 상태와 마찬가지로 이것은 끔찍한 스타일입니다. 수수께끼 일 뿐이에요. 없는 등
나는이 좀 기능을 남용하고,하지만 난 여전히 그것을 할 수 있는지 궁금 생각 - 내가 좋아하는 뭔가하고 싶은 다음 print 1
부분 만 ==이 경우 실행되도록"with"블록에서 조건부로 코드를 실행할 수 있습니까?
with conditional(a):
print 1
을 참된. 이것이 가능합니까?
편집 : 아래 사람 상태와 마찬가지로 이것은 끔찍한 스타일입니다. 수수께끼 일 뿐이에요. 없는 등
는 조건문이 이미 if
문 사용하여 공급되기 때문에 그렇게 할 진짜 이유가 없다 : 당신은 그냥 재미을 요청하는 경우,
if a == True:
print 1
을하지만, 대답은 당신이 할 수없는 입니다 정말입니다. with
콘텐츠 실행을 중지하려면 메서드에서 conditional
이 어떻게 든 실행을 중지해야합니다. 내가 코멘트에 기소 된보고 및 :하지만 그렇게 할 수있는 유일한 방법은 당신이 처리하는 경우 a != True
편집에 대한 try
문으로 with
을 포장하지 않는 한 다른 코드가 실행되지 의미 예외를 제기한다 OP의 조건 (a == True
)을 사용하여 투표하기 나는 이것을 조건문 테스트를위한 Python의 숙어 인 if a
으로 바꾸는 것을 고려했다. 그러나 우리는 을 모른다. OP가 염두에 두었던 점과 그가 실제로 부울이 되길 원하는지 여부는 (어느 쪽이 if a
을 전달할 것인가) 인 경우 으로 남겨두기로 결정했다. 입니다.
-1 :'if a == True'. 그냥 '만약'이라고 말하십시오. –
@ S.Lott : 질문에 필요한 것과 정확히 일치하기 때문에 응답을 왜곡하지 않아도됩니다. "a == True' 인 경우에만"라는 질문입니다. –
-1 : S.Lott은 완전히 옳습니다. 이것은 끔찍한 스타일입니다. – nikow
if a is True:
print 1
with
statement 심장 약한, 집에서 시도하지 마십시오는 신뢰할 수있는 입력 - 종료 내용을 제공하기위한 것이다.
나는 당신이 차를 코카콜라로 달릴 수 있는지를 묻고 있었고, 당신은 "연료를 사용해야한다"고 대답했다. :) 내가 말했듯이, 이것은 기능을 남용하는 것이지만 프로그래밍 수수께끼라고 생각한다. ? – olamundo
유일한 방법은 인수가 false 인 경우 conditional
에 예외를 발생시키는 것입니다. with
본문은 실행되지 않지만 뒤 따르는 코드도 마찬가지입니다. 물론 except
또는 finally
절까지.
의이 내가 __enter__와 __exit__ 기능 클래스 A가 있다고 가정 해 봅시다 : 객체에 다 다른 1에 해당 b를가 통과 할 경우 확인합니다
class A:
def __init__(self, i):
self.b = i
def __exit__(*args, **kwargs):
print "exit"
def __enter__(*args, **kwargs):
print "enter"
그리고 함수 B를.
with b(A(1)):
print 10
enter
10
exit
을하지만 B는 작업 할 아무것도하지 않습니다와 로 통과하면 그것은 AttributeError가 발생합니다 :
def b(c):
if c.b == 1:
return c
else:
pass
내가 얻을 수 있습니다. 해결책은 try/except 블록 안에 with b(A(1)):
을 넣는 것입니다. 그러나 나는 이것을하는 것을 권장하지 않는다.
나는 그 누구도 읽을 수없는 코드로 끝낼 것이라고 생각합니다!'if'는 아마도 가장 독창적 인 프로그래밍 구조 중 하나 일 것입니다. – jkp
사람들은 펄 골프 (http://en.wikipedia.org/wiki/Perl_golf#Perl_golf)를하는 이유는 무엇입니까? 가끔은 당신이 그것을 할 수 있는지보기를 원합니다. – olamundo
-1 : 제발하지 마세요. 부디. –