作用域

Python 函数

点点圈 提交于 2020-03-19 02:57:52
一、函数是什么?   函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。   函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。 特性: 代码重用 保持一致性 可扩展性 二、函数的创建 2.1 格式: Python 定义函数使用 def 关键字,一般格式如下: def 函数名(参数列表): 函数体 def hello(): print('hello') hello()#调用 2.2 函数名的命名规则 : 函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号; 函数名是区分大小写的。 函数名不能是保留字。 2.3 形参和实参 形参:形式参数,不是实际存在,是虚拟变量。在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应与实参一一对应) 实参:实际参数

关于Spring中Bean作用域

孤街醉人 提交于 2020-03-17 14:41:47
某厂面试归来,发现自己落伍了!>>> 关于Spring中Bean作用域scope属性常见有两个属性值: singleton(单例) 和 prototype (原型/多例)。在SpringMVC中默认是 singleton(单例),那问题来了:为啥 SpringMVC默认 是单例呢? 我们知道 SpringMVC的控制层是方法级别:每次请求都执行对应的方法 @RestController //第二次修改为多例 //@Scope("prototype") public class TestController { private int i = 0; @GetMapping(value = "/test1") public int testInstance1(){ i++; return i; } @GetMapping(value = "/test2") public int testInstance2(){ i++; return i; } } 第一次单例模式 依次访问 http://localhost:8082/reed/test1 //返回1 http://localhost:8082/reed/test1 //返回2 http://localhost:8082/reed/test2 //返回3 可以看出。所以请求共享一个对象 /////////////////////////

JS作用域面试题总结

放肆的年华 提交于 2020-03-17 08:53:20
关于JS作用域问题,是面试的时候面试官乐此不疲的面试题,有时候确实是令人抓狂,今天看到一个讲解这个问题的视频,明白了那些所谓的“原理”顿时有种豁然开朗的感觉~~~ 1.js作用域(全局变量,局部变量)内部可以访问外部,但外部的不能访问内部的 var a=10; function aaa(){ alert(a); }; aaa(); //a 为外部变量即全局变量,所以可以直接访问到 结果为10 function aaa(){ var a=10; }; aaa(); alert(a); //a 为函数aaa()内部变量量即局部变量,所以无法访问到 var a=10; function aaa(){ alert(a); }; function bbb(){ var a=20; aaa(); } bbb(); //结果为10,因为aaa()函数不能访问到bbb()里面的局部变量,所以访问到的是a=10,这个全局变量。 2.不用var 定义变量时,会默认为是全局变量(不规范,不推荐) function aaa(){ a=10; } aaa(); alert(a); //结果为10; //等价于: var a; function aaa(){ a=10; }; aaa(); alert(a); //给未声明的变量赋值,此变量就会变成全局变量;var a=b=10; 可以解析成 b=10;var

关于.NET中的控制反转及AutoFac的简单说明

狂风中的少年 提交于 2020-03-16 03:21:46
目录 1.控制反转 1.1 什么是依赖? 1.2 什么是控制反转? 1.3 什么是依赖注入? 1.4 简单总结 2.控制反转容器 2.1 IOC容器说明 2.2 使用AutoFac的简介示例 3 使用AutoFac的一些细节 3.1 准备工作 3.2 注册整个程序集中的所有实现类 3.3 注入接口实现类中的接口类型的属性 3.4 关于一个接口有多个不同的实现类 3.5 关于一个实现类实现了多个接口 3.6 关于实例作用域 4.在MVC中使用AutoFac 5.参考及示例源码下载 shanzm-2020年3月16日 02:17:35 1.控制反转 1.1 什么是依赖? 依赖 是面向对象中用来描述类与类之间一种关系的概念。两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务,这样的两个对象之间主要体现为 依赖关系 1.2 什么是控制反转? 说反转则要先说“正转”,传统中,在程序中使用new关键字配合构造函数去创建一个对象,这就是程序主动的创建其所依赖对象,这就是“ 正转 ”。 调用者不自己创建被调用者对象,而交由第三方(容器)进行创建被调用者对象,这个过程称为 控制反转 (inversion of control, IOC )。 为什么要控制反转?控制反转是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度,便于扩展和后期维护。 1.3

代码运行之预解析与作用域

为君一笑 提交于 2020-03-15 17:13:58
代码运行之预解析与作用域(代码如何运行) 预解析 在代码执行前,会对代码进行一次预解析 预解析的内容:   声明式函数 (告诉浏览器,这是一个被定义了的函数)   var 关键字 (告诉浏览器,这是一个被定义的变量,但是不会解析到赋值) PS:当预解析时,函数名和变量名重复时,会以函数为重 预解析的无理处:(不理判断条件,变量都会被解析??)   if条件内不管是否满足条件都会进行解析   return 后面也会进行解析 作用域   全局作用域    一个页面打开就是一个全局作用域   私有作用域/函数作用域    只有函数会生成私有作用域      变量在作用域中的使用规则   定义规则   定义在哪个作用域就只能在那个作用域以及子级的作用域进行使用。   赋值规则   当在一个作用域里对一变量进行赋值时,如果在本作用域里找不到,就会往上级找,如果到全局作用域也没有, 会自动定义这个变量为全局变量   访问规则    当需要使用一个变量时,先在本作用域进行寻找,没有就会往上级找,如果全局作用域也没有,会报错**xxx is not defined** 来源: https://www.cnblogs.com/33I77/p/12498539.html

