python学习笔记

最近在学习python,整理了下学习笔记

1.支持中文

#-*-coding:utf-8-*-

"""

我的第一个应用程序

"""

2.折行显示

一行很长时,可以用\符号折行显示

3.注释

单行注释#

多行注释’’’    ‘’’

4.运行入口

不指定 __name__时,从头开始执行

指定__name__时,从__name__处开始执行

如:

if __name__=="__main__":

    doInThread(FlowMisc.RunInsert)

    application.listen(9009)

    tornado.ioloop.IOLoop.instance().start()

5.True与False

在python中,None、任务数值类型中的0,空字符串’’,空元组(),空列表[],空字典{}都被当做False,其他对象均为True

6.字符串有转义字符

当str的内容包含双引号时,可以用单引号定义,当内容包含单引号时,可以用双引号定义

当str中有换行符等特殊字符时,可以直接使用三引号定义,这样就不用去记那些乱七八糟的转义字符了。如:

str1='i am "python"\n'

str2="i am 'python' \r"

str3='''

                   i'm "python"

                   <a href="http://www.sina.com.cn"></a>

         '''

print str1,str2,str3

标准字符串(str)是单字节字符序列,Unicode字符串(unicode)是双字节字符序列,定义Unicode字符串时,需要在引号前面加上一个字符u

7.全局变量

关键字global

举例:

def testList():

         global list

         list=[]

         list.append("test1")

         list.append("test2")

         print list

if __name__=="__main__":

         testList()

         print list

8.列表

8.1赋值

举例

array=[1,2,3]

print array[0]

array[0]='a'

print array

L=[123,'moqian',1.23]

print len(L)

print L[:-1]#不包含最后一个

print L+[4,5,6]#后面追加

输出结果

1

['a', 2, 3]

3

[123, 'moqian']

[123, 'moqian', 1.23, 4, 5, 6]

8.2切片操作

举例

#-*-coding:utf-8-*-

test=['never',1,2,'yes',1,'no','maybe']

print test[0:3]#包括test[0],不包括test[3]

print test[0:6:2]#包括test[0],不包括test[6],而且步长为2

print test[:-1]#包括开始,不包括最后一个

print test[-3:]#抽取最后3个

输出

['never', 1, 2]

['never', 2, 1]

['never', 1, 2, 'yes', 1, 'no']

[1, 'no', 'maybe']

8.3排序与反转

举例

#-*-coding:utf-8-*-

array=[5,2,3,1,8]

array.sort()

for s in array:

         print s

array.reverse()

for s in array:

         print s

输出

1

2

3

5

8

8

5

3

2

1

8.4多维数组

举例

#-*-coding:utf-8-*-

M=[[1,2,3],

         [4,5,6],

         [7,8,9]]

print M[0]

print M[1]

print M[2]

输出

[1, 2, 3]

[4, 5, 6]

[7, 8, 9]

8.5列表解析

举例

#-*-coding:utf-8-*-

M=[[1,2,3],

         [4,5,6],

         [7,8,9]]

col2=[row[1] for row in M]

print col2

col3=[row[1]+1 for row in M]

print col3

colfilter=[row[1] for row in M if row[1]%2==0]

print colfilter

输出

[2, 5, 8]

[3, 6, 9]

[2, 8]

9.字典

9.1字典赋值

举例

#-*-coding:utf-8-*-

dict={"a":"apple","b":"banana","g":"grape","o":"orange"}

print dict

print dict["a"]

#print dict[1] 这种写法是错误的,会报KeyError

输出

{'a': 'apple', 'b': 'banana', 'o': 'orange', 'g': 'grape'}

apple

9.2字典操作(增-删-改)

举例

#-*-coding:utf-8-*-

#字典的添加、删除、修改操作

dict={"a":"apple","b":"banana","g":"grape","o":"orange"}

dict["w"]="watermelon"

print dict

del(dict["a"])

print dict

print dict.pop("b") #删除一个

print dict

dict.clear() #清空

print dict

结果

{'a': 'apple', 'w': 'watermelon', 'b': 'banana', 'o': 'orange', 'g': 'grape'}

{'w': 'watermelon', 'b': 'banana', 'o': 'orange', 'g': 'grape'}

banana

{'w': 'watermelon', 'o': 'orange', 'g': 'grape'}

{}

9.3字典遍历

举例

#-*-coding:utf-8-*-

dict={"a":"apple","b":"banana","g":"grape","o":"orange"}

for k in dict:

         print "dict[%s]="%k,dict[k]

输出

dict[a]= apple

dict[b]= banana

dict[o]= orange

dict[g]= grape

9.4字典key与value

举例

#-*-coding:utf-8-*-

dict={"a":"apple","b":"banana","g":"grape","o":"orange"}

#输出key的列表

print dict.keys()

#输出values的列表

print dict.values()

