python的circle函数的参数_python学习第10节:函数参数的力量

形参和实参

定义函数时括号里的变量,叫做形式参数(形参);

调用函数时括号里传入的值,叫做实际参数(实参);

形参只是形式中的一种参数,是定义函数时需要使用的变量;而实参是一个实实在在存在的参数,是我们赋予变量的值。

缺省参数

缺省(default)也就是默认的意思,我们可以在定义函数时就给形式参数赋予一些默认的实参值,这些被赋予了默认实参值的形参,就被称作缺省参数。

注意:缺省参数在定义时要在一般参数之后,如果不遵守,Python就会无情的抛出一个报错。# 定义函数时给形式参数 pi设置一个默认的实参

def circle(r, pi=3.14159):

area = pi * r ** 2

return area

# 调用函数时不给pi一个实际参数值,这时候pi是3.14159

my_area = circle(10)

print("半径为10的圆的面积是{}".format(my_area))

# 调用函数时修改缺省参数pi的值为3.14

my_area = circle(10,3.14)

print("半径为10的圆的面积是{}".format(my_area))

参数传递

在调用函数时,通过实参给形参赋值的过程,就是参数传递。常见的参数传递有四种:位置传参、序列传参、关键字传参和字典关键字传参。

位置传参

在使用位置传参的方法时,实参和形参位置一 一对应。一旦你使用了错误的顺序,传参结果就会出现混乱。def person(name, age=22, gender='男'):

print ("姓名:", name)

print ("年龄:", age)

print ("性别:", gender)

person ("杨紫", 27, "女")

序列传参

和位置传参相似,序列传参时,是将序列按照索引顺序进行拆解后,位置与形参一 一对应。实际应用中,使用列表和元组传参都是非常方便的方式,但是我们很少会用字符串进行传参。

它的格式比较特殊,在调用函数传入实参时,用一个星号* 加上参数名,来看下面的例子。def person(name, age=22, gender='男'):

print ("姓名:", name)

print ("年龄:", age)

print ("性别:", gender)

# 使用*加列表

person (*["杨紫", 27, "女"])

# 使用*加元组

print ("\n元组:")

person (*("杨紫", 27, "女"))

# 使用*加字符串

print ("\n字符串:")

person (*"123")

关键字传参

使用关键字传参的方法时,参数位置的对应将变得不再重要。因此关键字传参的方法尤其适用于参数很多,默认参数也多,你无法准确记住参数顺序的时候。def person(name, age=22, gender='男'):

print ("姓名:", name)

print ("年龄:", age)

print ("性别:", gender)

# 关键字传参

person (gender="女", name="杨紫", age=27)

字典关键字传参

字典关键字传参就是将字典作为实参,并用两个星号**拆解。字典的键名和形参名必须一致,也就是说字典的键名必须符合变量的命名规则,且必须存在于形参中。def person(name, age=22, gender='男'):

print("姓名:", name)

print("年龄:", age)

print("性别:", gender)

# 字典关键字传参

person (**{'gender':"女", 'name':"杨紫", 'age':27})

传递练习def person(name, age, hight, weight, hair='黑', eye='棕', gender='男'):

print("姓名:", name)

print("年龄:", age)

print("身高:", hight)

print("体重:", weight)

print('发色:', hair)

print('瞳色:', eye)

print("性别:", gender,'\n')

person('张三', 20, 170, 90)

person(*['张三', 20, 170, 90])

person(age=20,name="张三",hight=170,weight=90)

person(**{'name':'张三','age':20,'weight':90,'hight':170})

person (*["小猫", 3, '23cm'], '4kg', **{'gender':'女', 'eye':'蓝', 'hair':'白'})

定义形参

形参定义和参数传递是一 一对应的,因此形参定义也有四种方式:位置形参、可变形参、关键字形参和字典关键字形参。

位置形参

def fruits(name, fruit1, fruit2, fruit3):

print (name,'喜欢的水果有:', fruit1, fruit2, fruit3)

fruits('小K', '苹果', '梨子', '桃子')

可变形参

它解决的是参数长度不固定的情况,作用是收集多余的位置传递过来的实参,可变形参的语法如下。

def fruits(name, *fruit):

print(name,'喜欢的水果有:', fruit)

print(type(fruit))

fruits('小K', '苹果', '梨子', '桃子', "葡萄")

fruits('小K', *['苹果', '梨子', '桃子', "葡萄"])

关键字形参

第一种语法中,关键字形参需要一个特殊分隔符*,在分隔符*后面的参数被视为关键字形参,调用时必须使用关键字传参的方法。def transcript(name, year, month, *, Physics, Chemistry, Biology):

print('{}同学{}年{}月理科成绩单:'.format(name, year, month))

print('物理:', Physics)

print('化学:', Chemistry)

print('生物:', Biology)

transcript("小明", 2019, 5, Physics=76, Chemistry=65, Biology=42)

第二种语法中,在一系列关键字形参之前添加了可变形参,调用时也必须使用关键字传参的方法。def transcript(name, *date, Physics, Chemistry, Biology):

print('{}同学{}年{}月理科成绩单:'.format(name, date[0], date[1]))

print('物理:', Physics)

print('化学:', Chemistry)

print('生物:', Biology)

transcript("小明", 2019, 5, Physics=75, Chemistry=65, Biology=42)

字典关键字形参

字典关键字形参的语法形式为**字典名,所以字典关键字形参也叫双星号字典形参。

def transcript(name, year, month, **grade):

print('{}同学{}年{}月成绩单:'.format(name, year, month))

for subject in grade:

print(subject, ':', grade[subject])

# 只传入位置参数

transcript("小明", 2019, 5)

# 关键字传参传入两个关键字参数

transcript("小明", 2019, 5, 数学=144, 语文=124)

# 字典关键字传参传入三个关键字参数

transcript("小明", 2019, 5, **{'数学':144, '语文':124, '英语':115})

总结

形参:即形式参数,定义函数时( )里的象征意义的变量。

实参:即实际参数,给形参传入的有意义的值。

代码复用:使用函数式编程的方式,重复利用代码。

缺省参数:即默认参数,是指被赋予了默认实参值的形参。

参数传递:在调用函数的过程中通过实参给形参赋值的过程。

点餐练习

朋友开了一家茶馆,想要请你帮忙开发一个电子点单功能。要求是:客人点单后,程序可以把桌号和对应餐品自动打印在后厨的电子屏上。def order(number, *menu):

print('桌号:{},点餐:'.format(number))

for i in menu:

print(i,end="\t")

print('\n')

order('001',*['牛肉盖浇饭','1份'])

order('002',*['拉面','3份'])def order(number, **menu):

print('桌号:{},点餐:'.format(number))

for name in menu:

print(name,menu[name],end="\n")

print('\n')

order('001',**{'牛肉面':'1份','炸酱面':'2份'})

order('002',水果='1份',炸酱面='4份')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值