python函数-第四天

苍井空名言:我脱光衣服躺在镜头前,是为了生存,而你衣冠楚楚的站在镜头前,却只是为了私欲和欺骗

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)
一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。

闭包的理解
我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,
且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包

原文地址:https://www.cnblogs.com/LEPENGYANG/p/14111794.html