作用域

day11课堂小结 函数作用域

余生长醉 提交于 2019-11-30 05:50:04
可变长参数 可变长参数:指的是调用函数时,传入的参数个数可以不固定 *形参(形参名) *args(约定俗成),接收多余位置实参,用元组接收 def f1(*a) # 调用函数时,有多少个参数,我就接收多少个参数 print(a) f1() # () # a是空元组 f1(1) # (1,) f1(1,2) f1(1,2,3,4,5,6,7,6,6,) f1(b=1) #报错 def f1(*abc,b): print(abc,b) f1(b=1) # () 1 **形参 **kwargs,用字典接收多余的关键字实参 def f1(**kwargs): print(kwargs) f1() # 空字典 f1(x=1) # {'x':1} def f1(*args,**kwargs): print('args:',args) print('kwargs:'kwagrs) f1(11,1,12,2,x=1,y=2,z=3) # agrgs:(11,1,12,2) # kwargs:('x':1,'y':2,'z':3) def f1(a,b,c,*args,**kwargs): print('args:',args) print('kwargs:'kwagrs) f1(11,1,12,2,x=1,y=2,z=3) # agrgs:(2,) # kwargs:('x':1,'y':2,'z

Java基础 复习(7) Spring / Spring MVC

徘徊边缘 提交于 2019-11-30 05:47:06
Spring / Spring MVC 90. 为什么要使用 spring? 1.简介 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 2.轻量 从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 3.控制反转 Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 4.面向切面 Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 5.容器

day 11

情到浓时终转凉″ 提交于 2019-11-30 05:41:21
目录 可变长参数 函数的调用 函数嵌套 名称空间 可变长参数 *形参 后约定俗称args,简称为(*args ),作用是会将溢出的位置实参全部接受,然后按照存储 元组 的行式,把元组赋值给*后边的参数。 def fa(*args): #retrun *args不能直接返回,会提示语法错误。 #print(*args)可以直接打印.打印时*可以加也还可以不加。 * 实参 作用是会将*之后的参数循环取出,打散成位置实参,以后只要遇到实参中带有*的,他就是位置实参,应该马上打散成位置实参去看。 def f(x,y,z,*args): print(x,y,z,*args) f(1,*(2,3),4,5,6) #打印结果为:1,2,3,(4,5,6) 注:上述代码块中的*(2,3)是被打散成了位置实参,分给了“y,z”,而*args将实参中剩余的“4,5,6”给集合成一个元组,为(4,5,6) **形参 形参中的**会将溢出的关键字实参全部接收,然后存储字典的行式,然后把字典赋值给**后的参数,需要注意的是:**后的参数约定俗称为kwargw,即简称为(**kwargw) def f(**kwargw): print(kwargw) #打印时**不可以加,打印出来的值为字典格式 **实参 实参中的**会将后边参数的值循环取出,打散成关键字实参,哟吼但凡碰到是惨重带**的,他就是关键字实参

python函数作用域

假装没事ソ 提交于 2019-11-30 05:31:43
python中函数有自己的作用,if语句没有作用域。 函数的作用域分为以下四种: L:local,局部作用域,即函数中定义的变量 E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的 G:global ,全局变量,就是模块级别定义的变量 B:built-in,系统固定模块里面的变量,比如int。 搜索变量的优先级顺序:作用域局部>外层作用域>当前模块中的全局>python内置作用域。也就是LEGB 注意: global和nonlocal global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用 global关键字。 nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。 来源: https://www.cnblogs.com/zd37/p/11562109.html

zg手册 之 python2.7.7源码分析(5)-- python的作用域和名空间

我们两清 提交于 2019-11-30 05:23:55
在 python 中, module,作用域,名空间这几个概念与虚拟机的运行机制有紧密的联系, 这里先了解 module,作用域,和名空间,为后面分析虚拟机的运行做准备。 module 在python中一个文件对应是一个module,每个py文件被导入后都对应一个module对象。 这个对象包含有一个dict对象,保存着本py文件中对应的变量和函数的引用, 也保存从其他python文件(module)导入的变量或函数的引用。 名空间和作用域 python 有三个独立的名空间, local, global, builtin。 builtin 是python解释器的全局名空间 global 是module对象的全局名空间,保存着module中的变量和函数的引用 local 对应是当前代码块的名空间,保存局部的变量和函数引用 在python文件中,每个代码块对应一个作用域,也对应一个名空间。 当使用变量或者函数的时候,按照名空间 local,global,builtin的顺序查找。 代码块是可以嵌套的,所以local名空间也是嵌套查找。 作用域的例子 #!/usr/bin/env python # coding: utf-8 # test.py # 全局作用域,定义变量a,函数show a = 'hello word' def show(): # 函数 show 的局部作用域 name

ES5

隐身守侯 提交于 2019-11-30 05:03:59
什么是ES5:比普通js运行要求更加严格的模式 为什么:js语言本身有很多广受诟病的缺陷 如何:在当前作用域的顶部添加:"use strict" 要求: 1、禁止给未声明的变量赋值 2、静默失败升级为错误 静默失败:执行不成功,也不报错! 3、禁用了 arguments.calee arguments.callee:在调用时,获得当前正在执行函数名,因为递归的效率极低--重复计算量太大 解决:几乎所有的递归都可以用循环代替 4、普通函数调用和匿名函数自调中的this不再指向window,而是underfine 来源: https://my.oschina.net/u/4165441/blog/3108810

