zoukankan      html  css  js  c++  java
  • 27-高级特性之作用域(1)

    1.原理

    1.全局变量是指函数外定义的,局部是指函数体内定义的;函数内部global 定义的也是全局。

    2.全局变量:

    • 读操作:函数局部区或者全局区,均可以直接引用。(除非被局部变量屏蔽,想不被屏蔽,用global声明)
    • 写操作:想要在函数局部区引用全局变量

    1)若全局变量是dict和list (注意tuple本身不可修改),可以直接做append,pop的操作,但是赋值操作必须加global关键字。
    2)若全局变量是其他类型,只有赋值操作。在函数内部被赋值需要global 声明

    3.局部变量只能在函数内部读和写(一旦在外部使用局部变量就变成创建同名的全局变量,有质的变化)

    4.优先级:局部变量>全局变量 { 函数内部若存在同名的局部变量,会屏蔽前面定义的全局变量}

    2.代码

    • 测试1

      name = 'Tim' #全局变量
      def f1():
      age = 18 #局部变量
      print(age,name)

      def f2():
      age=19 #局部变量
      print(age,name)

      f1() #Tim
      f2() #Tim

    • 测试2

      name = 'Tim' #全局变量

      def f1():
      age = 18 #局部变量
      global name #定义全局变量
      name = 'Eric'
      print(age,name)
      f1()
      print(name) #Eric

    • 测试3

      NAME = ['Tim','mike'] #全局变量
      NAME1 = ['Eric','Jeson'] #全局变量
      NAME3 = ['Tom','jane'] #全局变量
      def f1():
      NAME.append('Eric') #列表的append方法可改变外部全局变量的值
      print('函数内NAME: %s'%NAME)
      NAME1 = '123' #重新赋值不可改变外部全局变量的值
      print('函数内NAME1: %s'%NAME1)
      global NAME3 #如果需要重新给列表赋值,需要使用global定义全局变量
      NAME3 = '123'
      print('函数内NAME3: %s'%NAME3)
      f1()
      print('函数外NAME: %s'%NAME)
      print('函数外NAME1: %s'%NAME1)
      print('函数外NAME3: %s'%NAME3)
      '''
      函数内NAME: ['Tim', 'mike', 'Eric']
      函数内NAME1: 123
      函数内NAME3: 123
      函数外NAME: ['Tim', 'mike', 'Eric']
      函数外NAME1: ['Eric', 'Jeson']
      函数外NAME3: 123
      '''

    3. 参考文献:

    https://www.cnblogs.com/guqing/p/6110922.html

  • 相关阅读:
    BZOJ 2034 【2009国家集训队】 最大收益
    vijos P1780 【NOIP2012】 开车旅行
    BZOJ 2115 【WC2011】 Xor
    BZOJ 3631 【JLOI2014】 松鼠的新家
    BZOJ 4717 改装
    BZOJ 2957 楼房重建
    BZOJ 4034 【HAOI2015】 T2
    BZOJ 1834 【ZJOI2010】 network 网络扩容
    BZOJ 2440 【中山市选2011】 完全平方数
    BZOJ 2733 【HNOI2012】 永无乡
  • 原文地址:https://www.cnblogs.com/LS1314/p/8504509.html
Copyright © 2011-2022 走看看