python进阶一----函数的参数

来源:互联网 发布:pitstop汉化破解版mac 编辑:程序博客网 时间:2024/04/28 10:21

位置参数

调用函数时根据函数定义的参数位置来传递参数。

# 位置参数def test_param_type1(user,nickname):    print("user is %s ,his nickname is %s"%(user,nickname))if __name__ == '__main__':    # 位置参数测试    test_param_type1("名字","昵称")

输出:

user is 名字 ,his nickname is 昵称

默认参数

定义函数可以给参数提供默认值,调用函数时可传可不传该默认参数的值PS:所有位置参数必须出现在默认参数前,包括函数定义和调用。

# 默认参数def test_param_type2(user,nickname="默认"):    print("user is %s ,his nickname is %s" % (user, nickname))def test_param_type2_2(test_list=[]):    test_list.append('END')    return test_listdef test_param_type2_3(test_list=None):    if test_list is None:        test_list = []    test_list.append('END')    return test_listif __name__ == '__main__':    # 默认参数测试    test_param_type2("名字")    test_param_type2("名字", "昵称")    # 默认参数测试2,默认参数为数组    # 若设置值,则正常    test = test_param_type2_2([1,2,3])    print("正常调用:",test)    test = test_param_type2_2([1, 2, 3])    print("正常调用:",test)    # 若使用默认值,多次使用则会出错    """    Python函数在定义的时候,默认参数L 的值就被计算出来了,即[] ,因为默认参数L 也是一个变量,它    指向对象[] ,每次调用该函数,如果改变了L 的内容,则下次调用时,默认参数的内容就变了,不再是函    数定义时的[] 了。所以,定义默认参数要牢记一点:默认参数必须指向不变对象!    """    test = test_param_type2_2()    print("坑:",test)    test = test_param_type2_2()    print("坑:",test)    test = test_param_type2_3()    print("解决方案:",test)    test = test_param_type2_3()    print("解决方案:",test)

输出:

user is 名字 ,his nickname is 默认user is 名字 ,his nickname is 昵称正常调用: [1, 2, 3, 'END']正常调用: [1, 2, 3, 'END']坑: ['END']坑: ['END', 'END']解决方案: ['END']解决方案: ['END']

可变参数

传入的参数个数是可变的

# 可变参数"""加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。"""def test_param_type3(name,*lesson):    print("姓名:",name)    print("课程:")    for l in lesson:        print("   ",l)    print("\n")if __name__ == '__main__':    # 可变参数测试    test_param_type3("测试","Chinese","math","English")    test_param_type3("测试2","Chinese")    test_param_type3("测试3")

输出:

姓名: 测试课程:    Chinese    math    English姓名: 测试2课程:    Chinese姓名: 测试3课程:

关键字参数

将键值对, 作为参数传递给函数

# 关键字参数def test_param_type_4(**info):    for key, value in info.items():        print("{0} == {1}".format(key, value))if __name__ == '__main__':    # 关键字参数测试    test_param_type_4(name="测试", age=20, city="beijing")

输出:

city == beijingage == 20name == 测试

备注

如要同时使位置参数,可变参数,关键字参数这三种参数, 顺序是这样的:
some_func(fargs, *args, **kwargs)

0 0
原创粉丝点击