一文讲透Python函数中的局部变量和全局变量

变量的作用域就是变量能够发挥作用的区域,超出既定区域后就无法发挥作用。根据变量的作用域可以将变量分为局部变量和全局变量。

1.局部变量

局部变量是在函数内部定义并使用的变量,也就是说只有在函数内部,在函数运行时才会有效,函数运行之前或运行结束之后这类变量都无法被使用。例如,输入以下代码并运行:

然后输入以下代码并运行(注意以下代码不要缩进):

本例中我们在area()函数内部定义了一个局部变量areameasure,可以发现函数内部的第一个“print(areameasure)”是可以正常运行的,因为它在函数内部(编写时缩进到函数里面了,算函数主体中的程序语句),而第二个“print(areameasure)”在运行时则会提示错误“name 'areameasure' is not defined”,因为该语句已经超出了函数的范围,局部变量areameasure超出了它自己的作用域。

2.全局变量

全局变量是可以作用于全局的变量,而不局限于函数内部。全局变量可以通过两种方法获得。

第一种方法

变量在函数体外创建或定义,不受函数内部的限制,可以在全局范围内发挥作用。在这种情况下,如果函数体内的局部变量名和全局变量名相同,那么对函数体内局部变量的修改不会影响到函数体外的全局变量。但我们在编写代码时,应尽量避免名称相同的情况,以免产生混乱。例如,输入以下代码并运行:

运行结果如图所示。

在本例中,poetry为全局变量,两次执行print(poetry)都成功了,第一次在函数体内,第二次在函数体外。

第二种方法

变量在函数体内创建或定义,且使用global关键字进行修饰,该变量就成为了全局变量,因而既可以在函数体外访问该变量,也可以在函数体内访问该变量,在程序任何一处修改该变量,都会让这种修改在全局范围内发挥作用。例如,输入以下代码,然后全部选中并整体运行:

运行结果如图3.7所示。

在本例中,通过global关键字的修饰将poetry升级为全局变量,两次执行print(poetry)都成功了,第一次在函数体内,第二次在函数体外。

上述内容节选自《Python数据科学应用从入门到精通》(张甜 杨维忠 著 2023年11月新书 清华大学出版社)。

3.学Python的一些体会

Python作为一门简单、易学、易读、易维护、用途广泛、速度快、免费、开源的主流编程语言,广泛应用于Web开发、大数据处理、人工智能、云计算、爬虫、游戏开发、自动化运维开发等各个领域,是众多高等院校的必修基础课程,也是堪与Office办公软件比肩的职场人士必备技能。

学过Python的朋友们都知道,入门学Python,也真的不难。关键是找到学习入口,如果只是看语法,会很枯燥,也记不住,这也是为什么很多朋友买了一些关于Python的书之后就束之高阁了。真正学深学透Python需要找到应用场景,也就是说要用Python来干什么?比如做个表、做个图,还是开展个数据分析、甚至建个模型。少儿编程很多都用Python了,为什么小孩们都能学的进去?因为学完了可以接着用于开发一个小游戏,回馈很快。从我周边朋友的经历来看,真正学进去的,基本上都是有数据分析需要的朋友们,因为工作中真的需要。所以我给大家推荐的学习场景入口是数据应用。

4.学习资料推荐


针对数据分析或机器学习推荐两本入门级的图书:《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)《Python数据科学应用从入门到精通》(张甜 杨维忠 著 2023年11月新书 清华大学出版社)。这两本书的特色是在数据分析、机器学习各种算法的介绍方面通俗易懂,较少涉及数学推导,对数学基础要求相对不高,在python代码方面讲的很细致,看了以后根据自身需要选取算法、优化代码、科学调参。都有配套免费提供的源代码、数据文件和视频讲解,也有PPT、思维导图、习题等。
为什么说这两本书值得?首先说《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社),内容非常详实,包含了Python和机器学习,相当于一次获得了两本书。在讲解各类机器学习算法时,逐一详解用到的各种Python代码,针对每行代码均有恰当注释(这一点基本上是大多数书目做不到的)。这本书在出版之前曾开发成9次系列课程,在某股份制银行全行范围类开展培训,490人跟随杨维忠老师上课学习(课程限报490人),培训完成后课程在知鸟平台上回放超过3万人次。很多银行员工通过这些学习一下子就学会了Python,并且用于工作中开展数据分析、机器学习、数据可视化等,这本书也被多家商业银行选做数字化人才培训教材,成为银行员工的一本网红书。

