您的位置:首页 > 编程语言 > Python开发

Python基础学习笔记——函数(1):作用、定义、调用、参数

2019-07-17 08:37 369 查看

函数

  • 对一组表达特定功能表达式的封装,将特定功能代码编写在一个函数里,就是具体某个功能的代码块(一段代码)

函数作用

  1. 便于阅读
  2. 提高代码的复用性,降低代码冗余
  3. 使程序模块化
  4. 程序员的哲学:重复的事情不做两次

函数的定义

  • 注意: 函数定义的时候不会执行函数里面的代码
def<函数名>(<参数列表>):
"""文档说明"""
<函数体>
return <返回值列表>

函数的调用

  • 调用
# 调用带有参数的函数的时候
函数名(实参, ...)

# 调用没有参数的函数的时候
函数名()

# 函数带有返回值的时候会返回一个结果,可以使用变量保存函数返回的这个结果
result = 函数名(param1, param2)
  • 过程 调用程序在调用函数处暂停执行
  • 调用时将参数(实参)赋值给函数的参数(形参)
  • 执行函数体
  • 返回函数结果,回到调用出继续执行

参数

  • 参数分为:实参、形参、默认参数
缺省参数
  • 定义:形参设置了默认值,那么这个形参可以称为缺省参数。
  • 特点: 如果给缺省参数传值了,那么就使用传入的这个值,否则使用默认值。
  • 注意:函数的形参只接收实参的值,给形参赋值并不影响实参。
def sum_num(num1, num2=10):  # num2这个参数就是缺省参数
result = num1 + num2
return result
num = sum_num(1, 2)  # num1=1, num2=2  num=1+2=3
num = sum_num(1)  # num1=1, num2=10  num=1+10=11

不定长参数(多参数冗余处理)

  • 不确定函数参数的个数,可能是0个、1个或者多个参数。
分类
  1. 不定长位置参数
    (*args)
def xxx(*arge)    # 多出的“参数”会以元组的方式存入args元组中
  1. 不定长关键字参数
    (**kwargs)

    对于不定长关键字参数传参,关键字的名字可以随便设置
def xxx(**kwargs)  # 多出的“实参”会以字典的形式存入kwargs字典中
  • 例如
def sum_num(*args, **kwargs):

# args: 所有的位置参数都会给args,然后把所有的位置参数封装成一个元组类型
print(args, type(args))

# kwargs:所有的关键字参数都会给kwargs,然后把所有的关键字参数封装成字典
print(kwargs, type(kwargs))

# 调用的时候,位置参数在前,关键字参数在后
sum_num(1, 2, 3, a=34, b=45, c=56)

普通参数、缺省参数、不定长参数混合使用

  1. 普通参数是不能放在缺省参数后面的
def show(name, age=10):(√)
def show(age=10, name):(×)
这样调用的时候show('张三'):
本意是将参数传给name,让age默认为10,
结果却是'张三'传给了age,name没有值
  1. 缺省参数需要放到
    *args
    (不定长参数)的后面
def show(name, *args, age=10):(√)
def show(name, age=10, *args):(×)
调用show('张三', '男'):
本意是将参数'男'传给args,让age默认为10
结果却是'男'传给了age,args没有值
  1. **kwargs(关键子参数)需要放到所有参数的最后面
def show(name, *args, age=10, **kwargs):(√)
# 假如不放到最后面,首先语法就会报错,调用的时候位置参数会乱

错题

  1. 下列关于不定长参数
    *args
    **kwargs
    说法错误的是( D
    A:
    *args
    **kwargs
    是变量名
    B:
    *
    的作用,告诉
    python
    解释器这个
    args
    变量以元祖的方式保存多余的变量参数
    C:
    **
    的作用,告诉
    python
    解释器这个
    kwargs
    变量以字典的方式保存多余的命名参数
    D:调用函数参数时的顺序为:必须传递的参数在最左边,然后是缺省参数,最后是不定长参数
    解析:记住传参的顺序——位置参数、多余的位置参数、关键字参数、多余的关键字参数

函数参数的传递

  1. 按照位置参数方式传参,参数按照位置顺序依次进行传参即可
    强调的是参数的顺序要和函数定义参数的顺序保持一致
  2. 按照关键字方式传参,通过参数名传入相关的参数
    强调的是关键字的名字和函数参数的名字要保持一致,不要求参数的顺序
  3. 前面使用位置参数方式传参后面使用关键字方式传参
    前面使用位置参数方式传参后面使用关键字方式传参

注意:位置参数不能放到关键字参数后面,如果前面使用的关键字方式传参,那么后面的参数必须也使用关键字方式传参

def show(name, age):
print(name, age)

# 1.按照位置参数方式传参
show("李四", 20)

# 2.按照关键字方式传参
show(age=20, name="李四")

# 3.前面使用位置参数方式传参后面使用关键字方式传参
show("李四", age=20)
# show(name="李四", 20)  # 报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: