python使用函数的优点是什么_Python函数

本文介绍了Python函数参数的四种类型:默认参数、可变参数、关键字参数和命名关键字参数。强调了在使用默认参数时必须指向不变对象,避免多次调用时出现问题。同时解释了如何通过*和**操作符来处理可变参数和关键字参数。此外,还提到了命名关键字参数的限制,即参数名必须遵循特定顺序,并且在已有可变参数后不需要特殊分隔符。最后,给出了示例代码展示各种参数的用法。
摘要由CSDN通过智能技术生成

3.当调用者希望使用默认参数中的某几个默认参数时,调用时不按顺序提供部分默

认参数,需要把参数名写上。

[wangml@iZwz976helaylvgqok97prZ pythoncode]$ python3 somevalue.py

Hurryin LemonTree ,he is 18 years old and graduated fromGreedApple

[wangml@iZwz976helaylvgqok97prZ pythoncode]$ cat somevalue.pydef myPrint(name, school = 'GreedApple', age = 18, hometown = 'Pecato'):print(name, 'in', hometown, ',he is', age, 'years old and graduated from', school)returnmyPrint('Hurry', hometown = 'LemonTree')

4.定义默认参数时,默认参数必须指向不变对象,否则在多次调用函数时可能产生

错误的结果。因为,Python函数在定义的时候,默认参数的值就被计算出来了,在

每次调用该函数时,如果改变了默认参数的内容,则下次调用时,默认参数的内容

就变了,不再是函数定义时的值了。

可变参数:调用函数时,可变参数的传入值数量是可变的,类似于传入一个list或

tuple。只是,定义可变参数和定义一个list或tuple参数相比,仅仅在参数名前面

加了一个*号。并且Python允许你在list或tuple前面加一个*号,把list或tuple的

元素变成可变参数用来作为调用函数时的传入值。

[wangml@iZwz976helaylvgqok97prZ pythoncode]$ python3 sum.py10

10

10

10[wangml@iZwz976helaylvgqok97prZ pythoncode]$ cat sum.pydefsum_one(value):

sum=0for i invalue:

sum+=ireturnsumdef sum_two(*value):

sum=0for i invalue:

sum+=ireturnsum

value= [1, 2, 3, 4]print(sum_one([1, 2, 3, 4]))print(sum_one(value))print(sum_two(1, 2, 3, 4))print(sum_two(*value))

关键字参数:与可变参数相比,关键字参数允许你传入0个或任意个含参数名的参

数,这些关键字参数在函数内部自动组装为一个dict。 只是,定义关键字参数和

定义一个dict参数相比,仅仅在参数名前面加了两个*号。在调用函数时,Python

允许dict前加两个*号,将其转换为关键字参数传进去

[wangml@iZwz976helaylvgqok97prZ pythoncode]$ python3 myPrint2.py

Name: Hurry age:18 {'Number': 12345, 'SchoolID': 54321}

Name: Hurry age:18 {'Number': 12345, 'SchoolID': 54321}

[wangml@iZwz976helaylvgqok97prZ pythoncode]$ cat myPrint2.pydef myPrint(name, age, **other):print('Name:', name, 'age:', age, other)returntemp= {'Number': 12345, 'SchoolID': 54321}

myPrint('Hurry', 18, **temp)

myPrint('Hurry', 18, Number = 12345, SchoolID = 54321)

命名关键字参数:可以限制传入值KEY的关键字参数,定义时和关键字参数**kw不

同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。

[wangml@iZwz976helaylvgqok97prZ pythoncode]$ python3 myPrint3.py

Name: Hurry age:18 Number 12345 SchoolID 54321Traceback (most recent call last):

File"myPrint3.py", line 8, in myPrint('Hurry', 18, Number = 12345, CardID = 54321)

TypeError: myPrint() got an unexpected keyword argument'CardID'[wangml@iZwz976helaylvgqok97prZ pythoncode]$ cat myPrint3.pydef myPrint(name, age, *, Number, SchoolID):print('Name:', name, 'age:', age, 'Number', Number, 'SchoolID', SchoolID)returntemp= {'Number': 12345, 'SchoolID': 54321}

myPrint('Hurry', 18, **temp)

myPrint('Hurry', 18, Number = 12345, CardID = 54321)

注意:如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再

需要一个特殊分隔符*了

例如:def myPrint(name, age, args*, Number, SchoolID):

Tips:

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名

关键字参数,这5种参数都可以组合使用。但是请注意:函数定义时参数定义的顺

序必须按照:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

如果我们想定义一个什么都不做的空函数,我们可以使用 pass语言 作为函数体。

实际上pass可以用来作为占位符,假如现在还没想好怎么写函数的代码,则可以先

放一个pass,让代码能运行起来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值