函数第三部分:学了不等于要用的全局变量-Python基础前传(12)
(一)局部变量
-
什么是局部变量
-
局部变量是只能在函数里面用,出去就不能用了,请看下面的例子:
-
def func1():
a = 123
print(a)
-
这里的变量a就是局部变量,这个局部变量只能在当前的函数体里来用,在其他的地方就用不了了;正因为它是局部变量,所以下面的代码一定是没有输出结果的:
def func1():
a = 123
print(a)
print(a)
(二)什么是全局变量
-
下面例子中的p就叫做全局变量,请大家体会一下:
p = "zhuyuanlu"
def func1():
a = 123
print(p)
print(a)
func1()
>>> zhuyuanlu
>>> 123
前面我们看到,全局变量是可以在函数体里调用的,那问题来了,我们能不能在函数体里修改全局变量吗?
p = "zhuyuanlu"
def func1():
a = 123
p = "jacky"
print(a)
def func2():
a = 456
print(p)
print(a)
func1()
func2()
>>> 123
>>> zhuyuanlu
>>> 456
-
上面的代码案例说明:我们是不能在局部变量里修改全局变量的,那我们如果一定要修改,就加上我们的关键字global
p = "zhuyuanlu"
def func1():
a = 123
global p
p = "jacky"
print(a)
def func2():
a = 456
print(p)
print(a)
func1()
func2()
>>> 123
>>> jacky
>>> 456
(三)关于全局变量的书写规范
-
全局变量都大写,局部变量都小写
-
这样的规范写法,以后看你代码的人就都能看懂
关于理解局部变量和全局变量的一些底层原理
-
在函数里边定义的参数以及变量,都称为局部变量,除了这个函数,这些变量都是无效的。事实上的原理是,Python在运行函数的时候,利用栈(Stack)进行存储,当执行完该函数后,函数中的所有数据都会被自动删除。所以在函数外边是无法访问到函数内部的局部变量的。
-
尽管我们使用global关键字可以在函数中去修改这个全局变量,但修改全局变量可能会导致程序可读性变差,出现莫名奇妙的BUG,代码的维护成本提高。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
函数第二部分:动态参数是自由主义的体现-Python基础前传(11)
编程语言就是大家一起定个规则大家一起玩。规则是人定的,但也是定给人的。我们之前学习函数的参数,都遵循着一个原则就是:形式参数有几个,实际参数就只能传几个;我们从开发 python 这门编程语言的角度思考,我们要是真的就是规定形式参数有几个,实际参数就有几个的原则,是不是不能满足实际工作需要,在实际工作中谁又能保证每一次都预先设定好参数的个数呢?这个时候,作为编程语言的设计人员,就会引进动态参数,我们想想如果不引入动态参数,谁还能使用这个编程语言呢。 (一)动态参数1-一个星号变元组 动态参数存在的意义? 函数的作者有时候也不知道这个函数到底需要多少个参数,这时候动态参数就有存在的意义了 动态参数创建-加 * 底层原理是:把数值型或其他数据类型变成了元组类型,是元组了就可以多加实际参数了(一个星号变元组,传的参数就是元组的元素) #不用动态参数def f1(a):print(a,type(a)) f1(123)>>> 123 <class'int'>#使用动态参数def f1(*a):print(a,type(a)) f1(123,456,789)>&...
- 下一篇
【专题】常用JavaScript正则表达式(regexp)汇编与示例
1 概述 1.1 前言 目前收集整理了21个常用的javaScript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(Email)、手机号码、身份证号、URL地址、 IP地址、 十六进制颜色、 日期、 微信号、车牌号、中文正则等。表单验证处理必备,赶紧收藏吧! 还会陆续加入新的正则进来,大家多提宝贵意见! 2 正则列表 2.1 用户名正则 2.1.1 基本用户名正则 在做用户注册时,都会用到用户名正则校验。 定义基本用户名命名规则如下: 最短4位,最长16位 {4,16} 可以包含小写大母 [a-z] 和大写字母 [A-Z] 可以包含数字 [0-9] 可以包含下划线 [ _ ] 和减号 [ - ] 首字母只能是大小写字母 var pattern = /^[a-zA-Z][a-zA-Z0-9_-]{3,15}$/; //输出 true console.log("ifat3 : "+pattern.test('ifat3')); //输出 true console.log("Ifat3 : "+pattern.test('Ifat3')); //输出 true consol...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范