Python函数里的默认参数和关键字参数有什么区别?

Python函数里的默认参数和关键字参数有什么区别?

Python函数里的默认参数和关键字参数有什么区别?一直没弄清楚的一个问题,呵呵!
默认参数跟c++和java差不多吧,关键字参数就是个字典
#有默认参数
#定義默认参数 age = 1, gender = 'M'
def person( name, age = 1, gender='M'):
      print 'name: %s   age: %d    gender: %s' % (name, age, gender)

#這裡只傳一個值給第一個參數which is name, age 和 gender已經有默认值,
#就算不傳新值給 age or gender也沒問題
person('Jacky')  
#output --> name: Jacky     age: 1    gender: M


#沒有默认参数
def person(name, age, gender):
      print 'name: %s   age: %d   gender: %s' % (name, age, gender)

# person('Jacky')  <-- error, 3個參數只傳了一個值
#沒有默认参数,就一定要傳 N(total 参数) 個值給 function.
person('Jacky', 19, 'M')


******************************************************

#关键字参数
#用上面第一個例子 person( name, age=1, gender='M')
#用关键字給function傳值時,不雖要跟著順序來也沒問題

#就算 age 和 name 順序不同, 但因為是用关键字來傳值,所以沒問題
person( age=18, name='Jacky')  
#output --> name: Jacky   age: 18    gender: 'M'

person( gender='F', age=17, name='Ashley')
#output --> name: Ashley  age: 17   gender: 'F'

# Error, 沒用关键字去傳值
# person( 20, 'M', 'Jacky')  <-- 沒用关键字時,一定要按順序去傳值

i tried to explain as clear as i can....xP

哦!^_^!明白了明白了,多谢多谢!
默认参数不必须传值 ,而普通参数必须传值.