python 位置參數、默認參數、可變參數位置關系_python的位置參數、默認參數、關鍵字參數、可變參數區別...

一、位置參數

調用函數時根據函數定義的參數位置來傳遞參數

#!/usr/bin/env python#coding=utf-8

defprint_hello(name, sex):

sex_dict= {1: u'先生', 2: u'女士'}print 'hello %s %s, welcome to python world!' %(name, sex_dict.get(sex, u'先生'))#兩個參數的順序必須一一對應,且少一個參數都不可以#print_hello('tanggu', 1)

二、關鍵字參數

用于函數調用,通過“鍵-值”形式加以指定。可以讓函數更加清晰、容易使用,同時也清除了參數的順序要求

#以下是用關鍵字參數正確調用函數的實例#print_hello('tanggu', sex=1)#print_hello(1, name='tanggu')#print_hello(name='tanggu', sex=1)#print_hello(sex=1, name='tanggu')

#以下是錯誤的調用方式#print_hello(name='tanggu', 1)#print_hello(sex=1, 'tanggu')

有關鍵字參數,一定要放到參數的最后,否則在執行代碼時,會報錯。

有位置參數時,即普通參數,位置參數必須在關鍵字參數的前面,但關鍵字參數之間不存在先后順序的

三、默認參數

用于定義函數,為參數提供默認值,調用函數時可傳可不傳該默認參數的值(注意:所有位置參數必須出現在默認參數前,包括函數定義和調用)

#正確的默認參數定義方式--> 位置參數在前,默認參數在后

def print_hello(name, sex=1):

....#錯誤的定義方式

def print_hello(sex=1, name):

....#調用時不傳sex的值,則使用默認值1#print_hello('tanggu')

#調用時傳入sex的值,并指定為2#print_hello('tanggu', 2)

四、可變參數

定義函數時,有時候我們不確定調用的時候會傳遞多少個參數(不傳遞也可以)。此時,可用包裹(packing)位置參數,或者包裹關鍵字參數,來進行參數傳遞,會顯得非常方便。

1、包裹位置傳遞

def func(*args):

....#func()#func(a)#func(a, b, c)

我們傳進的所有參數都會被args變量收集,它會根據傳遞進參數的位置合并為一個元組(tuple),args是元組類型,這就是包裹位置傳遞

2、包裹關鍵字傳遞

def func(**kargs):

....#func(a=1)#func(a=1, b=2, c=3)

kargs是一個字典(dict),收集所有關鍵字參數

五、解包裹參數

*和**,也可以在函數調用的時候使用,稱為解包裹(unpacking)

1、在傳遞元組時,讓元組的每一個元素對應的一個位置參數

defprint_hello(name, sex):printname, sex#args = ('tanggu', '男')#print_hello(*args)#tanggu 男

2、在傳遞詞典字典時,讓詞典的每個鍵值對作為一個關鍵字參數傳遞給函數

defprint_hello(kargs):printkargs#kargs = {'name': 'tanggu', 'sex', u'男'}#print_hello(**kargs)#{'name': 'tanggu', 'sex', u'男'}

六、位置參數、默認參數、可變參數的混合使用

基本原則是:先位置參數,默認參數,包裹位置,包裹關鍵字(定義和調用都應遵循)

def func(name,age,sex=1,*args,**kargs):

pirnt name,age,sex,args,kargs#func('tanggu'.23,2,'music','sprot',class=2)#tanggu 23 2 ('music','sport') {'class'=2}

Python中的*args和**kwsrgs的區別

先來看個例子

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279342.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279342.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279342.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2015年終總結

2019獨角獸企業重金招聘Python工程師標準>>> 2015年終總結 用勇氣改變可以改變的事情,用胸懷接受不可以改變的事情,然后用智慧分辨兩者的不同! 短信平臺sms 影像系統fastfile 統一信任中心uts(單點登錄) 簡歷增加 總結…

筆記本本地連接顯示電纜拔出_沒有安全電纜槽的筆記本電腦如何固定?

筆記本本地連接顯示電纜拔出Historically laptops included a slot in the side for attaching security cables–as seen in the photo here–but increasingly more slender laptops like ultrabooks are omitting the lock-slot from their case design. How do you properl…

JMeter中添加dubbo相關插件異常問題解決

從網上下載了一個dubbo的插件,然后放到JMeter的/lib/ext目錄下: 然后啟動直接異常 發現啟動不了,然后下載了一個全新的JMeter3.2將dubbo插件放到同樣的目錄,啟動,沒有問題: 那應該不是JMeter本身的問題 通過…

向量空間余弦相似度

設向量a和向量b 則a?b|a||b|cos,|a|和|b|分別為兩向量的模 cos即為兩向量的余弦值,所以cosa?b/|a||b| 距離和相似性度量: http://blog.sina.com.cn/s/blog_6045a9da01011nk7.html 轉載于:https://www.cnblogs.com/lsai/p/3715948.html

linux提升文件夾權限命令_Linux常用命令_(文件權限)

