python的作用域分别有几种_python中作用域与函数嵌套

知识回顾:

拆解传参。

1.字典传参。使用**

2.列表传参。使用*

实际上我们在定义函数的时候,如果省略了星号,那么在调用函数的时候必须要省略星号,除非我们拆解后的参数个数刚好相等。

视频内容

本节知识视频教程

文字讲解开始:

一、作用域

作用域:可以被影响的范围。

全局变量:在最外层声明的变量。

局部变量:在某些代码块声明的变量。

全局变量举例

xxx=100 #最外层的变量,全局变量

def P():

print(xxx)

P()

说明:外面一层的变量,能够被代码块内部一层的变量调用。

局部变量的注意事项

1.在函数体内部声明的变量,不能再函数体外部去调用,会直接报错。

2.在函数体内部同名的局部变量,即使重新赋值了,也不会影响函数体外部的那个同名全局变量。如果真的想要改变外部同名的全局变量,那么我们必须要在函数体内部使用global关键字声明变量。

3.在函数体内部,如果先调用外部的全局变量后,是不能再次修改的,因为在函数体内部写了同名的变量后,会使得编译器无法识别局部变量还是全局变量,使得程序异常。

二、函数的嵌套

在python中是运行函数嵌套定义使用的。注意:函数体内部定义的函数也必须要手工调用才能使得有函数中的效果,否则默认是不被调用执行的。

举例:

#函数的嵌套

eee=10

def P3():

eee=20

print("P3中eee=",eee)

def P4():

fff=5

print("P4中的结果=",fff+eee)

P4()

P3()

函数嵌套的作用范围

在函数体内部定义的函数需要在函数体内部调用,默认不能在全局的作用范围的最顶层调用这个函数的。

函数的复杂嵌套调用

#函数的嵌套

eee=10

def P3():

eee=20

print("P3中eee=",eee)

def P4():

fff=5

print("P4中的结果=",fff)

return P4

P3()()

注意:如果使用双括号,在调用内存函数的时候,外层函数将会被自动调用。

函数的指针赋值调用

#函数的嵌套

eee=10

def P3():

eee=20

print("P3中eee=",eee)

def P4():

fff=5

print("P4中的结果=",fff)

return P4 #这里返回的是指针类型的变量

K1=P3()

K1()

结论:在调用内存函数的时候,外层函数也将会被自动调用。

三、解决问题的思路

1.带有红色下划线的报错,它是一种语法报错

2.异常报错,先调试,实在不行,可以将报错去直接搜索引擎直接搜索报错

3.搜索问题的知识点。

四、总结强调

1.作用域。全局变量区别于局部变量。

2.函数的嵌套。注意点,在内部定义的函数被调用时候会自动调用其父级函数。函数也有作用范围。

3.解决问题的思路。

4.一定要主动多测试代码。

本节源代码(已被#注释):# xxx=100 #最外层的变量,全局变量

#

# def P():

# ddd=300 #在函数体内部,是局部变量

# # global xxx

# xxx=200 #这个是与全部变量同名的局部变量

# # print(xxx)

#

# P()

# print(xxx)

# yyy=200

#

# def P2():

# print(yyy)

# # yyy=100

#函数的嵌套

# eee=10

# def P3():

# eee=20

# print("P3中eee=",eee)

# def P4():

# fff=5

# print("P4中的结果=",fff+eee)

# return P4 #这里返回的是指针类型的变量

#

# K1=P3

# K1()()

#

# ttt=10

# while(True):

# ttt=20

# break

# print(ttt)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这个博客的由来

笔者从事电信行业大型商业智能系统工作多年,日前从事B2C电商网站类数据分析工作,特开设此微博,在发表好文同时,研究网站分析技术。转载于:https://www.cnblogs.com/sambazhu/p/3508633.html

《Axure RP8 网站和APP原型制作 从入门到精通》一2.7 交付

本节书摘来自异步社区《Axure RP8 网站和APP原型制作 从入门到精通》一书中的第2章,第2.7节,作者 金乌,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.7 交付 模型一旦经过批准,我们就可以进入切图和优化图像环节了。我…

iOS UISegmentedControl 的使用

当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl)。分段控件提供一栏按钮(有时称为按钮栏),但只能激活其中一个按钮。分段控件会导致用户在屏幕上看到的内容发生变化。它们常用于在不同类别…

js粘贴板为什么获取不到图片信息_【第1829期】复制黏贴上传图片和跨浏览器自动化测试...