可变长参数、函数的嵌套、名称空间和作用域学习笔记

点点圈 提交于 2019-11-30 04:29:49
写在博客的开头 nick说:人生疾苦唯有自救,这是你相信IT的最后一次机会。这个时候必须得逼自己一把,只有对自己够狠才能慢慢强大。昨天看一哥们在博客上说每天大喊一遍python第一java第二,python大法无所不能,给自己以一个乐观积极的态度好好学习天天向上。加油,希望我们每一个人都不负光阴。 可变长参数 *形参名 def f1(*args):#调用时有多少个位置实参就接收多少个 print(args)#\*args(约定俗成的),用元组接收多余的位置实参 **形参 def f1(**kwargs): print(kwargs)#用字典接收多余的关键字实参 以上内容很important,以下内容仅作了解(Nick说以后很少用到) *实参 def f1(a,b,c,d,e,f,g): print(a,b,c,d,e,f,g) lt = [1,2,3,4,5,6,7] f1[*lt]#\*lt把列表中的元素打散成位置实参一次传给位置形参(这个过程其实就是解压缩) **实参 def f1(z,b): print(z,b) dic = {'z':,'b':2} f1(**dic)#**dic把字典打散成关键字实参然后传给函数f1 函数对象 Python中一切皆对象,函数是第一类对象,即函数可以被当作数据处理。 def func(): print('from func') prnit

day11 总结

限于喜欢 提交于 2019-11-30 04:27:58
1.可变长参数 可变长参数:在调用函数时,参入的参数个数可以不固定。 调用函数时,传值的方式莫非两种,一种是位置实参,另一种是关键字实参,因此形参也必须的有两种解决方式,以此来分别接收溢出的位置实参(*)也关键字实参(**) 一.可变长形参之* 形参中的 会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给 后的参数。需要注意的是:*后的参数名约定俗成为args。 def sum(*args): res = 0 for sum_new in args: res += sum_new return res res = sum(1,2,3,4,5) print(res) # 15 二 .可变长实参之* 实参中的 , 会将 后参数的值循环取出,达三成位置实参。以后但凡碰到实参中带 的,他就是位置实参,应该马上打散成位置实参去看。 def func(a,b,*,c,d): print(a,b) print(c,d) lst = [10,11] ''' *lst 相当于把列表中的每一个元素单独拿出来,扔到参数中进行赋值;''' func(*lst,c=12,d=13) # func(10,11,c=12,d=13) 列二: def func(x, y, z, *args): print(x, y, z, args) func(1, *(1, 2), 3, 4)#1,1,2,(3

函数基础 二

别等时光非礼了梦想. 提交于 2019-11-30 04:26:08
目录 可变长参数 两种可变长形参 *形参名 **形参名 两种可变长实参 *实参 **实参 函数对象 1、引用 2、当作容器类元素 3、作为函数的实参 4、作为函数的返回值 函数嵌套 函数嵌套:函数里边定义函数 名称空间和作用域 名称空间:专门用于存储名称的空间 名称空间主要分为以下三类: 名称空间的执行(生成)顺序: 搜索顺序: 作用域 全局作用域: 内置名称空间+全局名称空间 --》 全局作用域 局部作用域 global和nonlocal:仅作了解,尽量不要使用 global:打破了上述的第1点规则 可变数据类型不受作用域的限制 可变长参数 两种可变长形参 *形参名 def f1(*args): # 调用函数时,有多少个位置实参,就接收多少个参数,组成元组 print(args) f1() # 打印结果:() # a是空元组 f1(1) # 打印结果:(1, ) #注意有逗号 f1(1, 2) # 打印结果:(1,2) f1(1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 7, 7, 7, 7, 7, ) *args (约定俗称的),用元组接收 多余 的位置实参 **形参名 def f1(**kwargs): # 调用函数时,有多少个关键字实参,就接收多少组参数,组成字典 print(kwargs) f1(x=1) # 打印结果:{} # 空字典 **kwargs

函数(二)

一曲冷凌霜 提交于 2019-11-30 04:25:19
目录 函数基础(二) 可变长参数 可变长形参之* 可变长实参之* 可边长形参之** 可变长实参之** 函数对象 一:引用 二:容器元素 三:作为函数的实参 四:作为函数的返回值 函数的套用 一:函数的嵌套定义 二:函数的嵌套调用 名称空间和作用域 名称空间 一:内置名称空间 二:全局名称空间 三:局部名称空间 四:加载顺序 五:查找顺序 作用域 一:全局作用域 二:局部作用域 三:注意点 补充知识点 一:global关键字 二:nonlocal 三:注意点 函数基础(二) 可变长参数 指的是在调用函数时,传入的参数个数可以不固定 调用函数时,传值的方式无非两种,一种是位置实参,另一种是关键实参,因此形参也必须得有两种解决方法,以此来分别就收溢出的位置实参与关键字实参 可变长形参之* def sum_self(*args): res = 0 for num in args: res +=num return res = sum_self(1,2,3,4) print(res) # 形参中的*会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给*后的参数。需要注意的是:*后的参数名约定俗成为args。 可变长实参之* def func(x, y, z, *args): print(x, y, z, args) func(1, *(1, 2), 3, 4) # 1,1,2,3