#1、 函数的参数个数可以大于等于0
#2、为什么要添加参数?
# 还是要提高代码的复用性,参数是通过函数参数列表传递进来
def count_number(m,n):
count=0;
for i in range(m,n):
count+=i;
print("count={}".format(count))
#如果函数没有写return 会隐式的加个return 返回值是None
count_number(1,40)
count_number(m=1,n=40)#指定参数赋值, 变量名要和形参保持一致
#参数类型: 位置参数 默认参数 动态参数 关键字参数
#是有顺序的我们通过函数传参的时候是按照顺序的赋值的
# 形参,实参
sum=lambda arg1,arg2:arg1+arg2;
print( "相加值",sum(10,20))
# 默认参数 我们给形参指定一个默认值
def count_number_1(m=0,n=101,k=5):
count=0;
for i in range(m,n):
count+=i;
print("count={}".format(count))
count_number_1()# 有实参用实参 没有用默认值
# 位置参数要在默认参数之前 否则会报错
def count_number_2(m,n=101,k=5):
count=0;
for i in range(m,n):
count+=i;
print("count={}".format(count))
count_number_2(6)# 将值赋值给m
# 动态参数 *args 不定长参数你想传几个就传几个 参数之间用,隔开
#1:可以传任意多个参数,不限制数据类型,参数之间用逗号隔开
#2:参数到了函数内部就变成了元组
#args 默认写这个 一定要有星号*
def robot_cat(*args):
print(type(args))
for item in list(args):
for j in item:
print('我是机器猫 我可以变出很多好东西 比如有:{0}'.format(item))
robot_cat("20k的offer","女朋友","龙虾","豪宅","修仙秘籍")
a=["20k的offer","女朋友","龙虾","豪宅","修仙秘籍"]
robot_cat(*a)#加* 可以将外层数据结构过滤掉(脱外套 只脱一层)
#如:["20k的offer","女朋友","龙虾","豪宅","修仙秘籍"]结果为
# '20k的offer', '女朋友', '龙虾', '豪宅', '修仙秘籍'
# 如a=[["20k的offer","女朋友"],["龙虾","豪宅","修仙秘籍"]]
# 结果为:['20k的offer', '女朋友'], ['龙虾', '豪宅', '修仙秘籍']
#robot_cat("竹蜻蜓")
b={'name':"小桃子","offer":'19k'}
print(type(b.values()))
robot_cat(*b.values())
# 关键字参数
def anyway(**kwargs):
print(kwargs)
anyway(x=1,b=2,c=3,name="花花")