函数就是数学意义上的函数
‘’’
函数创建
函数调用
形参
实参
关键字参数
收集参数
默认参数
收集参数之字典
变量作用域
递归
‘’’
如何创建一个函数
语法:
‘’’
def 变量名字():
语句块
‘’’
def 是关键字
#代码如下:
def a():
print("我是一个函数")
函数已经创建成功了那么如何调用呢?
语法:
‘’’
函数名字()
‘’’
代码如下
def a():
print("我是一个函数")
a()
形参
没有参数的函数是不够灵活的,举个例子比如打飞机游戏里面有各种各样的飞机需要打如果只是一个小飞机那么你需要用子弹就可以打,但是
#如果是个大飞机呢你需要换成大炮这就是参数的作用有了参数就可以使这款游戏变得灵活起来可以换子弹和大炮了
语法:
‘’’
def 变量名称(参数):
语句块
有形参和实参实参就是实际的东西用来替换形参
‘’’
代码示例:
def a(q):
print("我叫{0}".format(q))
a("哈哈")
q只是一个形参真正的参数是哈哈也就是实参
关键字
关键字参数其实就是加了个=号这样做的好处是在代码多的时候不容易混淆不容易出错
代码:
def a(c,q):
print("我叫{0}".format(c))
print("我今年{0}".format(q))
a(c="哈哈",q=17)
想象一下如果没有用等号把姓名和年龄写反了会出先什么情况出现bug这样加里等号就不会造成写反的情况了者就是关键字参数的好处
默认参数
默认参数就是在形参前面加个默认值九个例子:如果形参没有真正的实参替换那么就可以在形参前面加上一个默认值
代码示例:
def a(q="未填"):
print("我叫{0}".format(q))
a()
没有真正的实参进行替换形参则自动使用默认值这就叫做默认参数
收集参数
收集参数就是把一大堆东西收集到一个当中,等到用的时候在从收集参数里面取这就是收集参数
代码示例:
def a(*b):
print(b)
a(1,2,3,4)
用形参前面加一个星号就代表收集参数他返回的一定是一个元组类型
介绍一个函数type()
这个关键字是打印类型的我们可以打印出收集参数是一个神魔类型
代码示例:
def a(*q):
print(type(q))
for i in q:
print(i)
a(1,23,4)
通过type函数我们可以看到他是一个元组类型我用for循环把它给循环出来了
收集参数之字典
用两个星号表示以字典的类型收集参数
代码示例;
def a(**q):
print(type(q))
for i,q in q.items():
print(i,"--",q)
a(q=1,)
返回来的一定是字典类型即键对值
有时候收集参数还可以和其他参数混合使用
代码示例:
def a(*q,b):
print("我是收集参数一共有{0}个收集参数".format(len(q)))
print("我是形参实参替换的是{0}".format(b))
a(1,2,3,4,b=7)
以上收集参数都是收集就是闭包其实有时候收集参数还是可以解包的
代码示例:
def a(*n):
print(n)
n=[1,2,3,4,5,6]
a(*n)
这里的收集参数就是解包的意思
谈谈返回值
关键字 return
有时候需要给返回一个结果看看这个函数到底执行没执行总要有一个我结果这就是返回值注意如果没有设置返回值的话自动返回None
代码示例:
def a(b,c):
return b+c
a(1,2)
结果为3
return 还有一个作用就是无条件结束整个函数
代码示例:
def a():
return "我提前结束了"
print("我这句话就不执行了")
a()
有时候还可以连字符串一起返回
代码示例:
def a(a,b):
return "结果", a+b
a(1,2)
它可以返回多种数据类型的值
比如
def a():
return [1,"列表"]
a()
返回来的是一个列表
函数文档:
作用就是给函数标记含义用的让别人知道你这个函数到底是干什么用的
#一般在大型团队开发项目的时候需要合作这就需要代码互相查看但是有一些函数确实难以理解这个时候就需要说明这个函数是干什么用的函数文档就可以实现
语法:
‘’’
def a():
‘’’
#这里需要缩进四个字节 #我只是一个函数文档
#用来说明这个函数是干什莫用的
‘’’
语句块
‘’’
代码示例
def a(a):
'''
我只是一个函数文档没有什么用
记得调用我
'''
for i in range(1,11):
print("我叫{0}".format(a))
有两种方式调用
第一种help()
第二种.doc
help(a)
a.doc
变量作用域
分为全局变量和局部变量
全局变量就是在哪里都可以进行访问
局部变量只限于局部
代码示例:
a=1
def a():
print(a)
a()
因为a在外部没有在函数中所以a是一个全局变量在哪里都可以进行访问
局部变量示例:
def a():
a = 1
print(a)
a()
此时a 在函数中所以在函数中打印是可以的但是如果在外部打印呢就会报错因为a 只是一个局部变量只限于局部访问如果非要在外部访问需要提局部变量为全局变量
关键字global
这个关键字的作用就是提升局部变量为全局变量
代码示例:
def a():
a = 1
global a
print(a)
a()
在外部打印a
print(a)
有时候你想查看有多少个局部变量和多少个全局变量有两个关键字
globals()查看有多少个全局变量
locals()查看有多少个局部变量
代码示例:
b = 2
def a():
a = 1
print(globals())
print(locals())
print("全局变量是{0}".format(b))
print("局部变量是{0}".format(a))
a()
这将打印出所有的全局变量和局部变量我这将打印出所有的全局变量所以比较多
递归
递归的意思就是函数自身调用自身
有次数限制一般的调用1000会崩溃
#可以做一个实验来验证一下到底可以调用多少次
代码示例:
def dg():
a = 1
dg():
a+=1
dg()