前言这个操作体验倒是不错。今日早读文章由丁香园蒋璇投稿分享。蒋璇, 前端开发攻城狮, 现任职于丁香园. 英语爱好者, 测试驱动开发(TDD)&行为驱动开发(BDD)推崇者. 先专注于 https://github.com/Jiang-Xuan/tuchuang.space 项目的测试驱动开发探索正文从这开始~~在网页中上…

在C++中调用DLL中的函数

转载自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html   应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接。在使用DLL之前首先要知道DLL中函数的结构信息。Visual C6.0(或者更先进的版…

CentOS LVS安装配置

目录(?)[] 一般2.6.10以上内核版本都已经自带了ipvsadm,故不需要安装。 Ipvs 1.25编译 ipvsadm-1.25编译不过 去掉netlink库的依赖:去掉libipvs/Makefile的CFLAGS -DLIBIPVS_USE_NL,去掉Makefile的LIBS -lnl。需要popt库解析命令行,在这里…

《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一2.7 横式构图和竖式构图...

本节书摘来自异步社区出版社《淘宝网开店 拍摄 修图 设计 装修 实战150招》一书中的第2章,第2.7节,作者: 葛存山,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.7 横式构图和竖式构图 横幅画面,即画面底边…

Node.js初接触(一)

本来还在纠结着到底要学哪一种后台语言呢,突然发现node.js很火,既然能被这么多人推崇,自然是有他的优势的。去百度百科看了一眼,或许是我理解能力太差,并没有了解到很多关于node.js的东西,大概就是知道了No…

python request file upload_Python基于requests实现模拟上传文件

方法1: 1.安装requests_toolbelt依赖库 #代码实现 def upload(self): login_token self.token.loadTokenList() for token in login_token: tempPassword_url self.config[crm_test_api]/document/upload tempPassword_data self.data_to_str.strToDict(title:1.…

MATLAB中的randi函数

randi Pseudorandom integers from a uniform discrete distribution.来自一个均匀离散分布的伪随机整数 R randi(IMAX,N) returns an N-by-N matrix containing pseudorandom integer values drawn from the discrete uniform distribution on 1:IMAX.返回一个NN的包含伪随机…

C++ dll的隐式与显式调用

转载自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html   应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接。在使用DLL之前首先要知道DLL中函数的结构信息。Visual C6.0&…

《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.5节光照的每顶点计算与每片元计算...

本节书摘来自异步社区《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一书中的第6章,第6.5节光照的每顶点计算与每片元计算,作者 吴亚峰,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.5 光照…

毛笔笔锋算法IOS版

http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/#.VUln2_mqpBe转载于:https://www.cnblogs.com/wangjinming/p/4481145.html

USE PDFCREATE TO CREATE A PDF FILE

来源:http://www.pdfforge.org/files/old_forum/1002.html a working sample with C & COM 2007-08-15 22:56:18 by eckart hi, here is a working sample of how to use PDFCreator in Visual C (after searching on internet for something similar I guess t…

python将一行作为字段_关于python:Django admin在同一行显示多个字段

我已经创建了一个模型,它将自动显示模型中的所有字段,并将其显示在管理页面上。 现在,我有一个问题,我希望在同一行中有两个字段,为此,我必须在modeladmin中指定字段集: 1 2 3 4 5fieldsets ( …

c++显式加载dll并使用DLL的类

转载自: http://blog.163.com/tianjunqiang666126/blog/static/8725911920121064573594/ 首先需要强调,当使用某个类时一般目的有二:实例化成对象或者继承它产生新类。对于前者,我们可以构造一个抽象类&a…

如何在Debian上安装配置ownCloud

如何在Debian上安装配置ownCloud 据其官方网站,ownCloud可以让你通过一个Web界面或者WebDAV访问你的文件。它还提供了一个平台,可以轻松地查看、编辑和同步您所有设备的通讯录、日历和书签。尽管ownCloud与广泛使用Dropbox非常相似,但主要区别…

jQuery相当于对 javascript二次开发,所以基于 jQuery实现的各种插件直接调用即可...

jQuery相当于对 javascript二次开发,所以基于 jQuery实现的各种插件直接调用即可转载于:https://www.cnblogs.com/npk19195global/p/4482363.html

[转]js判断url是否有效

本文转自:http://www.cnblogs.com/fumj/p/3490121.html 方法一:(仅适用于ie) function CheckStatus(url){XMLHTTP new ActiveXObject("Microsoft.XMLHTTP")XMLHTTP.open("HEAD",url,false)XMLHTTP.send()return XMLHTTP.status200}function Ne…

VS中lib和dll

转载: http://www.cnblogs.com/Yogurshine/archive/2013/06/14/3136025.html Lib文件 先来说一说lib文件,C中lib文件主要有两类,一种是静态的编译连接,叫做静态链接库,另一种是动态的编译链…