[Python筆記]函式中關鍵字引數,收集引數與分配引數的使用例項
阿新 • • 發佈:2018-11-06
Stock類
class Stock:
def __init__(self):
self.itemList = []
def addItem(self, name, price): # 建立商品
return {'name': name, 'price': price}
def saveOneItem(self, item): # 儲存單個商品
'Save one Item into ItemList'
# 通過例項.saveOneItem.__doc__訪問文件字串
self. itemList.append(item)
def saveMoreItem(self, *items): # 儲存多個商品
for item in items:
self.itemList.append(item)
def saveItemByList(self, items): # 儲存一個列表內商品
self.itemList.extend(items) #如果是元組,則先轉換list(items)
def priceCompare(self, item1, item2): # 比較價格
print (item1['price'] - item2['price'] >= 0) #可以做一個輸出
return True if item1['price'] - item2['price'] >= 0 else False # 例項:使用三目運算子
def show(self): # 顯示商品列表
print(self.itemList)
關鍵字引數
item4 = stock.addItem(name='book1',price=99.0) #允許,指定兩個關鍵字引數
item5 = stock.addItem('book2',price= 199.0) #允許,關鍵字引數在位置引數之後
item6 = stock.addItem(299.0,name='book3')#不允許,函式得到兩個name
item7 = stock.addItem(name='book3',299.0) #不允許,位置引數在關鍵字引數之後(Positional argument after keyword argument)
初始化
stock = Stock()
item1 = stock.addItem('toyA', 12.8)
item2 = stock.addItem('toyB', 108)
item3 = stock.addItem('cup', 23)
total= [item1, item2, item3]
toys=(item2,item1)
函式呼叫
#1 saveOneItem(self, item)
-----
stock.saveOneItem(item1)
stock.saveOneItem(total)
-----
##輸出
[{'name': 'toyA', 'price': 12.8}]
[[{'name': 'toyA', 'price': 12.8}, {'name': 'toyB', 'price': 108}, {'name': 'cup', 'price': 23}]]
#(注意第二個輸出,append與extends的區別,加入的是整個total 不符合要求)
---------
#2 saveMoreItem(self, *items)
-----
stock.saveMoreItem(item2)
stock.saveMoreItem(item1,item2,item3) ---收集引數:*items
-----
##輸出
[{'name': 'toyB', 'price': 108}]
[{'name': 'toyA', 'price': 12.8}, {'name': 'toyB', 'price': 108}, {'name': 'cup', 'price': 23}]
----------
#3 stock.saveItemByList(self, items)
-----
stock.saveItemByList(total)
-----
##輸出
[{'name': 'toyA', 'price': 12.8}, {'name': 'toyB', 'price': 108}, {'name': 'cup', 'price': 23}]
----------
#4 priceCompare(self, item1, item2)
-----
stock.priceCompare(item3,item2)
stock.priceCompare(*toys) ---分配引數:toys=(item2,item1)
-----
##輸出
False
True
----------