#测试不存在的键值

if not dict.has_key('f'):

         print '不存在这个键值'

else:

         print D['f']

输出

['a', 'b', 'o', 'g']

['apple', 'banana', 'orange', 'grape']

不存在这个键值

9.5排序

举例

#-*-coding:utf-8-*-

#使用键值,进行排序

dict={"a":"apple","b":"banana","g":"grape","o":"orange"}

print dict

Ks=dict.keys()

print Ks

Ks.sort()

print Ks

for key in Ks:

         print key,"=>",dict[key]

输出

{'a': 'apple', 'b': 'banana', 'o': 'orange', 'g': 'grape'}

['a', 'b', 'o', 'g']

['a', 'b', 'g', 'o']

a => apple

b => banana

g => grape

o => orange

10.元组

元组是写保护的!即元组创建后不能再做任何修改操作。

10.1赋值

举例

#-*-coding:utf-8-*-

tuple_name=("apple","banana","grape","orange")

print tuple_name[0]

for i in tuple_name:

         print i

输出

apple

apple

banana

grape

orange

10.2分片输出

举例

#-*-coding:utf-8-*-

tuple_name=("apple","banana","grape","orange")

print tuple_name[0]

print tuple_name[1]

#牛在支持分片输出

print tuple_name[-1] #输出倒数第一个

print tuple_name[-2] #输出倒数第二个

print tuple_name[1:3]

#我还可以在元组中包含自已

print '-----------------'

tuple=(('t1','t2'),('t3','t4'))

print tuple[0][0]

print tuple[1][0]

print tuple[0]

输出

apple

banana

orange

grape

('banana', 'grape')

-----------------

t1

t3

('t1', 't2')

10.3元组解包

举例

#-*-coding:utf-8-*-

tuple_name=("apple","banana","grape","orange")

a,b,c,d=tuple_name #注意变量个数必须与元组中元素个数一样,否则会报ValueError: too “many values to unpack”

print a,b,c,d

输出

apple banana grape orange

11.集合set

Python中的集合是指无序的、不重复的元素集,类似数学中的集合概念,可对其进行交、并、差、补等逻辑运算。

11.1集合赋值

举例

#-*-coding:utf-8-*-

a=[133,224,2344,2243,22342,224,133,133,989]

b=set(a)

print b

输出

set([224, 2243, 133, 22342, 2344, 989])

11.2集合逻辑运算

举例

#-*-coding:utf-8-*-

a=[133,224,2344,2243,22342,224,133,133,989]

b=set(a)

print b

a=["11","22","33"]

b=["11","33"]

c=set(a)&set(b)

d=set(a)|set(b)

print c

print d

输出

set([224, 2243, 133, 22342, 2344, 989])

set(['11', '33'])

set(['11', '33', '22'])

 

12.元素交换

举例

#-*-coding:utf-8-*-

a=1

b=2

print "a=",a,",b=",b

a,b=b,a

print "a=",a,",b=",b

输出

a= 1 ,b= 2

a= 2 ,b= 1

13.运算符

+、-、*、/、%(求余)、**(求幂)、//(取整除)

14.自增与自减

Python不支持自增与自减运算符,只能这么用x+=1,x-=1

15.三元运算符

Python没有三元运算符,如b?x:y,不过可以用这个来代替print ‘偶数’if x%2==0 else ‘奇数’

16.流程控制

16.1if-elif-else

If、elif、else后面要加:

如果一个流程控制下不做任何事情,记得写一句pass语句,不然Python会报错。

16.2while-for

While XX:

For I inXX:

17.异常

Try-except-finally,抛出异常用raise

举例

#-*-coding:utf-8-*-

try:

         b=1/0

except Exception as e:

    print "except"

    print e

finally:

         print "finally"

 

输出

except

integer division or modulo by zero

finally

 

python的try也支持else语句,如果有一些代码要在try没有发生异常的情况下才执行,就可以把它放在else中。举例

#-*-coding:utf-8-*-

try:

         b=1/2

except Exception as e:

    print "except"

    print e

else:

    print "OK"

finally:

         print "finally"

输出

OK

finally

18.函数

18.1Def定义

举例

#-*-coding:utf-8-*-

import sys

def arithmetic(x=1,y=1,operator="+"):

         result={"+":x+y,"-":x-y,"*":x*y,"/":x/y }

         return result.get(operator)

if __name__=="__main__":

         print arithmetic(1,2)

         print arithmetic(1,2,"-")

输出

3

-1

18.2返回多个值

举例

#-*-coding:utf-8-*-

def testList():

         return "aaa","bbb"

try:

         a,b=testList()

except Exception as e:

         print e

else:

         print a

         print b

try:

         a,b,c=testList()

except Exception as e:

         print e

else:

         print a

         print b

        

try:

         a=testList()

except Exception as e:

         print e

else:

         print a

