def functionName([arg1,arg2,...]): code
#!/usr/bin/python#coding:utf8#coding=utf8#encoding:utf8#encoding=utf8def fun(x=3,y='甜'): PRint '生成一個',x,'元',y,'口味的蛋糕'fun()fun(10)fun(y='奶油')
冗余參數:
#!/usr/bin/pythondef f(name="jim",age=20): print "name:%s age:%s" % (name,age)t=('tom', 25)d={'age':25,'name':'lucy'}f(*t)#name:tom age:25f(**d)#name:lucy age:25def f1(x,*args): print x,argst1=('tom',25,'male')f1(*t1)#tom (25,'male')def f2(x,**args): print x,argsd1={'x':1,'y':2}f2(**d1)#1 {'y':2}def f3(x,*arg1,**arg2): print x print arg1 print arg2f3(1,2,3,a=1,b=2,c=3)#1#(2,3)#{'a':1,'b':2,'c':3}
當你在函數定義內聲明變量的時候,它們與函數外具有相同名稱的其他變量沒有任何關系,即變量名稱對于函數來說是局部的。這稱為變量的作用域。所有變量的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。
a = 1def fun(a): print a a = 2 print afun(x)print a
結果:
121
解釋:
在函數中,我們第一次使用a的值的時候,Python使用函數聲明的形參的值。
接下來,我們把值2賦給a。a是函數的局部變量。所以,當我們在函數內改變a的值的時候,在主塊中定義的a不受影響。
在最后一個print語句中,我們證明了主塊中的a的值確實沒有受到影響。
如果你想要為一個定義在函數外的變量賦值,那么你就得告訴Python這個變量名不是局部的,而是全局的,我們使用global語句完成這一功能。
a=1def fun(): global a print a a = 2 print afun()print a
輸出:
122
解釋:
global語句被用來聲明a是全局的——因此,當我們在函數內把值賦給a的時候,這個變化也反映在我們在主塊中使用a的值的時候。
新聞熱點
疑難解答