第一章 1肖油、第一份python 程序

1兼吓、所有的函數(shù)都有返回值, 如果有return語(yǔ)句 則執(zhí)行 return語(yǔ)句森枪,如沒(méi)有則返回None视搏。

#沒(méi)有返回值的函數(shù),其實(shí)返回的是None 
def run(name):
       print name,'runing'  '#函數(shù)體語(yǔ)句從下一行開(kāi)始县袱,并且第一行必須是縮進(jìn)的'

>>>run('xiaoming')
xiaoming runing

>>>print run('xiaoming')
xiaoming runing
None '#如果沒(méi)有ruturn語(yǔ)句浑娜,函數(shù)返回的是None'


'#有返回值的參數(shù)'
def run(name):
       return name+'runing'
>>>r = run('xiaoming')
>>>r
xiaoming runing

1、 如果一個(gè)函數(shù)的參數(shù)中含有默認(rèn)參數(shù)式散,則這個(gè)默認(rèn)參數(shù)后的所有參數(shù)都必須是默認(rèn)參數(shù) 筋遭,否則會(huì)拋出:SyntaxError: non-default argument follows default argument的異常。

def run(name,age=10,sex):  
       print name ,age ,sex  
SyntaxError: non-default argument follows default argument

2、調(diào)用的四種錯(cuò)誤漓滔。( 只要你有一個(gè)命名參數(shù)编饺,它右邊的所有參數(shù)也都需要是命名參數(shù))

def run(name,age,sex='boy'):  
       print name,age,sex  
  
>>>run()              #TypeError: run() missing 2 required positional arguments: 'name' and 'age'
>>>run(name='gg',23)  #SyntaxError: positional argument follows keyword argument
>>>run('gg',name='pp')#TypeError: run() got multiple values for argument 'name' 
>>>run(actor='xxxx')  #TypeError: run() got an unexpected keyword argument 'actor' 
  
第一種情況是丟失參數(shù)
第二種情況是:如果第一個(gè)使用了keyword綁定,后面的都必須使用keyword綁定        ?    
第三種情況:在一次調(diào)用中不能同時(shí)使用位置和keyword綁定  
第四種情況:不能使用參數(shù)列表外的關(guān)鍵字 

2响驴、默認(rèn)參數(shù)在函數(shù)定義段被解析透且,且只解析一次 。

>>>i = 5  
>>>def f(arg=i):  
>>>    print arg  
>>>i = 6  
>>>f()  
5  結(jié)果是5
image.png

感覺(jué)這里有認(rèn)知錯(cuò)誤:這里并不是只解析一次豁鲤,而是這樣調(diào)用i=6是錯(cuò)誤的石蔗,函數(shù)只會(huì)在函數(shù)體上方查找i的值, 而不是從調(diào)用處(f())上面畅形。

當(dāng)默認(rèn)值是一個(gè)可變對(duì)象养距,諸如鏈表、字典或大部分類(lèi)實(shí)例時(shí)日熬,會(huì)產(chǎn)生一些差異:

>>> def f(a, L=[]):  
>>>    L.append(a)  
>>>    return L  
  
>>> print f(1)  
>>> print f(2)  
>>> print f(3)  
[1]  
[1, 2]  
[1, 2, 3]  
  
#可以用另外一種方式實(shí)現(xiàn):  
>>> def f(a, L=None):  
>>>    if L is None:  
>>>        L = []  
>>>    L.append(a)  
>>>    return L  

3.1參數(shù)列的分拆:在使用可變數(shù)量的位置參數(shù)的函數(shù)時(shí)棍厌,可使用序列拆分操作符(*)

>>> args =[3,6]
>>> range(*args)
range(3, 6)
----------------------------
>>> a = [3,20,2]
>>> range(*a)
range(3, 20, 2)
——————————————————————————————————————————————
>>> a = [3,20,2,6]
>>> range(*a)
Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    range(*a)
TypeError: range expected at most 3 arguments, got 4

實(shí)驗(yàn)1:

>>> def product(*args,po):
        result = 1
        for arg in args:
            result *= arg
        print(result+po)

        
>>> product(1,2,3,4)
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    product(1,2,3,4)
TypeError: product() missing 1 required keyword-only argument: 'po'
>>> def product(*args,po=1):
        result = 1
        for arg in args:
            result *= arg
        print(result+po)

        
>>> product(1,2,3,4)
25

實(shí)驗(yàn)2:* 本身作為參數(shù) (這里 * 的作用是什么 沒(méi)有搞清楚, 我感覺(jué)像是阻止亂傳參數(shù)用的)

def heron(a,b,c,*,unit="meters"):
    print('----------')
>>> heron(1,2,3)
----------

    
>>> def heron(a,b,c,*,unit):
    print('---------')

>>> heron(1,2,3,unit='dfd')      `#可以這樣傳參數(shù)`
---------
>>>     
>>> heron(1,2,3,4)
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    heron(1,2,3,4)
TypeError: heron() takes 3 positional arguments but 4 were given
>>> heron(1,2,3)
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    heron(1,2,3)
TypeError: heron() missing 1 required keyword-only argument: 'unit'
>>> heron(1,3,4,5)
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    heron(1,3,4,5)
TypeError: heron() takes 3 positional arguments but 4 were given

