在定义函数的时候,我们把
参数
的名字
和位置
确定下来,函数的接口
定义就完成了。对于函数的调用者
来说,只需要知道如何传递正确的参数
,以及函数
将返回
什么样的值
就够了,函数内部的复杂逻辑
被封装起来,调用者
无需了解。
函数参数
-位置参数
位置参数是调用函数
时根据函数定义
的参数位置
来传递参数,也就是说调用函数时传入
实际参数的数量
与位置
都必须和原函数定义时保持一致
实参和形参数量位置必须都保持一致
# 定义函数名称为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'}
有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序的。