vincen 发表于 2018-8-7 09:23:13

python第四天学习总结

  1.名称空间
  a.全局名称空间(命名空间):运行程序时,变量与值的内存地址的对应关系,不包括函数。
  b.局部名称空间:如果是函数,会将函数名存在内存中,函数体不管。执行函数时会临时开辟一个空间,存放函数体里面的代码,函数外面访问不到临时空间的内容,函数执行完后,临时空间会释放掉。
  c.内置名称空间:存放python内置内容的空间,比如print()等
  d.全局作用域:全局名称空间内置名称空间
  局部作用域:局部名称空间
  2.加载顺序:内置名称空间---全局名称空间(程序执行时)---局部名称空间(函数调用时)
  取值顺序(单向不可逆):局部名称空间(函数调用时)---全局名称空间(程序执行时)---内置名称空间。取值只是引用,不能改变
  3.函数的嵌套:嵌套中的函数执行完后,才会执行下面的代码。函数中的函数是不同的临时空间

[*]global():返回一个字典,存放全局名称空间的内容。 print(globals())  locals():返回一个字典,当前位置所有的变量,如果函数中嵌套多个函数,只返回locals()所在的那一层       print(locals())
  5.gloabal:引用并改变一个全局变量;在局部作用域声明一个全局变量
  count = 1
  def func1():
  global count                  #引用全局的count变量,如果全局没有此变量,也可以在此处声明一个新count
  count = count + 1               #可以在函数体内改变count的值,如果没有global,此处只能引用count而不能改变
  count = count + 100
  print(count)
  func1()
  print(count)                        #全局的count也改变
  noloacal:不能操作全局变量;从哪层引用的该变量,从那层开始全部改变
  def func1():
  count = 1
  def inner():
  nonlocal count            #引用上一级的count
  count = count + 3         #改变原count的值
  print(count)                #在inner函数内改变后的值
  inner()
  print(count)                  #上一级的count也改变,此count是局部变量,全局不能访问
  func1()
  6.函数名的运用(可以把函数名理解为一个变量名):
  a.函数名可以打印          print(func1)   <function func1 at 0x000000000258F9D8>
  b.函数名可以作为容器类数据的元素   list =
  c.函数名可以作为函数的参数         func2(func1)   func1相当于一个变量名
  d.函数名可以作为函数的返回值       return func1   把func1返回给当前函数的执行者
  7.闭包函数
  定义:内层函数对外层函数非全局变量的引用
  作用:闭包函数不会随着父级函数的结束而释放
  def fun1():
  name = 'cc'
  def inner1():
  print(name)         #引用父级的name
  inner1()
  print(inner1.closure) #判断inner1是否是闭包,如果返回None则不是闭包函数,如果返回一段内存地址则是闭包函数
  fun1()
  8.装饰器
  本质:闭包函数
  作用:在不影响原函数执行的基础上,增加一些额外的功能
  通用语法:
  def timmer(f):
  def inner(*args,*kwgrgs):
  ''' 被装饰函数之前的操作'''
  ret = f(args,**kwgrgs)
  ''' 被装饰函数之后的操作'''
  return ret
  return inner
页: [1]
查看完整版本: python第四天学习总结