第⼀一部分 Python基础篇

1. 为什什么学习Python?

朋友推荐,比较简单易学,生态圈比较强大

发展趋势:人工智能、数据分析

2. 通过什什么途径学习的Python?

廖雪峰、网络博客、相关视频、朋友带

3. Python和Java、PHP、C、C#、C++等其他语⾔言的对⽐比?

解释型语言:python  php(你的程序运行时,一行一行的解释,并运行)

优点:调试代码方便,开发效率高,并且可以跨平台

缺点:运行速度慢

编译型:C,C++,go (一次性,将全部的程序变异成二进制文件,然后运行)

优点:速度快

缺点:开发效率低,不能跨平台

混合型:c#,java

4. 简述解释型和编译型编程语⾔言?

解释型:你的程序运行时,一行一行的解释,并运行

编译型:一次性,将全部的程序变异成二进制文件,然后运行

5. Python解释器器种类以及特点?

1、Cpython(最常用的版本)

Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

2、Jyhton

Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。

3、IronPython

Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)

4、PyPy(特殊)

Python实现的Python,将Python的字节码字节码再编译成机器码。

5、RubyPython、Brython ...

6. 位和字节的关系?

位:bit,表示二进制位(位是计算机内部数据存储的最小单位)

字节:byte 习惯用B表示(字节是计算机处理数据的基本单位,一个字节8个二进制位构成)

1Byte=8bit

7. b、B、KB、MB、GB 的关系?

1B=8bit

1KB=1024B

1MB=1024KB

1GB=1024MB

1TB=1024GB

8. 请⾄至少列列举5个 PEP8 规范(越多越好)。

什么是PEP

PEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书 。

PEP8

译者:本文基于 2013-08-02 最后修改的 PEP8 版本翻译,若要查看英文原文,请参考PEP8

规范:

1.缩进,4个空格的缩进TAB,不要混合空格和TAB键使用

2.每行最大长度79,换行使用反斜杠,最好使用圆括号,换行点要在操作符的后面敲回车

3.类与类之间空两行,类中的方法定义之间空一行;函数内逻辑无关段落空一行,其他尽量不空行

4.import部分,按照标准、三方和自己编写顺序依次排放,直接空一行

5.避免不必要的空格

空格的使用

总体原则,避免不必要的空格。

1 各种右括号前不要加空格。

2 逗号、冒号、分号前不要加空格。

3 函数的左括号前不要加空格。如Func(1)。

4 序列的左括号前不要加空格。如list[2]。

5 操作符左右各加一个空格,不要为了对齐增加空格。

6 函数默认参数使用的赋值符左右省略空格。

7 不要将多句语句写在同一行,尽管使用‘;’允许。

8 if/for/while语句中,即使执行语句只有一句,也必须另起一行。

9. 通过代码实现如下转换:

二进制转换成十进制:v = “0b1111011”

十进制转换成⼆进制:v = 18

八进制转换成十进制:v = “011”

十进制转换成八进制:v = 30

十六进制转换成十进制:v = “0x12”

十进制转换成十六进制:v = 87

10.请编写⼀一个函数实现将IP地址转换成一个整数。

如 10.3.9.12 转换规则为:

10 00001010

3 00000011

9 00001001

12 00001100

再将以上⼆二进制拼接起来计算⼗十进制结果:00001010 00000011 00001001 00001100 = ?

??

11.python递归的最大层数?

998 就会报错

12.求结果:

v1 = 1 or 3

1

v2 = 1 and 3

3

v3 = 0 and 2 and 1

0

v4 = 0 and 2 or 1

1

v5 = 0 and 2 or 1 or 4

1

v6 = 0 or False and 1

False

13.ascii、unicode、utf-8、gbk 区别?

Ascii: 1个字节 支持英文

14.字节码和机器码的区别?

机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。

字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

15.三元运算规则以及应⽤用场景?

三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值

16.列举 Python2和Python3的区别?

编码:2 asscii   3 utf-8

去掉了一些语法 xrange模块 不再有经典类

print 函数

17.用一行代码实现数值交换:

a = 1

b = 2

a,b = b,a

