摘要:
生成器send方法 #send的工作原理 --1、给当前停止位置的yield传入参数 --2、再去调用__next__()方法找到找下一个yield,返回yield的值并且停住 def fn(): a = yield 1 b = yield 2 yield 3 fn().__next__() #直接 阅读全文
摘要:
带参装饰器 装饰器主要是为被装饰函数添加新功能,有时候也是需要外界提供的参数 当需要外界提供参数时: 1、装饰器函数(outer)只能有一个形参,为了让被装饰函数对象传进去 2、装饰器内部的闭包函数(inner)的参数也是固定的和被装饰函数的参数一直 --以上两个都靠不住的时候,我们就把整个装饰器作 阅读全文
摘要:
函数的嵌套定义 概念:在一个函数内部定义另一个函数 为什么要有函数的嵌套定义 --1、函数fn2想使用fn1内部的局部变量,可以直接把fn2定义到fn1的内部,这样fn2就可以直接访问fn1内部的变量 --2、函数fn2就变成了fn1的局部变量(名)了,想要在外部调用fn2,可以把fn2函数对象作为 阅读全文
摘要:
函数默认值的细节 #如果函数的默认参数的默认值为变量,在所属函数定义阶段以执行就被确定为当时变量存着的值 eg: a = 10 def fn(num = a): print(num) #打印出来的还是10 a = 20 fn() 三元表达式(就是if...else...的语法糖) 三元表达式就是用于 阅读全文
摘要:
字符串的比较 1、单个字符的比较就是ascii码的比较(对应的十进制) 'A'->65 'a'->91 >'a' > 'A' 2、多个字符的字符串比较就是一一对应的单个字符的比较,一旦比较出结果就终止比较 'aBc' < 'aA' 函数的参数 形参与实参 --实参:有实际意义的参数 --在函数调用中 阅读全文
摘要:
函数的定义***** 函数: 完成实现某种特定功能的代码块,作为一个整体,对其进行特定的命名,该名称就是函数 --在现实生活中,很多问题都需要通过一些工具进行处理=>可以将工具提前生产出来并且命名, =>通过名字就可以找到工具 => 使用工具来解决问题 函数的优点: 1、解决代码的冗余 2、可以重复 阅读全文
摘要:
内存空间管理 1、空间引用计数,垃圾回收机制的依据 --变量的值被引用,该值的引用计数加1 --变量解除绑定,该值的引用计数减1 --如果该值的引用计数为0,就会被自动回收 2、引用计数会出现的循环问题:相互引用无法释放 --两个变量引用其值,值之间又相互引用 --变量接触绑定,但两个值的引用计数都 阅读全文
摘要:
ascii码转换成字符:chr() 字符串转换成ascii:ord() 三种字符串 1、普通字符串 --以字符作为输出单位 print(u'abc') 显示给用户看的字符串 2、二进制字符串 --以字节作为输出单位 print(b'\xe4\xbd\x95\xe8\x8b\x8f\xe5\x81\x 阅读全文
摘要:
数据类型之间的相互转换 1、字符串转换成数字类型 判断哪些可以转换成数字型可以参考下面例题: 2、数字类型转换成字符串类型:直接 str(数字类型) 3、字符串和列表之间的相互转换****** 1)字符串转换成列表 str.split() 切分,通过括号里的切割符号把str转换成列表 2)列表转换成 阅读全文
摘要:
深浅拷贝 1、值拷贝 ls1 = [1,2,3] ls2 = ls1 #ls2直接把栈区里ls1存的地址拿过来,也指向堆区里列表的id #原列表发生ls1改变(不是重新赋值),ls2也跟着发生改变 2、浅拷贝 ls1 = [1,2,3] ls2 = ls1.copy() #浅拷贝首先是在堆区里重新开 阅读全文