通过正则表达式,实现加减 昨晚在做计算器的时候,被一个BUG搞懵比了.现在再看看,发现我好小白啊~~ #++- num = input("please input:") sa = re.split(r'(\D)', num) #区配到非数字则分割 def func(s): #result = ] == '+': result = ]) + ]) elif s[] == '-': result = ]) - ]) ): # 去掉前三个 s.remove(s[]) s.insert(, r…
按引用赋值而不是拷贝副本 在python中,无论是直接的变量赋值,还是参数传递,都是按照引用进行赋值的. 在计算机语言中,有两种赋值方式:按引用赋值.按值赋值.其中按引用赋值也常称为按指针传值(当然,它们还是有点区别的),后者常称为拷贝副本传值.它们的区别,详细内容参见:按值传递 vs. 按指针传递. 下面仅解释python中按引用赋值的相关内容,先分析下按引用赋值的特别之处,然后分析按引用赋值是什么样的过程. 按引用赋值的特性 例如: a = 10000 b = a >>> a,b (…
目录 1 定义 2 作用域的重要性 2.1 全局作用域中的代码不能使用任何局部变量 2.2 局部作用域中的代码可以访问全局变量 2.3 不同局部作用域中的变量不能相互调用 2.4 在不同的作用域中,可以使用相同的名字命名不同的变量 3 全局变量与局部变量同名 4 global 5 全局变量和局部变量的优先级 参考内容 1 定义 在被调用函数内赋值的变量是局部变量 在所有函数之外赋值的变量是局部变量 当一个函数被调用的时候,就会创建一个局部作用域,在这个函数内的所有变量都存在于该局部作用域内(gl…
动态类型的语言 python是动态类型的语言,不需要声明变量的类型. 实际上,python中的变量仅仅只是用来保存一个数据对象的地址.无论是什么数据对象,在内存中创建好数据对象之后,都只是把它的地址保存到变量名中.所以变量名是类型无关的,但它指向的值是类型相关的,可以是数值.字符串.列表.函数.类.对象等等.这些内存对象中都至少包含3部分:对象类型.对象的引用计数(用来判断改对象是否可被垃圾回收器回收).对象的值. 因此,a = 3中,变量名a保存的是数据对象3的地址,之后可以为其赋值一个字符串…
直接放代码,有注释,就不解析了 # ############################ # 改变一个变量的值,与之有关系的变量的值也会相等变化 # 类似php的引用赋值,宏观来看 # ############################ relation = [] # relation是装在有关系的集合的列表 # 绑定有关系的变量 def bind(*arg): if len(arg) < 2: ''' 判断绑定变量的个数 ''' print("error: 至少绑定两个变量&q…
定义: a.全局变量:在模块内.在所有函数外面.在class外面,这就是全局变量. b.局部变量:在函数内.在class的方法内(未加self修饰的),这就是局部变量. c. 静态变量:在class内的,但不在class的方法内的,这就是静态变量. d. 实例变量:在class的方法内的,用self修饰的变量,这就是实例变量. 1.全局变量与局部变量: 全局变量是在整个py文件中声明,全局范围内都可以访问. 局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就…
Python 对象的引用计数和拷贝 Python是一种面向对象的语言,包括变量.函数.类.模块等等一切皆对象. 在python中,每个对象有以下三个属性: 1.id,每个对象都有一个唯一的身份标识自己,可通过内建函数id(obj)查看. 2.type,对象的类型决定了该对象可以保存什么类型的值,可用内建函数type(obj)查看: 3.value,即对象的值. 下面是一个例子: >>> str = "hello world" >>> type(str…
目录 引用计数法 增量操作 计数器溢出的问题 减量操作 终结器 插入计数处理 引用计数法 增量操作 如果对象的引用数量增加,就在该对象的计数器上进行增量操作.在实际中它是由宏Py_INCREF() 执行的. #define Py_INCREF(op) (((PyObject*)(op))->ob_refcnt++) #define Py_XINCREF(op) if ((op) == NULL) ; else Py_INCREF(op) 除了增量操作外,还要执行NULL检查,Py_XINCREF…
作为一个python初学者,今天被一个python列表和词典引用的问题折磨了很久,但其实了解了缘由也很简单,记录在此备忘. 首先背书python中的引用对象问题: 1. python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是“传对象引用”的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的引用,就不能…
关于Python中的引用的一些使用注意 在python中,在创建一个对象并给它赋予一个变量时,这个赋予的变量仅仅是一个引用它所代表的对象.也就是说新创建的对象只是指向计算机中储存那个对象的内存. 比如 a = ['1' ,'2', '3] b = a c = a[:] del a[0] print(b) print(c) 上述代码的输出结果会是: ['2', '3'] ['1', '2', '3'] 可以看到,创建b时直接使用了a这个变量赋值,b绑定的是a在内存中的对应的对象的引用,当对a进行操…