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

猜你喜欢

转载自blog.csdn.net/xHibiki/article/details/83687786