Python之函数与变量(一)
1,函数参数
1.1默认值参数
在Python中,可以在声明函数的时候,预先为参数设置一个默认值,当调用函数,如果某个参数具有默认值,则可以不向函数传递该参数,这时,函数将使用声明函数时为该参数设置的默认值来运行.
1 def <函数名>(参数=默认值): 2 <函数语句> 3 return <返回值>
1.2参数传递
在Python中参数值的传递是按照声明函数时参数的位置顺序来进行传递的,即位置参数.另一种传递参数的方法---关键字参数.
提供关键字参数调用函数时,要在调用函数名后的圆括号里写出形式为"关键字=参数值".混合使用关键字和位置参数时,必须将位置参数写到前面.而且不能有重复的情况.
def mult_test(a, b, c): return a * b * c print(mult_test(2, c=5, a=6)) --------------结果----------------------- Traceback (most recent call last): File "test.py", line 4, in <module> print(mult_test(2, c=5, a=6)) TypeError: mult_test() got multiple values for argument 'a' ***Repl Closed***
1.3 不定长参数
在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参,它将会会将所有的实参保存到一个元组中.
注:
①带星号的形参只能有一个.
②带星号的形参可以和其他参数配合使用.
③可变参数不是必须写在最后,但是注意,带*的参数后的所有参数,必须以关键字参数的形式传递.若在形参开头直接写一个*,则后面所有的形参必须以关键字的形式传递.
1 #第一个参数给a,剩下的位置参数给b的元组,第三个参数必须使用关键字参数 2 def fn(a,*b,c): 3 print('a =',a) 4 print('b =',b) 5 print('c =',c) 6 fn(10,20,30,50,c = 80)
④.*形参只能接收位置参数,而不能接收关键字参数.
⑤**形参可以接收其他的关键字参数,它会将这些参数统一保存到一个字典中,字典的key是参数的名字,字典的value是参数的值.**形参只能有一个,并且必须写在所有形参之后.
1 def fn3(b,c,**a) : 2 print('a =',a,type(a)) 3 print('b =',b) 4 print('c =',c) 5 fn3(b=1,d=2,c=3,e=10,f=20)
#以下示例,可以传入任意数量的参数
def test(*args, **kwargs):
print(args)
print(kwargs)
test(1, 2, 3, 4, 5, a=10, b=12, c=45)
--------------结果-----------------------
(1, 2, 3, 4, 5)
{'a': 10, 'b': 12, 'c': 45}
***Repl Closed***
1 # **形参为函数中使用大量的默认值提供了方便,不用把大量的默认值全放在函数声明中,而是把它放入到程序中 2 def cube(name,**nature): 3 all_nature={'x':1, 4 'y':1, 5 'z':1, 6 'color':'white', 7 'weight':1} 8 all_nature.update(nature) 9 print(name,'立方体的属性:') 10 print('体积:',all_nature['x']*all_nature['y']*all_nature['z']) 11 print('颜色:',all_nature['color']) 12 print('重量:',all_nature['weight']) 13 14 15 cube('first') #只给出必要的参数 16 cube('second',y=3,color='red') #提供部分可选参数
⑥参数的解包(拆包):在传递实参时,也可以在序列类型的参数前添加星号,这样他会自动将序列中的元素依次作为参数传递,这里要求序列中元素的个数必须和形参个数一致.
def fn4(a,b,c): print('a =',a) print('b =',b) print('c =',c) # 创建一个字典 d = {'a':100,'b':200,'c':300} # 通过 **来对一个字典进行解包操作 fn4(**d)
浙公网安备 33010602011771号