"""
函数的参数
1.位置参数
-普通参数
-传递时符合参数位置及个数
2.默认值参数(缺省参数)
-默认参数即声明时,为参数指定默认值,在调用时可以不用传递参数
3.可变参数
-格式: *参数名(通常用args) : 个数不确定
-会将可变参数打包为元组
4.关键字参数
-格式: **参数名 : 个数不确定,但传递参数时,需要以变量名 = 值的形式传入
-会将关键字参数打包为字典
5.命名关键字参数
-格式: *可变参数 命名关键字参数 **关键字参数 ---写在可变参数之后
-在传递参数时,”必须指名道姓“写出参数名称
重要问题:
参数的定义顺序问题?
未知参数->默认参数->可变参数->命名关键字参数->关键字参数
可变参数和关键字参数的打包和解包问题?
"""
#1.位置参数
def sum(x,y):
return x / y
print(sum(10,20))
print(sum(20,10))
#2.默认参数
def f1(a, b = 0):
print("a:",a,"b:",b)
f1(1)
#3.可变参数
def f2(a, b = 0, *args):
print("a:",a,"b:",b,"args:",args)
f2(10,1,2,3,4,5,6)
#4.关键字参数
def f3(a, b = 0, *args, **keywords):
print("a:",a,"b:",b,"args:",args,"keywords:",keywords)
f3(10,1,2,3,4,5,6,name = "zhangsan",age = 18, salary = 10000.0)
#5.命名关键字参数
def f4(a, b = 0, *args, nickname,**keywords):
print("a:",a,"b:",b,"args:",args,"nickname:", nickname,"keywords:",keywords)
f4(10,1,2,3,4,5,6,nickname = "LuBengWei",name = "zhangsan",age = 18, salary = 10000.0)
#参数的解包
values = (1,2,3,4)
person = {"username:" : "zhangsan","age":18}
f3(10,20,*values,**person)
# 补充内容:当参数需要命名关键字参数,但不需要可变参数时,根据命名关键字特性,需要用*占位
def f5(a, *, name):
print("a:",a,"name:",name)
f5(10,name = "zhangsan")
"""
函数的返回值
1.函数返回值 不加参数时表示立即结束
2.返回值为容器
3.返回值为对象
4.多返回值
函数对象的引用传递
"""
def sum(x,y):
z = x + y
return z
# !直接打印函数名称时,打印的是函数对象
print(sum)
# 函数对象应用传递! 调用时可以直接使用传递后的对象
sum_change = sum
sum(10,20)
sum_change(20, 30)
# 1.函数返回值 不加参数时表示立即结束
# return 立即结束函数返回被调处
def test1():
return
#案例一:
age = 18
def is_chengnian(age):
if age > 18:
print("您已成年")
return
print("可以进入")
is_chengnian(age)
# -pass的用法
def test2():
pass #让函数结构完整 , 不出现编译错误
print("...")
# 2.返回值为容器
def test3():
return[1,2,3,4]
print(test3())
# 3.返回值为对象
def test4():
return range(0,10)
print(test4())
# -返回值自身
def test5():
return test5
print(test5())
test_change = test5()
print(test_change)
# 4.多返回值
def test6():
return 1,2,3,4
a, b, c, d = test6()
print(a)
print(b)
print(c)
print(d)