1. 程式人生 > >[Python筆記]函式中關鍵字引數,收集引數與分配引數的使用例項

[Python筆記]函式中關鍵字引數,收集引數與分配引數的使用例項

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
----------