programing

파이썬에서 no-op을 수행하는 표준 방법은 무엇입니까?

testmans 2023. 6. 19. 21:17
반응형

파이썬에서 no-op을 수행하는 표준 방법은 무엇입니까?

저는 종종 if /elif /other가 python으로 구성되어 있는지 쓰는 제 자신을 발견하고 발생할 수 있지만 해당 작업이 아무것도 하지 않는 옵션을 포함하고 싶습니다.나는 만약 진술이 있다면 그것들을 제외할 수 있다는 것을 알고 있지만, 가독성을 위해 그것들을 모두 포함하는 것이 도움이 된다는 것을 발견했습니다. 그래서 당신이 코드를 훑어보고 있다면 각 옵션의 결과를 볼 수 있습니다.no-op 코드화 방법은 무엇입니까?현재 저는 다음과 같이 작업하고 있습니다.

no_op = 0

if x == 0:
    y = 2 * a
elif x == 1:
    z = 3 * b
elif x == 3:
    no_op

(코드는 사실 그것보다 꽤 길고, 더 복잡합니다.이는 구조를 설명하기 위한 것입니다.

변수를 노옵으로 사용하는 것을 좋아하지는 않지만, 제가 생각할 수 있는 가장 깔끔한 방법입니다.더 좋은 방법이 있습니까?

no-op에 패스 사용:

if x == 0:
  pass
else:
  print "x not equal 0"

여기 또 다른 예가 있습니다.

def f():
  pass

또는:

class c:
  pass

어때.pass?

nop으로 동작하는 함수가 필요하면 시도합니다.

nop = lambda *a, **k: None
nop()

때때로 종속성을 선택적으로 설정할 때 다음과 같은 작업을 수행합니다.

try:
    import foo
    bar=foo.bar
    baz=foo.baz
except:
    bar=nop
    baz=nop

# Doesn't break when foo is missing:
bar()
baz()

표준 출력에 라인 피드가 없고 빈 문자열을 인쇄할 수 있습니다.이것은 린터가 당신이 사용하는 것을 금지하는 경우에 유용할 수 있습니다.pass불필요하지만 주석을 위한 줄이 필요한 경우:

print('', end='')  # This does next to nothing

빈칸으로 사용printCPU 사이클 낭비 외에 부작용은 거의 없습니다.

$ echo "print('', end='')  # This does next to nothing" > main.py
$ python3 main.py
$ 

참고: 사용pass여기서는 구문적으로 옳았을 것이지만, 링터들은 다음과 같이 불평할 수 있습니다.

$ echo "pass  # This does next to nothing" > main.py
$ python3 main.py
$ 

...(builtins.ellipsis의 실행 가능한 대안으로 언급되지 않았습니다.pass표현 맥락에서.

def f(condition: bool) -> None:
    if condition:
        print("hello ", end="")
    else:
        pass  # noop

    print("world") if condition else ...


f(False)  # ''
f(True)   # 'hello world'

인수가 없는 'return'은 분명히 no-op이기 때문에, 일부 코드에서는 Python의 일부 난독화된 'virus'를 분석하는 과정에서 한동안 저를 괴롭혔습니다.

내 책상 위의 간단한 실습은 다음과 같은 행을 사용합니다.

dummy = 0

일반적인 코더(다른 일반적인 프로그래밍 언어에서 온 코더도)는 즉시 그것을 이해할 것입니다.

언급URL : https://stackoverflow.com/questions/690622/whats-a-standard-way-to-do-a-no-op-in-python

반응형