python基础语法
Python的基本语法
JSon liu
分享一些个人的工作经历和成长历程。
展开
-
python高级编程之线程等待join
1. 线程全局变量数据错误的解决办法:线程同步: 保证同一时刻只能有一个线程去操作全局变量 ;同步: 就是协同步调,按预定的先后次序进行运行2. 线程同步的方式:线程等待(join)互斥锁:https://blog.csdn.net/weixin_45912307/article/details/115601523线程等待和互斥锁都是把多任务改成单任务执行,保证数据的安全和准确性,执行性能下减(同一时刻只能有一个线程去执行任务)3. 线程等待joinimport threading原创 2022-04-14 00:18:37 · 977 阅读 · 0 评论 -
python之key名称相同赋不同value值
# 对相同的key如何设置不同的value值import randomjson = { # "tags":[ # {"tag":"A"}, # {"tag":"BB"}, # {"tag":"ccc"} # ] "tags":[ ]}print("type:%s%s" %(type(json),json))if "tags" in json: if len(json["tags"]):原创 2021-04-22 00:44:54 · 811 阅读 · 0 评论 -
python列表的字符串形式快速转列表形式的4种方式
1. python列表的字符串形式转列表形式方式1:python内置函数eval()方式2:literal_eval方式3:json.loads()方式4:str.strip("[]").split(",")2. 示例代码# -- encoding: utf-8 --# @time: 2021/4/18 12:33# @Author: jsonLiu# @Email: xxxxxxxxx@qq.com# @file: listStrToListimport原创 2021-04-21 23:57:10 · 9169 阅读 · 0 评论 -
python高级编程之死锁
1.死锁定义: 在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源, 就会造成死锁。2.如何避免死锁:以一个固定的顺序来取得锁按照与取得锁相反的顺序释放锁from threading import Thread, Lockimport timelockA = Lock()lockB = Lock()class MyThreading1(Thread): def run(self): if lockA.acquire():原创 2021-04-11 22:27:54 · 663 阅读 · 0 评论 -
python高级编程之描述器类
描述器类: 一个类中,只要出现__get__、__set__、__delete__中的任何一个,该类就被称为描述器类# -- encoding: utf-8 --# @time: 2021/4/6 23:58# @Author: jsonLiu# @Email: xxxxxxxx@qq.com# @file: descriptorclass DescriptorClass(object): def __get__(self, instance, owner):原创 2021-04-11 21:44:04 · 116 阅读 · 0 评论 -
python高级编程之互斥锁
互斥锁定义:互斥锁提供一个可以在同一时间,只让一个线程访问临界资源的的操作接口。互斥锁(Mutex)是个提供线程同步的基本锁。让上锁后,其他的线程如果想要锁上,那么会被阻塞,直到锁释放后(一般会把访问共享内存这段代码放在上锁程序之后),如果在锁释放后,有多个线程被阻塞,此时所有的被阻塞的线程会被设为可执行状态。第一个执行的线程,取得锁的控制权——上锁操作,其他的线程继续阻塞。互斥锁说明:线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。互斥锁为资源引入一个状态:锁定/非原创 2021-04-11 17:00:21 · 344 阅读 · 0 评论 -
python之自定义属性访问
# -- encoding: utf-8 --# @time: 2021/4/6 23:29# @Author: jsonLiu# @Email: xxxxxxx@qq.com# @file: customattributeaccessimport loggingclass CustomAttrVisit(object): def __getattr__(self, item): # 访问属性时,如果属性不存在(出现AttrError),该方法会被触原创 2021-04-09 00:47:19 · 156 阅读 · 0 评论 -
python之装饰器应用场景
1. 装饰器定义:满足闭包条件,装饰器的入参是一个函数,其返回值也是一个函数对象;满足闭包的三个条件:在外部函数中定义了内部函数外层函数返回内层嵌套函数名内层嵌套函数有引用外层非全局变量2. 作用:在不更改原功能函数代码,并且不改变调用方法的情况下为原函数添加新的功能;3. 应用场景(实例)应用1:登录/支付验证import sysimport time# 1. 登录操作isLogin = Falsedef login(): while True:原创 2021-04-06 23:01:49 · 451 阅读 · 0 评论 -
python之context(上下文管理器)
# -- encoding: utf-8 --# @time: 2021/4/5 22:48# @Author: jsonLiu# @Email: 810030709@qq.com# @file: 19contextmanager# with后面跟的是一个上下文管理器对象import loggingimport osclass CustomOpen(object): def __init__(self, file_nam...原创 2021-04-06 21:45:18 · 3055 阅读 · 0 评论 -
python之单例模式
# -- encoding: utf-8 --# @time: 2021/4/5 18:42# @Author: jsonLiu# @Email: xxxxxxx@qq.com# @file: singlepattern""" 1、定义一个类属性,来记录该类是否创建过对象 instance = None 2、在_new_方法中对类属性做判断 - 2.1没有创建过对象。那就创建一个(保存起来),并且修改类属性的值 - 2.2创建过.原创 2021-04-06 21:35:10 · 119 阅读 · 0 评论 -
python内置函数isinstance
1. isinstance(object, className)判断一个对象是一个类的实例还是它的子类的实例如果对象object是className的实例,或者object是className的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。class FatherClass(object): def __init__(self): passclass SonClass(FatherClass): def __i原创 2021-04-05 22:15:07 · 452 阅读 · 0 评论 -
python之timeit统计运行时间模块
1. timeit.timeit(stmt=‘pass’, setup=‘pass’, timer=<default timer>, number=default_number)timeit() 函数有四个参数,每个参数都是关键字参数,都有默认值。stmt:传入需要测试时间的代码,可以直接传入代码表达式或单个变量,也可以传入函数。传入函数时要在函数名后面加上小括号,让函数执行,如 stmt = ‘func()’ 。setup:传入 stmt 的运行环境,如 stmt 中使用到的参数、原创 2021-04-05 00:46:44 · 710 阅读 · 1 评论 -
python2.x time模块的使用
import time# 1. 获取当前时间戳ts = time.time()print "当前时间戳为:", ts# 2. 获取格式化的时间 (星期 月 日 时:分:秒 年份)localtime = time.asctime(time.localtime(time.time()))print "本地时间为:", localtime# 3. 格式化日期 time.strftime(format[, t])print time.strftime("%Y-%m-%d %H:%M:%S",t转载 2021-03-25 00:30:38 · 145 阅读 · 0 评论 -
“_前置单下划线、__前置双下划线、后置单下划线_、__前后置双下划线__” 间区别与应用
https://blog.csdn.net/weixin_45912307/article/details/109610814原创 2020-11-11 01:01:18 · 291 阅读 · 0 评论 -
python高级编程之线程
1.线程概念线程是进程中执行代码的一个分支,线程是cpu调度基本单位。 线程是Python程序中实现多任务的另外一种方式,线程的执行需要cpu调度来完成2. 线程语法导入线程模块import threading线程类Thread参数说明Thread([group [, target [, name [, args [, kwargs]]]]]) group: 线程组,目前只能使用None target: 执行的目标任务名 args: 以元组的方式给执行任务传参原创 2020-10-14 21:47:33 · 193 阅读 · 1 评论 -
python高级编程之进程
文章目录1. 进程概念2. 进程类语法2.进程基本使用3. 解决:主进程退出子进程销毁4. 多进程5. 执行带有参数的任务6. 进程总结:1. 进程概念一个正在运行的程序或软件就是一个进程,是操作系统进行资源分配的基本单位一个程序运行后至少有一个进程,一个进程默认有一个先线程,线程依赖协程。2. 进程类语法Process([group [, target [, name [, args [, kwargs]]]]]) group:指定进程组,目前只能使用None target:执行原创 2020-10-14 21:11:00 · 267 阅读 · 0 评论 -
python高级编程之深拷贝与浅拷贝
python高级编程之深拷贝与浅拷贝1. 浅拷贝: 浅拷贝是对于一个对象的顶层拷贝。简单理解:拷贝了引用,并没有拷贝内容2. 深拷贝: 深拷贝是对于一个对象所有层次的拷贝(递归)3. copycopy.copy 完成浅拷贝copy.deepcopy完成深拷贝-=表示指向引用4. copy.copycopy.copy对于可变类型,会进行浅拷贝copy.copy对于不可变类型(元组),不会拷贝,仅仅是指向5. 引用还是指向如果用copy.copy、copy.deepcopy对一原创 2020-10-08 18:38:01 · 206 阅读 · 0 评论 -
python高级编程之魔术方法
python之常用魔术方法魔术方法1. `__init__(self)` 初始化魔术方法2.`__new__`实例化魔术方法3.`__call__`对象调用方法4. `__del__`析构函数方法5. __str__(self)6. 魔术方法总结魔术方法魔术方法: __名字__()1. __init__(self) 初始化魔术方法触发时机: 初始化对象时触发(不是实例化触发,但是实例化在一个操作中)def 类名(): def __init__(self): self.属性名=属性值原创 2020-10-08 17:17:41 · 252 阅读 · 0 评论 -
python之闭包与装饰器间的关系
1. 闭包1. 条件- 在外部函数中定义了内部函数- 外边函数就是有返回值- 返回值就是:内部函数名- 内部函数引用了外部函数的变量2. 格式def 外部函数(): a = 100 def 内部函数(): print(a) return 内部函数():x = 外部函数() x接收return返回值x() 调用内部函数3. 闭包缺点作用域没有那么直观因为变量不会被垃圾回收所以有一定的内存占用问题4. 闭包作用:可以使用同级作用域读取其他元素的内部变量延长作原创 2020-10-08 16:13:34 · 1237 阅读 · 0 评论 -
python之生成器和迭代器的区别
迭代器和生成器区别:(面试题)生成器通过next()变成迭代器生成器定义:通过yield关键字迭代器定义:被next() 函数调用并不断返回下一个值的对象称为迭代器 Iterator元组、列表、集合、字典、字符串通过iter()转为迭代器...原创 2020-10-08 16:02:42 · 122 阅读 · 0 评论