18.Python3和Python2中 int 和 long的区别?

py3中没有long整型,统一使用int,大小和py2的long类似。

py2中int最大不能超过sys.maxint,根据不同平台大小不同;

在int类型数字后加L定义成长整型,范围比int更大。

字符串

python2 字符串是字节

python3 默认是unicode

19.xrange和range的区别?

range产生的是一个列表,xrange产生的是生成器。

数据较大时xrange比range好。

Range一下把数据都返回,xrange通过yield每次返回一个。

20.文件操作时:xreadlines和readlines的区别?

xredilnes:内部通过yield生成一个生成器(python2)一行一行读

redines:读取所有内容  for循环

21.列举布尔值为False的常见值?

0,空列表,空字典,空字符串,空元组

22.字符串、列表、元组、字典每个常用的5个方法?

字符串:upper lower  count  .format  index replace split

列表:

增:append  insert

删:pop

.count() 查看有元素出现的次数

.extend() 批量添加元素

.remove() 移除某个元素

.reverse() 把所有元素顺序倒过来,反转

.sort() 排序

元组:

name_tuple = ('alex','eric')

索引

print(name_tuple[0])

len

print(name_tuple[len(name_tuple)-1])

切片

print(name_tuple[0:1])

for

for i in name_tuple:

print(i)

count:计算元素出现的个数

print(name_tupel.count('alex'))

index:获取指定元素的索引位置

print(name_tupel.index('alex'))

字典:

#定义字典

d={'x':1,'y':12222}

#长度 len(d)

#新增

d['x']=2

print(d)

#遍历print(d.items())

for item in d.items(): #[('x', 1), ('y', 12222)]

print(item) #以元组的形式取出键值对

for k,v in d.items(): #解压键值对

print(k,v)

print(d.keys()) # 获取所有的key

print(d.values()) # 获取所有的values

print(d.itmes()) #获取所有的元素

查找

print(d.get('y'))

print(d.get('y','找不到'))

print(d.get('e','找不到'))

删除键值对

d.pop('x')

print(d)

随机删除键值对

print(d.popitem())

print(d)

清除元素

d.clear()

print(d)

#快速产生字典

d1={}

d2=dict()

d3=dict(x=1,y=2,z=3)

d4=dict({'x':1,'y':2,'z':3})

d5=dict([('x',1),('y',2),('z',3)])

d6={}.fromkeys(['name','age'],None) #把key的值都设置成None,用于创建初始的字典

print(d1,d2,d3,d4,d5,d6)

#更新字典元素,覆盖

d={'name':'alex'}

d1={'name':'alexsb','age':50}

d.update(d1)

print(d)

23.lambda表达式格式以及应用场景?

add=lambda x,y:x+y

print(add(1,2))

24.pass的作用?

pass一般用于占位语句,保持代码的完整性,不会做任何操作

25.*arg和**kwarg作用

动态参数,一般在定义函数是,不知道需要传入几个参数,就可以使用这个来定义参数,然后再这个里面来取

*args:按照位置传参的,将参数打包成一个元组

*kwargs:按照关键字传入参数,将传入的参数打包成一个字典

26.is和==的区别

is:is比较的是内存地址

==:比较的值

27.简述Python的深浅拷贝以及应用场景?

浅拷贝:copy 第一层创建的是新的内存地址,而从第二次开始指向的都是同一个内存地址,第二层及更深层开始与原内存地址相同

深拷贝:deepcopy 两个完全独立,改变一个,另一个不会变

28.Python垃圾回收机制?

引用计数 (对象被引用时+1,引用的对象被删除时-1)

标记清除

分代回收(系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”,垃圾收集的频率随着“代”的存活时间的增大而减小)

python中的垃圾回收是以引用计数为主,分代回收为辅,如果一个对象的引用数为0,python就会回收这个对象的内存.将系统中的所有内存块根据其存活时间化为不同的代,垃圾收集频率随着代的存活时间增大而减少, 也就是说新对象被定义为0代,每次创建新对象时,python会检测0代,满了就开始回收,从0代出发,检测循环引用,释放引用数为0的对象

