python3
Erick_Lv
菜鸡互啄
展开
-
Python中的可变与不可变对象
Python中的可变与不可变对象首先要明确一点,在Python中 ,一切赋值或者函数传值的方式都是靠引用。这与C++不同,C++有传值、传引用和传指针。因为Python不能显式的定义数据类型,而且没有指针,所以默认的都是按引用传递。在Python中,数字、字符串、元组是不可变的,,列表、字典、集合是可变的。可以这么理解,Python是传引用,不可变对象的就是不能改变原来引用的值,那么操作对...原创 2018-03-22 14:52:20 · 694 阅读 · 0 评论 -
Python读写json文件
# -*- coding utf-8 -*-import jsonimport osm = { "message": str("hello")}if not os.path.exists('test.json'): # 不存在就创建 print("create new file") with open('test.json', 'w') as json_f...原创 2018-06-09 18:03:54 · 278 阅读 · 0 评论 -
Python的装饰器
装饰器相当于实现了装饰器模式。在不修改已有函数定义的情况下,增加函数的功能。一个最经典的例子:# 定义一个输出日志的装饰器def logging(func): def wrapper(*args, **kw): print("I am logging %s" % func.__name__) return func(*args, **kw) r...原创 2019-03-16 16:14:16 · 162 阅读 · 0 评论 -
Python的@property使用方法
@property的方式有点类似装饰器,它的核心是为了减少代码量。看下面的代码class Person(object): def __init__(self): self._age = 0 @property def age(self): return self._age @age.setter def age(self...原创 2019-03-16 17:06:42 · 163 阅读 · 0 评论 -
Python的类成员函数、静态函数和成员的函数的比较
从声明方式来看:普通成员函数是最一般的方法,即class Foo: def plain_func(): pass类成员函数是class Foo: @classmethod def class_func(): pass静态函数是class Foo: @staticmethod def static_func(): pass从调用方式来看,普通函数...原创 2019-03-17 20:06:11 · 4963 阅读 · 0 评论 -
PyQt5的信号和槽
给出一个一般的自定义的绑定方式。注意类方法、静态方法和普通方法的区别。如果普通方法作为槽,那么只有绑定了的对应的实例才可以收到信号。其余两个定义后,不需要实例也可以收到。下面的例子中,receiver1无法接收信号。from PyQt5.QtCore import pyqtSignal, QObjectclass Sender(QObject): sendmsg = pyqtSi...原创 2019-03-18 17:26:08 · 638 阅读 · 0 评论 -
PyQt5和Python的多线程
简介Python程序本身没有真正意义的并发多线程,受制于GIL锁。如果实现真正的多线程,需要借助于多进程实现,类Unix平台都提供了fork系统调用,但是Windows平台很难实现多进程。多进程消耗资源比较大,有些情况下,一些轻量级的任务需要借助多进程,比如高I/O、轻计算的任务。threading库是Python封装的高级线程库。但是,如果是使用PyQt5的UI情况下,更建议使用QThrea...原创 2019-03-29 14:58:29 · 3635 阅读 · 1 评论 -
PyQt5的QAction多次响应triggered信号的处理方式
在QMainWindow的模式中,优势会出现出现一次点击QAction,但是响应多次triggered信号的情况,这种方式可以借助异常处理进行过滤: @QtCore.pyqtSlot() def on_yourAction_triggered(self): try: self.actionPVC.triggered.disconnect()...原创 2019-03-30 11:15:15 · 7850 阅读 · 1 评论 -
pyqt5信号与槽连接的生命周期与对象引用的生命周期
pyqt5信号与槽连接的生命周期与对象引用的生命周期,是一致的。举个例子,如果一个变量引用了一个对象,并连接了一个信号,那么如果引用对象发生变化,则原来的连接在新的对象中就不存在了。直接参考代码from PyQt5.QtCore import QObject, pyqtSignalclass Foo: def foo(self): print("Foo")cl...原创 2019-03-28 17:07:58 · 645 阅读 · 0 评论 -
Python命令行解析工具argparse
一般用来解析可选择的参数,比如需要在运行的时候才要进行解析的数据等。下面的代码给出具体应用:import argparseimport sysparse = argparse.ArgumentParser(description='argparse test') # 添加文件描述parse.add_argument('-H', '--host', # 参数的输入方式 ...原创 2018-06-21 17:44:53 · 276 阅读 · 0 评论 -
Python使用twisted包进行网络通信
简介twisted是一个封装好的网络通信的库,可以帮助我们快速进行网络编程。注意,python3中,字符串必须转码成utf8的格式,否则无法发送。比如str("test").encode("utf8")即可服务器server端服务器需要进行如下操作:在某个端口上一直监听客户端的请求接收到客户端请求后,向客户端发出相应的回应 主要分为下面几个步骤:继承protocol...原创 2018-06-06 19:58:37 · 5985 阅读 · 0 评论 -
Python实现回溯指针
Python实现回溯指针Python没有指针的概念,因此不能像C++那样通过指向父结点的指针访问父结点的方法。 比如在树中,要实现指向父结点的指针,C++ 的代码为:#include<iostream>using namespace std;class Node; // 前置声明class Node{public: Node():_n(0),_pare...原创 2018-03-23 13:01:33 · 1407 阅读 · 0 评论 -
Python的迭代器
Python的迭代器什么是迭代器Python的迭代器在for内部通过循环实现。Python的迭代器对象必须实现__iter__()和__next__()方法。 如果我们可以通过迭代器获取一个对象,那么这个对象称为“可迭代的”。很多内置的容器,比如list、tuple、string等,都是可迭代的。通过迭代器进行迭代我们可以使用next()函数对一个迭代器中所有的元素进行迭代...原创 2018-03-24 16:07:59 · 622 阅读 · 0 评论 -
Python的lambda函数
Python的lambda函数什么是lambda函数Python中的匿名函数为lambda函数。一般的函数通过def关键字声明,而匿名函数通过lambda函数声明怎样使用lambda函数lamda函数的语法lambda arguments: expressionlambda函数可以有多个参数,但是只能有一个表达式。表达式被计算后返回。lambda函数可以在任...原创 2018-03-24 17:44:27 · 2614 阅读 · 0 评论 -
Python的生成器
Python的生成器什么是生成器创建python迭代器的过程虽然强大,但是很多时候使用不方便。生成器是一个简单的方式来完成迭代。简单来说,Python的生成器是一个返回可以迭代对象的函数。怎样创建生成器在一个一般函数中使用yield关键字,可以实现一个最简单的生成器,此时这个函数变成一个生成器函数。yield与return返回相同的值,区别在于return返回后,函数状态终...原创 2018-03-24 17:49:14 · 17553 阅读 · 0 评论 -
Python浅拷贝与深拷贝
Python浅拷贝与深拷贝Python中拷贝Python中的赋值号=并不是真正的拷贝,这仅仅是一个引用。参照这篇博客 。必要的时候,我们需要复制值,而不是使用引用。Python中有两种方式:浅拷贝深拷贝。拷贝模块在使用拷贝的时候,我们需要导入copy模块。比如:import copycopy.copy(x) # 浅拷贝copy.deepcopy(x) # 深拷贝...原创 2018-03-24 19:32:47 · 168 阅读 · 0 评论 -
Python变量的作用范围
Python变量的作用范围全局变量在函数外部定义的,可以在该变量后面任何地方调用该变量,那么这个变量就是全局变量。如果不加显示声明,全局与局部变量同名时,全局变量会被隐藏,这和C++类似。局部变量在代码段内部定义的变量,与C++一样的。全局变量与局部变量共存的情况x = "global"def foo(): global x y = "local"...原创 2018-03-24 19:52:25 · 4621 阅读 · 0 评论 -
Python与C++动态链接库交互 win10平台
基础部分请参考dalao写的这篇博客,本篇博客主要学习各类数据的交互。普通数据主要指的是int、float和char之类的,举个例子:在python文件中import ctypeslib = ctypes.cdll.LoadLibrary("D:/360MoveData/Users/Erick/Desktop/Dll/x64/Debug/Dll.dll")print(lib.func...原创 2019-03-28 21:57:08 · 411 阅读 · 0 评论