<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dhcsk1396的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dhcsk1396</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dhcsk1396]]></copyright><item><title><![CDATA[Python终端如何输出彩色字体]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292816</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292816</guid><author>dhcsk1396</author><pubDate>Sun, 17 Feb 2019 10:47:00 +0800</pubDate><description><![CDATA[实现过程：
 终端的字符颜色是用转义序列控制的，是文本模式下的系统显示功能，和具体的语言无关。
 转义序列是以ESC开头,即用\033来完成（ESC的ASCII码用十进制表示是27，用八进制表示就是033）。

书写格式：  开头部分：\033[显示方式;前景色;背景色m +结尾部分：\033[0m
  注意：开头部分的三个参数：显示方式，前...]]></description><category></category></item><item><title><![CDATA[pymysql]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292814</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292814</guid><author>dhcsk1396</author><pubDate>Fri, 12 Oct 2018 22:18:00 +0800</pubDate><description><![CDATA[pymsql是Python中操作MySQL的模块，其使用方法和MySQLdb几乎相同。
下载安装
pip3 install pymysql
使用操作
1、执行SQL

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql
  
# 创建连接 port不写则默认
conn = pymysql.conne...]]></description><category></category></item><item><title><![CDATA[mysql]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292813</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292813</guid><author>dhcsk1396</author><pubDate>Fri, 12 Oct 2018 22:17:00 +0800</pubDate><description><![CDATA[视图（不常用）


SELECT
    *
FROM
    (
        SELECT
            nid,
            NAME
        FROM
            tb1
        WHERE
            nid &gt; 2
    ) AS A
WHERE
    A. NAME &...]]></description><category></category></item><item><title><![CDATA[python并发编程之多线程]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292811</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292811</guid><author>dhcsk1396</author><pubDate>Mon, 10 Sep 2018 23:26:00 +0800</pubDate><description><![CDATA[一 threading模块介绍
multiprocess模块的完全模仿了threading模块的接口，二者在使用层面，有很大的相似性，因而不再详细介绍
二 开启线程的两种方式
2.1.1 Thread类直接创建


from threading import Thread
import time
def sayhi(name):
    time.sleep(2)
 ...]]></description><category></category></item><item><title><![CDATA[python之socket编程]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292812</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292812</guid><author>dhcsk1396</author><pubDate>Wed, 05 Sep 2018 23:49:00 +0800</pubDate><description><![CDATA[一 客户端/服务器架构
1.硬件C/S架构(打印机)
2.软件C/S架构
　　互联网中处处是C/S架构
　　如百度是服务端，你的浏览器是客户端（B/S架构也是C/S架构的一种）
　　腾讯作为服务端为你提供视频，你得下个腾讯视频客户端才能看它的视频）
C/S架构与socket的关系：
我们学习socket就是为了完成C/S架构的开发
二 osi七层
引子：
须知一个完整...]]></description><category></category></item><item><title><![CDATA[python软件目录结构规范]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292809</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292809</guid><author>dhcsk1396</author><pubDate>Wed, 05 Sep 2018 12:23:00 +0800</pubDate><description><![CDATA[软件目录结构规范

软件开发规范

一、为什么要设计好目录结构?

1.可读性高: 不熟悉这个项目的代码的人，一眼就能看懂目录结构，知道程序启动脚本是哪个，测试目录在哪儿，配置文件在哪儿等等。从而非常快速的了解这个项目。

2.可维护性高: 定义好组织规则后，维护者就能很明确地知道，新增的哪个文件和代码应该放在什么目录之下。这个好处是，随着时间的推移，代...]]></description><category></category></item><item><title><![CDATA[python包]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292807</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292807</guid><author>dhcsk1396</author><pubDate>Mon, 03 Sep 2018 20:48:00 +0800</pubDate><description><![CDATA[一包介绍

1、什么是包？

官网解释
Packages are a way of structuring Python’s module namespace by using “dotted module names”
包是一种通过使用‘.模块名’来组织python模块名称空间的方式。

具体的：包就是一个包含有__init__.py文件的文件夹，所以...]]></description><category></category></item><item><title><![CDATA[python模块]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292776</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292776</guid><author>dhcsk1396</author><pubDate>Mon, 03 Sep 2018 15:35:00 +0800</pubDate><description><![CDATA[一 模块介绍
1、什么是模块？
模块就是一组功能的集合体，我们的程序可以导入模块来复用模块里的功能。
常见的场景：一个模块就是一个包含了一组功能的python文件,比如spam.py，模块名为spam，可以通过import spam使用。

在python中，模块的使用方式都是一样的，但其实细说的话，模块可以分为四个通用类别：　

　　1 使用python编写的.py文件...]]></description><category></category></item><item><title><![CDATA[python异常处理]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292780</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292780</guid><author>dhcsk1396</author><pubDate>Mon, 03 Sep 2018 12:10:00 +0800</pubDate><description><![CDATA[一 什么是异常
异常就是程序运行时发生错误的信号（在程序出现错误时，则会产生一个异常，若程序没有处理它，则会抛出该异常，程序的运行也随之终止），在python中,错误触发的异常如下

而错误分成两种
1.语法错误（这种错误，根本过不了python解释器的语法检测，必须在程序执行前就改正）
2.逻辑错误
二 异常的种类
在python中不同的异常可以用不同的类型（pytho...]]></description><category></category></item><item><title><![CDATA[python常用模块]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292778</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292778</guid><author>dhcsk1396</author><pubDate>Fri, 31 Aug 2018 23:19:00 +0800</pubDate><description><![CDATA[1time模块
时间表示形式
在Python中，通常有这三种方式来表示时间：时间戳、元组(struct_time)、格式化的时间字符串：
(1)时间戳(timestamp) ：通常来说，时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”，返回的是float类型。
(2)格式化的时间字符串(Format Stri...]]></description><category></category></item><item><title><![CDATA[python面向对象高级]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292810</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292810</guid><author>dhcsk1396</author><pubDate>Thu, 30 Aug 2018 10:48:00 +0800</pubDate><description><![CDATA[一 isinstance(obj,cls)和issubclass(sub,super)
isinstance(obj,cls)检查是否obj是否是类 cls 的对象

class Foo(object):
    pass
  
obj = Foo() 
isinstance(obj, Foo)

issubclass(sub, super)检查sub类是否是 supe...]]></description><category></category></item><item><title><![CDATA[python面向对象之绑定方法与非绑定方法]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292804</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292804</guid><author>dhcsk1396</author><pubDate>Tue, 28 Aug 2018 17:56:00 +0800</pubDate><description><![CDATA[一 类中定义的函数分成两大类
一：绑定方法（绑定给谁，谁来调用就自动将它本身当作第一个参数传入）：
　　　　1. 绑定到类的方法：用classmethod装饰器装饰的方法。
        为类量身定制
        类.boud_method(),自动将类当作第一个参数传入
       （其实对象也可调用，但仍将类当作第一个参...]]></description><category></category></item><item><title><![CDATA[封装与property]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292808</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292808</guid><author>dhcsk1396</author><pubDate>Sun, 26 Aug 2018 20:01:00 +0800</pubDate><description><![CDATA[封装
封装可以理解为一个多功能的自助饮料机器，且机器是不透明密封的，只在下方开了不同的龙头，当顾客需要不同的饮料时，只需要去打开不同的龙头开关即可得到自己想要的饮料，但顾客不知道机器内部是产生不同的饮料的。
在python中，封装可以是类，可以是函数。封装是将数据或属性隐藏在内部，不让外部看到。
在python中用双下划线开头的方式将属性隐藏起来（设置成私有的）
#其实这仅仅这是...]]></description><category></category></item><item><title><![CDATA[python类]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292802</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292802</guid><author>dhcsk1396</author><pubDate>Sat, 25 Aug 2018 12:42:00 +0800</pubDate><description><![CDATA[创建和使用类

创建Dog类，赋予dog蹲下（sit()）和打滚（roll_over()）的能力

class Dog():
    def __init__(self,name,age):
        self.name=name;
        self.age=age;
    def sit(self):
        print(self.name....]]></description><category></category></item><item><title><![CDATA[python的递归与二分法]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292799</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292799</guid><author>dhcsk1396</author><pubDate>Fri, 24 Aug 2018 22:03:00 +0800</pubDate><description><![CDATA[递归
递归:在调用一个函数的过程中，直接或间接地调用了函数本身这个就叫递归
1.必须有个明确的结束条件
2.每次进入更深一层递归时，问题规模相比上次递归应有所减少
3.递归效率不高，递归层次过多会导致栈溢出（在计算机中，函数调用是通过栈(stack)这种数据结构实现的，每当进入一个函数调用，栈就会加一层栈帧，每当函数返回，就栈就会减少一层栈帧。由于栈的大小不是无限的，递归调用的次...]]></description><category></category></item><item><title><![CDATA[python内置函数]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292806</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292806</guid><author>dhcsk1396</author><pubDate>Fri, 24 Aug 2018 16:45:00 +0800</pubDate><description><![CDATA[python内置函数
abs() 绝对值

all() 传进一个可迭代对象，如果对象为空，比如[],' '等，则返回Ture，如果不为空，则需要全部对象为Ture，才返回Ture
例：
print(all([None,0,' ',1]))
#output : False

sum()传进一个可迭代对象，进行求和计算

any()传进一个可迭代对象,如果对象为空，...]]></description><category></category></item><item><title><![CDATA[python生成器表达式]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292803</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292803</guid><author>dhcsk1396</author><pubDate>Fri, 24 Aug 2018 00:50:00 +0800</pubDate><description><![CDATA[生成器表达式
相比列表表达式，将[]换成了()，返回对象不是一个列表，而是一个生成器，相比列表更加省内存
实例1：
列表表达式写法：

l = ['apple%s' % i for i in range(10000)]
print(l)

生成器表达式写法：

g = ('apple%s' % i for i in range(10000)）
for i in g:...]]></description><category></category></item><item><title><![CDATA[python列表生成式]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292794</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292794</guid><author>dhcsk1396</author><pubDate>Fri, 24 Aug 2018 00:24:00 +0800</pubDate><description><![CDATA[列表生成式
会将所有的结果全部计算出来，把结果存放到内存中，如果列表中数据比较多，就会占用过多的内存空间，可能会导致MemoryError内存错误或者导致程序在运行时出现卡顿的情况
实例1：
在数字0-99中，取大于50的数，分为拼接在apple字符串后面，并存到一个列表中
一般的写法：

messi = []
for i in range(100):
    if i ...]]></description><category></category></item><item><title><![CDATA[python协程函数]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292782</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292782</guid><author>dhcsk1396</author><pubDate>Wed, 22 Aug 2018 23:14:00 +0800</pubDate><description><![CDATA[协程函数
实例：

def menu(x):
    print("welcome %s to shaxian restaurant" % x)
    men_list = []
    while True:
        print(men_list)
        food = yield men_list
        print("%s start t...]]></description><category></category></item><item><title><![CDATA[python生成器]]></title><link>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292777</link><guid>https://blog.youkuaiyun.com/dhcsk1396/article/details/102292777</guid><author>dhcsk1396</author><pubDate>Wed, 22 Aug 2018 19:12:00 +0800</pubDate><description><![CDATA[生成器
生成器就是一个函数，这个函数内包含yield这个关键字
生成器与return的区别：
return只能返回一次函数就结束，而生成器可以返回多次值
生成器函数包含一个或者多个yield
当调用生成器函数时，函数将返回一个对象，但是不会立刻向下执行，yield会保存一个状态，下一次运行会在这个位置接着往下运行，直到碰到下一个yield
像__iter__()和__next...]]></description><category></category></item></channel></rss>