作用域

Python3 函数基础2

半腔热情 提交于 2019-11-30 04:22:53
目录 可变长参数 可变长形参: *args 可变长实参: *容器类 可变长形参: **kwargs 可变长实参: **字典 函数对象 引用 当做容器类型元素 当做参数传给一个函数 当做函数的返回值 函数对象应用 名称空间和作用域 名称空间 内置名称空间 局部名称空间 全局名称空间 空间名称的生成顺序 名称空间搜索顺序 作用域 全局作用域 局部作用域 注意事项 补充 可变长参数 可变长形参: *args 形参中的* 会将溢出的 位置实参 全部接收, 然后以元祖的形式存储, 并将元祖赋值给*后面的args # 我们习惯把*后面的形参叫做args def func(a, *args): print(args) func(1, 2, 3, 4) # (2, 3, 4) 可变长实参: *容器类 实参中的*会将其后面的 容器类型的元素 (列表, 集合, 元祖, 字典)依次取出, 变成位置实参 def func(a, b, c, d): print(a, b, c, d) tup = (2, 3) func(1, *tup, 4) # 1 2 3 4 可变长形参: **kwargs 形参中的**会将溢出的关键字实参全部接收, 然后以字典的形式存储, 并赋值给后面的kwargs # 我们习惯把**后面的形参叫做kwargs def func(a, **kwargs): print(kwargs)

day11 学习小结

社会主义新天地 提交于 2019-11-30 04:20:12
目录 一、可变长参数 1. *形参 2. **形参 3. *实参(仅作了解) 4. **实参(仅作了解) 二、函数对象 三、函数嵌套 四、名称空间和作用域 1.名称空间 内置名称空间 全局名称空间 局部名称空间 2.作用域 全局作用域 局部作用域 局部作用域的特点 3.名称空间的执行(生成)顺序 4.搜索顺序 一、可变长参数 1. *形参 调用函数时,用元组接收多余的位置实参 def f1(*args): # 一般约定俗成用args来做*形参的变量名 print(args) f1(1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 7, 7, 7, 7, 7, ) # (1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 7, 7, 7, 7, 7) 2. **形参 调用函数时,用字典接收多余的关键字实参 def f1(**kwargs): # 一般约定俗成用kwargs来做*形参的变量名 print(kwargs) f1(x=1) # {'x': 1} 3. *实参(仅作了解) 传参时,把列表中的元素打散成位置实参然后依次传给位置形参 def f1(a, b, c, e, d, f, g): print(a, b, c, e, d, f, g) lt = [1, 2, 3, 4, 5, 6, 7] f1(*lt) # 1 2 3 4 5 6 7 4. **实参

总结

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 04:19:34
目录 计算机基础之编程 什么是编程语言 什么是编程 为什么要编程 计算机组成 CPU 控制器 运算器 存储器 主存 外存 I/O设备 输入设备 输出设备 32位和64位 多核cpu 机械硬盘工作原理 机械手臂 磁道 扇区 平均寻道时间 平均延迟时间 平均寻找数据时间 固态硬盘 操作系统 什么是文件 操作系统有什么用 计算机三大组成 操作系统的启动 应用程序的启动 编程语言的分类 机器语言 汇编语言 高级语言 编译型语言 解释型语言 网络的瓶颈效应 执行python程序的两种方式 交互式 命令行式 变量 什么是变量 变量的组成 变量名的命名规范 变量名的两种定义方式 常量 变量的三种打印方式 python变量内存管理 引用计数 垃圾回收机制 小整数池 花式赋值 链式赋值 交叉赋值 布尔类型 解压缩 python与用户交互 三种格式化输出的方式 %占位符 format格式化 f-string格式化 基本运算符 算术运算符 逻辑运算符 比较运算符 成员运算符 身份运算符 赋值运算符 位运算符 运算符的优先级 流程控制之if判断 单分支结构 双分支结构 多分支结构 if嵌套 流程控制之while循环 while + continue while + break while + else 条件控制while循环 while嵌套 流程控制之for循环 for + break for +

day 011总结

