(以下内容,均基于python3) 最近在看python函数部分,讲到了python的作用域问题,然后又讲了Python的闭包问题. 在做作业的时候,我遇到了几个问题,下面先来看作业. 一. 作业1: 代码A: def outside(): var = 5 def inside(): var = 3 print(var) inside() outside() 代码B: def outside(): var = 5 def inside(): print(var) var = 3 inside()…
函数 动态参数 *args def sum(*args): ''' 任何参数都会被args以元组的方式接收 ''' print(type(args)) # result:<class 'tuple'> sum = 0 for i in args: sum += i return sum print(sum(1, 2, 3)) # result:6 print(sum(*[1, 2, 3])) # result:6 # 12,13行等价 # * 表示将这个列表按照顺序打乱传入 **kwargs…
Python的类语句不会创建实例 类会创建命名空间,通过对象访问类的属性和方法 类不会创建作用域,对方法和属性的引用必须加以限定(如在方法中必须通过self引用实例的属性) class My1(): my1 = "My1bianliang" def __init__(self): print("My1gouzao") def __del__(self): print("My1xigou") class My2(): def __init__(se…
http://www.cnblogs.com/gtarcoder/p/5005897.html http://www.cnblogs.com/mexh/p/9967811.html…
一.元组传值: 一般情况下函数传递参数是1对1,这里x,y是2个参数,按道理要传2个参数,如果直接传递元祖,其实是传递一个参数 >>> def show( x, y ): ... print x, y ... >>> a = ( 10, 20 ) >>> show( a, 100 ) (10, 20) 100 而如果要把一个元祖( 有2项 )传给x和y,传递的时候要用*a,如果一个函数要3个参数,就不能传递2项的元祖 >>> def…
首先: delete []p;是用来删除对象数组的,特别是你声明的是对象数组!!! 如果new中用了[],delete一定要用[]:在new中没有使用,在delete中一定不要使用. 其次: 当你使用new的时候,首先内存被分配 ,然后针对此块内存,会有相应的构造函数被调用. delete使用的时候,首先针对此块内存会有析构函数被调用,然后释放内存. 二: 一般以传引用代替传值. 对于内置类型,我们一般以传值代替传引用,因为传值会速度快些,传引用本质在c++底层是传递的指针.(内置类型譬如int…
本随笔旨在强化理解传值与传引用   如下代码的运行结果 其中i没有改变,s也没有改变. 但model中的值均改变了. i :100s :hellomodel :testchangemodel2 :changeModel java中的形参是复制实参在栈中的一份拷贝,所以在函数中改变形参是无法改变实参的值的,改变引用只是将形参所代表的引用指向另外的新的对象,而实参的引用还指向原来的对象,改变形参引用的对象当然会影响实参引用对象的值,因为他们的引用都指向同一个对象.   package newtest…
#闭包函数 def multiplier(factor): def multiplyByFactory(number): return number*factor return multiplyByFactory ) print()) print(multiplier()()) result: 10 24…
python命名空间与闭包函数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的知识点如下: 1>.三元运算 2>.命名空间 3>.global与nonlocal 4>.函数即变量 5>.嵌套函数 6>.闭包函数 一.三元运算表达式 #!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhen…
名称空间 name space,如下图: x = 1, 1存放在内存中,1 会有一个内存地址,x 则 存放在 name space 里,并同时记录了 1的内存地址, 即 名称空间是存放了变量x与1绑定关系的地方 名称空间共3种 : locals: 是函数内的名称空间,包括局部变量和形参. globals: 全局变量,函数定义所在模块的名字空间.全局存活,全局有效 builtins: 内置模块的名字空间 不同变量的作用域不同就是由这个变量所在的命名空间决定的. 查看作用域方法 globals(),…