# ### 函数的参数 """ 参数: (1)形参:形式参数 (在函数的定义处) (2)实参:实际参数 (在函数的调用处) 形式参数种类: 普通(位置)参数 默认参数 普通收集参数 命名关键字参数 关键字收集参数 实际参数种类: 普通(位置)实参 关键字实参 形参和实参数量要一一对应 """ # (1)普通形参 # 函数的定义处 # hang 和 lie 就是形参: 普通(位置)形参 def star(hang,lie): i = 0 while i<hang: j = 0 while j<lie: print("*",end="") j+=1 print() i+=1 # 函数的调用处 10,10 就是实际参数: 普通实参 star(10,10) # star() # (2)默认形参 print("<==>") # hang 和 lie 就是形参: 默认形参 带有默认值 def star(hang=10,lie=10): i = 0 while i<hang: j = 0 while j<lie: print("*",end="") j+=1 print() i+=1 # 函数的调用处 """ 给与实际参数时候,用自己的 没给与实际参数时,用默认形参的 """ # 没有参数,使用默认形参所指代的值 # star() # 一个参数: 默认hang = 1 ,lie = 10 # star(1) # 两个参数: hang = 4 lie =5 # star(4,5) # (3) 普通形参 + 默认形参 print("<==33+=>") # hang 普通形参 lie 默认形参 ''' # *******如果普通形参 + 默认形参都存在的情况下, 优先顺序,普通形参要跟在默认形参的前面; ''' # 函数的定义处 def star(hang,lie=10): i = 0 while i<hang: j = 0 while j<lie: print("*",end="") j+=1 print() i+=1 # 函数的调用处 # 不写参数不行,因为hang没有默认值 # star() error # 写1个参数 hang = 4 lie =10 # star(4) # 写2个参数 # star(3,3) print("<===123>") # (4)关键字实参 # 函数的定义处 def star(hang,lie=10): i = 0 while i<hang: j = 0 while j<lie: print("*",end="") j+=1 print() i+=1 # 函数的调用处 # lie = 13 是关键字实参 star(3,lie=13) # hang = 3 ,lie = 5 是关键字实参 star(hang = 3,lie =5) # 如果是关键字实参,顺序可以颠倒 star(lie = 2,hang=3) # 如果定义时,是普通形参 ,调用时,是关键字实参调用,那么跟在这个普通形参后面的所有参数,都需要使用关键字实参 def star(hang,a1,a2,lie=10): i = 0 while i<hang: j = 0 while j<lie: print("*",end="") j+=1 print() i+=1 # 函数的调用处 # star(1,a1= 1,a2 = 3,lie = 18) star(1,lie=3,a1 = 4,a2=8)