29.Python的可变类型和不不可变类型?

可变:列表,字典

不可变:元组,字符串,数字

30.求结果:

v = dict.fromkeys(['k1','k2'],[])

v[‘k1’].append(666)

print(v)

v[‘k1’] = 777

print(v)

31.求结果:

答:

32.列举常见的内置函数?

map:接收俩个参数,一个函数,一个可迭代对象,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,

filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

zip

函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

reduce

python3 里面导入functiontools 才可以使用

函数会对参数序列中元素进行累积。

用传给reduce中的函数 function(有两个参数)先对集合中的第1、2个元素进行操作,得到的结果再与第三个数据用function函数运算,最后得到一个结果。

33.filter、map、reduce的作用?

filter:条件过滤筛选

map:接收两参数(一个函数,一个可迭代对象)

reduce:参数累加,一次运算结果的和,与第三个数据进行运算

34.一行代码实现9*9乘法表

print(["%d*%d=%d"%(i,j,i*j) for i in range(1,10)for j in range(1,i+1)])

35.如何安装第三方模块?以及用过哪些第三方模块?

1 可以在pycharm里面的settings里面手动的添加第三方模块,

2 在cmd终端可以使用pip install 安装第三方模块

我用过的第三方模块大概有:requests,pymysql,DBUtils等等

36.至少列举8个常用模块都有那些?

time,os,re,random,json,sys,login

37.re的match和search区别?

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数            返回None;

re.search匹配整个字符串,直到找到一个匹配。

38.什么是正则的贪婪匹配?

贪婪匹配:   匹配1次或多次<.>     匹配0次或多次<.>

非贪婪匹配:匹配0次或1次<.>

39.求结果:

a. [ i % 2 for i in range(10) ]

b. ( i % 2 for i in range(10) )

40.求结果:

a. 1 or 2

1

b. 1 and 2

2

c. 1 < (2==2)

False

d. 1 < 2 == 2

True

41.def func(a,b=[]) 这种写法有什么坑?

如果第二次再调用的时候,之前参数列表里的值会存在迭代

42.如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?

43.如何实现[‘1’,’2’,’3’]变成[1,2,3] ?

44. 比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?

???????

45.如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?

[i*i for i in range(1,11)]

46.一行代码实现删除列表中重复的值 ?

list(set([1, 2, 3, 4, 45, 1, 2, 343, 2, 2]))

47.如何在函数中设置一个全局变量 ?

python中的global语句是被用来声明全局变量的。

48.loging模块的作用?以及应用场景?

模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统

作用:可以了解程序运行情况,是否正常

在程序的出现故障快速定位出错地方及故障分析

49.请用代码简答实现stack 。

class Stack(object):

"""栈"""

def __init__(self):

self.items = []

def is_empty(self):

"""判断是否为空"""

return self.items == []

def push(self, item):

"""加入元素"""

self.items.append(item)

def pop(self):

"""弹出元素"""

return self.items.pop()

def peek(self):

"""返回栈顶元素"""

return self.items[len(self.items)-1]

def size(self):

"""返回栈的大小"""

return len(self.items)

if __name__ == "__main__":

stack = Stack()

stack.push("hello")

stack.push("world")

stack.push("lcg")

print stack.size()

print stack.peek()

print stack.pop()

print stack.pop()

print stack.pop()

50.常用字符串格式化哪几种?

1.占位符  %

%d整数  %f 浮点数   %s 字符串

2.format 通过关键字

51.简述 生成器、迭代器、可迭代对象 以及应用场景?

迭代器:__iter__ 和 __next__方法(包含__next__方法的可迭代对象就是迭代器)

生成器:包含yild关键字,生成器也是迭代器,调动next把函数变成迭代器

可迭对象:  一个类内部实现__iter__方法且返回一个迭代器。

应用场景:

应用场景:

- wtforms中对form对象进行循环时候,显示form中包含的所有字段。

class LoginForm(Form):

name = simple.StringField(

label='用户名',

validators=[

validators.DataRequired(message='用户名不能为空.'),

validators.Length(min=6, max=18, message='用户名长度必须大于%(min)d且小于%(max)d')

],

widget=widgets.TextInput(),

render_kw={'class': 'form-control'}

)

