# a = 1
# ====================================================
# def test():
# print(a)
# print(b)
# print(c)
# #这部分,a,b正常打印,c报错,说明并不是像java那样统一编译,没有先后顺序的
# #它是执行到哪里才在哪里进行判断
# b = 2
# test()
# c = 3
# ====================================================
# def test():
# """这是测试注释的功能,没想到注释要写在函数内"""
# print("test")
# ====================================================
# def test(name="老王", age=44):
# """演示默认参数,居然可以这么设置值,shit"""
# print(name + "::" + str(age))
#
#
# test("老张")
# ====================================================
deftest(name="老王",age=44,*change_param,**kwargs):
"""演示可变参数,它的形式是元组,只要在参数名前加星号就行了"""
print(name +"::"+str(age))
# (3,)如果元组只有一个元素,那这一个元素后面必须加一个逗号
print(change_param)# (234, '在在在', [1, 2, 3])
# print("可变参数:" + str(change_param[0]))
# {'size': 44, 'width': 99}
print(kwargs)#以字典方式传进来
# test("老张", 23423, 234, "在在在", [1, 2, 3], 33, size=44, width=99)
A = ("asdf","asdf","fdsa")
B = {"names":"shit","ages":666}
#。。服了,这不传第二个参数,它居然把可变参数的第一个值给第二个参数用
# test("jeje", *A, **B)
# test("jeje", 321,123,*A, **B)#如果多放了,第三个第四个自动并入可变参数
#看来规律是这个双星的可以指定,可变参数跟其他参数结合使用的时候,都是动态
#分配的,注意,字典的键还不能和方法的参数重复,这种加星号传参,称为拆包
test("jeje",321,**B)
# ====================================================