如果將* 作為第一個(gè)參數(shù),那么不允許使用任何位置參數(shù)竖席,并強(qiáng)制調(diào)用該函數(shù)時(shí)使用關(guān)鍵字參數(shù):def print_set(*,paper="Letter",copies=1,color=False):...耘纱。可以不使用任何參數(shù)調(diào)用 print_set()毕荐,也可以改變某些或全部默認(rèn)值束析。但如果使用位置參數(shù),就會(huì)產(chǎn)生TypeError異常憎亚,比如print_set(“A4”)就會(huì)產(chǎn) 生異常员寇。

>>> def print_set(*,paper="Letter",copies=1,color=False):
    print('7452347')

    
>>> print_set()
7452347
>>> print_set(paper='djfa;lsd')
7452347

3.2、對(duì)映射進(jìn)行拆分時(shí)第美,可使用映射拆分操作符(**)

3.3蝶锋、總結(jié): 不定長(zhǎng)參數(shù)

def test(*arg,**kwargs):  
  print arg   
  print kwargs  
  print "-------------------"  
   
if __name__=='__main__':  
  test(1,2,3,4,5)  
  test(a=1,b=2,c=3)  
  test(1,2,3,a=1,b=3,c=5)  
   
output:  
(1, 2, 3, 4, 5)  
{}  

()  
{'a': 1, 'c': 3, 'b': 2}  

(1, 2, 3)  
{'a': 1, 'c': 5, 'b': 3}  

擴(kuò)展:non-keyword arg after keyword arg

在Python中,這兩個(gè)是python中的可變參數(shù)什往,arg表示任意多個(gè)無(wú)名參數(shù)扳缕,類(lèi)型為 tuple,*kwargs表示關(guān)鍵字參數(shù)别威,為dict躯舔,使用時(shí)需將 *arg放在 **kwargs之前,否則會(huì)有“SyntaxError: invalid syntax”的語(yǔ)法錯(cuò)誤

4省古、匿名函數(shù)

>>> def make_incrementor(n):  
...     return lambda x: x + n   #相當(dāng)于創(chuàng)建了一個(gè)一x為參數(shù)的匿名函數(shù)粥庄? 
...  
>>> f = make_incrementor(42)#f = make_incrementor(n=42),設(shè)置n的值  
>>> f(0)#其實(shí)調(diào)用的是匿名函數(shù)衫樊?  
42  
>>> f(1)  
43
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末飒赃,一起剝皮案震驚了整個(gè)濱河市利花,隨后出現(xiàn)的幾起案子科侈,更是在濱河造成了極大的恐慌载佳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臀栈,死亡現(xiàn)場(chǎng)離奇詭異蔫慧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)权薯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)姑躲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人盟蚣,你說(shuō)我怎么就攤上這事黍析。” “怎么了屎开?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵阐枣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我奄抽,道長(zhǎng)蔼两,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任逞度,我火速辦了婚禮额划,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘档泽。我一直安慰自己俊戳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布馆匿。 她就那樣靜靜地躺著品抽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甜熔。 梳的紋絲不亂的頭發(fā)上圆恤,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音腔稀,去河邊找鬼盆昙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛焊虏,可吹牛的內(nèi)容都是我干的淡喜。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼诵闭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼炼团!你這毒婦竟也來(lái)了澎嚣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瘟芝,失蹤者是張志新(化名)和其女友劉穎易桃,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锌俱,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晤郑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贸宏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片造寝。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吭练,靈堂內(nèi)的尸體忽然破棺而出诫龙,到底是詐尸還是另有隱情,我是刑警寧澤鲫咽,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布签赃,位于F島的核電站,受9級(jí)特大地震影響浑侥,放射性物質(zhì)發(fā)生泄漏姊舵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一寓落、第九天 我趴在偏房一處隱蔽的房頂上張望括丁。 院中可真熱鬧,春花似錦伶选、人聲如沸史飞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)构资。三九已至,卻和暖如春陨簇,著一層夾襖步出監(jiān)牢的瞬間吐绵,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工河绽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留己单,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓耙饰,卻偏偏與公主長(zhǎng)得像纹笼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苟跪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • ——素來(lái)偏愛(ài)厲勝男廷痘,無(wú)論過(guò)去多少年蔓涧。翻出2006年寫(xiě)的關(guān)乎厲勝男的文,只見(jiàn)大片大片的情愫流動(dòng)笋额,多少有些流于情緒化了...
    十七修閱讀 1,121評(píng)論 4 1
  • 第一章 七月的天氣元暴,燥熱,知了聒噪的叫個(gè)不停鳞陨。 夜晚昨寞,滿天星星托著笑彎了腰的月亮瞻惋,把天空照的通亮厦滤。陣...
    愛(ài)笑的大臉貓閱讀 156評(píng)論 0 0
  • 穿著小白鞋 帶著小妹妹 附近公園走走 呼吸春天的氣息 美麗如花朵 溫柔了歲月 驚艷了時(shí)光 等待著遠(yuǎn)方的你 不遠(yuǎn)萬(wàn)里...
    遇見(jiàn)霞霞閱讀 201評(píng)論 2 5