![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
--------------python基础学习
文章平均质量分 59
有一种宿命叫无能为力
即便梦想依旧遥不可及,我依然矢志不渝的前进
原博客链接:http://blog.csdn.net/wuxiushu
展开
-
python 类中@staticmethod,@classmethod和实例方法
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法(类中的实例方法)。而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。在类方法中,实例方法相信大家都经常使用,所以这里不再赘余。@staticmethod原创 2017-07-02 16:55:15 · 2606 阅读 · 1 评论 -
sys.stdin读取数据
用python尝试了几天的算法题,发现在用sys.stdin读取数据的时候很容易出错,就是while循环和for循环的区别。看下例子(对于输入的一个整数,希望得到整数值。例如:输入31,最后得到的结果为31):使用while循环:继续看for循环:可以发现,使用for循环是对每一行数据都进行迭代,我在这里把自己坑了好久也提醒各位,在用的时候最好直接使用while循环原创 2017-02-11 23:32:50 · 31467 阅读 · 10 评论 -
python2 encode和decode函数说明
字符串编码常用类型:utf-8,gb2312,cp936,gbk等。python中,我们使用decode()和encode()来进行解码和编码在python中,使用unicode类型作为编码的基础类型。即 decode encodestr ---------> unicode --------->str 字符串在Python内部的表示是un转载 2017-02-17 12:37:07 · 3420 阅读 · 0 评论 -
wxpython中当多个按钮响应同一个事件的时候怎么区分
def OnButton2(self, event): x = event.GetEventObject() print(x.GetLabel())OnButton2响应多个按钮,当点击对应按钮以后,GetEventObject方法可以获取和事件相关的控件,按钮控件要用某种方式记录下来通过x.GetLabel()可以获得对应的按钮名称原创 2016-12-29 18:16:40 · 1654 阅读 · 0 评论 -
wxpython计算器框架
#!/usr/bin/python#coding: utf-8import wxclass MyFrame(wx.Frame): "整体框架" # 声明一个类变量 labels = "1 2 3 + 4 5 6 - 7 8 9 * 0 . = /" def __init__(self): super(MyFrame, self).__i原创 2016-12-29 17:16:22 · 602 阅读 · 0 评论 -
python引用和复制
在程序进行像 a = b 这样的赋值时,就会创建一个对b的新引用。对于像数字和字符串这种的不可变对象。这种赋值实际上是创建了b的副本。然而,对于可变对象(如列表和字典)引用行为会完全不同实例代码:(对应的输出已经在相应的行标注)#!/usr/bin/python#coding: utf-8a = [1, 2, 3, 4]b = aprint b is a # b和a是同一原创 2016-11-28 15:10:48 · 883 阅读 · 0 评论 -
python列表与元组的区别
python中,列表和元组都具备索引,切片和连接功能,但是元组中元素不可变(当然,可以通过元组中存放列表的形式实现对元组的改变),某些时候可以忽略元组,只使用列表,但是存在下面一种情况。如果程序要创建大量的小列表(即包含的项小于12个),就会造成内存浪费。这是因为系统会为列表分配稍微多一些内存,以优化添加新项时的操作性能。而由于元组是不可变的,所以它们表示的更为紧凑,不会占据额外的内存空间。原创 2016-11-27 13:07:16 · 469 阅读 · 0 评论 -
python操作数据库出现错误 : Unknown column 'XXXX' in 'where clause'")错误
今天练习的时候,出现了这种坑爹的错误,找了好久,终于知道错误原因了,贴出修改的地方在MySQL数据库中存在中文的字符,python操作数据库的语句如下sql = "select * from tb2 where acctid = %s " % acctid如果出现错误(1054, u"Unknown column '\u5434\u4fee\u6811' in 'where原创 2016-11-16 00:08:50 · 6856 阅读 · 0 评论 -
python装饰器的执行过程
今天看到一句话:装饰器其实就是对闭包的使用,仔细想想,其实就是这回事,今天又看了下闭包,基本上算是弄明白了闭包的执行过程了。其实加上几句话以后就可以很容易的发现,思路给读者,最好自己总结一下,有助于理解。通过代码来说吧。第一种,装饰器本身不传参数,相对来说过程相对简单的#!/usr/bin/python#coding: utf-8# 装饰器其实就是对闭包的使用def dec(fu原创 2016-11-15 00:52:45 · 3556 阅读 · 0 评论 -
python网络初步(TCP)
实现服务器端和客户端互发信息server.py#!/usr/bin/python#coding: utf-8import socketfrom time import ctimehost = "127.0.0.1"port = 21567# 发送的最大的字节流bufsiz = 1024ADDR = (host, port)sock = socket.sock原创 2016-11-30 21:49:58 · 398 阅读 · 0 评论 -
python装饰器的使用
python中编写无参数decoratorPython的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。考察一个@log的定义:def log(f): def fn(x):转载 2016-11-13 14:32:15 · 560 阅读 · 0 评论 -
闭包执行的时候值的传递方式
代码中有问题和问题的解释。#!/usr/bin/python#coding: utf-8# 判断一个人是否及格,如果满分150,则90及格,如果满分100,则60及格# 开始的疑惑:当fun函数执行完以后,对应的val的值就应该消失,但是,# 当下面代码再次调用f(60)的时候(这个f()函数就是fun_c()函数)# 却能够打印出val的值???def fun(val):原创 2016-11-14 23:55:53 · 524 阅读 · 0 评论 -
python中Tkinter做记事本查找框的设计
代码一:主要是实现一些简单的查找的功能,然后输出查找到的内容在什么位置#!/usr/bin/python#coding: utf-8from Tkinter import *root = Tk()text = Text(root)text.pack(expand = YES, fill = BOTH)text.insert(INSERT, "if you can find it原创 2016-11-17 18:54:38 · 1877 阅读 · 0 评论 -
python中Tkinter做记事本退出的设计
#!/usr/bin/python#coding: utf-8'''代码解析:用于退出编辑框的时候,如果要退出,则检查内容是否改变,如果改变,弹出选项框,选择是否保存,如果要保存的话,则把内容进行保存以后再退出。不需要保存就直接退出如果没有改变的话则直接退出即可。还有就是,当每一次执行保存以后,都要让 contents = text.get("1.0", END) 执行一次,获取原创 2016-11-17 13:35:11 · 1704 阅读 · 0 评论 -
python中Tkinter做记事本撤销和恢复的设计
内部已经有了撤销和恢复的方法,但是中间会有一个bug,就是如果没有内容可以撤销或者是没有内容可以恢复,所以要防止bug的产生,还有就是防止一次把之前插入的一行数据全部删除,设置每一次只能删除一个字符。#!/usr/bin/python#coding: utf-8from Tkinter import *root = Tk()text = Text(root, undo = Tru原创 2016-11-17 20:20:38 · 2701 阅读 · 1 评论 -
为什么在Python里推荐使用多进程而不是多线程?
最近在看Python的多线程,经常我们会听到老手说:“Python下多线程是鸡肋,推荐使用多进程!”,但是为什么这么说呢? 要知其然,更要知其所以然。所以有了下面的深入研究: 首先强调背景: 1、GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是转载 2017-02-21 22:04:41 · 8357 阅读 · 2 评论 -
python zip函数
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:1.示例1:x = [1, 2, 3]y = [4, 5, 6]z = [7, 8, 9]xyz = zip(x, y, z)print xyz运行的结果是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]从这个结果可以看原创 2017-02-03 19:22:36 · 329 阅读 · 0 评论 -
python正则表达式
过去在网页解析中,一直使用的都是Xpath,CSS,或者是BS4解析,很少会用到正则,毕竟一个大型网站的前端代码基本上每过一段时间就会更新一次。所以,用正则表达式的话,很容易过段时间就不能正常解析出来想要的结果。相比较来说,在重写的过程中,上面三个所要花费的时间开销比正则要小的多。不过在每次和别人交流的时候,基本上大神都推荐用正则,这个时候难免知其然而不知其所以然。可能是自己的正则用的还不到家,正原创 2017-07-01 22:25:28 · 2369 阅读 · 0 评论 -
python内置函数map/reduce/filter
python有几个内置的函数很有意 思:map/filter/reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是python列表方法的三架马车。filter() 函数:filter 函数的功能相当于过滤器。调用一个布尔函数bool_func来迭代遍历每个seq中的元素;返回一个使bool_seq返回值为true的元素的序列。转载 2017-06-01 20:24:28 · 569 阅读 · 0 评论 -
python list对象中嵌套元组使用sort时的排序方式
在list中嵌套元组,在进行sort排序的时候,产生的是原数组的副本,排序过程中,先根据第一个字段进行从小到大排序,如果第一个字段相同的话,再根据第二个字段进行排序,依次类推,当涉及到字母的时候,是按照字典序进行排序。 如下:a = [(1, 'B'), (1, 'A'), (1, 'C'), (1, 'AC'), (2, 'B'), (2, 'A'), (1, 'ABC')]aa原创 2017-04-24 10:17:30 · 4549 阅读 · 0 评论 -
Python标准库:内置函数slice(stop) slice(start, stop[, step])
本函数是实现切片对象,主要用在切片操作函数里的参数传递。例子:# 返回三个数,第一个是切片的起始位置,第二个是切片的结束位置,第三个是切片的间距>>> myslice = slice(5)>>> mysliceslice(None, 5, None)>>> arr = range(10)>>> arr[0, 1, 2, 3, 4, 5, 6, 7, 8,原创 2017-04-21 20:00:27 · 2800 阅读 · 0 评论 -
python datetime.timedelta对象
datetime.timedelta对象代表两个时间之间的的时间差,两个date或datetime对象相减时可以返回一个timedelta对象。 构造函数:class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])所有转载 2017-04-16 14:08:58 · 10441 阅读 · 0 评论 -
python set集合操作
set集合,是一个无序且不重复的元素集合。定义方式类似字典使用{}创建目前我们学过的数据类型:1.字符串(str),2.整型(int),3.浮点型(float),4,列表(list)5.元组(tuple),6.字典(dict),7.集合(set),8.布尔型(bool)1.集合创建2.集合操作 2.1 set.add 添加元素转载 2017-04-11 09:28:25 · 4073 阅读 · 0 评论 -
python的特殊方法__nonzero__
类的__nonzero__方法用于将类转换为布尔值。通常在用类进行判断和将类转换成布尔值时调用。比如语句if A: print 'foo'中就会调用A.__nonzero__()来判断。下面这个程序应该能帮助你理解__nonzero__的作用。class A: def __nonzero__(self): print 'A._nonzero__()' r转载 2017-03-21 23:26:53 · 1589 阅读 · 0 评论 -
TypeError: unhashable type: 'list'
在使用list创建set的时候,一直出现TypeError: unhashable type: 'list',这种错误,检查代码,并没有出错,只可能是有些未知的错误,之前可能没有遇到过,百度后发现,原来是hash错误,就是list中的值不能hash。但是,set的创建也需要使用list,只能够在声明的时候直接使用list创建可以。>>> s = set(range(1, 10))>>> s原创 2017-03-12 13:55:33 · 60399 阅读 · 2 评论 -
Python 模块学习:random 随机数生成
Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。random.randomrandom.random()用于生成一个0到1的随机符点数: 0 random.uniformrandom.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范转载 2017-03-12 13:36:21 · 1186 阅读 · 0 评论 -
Python中time模块详解
在Python中,与时间处理有关的模块就包括:time,datetime以及calendar。这篇文章,主要讲解time模块。在开始之前,首先要说明这几点:在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。U转载 2017-03-12 13:23:57 · 75201 阅读 · 8 评论 -
python多线程中daemon的属性方法
我们看官方介绍是这样的:意思就是说:这个属性为一个布尔值,表示是否为一个守护进程,且这个属性设置必须在线程的start方法开始之前调用。它的值继承自主线程,主线程的daemon为False且所有从主线程创建的线程都是daemon = False 。下面一句说明了,python主程序只有在没有非守护线程的时候才会退出。我在用多线程的时候和看这些介绍的时候2个疑惑:1.有的多线转载 2017-03-12 00:40:07 · 2074 阅读 · 0 评论 -
Python中的GIL
什么是GILPython官方解释器(即,CPython解释器)在内部并不是线程安全的,因此它有一个全局解释器锁(GIL),它使得在任何时刻都只有一个线程在执行Python字节码。这也是使得标准版本的Python并不能实现真正的多线程并发的直接原因。简单来说就是,一个Python进程永远不能在同一时刻使用多个CPU核心。喜欢Python读者君可以加我们Python学习交流 3转载 2017-03-11 21:13:01 · 683 阅读 · 0 评论 -
python中staticmethod classmethod及普通函数的区别
staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象(python里光说对象总是容易产生混淆, 因为什么都是对象,包括类,而实际上类实例对象才是对应静态语言中所谓对象的东西)来调用而已, 不会隐式地传入任何参数。这个和静态语言中的静态方法比较像。classmethod 是和一个class相关的方法,可以通过类或类实例调用,并将该class对象(不是class转载 2017-03-10 09:48:08 · 581 阅读 · 0 评论 -
使用python内置smtplib模块发送邮件
注意授权码的获取,登录邮箱的密码必须是授权码才可以。#coding: utf-8import smtplibimport email.mime.multipartimport email.mime.textmsg = email.mime.multipart.MIMEMultipart()''''' 最后终于还是找到解决办法了:邮件主题为‘test’的时候就会出现错误,换成其他原创 2017-03-08 11:23:23 · 932 阅读 · 0 评论 -
坑爹的python2编码问题
本人python小白,每次碰见编码问题都会头大,一直苦于找出解决的好的方法。今天在学习Django的时候,又碰见了这种问题,用了一个多小时,终于成功解决了,下面贴一下解决方法,不知道是不是适用于所以得python编码问题。首先在,所有的中文字符前面都加上小写的 u ,表明的是Unicode编码,然后,应用的时候,注意修改,在每一个用到的字符后面都加上 .encode(encodi原创 2016-11-02 21:12:00 · 477 阅读 · 0 评论 -
python中property的使用实例
通常我们在访问和赋值属性的时候,都是在直接和类(实例的)的__dict__打交道,或者跟数据描述符等在打交道。但是假如我们要规范这些访问和设值方式的话,一种方法是引入复杂的数据描述符机制,另一种恐怕就是轻量级的数据描述符协议函数Property()。它的标准定义是: + property(fget=None,fset=None,fdel=None,doc=None) + 前面3个参数都是未原创 2016-11-14 19:45:27 · 830 阅读 · 0 评论 -
python中对字典(dict)的迭代
#!/usr/bin/python#coding: utf-8d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }# 迭代dict的键for x in d.keys(): print x# 也可以采用这种方式迭代for x in d.iterkeys(): print x# 迭代dict的值for x i原创 2016-11-14 16:29:19 · 13286 阅读 · 0 评论 -
python中Tkinter模块的简单应用
用turtle(海龟)画图面临的问题就是太慢,即便是以最大的速度也还是太慢了,下面介绍一下Tkinter模块。注意:Tkinter模块在python2中和python3中还是有很大的区别,这里以python2来介绍,主要是一些小的应用。Tk()是用来创建一个基本的窗口,可以在上面添加东西,比如按钮,输入框,或者用来画图的画布等。pack() 显示按钮或者对象,没有这句话的话上面原创 2016-10-26 17:22:37 · 2151 阅读 · 0 评论 -
Tkinter中tearoff的作用
在做笔记本时,认识了tearoff这个菜单选项中的设置,它的值只有0和1,将tearoff设置为1以后,就是表明这个菜单是可以独立出来的,如果是0的话就不可以独立出来。通过代码来演示当设置为0的时候#!/usr/bin/python#coding: utf-8import Tkinterroot = Tkinter.Tk()root.title('菜单练习')menu =原创 2016-11-08 09:54:49 · 11481 阅读 · 3 评论 -
python中bool函数的取值
bool是Boolean的缩写,只有真(True)和假(False)两种取值bool函数只有一个参数,并根据这个参数的值返回真或者假。1.当对数字使用bool函数时,0返回假(False),任何其他值都返回真。>>> bool(0)False>>> bool(1)True>>> bool(-1)True>>> bool(21334)True2.当对字符串使用bool原创 2016-10-25 18:20:27 · 12634 阅读 · 1 评论 -
python中turtle(海龟)模块的简单用法
在执行turtle模块之前。要确保自己的python中已经安装了Tkinter模块。turtle模块可以用来学习计算机是如何在屏幕上画图的。提供了画向量图的方法#!/usr/bin/python#coding: UTF-8import turtleimport time# 调用turtle中的Pen函数创建画布t = turtle.Pen()# 画矩形for i in原创 2016-10-25 13:48:15 · 33596 阅读 · 0 评论 -
python中turtle模块之画个小汽车
#!/usr/bin/python#coding: utf-8import turtleimport timet = turtle.Pen()def fun1(t, x, y): t.forward(x) t.left(y)def fun2(t, x, y): t.forward(x) t.right(y)'''color函数有三个参数第一个参数指定有多少红色原创 2016-10-25 23:46:30 · 9625 阅读 · 0 评论 -
python中turtle模块的练习
主要是对于那些移动控制好,还有就是写代码的时候注意封装,增加代码的可重用性,避免做无用功,代码还可以优化,感兴趣的朋友可以试试#!/usr/bin/python#coding: utf-8import turtleimport timedef fun(s, t): s.up() s.forward(t) s.down()def test1(t, s): t.le原创 2016-10-25 17:39:38 · 1916 阅读 · 0 评论