๐Ÿ›ซ lambda(๋žŒ๋‹ค)

may_soouuยท2020๋…„ 8์›” 24์ผ
0

lambda

lambda : ๋Ÿฐํƒ€์ž„์—์„œ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ต๋ช… ํ•จ์ˆ˜
lambda ์ธ์ž : ํ‘œํ˜„์‹

  • ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ
l = list(range(1,11))
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 
m = list(map(lambda n:n*n, l))
print(m)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

๐Ÿ‘€ ์˜ˆ์ œ๋ณด๊ธฐ

def check_password(password):
   if len(password) < 8:
       return 'SHORT_PASSWORD'

   if not any(c.isupper() for c in password):
       return 'NO_CAPITAL_LETTER_PASSWORD'

   return True

* if ๋ฌธ ๋‘ ๊ฐœ๋ฅผ ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒŒํ•˜๊ธฐ

lambdas = [ 

]

def check_password_using_lambda(password):

    for f in lambdas:
        if f(password) is not None:
            return f(password)

    return True


print( check_password_using_lambda('123') )            # SHORT_PASSWORD
print( check_password_using_lambda('12356789f') )      # NO_CAPITAL_LETTER_PASSWORD
print( check_password_using_lambda('123456789fF') )    # True

์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•˜๋ฉด ์‹คํ–‰๋œ๋‹ค.

lambdas 
= [lambda x : 'SHORT_PASSWORD' if len(x) < 8 else None,
   lambda x : 'NO_CAPITAL_LETTER_PASSWORD' if not any(c.isupper() for c in x)else None]
def check_password_using_lambda(password):
    for f in lambdas:
        if f(password) is not None:
            return f(password)
    return True
print( check_password_using_lambda('123') )            # SHORT_PASSWORD
print( check_password_using_lambda('12356789f') )      # NO_CAPITAL_LETTER_PASSWORD
print( check_password_using_lambda('123456789fF') )    # True
  • types ๋ชจ๋“ˆ์— ์žˆ๋Š” type
types.FunctionType
types.LambdaType
types.GeneratorType
types.CoroutineType
types.AsyncGeneratorType
class types.CodeType(**kwargs)
types.CellType
types.MethodType
types.BuiltinFunctionType
types.BuiltinMethodType
types.WrapperDescriptorType
types.MethodWrapperType
types.MethodDescriptorType
types.ClassMethodDescriptorType
class types.ModuleType(name, doc=None)
class types.TracebackType
types.FrameType
types.GetSetDescriptorType
types.MemberDescriptorType
class types.MappingProxyType(mapping)

์ถœ์ฒ˜ : https://docs.python.org/3.8/library/types.html

==== ์ˆ˜์ •์ค‘ ===

thread(์“ฐ๋ ˆ๋“œ)

  • ์“ฐ๋ ˆ๋“œ :
    ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
    ์“ฐ๋ ˆ๋“œ๋Š” ๊ทธ๋ƒฅ ์ผ๊พผ,,? ์ผ๊พผ์ด ๋งŽ์œผ๋ฉด ์ผ์„ ๋งŽ์ด ํ•ด์„œ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋งŽ์œผ๋ฉด ์ข‹์€๊ฑด๋ฐ, ๋˜ ๋งŽ์„์ˆ˜๋ก ๋ฌด์กฐ๊ฑด ์ข‹์ง€๋Š” ์•Š๋‹ค๊ณ  ํ•œ๋‹ค. ์•„์ง ๊นŠ์ด ๊ณต๋ถ€ํ•˜์ง€ ๋ชปํ•ด์„œ
    ํ”„๋กœ๊ทธ๋žจ = ํ”„๋กœ์„ธ์Šค + ์“ฐ๋ ˆ๋“œ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋˜์–ด ์žˆ์Œ
    ์ž‘์—…๊ด€๋ฆฌ์ž๋งŒ ๋ด๋„, ์Šค๋ ˆ๋“œ๊ฐ€ ๋‚˜์˜ด
    ํ•œ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค์™€ ์—ฌ๋Ÿฌ๊ฐœ์œผ ใ…ฃ์“ฐ๋ ˆ๋“œ
    ์“ฐ๋ ˆ๋“œ : ๊ทธ๋ƒฅ ์ผ๊พผ ,, ์ผ๊พผ์ด ๋งŽ์œผ๋ฉด ์ผ์ด ๋งŽ์ด ํ•จ
    import time
    def ์ฃผ๋ฌธ๋ฐ›๊ธฐ():
    	for i in range(5):
       		print(f'์ฃผ๋ฌธ๋ฐ›๊ธฐ {i}')
             	time.sleep(1)
    def ์šฐํŽธ๋ฐœ์†ก():
    	for i in range(5):
       		print(f'์šฐํŽธ๋ฐ›๊ธฐ {i}')
             	time.sleep(0.5)
    ์ฃผ๋ฌธ๋ฐ›๊ธฐ()
    ์šฐํŽธ๋ฐœ์†ก()
    ์ฃผ๋ฌธ ๋ฐ›๊ธฐ๊ฐ€ ๋๋‚˜์•ผ ์šฐํŽธ๋ฐœ์†ก์ด ๋‚˜์˜ด 
     ์ด๊ฑด ์“ฐ๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑํ•จ . ๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑ 
     
    ๋งŒ์•ฝ ์ฃผ๋ฌธ๋ฐ›๊ธฐ์™€ ์šฐํŽธ๋ฐœ์†ก ๋™๊ธฐ์— ํ•˜๊ณ  ์‹ถ๋‹ค > ์Šค๋ ˆ๋“œ๋ฅผ ๋Š˜๋ ค์ฃผ๋ฉด ๋จ 
    
    
    import time
    import threading
    

def ์ฃผ๋ฌธ๋ฐ›๊ธฐ():
for i in range(5):
print(f'์ฃผ๋ฌธ๋ฐ›๊ธฐ {i}')
time.sleep(1)
def ์šฐํŽธ๋ฐœ์†ก():
for i in range(5):
print(f'์šฐํŽธ๋ฐ›๊ธฐ {i}')
time.sleep(0.5)
th1 = threading.Thread(target=์ฃผ๋ฌธ๋ฐ›๊ธฐ)
th2 = theeading.Thread(target = ์šฐํŽธ๋ฐœ์†ก)

th1.start()
th2.start()

์“ฐ๋ ˆ๋“œ๋Š” ๋ฌด์กฐ๊ฑด ๋งŽ์€๊ฒŒ ์ข‹์€ ๊ฑด ์•„๋‹˜.
์˜คํžˆ๋ ค ํšจ์œจ์ด ๋” ๋–จ์–ด์งˆ ์ˆ˜ ๋„ ์žˆ์Œ

ํ„ฐ๋ฏธ๋„ ์ข…๋ฃŒํ•ด๋„ ์“ฐ๋ ˆ๋“œ๋Š” ์‚ด์•„ ์žˆ์Œ
๋ฐ๋ชฌ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ฃผ๋ฉด > ๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ฃฝ์œผ๋ฉด ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๊ฐ€ ์•ˆ๋ผ๋„ ์ข…๋ฃŒ๋จ.
๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ๋Š” ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ

ํŒŒ์ด์ฌ์—์„œ ์“ฐ๋ ˆ๋“œ๋Š” gil

profile
back-end ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€