¸üÐÂʱ¼ä:2019Äê09ÔÂ12ÈÕ16ʱ34·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
1. Æ«º¯ÊýÊÇʲô
ÏȻعËÒ»ÏÂÎÒÃÇʹÓú¯ÊýµÄ¹ý³Ì¡£Ê×ÏÈÎÒÃÇÏȶ¨ÒåÒ»¸öº¯Êý£¬Èç
def func():
print("in func")
È»ºóÎÒÃǵ÷ÓÃÕâ¸öº¯Êý£¬¼´Ö´ÐдúÂ룬 Èç
func() # ½«»á´òÓ¡³ö in func
½ÓÏÂÀ´ÎÒÃÇ˵һ˵ƫº¯Êý¡£
´î¸ÁºÃÎÒÊÇ C ¸ç¡£
¼ÙÉèÎÒͨ¹ýѧϰ±à³Ì×ßÉÏÈËÉúá۷壬Ñü²øÍò¹á£¬½ÓÏÂÀ´ÐèÒª¹ºÖ÷¿²ú°²¼ÒƽÌìÏ¡£½ÓÏÂÀ´ÎÒÃǵÄʱ¼äºÜ±¦¹ó£¬ÎÒ²»Ì«¿ÉÄܰÑ×Ô¼ºÍ¶Èëµ½ ¿´ÅÌ¡¢Ñ¡ÅÌ¡¢Òé¼Û¡¢½»¶¨½ð¡¢Ç©ºÏͬ¡¢¹ý»§µÈºÄ·Ñʱ¼äµÄÊÂÇéÉÏ¡£´ËʱÎÒ¿ÉÄܻῼÂÇÇëÒ»¸ö·¿²úÖнéÀ´°ïÖúÍê³ÉÕâһϵÁÐÊÂÇé¡£Ëùνƫº¯Êý£¬Í¨Ë×½âÊÍÆ«º¯Êý¾ÍÊÇÎÒÃǵÄÒ»¸ö·¿²úÖн顣²»¹ÜÊÇÎÒ×Ô¼º»¹ÊÇ·¿²úÖнéÂò·¿×öµÄ²½ÖèÆäʵ¶¼ÊÇÒ»Ñù£¬Ö»ÊÇÊÇÖн黨ʱ¼äÈ¥Íê³ÉµÄ¡£
Õâ¾ÍºÃ±ÈÓÐÒ»¸öÂò·¿µÄº¯Êý
def ΪC¸çÂò·¿(Éí·ÝÖ¤,ÎÞ·¿Ö¤Ã÷,µ¥ÉíÖ¤Ã÷):
print("¿ªÊ¼Âò·¿")
Èç¹ûÊÇÎÒÃÇ×Ô¼ºÇ×Á¦Ç×ΪÔòÐèÒªÕâÑùµ÷ÓÃ
ÎÒ.ΪC¸çÂò·¿('Éí·ÝÖ¤ºÅÂë','Ö¤Ã÷·¿²úµÄÖ¤¾Ý','Ö¤Ã÷µ¥ÉíµÄÖ¤¾Ý')