pwd = simple.PasswordField(

label='密码',

validators=[

validators.DataRequired(message='密码不能为空.'),

validators.Length(min=8, message='用户名长度必须大于%(min)d'),

validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}",

message='密码至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符')

],

widget=widgets.PasswordInput(),

render_kw={'class': 'form-control'}

)

form = LoginForm()

for item in form:

print(item)

- 列表、字典、元组

52.用Python实现一个二分查找的函数。

二分查找算法:简单的说,就是将一个列表先排序好,比如按照从小到大的顺序排列好,当给定一个数据,比如3,查找3在列表中的位置时,可以先找到列表中间的数li[middle]和3进行比较,当它比3小时,那么3一定是在列表的右边,反之,则3在列表的左边,比如它比3小,则下次就可以只比较[middle+1, end]的数,继续使用二分法,将它一分为二,直到找到3这个数返回或者列表全部遍历完成(3不在列表中)

优点:效率高,时间复杂度为O(logN);

缺点:数据要是有序的,顺序存储。

li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def search(someone, li):

l = -1

h = len(li)

while l + 1 != h:

m = int((l + h) / 2)

if li[m] < someone:

l = m

else:

h = m

p = h

if p >= len(li) or li[p] != someone:

print("元素不存在")

else:

str = "元素索引为%d" % p

print(str)

search(3, li)  # 元素索引为2

53.谈你对闭包的理解?

bar在foo函数的代码块中定义。我们称bar是foo的内部函数。

在bar的局部作用域中可以直接访问foo局部作用域中定义的m、n变量。

简单的说,这种内部函数可以使用外部函数变量的行为,就叫闭包。

def foo():

m = 3

n = 5

def bar():

a = 4

return m+n+a

return bar

bar = foo()

g=bar()

print(g)

##### 12

54.os和sys模块的作用?

os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;

sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。

55.如何生成一个随机数?

import random

print(random.random()) # 用于生成一个0到1的随机符点数: 0 <= n < 1.0

print(random.randint(1, 1000)) # 用于生成一个指定范围内的整数

56.如何使用python删除一个文件?

import os

file = r'D:\test.txt'

if os.path.exists(file):

os.remove(file)

print('delete success')

else:

print('no such file:%s' % file)

57.谈谈你对面向对象的理解?

从三大特性说起:继承、封装、多态

封装:

起始就是将很多数据封装到一个对象中,类似于把很多东西放到一个箱子中,

如:一个函数如果好多参数,起始就可以把参数封装到一个对象再传递。

在哪里用过:

- django rest framework中的request对象。

- flask中:ctx_context/app_context对象

继承:

如果多个类中都有共同的方法,那么为了避免反复编写,就可以将方法提取到基类中实现,

让所有派生类去继承即可。

在哪里用过?

- 视图

- 版本、认证、分页

多态:

python本身就是多态的,崇尚鸭子模型,只要会呱呱叫的就是鸭子。

def func(arg):

arg.send()

是否继承多继承?

58.Python面向对象中的继承有什么特点?

将多个类共用的方法提取到父类中,子类仅需继承父类,而不必一一实现每个方法。

59.面向对象深度优先和广度优先是什么?

Python的类可以继承多个类,Python的类如果继承了多个类,那么其寻找方法的方式有两种

当类是经典类时,多继承情况下,会按照深度优先方式查找

当类是新式类时,多继承情况下,会按照广度优先方式查找

简单点说就是:经典类是纵向查找,新式类是横向查找

经典类和新式类的区别就是,在声明类的时候,新式类需要加上object关键字。在python3中默认全是新式类

60.面向对象中super的作用?

用于子类继承父类的所有属性和方法

61.是否使用过functools中的函数?其作用是什什么?

装饰器中,functools.waarps():主要用来修复装饰器

62.列举面向对象中带双下划线的特殊方法,如:__new__、__init__

__new__ :生成实例

__init__:生成实例的属性

63.如何判断是函数还是方法?

