***

19343 ワード

関数のパラメータには、形式パラメータ(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が1つ欠けている.
>>> 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をどのように解決するかは、以下の2つの方法で、1は他のパラメータを一番前に定義し、可変パラメータを一番後ろに定義することができます.2.その他のパラメータをデフォルトのパラメータとして定義します.
```c
>>> def test(*paras,txt=9):  #2print('      :',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      
 2123
>>>