나는 기여할 수 있지만 줄 바꿈을 사용하십시오.
x = lambda x,y: x-y if x<y \
else y-x if y<x \
else 0
파이썬이 oneliners를 작성할 수 있다는 아주 좋은 점을 잊지 마십시오.
a=b=0; c=b+a; d = a+b**2 #etc etc
그리고 람다 는 매우 강력하지만 1 개의 전체 기능을 대체하기위한 것이 아닙니다. 해킹 할 수 있음을 의미합니다 (위의 동료의 예를 빌리십시오).
makeTag = lambda tagName: "<{}>".format(tagName)
closeTag = lambda tagName: makeTag("/"+str(tagName))
openTag = lambda tagName: makeTag(tagName)
writeHMTLline = lambda tag,content: ""+opetTag(tag)+str(content)+closeTag(tag)
그러나 당신은 정말로 이것을 이렇게하고 싶습니까? 그것은 시간이 지나면 대부분 읽을 수 없으며, 끝이 뾰족한 것으로 시작하는 로프의 시작 부분과 같습니다.
Lambdas는 기능 지향 프로그래밍 (특히 기능 중심)의 기능을 맵, 필터링 및 축소하는 기능 중 하나의 유일한 기능입니다. 예를 들어 정수이고 2로 나눌 수있는 값의 문자 값 가져 오기
chrDev2 = lambda INT: chr(INT) if isinstance(INT,int) and INT%2==0 else INT
someStringList = map( chrDev2, range(30) )
>>> ['\x00', 1, '\x02', 3, '\x04', 5, '\x06', 7, '\x08', 9, '\n', 11, '\x0c', 13, '\x0e', 15, '\x10', 17, '\x12', 19, '\x14', 21, '\x16', 23, '\x18', 25, '\x1a', 27, '\x1c', 29]
복잡한 함수 (또는 여러 람다)를 정의하고 다른 람다 안에 넣으면 함수 expresions 함수로 사용할 수 있습니다.
def someAnon(*args): return sum(list(args))
defAnon = lambda list: [ x*someAnon(*list) for x in list]
그러나 파이썬은 다른 방법으로 함수 expresions를 지원합니다 : -lets 함수가 호출 superAwesomeFunction
되었고 그 함수가 매우 멋진 일을 할 수 있다고 말하면 , 함수를 호출하지 않고 변수에 할당 할 수 있습니다.
SAF = superAwesomeFunction # there is no () at the end,
이제 SAF를 호출하면 superAwesomeFunction 또는 메소드가 호출됩니다. Lib 폴더를 검색하면 대부분의 파이썬을 찾을 수 있습니다__builtin__
모듈이 그런 식으로 작성되었음을 알 수 있습니다. 때로는 사용자가 사용할 수있을만큼 필요하지 않은 특정 작업을 수행하는 일부 기능이 필요하지만 여러 기능이 필요하기 때문에 수행됩니다. 따라서 이름이 "superAwesomeFunction"인 2 개의 함수를 가질 수 없으며 "superAwesomeFunctionDoingBasicStuf"및 "realSuperAwesomeFunction"을 가질 수 있으며 "superAwesomeFunction"변수에 "realSuperAwesomeFunction"을 넣는 것보다 완료된 것입니다.
console importedModule.__file__
(실제 예 import os;os.__file__
) 을 입력하여 가져온 모듈의 위치를 찾은 다음 해당 디렉토리를 따라 importedModule.py 라는 파일로 이동하십시오. 하여 편집기에서 열고 자신의 "지식"을 최대화하는 방법을 찾으십시오.
이것이 당신과 다른 동료들에게 도움이되기를 바랍니다.