输出

aaa

bbb

need more than 2 values to unpack

('aaa', 'bbb')

19.类

19.1定义

举例

#-*-coding:utf-8-*-

import sys

def Main():

         class A:pass

         a=A()

         a.x=1

         print a.x

if __name__=="__main__":

         Main()

输出

1

19.2构造函数

__init__,类在实例化时会首先调用这个函数,我们可以通过重写__init__函数,完成变量的初始化等工作。

举例

#-*-coding:utf-8-*-

import sys

class Student:

         __name=""

         def __init__(self,name):

                   self.__name=name

         def getName(self):

                   return self.__name

if __name__=="__main__":

         student=Student("chu")

         print student.getName()

输出

chu

19.3静态变量与私有变量

举例:

#-*-coding:utf-8-*-

import sys

class A:

         #定义静态成员变量

         y=2

         def __init__(self):

                   #定义公共的成员变量

                   self.x=1

                   #定义私有的成员变量

                   self.__z=1

if __name__=="__main__":

         a=A()

         #打印公共的成员变量

         print a.x

         #打印静态成员变量

         print A.y

         #打印私有成员变量出错

         try:

                   print a.__z

         except Exception as e:

                   print e

输出:

1

2

A instance has no attribute '__z'

19.4类中的方法

在类中定义的常规方法的第一个参数总是该类的实例,即self,同时注意在方法中引用类的另一个方法必须使用类名加方法名的形式。

举例:

#-*-coding:utf-8-*-

import sys

class A:

         def prt(self):

                   print "my name is A"

         def reprt(self):

                   A.prt(self)

if __name__=="__main__":

         a=A()

         a.prt()

         a.reprt()

输出

my name is A

my name is A

19.5静态方法

静态方法可以直接被类调用,常规方法不可以,必须先定义类对象才能引用

举例

#-*-coding:utf-8-*-

import sys

class A:

         def prt(self):

                   print "my name is A"

         def reprt(self):

                   A.prt(self)

         @staticmethod

         def prt2():

                   print "我是静态方法"

if __name__=="__main__":

         a=A()

         a.prt()

         a.reprt()

         A.prt2()

输出

my name is A

my name is A

我是静态方法

19.6类的继承

单继承

举例

#-*-coding:utf-8-*-

import sys

class SchoolMember:

         '''Represents any school member.'''

         def __init__(self, name, age):

                   self.name = name

                   self.age = age

                   print'(Initialized SchoolMember: %s)'% self.name

         def tell(self):

                   '''Tell my details.'''

                   print'Name:"%s" Age:"%s"'% (self.name, self.age)

class Teacher(SchoolMember):

         '''Represents a teacher.'''

         def __init__(self, name, age, salary):

                   SchoolMember.__init__(self, name, age)

                   self.salary = salary

                   print'(Initialized Teacher: %s)'% self.name

         def tell(self):

                   SchoolMember.tell(self)

                   print'Salary: "%d"'% self.salary

class Student(SchoolMember):

         '''Represents a student.'''

         def __init__(self, name, age, marks):

                   SchoolMember.__init__(self, name, age)

                   self.marks = marks

                   print'(Initialized Student: %s)'% self.name

         def tell(self):

                   SchoolMember.tell(self)

                   print'Marks: "%d"'% self.marks

if __name__=="__main__":

         t = Teacher('Mrs. Shrividya',40,30000)

         s = Student('Swaroop',22,75)

输出

(Initialized SchoolMember: Mrs. Shrividya)

(Initialized Teacher: Mrs. Shrividya)

(Initialized SchoolMember: Swaroop)

(Initialized Student: Swaroop)

20.模块与包

Python的脚本都是用扩展名为py的文本文件保存的,一个脚本可以单独运行,也可以导入另一个脚本中运行。当脚本被导入运行时,我们将其称为模块(module)。模块是Python组织代码的基本方式。Python的程序是由包(package)、模块(module)和函数组成.包是由一系列模块组成的集合。模块是处理某一类问题的函数和类的集合。

举例

有一个module.py文件如下

#-*-coding:utf-8-*-

myvar="这是一个测试"

在另一个文件中使用module这个模块

#-*-coding:utf-8-*-

import sys

import module #导入module模块

def Main():

       print module.myvar #打印myvar变量

       print dir(module)  #输出模块module所有可以使用的变量

       print module.__file__  #模块所在的文件路径

if __name__=="__main__":

       Main()

输出

这是一个测试

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'myvar']

D:\study\19_python\module.py

21.字符串

21.1字符串读取

举例

#-*-coding:utf-8-*-

import sys

s="moqian"

print s[0]

print s[1]

print s[-1]

print s[-2]

print s[1:3]

print s[2:-2]

print s*3

输出

m

o

n

a

oq

qi

moqianmoqianmoqian

20.2字符串格式化

举例

