
Python编程系列
一许流星
不要在该拼搏的时候选择安逸!
展开
-
python--Python list转为链表
代码即注释如下import sysimport jsonclass ListNode: """ 定义一个节点,包括value 和next指针,指向下一个node """ def __init__(self, x): self.val = x self.next = Nonedef stringToIntegerLis...原创 2020-03-13 17:27:56 · 2226 阅读 · 0 评论 -
关于的if __name__ == '__main__'的详细分析
if __name__ == '__main__'的详细分析: 为啥经常把函数定义写在上面,而函数执行要写在if __name__ == '__main__:的下呢?1. 创建一个demo.py文件# demo.pyprint(__name__)#输出结果:# __mian__2.创建test.py# test.pyimpor...原创 2018-09-09 08:58:07 · 394 阅读 · 0 评论 -
flask应用对象初始化参数的说明
flask应用对象初始化参数的说明1.代码如下from flask import Flask# 创建flask的应用对象# __name__代表当前的模块的名字# flask以这个模块的目录为总目录,默认这个目录的static为静态目录,templates为模板目录# 如果没找到__name__,就会从static中查找,但不要随意写# app = Flask(__name_...原创 2018-09-09 09:04:30 · 1675 阅读 · 0 评论 -
在Python中,输出格式:%d , m , %-6d, d , %.6f的一些区分
和C/C++编程语言一样%d 普通的整数输出i = 1sum = 0while i <= 100: sum += i i += 1print("1到100的和为:%d" % sum)# 1到100的和为:5050%6d 整数输出,整数的宽度是6位,若不足6位,左边补空格 1 i = 1 2 sum = 0 3 while i <=...原创 2018-09-09 09:07:25 · 8807 阅读 · 1 评论 -
urllib.error.URLError urllib.error的处理办法
在使用python发起urlopen的时候会经常出现:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>类型的错误 可能原因分析:Python 2.7.9 之后引入了一个新特性当你u...原创 2018-09-09 10:17:35 · 15560 阅读 · 3 评论 -
selenium库和PhantomJS浏览器的安装与简单使用
selenium库和PhantomJS浏览器的安装与简单使用1.安装selenium包pip install selenium Selenium 可以根据我们的指令,让浏览器自动加载页面, 获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。 Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。 但是我们有...原创 2018-09-09 11:08:49 · 743 阅读 · 0 评论 -
用Python实现冒泡排序算法
1.冒泡排序算法原理# 冒泡排序要排序n个数(假设为升序排列), 由于每遍历一趟只排好一个数字 即把最大数排到最后# 则需要遍历n-1趟,所以最外层循环是要循环n-1次# 每完成一趟遍历后,下趟需要比较的数字就会减少一个# 所以第i趟需要比较的次数为len(list)-i-1,所以第二层循环要遍历是n-1-i次2.详细注释及代码如下:list = [7, 2, 5, 1...原创 2018-09-09 21:50:06 · 5291 阅读 · 2 评论 -
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"
在安装Python库的时候会出现:如下问题error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools最快解决办法: 下载软...原创 2018-09-12 09:20:41 · 269 阅读 · 0 评论 -
with上下文管理器
1.with 语句的执行过程:在执行 with 语句时,首先执行 with 后面的 open 代码执行完代码后,会将代码的结果通过 as 保存到 f 中然后在下面实现真正要执行的操作在操作后面,并不需要写文件的关闭操作,文件会在使用完后自动关闭 2. with 语句的执行原理实际上,在文件操作时,并不是不需要写文件的关闭,而是文件的关闭操作在 with 的上下文管理...原创 2018-09-17 22:14:49 · 354 阅读 · 0 评论 -
Pycharm代码块的设置
1.代码块介绍对于一些经常写的固定的代码,在pycharm中,可以将这些代码添加成一个代码块,只需要输入一个自己的自定义的块名即可自动完成代码的编写 2.系统代码块其实在前面经常用到了一些Pycharm中自带代码块, 比如: 输入super:可以选择super(class_name, self).__init__() 输入main: 可以...原创 2018-09-17 22:30:46 · 3230 阅读 · 0 评论 -
汉字-字母-字节-位之间的转换
在flask框架中使用SQLAlchemy创建模型的时候,设置字段: nick_name = db.Column(db.String(64), unique=True, nullable=False) # 用户昵称 db.String(64) 64位=8个字节=4个汉字 具体换算如下:汉字-字母-字节-位之间的转换:1 Byte = 8 bit...原创 2018-10-14 11:16:56 · 5225 阅读 · 0 评论 -
Django笔记---使用jwt中的token鉴权机制完成状态保持的步骤
1.安装包 djangorestframework-jwt pip install djangorestframework-jwt2.配置drf, jwt过期时间 REST_FRAMEWORK = { ........... # 身份认证的方式:JWT session 'DEFAULT_AUTHENTICATI...原创 2018-10-26 21:53:34 · 1771 阅读 · 0 评论 -
用Python实现希尔排序
1.希尔排序算法思想 将待排序数组按照步长gap进行分组,然后将每组的元素利用直接插入排序的方法进行排序;每次将gap折半减小,循环上述操作;当gap=1时,利用直接插入,完成排序。2.实质希尔排序是基于插入排序的以下两点性质而提出改进方法的: 1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。 2.但插入排序一般来说是低效...原创 2018-11-11 22:10:29 · 759 阅读 · 2 评论 -
python编程系列---tcp客户端的简单实现
实现流程如下:"""TCP客户端实现流程1. 创建一个tcp 客户端对象2. 与服务端建立连接3. 通过tcp socket 收发数据4. 关闭连接关闭tcp"""代码如下: 1 from socket import * 2 3 def main(): 4 # 1.创建tcp_client_socket 套接字对象 5 tcp_client...原创 2018-08-05 20:49:00 · 411 阅读 · 0 评论 -
python编程系列---tcp服务端的简单实现
流程如下:"""tcp服务端创建流程1. 创建服务端的tcp socket : server_socket 用于监听客户端的请求2. 绑定端口3. server_socket开启监听,由主动连接模式变为被动接受模式4. 等待接收客户端的请求, 一有连接,则立即响应,且创建一个与客户端对接的socket,用该socket与客户端通信5. 使用新创建的socket与客户端通信6. 关闭...原创 2018-08-05 21:40:00 · 288 阅读 · 0 评论 -
Python编程系列---使用字典实现路由静态路由
1 def index(): 2 print('Index Page....') 3 4 def bbs(): 5 print('BBS Page....') 6 7 def login(): 8 print('Login Page....') 9 10 def center():11 print('Center Page....')1...原创 2018-08-27 17:05:00 · 555 阅读 · 0 评论 -
Python编程系列---获取请求报文行中的URL的几种方法总结
在浏览器访问web服务器的时候,服务器收到的是一个请求报文,大概GET请求的格式大概如下:先随便拿到一个请求报文,蓝色即为我们要获取的GET /index.html HTTP/1.1 Host: www.baidu.comConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1Use...原创 2018-08-27 16:57:00 · 1255 阅读 · 0 评论 -
python编程系列---多个装饰器装饰一个函数的执行流程
首先看一个例子 1 ''' 多个装饰器装饰一个函数 ''' 2 3 # 定义第一个装饰器 4 def set_func1(func): 5 def wrapper1(*args,**kwargs): 6 print('装饰内容开始1') 7 func(*args, **kwargs) 8 print('装饰内容结束1')...原创 2018-08-19 21:53:00 · 310 阅读 · 0 评论 -
Python编程系列---装饰器执行的底层原理及流程
代码中No.1 No.2 ...表示执行流程 1 """No.1 No.2 ...表示执行流程""" 2 3 def set_func(func): # <No.1-1>:func = show---->作用:func 指向原show 函数 , 4 def wrapper(*args, **kwargs): 5 print("装饰器功...原创 2018-08-19 21:16:00 · 257 阅读 · 0 评论 -
Python编程系列---Python中装饰器的几种形式及万能装饰器
根据函数是否传参 是否有返回值 ,可以分析出装饰器的四种形式:形式一:无参无返回值 1 def outer(func): 2 def wrapper(): 3 print("装饰器功能1") 4 ret = func() 5 print("装饰器功能2") return ret 6 retur...原创 2018-08-19 20:37:00 · 270 阅读 · 0 评论 -
python编程系列---白痴女朋友(我没有女朋友!)看了都能懂的TCP/IP协议介绍
前言 早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容;为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议族(Internet Protocol Suite)就是通用协议标准。 因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协...原创 2018-08-13 21:55:00 · 564 阅读 · 0 评论 -
python编程系列---global的使用注意点
global用法虽然很简单,当在函数中要修改全局变量时要使用到,但也要注意一个小问题,看下面的代码: 调用append()方法,只是修改,并不是赋值操作,不需要global提前声明 1 temp_num = [1, 2, 3] 2 3 4 def main(): 5 for i in range(3): 6 temp_num.appent(i)...原创 2018-08-13 21:26:00 · 934 阅读 · 0 评论 -
练习:四种方法实现打印feibo斐波那契数列
刚开始学Python的时候,记得经常遇到打印斐波那契数列了,今天玩玩使用四种办法打印出斐波那契数列方法一:使用普通函数 1 def feibo(n): 2 """ 3 打印斐波那契数列 4 :param n: 输入要打出多少项 5 """ 6 count = 0 # 定义一个计数器 7 num1, num2 = 0, 1 #...原创 2018-08-10 23:54:00 · 1118 阅读 · 0 评论 -
python编程系列---可迭代对象,迭代器和生成器详解
一、三者在代码上的特征1.有__iter__方法的对象就是可迭代类(对象)2.有__iter__方法,__next()方法的对象就是迭代器3.生成器 == 函数+yield 生成器属于迭代器, 迭代器是特殊的可迭代对象 二、各自的执行过程1.可迭代对象执行过程 1.先调用iter()函数: iter(iterable) -> iterator :...原创 2018-08-10 21:27:00 · 223 阅读 · 0 评论 -
python编程系列---args与kwargs详解
args与kwargs详解 1 """ 2 Process([group [, target [, name [, args [, kwargs]]]]]) 3 - target:目标,指向,表示子进程要执行的代码在target指向的函数中 4 - args:可变参数,封装在元组中,传递给target指向的函数 5 - kwargs:关键字参数,封装在字典中,...原创 2018-08-09 10:19:00 · 442 阅读 · 0 评论 -
python编程系列---进程池的优越性体验
1.通过multiprocessing.Process()类创建子进程 1 import multiprocessing, time, os, random 2 3 4 def work(index): 5 """ 6 任务 7 :param index:任务索引号 8 """ 9 start_time = time.time() ...原创 2018-08-09 09:32:00 · 351 阅读 · 0 评论 -
python编程系列---多线程共享全局变量出现了安全问题的解决方法
多线程共享全局变量出现了安全问题的解决方法 当多线程共享全局变量时,可能出现安全问题,解决机制----互斥锁:即在在一段与全局变量修改相关的代码中,假设一个时间片不足以完成全局变量的修改,就在这段代码中加个互斥锁(不是锁整个线程),强行暂停下个时间片的执行,让修改进行到一半的代码能够继续执行完,可以解决安全问题,这就导致还会有一些时间片的浪费,整个程序执行完的总时间的时间少于<2>...原创 2018-08-07 21:41:00 · 1484 阅读 · 0 评论 -
3.如何理解开多线程可以充分利用CPU?
如何理解开多线程可以充分利用CPU? <1>操作系统采用时间片轮转调度算法分配的时间片给每个进程中的线程 <2>操作系统的时间片轮转调度算法分配的时间片 在别的进程中都没有准备好( 比如在访问网络)的时候,自己的主线程也在访问网络,导致这个时间片空闲浪费了,但是当此时这个进程中有多个子线程的时候,而且处于等待时机,这个本来空闲的将要浪费掉的时间片就会分配给这个...原创 2018-08-07 21:36:00 · 3939 阅读 · 0 评论 -
python编程系列---最详细的讲解进程与线程的关系
进程与线程先引入三个比如: cpu---公司 进程---办公室 线程---程序员(我们) 全局变量,内存等资源---公司提供的电脑,桌子等 进程: 操作系统分配程序执行资源的单位线程:进程的一个实体,是CPU调度和分配的单位。 理解: 进程一旦建立,便有了一个主线程与主进...原创 2018-08-07 21:31:00 · 263 阅读 · 0 评论 -
2.单核CPU是如何实现多进程的?
单核cpu之所以能够实现多进程,主要是依靠于操作系统的进程的调度算法 如时间片轮转算法,在早期,举例说明:有5个正在运行的程序(即5个进程) : QQ 微信 有道词典 网易云音乐 chrome浏览器, 操作系统会让单核cpu轮流来运行这些进程,一个进程只运行2ms,这样看起起来就像多个进程同时在运行,从而实现多进程 在<<操作系统>...原创 2018-08-06 16:05:00 · 8493 阅读 · 0 评论 -
案例:tcp协议实现简单的文件下载器(单任务版)
文件下载器客户端 这个版本的只是为了方便回顾一下TCP客服端,服务端的创建流程,缺点就是 服务器一次只能让一个人访问下载,过两个写个使用面向对象写一个多线程版的强化一下. 1 from socket import * 4 def mian(): 5 # 1. 创建套接字 6 tcp_client_scoket = socket(AF_INET,SOCK_ST...原创 2018-08-06 15:47:00 · 329 阅读 · 0 评论 -
Python编程系列---使用装饰器传参+字典实现动态路由
1 # 实现一个空路由表,利用装饰器将url和功能函数的对应关系自动存到这个字典中 2 router_dict = {} 3 4 5 # 定义一个装饰器 6 7 # 再给一层函数定义,用来传入一个参数,这个参数就是访问的页面地址 8 def set_args(url): 9 def set_func(func):10 def wrapper(*a...原创 2018-08-27 17:11:00 · 441 阅读 · 0 评论