2019/09/27 01-函数定义传参和默认值

函数是高级语言最基本的编程单元
在这里插入图片描述
x是自变量,给定x会得到y,比如sorted,你给它可迭代对象,得到返回值,这个返回值就是y,sorted会立即返回给你一个新的列表
扔x=可迭代对象,经过sorted函数f,得到返回值y
这些高级语言都源自数学语言
完成一定的功能,比如sorted,排序,返回一个新的列表
在这里插入图片描述在这里插入图片描述
结构化编程带来一些东西,分支,循环,可以约定在一块代码有几个入口,几个出口
函数的目的就是为了带来结构化的封装,帮助把你的代码复用,可减少代码冗余
易读,按功能封装,只看函数名就知道是什么意思
封装,复用,

在这里插入图片描述
还有就是自定义的函数了
如何定义自定义函数在这里插入图片描述
函数名是能找到这个函数对象的名称
语句块必须缩进
python函数没有return语句,隐式会返回一个none,比如print函数(没有返回值,但是本身是有none)
定义的参数列表称为形式参数,只是一种符号表达,简称形参
在这里插入图片描述
如何调用函数,
函数要使用,就需要调用,加小括号,所谓的函数就是你定义的东西,调用的时候写入的参数就是实际参数,实参

在这里插入图片描述
写一个简单例子
def(就是define定义的意思),函数名就是add,或者函数名就告诉是做加法的
add是标识符
选中的是函数定义部分,函数构建好后也会在内存中构建一个内存中 的对象

在这里插入图片描述
其实就是add =后面的函数定义
return是返回值

在这里插入图片描述
**4,5是送入的实实在在的参数
x,y是假的,只是未来表示形式参数
实参和形参对应起来,4给x,5给y
**
在这里插入图片描述
赋值计算是先计算右边,得出9,9赋值给a,靠return语句返回
定义函数是不会执行的,但是内存中依然建立了add标识符对应的函数对象之间的关系,定义只是定义好了等待使用

在这里插入图片描述
打印出来的值,没人接,10,就消亡了
在这里插入图片描述
print本身也是函数帮你打印出来
在这里插入图片描述
print只是帮你打印出来,print本身是没有return的
在这里插入图片描述在这里插入图片描述在这里插入图片描述
返回值只要是和法治都可以用变量来接收,函数名也是标识符,返回值也是值,没有返回值,none,none也是返回值,所谓的值就是python中的合法数据
定义函数需要在调用函数前,不然名字找不到,nameerror,因为python写的也是脚本从上往下
python要求定义必须在前,先定义,内存就有标识符,然后才能使用这个标识符

在这里插入图片描述在这里插入图片描述
callable是一个内建函数
在这里插入图片描述
一个int对象是不可调用的
在这里插入图片描述
不能加括号,加括号表示调用了,就会提示你少两个参数在这里插入图片描述
add(4,5)进去就会有返回值,相当于函数调用,这个函数先执行,返回了9,问9是否可以调用,当然不可以调用

在这里插入图片描述
这个是没有调用函数,只是问这个函数的标识符有没有调用这个过程在这里插入图片描述在这里插入图片描述
python是强类型的语言,动态的类型
就是并没有在形参里告诉是什么类型,等于在送实参的时候决定了当前什么类型,所以根本控制不住使用者传什么参数进来
因为python是动态语言,但是解决了这点,可能就是静态编译型语言了(java,c++),因为定义好什么类型就是什么类型了

在这里插入图片描述
如果在写python不约束的话会带来很多问题,自由并不是最好的,可能项目失控,然后推倒重写
在这里插入图片描述
传入的参数,应该和定义的参数相匹配,传入的实参和定义的形参要匹配,到目前为止是这样,
xyz(位置参数),135会把135 一一对位,用实参替换形参,这个动作叫传参,按照参数定义的位置一一传入实参的

在这里插入图片描述
关键字,keyword,x=1,y=3,z=5关键字传输方式,这个叫关键字传参,但是形参的定义未变,传参的方式是一样的,
如果使用形参的名字来传入实参的方式,就传参顺序就可和定义顺序不同,因为是靠名字找的

在这里插入图片描述
只要是一个合法的值都可以传,而且python是动态类型的语言,没法限制你传入的数据类型
在这里插入图片描述
加#号代表错了,特别注意,要求位置参数必须在关键字参数之前传入,位置参数是按照顺序对应的,把关键字放到前面去就错了
在这里插入图片描述在这里插入图片描述
现在这个add指向一个新的函数定义
在这里插入图片描述
告诉你语法错了,位置参数在关键字参数之后,应该把位置参数放前面去
在这里插入图片描述
定义时加入,定义形式参数时给的默认值,就是缺省值,default
大量函数其实有些都是用的缺省值

在这里插入图片描述
但是有缺省值,也不能把位置参数放后面,位置参数必须放在关键字参数之前
在这里插入图片描述
x没有就可以用缺省值
在这里插入图片描述在这里插入图片描述在这里插入图片描述
不允许非缺省参数跟着缺省参数
定义的时候,把缺省的参数放在非定义的参数之前是不被允许的,必须要讲明实参,形参

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
可以这么调用,因为这个四个都有缺省值
在这里插入图片描述
位置对应传参

在这里插入图片描述
关键字传参往后面,对的,其他找不到用缺省值配齐
在这里插入图片描述
在这里插入图片描述
全都是关键字传参,
在这里插入图片描述
host没有赋值就不能代表定义一个变量
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值