1. 程式人生 > >Python的位置引數、預設引數、關鍵字引數、可變引數的

Python的位置引數、預設引數、關鍵字引數、可變引數的

普通引數 (位置引數)

  • 定義的時候直接定義變數名,呼叫的時候直接把變數或者值放入指定的位置
  • 呼叫的時候,具體參考的是位置,按位置賦值
  • 語法:
def 函式名 (引數1,引數2,……)                 
                      函式體           
#呼叫           
函式名 (value1,value2,……)

預設引數

  • 形參帶有預設值
  • 呼叫的時候,如果沒有對應的形參賦值。則使用預設值
  • 語法:
  def func_name (pv1=v1,p2=v2,……)                      
       func_back              
  #呼叫1              
  func_name()
  #呼叫2              
   v1 = value1              
   v2 = value2               
   func_name(v1,v2)

例項:

#預設引數例項
#報名函式,需要知道學生的性別#學習python的學生基本都是男生,所以,報名的時候如果沒有特別指定,預設是男生
def reg(name,age,gender = "male"):    
      if gender == "male":       
            print("{0} is {1} years old,and he is a good student".format(name,age))    
      else :        
            print("{0} is {1} years old,and she is a good student".format(name,age))
 #呼叫預設引數函式案例
 reg("mingyue",18,"female")
 reg("xiaoming",23)

關鍵字引數

  • 語法與普通函式沒有太大區別,但是呼叫時有區別

  • 語法:

      func_name ( p1,p2,……):                
           func_back         
      #呼叫函式       
      func_name(p1=value1,p2=value2,……)
    
  • 比較麻煩,但是也有好處 - 不容易混淆,一般實參和形參只是按照位置一一對應即可,容易出錯 - 使用關鍵字引數,可以不用考慮引數的位置

    案例:

     ```
     #關鍵字引數案例
     def stu (name,age,addr):
           print("I am a student!")
           print("我叫{0},我今年{1}歲了,我住{2}".format(name,age,addr))
     stu(age = "18",addr = "我家",name = "靜靜")
     ```
    

收集引數(可變引數)

  • 把沒有位置,不能和定義時的引數位置相對應的引數,放入一個特定的資料結構中
  • 語法:
 def func_name(*args):                  
        func_back                 
 #按照list使用方式訪問args得到args得到傳入的引數                
 #呼叫            
 func_name(p1, p2, p3, ……)
  • 引數名args不是必須這樣寫,但是推薦直接使用args,約定俗成
  • 引數args前要有星號*
  • 收集引數可以和其他函式共存

案例:

#收集引數案例
#函式模擬一個學生進行自我介紹,但具體內容不清楚
#*args可以看成一個List(列表)
def stu(*args):    
       print("hello,大家好,我自我介紹下")   
        print(type(args)) #輸出args的格式,這裡為tuple格式    
        for item in args:       
               print(item)
#收集引數可以不帶任何實參使用
stu()
stu("帥哥", 18, "北京順義區", "崔傻子", "單身")stu("高大神")

收集函式(可變引數)之關鍵字引數

  • 把關鍵字引數按字典格式存入收集引數
  • 語法:
 def func_name( **kwargs):                         
        func_back                    
  #呼叫                   
  func_name(p1=v1, p2=v2, ……)
  • kwargs一般約定俗成,呼叫的時候把多餘的關鍵字引數放入kwargs
  • 訪問kwargs需要按照字典的格式訪問 案例:
#收集引數之關鍵字收集引數案例
#自我介紹
def stu( **kwargs):
    print("Hello,大家好,我做下自我介紹")
    print(type(kwargs)) #kwargs的格式是字典“dict”
    #對於字典的訪問,python2和python3有區別,本案例使用python3
    for k,v in kwargs.items():
        print(k, "……", v)

stu(name="大帥哥", age=19, addr="北京市順義區", lover="崔傻子", worker="student")
print("*" * 20)
stu(name="高大神")
#收集引數為空案例
stu()