이 질문을 정확히 숙고 할 제목이 무엇인지 잘 모르겠습니다.
나는 파이썬에서 약간의 이해를 알고 있지만 ‘읽기’가 매우 어려워 보입니다. 내가 보는 방식으로 이해력은 다음 코드와 동일하게 달성 할 수 있습니다.
for i in range(10): if i == 9: print('i equals 9')
이 코드는 현재 이해력이 작동하는 방식보다 훨씬 쉽게 읽을 수 있지만 한 줄에 두 개의 ‘:’을 가질 수 없다는 것을 알았습니다 …
내 질문:
다음 예제를 ONE LINE에 가져올 수있는 방법이 있습니까?
try:
if sam[0] != 'harry':
print('hello', sam)
except:
pass
이와 같은 것이 좋을 것입니다.
try: if sam[0] != 'harry': print('hellp', sam)
except:pass
그러나 다시 나는 충돌하는 ‘:’를 만난다. 나는 예외없이 try (또는 이와 비슷한) 를 실행할 수있는 방법이 있는지 알고 싶다. 낭비되는 선.
입력 해 주셔서 감사합니다 … 여기에 웃는 사람이 있습니다 : D
답변
불행히도, 파이썬으로는 원하는 것이 불가능합니다 (파이썬은 명령 줄 한 줄짜리 프로그램에 쓸모가 없습니다). 괄호를 명시 적으로 사용하더라도 구문 예외를 피할 수는 없습니다. 세미콜론으로 구분 된 일련의 간단한 문장으로 벗어날 수 있습니다.
for i in range(10): print "foo"; print "bar"
그러나 들여 쓰기 된 블록 ( if
) 을 도입하는 구문을 추가하자마자 줄 바꿈이 필요합니다. 또한,
for i in range(10): print "i equals 9" if i==9 else None
합법적이며 원하는 것과 비슷할 수 있습니다.
에 관해서는 try ... except
일이 : 그것은 완전히 쓸모없는 것 없이except
. try
“이 코드를 실행하고 싶지만 예외가 발생할 수 있습니다”라고 말합니다. 예외가 마음에 들지 않으면를 남겨 두십시오 try
. 그러나 당신이 그것을 넣 자마자, 당신은 “잠재적 인 예외를 처리하고 싶다”고 말합니다. 그런 pass
다음 구체적으로 처리하지 않기를 원한다고 말합니다. 그러나 그것은 코드가 계속 실행된다는 것을 의미합니다. 그렇지 않으면 그렇지 않습니다.
답변
다음과 같이 내장 exec 문을 사용할 수 있습니다.
exec("try: \n \t if sam[0] != 'harry': \n \t\t print('hello', sam) \nexcept: pass")
\n
개행은 어디에 있고 \t
들여 쓰기 (탭)로 사용됩니다.
또한 사용하는 공간을 세어 들여 쓰기가 정확하게 일치하도록해야합니다.
다른 모든 답변이 이미 말했듯이 당신이 정말로 그러나,이 사용할 수 물론 단지이다 가 한 줄에 넣어.
exec
임의의 파이썬 코드를 실행할 수 있기 때문에 (특히 웹 응용 프로그램을 만들 때) 매우 위험한 문장입니다.
답변
예,이 게시물은 8 살이지만 누군가가 여기에 와서 답변을 찾고있는 경우를 대비하여 세미콜론을 사용할 수 있습니다. 그러나 if / elif / else staments, for / while 루프를 사용할 수 없으며 함수를 정의 할 수 없습니다. 이것의 주요 용도는 함수를 정의하거나 if / elif / else / for / while 문 / 루프를 사용할 필요가없는 가져온 모듈을 사용할 때입니다.
다음은 노래의 아티스트, 노래 이름을 사용하고 가사를 찾기 위해 천재를 검색하는 예입니다.
import bs4, requests; song = input('Input artist then song name\n'); print(bs4.BeautifulSoup(requests.get(f'https://genius.com/{song.replace(" ", "-")}-lyrics').text,'html.parser').select('.lyrics')[0].text.strip())
답변
나는 이것을 하지 않는 것이 좋습니다 …
당신이 설명하는 것은 이해 가 아닙니다 .
파이썬 코드에 대한 PEP 8 스타일 가이드 내가 않는 것이 좋습니다는,이 복합 명령문에 대해 말하기를 가지고 :
- 복합 문장 (같은 줄에 여러 문장)은 일반적으로 사용하지 않는 것이 좋습니다.
예:
if foo == 'blah': do_blah_thing() do_one() do_two() do_three()
오히려 :
if foo == 'blah': do_blah_thing() do_one(); do_two(); do_three()
다음은 구별을위한 샘플 이해력입니다.
>>> [i for i in xrange(10) if i == 9]
[9]
답변
나는 이것을 장려하지 않지만 명령 줄에 있다고 말하면 파이썬 외에는 아무것도 없으며 실제로 하나의 라이너가 필요합니다.
python -c "$(echo -e "a='True'\nif a : print 1")"
우리가 여기서하는 일은 \n
파이썬 코드를 평가하기 전에 사전 처리하는 것입니다 .
슈퍼 해키입니다! 이와 같은 코드를 작성하지 마십시오.
답변
아마도 “and”또는 “or”
거짓 후 “또는”을 쓸 필요
사실 “and”를 쓸 필요가
처럼
n=0
def returnsfalse():
global n
n=n+1
print ("false %d" % (n))
return False
def returnstrue():
global n
n=n+1
print ("true %d" % (n))
return True
n=0
returnsfalse() or returnsfalse() or returnsfalse() or returnstrue() and returnsfalse()
결과:
false 1
false 2
false 3
true 4
false 5
또는 아마도
(returnsfalse() or true) and (returnstrue() or true) and ...
Google에서 “한 줄 파이썬에 여러 문장을 넣는 방법”을 검색하여 직접 질문에 답하지 않고 다른 사람이 이것을 필요로하는 것으로 검색했습니다.
답변
A의 python -c
중심의 솔루션, 당신은 배쉬 쉘을 사용 다만, 예이 예에서 같은 간단한 한 줄의 구문을 가질 수 있습니다 :
다음과 같이 ( except: pass
명령을 포함하여 샘플과 매우 유사한) 것을 원한다고 가정하십시오 .
python -c "from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n" OUTPUT_VARIABLE __numpy_path
작동하지 않으며이 오류가 발생합니다.
File "<string>", line 1
from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n
^
SyntaxError: unexpected character after line continuation character `
\n
이스케이프 시퀀스 의 Bash와 Python 해석 간의 경쟁 때문 입니다. 문제를 해결하기 위해 $'string'
Bash 구문을 사용 \n
하여 Python보다 Bash 해석 을 강제 실행할 수 있습니다 . 예제를 더 어렵게 만들기 위해 end=..\n..
파이썬 인쇄 호출에 일반적인 파이썬 사양을 추가 했습니다. 결국 \n
bash와 Python에서 각각 관심있는 텍스트에 대해 함께 해석 할 수 있습니다 . 결국 적절한 해결책은 다음과 같습니다.
python -c $'from __future__ import print_function\ntry:\n import numpy;\n print( numpy.get_include(), end="\\n" )\n print( "Hello" )\nexcept:pass\n' OUTPUT_VARIABLE __numpy_path
그러면 오류없이 올바른 클린 출력이 생성됩니다.
/Softs/anaconda/lib/python3.7/site-packages/numpy/core/include
Hello
참고 : 이것은 exec
문제가 여전히 동일하기 때문에 지향적 인 솔루션 에서도 잘 작동 합니다 (Bash 및 Python 인터프리터 경쟁).
참고 2 : 일부 \n
를 일부 대체하여 문제를 해결할 수는 ;
있지만 언제든지 작동하지 않습니다 (파이썬 구문에 따라 다름). 내 솔루션을 사용하면 고전적인 멀티 라인 파이썬 프로그램을 항상 “한 줄”할 수 있습니다.
참고 3 : 물론, 한 줄로 할 때 항상 파이썬 공간과 들여 쓰기를 처리해야합니다. 실제로 우리는 여기서 엄격하게 “한 줄짜리”는 아니지만 \n
Bash와 Python 사이 의 이스케이프 시퀀스를 적절히 혼합 관리합니다. . 이것이 우리가 고전적인 멀티 라인 파이썬 프로그램을 다룰 수있는 방법입니다. 솔루션 샘플에서도이를 보여줍니다.