看他的调用者是谁,如果是类,需要传入一个参数self的值,这时他就是一个函数,

如果调用者是对象,不需要给self传入参数值,这时他是一个方法

from types import MethodType,FunctionType

class Foo(object):

def fetch(self):

pass

Foo.fetch   此时fetch为函数

print(isinstance(Foo.fetch,MethodType))

print(isinstance(Foo.fetch,FunctionType)) # True

obj = Foo()

obj.fetch  此时fetch为方法

print(isinstance(obj.fetch,MethodType)) # True

print(isinstance(obj.fetch,FunctionType))

64.静态方法和类方法区别?

classmethod 类方法  必须有一个指向类对象的引用作为第一个参数

staticmethod  静态方法 可以没有任何参数

65.列举面向对象中的特殊成员以及应用场景

1、__init__:

在类实例化成对象时,会首先调用__init__方法。

__init__的返回值一定要是None

2、__new__:

__new__方法是在一个对象实例化的时候调用的第一个方法,不过一般都是用python默认的一般很少重写,只有当继承的类是一个不可变类型的时候才会去重写,__new__方法,第一个参数是这个类(cls)。

这个方法需要返回一个实例对象,通常是cls实例化的对象,也可以是其他的。

3.__del__:

当对象将要被销毁的时候该方法就会被调用。

4.__dict__:

python中__dict__存储了该对象的一些属性。是一个字典,键为属性名,值为属性值。类和实例分别拥有自己的__dict__,且实例会共享类的__dict__。在__init__中,self.xxx = xxx会把变量存在实例的__dict__中,仅会在该实例中能获取到,而在方法体外声明的,会在class的__dict__中。

5.__dir__:

__dict__与dir()的区别:

dir()是一个函数,返回的是list。dir()用来寻找一个对象的所有属性,包括__dict__中的属性,__dict__是dir()的子集;并不是所有对象都拥有__dict__属性。许多内建类型就没有__dict__属性,如list,此时就需要用dir()来列出对象的所有属性。

6、__getitem__(self,key):

返回键对应的值。

print(obj.["xxx"])

7、__setitem__(self,key,value):

设置给定键的值

obj.["xxx"]=123

8、__delitem__(self,key):

删除给定键对应的元素。

9、__len__():

返回元素的数量

10.__setattr__

如果类自定义了__setattr__方法,当通过实例获取属性尝试赋值时,就会调用__setattr__。常规的对实例属性赋值,被赋值的属性和值会存入实例属性字典__dict__中。

12、__getattr__:实例instance(类名)通过instance.name访问属性name,__getattr__方法一直会被调用,无论属性name是否存在。找不到回去调用父类的__getattr__,如果当前类还定义了__getattr__方法,除非通过__getattr__显式的调用它,或者__getattr__方法出现AttributeError错误,否则__getattr__方法不会被调用了。如果在__getattr__方法下存在通过self.attr访问属性,会出现无限递归错误。类中中定义了__getattr__方法,实例instance获取属性时,都会调用__getattr__返回结果,即使是访问__dict__属性。

13、__call__:

__call__方法用于实例自身的调用:

14、__str__:

用来返回对象的字符串表达式。

15、__mro__:wtform中 FormMeta中继承类的优先级

16、 - metaclass

- 作用:用于指定使用哪个类来创建当前类

- 场景:在类创建之前定制操作

示例:wtforms中,对字段进行排序。

查看当前类继承了哪些类。

__双线方法__

66.1、2、3、4、5 能组成多少个互不相同且无重复的三位数

使用python内置的排列组合函数(不放回抽样排列)

product 笛卡尔积  (有放回抽样排列)

permutations 排列  (不放回抽样排列)

combinations 组合,没有重复  (不放回抽样组合)

combinations_with_replacement 组合,有重复  (有放回抽样组合)

import itertools

print(len(list(itertools.permutations('12345', 3))))  # 60

67.什么是反射?以及应用场景?

反射的核心本质就是以字符串的形式去导入个模块,通过字符串的形式操作对象相关的属性

Django中的 CBV就是基于反射实现的。

68.metaclass作用?以及应用场景?

指定当前类是由那个类创建的

