python==format, *args, **kwargs
阿新 • • 發佈:2018-11-25
1 *args, **kwargs
- *args和**kwargs是python中的可變引數;
- *args表示任何多個無名引數,是tuple型別;
- **表示關鍵字引數,是dict型別;
- 同時使用*args和kwargs時,*args必須放在kwargs前面;
# 原始碼 def foo(*args, **kwargs): print("args={}".format(args)) print("kwargs={}".format(kwargs)) for i in range(10): print("**",end='') if __name__ == "__main__": # tuple型別資料 foo(1, 2, 3, 4) # dict型別資料 foo(a=1, b=2, c=3) # tuple+dict型別資料 foo(1, 2, 3, 4, a=1, b=2, c=3)
# 結果
# *args為tuple型別
# **kwargs為dict型別
args=(1, 2, 3)
kwargs={}
********************
args=()
kwargs={'a': 1, 'b': 2, 'c': 3}
********************
args=(1, 2, 3)
kwargs={'a': 1, 'b': 2, 'c': 3}
********************
注意
# *args, **kwargs先後順序錯誤 def foo(**kwargs, *args): # 結果 File "<ipython-input-54-434a959009b6>", line 1 def foo(**kwargs, *args): ^ SyntaxError: invalid syntax
2 format
- format是Python2.6開始新增的格式化字串函式,形式
str.format()
; - 使用形式
"{}{}".format("a","b")
; - 傳統%引用變數輸出,即
print("%d" %a)
; - format引數個數不受限制.
2.1 預設輸出
# 原始碼
a = "{} {}".format("xin", "daqi")
b = "{},{}".format("OK","See you later!")
print(type(a))
print(a)
print(type(b))
print(b)
# 結果 # format輸出格式為字串,預設按照引數先後位置輸出 <class 'str'> xin daqi <class 'str'> OK,See you later!
2.2 指定引數順序輸出
# 原始碼
a = 'OK'
b = "Let's go!"
o1 = "{}{}".format(b,a)
o2 = "{1},{0}".format(b,a)
print(o1)
print(o2)
# 結果
# 按照指定順序輸出,在{}中指定變數
# format引數從0開始標註
Let's go!OK
OK,Let's go!
2.3 指定輸出變數
# 原始碼
userInfo = {"name":"xin daqi", "sex":"male"}
print("姓名:{name}, 性別:{sex}".format(**userInfo))
# 結果
# 指定輸出變數
# format引數使用dict型別
# **kwargs引數
姓名:xin daqi,性別:male
2.4 傳入物件引數
# 原始碼
class Test(object):
def __init__(self, value):
self.value = value
useTest = Test(2)
print("{0.value}".format(useTest))
# 結果
# 傳入物件
# 輸出變數
2
[參考文獻]
[1]https://www.cnblogs.com/goodhacker/p/3360721.html
[2]http://www.runoob.com/python/att-string-format.html