1.5 - 函数以及函数的参数

发布时间 2024-01-09 00:14:46作者: 虎头小黑

1.5.1 函数定义与返回值与文档注释

def fun():
  """ 这是一个文档注释,书写文档注释的位置为 函数头下面的 首行"""
  print("this is a self-define function")
  return 

python的自定义函数如上,可以自定义有参函数和无参函数。

函数的返回值:python是一门弱类型语言,并没有硬性规定函数的返回值类型,因此函数可以返回:单个对象多个对象表达式None。函数若没有return ,则返回默认值 None。

函数的文档注释可以通过 __doc__ 属性获取,如:fun.__doc__

 

 

1.5.2 函数的类型标注

  python是弱类型语言,对变量的类型不强制要求,但是如果要强制规定一个变量的类型,则可以使用类型标注:a : int = 3306,依旧可以执行,只是会在IDE中做出提醒。

  可以对  函数的参数类型以及返回值类型 进行限制。

from typeing import List, Iterable

# 类型标注,要求函数的返回值为 元组 类型
def fun() -> Tupe :
    print("hello")
    return (1,) #单个元素的元组,必须有 逗号

 

1.5.3 函数参数的传递

  python中,函数的参数传递的时候,实际传递的实参的地址,但是,当实参为不可变类型,函数内实参的改变不影响外部实参;当实参为可变类型,函数内实参的改变影响外部实参。

 

1.5.4 函数参数的类型

  函数的形参分为:必须参数和默认参数,且顺序为:先必须参数再默认参数;(函数在定义的时候,一个参数,要么设置默认值,要么在调用的时候传递实参。因此分为 必须参数和默认参数)

  函数的实参分为:位置参数和关键字参数,且顺序为:先位置参数再关键字参数;(函数在实际调用传参的时候,要么按照形参的先后顺序直接传参数值,要么任意顺序传递实参加上实参名。因此分为 位置参数和关键字参数)

  

  不定长位置参数:*args,接收[0, +∞) 个位置参数,打包成一个元组,如果没有接收到实参,则为空元组。

  不定长关键字参数:**kvargs,接收[0, +∞) 个关键字参数,打包成一个字典,如果没有接收到实参,则为空字典。

 

  特殊参数:/  *

    / :要求 / 前面的实参只能是位置参数;

    * :要求 * 后面的实参只能是关键字参数;

      二者之间随意。

#以内置函数max()为例:
函数的参数:[ ] 表示可选可不选,* 表示0个或无穷个。

  例如:python的max函数定义:max(iterator,  *[, key, default]) 或者 max(arg1,  arg2, *args[, key]):  【key指定了max函数中的每个元素的比较规则。】

  解析:对于max函数参数的第一种定义方式:[]表示可选参数,* 表示特殊参数,*后面直接连着[]:限制后面的可选参数在调用的时候必须通过 关键字参数kv的方式调用;

    对于max函数参数的第二种定义方式:*后面是一个变量,表示不定长必须参数,(arg1, arg2, *arg)表示max接收 [2, +∞) 个参数,[, key] 表示key参数可选。