Linux權限管理:二、權限管理1、3種基本權限在Linux中,將使用系統資源的人員分為4類:超級用戶、文件或目錄的屬主、屬主的同組人和其他人員。超級用戶擁有對Linux系統一切操作權限,對 于其他3類用戶都要指定對文件和目錄的訪問權限…

Servlet異常

一、http status 404 解決辦法:檢查web.xml中的配置文件,發現jsp頁面的提交路徑action和web.xml中的路徑不匹配,將其修改過來。轉載于:https://www.cnblogs.com/ltfxy/p/9671256.html

disk genius_如何預約Apple Store商店或Genius Bar

disk geniusMaybe you have a cracked iPhone screen or your MacBook Pro isn’t charging properly. Whatever your issue, there’s an app for that! If you need tech support or repairs for your Apple device, it’s easy to set up a service appointment right from …

[置頂] C#中通過調用webService獲取上網IP地址的區域的方法

最近在開發項目的過程中需要獲取用戶查詢時的IP地址的區域,以用來做統計分析用。經過一番查閱資料,然后寫了個測試程序,很快就搞定了這個功能。 現在分享下我的實現方法,大家如果有更好的實現,歡迎提出哦。 首先我找到…

hashmap 存取原理圖_HashMap底層實現原理

HashMap底層原理總結,幾個Hash集合之間的對比。HashMap底層存儲結構HashMap是一個用于存儲Key-Value鍵值對的集合,每一個鍵值對也叫做一個Entry。這些Entry分散存儲在一個數組當中,這個數組就是HashMap的主干。1234567* The table, initializ…

LVM邏輯卷創建管理

在虛擬機中再次添加三張硬盤 1、查看添加的硬盤 [rootrhel-02 ~]# fdisk -l 2、添加分區 [rootrhel-02 ~]# fdisk /dev/sdb 查看分區并保存 3、將物理硬盤分區初始化為物理卷,以便LVM使用 如果沒安裝LVM的話先去安裝 [rootrhel-02 ~]# yum install lvm2 安裝完成…

Start DWM manually on Windows 7 and vista

方法一: 1. 檢查兩處注冊表項及鍵值是否與下列數值一致 HKEY-Current-User\Software\Microsoft\Windows\DWM\Composition 鍵值改為 1 HKEY-Current-User\Software\Microsoft\Windows\DWM\CompositionPolicy 鍵值改為2 2. 打開運行(可能要用到管理員模式啟…

java啟動mysq服務_Java Web開發——MySQL數據庫的安裝與配置

MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系…

小程序如何獲得手機號碼_獲得小型企業電話號碼的最佳方法

小程序如何獲得手機號碼Lots of small businesses use their personal cellphones when making work related phone calls. Some may even be using old landlines for their calling needs. While it makes sense to use your cellphone, and it can be scary to make a chang…

空間數據索引RTree完全解析及Java實現

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/MongChia1993/article/details/69941783第一部分 空間數據的背景介紹 空間數據的建模 基于實體的模型(基于對象)Entity-based models (or object base…

Android 中的ORM框架

在android 中,內置了sqlite數據庫,java web 中,用慣了Hibernate ,想找找android中是否也有類似的orm框架,后來在開源中國看到了orman,這是一個很不錯的框架。 這個可以幫我們快捷方便的實現數據庫的CURD操作…

android頁面布局 如何讓中間的listview填充剩余部分_谷歌駕駛設計—界面設計布局...

本節提供了可在不同屏幕尺寸范圍內縮放的屏幕布局的設計指南。此處定義的padding和keyline值用于Components,Media規范、Notification Center規范和Dialer規范中。指南概覽(TL:DR):基于適當的屏幕尺寸類別的基本布局使…

ios 禁用滑動手勢_如何禁用筆記本電腦上的Windows 8滑動手勢?

ios 禁用滑動手勢If you’re not a fan of the touchpad-based swipe gestures in Windows 8 there is a way to completely disable them and reclaim your touchpad. 如果您不喜歡Windows 8中基于觸摸板的滑動手勢,可以使用一種方法來完全禁用它們并收回您的觸摸板…

Java快速入門-01-基礎篇

Java快速入門-01-基礎篇 如果基礎不好或者想學的很細,請參看:菜鳥教程-JAVA本筆記適合快速學習,文章后面也會包含一些常見面試問題,記住快捷鍵操作,一些內容我就不轉載了,直接附上鏈接,嘻嘻開發…

Excel導入MS SQL SERVER 操作

關于Excel導入到sql操作的相關問題總結: 一、大批量數據導入 方法1、從Excel大批量數據導入時我們可以使用sql里面有一個batch copy的功能 方法2、在sql中建一個table type結構,在前端將excel讀到datatable中,把整個datatable作為存儲過程參數…

蘋果mac閃退_自從Mac有了WPS,從此和雙系統說再見!

薛崗13,712本文共計2266個字,預計閱讀時長需要6分鐘。大部分使用Macbook的用戶都有一個痛點,就是編輯好的office文件,在朋友或同事的windows電腦上展示效果與自己的會有差異。除此外,卡頓、閃退、數據丟失等也是Windows版office在…