《Python数据科学应用从入门到精通》一书,旨在教会读者实现全流程的数据分析,并且相对《Python机器学习原理与算法实现》一书增加了很多概念性、科普性的内容,进一步降低了学习难度。国务院发展研究中心创新发展研究部第二研究室主任杨超 ,山东大学经济学院金融系党支部书记、副主任、副教授、硕士生导师张博,山东管理学院信息工程学院院长 袁锋 教授、硕士生导师,山东大学经济学院刘一鸣副研究员、硕士生导师,得厚投资合伙人张伟民等一众大牛联袂推荐。书中全是干活,买这一本书相当于一下子得到了5本书(Python基础、数据清洗、特征工程、数据可视化、数据挖掘与建模),而且入门超级简单,不需要编程基础,也不需要过多数学推导,非常适用于零基础学生。全书内容共分13章。其中第1章为数据科学应用概述,第2章讲解Python的入门基础知识,第3章讲解数据清洗。第4~6章介绍特征工程,包括特征选择、特征处理、特征提取。第7章介绍数据可视化。第8~13章介绍6种数据挖掘与建模方法,分别为线性回归、Logistic回归、决策树、随机森林、神经网络、RFM分析。从数据科学应用和Python的入门,再到数据清洗与特征工程,最终完成数据挖掘与建模或数据可视化,从而可以为读者提供“从拿到数据开始,一直到构建形成最终模型或可视化报告成果”的一站式、全流程指导。

两本书随书赠送的学习资料也很多,包括全部的源代码、PPT、思维导图,还有10小时以上的讲解视频,每一章后面还有练习题及参考答案,还有学习群,相对于只看网络上的视频,一方面更加系统、高效,另一方面照着书一步步操作学起来也事半功倍。全网热销中,当当、京东等平台搜索“Python机器学习 杨维忠”“Python数据科学 杨维忠”即可。

《Python机器学习原理与算法实现》(杨维忠、张甜著,2023年2月,清华大学出版社),适用于学习Python/机器学习

《Python数据科学应用从入门到精通》(张甜 杨维忠 著 2023年11月新书 清华大学出版社)适用于学习数据分析、数据科学、数据可视化等。

创作不易,恳请多多点赞,感谢您的支持!也期待大家多多关注我,让我共同学习数据分析知识。

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Python 全局变量是在函数外部定义的变量,可以在程序的任何位置进行访问和修改。在函数内部可以使用 `global` 关键字来声明一个变量为全局变量,这样就可以在函数内部修改这个全局变量的值。 例如,下面的代码定义了一个全局变量 `count`,并在函数 `increment()` 使用了 `global` 关键字来声明 `count` 为全局变量: ```python count = 0 def increment(): global count count += 1 print(count) increment() # 输出 1 increment() # 输出 2 ``` 注意,如果在函数内部没有使用 `global` 关键字来声明变量为全局变量,那么 Python 会将它视为局部变量,而不是全局变量。如果在函数内部对这个变量进行修改,那么只会影响到函数内部的这个局部变量,而不会影响到全局变量。 ### 回答2: Python全局变量是在程序的所有函数之外声明的变量,可以在整个程序的任何地方使用。 声明全局变量的方法是在函数外部直接使用变量名进行赋值,不需要使用任何关键字。 在函数内部,如果要访问全局变量,需要使用关键字`global`来标识该变量是全局变量,否则会被当作局部变量处理。 如果在函数内部对全局变量进行修改,在函数调用结束后,全局变量的值也会被修改。 全局变量的作用范围是整个程序,可以在不同的函数进行访问和修改。 全局变量的好处是可以在不同的函数共享数据,简化了函数之间传递参数的过程。 然而,滥用全局变量可能导致程序的可读性和可维护性降低,容易造成变量之间的混淆和不必要的依赖关系。 因此,在编程应该尽量避免过多地使用全局变量,可以使用函数的参数来传递数据,或者使用局部变量来处理函数内部的计算。 ### 回答3: 在Python全局变量是在函数外部定义的变量,其作用域在整个程序都是可见的。全局变量可以在程序的任何地方使用,包括函数内部。如果在函数内部对全局变量进行修改,需要使用`global`关键字来声明该变量是全局变量全局变量的好处是可以在整个程序共享数据,方便在不同函数之间传递信息。另外,全局变量可以在函数内部被修改,然后在其他地方使用该变量的新值。 然而,滥用全局变量也具有一些问题。首先,全局变量容易导致命名冲突,如果多个函数出现同名的全局变量,可能会引起代码的混乱。其次,全局变量破坏了封装性,使得函数之间的依赖性增加,降低了代码的可维护性和可测试性。 因此,在使用全局变量时需要明智地选择使用场景,并尽量减少全局变量的使用。可以考虑使用函数参数和返回值来传递信息,或者使用对象的属性来保存状态。此外,模块间的变量也可以通过导入模块的方式进行共享。 总结起来,全局变量Python是一种便捷的共享数据的方式,但需要注意命名冲突和代码混乱的问题,并尽量避免滥用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据科学作家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值