【小甲鱼零基础入门学python】学习总结之函数参数

函数的参数会涉及以下几个概念:
形式参数(parameter)、实际参数(argument)、默认参数、关键字参数、可变参数(收集参数)
一、形参与实参

>>> def test(name,content): #name 和content是形式参数(定义时候的参数)
	print(name+'-->'+content)
>>> test('小猴子跳跳','加油') #‘小猴子跳跳’和‘加油’是实际参数(调用时候的参数)
小猴子跳跳-->加油
>>> test('加油','小猴子跳跳') #一般情况下,参数是按照顺序来进行赋值的。
加油-->小猴子跳跳

二、关键字参数(调用时)
注意:如果和位置参数混用是,关键字参数要放在后面

>>> test(name='小猴子跳跳',content="加油") #这叫做关键字参数,是在调用的时候,注意:是在调用的时候,为了避免顺序混淆赋值错误而指定具体了具体的参数的值,注意,这是在调用的时候用到的,关键字参数。
>
小猴子跳跳-->加油
>>> test(content="加油",name='小猴子跳跳')#关键字参数,尽管顺序与定义的时候不一致,但是结果还是一致。
小猴子跳跳-->加油

>>>


三、默认参数(定义时)

 def test(content,name='小猴子跳跳'):
	print(name+'-->'+content)
	#在定义函数的时候,注意,是定义函数的时候,给参数赋了值,就叫#做默认参数,在实际调用的时候,如果没有该参数,则会直接赋值为该默认值,如果有新的该参数的值,则会是新的值。
>>> test('123')
小猴子跳跳-->123
>>> 
>>> def test(name='小猴子跳跳',content):   #注意:有默认参数的,默认参数应该放在最后面。
	print(name+'-->'+content)
SyntaxError: non-default argument follows default argument

四、可变参数(收集参数)
print,min,max 是一种典型的可变参数

>>> def test(*paras):
	print('输入的参数是:'+str(paras))
	print('一共有'+str(len(paras))+'个参数')
	print('第2个参数是:'+str(paras[1]))

	
>>> test(1,'abc','123','*',[1,2,3])
输入的参数是:(1, 'abc', '123', '*', [1, 2, 3])
一共有5个参数
第2个参数是:abc
>>> 

可变参数存在以下的问题:
当一个函数除了可变参数外,还有其他参数时,就需要注意,可变参数与其他参数的位置与书写。
1.这种写法就是错的。调用函数是缺少了一个实际参数txt.

>>> def test(*paras,txt):
	print('输入的参数是:',paras,txt)
	print('一共有',len(paras),'个可变参数')
	print('第2个可变参数是:',str(paras[1]))
	
>>> test(1,'abc','123','*',[1,2,3],5)
Traceback (most recent call last):
  File "", line 1, in <module>
    test(1,'abc','123','*',[1,2,3],5)
TypeError: test() missing 1 required keyword-only argument: 'txt'

如何解决问题1呢,可以用以下两种方式,1把其他参数定义在最前面,可变参数定义在最后面。
2,将其他参数定义为默认参数。

```c
>>> def test(*paras,txt=9):  #2,将其他参数定义为默认参数
	print('输入的参数是:',paras,txt)
	print('一共有',len(paras),'个可变参数')
	print('第2个可变参数是:',str(paras[1]))

	
>>> test(1,'abc','123','*',[1,2,3],5)
输入的参数是: (1, 'abc', '123', '*', [1, 2, 3], 5) 9
一共有 6 个可变参数
第2个可变参数是: abc
>>> def test(txt,*paras): #1把其他参数定义在最前面,可变参数定义在最后面。
	print('输入的参数是:',paras,txt)
	print('一共有',len(paras),'个可变参数')
	print('第2个可变参数是:',str(paras[1]))

	
>>> test(1,'abc','123','*',[1,2,3],5)
输入的参数是: ('abc', '123', '*', [1, 2, 3], 5) 1
一共有 5 个可变参数
第2个可变参数是: 123
>>> 

你可能感兴趣的:(python)