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

位置参数

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

# 位置参数
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_list


def test_param_type2_3(test_list=None):
    if test_list is None:
        test_list = []
    test_list.append('END')
    return test_list

if __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 == beijing
age == 20
name == 测试

备注

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我想静静[静]_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值