Python 函数(二)

为参数设置默认值

# 当定义函数里的部分参数没有传入参数值的时候,会报错,我们可以在定义函数的时候为参数设置默认值,设置默认值的参数放到最后面
#采用发育情况的例子
def f1(hight,weight,name = "路人"):
    '''name:姓名
       hight:身高
       weight:体重
    '''
    print(name + "的身高:"+ str(hight)+ "米 \t 体重:"+ str(weight) + "公斤")
    bmi = weight/(hight*hight)   #计算发育指数
    print("您的发育指数为:",str(bmi))   #输出指数
    if bmi < 18:
        print("您体重太轻,注意饮食和营养@——@")
    if bmi >= 18 and bmi < 24.9:
        print("您的体重正常,恭喜您,继续保持!")
    if bmi >= 24.9:
        print("您的体重太重,请减肥!")
#调用函数
f1(1.90,80,"甲")   #计算甲的发育指数,设置了参数name,则按照设置的名称运行
f1(1.70,67)    #没有设定name,则采用默认值,即路人

甲的身高:1.9米 	 体重:80公斤
您的发育指数为: 22.1606648199446
您的体重正常,恭喜您,继续保持!
路人的身高:1.7米 	 体重:67公斤
您的发育指数为: 23.18339100346021
您的体重正常,恭喜您,继续保持!
#查看函数设置了哪些默认值的方法
print(f1.__defaults__)   #defaults前后都是两个下划线
('路人',)
#上例是不可变对象的参数设置,如果是可变对象,则需注意
def f2(obj=[]):
    print("obj的值",obj)
    obj.append(1)   #添加元素1
f2()    #调用后并没有添加元素1
obj的值 []
#我们再次调用该函数
f2()   #第二次调用,则显示了【1】
obj的值 [1]
#上述结果往往不是我们想要的,可通过定义None解决该问题
def f3(obj=None):
    if obj==None:
        obj=[]
    print("obj的值",obj)
    obj.append(1)   #添加元素1
f3()    #调用后并没有添加元素1
f3()    #连续两次调用,则继续显示空列表
obj的值 []
obj的值 []

可变参数

#通常可通过加一个或两个*来表示
# 语法为 *parameter ,例如我喜欢的汽车名称可通过下列方式
def car(*carname):
    print("\n我喜欢的汽车品牌包括:")
    for item in carname:
        print(item)
car("大众")      #参数可以是一个
car("保时捷","法拉利","劳斯莱斯")   #参数可以是三个,个数可多可少

我喜欢的汽车品牌包括:
大众

我喜欢的汽车品牌包括:
保时捷
法拉利
劳斯莱斯
#如果已经存在一个列表记录了喜欢的车
list1 = ["保时捷","法拉利","劳斯莱斯","宝马","宾利","奥迪"]
car(*list1)   #可通过列表展现
我喜欢的汽车品牌包括:
保时捷
法拉利
劳斯莱斯
宝马
宾利
奥迪
#例
def f4(*name):  #指定一个可变参数
    '''name:可变参数,姓名
       hight:身高
       weight:体重
    '''
    for listname in name:
        for item in listname:
            name = item[0]
            hight = item[1]
            weight = item[2]
            print(name + "的身高:"+ str(hight)+ "米 \t 体重:"+ str(weight) + "公斤")
            bmi = weight/(hight*hight)   #计算发育指数
            print("您的发育指数为:",str(bmi))   #输出指数
            if bmi < 18:
                print("您体重太轻,注意饮食和营养@——@")
            if bmi >= 18 and bmi < 24.9:
                print("您的体重正常,恭喜您,继续保持!")
            if bmi >= 24.9:
                print("您的体重太重,请减肥!")
listw = [["张三",1.67,67],["李四",1.87,90],["王五",1.60,45]]
listm = [["赵六",1.69,87],["钱七",1.57,80]]
f4(listw,listm)
张三的身高:1.67米 	 体重:67公斤
您的发育指数为: 24.023808670084982
您的体重正常,恭喜您,继续保持!
李四的身高:1.87米 	 体重:90公斤
您的发育指数为: 25.737081414967538
您的体重太重,请减肥!
王五的身高:1.6米 	 体重:45公斤
您的发育指数为: 17.578124999999996
您体重太轻,注意饮食和营养@——@
赵六的身高:1.69米 	 体重:87公斤
您的发育指数为: 30.461118308182492
您的体重太重,请减肥!
钱七的身高:1.57米 	 体重:80公斤
您的发育指数为: 32.45567771512029
您的体重太重,请减肥!
#使用两个*的可变参数,接受任意多个类似关键字参数一样显示赋值的实际参数,并将其放到一个字典中
def sign(**sign):
    print()
    for key,value in sign.items(): #遍历字典
        print(key,"的星座是:",value)
sign(张三 = "处女座" ,李四 = "巨蟹座")
sign(王五 = "金牛座" ,赵六 = "狮子座" ,钱七 = "双鱼座")
张三 的星座是: 处女座
李四 的星座是: 巨蟹座

王五 的星座是: 金牛座
赵六 的星座是: 狮子座
钱七 的星座是: 双鱼座
#也可以采用字典形式
dict1={"张三":"处女座" ,"李四":"巨蟹座" ,"王五":"金牛座" ,"赵六":"狮子座","钱七":"双鱼座"}
sign(**dict1)
张三 的星座是: 处女座
李四 的星座是: 巨蟹座
王五 的星座是: 金牛座
赵六 的星座是: 狮子座
钱七 的星座是: 双鱼座
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈伦2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值