2. ʹÓ÷½Ê½
? ½ÓÏÂÀ´ÎÒÃÇÀ´¿´¿´Æ«º¯ÊýµÄʹÓ÷½Ê½¡£ÏȻص½¹ÊÊ£¬ÎÒÏȰÑÂò·¿²Ù×÷ÐèÒªµÄÊý¾Ý½»¸øÖн鹫˾£¬È»ºóÓÉÖн鹫˾µÄÒ»¸öÔ±¹¤ÌæÎÒÖ´ÐÐÕâ¸öÂò·¿²Ù×÷¼´¿É¡£
СÕÅ = Öн鹫˾('Éí·ÝÖ¤ºÅÂë','Ö¤Ã÷·¿²úµÄÖ¤¾Ý','Ö¤Ã÷µ¥ÉíµÄÖ¤¾Ý')
СÕÅ.ΪC¸çÂò·¿()
? ËùÒԷº¯ÊýÆäʵ¾ÍÊÇÒ»¸ö´úÀí¡£ÎÒÃÇΪÁ˸ü¼òµ¥µÄ²Ù×÷£¬¿ÉÒÔʹÓּ¯Êý´úÀí°ïÎÒÃÇÈ¥Ö´ÐÐÒ»¶Î´úÂëÂß¼£¬µ±È»Õâ¸ö¹¦ÄÜËùÐèµÄ²ÎÊýÊý¾ÝÒªÇóÎÒÃÇ×Ô¼ºÌṩ£¬×ܲ»ÄÜÈÃÖнéÓÃËûµÄÉí·ÝÖ¤¸ø C ¸çÂò·¿°É¹þ¹þ¹þ¡£
ÑÔ¹éÕý´«¡£¿´¿´Æ«º¯ÊýµÄÓ÷¨¡£
# 1 ´´½¨Öнé¶ÔÏó ²¢¸øÕâ¸ö¶ÔÏ󴫲Π¸æËßËû×öʲôÊÂÇé ÐèÒªÄÄЩÊý¾Ý
# partial¶ÔÏó º¯Êý´úÂëÈë¿Ú(º¯ÊýÃû) º¯Êý²ÎÊý
partial¶ÔÏó = functools.partial(func, *args, **keywords)
# 2 ÈÃÖнé¶ÔÏó Ö´ÐÐÎÒÃÇίÍиøËûµÄÈÎÎñ
partial¶ÔÏó()
Ó÷¨Ã÷È·ÁË£¬½ÓÏÂÀ´ÎÒÃÇ¿´¿´¾ßÌå´úÂë¡£
from functools import partial # µ¼ÈëÆ«º¯Êý
# ¶¨Òå²Ù×÷
def add(number1, number2, number3):
return number1 + number2 + number3
# ¶¨Ò寫partialº¯Êý¶ÔÏó
p = partial(add, 100, 99, 100)
# µ÷ÓÃpartial¶ÔÏó Ö´Ðй¦ÄÜ
print(p()) # Ö´Ðнá¹ûÊÇ 299
È»¶øÕâ²¢²»ÊÇÆ«º¯ÊýµÄËùÓÐʹÓ÷½Ê½£¬ÒÔÉÏÕâÖÖÇé¿öÌ«ÀíÏë¡£¸ü¼Óʵ¼ÊµÄÇé¿öÊÇÕâÑùµÄ¡£
Ê×ÏȻص½¹ÊÊ£¬ÓпÉÄÜ C ¸çÔÚίÍÐÖнéµÄʱºòֻίÍÐÁËÉí·ÝÖ¤²¢Ã»ÓÐÌṩÆäËûÖ¤Ã÷£¬ÄÇÕâʱºò СÕÅÈ¥²Ù×÷ʱ¾Í»áȱÉÙÖ¤Ã÷¡£ËùÒÔµ± C ¸çÈ¥ÈÃСÕŽøÐÐÂò·¿²Ù×÷ʱ»¹Ó¦¸Ã²¹ÆëÊ£ÓàËùÐèµÄÊý¾Ý¡£
»Øµ½python´úÂ룬ͬÀíÎÒÃÇÔÚ´´½¨Æ«º¯Êý¶ÔÏóʱ¿ÉÒÔÖ»´«ÈëÒ» ²¿·Ö ²ÎÊý£¬ÔÚÖ´ÐÐÆ«º¯Êý¶ÔÏóʱÔÙ´«ÈëÊ£Óà ²¿·Ö µÄ²ÎÊý¡£(Ëùν partial ¾ÍÊDz¿·ÖµÄÒâ˼£¬¶à¶àÀí½âÕâÀﲿ·ÖµÄº¬Òå)
ËùÒÔ¿ÉÄÜ´úÂë»á±ä³ÉÕâÑù
from functools import partial # µ¼ÈëÆ«º¯Êý
# ¶¨Òå²Ù×÷
def add(number1,number2,number3):
return number1 + number2 + number3
# ¶¨Ò寫partialº¯Êý¶ÔÏó
p = partial(add, 100, 99)
# µ÷ÓÃpartial¶ÔÏó Ö´Ðй¦ÄÜ
print(p()) # ±¨´í ÒòΪȱÉÙÒ»¸ö±ØÒªµÄλÖòÎÊý
print(p(100)) # Ö´Ðнá¹ûÊÇ 299
print(p(101)) # Ö´Ðнá¹ûÊÇ 300
3. Æ«º¯Êý¶ÔÏóÆÊÎö
ÔÙ´ÎÇ¿µ÷һϠƫº¯Êý¾ÍÊÇÒ»¸öÖн飬Öнé°ïÎÒÃÇÖ´ÐÐίÍеÄÈÎÎñ£¬²¢ÇÒÒªÇóÎÒÃÇÌṩÈÎÎñÏà¹ØÊý¾Ý¡£
˵µ½Õâ¶ù´ó¼Ò¾Í»áºÜºÃÆæÆ«º¯ÊýÊÇÔõô×öµ½µÄ¡£
Ê×Ïȵ±ÎÒÃÇ´´½¨Ò»¸ö partial ¶ÔÏóʱÕâ¸ö¶ÔÏóÖ»×öÁËÒ»¼þʾÍÊÇ ±£´æÐèÒªÖ´ÐеÄÄ¿±ê´úÂëÈë¿Ú(º¯ÊýÃû)¡£
from functools import partial # µ¼ÈëÆ«º¯Êý
# ¶¨Òå²Ù×÷
def add(number1,number2,number3):
return number1 + number2 + number3
# ¶¨Ò寫partialº¯Êý¶ÔÏó
p = partial(add, 100, number2=99)
# »ñÈ¡¶ÔÏóÖб£´æµÄ Ä¿±ê´úÂëÈë¿Ú
print(p.func) #
print(add) #
# ͨ¹ý½á¹ûÑéÖ¤: µ±ÎÒÃÇʹÓà p(100)ʱ»áÖ´ÐÐ p ¶ÔÏóµÄ__call__·½·¨µ¼ÖÂÖ´ÐÐ p.func
# Èç¹ûÏëÒª²é¿´ partial ¶ÔÏóÏà¹Ø²ÎÊý
print(p.args) # »ñȡĿ±ê´úÂë Ïà¹ØµÄλÖòÎÊý (100,)
print(p.keywords) # »ñȡĿ±ê´úÂë Ïà¹ØµÄ¹Ø¼ü×Ö²ÎÊý {'number2': 99}
? ÔÙ´ÎÇ¿µ÷һϠƫº¯Êý¾ÍÊÇÒ»¸öÖн飬Öнé°ïÎÒÃÇÖ´ÐÐίÍеÄÈÎÎñ£¬²¢ÇÒÒªÇóÎÒÃÇÌṩÈÎÎñÏà¹ØÊý¾Ý¡£
4. Ó¦Óó¡¾°
½ÓÏÂÀ´ÔÛÃÇ˵һ˵ƫº¯ÊýÔÚʵ¼Ê¿ª·¢ÖеÄÓ¦Óó¡¾°:
Æ«º¯Êý¿ÉÒÔÌáǰ¸øº¯Êý°ó¶¨Ò»²¿·Ö²ÎÊý£¬ÔÚÖ´ÐÐʱÔÙ´«ÈëÁíÒ»²¿·Ö²ÎÊýÏԵúܼò½à¡£±ÈÈçÎÒÃÇÓÐÒ»¸öº¯ÊýÐèÒª¼ÆËãÁ½¸öÈÕÆÚÖ®¼äµÄÌìÊý¡£
def getDays(date1, date2):
ʵÏÖÊ¡ÂÔ
return ¼ä¸ôÌìÊý
ÔںܶàÇé¿öÏ¿ÉÄܵÚÒ»¸ö²ÎÊý¾ÍÊÇÒ»¸ö¹Ì¶¨µÄÈÕÆÚ ±ÈÈç
# Çó'2019-07-01',ÏÖÔÚÎÒÏëÒª¼ÆËãÕâÒ»Ììµ½'2050-01-01'ÒÔ¼° µÄÌìÊý
getDays('2019-07-01', '2050-01-01')
# Çó'2019-07-01'µ½'2020-01-01'ÒÔ¼° µÄÌìÊý
getDays('2019-07-01', '2020-01-01')
getDays('2019-07-01', '2017-01-01')
getDays('2019-07-01', '2017-08-17')
# Èç¹ûÓÐÆ«º¯Êý ¿ÉÒÔÌáǰÌṩ²¿·Ö²ÎÊý Õâôд¼´¿É
from functools import partial
g1 = partial(getDays, '2019-07-01')
g1('2050-01-01')
g1('2020-01-01')
g1('2017-01-01')
g1('2017-08-17')
# Èç¹ûÆðʼÈÕÆÚÐèÒª±ä»¯
g2 = partial(getDays, '2018-09-08')
g2('2050-01-01')
g2('2020-01-01')
g2('2017-01-01')
g2('2017-08-17')
¶øÕâÑùÌṩµÄÓï·¨±ãÀûÊÇ º¯ÊýµÄĬÈϲÎÊýËù²»ÄÜ´ïµ½µÄ¡£
ÍÆ¼öÁ˽⣺
python+È˹¤ÖÇÄܿγÌ
´óÊý¾ÝÅàѵ¿Î³Ì
±±¾©Ð£Çø