摘要: 一、浅拷贝 定义:浅拷贝只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。 浅拷贝的特点: 公用一个值; 这两个变量的内存地址一样; 对其中一个变量的值改变,另外一个变量的值也会改变; >>> a=[11,22,33] >>> b=a >>> id(a) 40488632 > 阅读全文
posted @ 2020-09-04 13:54 Janus_Blog 阅读(143) 评论(0) 推荐(0) 编辑
摘要: Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里。 # 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数 def say_hello(): print("hello!") def say_goodbye(): pri 阅读全文
posted @ 2020-09-04 11:59 Janus_Blog 阅读(113) 评论(0) 推荐(0) 编辑
摘要: # 并发与并行 并发和并行是两个非常容易混淆的概念。他们都可以表示两个或者多个任务一起执行,但是偏重点不同。并发偏重于多个任务交替执行,而多个任务之间有可能还是串行的。并发是逻辑上的同时发生,而并行是物理上的同时发生。然而并行的偏重点在于“同时执行”。 并发:指在同一时刻只能有一条指令执行,但多个进 阅读全文
posted @ 2020-09-04 11:49 Janus_Blog 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 在class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部得复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由的修改一个实例的name、score属性: >>> bart = Student('Bart Simpson', 59) 阅读全文
posted @ 2020-09-04 11:41 Janus_Blog 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅只是访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元素可以按照某种算法推算出来,那么我们是否可以在循环的过程中不 阅读全文
posted @ 2020-09-04 11:37 Janus_Blog 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list、tuple、dict、set、str等; 一类是generator,包括生成器和带yield的generator function。 这些可以直接作用于for循环的对象统称可迭代对象:Iterable。 可以使用isin 阅读全文
posted @ 2020-09-04 11:34 Janus_Blog 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不符合逻辑。为了限制score的范围,可以通过set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样 阅读全文
posted @ 2020-09-04 11:31 Janus_Blog 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 正常情况下,当我们定义了一个class,创建了一个class实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性,先定义class: class Student(object): pass 然后给实例绑定一个属性: >>> s = Student() >>> s.name = 'Mic 阅读全文
posted @ 2020-09-04 11:29 Janus_Blog 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在python中是有特殊用途的。 __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数。 除此之外,python的class中还有许多这样有特殊用途的函数,可以帮 阅读全文
posted @ 2020-09-04 11:27 Janus_Blog 阅读(97) 评论(0) 推荐(0) 编辑
摘要: # 闭包的概念 我们尝试从概念上去理解一下闭包。 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部函数引用了外部函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用过程中,这些私有变量能够保持持久性。 用比较容易懂得人话说,就是当某个 阅读全文
posted @ 2020-09-04 11:20 Janus_Blog 阅读(152) 评论(0) 推荐(0) 编辑
摘要: python内建了map()和reduce()函数。 map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterable返回。 举例说明,比如我们有一个函数f(x) = x²,要把这个函数作用在一个list[1, 2, 3, 阅读全文
posted @ 2020-09-04 11:17 Janus_Blog 阅读(160) 评论(0) 推荐(0) 编辑
摘要: python内建的filter()函数用于过滤序列。 和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。 例如,在一个list中,删掉偶数,只保留奇数,可以这 阅读全文
posted @ 2020-09-04 11:14 Janus_Blog 阅读(589) 评论(0) 推荐(0) 编辑
摘要: Python递归算法详解 递归的概念很简单,如果函数包含了对其自身的调用,该函数就是递归的。 递归(Recursion),在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。 在使用递归时,需要注意以下几点: 递归就是在过程或函数里调用自身 必须有一个明确的递归结束条件,称为递归出口。 注意 阅读全文
posted @ 2020-09-04 11:08 Janus_Blog 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 环境安装 使用pip即可安装使用 pip install nb_log 1.功能介绍 0)自动转换print效果,再也不怕有人在项目中随意print,导致很难找到是哪冒出的print。 只要import nb_log, 项目所有的地方的print自动现型并在控制台可点击精确跳转到print的地方。 阅读全文
posted @ 2020-09-04 11:07 Janus_Blog 阅读(570) 评论(0) 推荐(0) 编辑
摘要: sys.argv[]说白了就是一个从外部程序获取参数的桥梁,这个‘外部’很 关键,所以那些试图从代码来说明它作用的解释一直没看 明白。因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说 sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程 阅读全文
posted @ 2020-09-04 11:04 Janus_Blog 阅读(240) 评论(0) 推荐(0) 编辑