Python 语法知识 --函数,闭包

来源:互联网 发布:java demo是什么 编辑:程序博客网 时间:2024/06/16 00:40

让python的程序更加简单和有逻辑性,用到三个东西:

函数,对象,模块


函数:

形参:函数定义过程中的参数

        实参:传递给函数的参数,因为传进去的是具体的参数值

关键字参数:能够让python不按照顺序索引输入的参数

def SaySom(name,words):

print(name+words)

SaySome(words = 'a',name = 'b')

默认参数:函数定义时给参数定义了默认值

收集参数:把输入的参数全部打包成一个元组

def test(*params):

print("the length is:", len(params))

test(1,2,'what',3.14)

python严格来说只有函数,没有过程

不要试图在函数里面修改全局变量。 函数内部试图修改全局变量时,python有shadowing的机制,会在函数内部创建一个同名的变量将全局变量屏蔽,导致不是最终自己想要的结果

count = 5

def MyFun():

count  = 10

print(count)

 必须要改的情况下,用global关键字修饰

def MyFun():

global count

count = 10

print(count)


内嵌函数:

在函数内部定义函数,内部定义函数后,要记得在内部调用一下这个函数,因为函数外面无法对这个内嵌的函数进行调用


闭包:

是函数式编程中很重要的一种结构。

编程范式:对代码进行抽象和概括,使得程序的可用性变高

著名的函数式编程语言是lisp。

python定义闭包为:如果在内部函数中对外部作用域(全局作用域)的变量进行引用,那么内部函数就被认为是闭包,也叫钩子

def FunX(x):

def FunY(y):

return x*y

return FunY

i = FunX(8)

type(i)

i(5)   #40

FunX(8)(5)  #40


内部函数试图对外部函数定义的 变量进行修改时,需要用nonlocal 对变量进行修饰:

def Fun1():

x = 5

def Fun2():

nonlocal x

  x *= x

return x

return Fun2()