Python基础学习笔记——函数(1):作用、定义、调用、参数
2019-07-17 08:37
369 查看
函数
- 对一组表达特定功能表达式的封装,将特定功能代码编写在一个函数里,就是具体某个功能的代码块(一段代码)
函数作用
- 便于阅读
- 提高代码的复用性,降低代码冗余
- 使程序模块化
- 程序员的哲学:重复的事情不做两次
函数的定义
- 注意: 函数定义的时候不会执行函数里面的代码
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个或者多个参数。
- 不定长位置参数
(*args)
def xxx(*arge) # 多出的“参数”会以元组的方式存入args元组中
- 不定长关键字参数
(**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)
普通参数、缺省参数、不定长参数混合使用
- 普通参数是不能放在缺省参数后面的
def show(name, age=10):(√) def show(age=10, name):(×) 这样调用的时候show('张三'): 本意是将参数传给name,让age默认为10, 结果却是'张三'传给了age,name没有值
- 缺省参数需要放到
*args
(不定长参数)的后面
def show(name, *args, age=10):(√) def show(name, age=10, *args):(×) 调用show('张三', '男'): 本意是将参数'男'传给args,让age默认为10 结果却是'男'传给了age,args没有值
- **kwargs(关键子参数)需要放到所有参数的最后面
def show(name, *args, age=10, **kwargs):(√) # 假如不放到最后面,首先语法就会报错,调用的时候位置参数会乱
错题
- 下列关于不定长参数
*args
和**kwargs
说法错误的是( D )
A:*args
和**kwargs
是变量名
B:*
的作用,告诉python
解释器这个args
变量以元祖的方式保存多余的变量参数
C:**
的作用,告诉python
解释器这个kwargs
变量以字典的方式保存多余的命名参数
D:调用函数参数时的顺序为:必须传递的参数在最左边,然后是缺省参数,最后是不定长参数
解析:记住传参的顺序——位置参数、多余的位置参数、关键字参数、多余的关键字参数。
函数参数的传递
- 按照位置参数方式传参,参数按照位置顺序依次进行传参即可
强调的是参数的顺序要和函数定义参数的顺序保持一致 - 按照关键字方式传参,通过参数名传入相关的参数
强调的是关键字的名字和函数参数的名字要保持一致,不要求参数的顺序 - 前面使用位置参数方式传参后面使用关键字方式传参
前面使用位置参数方式传参后面使用关键字方式传参
注意:位置参数不能放到关键字参数后面,如果前面使用的关键字方式传参,那么后面的参数必须也使用关键字方式传参
def show(name, age): print(name, age) # 1.按照位置参数方式传参 show("李四", 20) # 2.按照关键字方式传参 show(age=20, name="李四") # 3.前面使用位置参数方式传参后面使用关键字方式传参 show("李四", age=20) # show(name="李四", 20) # 报错
相关文章推荐
- Python学习笔记(10)-函数-函数定义、调用、参数、返回值、嵌
- Python学习笔记(10)-函数-函数定义、调用、参数、返回值、嵌
- JavaScript学习笔记第一天——定义函数以及参数调用
- python学习笔记——基础篇(3):函数的定义
- python学习笔记(七)函数定义与调用
- Python3基础 定义无参数无返回值函数 调用会输出hello world的函数
- Python教程学习简记2--Python 函数调用 定义函数 函数的参数 递归函数
- Python快速入门学习笔记(三)——函数的定义与调用
- Python学习笔记——函数定义、调用
- 03-python学习笔记:函数-调用与定义
- python学习笔记--函数定义、调用与默认参数
- python--基础学习(二)判断 、循环、定义函数、继承、调用
- Python基础(函数,函数的定义,函数的调用,函数的参数,递归函数)
- C++ primer学习笔记_6_函数---函数定义、参数传递
- Python中函数参数设置及使用的学习笔记
- Scala 学习笔记(五)------定义函数指定默认参数
- Python学习笔记7:函数对象及函数对象作参数
- Python 2.7 学习笔记 基本语法和函数定义
- Python新手学习基础之函数-可变参数*
- python学习笔记12(函数三): 参数类型、递归、lambda函数