PYTHON-函数的定义与调用,返回值,和参数
函数基础
'''
1. 什么是函数
具备某一功能的工具->函数
事先准备工具的过程--->函数的定义
遇到应用场景,拿来就用---->函数的调用 函数分类两大类:
1. 内置函数
2. 自定义函数 2. 为何要用函数
1. 代码冗余
2. 可读性差
3. 可扩展性差 一 为何要用函数之不用函数的问题
#1、代码的组织结构不清晰,可读性差
#2、遇到重复的功能只能重复编写实现代码,代码冗余
#3、功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一管理且维护难度极大 3. 如何用函数
原则:必须先定义,再调用 定义函数的语法:
def 函数名(参数1,参数2,...):
"""文档注释"""
code1
code2
code3
....
return 返回值
调用函数的语法:
函数名(值1,值2,...)
''' 函数的使用应该分为两个明确的阶段:先定义后调用
1. 定义阶段:只检测语法,不执行函数体代码
2. 调用阶段:会触发函数体代码的执行 二 函数使用的原则:先定义,再调用
三 函数在定义阶段都干了哪些事?
#只检测语法,不执行代码
也就说,语法错误在函数定义阶段就会检测出来,而代码的逻辑错误只有在执行时才会知道 函数的定义与调用形式
一:定义函数三种形式
1、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值
2、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印
3、空函数:设计代码结构
'''
# 有参函数
def func(x):
pass
func(1)
# 无参函数
def bar():
pass
bar()
# 空函数
def shopping():
pass
''' 二:函数调用的三种形式
函数的调用:函数名加括号
1 先找到名字
2 根据名字调用代码 register() # 1,语句形式(单纯的语句操作,没有返回值) def max2(x,y):
if x > y:
return x
else:
return y
res=max2(10,20)*12 # 2,表达式(可以+-*/) res=max2(max2(10,20),30) # 3,将函数的调用当作参数传给另外一个函数
print(res) 函数的返回值return
注意点:
1. 函数的返回值没有类型限制
2. 函数的返回值没有个数限制 return返回值的三个功能
2.1 返回多个值: 多个返回值用逗号分隔开,返回的是元组形式
def func():
print('from func')
return 1,1.1,'hello',[1,2,3]
res=func()
print(res,type(res))
2.2 返回1个值: 返回的就是该值本身
def func():
return 123
res=func()
print(res,type(res))
2.3 返回0个值或者干脆没有return: 返回None
def func():
# return
pass
res=func()
print(res) return除了有返回值的功能,还有结束函数执行的的功能
函数内可以有多个return,但只要执行一次,整个函数就立即结束,并且将return后的值返回
def func():
print(1)
return
print(2)
return
print(3)
func() 函数参数的使用!!!!! 函数的参数
一 形参与实参
#形参即变量名,实参即变量值,函数调用时,将值绑定到变量名上,函数调用结束,解除绑定 一: 函数的参数分为两大类:
形式参数(形参): 在定义函数阶段,括号内定义的参数/变量名 称为形参
实际参数(实参): 在调用函数阶段,括号内传入的值/变量值 称为实参
ps: 在调用函数阶段会将实参(值)的值绑定给形参(变量名),\
这种绑定关系只在调用函数时生效,在函数执行完毕后就会解除绑定 二: 细分:
1. 位置\参数:
1.1 位置形参: 在定义阶段,按照从左到右的顺序依次定义的形参称之为位置形参
特点: 但凡时按照位置定义的形参,必须被传值,多一个不行少一个也不行
1.2 位置实参: 在调用阶段,按照从左到右的顺序依次传入的值称之为位置实参
特点:与形参一一对应
def func(x,y,z):
print(x,y,z)
func(2,1,4) 2. 关键字实参: 在调用阶段,按照key=value的形式定义的实参称之为关键字实参
特点: 可以完全打乱顺序,但仍然能为指定的形参传值(总结:指名道姓地为指定的形参传值)
实参的形式可以是位置实参与关键字实参混合使用,但是必须遵循原则
1.位置实参必须放在关键字实参的前面
2.不能对同一个形参重复传值
func(1,z=3,y=2)
func(z=3,1,y=2) #错误
func(1,z=3,x=2,y=3) #错误 3. 默认形参:在定义阶段,就已经为形参赋值,该形参称之为默认参数
特点
1. 定义阶段就已经有值意味着调用阶段可以不用传值
2. 位置形参必须放到默认形参的前面
3. 默认形参的值只在定义时赋值一次,定义阶段之后的改动不会影响该值
4. 默认形参的值通常应该是不可变类型
def func(x,z=100,y): # 位置形参必须放到默认形参的前面
print(x,y,z) m=10
def func(x,y,z=m):
#z=10
print(x,y,z)
m=100 # 默认形参的值只在定义时赋值一次,定义阶段之后的改动不会影响该值
func(1,2) def add_hobby(name,x,hobbies=[]): # 默认形参的值通常应该是不可变类型
hobbies.append(x)
print('%s 的爱好有 %s' %(name,hobbies)) add_hobby('egon练习','read',[])
add_hobby('wxx','eat',[])
add_hobby('alex','piao',[]) 正确的做法
def add_hobby(name,x,hobbies=None):
if hobbies is None:
hobbies=[]
hobbies.append(x)
print('%s 的爱好有 %s' %(name,hobbies)) add_hobby('egon练习','read',)
add_hobby('wxx','eat',)
add_hobby('alex','piao') 4. 可变长参数:
可变长实参:指的是在调用阶段,实参值个数是不固定的,
实参无非两种形式(位置,关键字实参),
对应着形参也必须有两种解决方案来分别接收溢出位置实参或者关键字实参
*--->溢出的位置实参
**--->溢出的关键字实参 4.1 *的用法
在形参前加*:*会将溢出的位置实参存成元组的形式,然后赋值给*后的形参名
def func(x,y,*z): #z=(3,4,5)
print(x,y,z)
func(1,2,3,4,5) 在实参前加*:但凡碰到实参中带*的,先将实参打散成位置实参再与形参做对应
func(*[1,2,3,4,5]) #func(1,2,3,4,5)
func(*[1,2,3]) #func(1,2,3)
func(1111,2222,*[1,2,3,4,5]) #func(1111,2222,1,2,3,4,5) 4.2 **的用法
在形参前加**:**会将溢出的关键字实参存成字典的形式,然后赋值给**后的形参名
def func(x,y,**z): #z={'c':3,'b':2,'a':1}
print(x,y,z)
func(1,y=2,a=1,b=2,c=3) 在实参前加**:但凡碰到实参中带**的,先将实参打散成关键字实参再与形参做对应
def func(x,y,z):
print(x,y,z)
func(1,**{'y':2,'z':3}) #func(1,z=3,y=2)
func(1,**{'a':2,'y':333,'z':3}) #func(1,a=2,y=333,z=3) # a错误,位置形参必须被传值 def func(x,y,**z):
print(x,y,z)
func(**{'y':1,'x':2,'a':1111,'b':2222}) #func(y=1,x=2,a=1111,b=2222) 形参中:*args,**kwargs
def func(x,*args):
print(x)
print(args) def func(x,**kwargs):
print(x)
print(kwargs) *与**的应用:见练习 四种形参的顺序:位置形参---默认形参---*args---**kwargs 命名关键字参数: 在定义函数时,*与**之间参数称之为命名关键字参数
特点:
在调用函数时,命名关键字参数必须按照key=value的形式传值
PYTHON-函数的定义与调用,返回值,和参数的更多相关文章
- Python函数的定义与调用、返回值、参数
一.函数是什么 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.比如print(),len()等.但你也可以自己创建函数,这被叫做用户自 ...
- python 函数的定义及调用语法,map 方法,函数嵌套递归
1.什么是函数 开发程序时候,需要代码执行多次,为了提高编写效率及代码重用性,所以把具有独立功能的代码块组织为一个小模块,给这个功能一个名称,这就是函数. 函数可以使用系统自带的函数也可以 ...
- 初识python 函数(定义,传参,返回值)
python基础(二): 菜鸟教程基础知识讲解的非常全面,内容选择我认为的重点输出一遍 函数: 定义一个函数: 你可以定义一个由自己想要功能的函数,以下是简单的规则: def fun(arg): pa ...
- Python函数的定义、参数传入与函数的调用
作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色.今天给大家介绍Python函数的定义.参数的传入以及调用方式.其中函数参数的传入方式为本节重点内容.Python函数的参数形式包 ...
- day11 python学习 函数的建立,返回值,参数
函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算,如:发送邮件.计算出 [11,22,38,888,2]中的最大数等 ...
- 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数
函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...
- Kotlin基础(二)函数的定义与调用
函数的定义与调用 一.预备知识:在Kotlin中创建集合 fun main(args: Array<String>) { //Kotlin中定义各自集合 val ,,,) val list ...
- 12_传智播客iOS视频教程_注释和函数的定义和调用
OC的注释和C语言的注释一模一样.它也分单行注释和多行注释. OC程序里面当然可以定义一个函数.并且定义的方式方法和调用的方式方法和我们C语言是一模一样的.OC有什么好学的?一样还学个什么呢? 重点是 ...
- python-函数1(定义-作用-优势-返回值)
python-函数1(定义-作用-优势-返回值) 1.面向对象的定义是靠-类>>class2.面向过程的定义是靠-过程 >>def3.函数式编程的定义是靠-函数>> ...
- js函数的定义和调用
函数的定义 函数使用function 声明,后跟一组参数以及函数体,语法如下: function functionName([age0,age1,......argn]){ statements } ...
随机推荐
- random模块(十九)
1 ).random() 返回0<=n<1之间的随机实数n: 2 ).choice(seq) 从序列seq中返回随机的元素: 3 ).getrandbits(n) 以长整型形式返回n个随机 ...
- teleport使用说明
teleport使用说明 浏览器下载网页:只能浏览主页和少数网页,其它不能浏览,容量几百kb teleport下载项目一能完全离线看网页,7328多文件 9个JPG文件,大小134M te ...
- 虚拟化技术之KVM
虚拟化技术之KVM 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是虚拟化 其实虚拟化技术已经不是一个新技术了,上个世纪六十年代IBM公司已经在使用,只不过后来(上个世纪八 ...
- EasyUI的onLoadSuccess方法
EasyUI加载表单的时候,对表单内行数据进行判断,可以赋颜色,也可以进行其他操作 onLoadSuccess:function(data) { for(var i=0;i<data.rows. ...
- C++面试集锦( 面试被问到的问题 )
1. C 和 C++ 区别 2. const 有什么用途 主要有三点: 1:定义只读变量,即常量 2:修饰函数的参数和函数的返回值 3: 修饰函数的定义体,这里的函数为类的成员函数,被cons ...
- sudo 找不到命令 go
错误描述 环境 CentOS7.1 x64 golang 1.9.3 golang目录:/home/moonlightwatch/go/ 环境变量配置: # /etc/profile export G ...
- 同步、异步、阻塞、非阻塞与future
前言 随着移动互联网的蓬勃发展,手机App层出不穷,其业务也随之变得错综复杂.针对于开发人员来说,可能之前的一个业务只需要调取一次第三方接口以获取数据,而如今随着需求的增加,该业务需调取多个不同的第三 ...
- JAVA BufferedReader 类从标准输入读取数据
1,从标准输入上建立输入流: BufferedReader localReader = new BufferedReader( new InputStreamReader(System.in)); S ...
- vue项目中安装使用echarts
安装:cnpm install echarts -S (安装依赖并引入到 package.json) 官网安装说明:http://echarts.baidu.com/tutorial.html#%E5 ...
- Postfix 邮件服务 - postfix服务
postfix 邮件服务 也是基于sendmail (需要关闭或卸载sendmail)postfix 是一个电子邮件服务器,它为了改良sendmail邮件服务器而产生的,并且它的配置文件比sendma ...