>è¡äºä¸ºäººè¦ç«¯æ£ï¼å¥½åè¡å¨ç½æ¼ãä¸å¯èå®´éé
ï¼ä¸å¯å¥½è²éªè¡ï¼ä¸å¯äºç«å«å¦ãæ»è¦æ«æ´ä¸»è¶ç¨£åºç£ï¼ä¸è¦ä¸ºèä½å®æï¼å»æ¾çºµç§æ¬²ã
>Let us live decently as in the daytime, not in carousing and drunkenness, not in sexual immorality and sensuality, not in discord and jealousy. Instead, put on the Lord Jesus Christ, and make no provision for the flesh to arouse its desires.(ROMANS 13:13-14)
#彿°(4)
##åçè§£å½æ°
妿æå¯¹å½æ°ççè§£åç卿¤åçå±é¢ï¼è¿æ²¡ææ·±å
¥å°å½æ°çå
æ¶µï¼æè
说åªè½åä¸äºç®åçäºæ
ï¼ä¹å¯è½æ¯é¢ä¸´è´è´£é®é¢çæ¶åä¸å¾ä¸ç¨åé¿ç代ç è§£å³ã
æä»¥ï¼è¿è¦å¯¹å½æ°è¿è¡æ·±å
¥æ¢ç©¶ã
###éå½
ä»ä¹æ¯éå½ï¼
>éå½ï¼è§éå½.
è¿æ¯å¯¹âéå½âæç²¾ç®çå®ä¹ãè¿ææ
äºç±»åçå®ä¹.
>ä»åæåº§å±±ï¼å±±éæåº§åºï¼åºéæä¸ªèåå°ï¼æ£å¨ç»å°åå°è®²æ
äºãæ
äºæ¯ä»ä¹å¢ï¼âä»åæåº§å±±ï¼å±±éæåº§åºï¼åºéæä¸ªèåå°ï¼æ£å¨ç»å°åå°è®²æ
äºãæ
äºæ¯ä»ä¹å¢ï¼âä»åæåº§å±±ï¼å±±éæåº§åºï¼åºéæä¸ªèåå°ï¼æ£å¨ç»å°åå°è®²æ
äºãæ
äºæ¯ä»ä¹å¢ï¼â¦â¦ââ
妿ç¨ä¸é¢çåéå½çå®ä¹ï¼æ»æè§æç¹è°ä¾ï¼æ¥ä¸ªä¸¥èç(éèªç»´åºç¾ç§)ï¼
>éå½ï¼è±è¯ï¼Recursionï¼ï¼åè¯ä¸ºéåï¼å¨æ°å¦ä¸è®¡ç®æºç§å¦ä¸ï¼æ¯æå¨å½æ°çå®ä¹ä¸ä½¿ç¨å½æ°èªèº«çæ¹æ³ã
æå
¸åçéå½ä¾åä¹ä¸æ¯ææ³¢é£å¥æ°åï¼è½ç¶åé¢ç¨è¿ä»£çæ¹å¼å®ç°äºå®ï¼ä½æ¯é£ç§æ¹æ³å¨çè§£ä¸ä¸å¾ç´æ¥ã妿å¿è®°äºè¿ä¸ªæ°åçå®ä¹ï¼å¯ä»¥åå°[ãç»ä¹ ã](./129.md)䏿¥çã
æ ¹æ®ææ³¢é£å¥æ°åçå®ä¹ï¼å¯ä»¥ç´æ¥åæè¿æ ·çææ³¢é£å¥æ°åéå½å½æ°ã
#!/usr/bin/env python
# coding=utf-8
def fib(n):
"""
This is Fibonacci by Recursion.
"""
if n==0:
return 0
elif n==1:
return 1
else:
return fib(n-1) + fib(n-2)
if __name__ == "__main__":
f = fib(10)
print f #Python 3: print(f)
æä¸è¿°ä»£ç ä¿åãè¿ä¸ªä»£ç çæå¾æ¯è¦å¾å°`n=10`çå¼ãè¿è¡ä¹ï¼
$ python 20401.py
55
`fib(n-1) + fib(n-2)`å°±æ¯åè°ç¨äºè¿ä¸ªå½æ°èªå·±ï¼å®ç°éå½ã
ä¸ºäºæç¡®éå½çè¿ç¨ï¼ä¸é¢èµ°ä¸ä¸ªè®¡ç®è¿ç¨ï¼èèå°æ¬¡æ°ä¸è½å¤ªå¤ï¼å°±è®©n=3ï¼
1. n=3,fib(3)ï¼èªç¶è¦èµ°`return fib(3-1) + fib(3-2)`忝
2. å
çfib(3-1),å³fib(2)ï¼ä¹è¦èµ°else忝ï¼äºæ¯è®¡ç®`fib(2-1) + fib(2-2)`
3. fib(2-1)å³fib(1)ï¼å¨å½æ°ä¸å°±è¦èµ°elif忝ï¼è¿å1ï¼å³fib(2-1)=1ãåçï¼å®¹æå¾å°fib(2-2)=0ãå°è¿ä¸¤ä¸ªå¼è¿åå°ä¸é¢ä¸æ¥ãå¾å°`fib(3-1)=1+0=1`
4. å计ç®fib(3-2)ï¼å°±ç®åäºä¸äºï¼è¿åç弿¯1ï¼å³fib(3-2)=1
5. æå计ç®ç¬¬ä¸æ¥ä¸çç»æï¼`fib(3-1) + fib(3-2) = 1 + 1 = 2`ï¼å°è®¡ç®ç»æ2ä½ä¸ºè¿åå¼
ä»èå¾å°fib(3)çç»ææ¯2ã
ä»ä¸é¢çè¿ç¨ä¸å¯ä»¥çåºï¼æ¯ä¸ªéå½çè¿ç¨ï¼é½æ¯åçæåçå·²ç¥æ¡ä»¶`a0=0,a1=1`æ¹åæºè¿ä¸æ¥ï¼ç´å°éè¿è¿ä¸ªæåºå±çæ¡ä»¶å¾å°ç»æï¼ç¶ååä¸å±ä¸å±åä¸åé¦è®¡ç®ç»æã
å
¶å®ï¼ä¸é¢çä»£ç æä¸ä¸ªé®é¢ãå 为`a0=0,a1=1`æ¯å·²ç¥çäºï¼ä¸éè¦æ¯æ¬¡é½å¤æä¸è¾¹ãæä»¥ï¼è¿å¯ä»¥ä¼åä¸ä¸ãä¼åçåºæ¬æ¹æ¡å°±æ¯åå§åæåç两个å¼ã
#!/usr/bin/env python
# coding=utf-8
"""
the better Fibonacci
"""
meno = {0:0, 1:1}
def fib(n):
if not n in meno:
meno[n] = fib(n-1) + fib(n-2)
return meno[n]
if __name__ == "__main__":
f = fib(10)
print f #Python: print(f)
#è¿è¡ç»æ
$ python 20402.py
55
以ä¸å®ç°äºéå½ï¼ä½æ¯ï¼è³å°å¨Pythonä¸ï¼éå½è¦æ
é使ç¨ãå¨ä¸è¬æ
åµä¸ï¼é彿¯è½å¤è¢«è¿ä»£æè
å¾ªç¯æ¿ä»£çï¼èä¸åè
çæç常常æ¯éå½è¦é«ãæä»¥ï¼æä¸ªäººç建议æ¯ï¼å¯¹ä½¿ç¨éå½è¦èèå¨å¯ï¼ä¸å°å¿å°±æ°¸è¿è¿è¡ä¸å»äºã
###ä¼ é彿°
åé¢å·²ç»å¤æ¬¡æå°å½æ°ä¹æ¯å¯¹è±¡ã
对äºå½æ°çåæ°ï¼æä»¬ä¹åäºä¸äºæ¢ç©¶ãéè¿åæ°ï¼å¯ä»¥å°æ°åãå符串ãå表ççé£äºå·²ç»å¦ä¹ è¿çPythonä¸é»è®¤ç±»åç对象以å¼ç¨çæ¹å¼ä¼ å
¥å½æ°ã
é
读äºä¸é¢ä¸¤å¥è¯ï¼ä½ æ¯å¦æä¸ä¸ªçæï¼é½æ¯å¯¹è±¡ï¼å½æ°è½ä¸è½ä½ä¸ºåæ°ä¼ ç»å½æ°å¢ï¼
çè¿æ ·ä¸ä¸ªä¸¾ä¾ï¼
>>> def bar():
print "I am in bar()"
>>> def foo(func):
func()
è¿éå®ä¹äºä¸¤ä¸ªå½æ°ï¼`bar()`å°±æ¯æä»¬çæç彿°ï¼è`foo()` åæäºè®¸ååï¼å
¶åæ°è¦æ±æ¯ä¸ä¸ªå½æ°ï¼å¦å彿°ä½å
ç代ç åæ æ³æ§è¡`func()`ï¼å 为è¿å°±æ¯è°ç¨ä¸ä¸ªå½æ°ã
æä»¥ï¼è¦è¿æ ·æ¥è°ç¨`foo()`彿°ã
>>> foo(bar)
I am in bar()
ä¸é¢çä¾åï¼æ¯ä¸æ¯å¯ä»¥ç®ä¸ä¸ªå°çåºç¨å¢ï¼
#! /usr/bin/env python
# coding:utf-8
def convert(func, seq):
return [func(i) for i in seq]
if __name__ == "__main__":
myseq = (111, 3.14, -9.21)
r = convert(str, myseq)
print r #Python 3: print(r)
è¿ä¸ªä¾åæè
类似çï¼å¸¸å¸¸è¢«ä½ä¸ºâä¼ é彿°âçä¾åãå¨`r = convert(str, myseq)`éé¢ï¼`str`æ¯å®ç°å符串转åç彿°`str()`çååã
ä½ å½ç¶ä¹å¯ä»¥èªå·±ç¼åä¸ä¸ªå½æ°ï¼æ¿æ¢`str`ã
#! /usr/bin/env python
# coding:utf-8
def convert(func, seq):
return [func(i) for i in seq]
def num(n):
if n%2 == 0:
return n**n
else:
return n*n
if __name__ == "__main__":
myseq = (3, 4, 5)
r = convert(num, myseq)
print r #Python 3: print(r)
å¨è¿ä¸ªä¾åä¸ï¼æåäºä¸ä¸ª`num(n)`彿°ï¼ç¶åå¨`r = convert(num, myseq)`ä¸ä½¿ç¨è¿ä¸ªå½æ°çåå`num`ãå
¶å®è·åé¢ç举ä¾ç±»ä¼¼ï¼åªæ¯ä¸ºäºè®©è¯»è
æ´æ·±å»çè§£æè°âä¼ å½æ°âï¼ä½¿ç¨çæ¯å½æ°ååï¼ä¸æ¯è°ç¨å½æ°ââè°ç¨å½æ°ä½¿ç¨`num()`ç弿 ·ã
###åµå¥å½æ°
彿°ä¸ä»
å¯ä»¥ä½ä¸ºå¯¹è±¡ä¼ éï¼è¿è½å¨å½æ°éé¢åµå¥ä¸ä¸ªå½æ°ãä¾å¦ï¼
#!/usr/bin/env python
#coding:utf-8
def foo():
def bar():
print "bar() is running" #Python 3ç¨æ·è¯·ä¿®æ¹ä¸ºprint()彿°ï¼ä¸åï¼ä»ç¥
print "foo() is running"
foo() #è°ç¨å½æ°
ä¸é¢ç代ç ä¸ï¼å¨å½æ°`foo()`éé¢å®ä¹äºå½æ°`bar()`ï¼è¿å°±æ¯åµå¥å½æ°ï¼è`bar()`å称为`foo()`çå
åµå½æ°ï¼å 为å®å¨`foo()`çéé¢å®ä¹çã
妿è°ç¨`foo()`彿°ï¼ä¼å¾å°å¦ä¸ç»æï¼
foo() is running
è¿è¯´æï¼å¨ä¸é¢çè°ç¨æ¹å¼åå
åµå½æ°åæ³ä¸ï¼`bar()`æ ¹æ¬å°±æ²¡æè¢«è°ç¨ï¼æè
è¯´å½æ°`foo()`并没ææç
§ä»ä¸å°ä¸ç顺åºä¾æ¬¡æ§è¡å
¶éé¢ç代ç ã
è¦æ³è®©`bar()`è¿ä¸ªå
åµå½æ°å¾å°æ§è¡ï¼å°±è¦å¨`foo()`彿°é颿¾ç¤ºå°è°ç¨å®ï¼æ¯å¦ï¼
#!/usr/bin/env python
#coding:utf-8
def foo():
def bar():
print "bar() is running"
bar() #æ¾ç¤ºè°ç¨å
åµå½æ°
print "foo() is running"
foo()
è¿æ ·çè¿è¡ç»æå°±æ¯ï¼
bar() is running
foo() is running
妿æåç¬è°ç¨å®ä¹çå
åµå½æ°ï¼æ¯ä¸æ¯å¯è¡å¢ï¼è°ç¨æ¹å¼å°±æ¯æä¸é¢ä»£ç ä¸è°ç¨`foo()`ï¼ä¿®æ¹ä¸ºè°ç¨`bar()`ï¼ç¶åè¿è¡ï¼æ¾ç¤ºç»ææ¥éä¿¡æ¯`NameError: name 'bar' is not defined`ã
æ¾ç¶è¿æ ·è°ç¨æ¯ä¸è¡çãå 为`bar()`彿°æ¯å®ä¹å¨`foo()`éé¢ç彿°ï¼å®çæçèå´ä»
å±éå¨`foo()`彿°ä½ä¹å
ï¼ä¹å°±æ¯å®çä½ç¨åæ¯`foo()`èå´ãæ¢ç¶å¦æ¤ï¼`bar()`å¨ä½¿ç¨åéçæ¶åä¹ä¼åå°`foo()`çææäºã
def foo():
a = 1
def bar():
b = a + 1
print "b=",b #Python 3çç¨æ·è¯·ä½¿ç¨print()
bar()
print "a=",a
foo()
#output:
#b= 2
#a= 1
å¨å½æ°`bar()`ä¹å¤ä½å¨`foo()`ä¹å
å®ä¹äº`a = 1`ï¼å¨`bar()`ä¸è½å¤è¢«é¡ºå©è°ç¨ãè¿ä¸ªå
³ç³»ä¸é¾çè§£ï¼å¯æ¯å¦æéå°ä¸é¢çï¼å°±è¿·è«äºã
def foo():
a = 1
def bar():
a = a + 1 #ä¿®æ¹ä¹å¤
print "bar()a=",a
bar()
print "foo()a=",a
foo()
妿è¿è¡è¿æ®µç¨åºï¼æ¯ä¼æ¥éçãéè¦çæ¥éä¿¡æ¯æ¯`UnboundLocalError: local variable 'a' referenced before assignment`ãè§å¯`bar()`éé¢ï¼ä½¿ç¨äºåé`a`ï¼æç
§è¯¥è¡¨è¾¾å¼ï¼Pythonè§£æå¨è®¤å®è¯¥åéåºæ¯å¨`bar()`å
é¨å»ºç«çï¼è䏿¯å¼ç¨çå¤é¨å¯¹è±¡ãæä»¥å°±æ¥éäºã
å¨Python 3ä¸ï¼ä½ å¯ä»¥ä½¿ç¨`nonlocal`å
³é®è¯ï¼å¦ä¸æ¼ç¤ºã
def foo():
a = 1
def bar():
nonlocal a
a = a + 1
print("bar()a=",a)
bar()
print("foo()a=",a)
foo()
#output
#bar()a= 2
#foo()a= 2
以ä¸è¯´æäºåµå¥å½æ°çåçï¼å¨ç¼ç¨å®è·µä¸ï¼æä¹ç¨å¢ï¼
def maker(n):
def action(x):
return x ** n
return action
å¨`maker()`彿°ä¸ï¼`return action`è¿åçæ¯`action()`彿°å¯¹è±¡ã
f = maker(2)
print f
m = f(3)
print m
`f`æå¼ç¨ç对象æ¯ä¸ä¸ªå½æ°å¯¹è±¡ââ`action()`彿°å¯¹è±¡ï¼`print f`å°±æ¯æå°è¿ä¸ªå½æ°å¯¹è±¡çä¿¡æ¯ãè§å¯æ§è¡ç»æï¼å¯¹æ¯ä¸è¿°ä»£ç ï¼ä¼ææææçã