白昼怎懂夜的黑 提交于 2019-11-30 04:18:42
昨日回顾 函数的定义 定义函数阶段只检测语法,不执行代码 def 函数名(): 代码块 函数的三种定义方式 空函数 def func(): pass 有参函数 def foo(x,y): 代码块 无参函数 def foo(): 代码块 函数的返回值 1.return可以返回值,默认返回None,return后面不加东西也返回None 2.return可以终止函数,有多个return,执行到第一个就结束 3.return可以返回多个值,以元组形式返回 函数的调用 函数调用就会执行代码 函数名() 函数的参数 形参 接受实参,具有描述意义 位置形参 从左到右依次接受位置实参 默认形参 1.具有默认值,如果传惨,使用传参的值;否则使用默认值(形参会多次使用同一个值) 2.默认形参必须得放在位置形参后面 实参 具体得值,传值给形参 位置实参 从左到右依次传惨给位置形参 关键字实参 1.按照形参名传参(参数较多得情况使用该方法) 2.关键字实参必须得在位置实参得后面 今日内容 可变长参数 * *形参名 def f1(*args):#调用函数时,有多少个位置实参,我就接受多少个参数 print(args) f1()#空元组 *args(约定俗成得),用元组接受多余得位置实参 *实参 def f1(a, b, c, e, d, f, g): print(a, b, c, e, d, f, g)

函数基础-09名称空间和作用域

女生的网名这么多〃 提交于 2019-11-30 03:40:31
函数内部的函数只能在函数内部调用,不能在函数外部调用?! 原因: 名称空间问题!!! 一丶名称空间 名称空间(name spaces):在内存管理那一章节时,我们曾说到变量的创建其实就是在内存中开辟了一个新的空间。但是我们一直在回避变量名的存储,其实在内存中有一块内存存储变量名与变量间的绑定关系的空间,而这个空间称为名称空间。 1.1 内置名称空间 内置名称空间:存放Pyhton解释器自带的名字,如int、float、len 生命周期:在解释器启动时生效,在解释器关闭时失效 1.2 全局名称空间 全局名称空间:除了内置和局部的名字之外,其余都存放在全局名称空间,如下面代码中的 x、func、l、z 生命周期:在文件执行时生效,在文件执行结束后失效 x = 1 def func(): pass l = [1, 2] if 3 > 2: if 4 > 3: z = 3 1.3 局部名称空间 局部名称空间:用于存放函数调用期间函数体产生的名字,如下面代码的f2 生命周期:在文件执行时函数调用期间时生效,在函数执行结束后失效 def f1(): def f2(): print('from f2') f2() f1() 1.4 加载顺序 由于.py文件是由Python解释器打开的,因此一定是在Python解释器中的内置名称空间加载结束后,文件才开始打开,这个时候才会产生全局名称空间

怎样理解块级作用域

感情迁移 提交于 2019-11-30 03:37:19
在ES6 之前, JavaScript中有三种作用域: 1. 全局作用域 2. 函数作用域 3. eval作用域 以上作用域内声明的变量或方法只在当前作用域内有效, 在其他作用域内引用则会返回 undefined; 而ES6则新增了一个作用域: 块级作用域 块级作用域可以简单理解为是: 包在大括号{}里面的内容, 它可以自成一个作用域, 但ES5中也有大括号, 可ES5中并没有块级作用域, 这时该怎样判断 {} 是否具有块级作用域的特点? 这时就得用到 let 和 const 因此, 可以将块级作用域理解为: 使用let和const声明的变量, 只在当前大阔号内生效, 由此构建出了 块级作用域 这么个东西. 这里的 "大括号内" 主要指的下面几种情况: // 条件语句 if () {} // switch语句 switch () {} // for / while循环语句 for () {} while () {} // try...catch语句 try () catch (err) {} // 单大括号 {} 来源: https://www.cnblogs.com/aisowe/p/11553398.html

解读Python中 locals() 和 globals() 内置函数

