博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python小知识点总结
阅读量:5932 次
发布时间:2019-06-19

本文共 2763 字,大约阅读时间需要 9 分钟。

hot3.png

引用

谈下python的GIL

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

python中生成随机整数、随机小数、0--1之间小数方法

随机整数:random.randint(a,b),生成区间内的整数 随机小数:习惯用numpy库,利用np.random.randn(5)生成5个随机小数 0-1随机小数:random.random(),括号中不传参 输入图片说明

避免转义给字符串加哪个字母表示原始字符串?

r , 表示需要原始字符串,不转义特殊字符

列出python中可变数据类型和不可变数据类型,并简述原理

不可变数据类型:数值型、字符串型string和元组tuple

不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址),如下图用id()方法可以打印对象的id

str1='abfdsbcbbdbfsadfsdfs'str2='abfdsbcbbdbfsadfsdfs'print(id(str1))print(id(str2))out:19496817344721949681734472

可变数据类型:列表list和字典dict;

允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

s = "32123423424234234",去重并从小到大排序输出

str1="32123423424234234"a=set(str1)a=list(a)print(a)a.sort(reverse=False)print(a)out:['4', '2', '3', '1']['1', '2', '3', '4']

避免转义给字符串加哪个字母表示原始字符串?

r , 表示需要原始字符串,不转义特殊字符

用lambda函数实现两个数相乘

# -*- coding:utf-8 -*-sum=lambda a,b:a*bprint(sum(4,5))

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

import collectionsstr='fasdfsdasdsfwefadfsdfafrrfasdfasdf'print(collections.Counter(str))

filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# -*- coding:utf-8 -*-a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]def demo(a):    if a%2!=0:        return True    else:        return Falseprint([one for one in filter(demo,a)])

a=(1,)b=(1),c=("1") 分别是什么类型的数据?

a=(1)b=("1")c=(1,)print(type(a),type(b),type(c))#
a=(1,)b=("1",)c=(1,)print(type(a),type(b),type(c))#

正则re.complie作用

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

regex=re.compile("\d+")print(regex.findall("fasdfsdfsdfsd23423423fasdfasdf34r"))

两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]

extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加

  • 直接用+号看上去与用extend()一样的效果,但是实际上是生成了一个新的列表存这两个列表的和,只能用在两个列表相加上
a=[1,2,3,4,5]b=[4,5,6,7,8]print(a+b)print(a.extend(b))

用python删除文件和用linux命令删除文件方法

python:os.remove(文件名) linux: rm 文件名

datetime模块打印当前时间戳

import datetimeprint(datetime.datetime.now().strftime("%Y-%m-%d %H-%M-%S")+"星期:"+str(datetime.datetime.now().isoweekday()))

###写一段自定义异常代码

try:    1/0except BaseException as e:    raise BaseException("不能除0")

正则表达式匹配中,(.)和(.?)匹配区别?(很重要)

(.)是贪婪匹配,会把满足正则的尽可能多的往后匹配 (.?)是非贪婪匹配,会把满足正则的尽可能少匹配

a='fsafdffsfasdfsdf sdaf fasdf fsdf'print("贪婪匹配",re.search("f(.*)f",a))a='fsafdffsfasdfsdf sdaf fasdf fsdf'print("非贪婪匹配",re.search("f(.*?)f",a))贪婪匹配 <_sre.SRE_Match object; span=(0, 32), match='fsafdffsfasdfsdf sdaf fasdf fsdf'>#非贪婪匹配 <_sre.SRE_Match object; span=(0, 4), match='fsaf'>

转载于:https://my.oschina.net/jiansin/blog/1828585

你可能感兴趣的文章
一分钟实现Android遮罩引导视图
查看>>
使用 fastlane 实现自动化打包
查看>>
(五)神经网络入门之构建多层网络
查看>>
分析WordPress中esc_sql函数引起的注入危害
查看>>
第二届网易前端技术大会-启航
查看>>
基于Vert.x和RxJava 2构建通用的爬虫框架
查看>>
bootstrap基本布局
查看>>
老牌语言依然强势,GO、Kotlin 等新语言为何不能破局?
查看>>
RxJava2系列之相较RxJava1的更新之处(二)
查看>>
JavaEE进阶知识学习-----SpringCloud(九)Zuul路由网关
查看>>
浏览器是多进程
查看>>
安全令牌JWT
查看>>
Redux框架之applyMiddleware()讲解
查看>>
“寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
查看>>
基于RxJava2+Retrofit2实现简单易用的网络请求框架
查看>>
iOS自定义对象的读写怎么保证线程安全问题
查看>>
PHPExcel(更新中)
查看>>
Android不透明度对应的16进制值
查看>>
AppDelegate解耦
查看>>
突破Android P非SDK API限制的几种代码实现
查看>>