默认为type

- 场景:在类创建之前定制操作

- 示例:wtforms中,对字段进行排序。

69.用尽量多的方法实现单例模式。

应用场景:Django中的admin组件中admin.site()就是由单例模式创建的,其中封装了所有的表对象

1:使用模块

Python的模块就是天然的单例模式。

因为模块在第一次导入时,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,而不会再次执行模块代码。

因此,我们只需把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了。

例如:

class V1(object):

def foo(self)

pass

V1 = V1()

将上面代码保存在文件test.py,要使用时,直接在其他文件中导入此文件中的对象,这个对象既是单例模式的对象

如:from a import V1

2:使用装饰器

def Singleton(cls):

_instance = {}

def _singleton(*args, **kargs):

if cls not in _instance:

_instance[cls] = cls(*args, **kargs)

return _instance[cls]

return _singleton

@Singleton

class A(object):

a = 1

def __init__(self, x=0):

self.x = x

a1 = A(2)

a2 = A(3)

3:使用类

4:基于__new__方法实现

当我们实例化一个对象时,是先执行了类的__new__方法

当:(我们没写时,默认调用object.__new__),实例化对象;然后再执行类的__init__方法,对这个对象进行初始化,所有我们可以基于这个,实现单例模式

70.装饰器的写法以及应用场景。

问题:什么是装饰器?

在对原函数不进行修改时,在函数执行前和执行后添加功能

问题:手写装饰器

import functools

def warpper(func):

@functools.wraps(func)   #不改变原函数属性

def inner(*args,**kwargs):

#执行函数前

return func(*args,**kwargs)

#执行函数后

return inner

# 1. 执行wapper函数,并将被装饰的函数当做参数。 wapper(index)

# 2. 将第一步的返回值,重新赋值给  新index =  wapper(老index)

@warpper   #index=warpper(index)

def index(x):

return x+100

问题:应用场景

django: csrf 内置认证、缓存

flask: 路由、before_request

带参数装饰器:flask:路由

CBV as_view()

71.异常处理写法以及如何主动跑出异常(应用场景)

try:

fh = open("testfile", "w")

try:

fh.write("这是一个测试文件,用于测试异常!!")

finally:

print "关闭文件"

fh.close()

except IOError:

print "Error: 没有找到文件或读取文件失败"

raise抛异常

inputValue=input("please input a int data :")

if type(inputValue)!=type(1):

raise ValueError

else:

print inputValue

72.什么是面向对象的mro

__mro__ wtform中 FormMeta中继承类的优先级

73.isinstance作用以及应用场景?

isinstance(对象,类)  判断这个对象是不是这个类或者这个类的子类的实例化

# # 判断a 属不属于A这个类(可以判断到祖宗类)

class A:

pass

class B(A):

pass

a = A()

b = B()

print(isinstance(b,A)) # ===> True  判断到祖宗类

# 任何与object都是True,内部都继承object

class A:pass

a = A()  # 实例化

print(isinstance(a,object))  #  True

74.写代码并实现:

Given an array of integers, return indices of the two numbers such that they add up to a

specific target.You may assume that each input would have exactly one solution, and you may

not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,

return [0, 1]

????

75.json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?

整数、字符创、字典、列表、bool、None

重写default()

import json

import datetime

dic = {

'k1':123,

'ctime':datetime.datetime.now()

}

class MyJSONEncoder(json.JSONEncoder):

def default(self,o):

if isinstance(o,datetime.datetime):

return o.strftime("%Y-%m-%d")

else:

return super(MyJSONEncoder,self).default(o)

v=json.dumps(dic,cls=MyJSONEncoder)

print(v)

76.json序列列化时,默认遇到中⽂文会转换成unicode,如果想要保留中文怎么办?

json.dumps(xxxx,ensure_ascii=False)

77.什么是断言?应用场景?

assert 是的作用?断言

条件成立(布尔值为True)则继续往下,否则跑出异常,一般用于:满足某个条件之后,才能执行,否则应该跑出异常。

写API的时候,继承GenericAPIView

78.有用过with statement吗?它的好处是什么?

