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)
  • 相关阅读:
    myslq的更新丢失实例
    特价版线程池ThreadPoolExecutor实现
    通过SCP实现Linux服务器和本地Win10机器的文件上传下载
    数据库连接池的一种实现方案
    JDBC的驱动注册浅析
    Mysql数据库的JDBC查询实例
    RabbitMQ的安装
    Rabbitmq—基础
    Datatable某一列转List
    js Jquery 数据移除元素/删除元素
  • 原文地址:https://www.cnblogs.com/cheese320/p/8892701.html
Copyright © 2011-2022 走看看