(五)python 函数(下)

在定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。

#函数参数

位置参数

位置参数是调用函数时根据函数定义的参数位置来传递参数,也就是说调用函数时传入实际参数的数量与位置都必须和原函数定义时保持一致

实参和形参数量位置必须都保持一致

# 定义函数名称为perometer 定义参数 长long 宽width 冒号结尾
def perometer(long,width):
    # 用户输入通过input()函数我们所获取到的值默认为str类型,我们不能够进行比较大小,所以需要进行转换成int类型
    # 若长方形的长小于宽,则会打印提示我们调用函数时是两个参数顺序错误而导致
    if int(long) < int(width):
        print("长方形的长宽不符合规范")
        pass
    return 2 * ( int(long) + int(width) )
 
# 获取用户输入的长,值的名称定义为x
x = input("请输入一个长 : ")
# 获取用户输入的宽,值的名称定义为y
y = input("请输入一个宽 : ")
 
# perometer()函数返回的值为int类型无法与字符串进行拼接,所以需要把它在进行强转为str类型
print("该长方形的周长为 : "+ str(perometer(x,y)))

-默认参数

perometer()函数我们定义已经没有问题,但当我们如果要去求多个不同长却同宽为1的周长时,我们可使用以下方式

def perometer(long,width = 1):
    if int(long) < int(width):
        print("长方形的长宽不符合规范")
        pass
    return 2 * ( int(long) + int(width) )
print("该长方形的周长为 : "+ str(perometer(10)))
我们可设置长方形的宽默认为1。这样在我们调用perometer(10)的时候就相当于调用perometer(10,1)

但是我们一定要注意,必选参数在前,默认参数在后,否则Python解释器会报错。默认参数也必须指向不变对象。

  • 可变参数

在Python函数中,我们可以进行定义可变参数,其含义就是我们传入的参数的个数是可变的,可以使1个、2个、多个或无参。

# 定义函数add() 参数为可变参数nums
#函数内参数nums接收到的是一个tuple,会自动转换成tuple
def add(*nums):
    sum = 0
    # 遍历nums,
    for i in nums:
        sum = sum + i
    return sum
# add()为可变参数则我们就不需要传入list或tuple在进行遍历,直接简化输入多个参或无参即可
print(add(1,2,3))

-关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def animals(name, age, **kw):
print(‘name:’, name, ‘age:’, age, ‘other:’, kw) animals(‘Boby’,1) animals(‘Mini’, 6, city=‘Beijing’) extra = {‘city’:
‘Beijing’, ‘job’: ‘Engineer’} animals(‘Lili’, 8, city=extra[‘city’],
job=extra[‘job’])

打印为:

name: Boby age: 1 other: {}
name: Mini age: 6 other: {'city': 'Beijing'}
name: Lili age: 8 other: {'city': 'Beijing', 'job': 'Engineer'}

有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值