python内建数据类型有哪些

2020-05-06 14:03发布

2条回答
爱煲汤的小王
2楼 · 2020-05-06 15:03
整型--int,布尔型--bool,字符串--str,列表--list,元组--tuple,字典--dict


给你三个亿
3楼 · 2020-12-09 09:20





技术固然重要,但是我认为更重要的是要从宏观上看待每个事物,将技术与技术串联起起来,才能走的更远。—一个小菜鸟的理解

  1. 使用lambda对list进行排序

  2. list01=[1,0,3,9,5]

  3. res=sorted(list01,key=lambdax:x)

  4. [0,1,3,5,9]

2.列表嵌套元组进行排序

foo=[('zs',19),('ls',19),('ww',20)]

res=sorted(foo,key=lambdax:x[1],reverse=True)#从大到小排序


3.MyISAM与InnoDB区别

1、InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了;2、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用;3、InnoDB支持外键,MyISAM不支持;4、对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引;5、清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表;

4.简述python引用计数机制

python垃圾回收主要以引用计数为主,标记-清除和分代清除为辅的机制,其中标记-清除和分代回收主要是为了处理循环引用的难题。引用计数算法:当有1个变量保存了对象的引用时,此对象的引用计数就会加1当使用del删除变量指向的对象时,如果对象的引用计数不为1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除

5.列举3条以上PEP8编码规范

1、顶级定义之间空两行,比如函数或者类定义。2、方法定义、类定义与第一个方法之间,都应该空一行3、三引号进行注释4、使用Pycharm、Eclipse一般使用4个空格来缩进代码

6.简述乐观锁和悲观锁

悲观锁,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制,乐观锁适用于多读的应用类型,这样可以提高吞吐量

7.Linux命令重定向>和>>

Linux允许将命令执行结果重定向到一个文件

将本应显示在终端上的内容输出/追加到指定文件中

>表示输出,会覆盖文件原有的内容

>>表示追加,会将内容追加到已有文件的末尾


8.python传参数是传值还是传址?

Python中函数参数是引用传递(注意不是值传递)。对于不可变类型(数值型、字符串、元组),因变量不能修改,所以运算不会影响到变量自身;而对于可变类型(列表字典)来说,函数体运算可能会更改传入的参数变量。

9.生成0-100的随机数

importrandom

random.randint(0,100)

int(random.random()*100)

random.choice(range(0,101))


10.HTTP请求中get和post区别

1、GET请求是通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;而POST请求是放在请求头中的,我们是无法直接看到的;2、GET提交有数据大小的限制,一般是不超过1024个字节,而这种说法也不完全准确,HTTP协议并没有设定URL字节长度的上限,而是浏览器做了些处理,所以长度依据浏览器的不同有所不同;POST请求在HTTP协议中也没有做说明,一般来说是没有设置限制的,但是实际上浏览器也有默认值。总体来说,少量的数据使用GET,大量的数据使用POST。3、GET请求因为数据参数是暴露在URL中的,所以安全性比较低,比如密码是不能暴露的,就不能使用GET请求;POST请求中,请求参数信息是放在请求头的,所以安全性较高,可以使用。在实际中,涉及到登录操作的时候,尽量使用HTTPS请求,安全性更好。

11.简述多线程、多进程

进程:1、操作系统进行资源分配和调度的基本单位,多个进程之间相互独立2、稳定性好,如果一个进程崩溃,不影响其他进程,但是进程消耗资源大,开启的进程数量有限制线程:1、CPU进行资源分配和调度的基本单位,线程是进程的一部分,是比进程更小的能独立运行的基本单位,一个进程下的多个线程可以共享该进程的所有资源2、如果IO操作密集,则可以多线程运行效率高,缺点是如果一个线程崩溃,都会造成进程的崩溃应用:IO密集的用多线程,在用户输入,sleep时候,可以切换到其他线程执行,减少等待的时间CPU密集的用多进程,因为假如IO操作少,用多线程的话,因为线程共享一个全局解释器锁,当前运行的线程会霸占GIL,其他线程没有GIL,就不能充分利用多核CPU的优势

12.列出5个python标准库

os:提供了不少与操作系统相关联的函数sys:通常用于命令行参数re:正则匹配math:数学运算datetime:处理日期时间

13.谈下python的GIL

GIL是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大

14.python内建数据类型有哪些

整型–int布尔型–bool字符串–str列表–list元组–tuple字典–dictpython的数据类型分为可变和不可变:可变的有列表,字典,集合等,不可变的有整型,布尔值,字符串,列表,元组等

15.python中断言方法举例

assert()方法,断言成功,则程序继续执行,断言失败,则程序报错

16.10个Linux常用命令

lspwdcdmkdirtouchchmodcpmvrmgreppstopcat

17.lambda表达式

deffun(x):

    returnx**2

