您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python中怎么定義函數并實現傳參,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
一、函數初識
1、定義:將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可。
2、好處:代碼重用;保持一致性;可擴展性。
3、示例如下:
# -*-coding:utf-8-*- def sayHello(): print('Hello world!') sayHello()
二、函數傳參方式
如上面的實例是函數中最基礎的一種,是不傳參數的,說到這里,我們有必要了解一下何為函數參數:
1、函數參數:
形參變量: 只有在被調用時才分配內存單元,調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。
函數調用結束返回主調函數后不能再使用該形參變量
實參:可以是常量,變量,表達式,函數等,無論實參是何種類型的量,在進行函數調用,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
2、函數傳參的分類
<1> 位置參數
位置參數顧名思義,就是調用函數時傳的實參與函數的形參位置上一一對應的參數。
如下實例:
#位置參數 print('\n以下是位置參數傳值\n') def stu_info(name,age,major,country): print('--------學生信息-------') print('姓名:',name) print('年齡:',age) print('專業:',major) print('國籍:',country) stu1 = stu_info('Jack',21,'Chinese','CN') # 實參依次與函數中的name,age,major,country對應 stu2 = stu_info('Frank',20,'JP','UN') stu3 = stu_info('Rose',19,'Art','UK')
<2> 默認參數
默認參數就有點不同了,是你在函數形參中定義好的,當實參中未傳對應的參數時,它就派上用場了,默認給你加上。是不是有點貼心呢?
注意:默認參數,必須放在位置參數之后,否則會出錯
實例如下:
#默認參數 print('\n以下是默認參數傳值\n') def stu_info(name,age,major,country = 'CN'):# country設為了默認參數,必須放在位置參數之后,否則會出錯 print('--------學生信息-------') print('姓名:',name) print('年齡:',age) print('專業:',major) print('國籍:',country) stu1 = stu_info('Jack',21,'Chinese') # 此處未傳對應的值,但形參中已經定義了,所以不用擔心找不家了! stu2 = stu_info('Frank',20,'JP') # 你也是的 stu3 = stu_info('Rose',19,'Art','UK') # 既然你已經傳參了,就隨你了。
<3> 關鍵參數
正常情況下,給函數傳參數要按順序,不想按順序就可以用關鍵參數,只需指定參數名即可(指定參數名的參數就叫關鍵參數),但記住一個要求就是,關鍵參數必須放在位置參數(以位置順序確定對應關系的參數)之后。
還是奉上實例:
#關鍵參數,不能重復賦值,且指定的參數應在位置參數之后 print('\n以下是關鍵參數傳值\n') def stu_info(name,age,major,country = 'CN'): # print('--------學生信息-------') print('姓名:',name) print('年齡:',age) print('專業:',major) print('國籍:',country) stu1 = stu_info('Jack',21,'Chinese') stu2 = stu_info('Frank',20,major='JP') # major即為關鍵參數,單獨指定,但必須放在位置參數之后 stu3 = stu_info('Rose',19,'Art',country='UK')
<4> 非固定傳參
這種傳參方式可就大有講究了,花樣可謂繁多,自然本領也就大多了,不信往下看。
可以細分為兩類:
非固定傳參方式一:
可同時指定多個用戶,傳過來的所有參數打包成元祖。如下:
#-*-coding:utf-8-*- #方式一 def send_alert(msg,*users): # '*users‘ 表示非固定傳參,可同時指定多個用戶,傳過來的所有參數打包元祖 for u in users: print('報警!請及時查看...',u,msg) send_alert('你的系統已瀕臨崩潰!','cc','hyt','yuq','dy') #方式二 def send_alert(msg,*users): # '*users‘ 表示非固定傳參,可同時指定多個用戶,傳過來的所有參數打包元祖 for u in users: print('報警!請及時查看...',u,msg) send_alert('你的系統已瀕臨崩潰!',*['cc','hyt','yuq','dy']) ''' 如果列表前不加 * 號,整個列表就會被當作元組里的一個元素, 加 * 號后就相當于列表里每個元素都是元祖的一個元素了。就會向元組里的每個成員都發出訊息了。 ''' def send_alert(msg,*users,age): for u in users: print('報警!請及時查看...',u,msg) send_alert('你的系統已瀕臨崩潰!','sc','qh',age=22) ''' '*users‘此時會默認獲取前一個位置參數之后所有的元素,若傳參時最后不指定關鍵參數就會報錯,age無法獲取傳值 '''
非固定傳參方式二:
可同時指定多個用戶,傳過來的所有參數打包成元組或字典。如下:
#-*-coding:utf-8-*- def func(name,*args,**kwargs): # 形參依次是位置參數,元組,字典 print(name,args,kwargs) func('Hope',22,'CN','tomorrow') #輸出:Hope (22, 'CN', 'tomorrow') {} func('Try',21,'will',addr='HG',num=666) #輸出:Try (21, 'will') {'addr': 'HG', 'num': 666} dit = {'major':'Math','interest':'reading'} func('want',*['day','up'],**dit) #輸出:want ('day', 'up') {'major': 'Math', 'interest': 'reading'}
關于Python中怎么定義函數并實現傳參就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。