zoukankan      html  css  js  c++  java
  • Python 作用域, 局部与全局变量

    全局与局部变量

    • 在子程序(函数)中定义的变量称为局部变量, 在程序的一开始定义的变量称为全局变量
    • 全局变量作用于整个程序, 局部变量作用域是定义该变量的子程序
    • 当全局变量与局部变量重名时:
      • 在定义局部变量的子程序内, 局部变量起作用,在其它地方全局变量起作用
     1 # 字符串, 整数不能在函数里面直接改全局变量;  类,集合,列表,字典是可以在函数中直接改全局变量的(元组不可以,因为元组是不可以修改的).
     2 school = 'oldboy'
     3 term = 3
     4 ages = ('18','20','30')
     5 names=['lucy','ada','Rain']
     6 
     7 def change():
     8     school = 'edu'
     9     term = 4
    10     ages('18','80') #元组本来就是不可修改的
    11     names[0] = 'alex'
    12     print('inside func',names)
    13 
    14 change()
    15 print(school)
    16 print(term)
    17 print(ages)
    18 print(names)

    全局变量如果是字符串 / 整数, 若想在函数中修改, 需要在函数中变量前面加上global,然后再修改.

     1 # 不允许的做法
     2 def change_name():
     3     global name  # global把name变成了一个全局变量, 如果有这个全局变量就把那个全局变量拿过来,没有就添加(但最好不要这么做.全局变量还是要在文件前面定义,方便调试)
     4     name = 'alex'
     5     print(name)
     6 
     7 
     8 change_name()
     9 print(name)
    10 
    11 print('
    ')
    12 
    13 # 允许的做法
    14 name = 'alex'
    15 
    16 
    17 def change_name2():
    18     global name  # 在函数中修改全局变量
    19     name = 'lucy'
    20     print(name)
    21 
    22 
    23 change_name2()
    24 print(name)
  • 相关阅读:
    Javascript本质第二篇:执行上下文
    Javascript本质第一篇:核心概念
    跨线程委托执行
    .NET中STAThread和MTAThread
    用管道实现流的分支
    Async和Await异步编程的原理
    在.NET中使用管道将输出流转换为输入流
    致木兄的一封信
    完整打造一个多功能音乐播放器项目(初步设想跟酷狗类似)
    新冠疫情下各大网站的变化
  • 原文地址:https://www.cnblogs.com/cheese320/p/8892701.html
Copyright © 2011-2022 走看看