苍井空名言:我脱光衣服躺在镜头前,是为了生存,而你衣冠楚楚的站在镜头前,却只是为了私欲和欺骗
1.函数
函数的声明:
def 方法名(参数1,参数2):
'函数文档'
#注释
print()
return [expression]
调用函数:
方法名()
打印函数文档:
1.参数名.__doc__
注:两个下划线
2.help(参数名)
2.参数
参数分为形参(parameter)和实参(argument)
3.关键字参数
>>> def saySome(name,words):
print(name + '->' + words)
>>> saySome(words='让编程改变世界',name='小甲鱼')
小甲鱼->让编程改变世界
4.默认参数
>>> def saySome(name = '小甲鱼',words = '让编程改变世界'):
print(name + '->' + words)
>>> saySome('苍井空','我脱光衣服躺在镜头前,是为了生存,而你衣冠楚楚的站在镜头前,却只是为了私欲和欺骗')
苍井空->我脱光衣服躺在镜头前,是为了生存,而你衣冠楚楚的站在镜头前,却只是为了私欲和欺骗
5.收集参数
>>> def test(*params,exp):
print('参数的长度:',len(params),exp)
print('第二个参数是:',params[1])
>>> test(1,'小甲鱼',3.14,5,6,7,8,exp = 8)
参数的长度: 7 8
第二个参数是: 小甲鱼
>>> def test(*params,exp = 8):
print('参数长度:',len(params),exp)
print('第二个参数:',params[1])
>>> test(1,'小甲鱼',3.14,5,6,7,8)
参数长度: 7 8
第二个参数: 小甲鱼
6.函数(function):有返回值
过程(procedure):是简单、特殊并且没有返回值的
python可以返回多个值
>>> def back():
return 1,'小甲鱼',3.14
>>> back()
(1, '小甲鱼', 3.14)
7.局部变量(Local Variable)
全局变量(Global Variable)
自己的话:在函数里边定义的参数以及变量,它们都成为局部变量,出了这个函数就是无效的
原理:python在调用函数时候,它是利用栈进行存储,把函数所需的代码、变量都扔到栈里,
当执行完该函数时,函数会被自动删除,栈的数据会自动清空,所以函数外无法访问到局部变量
8.global 和 nonlocal关键字
当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。
exa:
num = 1
def fun1():
global num # 需要使用 global 关键字声明
print(num)
num = 123
print(num)
fun1()
print(num)
以上实例输出结果:
1
123
123
如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:
def outer():
num = 10
def inner():
nonlocal num # nonlocal关键字声明
num = 100
print(num)
inner()
print(num)
outer()
以上实例输出结果:
100
100
9.闭包(Closure)
一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。
闭包的理解
我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,
且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包