angularJS中如何写自定义指令

烂漫一生 提交于 2020-03-15 16:47:57
指令定义 (转自http://www.cnblogs.com/huangshikun/p/7060787.html) 对于指令,可以把它简单的理解成在特定DOM元素上运行的函数,指令可以扩展这个元素的功能 例如,ng-click可以让一个元素能够监听click事件,并在接收到事件的时候执行angularJS表达式 正是指令使得angularJS这个框架变得强大,并且正如所见,我们可以自己创造新的指令 指令声明方法 angular.module('freefedApp',[]).directive(name,function(){ return { restrict: String, priority: Number, terminal: Boolean, template: String or Template Function:function(tElement, tAttrs) (...}, templateUrl: String, replace: Boolean or String, scope: Boolean or Object, transclude: Boolean, controller: String orfunction(scope, element, attrs, transclude, otherInjectables) { ... },

powershell基础知识

醉酒当歌 提交于 2020-03-15 06:30:53
" " //双引号中将尝试替换匹配的变量值 ' ' //单引号中不进行变量值替换 @" "@ // "here string",其中可包含任意字符(含回车和引号),将尝试替换匹配的变量值 @' '@ // "here string",其中可包含任意字符(含回车和引号),不进行变量值替换 { } //大括号中将不进行变量值替换,类型为 System.Management.Automation.ScriptBlock [ ] //类型运算符  [int]  [single]   [double]  [string] :label //标签,用于控制结构或代码块 · //换行符号 . // Dot Sourcing,允许在当前作用域(而不是本地作用域)中运行函数、脚本块和脚本 // . 后可以使用 [string] 或者 [ScriptBlock] . { $var = value; } or . "func" & //调用运算符或者说是函数转义运算符   // & 后可以使用 [string] 或者 [ScriptBlock] 1  & { $var = value; } //代码块 ScriptBlock 可以作为无名函数用 & 运算符调用 2  & "func" 3    Function Cook ( $i, $f ) { &$f $i; } //函数名可作为参数传递,然后用

SCOPE_IDENTITY的用法

落花浮王杯 提交于 2020-03-13 07:28:08
SCOPE_IDENTITY 和 @@IDENTITY 的作用都是取得返回在当前会话中的任何表内所生成的最后一个标识值,简单的说就是在执行一条插入语句之后使用@@IDENTITY的全局变量,取得插入记录的ID号但是有个问题就是,@@IDENTITY是全局的,所以在他的功能会体现在所有作用域,一个操作,一个触发器,一个存储过程叫做一个作用域,这时候如果出现多个作用域的情况的时候,@@IDENTITY所取得的ID号就是最后一个作用域产生的结果。这时候我们要使用SCOPE_IDENTITY方法来作了。SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。 使用方法:select SCOPE_IDENTITY() as ID from [table]select @@IDENTITY as ID from [table] 实例: sql="SET NOCOUNT ON;insert into [Table](Item) values('"&Item&"')"sql=sql&";select @@IDENTITY as ID from [Table];SET NOCOUNT OFF;" 在插入某些自增表的时候,需要将其打开: 语法:SET IDENTITY_INSERT TableName ON 来源: https://www.cnblogs

select @@identity的用法 转

 ̄綄美尐妖づ 提交于 2020-03-13 07:24:24
用select @@identity得到上一次插入记录时自动产生的ID 如果你使用存储过程的话,将非常简单,代码如下:SET @NewID=@@IDENTITY 说明: 在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY 将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务被回滚,则 @@IDENTITY 值不会还原为以前的设置。 在返回插入到表的 @@IDENTITY 列的最后一个值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函数类似。 @@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。 IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT

十、Python 命名空间和作用域

大城市里の小女人 提交于 2020-03-12 08:37:05
1、命名空间 I) 定义: 1)命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。 2)命名空间提供了在项目中避免名字冲突的一种方法。 3)各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响。 例如: 我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹, 每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名 II)三种命名空间格式: 一般有三种命名空间: 内置名称(built-in names) : Python 语言内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等。 全局名称(global names) : 模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。 局部名称(local names) : 函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。(类中定义的也是) III) 命名空间查找顺序 Python 的查找顺序为:局部的命名空间去 -> 全局命名空间 -> 内置命名空间 如果找不到变量 a,它将放弃查找并引发一个 NameError 异常 IV) 命名空间的生命周期: 命名空间的生命周期取决于对象的作用域,如果对象执行完成