with语句是通过一个上下文管理器定义的方法来对一段程序进行打包执行.这将让常见的try…except…finally模式用法被包装起来以便重复使用

with statement作用:执行完后自动执行__close__方法。

79.使用代码实现查看列举目录下的所有文件。

import os

path = 'C:/'for root, dirs, files in os.walk(path):

print("Root = ", root, "dirs = ", dirs, "files = ", files)

80.简述 yield和yield from关键字。

yield from 从生成器里边嵌套取值

py2: yield

py3: yield/yield from

python包括哪些部分_第一部分 Python基础篇相关推荐

  1. 用python计算复利计算器_第一章 Python简介

    全览: Python的大部分基本特性:如变量.表达式.控制流.函数.生成器.类和输入\输出: Python3和Python2.6的区别:大多数与打印和I/O有关: ------------------ ...

  2. python dict 排序原理_第一章Python数据结构和算法(字典排序)

    字典排序 问题 你想创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序. 解决方案 为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的OrderedDict 类 ...

  3. python 按键精灵脚本_[620]使用Python实现一个按键精灵

    按键精灵想必很多人都玩过,使用录制功能将鼠标和键盘的操作录制下来,录制好后就可以通过回放自动执行之前录制的操作,可以设置重复执行的次数,这样就可以将一些重复的劳动交给脚本自动化去完成.使用Python ...

  4. [Python从零到壹] 四十一.图像处理基础篇之图像采样处理

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  6. [Python从零到壹] 四十.图像处理基础篇之图像量化处理

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  8. Android自动化测试第一季(基础篇)-金阳光-专题视频课程

    Android自动化测试第一季(基础篇)-32195人已学习 课程介绍         Android自动化测试第一季 初级 课程收益     零基础 讲师介绍     金阳光 更多讲师课程      ...

  9. python领域语言教案_第一单元 走进Python 编程世界

    (共17张PPT) 今年一场突如其来的新冠肺炎不仅使得人人带上了口罩,过了一个不一样的寒假,同时也使得我们以不一样的方式开启我们的学习. 同学们你们知道那些人容易得肺炎重症呢? 有基础病的 身体素质差 ...

最新文章

  1. 数组、字符串对象、Math对象
  2. Python 中读取和保存图像方法汇总及其区别
  3. 每天2小时,吃透 985博士总结的这份保姆级TensorFlow + PyTorch笔记(20G高清/PPT/代码)...
  4. 圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单
  5. redis-cli报错:(error) MOVED 12706 (未以集群模式连接)
  6. Unity网格合并_材质合并
  7. 期刊投稿状态_追踪期刊在线系统投稿状态(十七)
  8. outlook两个账号怎么分开存储邮件
  9. 累加数据段中的前3个字型数据
  10. Java常用工具类总结
  11. 心电信号的特征提取、分析与处理
  12. resin 配置java_Resin4配置
  13. IDEA GitToolBox插件安装教程
  14. 计算机音乐谱策马奔腾,策马奔腾简谱
  15. 电子邮件链接格式html主题,html创建电子邮件链接的方法
  16. QCC512x QCC302x 使用I2C驱动外设(Bitserial)
  17. 如何利用python准确预测双色球开奖结果
  18. 嵩天python百度云盘_嵩字取名的含义
  19. php artisan passport,Laravel Passport
  20. 如何添加共享计算机用户,如何设置电脑联机共享

热门文章

  1. FPGA的Veilog HDL语法、框架总结
  2. 学三极管能遇到这篇巧文,我太幸福了!
  3. 「权威发布」2019年大学生电子设计竞赛获奖名单
  4. ubuntu+touch+android,移动操作系统Ubuntu Touch支持安卓应用
  5. 中职高级计算机操作员,计算机操作员专业排行榜
  6. arcgis引用样式无符号_【技术积累】arcgis制图应用:符号制作
  7. mysql5 7选路径_MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径
  8. 阿里云mysql 日志_mysql日志-阿里云开发者社区
  9. python实现矢量分级渲染_OpenLayer3实现分级渲染(初级版本)
  10. 2018年暑假第四次周赛-图论部分题解