1. 程式人生 > >Python函式的引數傳遞(3)

Python函式的引數傳遞(3)

def printAll(**kargs):
        for k in kargs:
                print k, ':', kargs[k]

printAll(a=1, b=2, c=3)
printAll(x=4, y=5)

print '------'
def func(x, y=5, *a, **b):
   print x, y, a, b

func(1)
func(1,2)
func(1,2,3)
func(1,2,3,4)
func(x=1)
func(x=1,y=1)
func(x=1,y=1,a=1)
func(x=1,y=1,a=1,b=1)
func(1,y=1)
func(1,2,3,4,a=1)
func(1,2,3,4,k=1,t=2,o=3)

結果:

a : 1
c : 3
b : 2
y : 5
x : 4
------
1 5 () {}
1 2 () {}
1 2 (3,) {}
1 2 (3, 4) {}
1 5 () {}
1 1 () {}
1 1 () {'a': 1}
1 1 () {'a': 1, 'b': 1}
1 1 () {}
1 2 (3, 4) {'a': 1}
1 2 (3, 4) {'k': 1, 't': 2, 'o': 3}

注意:

在混合使用時,首先要注意函式的寫法,必須遵守: 帶有預設值的形參(arg=)須在無預設值的形參(arg)之後; 元組引數(*args)須在帶有預設值的形參(arg=)之後;
字典引數(**kargs)須在元組引數(*args)之後 呼叫時也需要遵守: 指定引數名稱的引數要在無指定引數名稱的引數之後; 不可以重複傳遞,即按順序提供某引數之後,又指定名稱傳遞。
而在函式被呼叫時,引數的傳遞過程為: 1.按順序把無指定引數的實參賦值給形參; 2.把指定引數名稱(arg=v)的實參賦值給對應的形參; 3.將多餘的無指定引數的實參打包成一個 tuple 傳遞給元組引數(*args); 4.將多餘的指定引數名的實參打包成一個 dict 傳遞給字典引數(**kargs)。

相關推薦

Python函式引數傳遞3

def printAll(**kargs): for k in kargs: print k, ':', kargs[k] printAll(a=1, b=2, c=3) printAll(x=4, y=5) print

指標作為函式引數傳遞 轉載

這幾天在學習C過程中,在使用指標作為函式引數傳遞的時候出現了問題,根本不知道從何得解:原始碼如下:    createNode(BinNode *tree,char *p)    {        tree = (BinNode *) malloc(sizeof(BinNo

二維陣列作為函式引數傳遞C++

有時候我們也許會不明白為什麼C++中的陣列宣告的時候下標是需要一個常數,而不能是一個變數吶?也許STL模板庫中的向量可以解決變數作為下標的陣列宣告方式,為了節約一些記憶體或者是提高一些效能,也為了功能不重複,故而陣列中的下標採取了常量的方式。 int a[

C++函式引數傳遞3種方式以及優缺點

寫函式時遇到給予函式的引數變數無法被修改的問題,轉自:https://blog.csdn.net/zhaoxun91/article/details/75417492 1 函式引數傳遞的3種方式比較 1.1 按值傳遞 #include <iostream> using names

函式引數傳遞計算器

#計算器def add(x,y):   return x+ydef minus(x,y):   return x-ydef mult(x,y):   return x*ydef divi(x,y):   return x/ydef get_on(s):   if s=='加'or s=='+':     re

python介面測試學習3之http請求引數

post請求引數常見:1. application/json     {“key1“:”value1”,“key2":“value2"}2. application/x-www-form-urlencoded        key1=value1&key2=value

C++中函式引數傳遞傳遞、指標傳遞,引用傳遞

今天想寫一個函式,從函式中把我需要的兩個值傳出來,由於傳出來的值比較多,所以不考慮用return來返回,需要通過引數把修改後的值拉出來供我使用,很當然的就想到了用指標,但是值就是傳不出來;使我對原有的大腦中指標的思維產生混沌感,今天一上午才把函式傳遞又走了

PYTHON設計模式學習3:Singleton pattern

blog ora 參考 擁有 沒有 _屬性 ces cti ttr 參考了其他的博客:http://ghostfromheaven.iteye.com/blog/1562618 #-*- encoding=utf-8 -*- print ‘--------------

Python學習之路3——Python安裝以及環境變量的操作

all 頭部 http plain 雙擊 load 編譯 源碼 borde 安裝Python windows: 1 2 3 4 5 6 7 1、下載安裝包 https://www.python.org/downloads/ 2、安裝

python與zmq系列3

本篇部落格將介紹zmq應答模式,所謂應答模式,就是一問一答,規則有這麼幾條         1、 必須先提問,後回答         2、 對於一個提問,只能回答一次

python機器學習入門3——裝飾器和元類

記住這幾句話: 萬物皆物件 裝飾器(decorator):函式亦物件 元類(meta class):類亦物件 物件意味著可以被賦值給變數,通過變數也能呼叫此物件   兩個簡單的程式: 裝飾器例程:實現對函式func的計時   元類例程: 實

基本型別和引用型別作為引數傳遞重要

基本型別和引用型別作為引數傳遞 引用型別資料和基本型別資料作為引數傳遞有沒有差別呢?我們用如下程式碼進行說明,並配合圖解讓大家更加清晰 1.基本資料型別傳遞 基本型別作為引數傳遞時,其實就是將基本型別變數x空間中的值複製了一份傳遞給呼叫的方法show(),當在show()方法中

python :collections模組3Counter模組以及deque模組

#Counter模組 統計型別類,定義跟蹤值出現的次數 引數為必須為可迭代物件,如列表,字串,集合 #統計集合中元素出現的次數 from collections import Counter #統計類 users ={"body_1","body_3","bod

Python 函式 引數傳遞

引數傳遞    在 python 中,型別屬於物件,變數是沒有型別的:        a=[1,2,3]        a="Runoob" &nbs

python數字影象處理3:影象畫素的訪問與裁剪

圖片讀入程式中後,是以numpy陣列存在的。因此對numpy陣列的一切功能,對圖片也適用。對陣列元素的訪問,實際上就是對圖片畫素點的訪問。 彩色圖片訪問方式為: img[i,j,c] i表示圖片的行數,j表示圖片的列數,c表示圖片的通道數(RGB三通道分別對應0,1

[10]基本型別和引用型別的引數傳遞

前言:主要為個人筆記 基本型別 程式碼: class Demo{ public static void main(String[] args){ int x=4;

fork函式_例項3呼叫兩次以避免僵死程序

--------參考文獻   W.Richard Stevens, Stephen A.Rago.UNIX環境高階程式設計[M].北京:人民郵電出版社,2014.6:189-190. 一、 相關概念  1.1 僵死程序 一個已經終止,但是其父程序尚未對其進行善後處理

Python--Django開發速成3

        本文主要講解在的Python--Django開發速成(2)基礎上新增部落格文章修改功能,主要思路如下: (1)每個部落格都是有id的,id是由資料庫自動生成的,而id有一個特點,就是沒有0值。 (2)若要修改已有的文章,那麼可以讀取其id,從而後取其他內容

Python:Pandas:DataFrame基礎3

接著上一篇文章,我們介紹使用iloc方法讀取資料框的操作 1、提取第四行資料 print(data.iloc[3]) 輸出結果如下: 2、返回4-5行,1-2列資料 print(data.iloc[3:5, 0:2]) #注意:區間仍然

利用kvaser和Python編寫監控介面3

在視窗中列印byte時,特殊現象的解釋 def printframe(frame, width): form = '═^' + str(width - 1) print(format(" Frame received ", form)) print("id:",