[python] 한 줄에 여러 문장을 넣는 방법?

이 질문을 정확히 숙고 할 제목이 무엇인지 잘 모르겠습니다.

나는 파이썬에서 약간의 이해를 알고 있지만 ‘읽기’가 매우 어려워 보입니다. 내가 보는 방식으로 이해력은 다음 코드와 동일하게 달성 할 수 있습니다.

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..파이썬 인쇄 호출에 일반적인 파이썬 사양을 추가 했습니다. 결국 \nbash와 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 : 물론, 한 줄로 할 때 항상 파이썬 공간과 들여 쓰기를 처리해야합니다. 실제로 우리는 여기서 엄격하게 “한 줄짜리”는 아니지만 \nBash와 Python 사이 의 이스케이프 시퀀스를 적절히 혼합 관리합니다. . 이것이 우리가 고전적인 멀티 라인 파이썬 프로그램을 다룰 수있는 방법입니다. 솔루션 샘플에서도이를 보여줍니다.