目录

  • 函数定义
  • 什么是函数?
  • 定义函数三种形式
  • 函数定义的特性
  • 函数调用
  • 函数返回值
  • return的特性:
  • 函数的参数
  • 有参函数
  • 形参
  • 位置形参
  • 默认形参
  • 实参
  • 位置实参
  • 关键字实参
  • 可变长参数
  • 形参中的可变长参数 *
  • 实参中的可变长参数 *

函数定义

什么是函数?

函数就是一个工具

定义函数三种形式

  • 空函数
def 函数名():
    pass
def 函数名():
    pass
  • 无参函数
def 函数名():
    代码块...
def 函数名():
    代码块...
  • 有参函数
def 函数名(x,y):
    print(x,y)
def 函数名(x,y):
    print(x,y)

函数定义的特性

函数定义过程,只检测语法,不执行代码。

函数调用

调用函数,使用函数。

def guess():
    x = 20
    y = 30
    if x > y:
        print(x)
    else:
        print(y)
        
guess()         # 函数调用.  x
def guess():
    x = 20
    y = 30
    if x > y:
        print(x)
    else:
        print(y)
        
guess()         # 函数调用.  x

函数返回值

函数体内部代码经过一些逻辑处理得到的结果 就叫返回值

返回值(return):返回一个值(可以是所有数据类型)

返回值 可以拿来做其他事情。

def func():
    name = "qinyj"
    return name
name = func()
print(name)     #qinyj

def func():
    name = "qinyj"
    return name
name = func()
print(name)     #qinyj

return的特性:

  1. return 返回一个值,如果没有return,默认返回None
  2. return 会终止函数,不运行下面的代码
  3. return 返回值可以返回多个值,用逗号隔开。
  4. return 返回多个值以元组形式接收。

函数的参数

有参函数

形参

形参就是函数在定义阶段内括号中定义的参数,,称之为形式参数,简称形参,本质就是变量名。

位置形参

从左到右依次接收位置实参的值。

def func(x,y):
    print(x,y)
def func(x,y):
    print(x,y)

默认形参

在函数定义阶段,就默认被赋值。

默认参数的值通常应该是不可变数据类型。

def func(x,y=10):
    print(x,y)
def func(x,y=10):
    print(x,y)

特点

  1. 如果没有给参数,使用默认值。
  2. 如果调用的时候传值,使用传的值。
  3. 默认形参必须放在位置形参后面。

实参

位置实参

从左到右依次依次传值给位置形参,一一对应,位置形参有多少个,位置实参也得有多少。

# 调用
func(1,2)
# 调用
func(1,2)

关键字实参

在调用函数的时候,按照key=values的形式指定参数传值,成为关键字实参。

# 调用
func(x=1,y=10)
# 调用
func(x=1,y=10)

特定

  1. 按照参数名传给参数值,函数的参数一般为0-3个。
  2. 可以打破位置的限制,为指定的形参赋值。
  3. 关键字实参必须写在位置实参的后面。

可变长参数

可变长参数指的是在调用函数的时候,传入的参数的个数可以不固定。

形参中的可变长参数 *

形参中的* 会将多余的位置实参全部接收,以元组的形式存储,然后把值赋给*后面的变量名,一般用args

可以使用解压缩的形式将值一个一个取出来。a,b,c = args

def sum_self(*args):
    res = 0
    for num in args:
        res += num
    return res

res = sum_self(1,2,3,4)
print(res)                  # 10
def sum_self(*args):
    res = 0
    for num in args:
        res += num
    return res

res = sum_self(1,2,3,4)
print(res)                  # 10

实参中的可变长参数 *

实参中的* ,会将*后面的变量名的值循环去除,打散成位置实参,

def func(x,y,z,*args):
    print(x,y,z,args)

lt = [1,2,3]
func(1,2,3,*lt)     # 1 2 3 (1, 2, 3)
def func(x,y,z,*args):
    print(x,y,z,args)

lt = [1,2,3]
func(1,2,3,*lt)     # 1 2 3 (1, 2, 3)