传入参数个数_Python小知识-Python中的函数参数(基础篇)

本文介绍了Python中五种函数参数类型:必须参数、默认参数、可变参数、关键字参数和组合参数。必须参数要求调用时传入相同数量的参数,而默认参数允许设置预设值。可变参数允许传入任意数量的参数,关键字参数则允许按名称传递参数,解耦合参数顺序。组合参数则是上述几种类型的组合,遵循特定顺序规则。下篇将进一步探讨不同参数类型的区别和与C/C++的对比。
摘要由CSDN通过智能技术生成

0 总述

这个题目分为2篇,第一篇基本上是概念以及实例,有个相对系统的认识,第二篇想写的深入一些,不同参数类型的区别以及和c/c++的函数参数对比下异同~下面开始是第一篇的内容啦~

Python中的函数参数一共分为5种类型,分别是:

  1. 必须参数
  2. 默认参数
  3. 可变参数(不定长参数)
  4. 关键字参数
  5. 组合参数

其中必须参数和默认参数是我们日常码代码中定义函数最常使用的函数参数,下面我们通过几个例子来了解他们吧!

1 必须参数

作为第一个例子,当然首选是hello word啦~

def say(words):
    print("say is ",words,)

say("Hello World!")
say()

我们可以从上述say函数中发现,words作为一个行参,调用时传入了一个“Hello World!”字符串,那么words的类型也是字符串。因此行参的类型取决于传入的实参的类型。那么可不可以不传入参数,直接调用这个函数呢?就会看到下面的报错信息:

a5c6cbbabea6aac3a9046f37811a2da5.png

为什么会报错呢?什么是必须参数呢 ? 主要是特征是在调用时必须传入与定义一致数量的参数,不能多也不能少,如果按照要求传入参数就会报错啦~

那么又有个新的问题,如果我比较懒,想在不穿入参数的情况下(同时也能完成字符串打印功能),也打印hello word呢?就可以学习下下一种参数类型啦~

2 默认参数

看下面的例子一,就可以完成不穿入参数也完成打印hello word的功能啦

#例子一:
def say(words="Hello World!"):
  print("SAY:",words)
  
#函数调用
say("Hello World!")
say()

6cbd42562b351d64549f53fe218beb78.png

从函数定义可以看出,函数形参words被赋了一个值"Hello World!",在调用时,可以传入一个新的实参,同时也可以不传入使用默认值。默认参数的优点在于对于一些参数可以给其预设一些默认的值,这样在调用时只需要传入必要的参数即可,简化调用

下面的再来个例子,我们巩固一下默认参数:

# 定义函数
def robot_marry(male_name, female_name = "eva"):
  print(male_name + " and " + male_name + " are friend.")
 
# 调用方式1:第一个参数使用传入的参数
robot_marry("wali" , "eva")
# 调用方式2,第二个参数使用默认值
robot_marry("wali")

如果我想打印的,小蟑螂和wali,eva是好朋友呢,难道只能给函数再加一个形参吗?

3 可变参数

可变参数,什么东西可变呢? 是参数的个数是可变的,这个比较有趣,函数定义后,我可以按需传入设定数量的参数,当我们不是很确定参数的个数,或者说参数个数会发生变化的时候,就可以用可变参数,可变参数可以连续传入多个参数,最常用的可变参数的函数,就是我们的print函数啦~

下面的例子就可以打印wali , eva , small cockroach , are friend啦

# 定义函数
def robot_friend(*robot_name):
    for name in robot_name:
        print(name + ", ",end='') #python3

  print('are friend')

# 调用方式1:第一个参数使用传入的参数
robot_friend("wali" ,"eva", "small cockroach

再来个例子巩固一下,比如:双十一来了,我们需要买好多东西,但买啥,买多少我们并不确定,这个时候我们也可以用可变参数

# 函数定义
def buy(*things):
    print("You have buy:")
    
    for thing in things:
      print(thing)
# 函数调用:可以写入任意数量个参数
buy("red-shoe","coat","trousers","hat")

通过上述函数可以发现,我们在定义时仅仅在参数前加了个*号,带来的效果时我在使用时可以通过things获取到传入多个参数中的每一个参数。因此简单来说,可变参数本质为任意数量个数的参数的容器,可以容纳无限个参数

4 关键字参数

当我们定义的函数中有很多参数,其中一些有默认值,我们在调用时只想传入某一些参数,而这些参数又不是都在前面,这个时候使用关键字参数能摆脱使用位置对应行参的约束,使得代码很简洁。如以下例子所示:

def number_add(a , b = 3, c = 4 , d =5 ,e = 6):
  print("sum is ", a+b+c+d+e)

我们在调用时,首先a使用的为必须参数,因此必须传入一个实参,b,c,d假设我并不想改变,只想改变e,这时我们有两种办法:

number_add(10,3,4,5,7)#方法1
number_add(10,e=7)#方法2

方法2通过行参名加上赋值的方式,跳出了位置约束,使得代码很简洁,对于这些默认参数很多,而调用时只想改变很少一部分的应用,非常有效。

5 组合参数

组合参数就是将以上描述的4种参数中的两个及以上同时引入函数作为行参,但参数的位置顺序必须准照以下规则:必须参数、关键字参数、默认参数、不定长参数

6 下篇

下篇准备写下不同的参数类型的区别,可变参数不可变参数,以及与c++的异同,对应的内容推荐Python学习手册中的第六章和第十八章~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值