#-*-coding:utf-8-*-

if __name__=="__main__":

       #格式化字符串

       str1="version"

       num=1.0

       format="%s"%str1

       print format

       format="%s%d"%(str1,num)

       print format

       num=0.85

       format="%.2f%%"%(num*100)

       print format

      

       format="%d%%"%(num*100)

       print format

 

path="hello\tworld\n"

print path

print len(path)

#直接输出转义

path=r"hello\tworld\n"

print path

输出

version

version1

85.00%

85%

hello   world

 

12

hello\tworld\n

 

具体格式说明如下

格式

说明

%%

百分号标记

%c

字符及其ASCII码

%s

字符串

%d

有符号整数(十进制)

%u

无符号整数(十进制)

%o

无符号整数(八进制)

%x

无符号整数(十六进制)

%X

无符号整数(十六进制大写字符)

%e

浮点数字(科学计数法)

%E

浮点数字(科学计数法,用E代替e)

%f

浮点数字(用小数点符号)

%g

浮点数字(根据值的大小采用%e或%f)

%G

浮点数字(类似于%g)

%p

指针(用十六进制打印值的内存地址)

%n

存储输出字符的数量放进参数列表的下一个变量中

20.3字符串替换、分割、大小写转换、去空格等

举例

#-*-coding:utf-8-*-

s='chuguangming'

#字符串替换

print s.find('chu')

print s.replace('chu','***')

#字符串分割

line='aaa,BBB,ccc,ddd'

result= line.split(',')

for s in result:

       print s

#大小写转换

line=line.upper()

print line

#判断是不是字符串

print line.isalnum()

print line.isalpha()

#去除空格

line='aaa,bbb,ccc,ddd\n'

print line.rstrip()

输出

0

***guangming

aaa

BBB

ccc

ddd

AAA,BBB,CCC,DDD

False

False

aaa,bbb,ccc,ddd

20.4字符串常用函数

举例

#-*-coding:utf-8-*-

#查找字符串

sStr1 = 'strchr'

sStr2 = 'r'

nPos = sStr1.index(sStr2)

print '查找字符串:',nPos

#比较字符串

sStr1 = 'strchr'

sStr2 = 'strch'

print "比较字符串:",cmp(sStr1,sStr2)

#扫描字符串是否包含指定的字符

sStr1 = '12345678'

sStr2 = '456'

print '扫描字符串是否包含指定的字符:',len(sStr1 and sStr2)

输出

查找字符串: 2

比较字符串: 1

扫描字符串是否包含指定的字符: 3

 

21.文件IO

21.1创建-写入-读取文件

#-*-coding:utf-8-*-

import sys

#创建文件

context='''hello world

hello china '''

f=file('hello.txt','w')

#写入文件

f.write(context)

#读取文件

f=open("hello.txt")

while True:

       line=f.readline()

       if line:

              print line

       else:

              break

#关闭文件

f.close()

21.2文件读取方式

#-*-coding:utf-8-*-

import sys

#使用readlnes()读取多个行

f=file("hello.txt")

lines=f.readlines()

print 'lines:',lines

for line in lines:

       print 'line,',line

f.close()

#一次性读取

f=open("hello.txt")

context=f.read()

print 'context,',context

f.close()

#读取前5个字节的数据

f=open("hello.txt")

context=f.read(5)

print 'context,',context

#显示当前的位置

print f.tell()

f.close()

输出

lines: ['hello world \n', 'hello china ']

line, hello world

 

line, hello china

context, hello world

hello china

context, hello

5

21.3文件的删除与复制

#-*-coding:utf-8-*-

import sys

import os

import shutil

#复制

shutil.copyfile("hello.txt","hello2.txt")

#删除

if os.path.exists("hello2.txt"):

       os.remove("hello2.txt")

21.4文件与目录重命名

#-*-coding:utf-8-*-

import sys

import os

li=os.listdir(".")

#判断当前目录

print li

if "hello.txt" in li:

       os.rename("hello.txt","hi.txt")

#把后缀名为txt的文件修改为htm

files=os.listdir(".")

for filename in files:

#查找文件名中.所在的位置并把它给pos

       pos=filename.find(".")

       print pos

       #得到.后面的内容

       if filename[pos+1:]=="txt":

              print filename

              newname=filename[:pos+1]+"htm"

              print newname

              os.rename(filename,newname)

21.5文件内容的查找和替换

从文件中查找字符串hello,统计次数,并替换为hi,存到另一个文件中

#-*-coding:utf-8-*-

import sys

import os

import re

f1=open("hello.txt")

f2=file("hello2.txt","w")

count=0

for s in f1.readlines():

       li=re.findall("hello",s)

       print li

       if len(li)>0:

              count=count+li.count("hello")

       f2.write(s.replace("hello","hi"))

print 'count=',count

f1.close()

f2.close()

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值