广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 使用全局变量
  • 527
分享到

Python 使用全局变量

全局变量Python 2023-01-31 08:01:54 527人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天在写以下python代码时出现了问题。该段代码根据一些URL下载视频: #coding=utf-8 def save_case_infos(case_urls): for case_url in case_urls:

今天在写以下python代码时出现了问题。该段代码根据一些URL下载视频:

#coding=utf-8

def save_case_infos(case_urls):
    for case_url in case_urls:

        # some download code ...

        # 打印已下载的视频个数
        # 希望访问全局变量 case_total_num 
        case_total_num += 1
        print("current count: " + str(case_total_num))


# 全局变量,表示已下载的视频个数
case_total_num = 0

# 下载视频文件
urls = [r'Http://cynhard.com/live/001',
        r'http://cynhard.com/live/002',
        r'http://cynhard.com/live/003']
save_case_infos(urls)

但是在运行时报以下错误:

Traceback (most recent call last):
  File "G:\projects\Python\globaltest.py", line 21, in <module>
    save_case_infos(urls)
  File "G:\projects\python\globaltest.py", line 10, in save_case_infos
    case_total_num += 1
UnboundLocalError: local variable 'case_total_num' referenced before assignment

意思是说case_total_num为局部变量,在使用它之前没有被赋值。Python并没有按照我的意图将case_total_num当成全部变量。看来在函数内无法直接使用全局变量。

有什么办法能在函数内使用全局变量呢?根据官方文档,可以用global语句:

The global statement is a declaration which holds for the entire current code block. It means that the listed identifiers are to be interpreted as globals. It would be impossible to assign to a global variable without global.

意思是说global语句可以声明一个或多个变量为全局变量。该声明仅在当前代码块中有效。除此之外,没办法访问全局变量。

于是,在上面的代码中加入global声明语句就可以达到目的了:

#coding=utf-8

def save_case_infos(case_urls):
    global case_total_num  # global声明
    for case_url in case_urls:

        # some download code ...

        # 打印已下载的视频个数
        # 希望访问全局变量 case_total_num 
        case_total_num += 1
        print("current count: " + str(case_total_num))


# 全局变量,表示已下载的视频个数
case_total_num = 0

# 下载视频文件
urls = [r'http://cynhard.com/live/001',
        r'http://cynhard.com/live/002',
        r'http://cynhard.com/live/003']
save_case_infos(urls)

用global声明多个变量需要用逗号分隔:

#coding=utf-8

def save_case_infos(case_urls):
    global succeeded_total_num, failed_total_num  # 多个变量用逗号分隔
    for case_url in case_urls:

        ok = False

        # some download code ...

        if ok:
            succeeded_total_num += 1
        else:
            failed_total_num += 1
        print("succeeded: " + str(succeeded_total_num) + 
            " failed: " + str(failed_total_num))


# 全局变量,下载成功和失败的视频个数
succeeded_total_num = 0
failed_total_num = 0

# 下载视频文件
urls = [r'http://cynhard.com/live/001',
        r'http://cynhard.com/live/002',
        r'http://cynhard.com/live/003']
save_case_infos(urls)

在使用全局变量的场合,也可用类变量代替:

#coding=utf-8

def save_case_infos(case_urls):
    for case_url in case_urls:

        ok = False

        # some download code ...

        if ok:
            G.succeeded_total_num += 1
        else:
            G.failed_total_num += 1
        print("succeeded: " + str(G.succeeded_total_num) + 
            " failed: " + str(G.failed_total_num))


# 将全局使用的变量定义在类中        
class G:
    succeeded_total_num = 0
    failed_total_num = 0

# 下载视频文件
urls = [r'http://cynhard.com/live/001',
        r'http://cynhard.com/live/002',
        r'http://cynhard.com/live/003']
save_case_infos(urls)

这样便去掉了global声明,但是每一次用到类变量的时候都需要冠以类名。

--结束END--

本文标题: Python 使用全局变量

