Python中关于函数的总结

函数是经过组织的,可重复使用的,用来实现单一功能的代码块。

  • 函数大大提高了代码的可重用性。
  • Python自定义了一些内置函数供我们使用,内置函数是已经定义好,我们可以直接进行调用的函数。同时我们也可以自定义函数来解决实际问题

函数声明

  • 使用关键字def对函数进行声明,def关键字后紧跟函数名称。
  • 函数名称后的括号中可定义参数,或在调用函数时向其中传入参数。
  • 可以在定义函数的下一行开始加入注释对该函数进行说明。
  • 函数内容从函数名后的冒号开始,以一个tab或四个空格位进行缩进,说明缩进内容都属于该函数。
  • 在函数中代码的最后可使用return来返回内容,若是未使用return,则默认返回None。
   def play_basketball(parameter):
       '''
       我是注释
       '''
       function content
       ...
       ...
       return xxx
  • 如果想定义一个没有功能的语句,可以使用pass。比如你还没想好函数中的功能应该如何定义,可以先使用pass进行占位,使代码正常运行。(pass同样也可以用在其他代码块中,比如if语句等)
   def play_basketball():
       pass

函数调用

在函数定义好后,通过调用函数以实现其中的功能,我们可以直接通过其函数名进行调用。使用return返回的内容应该有变量对其进行接收。

  def show_me(str):
      "打印任何传入的字符串"
      return str

  # 调用函数
  show_me("I am Pluto")
  
  # 定义变量接收函数的返回值
  hmh = show_me("I am Pluto"")
  print(hmh)

上述代码中直接调用函数是不会有任何输出的,而使用变量接收返回值后再调用print函数就可以将其打印出来。

函数参数

函数参数有五种,分别是位置参数、默认参数、可变参数、关键字参数、命名关键字参数

  • 位置参数(必选参数)
    故名思义,位置参数就是按函数定义时参数的位置顺序传入的参数
   def pluto(name, age, gender):
       print("pluto's name is %s" %name)
       print("pluto's age is %d" %age)
       print("pluto's gender is %s" %gender)
   
   pluto('hmh', 23, 'male')
   >>>
pluto's name is hmh
pluto's age is 23
pluto's gender is male

而若是我们改变了传入参数的位置,在上面示例的代码中,若是保证了参数的类型,虽然也不会报错,但就达不到我们想要实现的功能了,而在较为复杂的函数中,则有大概率会报错。
但是我们也可以使用关键词的形式传入参数,这样可以不按照参数的定义顺序。

   pluto(age=23, name='hmh', gender='male')
   >>>
   pluto's name is hmh
   pluto's age is 23
   pluto's gender is male

⚠️:别名必选参数,也是在调用函数的时候,务必传入参数,才可以正常运行。否则会报错:

   pluto('23', 'male')
   >>>
   TypeError: pluto() missing 1 required positional argument: 'gender'
  • 默认参数
    默认参数就像是一个预设值,在定义函数的时候就将其定义好,也就是赋予其一个默认值。这样在调用时若缺省该参数,则函数会使用在定义时的默认参数。
   def pluto(name, age, gender='male'):
       print("pluto's name is %s" %name)
       print("pluto's age is %d" %age)
       print("pluto's gender is %s" %gender)
   pluto('hmh', 23)
   >>>
   pluto's name is hmh
   pluto's age is 23
   pluto's gender is male

若是在调用时传入该参数,则函数会使用传入的参数。

   pluto('hmh', 23, 'female')   # 我是纯爷们儿。。。
   >>>
   pluto's name is hmh
   pluto's age is 23
   pluto's gender is female
  • 可变参数
    可变的含义就是传入的参数数量可变,允许传入任意个参数,而这些参数会在调用的时候自动构建为一个tuple。只需在定义的参数名称前加上一个*即可。若是在参数名前加上两个**
   def pluto(*personalInformation):
   '''
   还记得下划线吗?
   '''
       for _ in personalInformation:
           print(_)
   pluto('hmh', 23, 'female')
   >>>
   hmh
   23
   female
  • 关键字参数
    在定义函数的参数时,若是在该参数前面使用两个**,就将传入的参数组成一个字典dict的形式,在传入参数的时候,又必须以字典中的键值对的形式传入。
   def pluto(**personalInformation):
       print(personalInformation)
   pluto(name='hmh', age=23, gender='female')
   >>>
   {'gender': 'female', 'name': 'hmh', 'age': 23}
  • 命名关键字参数
    这部分需要结合关键字参数的知识去理解,对于关键字参数,调用函数时是可以接收不受限制的关键字参数,而如果我们想要限制关键字参数的名字,就可以使用命名关键字参数,使用一个特殊的分隔符*,在该分隔符后面的参数被看作是命名关键字参数。
   def pluto(name, age, *, gender='male', adress):
       print("pluto's name is %s" % name)
       print("pluto's age is %d" % age)
       print("pluto's gender is %s" % gender)
       print("pluto's adress is %s" % adress)

   pluto('hmh', 23, gender='male', adress='peking')
   >>>
   pluto's name is hmh
   pluto's age is 23
   pluto's gender is male
   pluto's adress is peking

⚠️:
1、命名关键字必须要传入参数,否则会报错。
2、如果函数定义中已经有了有了一个可变函数,则其后面的参数被视为命名关键字参数。

   def pluto(name, age, *v, gender='male', adress):
       print("pluto's name is %s" % name)
       print("pluto's age is %d" % age)
       print("pluto's gender is %s" % gender)
       print("pluto's adress is %s" % adress)
   
   pluto('hmh', 23, gender='male', adress='peking')

匿名函数(lambda表达式)

lambda表达式简化了函数定义的书写形式,且因为没有定义函数的名称,故称之为匿名函数(个人理解)。

   g = lambda x: x + 1
   print(g(1))
   >>>
   2

上述代码是定义了一个x+1的功能,并将参数1传入其中进行计算,最后得到结果2。而上述代码完全可以使用常规的函数定义方式进行定义。
1、lambda表达式可以定义一个匿名函数;
2、使用该表达式并不会带来运行效率的提高,只会使代码更加的简洁;
3、若是功能较多,建议使用def的方式进行定义,可以获得更好的重用性;
4、个人还是觉得def常规形式更加易读易懂,而lambda表达式更像是为了专门为了功能非常简单(比如一两行的代码就可以实现的功能)的函数而设计的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值