为君一笑 提交于 2019-11-30 02:44:46
首先globals() 和 locals() 是作用于作用域下的内置函数,所以我将它们分为作用域类型的内置函数1.作用域相关: 1)globals() # 返回全局作用域中的所有名字 2)locals() # 返回本地作用域中的所有名字可能对于这个作用域相关的内置函数,大家一接触都会很懵,这个东西是干什么的?它怎么用?今天小编就给大家来解释一下,首先我们来先看下官方的解释: globals()——获取全局变量的字典 locals()——获取执行本方法所在命名空间内的局部变量的字典什么意思呢?首先我们一定知道什么叫全局变量和局部变量吧,全局变量就是作用在全局。也就是说整个.Py文件中。而局部变量,在我们现在仅有的学习中,就是在一个函数内有效。首先我们先在全局的情况下分别使用globals() 和 locals () 两个内置函数print(globals())print(locals())答案:{'__name__': '__main__', '__doc__': None, '__package__': None ......}{'__name__': '__main__', '__doc__': None, '__package__': None ......}首先我们先在局部的情况下分别使用globals() 和 locals () 两个内置函数a = 2def func():

C++——数据共享与保护

落爺英雄遲暮 提交于 2019-11-30 02:33:48
一、标识符的作用域与可见性 1.1作用域 作用域是一个标识符在程序正文中有效的区域 分类 1、函数原形作用域 函数原型中的参数,其作用域始于 " ( ",止于" ) ",限与小括号内 2、局部作用域(块作用域) 函数的形参、在块中声明的标识符的作用域;自声明处起,限于块中 void fun(int a) { //a的范围在整个函数 int b = a; //b的范围仅限fun函数体 cin >> b; if (b > 0) { int c; //c的范围仅限if语句 ...... } } 3、类作用域 类的成员具有类作用域,其范围包括类体和非内联成员函数的函数体 如果在类作用域以外访问类的成员,要通过类名(访问静态成员),或者该类的对象名、对象引用、对象指针(访问非静态成员) 4、文件作用域 不在前述各个作用域中出现的声明的标识符,就具有文件作用域,始于声明处,止于文件尾 5、命名空间作用域 1.2可见性 可见性是从对标识符的引用的角度来谈的概念,表示从内层作用域向外层作用域“看”时能看见什么 1、如果标识在某处可见,就可以在该处引用此标识符 2、如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见 3、对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见(被屏蔽) 二、对象的生存期 2.1静态生存期

浅谈闭包

别等时光非礼了梦想. 提交于 2019-11-30 02:32:12
一、闭包 什么是闭包? 闭包:"利用作用域的嵌套,将原本的局部变量,进化成自由(私有)变量的环境" 闭包的原理: 局部作用域,局部变量的生命周期,朝生暮死 利用作用域的嵌套,触发计算机的垃圾回收机制,将原本要删除的变量,暂时保存起来,可以继续使用 垃圾回收机制:将要删除的数据,先暂时存放在一个临时空间内,不立即删除,如果需要再次使用,可以直接找到该数据,继续使用,直到真正不用了,再被删除 闭包的应用场景 1、(for)循环中的异步 for循环之中的i变量会因为for的循环次数被覆盖,所以在for循环内部存在函数时,而且这个函数内会调用i变量,这种情况下就需要用到闭包。 for(var i=0;i<10;i++){ console.log(i); //可以访问到每次的i } " 必须满足两个条件: 1.在for循环内存在函数 2.函数内会调用这个变量" var ali = document.getElementsByTagName("li"); for(var i=0;i<10;i++){ ali[i].onclick = function(){ console.log(i); //在函数内部就无法访问到外部变量 } } 如何形成闭包 var ali = document.querySelectorAll("li"); // 用法一: 用法一和用法二都是通过匿名函数形成作用域 for

JavaScript笔记

孤街浪徒 提交于 2019-11-30 02:19:25
JavaScript 1.基本认识 1.1 可以直接在标签中添加事件 <div id="wrap" onclick="alert(123);">123</div> <a href="javascript:void(0);">gogogogogo</a> <a href="javascript:alert('a标签被点击了!');">233333</a> 1.2 script标签只能放在head或者body里面 一个html中可以放无数个script标签 script标签载入有先后顺序 如果一个script标签已经用来引入外部的js文件了,那么在标签内写代码无用 <script type="text/javascript" language="JavaScript"> //type和language是声明语言格式,推荐不写 alert('潭州教育!转义字符\\') </script> 1.3 系统弹窗 confirm prompt let a = confirm('确认不要媳妇啦?'); console.log(a); //获得用户选择的结果, "boolean" let b = prompt('请输入你媳妇的名字:'); console.log(b); //用户输入的结果, 取消-> null -> "object" 确定 -> string 2.数据类型 2.1 ES5