函数分为两种
1.内建函数
比如:type(),max(),range()
在编程时是可以直接调用的函数
2.自定义函数(或第三方函数)
自定义函数是可以用“def”定义一个自己想要的函数
首先我们了解一下函数的基本结构
在上面的这个函数中,fun 的是函数名
在 () 没有输入参数,
然后直接在第二行中输入 print("姓名") 就是 fun 函数的方法
当我们调用这个函数时,就可以引用函数中的方法
非常简单,好理解!!
现在说一下加入型参的函数,fun(): 中的 () 输入参数
我们可以看到直接引用下面的函数是没有打印出结果
但是运行的结果并没有报错
说明函数并没有直接打印函数结果的能力,第一个函数可以打印结果,是因为函数的方法有打印的代码。
那我们在试一下打印上面的函数结果是什么呢?
运行函数的结果是为None,大家知道None是一种特殊的字符类型
为什么不是直接打印出函数的结果呢?因为没有加return这个返回结果
但为什么第一个不带参数的函数可以运行函数中的方法呢?
大家看一下面的函数
其实,大家可以看到print(fun()),打印出的结果是一样为None
中间的123的结果,实际上就是print(123)打印出的结果
因为在函数在缺少return时,函数是缺少了返回值,所以这个时候调用函数是的结果值是None
而当函数的方法被调用时,是会被直接执行的,所以运行的结果会有123
要组成一个完整的函数,需要加上返回值return
在函数方法中,被赋值的参数是不会影响函数以外定义的参数
如下图中所示
运行出的结果是正确的,函数外的a = 5和函数内 a = 2,是没有相互影响的
3.return的运用
return是返回函数的参数的,大家思考一下,当一个函数有多个结果时,return是否也可以返回多个结果呢?
比如:一元二次方程,一元二次方式最多是有两个解的这种情况
这个时候就需要输出两个解
下面这个函数方法中定义的值,在返回时就返回这两个值
return返回多个值时,是不需要加括号的
如果return返回一个函数中没有定义的对象呢?
return是会直接报错的
但如果在函数之前定义一个参数是否可以通过函数的return返回呢?大家思考一下
这个函数没有报错的,说明是可以被运行的
运行的结果如下
大家可能已经知道,函数中没有定义的对象,return返回却可以返回出未被定义的参数,这是什么原因呢?
我们都知道python代码的运行是从上而下的
我们简单修改上面代码的顺序,将c = 0 放到后面,会发现
代码没有报错,但是呢运行的结果是“name 'c' is not defined”
有此可以得出
1.函数的返回值是可以返回函数以外的参数
2.函数中出现同样的对象,优先输出函数内的参数,但不会同时输入两个一样的对象值
大家在连续思考一下,型参是否可以定义多个呢?
可以练习一下
4.函数的嵌套
原本的函数中再定义一个函数
是否可以
我们先来做一个有趣的探究,在return中返回原本函数的结果,思考一下是否会出现循环的效果
大家看到这个函数,会发现这个函数好像可以一直计算下去,y值会越来越大
这就是一个“死循环”,只要你不手动去结束,函数就会一直计算y的值
大家在看下面的函数,如果我们在函数本身的方法中去调用它本身会不会有报错呢?大家可以先思考一下
实时上,该函数的执行结果,是没有被运行出来的,但是我们会发现,他是在一直在运行,但一直无法得到结果,这也就是一个死循环。
很多人会问了,如果在型参中再调用函数呢?可以不可以被调用
答案:是不可以的,代码就会直接报错了
函数名、参数、方法