lambdax:x**2


18.利用collections库的Counter方法统计字符串每个单词出现的次数

a="kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

fromcollectionsimportCounter

res=Counter(a)

Counter({';':6,

'a':4,

'b':1,

'd':3,

'f':5,

'g':1,

'h':6,

'j':3,

'k':1,

'l':9,

's':2})


19.正则re.complie作用

re.compile是将正则表达式编译成一个对象,加快速度,并重复使用

20.数据库优化查询方法

外键、索引、联合查询、选择特定字段等等

21.简述Django的orm

ORM,全拼Object-RelationMapping,意为对象-关系映射实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要修改代码只需要面向对象编程,orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句,所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite…,如果数据库迁移,只需要更换Django的数据库引擎即可

22.写5条常用sql语句

select*fromXXX;usetable;showtables;showdatabases;deletefromtablenamewhereid=1;desctablename;

23.提高python运行效率的方法

1、使用生成器,因为可以节约大量内存2、循环代码优化,避免过多重复代码的执行3、核心模块用CythonPyPy等,提高效率4、多进程、多线程、协程5、多个ifelif条件判断,可以把最有可能先发生的条件放到前面写,这样可以减少程序判断的次数,提高效率

24.简述mysql和redis区别

redis:内存型非关系数据库,数据保存在内存中,速度快mysql:关系型数据库,数据保存在磁盘中,检索的话,会有一定的Io操作,访问速度相对慢

25.分别从前端、后端、数据库阐述web项目的性能优化

前端优化:1、减少http请求、例如制作精灵图2、html和CSS放在页面上部,javascript放在页面下面,因为js加载比HTML和Css加载慢,所以要优先加载html和css,以防页面显示不全,性能差,也影响用户体验差后端优化:1、缓存存储读写次数高,变化少的数据,比如网站首页的信息、商品的信息等。应用程序读取数据时,一般是先从缓存中读取,如果读取不到或数据已失效,再访问磁盘数据库,并将数据再次写入缓存。2、异步方式,如果有耗时操作,可以采用异步,比如celery3、代码优化,避免循环和判断次数太多,如果多个ifelse判断,优先判断最有可能先发生的情况数据库优化:1、如有条件,数据可以存放于redis,读取速度快2、建立索引、外键等

26.简述cookie和session的区别

1,session在服务器端,cookie在客户端(浏览器)2、session的运行依赖sessionid,而sessionid是存在cookie中的,也就是说,如果浏览器禁用了cookie,同时session也会失效,存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置3、cookie安全性比session差

27.简述any()和all()方法

any():只要迭代器中有一个元素为真就为真all():迭代器中所有的判断项返回都是真,结果才为真

28.IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什么异常

IOError:输入输出异常AttributeError:试图访问一个对象没有的属性ImportError:无法引入模块或包,基本是路径问题IndentationError:语法错误,代码没有正确的对齐IndexError:下标索引超出序列边界KeyError:试图访问你字典里不存在的键SyntaxError:Python代码逻辑语法出错,不能执行NameError:使用一个还未赋予对象的变量

29.数据校验

一般在项目里前后端都要对数据进行校验

30.项目经验

  1. startapp以后第一时间要在settings里注册2.正式环境里DEBUG=False,ALLOWED_HOSTS=[’*’],最好可以自己加上404和500页面3.动静分离采用cdn4.数据库设计要遵循一定的范式,实际设计还是要根据业务需求,比如用户地址,如果后期要统计用户分布在什么地区,就要设计为省,市,县等等,如果没有此需求,就没必要拆5.http无状态可以用token6.学会使用redis,不要一味的用mysql。比如网站首页显示信息,如果更新不频繁的话,就可以用redis,当然,如果首页更新以后要记得删除redis保证数据同步,还有用户购物车的数据们,也可以用redis7.redis使用:可以用Django的cache对象,优点是不用考虑序列化问题,直接存,而且也有一个自动压缩的组件,但是用原生redis就要考虑这个问题,原生redis用hash也可以压缩8.对用户密码采用加密算法存储在数据库9.数据非常宝贵,所以在做删除业务的时候,考虑用is_active来判断10.对于很多校验登录,数据加密,数据缓存等,可以做一个单独的模块,减少代码冗余11.校验登录,数据缓存等都是可以做装饰器,两层,三层的12.对于一些耗时的操作,如发短信发邮件等都可以采用异步发送,比较著名有celery13.真实环境里一般采用nginx进行转发,客户端请求nginx,再由nginx将请求转发uWSGI运行的django,uWSGI是WSGI的一种,它实现了http协议WSGI协议以及uwsgi协议当uwsgi启动后,当前django项目的程序已变成后台守护进程,在关闭当前终端时此进程也不会停止注意:若修改配置,切记重启nginx,修改项目重启uwsgi

  2. abstract=True


相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问