本文链接: https://www.lsjlt.com/news/192494.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 使用全局变量
    今天在写以下Python代码时出现了问题。该段代码根据一些URL下载视频: #coding=utf-8 def save_case_infos(case_urls): for case_url in case_urls:...
    99+
    2023-01-31
    全局变量 Python
  • python全局变量的使用
    问题提出,怎么记录汉诺塔问题中盘子移动的次数? def hanu(n,a,b,c):          if n==1 :                print("move",a,"->",c)                ...
    99+
    2023-01-31
    全局变量 python
  • Python变量教程之全局变量和局部变量
    目录前言全局变量全局关键字前言 全局变量是那些没有在任何函数内部定义并具有全局范围的变量,而局部变量是那些在函数内部定义的变量,其范围仅限于该函数。换句话说,我们可以说局部变量只能在...
    99+
    2022-11-11
    Python变量教程 Python全局变量 Python局部变量
  • python全局变量-局部变量用法和区别
    对于很多初学的同学,对全局和局部变量容易混淆,看看下面给大家的讲解相信都应该明白 两者的区别了。 定义:全局变量:在模块内、在所有函数的外面、在class外面局部变量:在函数内、在class的方法内 下面来看看例子函数内部调用全局变量 a=...
    99+
    2023-01-31
    变量 局部 区别
  • python基础之局部变量和全局变量
    四种基本的函数类型 局部变量 就是在函数内部定义的变量【作用域仅局限于函数内部】 不同的函数 可以定义相同的局部变量,但是各自用各自的 不会产生影响 局部变量的作用:为了临时...
    99+
    2022-11-12
    python基础 python局部变量 python全局变量
  • Python之全局与局部变量
    ''' 命名空间 : 每次在python解释器启动之后,就会在内存开辟一块内存空间,每当遇到一个变量时,就会在命名空间中,记录下变量名和值之间的关系,也即记录变量对应的值在内存空间中的            地址;当一个函数时,会在命名空间...
    99+
    2023-01-31
    全局 变量 局部
  • Python 全局变量扫盲
    Python没有真正的全局变量,在Java和C++中,全局变量则是程序级别的,站在它们的角度,那么python就是没有全局变量,而在python的角度,是有全局变量,python提供global关键字,可以修改全局变量,在python中的全...
    99+
    2023-01-31
    全局变量 Python
  • 从局部变量和全局变量开始全面解析Python中变量的作用域
    理解全局变量和局部变量 1.定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是被定义为局部变量。在这种情况下,不论全局变量中是否用到该变量名,函数中使用的都是局部变量。例如: ...
    99+
    2022-06-04
    变量 局部 全局变量
  • mysql全局变量和局部变量
    全局变量和局部变量 在服务器启动时,会将每个全局变量初始化为其默认值(可以通过命令行或选项文件中指定的选项更改这些默认值)。然后服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前值初始化。 举一个例子...
    99+
    2016-04-03
    mysql全局变量和局部变量
  • python全局变量和局部变量有什么区别
    Python中的全局变量和局部变量的区别如下:1. 作用域:全局变量在整个程序中都是可见的,可以在任何地方访问。而局部变量只在定义它...
    99+
    2023-08-12
    python
  • Shell全局变量、局部变量与特殊变量的具体使用
    目录1、全局变量(环境变量):2、局部变量(本地变量):3、关于局部变量的其它一些问题4、Shell的特殊变量:变量类型:全局变量(环境变量)和局部变量(本地变量)环境变量可以在定义它们的shell及其派生出来的任意子进...
    99+
    2023-05-06
    Shell全局变量 Shell局部变量 Shell特殊变量
  • Python 专题六 局部变量、全局变量global、导入模块变量
    定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域。本文主要讲述全局变量、局部变量和导入模块变量的方法。 参考:《Python核心编程 (第二版)》 一. 局部变量 声明适用的程序的范围...
    99+
    2022-06-04
    变量 局部 模块
  • python中全局变量和局部变量有什么区别
    python中全局变量和局部变量有什么区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
    99+
    2023-06-14
  • Apipost全局变量和环境变量的使用
    什么是全局变量? 全局变量跟环境变量作用域不同。全局变量不受当前环境的影响,只要是在同一个项目下,该变量都会生效。 环境变量和全局变量的调用方法都是一样的 {{变量名}} 全局变量的定义 目前通过脚本定义全局变量。 例如我们在预执行脚本中定...
    99+
    2023-09-22
    服务器 后端 测试工具
  • Python教程之全局变量用法
    本文实例讲述了Python全局变量用法。分享给大家供大家参考,具体如下: 全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量。今天有同事问一个关于全局变量的问题,才发现其中原来还有门道。 程序...
    99+
    2022-06-04
    全局变量 教程 Python
  • python 全局变量引用与修改
    一、引用使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如:输出结果:可以看出,无论是列表还是变量,都是可以直接引用的。二、修改使用到的全局变量,需要在函数中修改的话,就涉及到歧义问题,如:输出结果:可以...
    99+
    2023-01-31
    全局变量 python
  • python跨文件使用全局变量的实现
    目录1. 错误示范2. 正确示范跨文件使用全局变量 有多个py文件同时使用一个全局变量时,那应该如何使跨文件,用这个全局变量呢? 1. 错误示范 file1.py代码如下: num ...
    99+
    2023-03-01
    python跨文件全局变量 python 全局变量
  • Python跨文件全局变量的使用技巧
    尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖。 Python 中global关键字可以定义一个变量...
    99+
    2022-11-12
    Python跨文件全局变量 Python全局变量
  • Python全局变量关键字global怎么使用
    这篇“Python全局变量关键字global怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python全局变量关键字...
    99+
    2023-07-02
  • EasyC++全局变量
    文章转自公众号:Coder梁(ID:Coder_LT) 全局变量: 前面聊到了静态持续变量的链接性,其中链接性为外部的变量通常简称为外部变量。它们的存储持续性为静态,作用域为整个程...
    99+
    2022-11-12
    EasyC++全局变量 C++全局变量
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作