一个皮球的价格是15元,一个篮球的价格比皮球价格的3倍多8元,一个篮球的价格是多少元?
初中物理电流、电压、电阻阶梯训练
***9. 如图14-2所示,某同学在实验时误把电流表并联在电灯L2的两端,开关闭合后观察到的现象是( )。
****10.如图14-3所示的是由三个电阻和三只电表等元件组成的电路,电表分别测量R1和R2两端的电压及通过R1的电流,请在图中填入相应的电表符号。
*2.在一定的时间内,电流通过导体某一横截面的电量越多,电流就 。电流
*5.某用电器工作时通过的电流是0.2A,它表示1s内通过该用电器的电量是 C。
**11.用电流表测电流时,在无法估计被测电流大小的情况下,可用 来确定所用电流表是否合适或者确定该选用电流表的哪一量程。如果是双量程表,应该先用
A.通过导体的电量越多,电流越大 B.通电时间越长,通过导体的电流越大
C.通电时间越短,电流一定越大 D.电量一定,通电时间越长,电流越小
A.通过导体横载面的电量是1C B.1s内通过导体横截面的电量是lC
C.1s内通过导体横截面的电流 D.任意时间内通过导体横截面的电量是1C
**16.有甲、乙两只电灯,若它们的通电时间之比是2:3,通过乙灯的电量是通过甲灯电量的2倍,则甲、乙两灯中的电流之比是( )。[1.5]
**17.通过某用电器的电流为3×105μA,1h通过该用电器的电量是多少? [1.5]
**18.在8min内通过某电热器的电量为480C,通过它的电流为多大? [1.0]
量程把表的一个接线柱接入电路,再拿电路的一个线头 电流表的另一接线柱。若表的指针不超过量程就固定接好;若表的指针指示偏小,说明在小量程范围内,则再改用
**25.将一电流表串联在某电路中电灯的“前面”或“后面”时,所测的电流是
的。(填“相等”或“不相等”)[0.5]
**26.在用电流表测电路中的电流之前,估计所测的电路中的电流约为0.4~0.5A,所用的电流表有“+”、“0.6A”、“3A”三个接线柱,测量时应把 和 两接线柱接入电路,这样测得的结果较为准确。[1.0]
A.串联电路中的各处电流是不变的 B.串联电路的各处的电流也可能会不等
C.并联电路中干路中的电流一定大于任一支路中的电流
D.并联电路中各支路中的电流一定相等
**30.有关电路中的电流正确的说法是( )。[0.5]
A.电流从正极流出时最大,回到负极时最小
B.自由电子从电源正极流出,经过用电器回到负极
C.在并联电路中,干路上的电流比任一支路上的电流都大
D.在串联电路中,流过用电器的电流比流过导线的电流大
**31.是非判断题:[1.5](1)( )灯泡发光时,通过的电量越多,电流越大。
(2)( )教室里有四盏日光灯,开关其中一盏灯都不影响其它三盏灯,这四盏灯的连接方式是串联或并联。
(3)( )电流从电池的正极流出后逐渐减小。
(4)( )不管何种电流表都必须串联在电路中。
A.电流通过导体的时间越长,电流就越大
B. 通过导体横截面的电量越多,电流就越大
C.在一定时间内通过某一横截面的电量越多,电流就越大
D.电流的大小与通电时间及通过导体横截面的电量均无关系
C.甲导线中电流是乙导线中电流的2倍 D.条件不足,无法比较电流大小
***39.测得一个灯泡中通过的电流是100mA,那么在3min内通过灯丝横截面的电子数是多少?(查一查一个电子的电量是多少C) [2.5]
***40.若在5min内通过导体横截面的电量是60C,则导体中的电流是多大?如果通电8min,通过该导体横截面的电量是多少?[2.5]
***41.电镀某个零件的过程中,如果通过电路的电量是1680C,电路中的电流是
4×105μA,那么镀这个零件花了多长时间? [2.5]
***42.根据图14-4各图下面电流值的大小,在电流表上画出接线柱并标明电流的方向。[2.5]
A.使用前如果电流表的指针没有指在表盘上的“0”点,要先进行调零
B.电流表要并联在被测电路中
C.当电路中的电流不估计时,要用试触的方法来选定合适的量程
D.绝不允许不经过用电器把电流表接线 柱接到电源的两极上
***46.观察图14-8所示四个电路图,并请填空完成回答:[2.5]
***47.某学生使用电流表时,根据电路中的等待测电流,应选用0~0.6A的量程,但误将“+”和“3”两接线柱接入电路。这样做的结果是( )。[1.0]
C.指点针摆动角度小,会损坏电表 D.指点针摆动角度小,读数不准
***48.电灯L1和L2串联后接入电路,用电流表测电路中的电流,闭合开关后,发现电流表的示数为零,那么可能出现的问题是( )。A.电灯L1被短路 B.电灯L2被短路
***50.用图14-9所示的器材,按要求画出电路图,并用笔画线连接电路。
要求:L1和L2并联,用电流表测出L2中的电流(约1.2A),S作总开关。[3.5]
***56.甲、乙两只灯泡串联在电路中,甲灯比乙灯亮。在相同的时间内,通过两个灯泡的电量Q甲和Q乙相比较应该是( )。[1.0]
***57.把两个灯泡串联后接到电源上,合上开关S后,会发现L1比L2亮,则( )。[1.0]
***59.如图14-17所示的电路,2min通过电流表的电量为
150C,电灯L1中的电流为0.6A。求:(1)通过电灯L2的电流;(2)两分钟通过灯L1的电量。[1.5]
****60.(1)根据电路图14-18,请用笔线把图14-19中的实物连成电路;(2)如果要使电流表测干路中的电流,请你用另一种颜色的笔在实物图14-19上只改动一根连线(删去一根线,重画一根线)实现这一要求。[3.5]
**13.把下列电源和所对应的电压值用直线连接起来:[1.0]
**15.电压表的使用规则是:[1.5]
**16.学校实验室的电压表的三个接线柱标有“+”“3”“15”,实验时,若把“+”“15”两个接线柱接入电路,则表盘上的每个大格表示 V,每个小格表示
**22.电压表与电流表的用法有一定的区别。电压表在连人电路时应与被测电路
**23.电表的读数要做到“两看清”.请完成图14-23中甲、乙两表的读数。[2.0]
A.如果指针示数大于15V,则需要调换接线柱重新试触
B.如果指针示数在3V与15V之间则需要换量程
C.如果指针示数小于3V,则需要换量程
**25.有一只电压表,它有“0~3V”“0~15V”两个量程。要用它来测由三节新干电池串联的电池组的电压,应选用 的量程,用电压表测电压,在读数时应首先确认它的
**26.无论是使用电流表还是电压表,使用前都必须观察指针是否对准 ,如未对准应校正后再使用。将这两种电表连人电路时,必须按规定正确地连接“+”“-”接线柱,否则会 ,损坏电表。[1.0]
A.导体中有大量的自由电荷,只要导体构成能路导体中就有电荷通过
B.电路两端只要有电压,就会有电流
C.电压的作用是使负极上聚集的负电荷通过电路流向正极
D.电压使电路中形成电流
***29.在用电流表测通过电灯的电流时,如图14-25所示,电流表接线柱的选择方法中正确的是( )。[1.5]
***30.把两个同样的小灯泡串联后接到电源上,如图14-26。闭合开关后发现灯L1亮,L2不亮。出现的故障是( )。[1.5]
C.保持电路两端有一定的电压,使电路中有持续的电流 D.以上说法都正确
***35.如图14-28所示的电路中,当开关S合上时,
***37.在图14-29所示各电路图中的“○”内填上合适的电表(电流表或电压表)符号,并标明它们的正、负接线柱。[3.5]
***49.电灯L1与L2串联,用电流表测L1中的电流,用电压表测L2两端的电压,请在虚线框内画出电路图。[2.0]
***50.甲、乙两灯连入同一电路中,若1min内通过甲灯的电量是30C,通过乙灯的电量是45C,则甲、乙两灯( )。[1.0]
C.可能是串联,也可能是并联 D.无法确定连接方式
***52.将图14- 42连成电路,要求Ll、L2串联,用电压表测灯L2的电压。将图14-43连成电路,要求里L1、L2并联,电压表测Ll两端电压。[3.5]
A.电压表的示数为电源电压 B.电流表的示数特别大
****56.如图14-47,电源电压保持不变。当开关S1闭合、S2断开时,电压表的示数是3V;当S1断开、S2闭合时,电压表的示数为4.5V;则当Sl、S2都断开时L1、L2两端的电压分别是
****62.在图14-53和图14-54电路中的圆圈内填上电流表或电压表的符号,并标出正、负接线柱。[2.5]
A. 可知电源电压为6VB.可知L1两端电压为2.6V
C.将电压表V2换成电流表,则L1亮,L2不亮
D.将电压表V2换成电流表,则L1与L2并联,电流表测干路上的电流
**3.课本上“研究决定电阻的大小的因素”的实验,是利用了导体的电阻越大对电流的阻碍作用就越大这一现象来进行研究的。实验时,要保持 不变。当导体的
**6.由镍铬合金制成的A、B两根导线,长度均为1m,A的横截面积是0.5cm2,B的横截面积是3mm2,它们中电阻较小的是 导线。[1.0]
**10.下列关于电阻的几种说法中正确的是( )。[0.5]
A.长导线的电阻比短导线的电阻大 B.粗导线的电阻比细导线的电阻大
C.铁导线的电阻比铜导线的电阻大
D.电阻是导体对电流的阻碍作用,是导体本身的一种属性
**11.某导线长5m,它的电阻为2Ω,将它对折后,并起来使用,则它的电阻将( )。[1.0]
**13.一根铜丝和一根铁丝的横截面积相同,电阻也相等,则它们的长度关系是( )。[1.0]
**14.甲、乙两根铜导线,甲比乙长,乙比甲粗,则它们的电阻相比( )。[1.0]
**15.甲、乙是同种材料制成的粗细相同的两段导线,甲长150cm,乙长180mm,则
**16.甲、乙是同种材料制成的同样长的两根导线,甲导线的横截面积是0.2cm2,乙导线的横截面积是2mm2,则 的电阻较大。[1.0]
C.R1和R2对电流的阻碍作用一样大 D.大小关系无法判断
***20.关于导体电阻的大小,下列说法中正确的是( )。[1.0]
A.粗细相同的两条导线,长的电阻大 B.长度相同的两条导线,细的电阻大
C.同种材料制成的长度相同的两条导线,粗导线的电阻大
D.对于大多数导体来说,当温度升高时,它的电阻就会增大
A.保持一个因素不变,改变其它因素,比较电阻中电流的大小
B.同时变化多个因素,保持其它因素不变,比较每次电阻中电流的大小
C.一次只改变某一因素,保持其它因素不变,比较每次电阻中电流大小
D.保持电阻两端的电压不变,同时改变某一个或几个因素,比较电阻中的电流大小
***24.下列用电器中,不需要变阻器的是( )[0.5]A.普通家用的白炽电灯 B.电视机或收音机
***25.在图14-59的滑动变阻器的四种接法中,当滑片P向左滑动时,电阻变大的是( )。
***26.如图14-60所示的电路,滑动变阻器的滑片向左移动时,若灯始终发光,则( )。
A.灯变亮,电流表示数减小 B.灯变亮,电流表示数增大
C.灯变暗,电流表示数增大 D.灯变暗,电流表示数减小
27.一个滑动变阻器铭牌上标有“50Ω 1.5A”的字样它的意义是( )。
A.电阻的最小值是50Ω,允许通过的最大电流是1.5A
B.电阻的最小值是50Ω,允许通过的最小电流是1.5A
C.电阻的最大值是50Ω,允许通过的最小电流是1.5A
D.电阻的最大值是50Ω,允许通过的最大电流是1.5A
***28.两根长度相等,横截面积不等的同种材料制成的电阻丝串联在电路中,则两根电阻丝中通过的电流( )。A.粗的较大 B.细的较大 C.一样大 D.无法比较
***29.两根相同材料制成的均匀导线,横截面积相同,第一根导线的长是第二导线长的3倍,则第 根导线的电阻大;两根相同材料制成的均匀导线,长度相同,第一根横截面积是第二根的3倍,则第 根导线的电阻小。[1.5]
***30.图14-61是四幅变阻器的示意图,根据图中所接入的两个接线柱回答:当滑动片向右移动时,接入电路中的电阻值是如何变化的?[2.5]
***31.读出图14-62中两电阻箱的示数:
A.镍铬合金的电阻一定比同长度的铜导线的电阻大
B.导体的长度越长,横截面积越小,导体的电阻一定越大
C.一段导体无论是否有电流通过,它的电阻总是存在的
D.一段导体中通过的电流大时电阻小
A.滑动变阻器在一定范围内可以连续改变连入电路的阻值,但不能读出阻值
B.电阻箱不可以连续地改变连入电路的阻值,但可以读出阻值
C.要使变阻器能改变通过用电器的电流,必须将它与用电器串联
D.滑动变阻器的接线柱不分正、负,因而无论怎样接入电路效果都完全一样
***36.用电池组、灯泡、滑动变阻器、电流表、电压表、开关各一只,导线若干,组成一个电路.要求:滑动变阻器能改变灯泡的亮暗,电流表测电路中的电流,电压表测灯泡两端的电压,开关能控制整个电路。请画出符合上述要求的电路图。[3.5]
一个皮球的价格是15元,一个篮球的价格比皮球价格的3倍多8元,一个篮球的价格是多少元?
2.基于用户行为的发爬虫:(同一IP短时间内访问的频率)
3.动态网页反爬虫(通过ajax请求数据,或者通过JavaScript生成)
4.对部分数据进行加密处理的(数据是乱码)
对于基本网页的抓取可以自定义headers,添加headers的数据
使用多个代理ip进行抓取或者设置抓取的频率降低一些,
对部分数据进行加密的,可以使用selenium进行截图,使用python自带的pytesseract库进行识别,但是比较慢最直接的方法是找到加密的方法进行逆向推理。
它是将scrapy框架中Scheduler替换为redis数据库,实现队列管理共享。
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
无头浏览器即headless browser,是一种没有界面的浏览器。既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面而已。
scrapy是一个爬虫通用框架,但不支持分布式,scrapy-redis是为了更方便的实现scrapy分布式爬虫,而提供了一些以redis为基础的组件
因为redis支持主从同步,而且数据都是缓存在内存中,所以基于redis的分布式爬虫,对请求和数据的高频读取效率非常高
在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave),当客户端向从服务器发送SLAVEOF命令,要求从服务器复制主服务器时,从服务器首先需要执行同步操作,也即是,将从服务器的数据库状态更新至主服务器当前所处的数据库状态
采取可读性更强的xpath代替正则 强大的统计和log系统 同时在不同的url上爬行 支持shell方式,方便独立调试 写middleware,方便写一些统一的过滤器 通过管道的方式存入数据库
基于python爬虫框架,扩展性比较差,基于twisted框架,运行中exception是不会干掉reactor,并且异步框架出错后是不会停掉其他任务的,数据出错后难以察觉
requests 是 polling 方式的,会被网络阻塞,不适合爬取大量数据
从start_urls里面获取第一批url发送请求,请求由请求引擎给调度器入请求对列,获取完毕后,调度器将请求对列交给下载器去获取请求对应的响应资源,并将响应交给自己编写的解析方法做提取处理,如果提取出需要的数据,则交给管道处理,如果提取出url,则继续执行之前的步骤,直到多列里没有请求,程序结束。
IO密集型代码(文件处理、网络爬虫等),多线程能够有效提升效率(单线程下有IO操作会进行IO等待,造成不必要的时间浪费,而开启多线程能在线程A等待时,自动切换到线程B,可以不浪费CPU的资源,从而能提升程序执行效率)。在实际的数据采集过程中,既考虑网速和响应的问题,也需要考虑自身机器的硬件情况,来设置多进程或多线程
面对海量待抓取网页,只有采用分布式架构,才有可能在较短时间内完成一轮抓取工作。
它的开发效率是比较快而且简单的。
爬虫下载慢主要原因是阻塞等待发往网站的请求和网站返回
1,采用异步与多线程,扩大电脑的cpu利用率;
Robots协议(也称为爬虫协议、爬虫规则、机器人协议等)也就是robots.txt,网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。因其不是命令,故需要搜索引擎自觉遵守。
现在要处理一个大小为10G的文件,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有那些?
代码将输出[],不会产生IndexError错误,就像所期望的那样,尝试用超出成员的个数的index来获取某个列表的成员。例如,尝试获取list[10]和之后的成员,会导致IndexError。然而,尝试获取列表的切片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。这成为特别让人恶心的疑难杂症,因为运行的时候没有错误产生,导致Bug很难被追踪到。
c. Python2里面继承object的是新式类,没有写父类的是经典类
d. 经典类目前在Python里基本没有应用
第一种方法:使用装饰器
New 是真正创建实例对象的方法,所以重写基类的new 方法,以此保证创建对象的时候只生成一个实例
第三种方法:元类,元类是用于创建类对象的类,类对象创建实例对象时一定要调用call方法,因此在调用call时候保证始终只创建一个实例即可,type是python的元类
遍历在新在列表操作,删除时在原来的列表操作
因为列表总是‘向前移’,所以可以倒序遍历,即使后面的元素被修改了,还没有被遍历的元素和其坐标还是保持不变的
全字母短句 PANGRAM 是包含所有英文字母的句子,比如:A QUICK BROWN FOX JUMPS OVER THE LAZY DOG. 定义并实现一个方法 get_missing_letter, 传入一个字符串采纳数,返回参数字符串变成一个 PANGRAM 中所缺失的字符。应该忽略传入字符串参数中的大小写,返回应该都是小写字符并按字母顺序排序(请忽略所有非 ACSII 字符)
下面示例是用来解释,双引号不需要考虑:
2,当进行修改操作时,可变类型传递的是内存中的地址,也就是说,直接修改内存中的值,并没有开辟新的内存。
3,不可变类型被改变时,并没有改变原内存地址中的值,而是开辟一块新的内存,将原地址中的值复制过去,对这块新开辟的内存中的值进行操作。
is:比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象。是否指向同一个内存地址
== : 比较的两个对象的内容/值是否相等,默认会调用对象的eq()方法
函数作用域的LEGB顺序
python在函数里面的查找分为4种,称之为LEGB,也正是按照这是顺序来查找的
方法一: 利用 str
函数
方法二: 利用 ord
函数
方法四: 结合方法二,使用 reduce
,一行解决
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定nums = [2,7,11,15],target=9 因为 nums[0]+nums[1] = 2+7 =9,所以返回[0,1]
该函数的输入是一个仅包含数字的list,输出一个新的list,其中每一个元素要满足以下条件:
2、该元素在原list中是在偶数的位置(index是偶数)
该列表只包含满足以下条件的值,元素为原始列表中偶数切片
让所有奇数都在偶数前面,而且奇数升序排列,偶数降序排序,如字符串’’,变成’’
正确答案是[9,9,9,9],而不是[0,3,6,9]产生的原因是Python的闭包的后期绑定导致的,这意味着在闭包中的变量是在内部函数被调用的时候被查找的,因为,最后函数被调用的时候,for循环已经完成, i 的值最后是3,因此每一个返回值的i都是3,所以最后的结果是[9,9,9,9]
"""定义一个字符出现次数的函数"""
类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用
类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身;
静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系
A,变量不必事先声明 B,变量无须先创建和赋值而直接使用
C,变量无须指定类型 D,可以使用del释放资源
内存管理机制: 引用计数、垃圾回收、内存池
引用计数:引用计数是一种非常高效的内存管理手段,当一个Python对象被引用时其引用计数增加1,
当其不再被一个变量引用时则计数减1,当引用计数等于0时对象被删除。弱引用不会增加引用计数
引用计数也是一种垃圾收集机制,而且也是一种最直观、最简单的垃圾收集技术。当Python的某个对象的引用计数降为0时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾了。比如某个新建对象,它被分配给某个引用,对象的引用计数变为1,如果引用被删除,对象的引用计数为0,那么该对象就可以被垃圾回收。不过如果出现循环引用的话,引用计数机制就不再起有效的作用了。
内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。
有__del__()
函数的对象间的循环引用是导致内存泄露的主凶。不使用一个对象时使用: del object 来删除一个对象的引用计数就可以有效防止内存泄露问题。
通过Python扩展模块gc 来查看不能回收的对象的详细信息。
可以通过 sys.getrefcount(obj) 来获取对象的引用计数,并根据返回值是否为0来判断是否内存泄露
read 读取整个文件
readlines 读取整个文件到一个迭代器以供我们遍历
散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表
函数重载主要是为了解决两个问题。
另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。
好吧,那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。
那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。
好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。
1.函数设计要尽量短小
2.函数声明要做到合理、简单、易于使用
3.函数参数设计应该考虑向下兼容
4.一个函数只做一件事情,尽量保证函数语句粒度的一致性
Python的参数传递有:位置参数、默认参数、可变参数、关键字参数。
函数的传值到底是值传递还是引用传递、要分情况:
不可变参数用值传递:像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可变对象。
可变参数是引用传递:比如像列表,字典这样的对象是通过引用传递、和C语言里面的用指针传递数组很相似,可变对象能在函数内部改变。
缺省参数指在调用函数的时候没有传入参数的情况下,调用默认的参数,在调用函数的同时赋值时,所传入的参数会替代默认参数。
*args是不定长参数,它可以表示输入参数是不确定的,可以是任意多个。
**kwargs是关键字参数,赋值的时候是以键值对的方式,参数可以是任意多对在定义函数的时候
不确定会有多少参数会传入时,就可以使用两个参数
Python中一切皆对象,函数名是函数在内存中的空间,也是一个对象
在编写代码时只写框架思路,具体实现还未编写就可以用pass进行占位,是程序不报错,不会进行任何操作。
答:10对于字符串,数字,传递是相应的值
回调函数是把函数的指针(地址)作为参数传递给另一个函数,将整个函数当作一个对象,赋值给调用的函数。
内建类型:布尔类型,数字,字符串,列表,元组,字典,集合
输出字符串’a’的内建方法
判断一个对象里面是否有name属性或者name方法,返回bool值,有name属性(方法)返回True,否则返回False。
获取对象object的属性或者方法,如果存在则打印出来,如果不存在,打印默认值,默认值可选。注意:如果返回的是对象的方法,则打印结果是:方法的内存地址,如果需要运行这个方法,可以在后面添加括号().
给对象的属性赋值,若属性不存在,先创建再赋值
设计模式是经过总结,优化的,对我们经常会碰到的一些编程问题的可重用解决方案。一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码,反之,设计模式更为高级,它是一种必须在特定情形下实现的一种方法模板。
常见的是工厂模式和单例模式
单例模式应用的场景一般发现在以下条件下:
资源共享的情况下,避免由于资源操作时导致的性能或损耗等,如日志文件,应用配置。
控制资源的情况下,方便资源之间的互相通信。如线程池等,1,网站的计数器 2,应用配置 3.多线程池 4数据库配置 数据库连接池 5.应用程序的日志应用…
装饰器本质上是一个callable object ,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。
在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包。
迭代器是遵循迭代协议的对象。用户可以使用 iter() 以从任何序列得到迭代器(如 list, tuple, dictionary, set 等)。另一个方法则是创建一个另一种形式的迭代器 —— generator 。要获取下一个元素,则使用成员函数 next()(Python 2)或函数 next() function (Python 3) 。当没有元素时,则引发
生成器(Generator),只是在需要返回数据的时候使用yield语句。每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)
区别: 生成器能做到迭代器能做的所有事,而且因为自动创建iter()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出StopIteration异常。
yield就是保存当前程序执行状态。你用for循环的时候,每次取一个元素的时候就会计算一次。用yield的函数叫generator,和iterator一样,它的好处是不用一次计算所有元素,而是用一次算一次,可以节省很多空间,generator每次计算需要上一次计算结果,所以用yield,否则一return,上次计算结果就没了