zoukankan      html  css  js  c++  java
  • python小笔记

      1 python特点
      2     python使用缩进
      3     多个语句在一行使用;分隔
      4     注释为#,多行注释doc string()
      5 cmd的pip安装
      6     pip install selenium #安装
      7     pip list #查看安装了哪些包
      8     pip uninstall selenium #卸载
      9     py -3 -m pip install selenium #python安装在python3.0上
     10     
     11 打印
     12     print("hello"," ","world");
     13     name=input("输入你的名字");
     14     print(name);
     15     
     16 数据类型
     17     整数 int
     18     浮点数 float
     19     布尔值 bool
     20     空值 None
     21     type{a} #查看a的变量类型
     22     
     23 变量赋值(不区分单双引号)
     24     a=100            #int
     25     b="test"        #字符串
     26     x=y=z=1            #多重赋值
     27     x,y,z=1,2,"str" #多元赋值
     28     int(a);str(a);    #类型转换
     29     
     30 运算符
     31     3 * 5                
     32     3 ** 2            #乘方
     33     5 / 2
     34     5%2
     35     "hello"+"world"
     36     10 // 3    ;        #整除,返回值为帧整数部分;
     37 
     38 注释:
     39     单行注释#
     40     多行注释
     41         """
     42         注释内容
     43         """
     44 转义
     45     
     46     
     换行
     47     也可以续行,表示没有输完
     48     
     49 字符串
     50     print("%d(x)是一个数字,%s(y)是一个字符串"%(x,y));
     51     %d(data)打印数字
     52     %s(string)打印字符串
     53     如果无法确定种类种类则用%r
     54     l=[1,2,3]
     55     print("这个列表的内容是%r" % l )
     56     
     57 字符串操作
     58     #比如a="abc";b="cde"
     59     +    字符串连接
     60     *    字符串重复输出 a*2 ,输出aa
     61     []    索引,a[0]="a",a[-1]="c"
     62     [ : ]
     63     in
     64     not in 
     65     r/R
     66     %   格式字符串
     67     
     68 字符串常见函数方法
     69     L=['a','b','c'];
     70         "".join(L)         #拼接成abc
     71         "_".join(L)     #拼接成a_b_c
     72     L="a,b,c"
     73         L.split(",")    #换成list类型,以,分割
     74     str.endswith(obj,beg=0,end=len(string));
     75     
     76     A="abcdefdasd1";
     77         A.find('1');
     78         "_".join(A);     #输出'a_b_c_d_e_f_d_a_s_d_1'
     79         len(A)            #11
     80         A.replace("a","A");#'AbcdefdAsd1'
     81         A.split("a");         #['', 'bcdefd', 'sd1']
     82         A.strip('a');        #左右各处理掉a字符,'bcdefdasd1'
     83         A.startswith('a',0,len(A));     #true
     84         
     85 列表list
     86     赋值、索引
     87         A[1][1]取索引为1的元素中的索引为1的元素
     88     基本操作
     89     切片,从左边开始取值
     90         比如A=[1,2,3,4,5]
     91         A[1:3] 表示取值为A[1],A[2]
     92         A[x:y] 表示取值A[x]到A[y-1]这个范围内
     93         A[0:-2]从最左边取值到最右倒数第二个但不包含这个数,这里就是[1, 2, 3, 4]
     94 
     95 list函数
     96     len(list)
     97     max(list)/min(list)
     98     list(seq) 元祖转换为列表
     99     
    100 list方法
    101     list.append(obj);        列表末尾添加新的对象
    102     list.count(obj);        对指定元素计数
    103     list.extend(seq);        插入序列类的东西到末尾,比如字符串,list
    104     list.index(obj);        找到某个元素的位置
    105     list.insert(index,obj);    在指定位置插入
    106     list.pop(index);        删除某元素
    107     list.remove(obj);        删除某元素
    108     list.reverse();            反序
    109     list.sort();            排序
    110     list.clear();            清空
    111     list.copy();            建立副本
    112     list.strip()         方法用于移除字符串头尾指定的字符(默认为空格)
    113 
    114 
    115 元祖tuple
    116     特色:
    117     1、和list相似,最大的不同元祖是一种只读且不可读的数据结构
    118     2、不可替代元祖中的所有元素,至刻度不可更变
    119     3、list与tuple可以相互转换,tuple(list)、list(tuple)
    120     
    121     赋值:
    122     h=(2,[3,4],(23112,2));    #多维列表
    123     h=(1,)                    #一个元素时必须要打逗号,因为h=(1)与h=1一致。
    124     
    125 字典:Dict
    126     a={'x':3,    'y':4,    'z':5    }
    127     #x就是key不能为数字;3表示value值;和json格式相似
    128     a['xx']=333; #表示又插入一个键为'xx',值为'333'的元素;
    129                 #结果是a字典就是{'x': 3, 'y': 4, 'z': 5, 'xxx': 2333}
    130                 
    131                 
    132     字典的函数方法:
    133         dict.clear()
    134         dict.copy();
    135         dict.get(key,None);        #返回指定键的值,若没有返回"None"
    136         key in dict
    137         dict.items()            #以列表返回可遍历的(键,值)元祖数组
    138         dict.keys()                #以列表返回一个字典所有的键
    139         dict.setdefault(key,None)#和get()相似,但如果键不存在字典中,会添加一个key键,值为None
    140         dict.update(dict2)        #把字典dict2的键/值对更新到dict里
    141         dict.values()            #返回字典中所有的值;
    142         dict.pop(key,None)        #删除键Key对应的值,返回被删除的值,key值不存在返回None。如果Key不存在,又没有默认值,则报错。
    143         
    144 条件语句
    145 if y>0:
    146     print("y>0")
    147 elif y==0:
    148     print("y==0")
    149 else:
    150     print("y<0")
    151 ################
    152 布尔表现式---逻辑操作符and、ornotinnot in
    153 a=2;b=4;c=6
    154 if b>=a and b<=c:
    155     print("b is between a and c")
    156     
    157 if not (b<a or b>c):
    158     print("b is still between a and c")
    159 ######################
    160 while语句
    161 i=5
    162 while i>0:
    163     print("ss")
    164     i=i-1
    165     
    166 ######################
    167 For语句
    168 for i in [3,4,10,25]:
    169     print(i)
    170 
    171 for i in "helloworld":
    172     print(i)
    173     
    174 for i in range(10):    #i从0取到9 
    175     print(i)
    176     
    177 A=[]
    178 for j in [3,4,5,6]:
    179     A.append(j**2)
    180 
    181 
    182 range(1,10)            #从1取到10
    183 range(1,10,2)        #从1取到10,每隔2取一次值
    184 
    185 
    186 #######################
    187 控制流终止
    188     continue
    189     break
    190     
    191     
    192     
    193     
    194     
    195     
    196 ###############################
    197 函数
    198     def语句
    199     def 函数名(参数1,参数2,参数3)
    200         语句块
    201 
    202 def divide(a,b):
    203     q=a/b
    204     r=a-q*b
    205     return q,r
    206 
    207 #调用
    208 x,y=divide(42,5)    #x=8,y=2
    209 x=divide(42,5)        #x=(8,2)是tuple元祖
    210 
    211 def add(a,b=2):        #a为位置参数,b为默认参数、默认取值为2。默认参数在位置参数之后
    212     s=a+b
    213     return s
    214 
    215 def fenshu(name,socre=90):
    216     print('%s的分数为%d'%(name,score)) 
    217 
    218     
    219 #调用分数
    220 fenshu('张三',)
    221 t=('李四',80)
    222 fenshu(*t)    
    223     
    224 ###############
    225 #1、可变参数
    226 def func(*a):        #如果输入为1,23,4,4,5;那么a=(1,23,4,4,5)元祖
    227     sum=0
    228     for n in a:
    229         sum=sum+n
    230     return sum
    231     
    232 def fenshu(name,socre=90):
    233     print('%s的分数为%d'%(name,score)) 
    234 
    235     
    236 #2、可变参数
    237 fenshu('张三')
    238 t=('李四',80)
    239 fenshu(*t)    
    240     
    241     
    242 #################################################    
    243 关键字参数
    244 def func(**kw)
    245 可变参数允许传入0或者任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许我传入0~任意个含参数名的参数,这写关键字参数在内自动组装为一个dict。与可变参数相同,需要使用dict的操作方法来操作dict
    246 
    247 在调用函数时,我们可以将参数组装成dict,通过func(**dict)的方式传参
    248 def func(name,age=20):
    249     print("%s age is %d"%(name,age))
    250 
    251 p={'name':'bob','age':27}
    252 func(**p)
    253 
    254 参数组合
    255     顺序为位置参数、默认参数、可变参数和关键字参数,形式:
    256 def func(para,para2=None,*agrs,**kw)
    257 #################################################    
    258 类、对象
    259 class Person():
    260     def __init__(self,name,age):  #初始化,绑定实例属性,特殊的方法,类似于java的构造函数,第一个参数必须是self
    261         self.name=name
    262         self.age=age
    263 1、继承
    264 class Count():
    265     def __init__(self,a,b):        #初始化类的属性
    266         self.a=a
    267         self.b=b
    268     def add(self):                #类中的方法,第一个参数必须是self
    269         return self.a+self.b
    270 
    271 count = Count(3,5);    #实例化对象,是否传参取决于__init__
    272 count.add();        #调用对象的方法
    273 
    274 class Father():        #表示无继承父类,或者说这是继承基类
    275     def add(self,a,b):
    276         return a+b
    277 
    278         
    279 class Son(Father):
    280     def div(self,a,b):
    281         return a-b
    282 >>> son=Son();        #实例化对象
    283 >>> son.add(3,5)
    284 >>> son.div(3,5)
    285 
    286 ##########################################################
    287 异常
    288 try:
    289     open("abc.txt",'r')
    290 except IOError:
    291     print "异常了!"
    292 
    293 try:
    294     print aa
    295 except NameError:
    296     print "这是一个 name 异常!"    
    297 
    298 
    299 try:
    300     open("abc.txt",'r')
    301     print aa
    302 except BaseException:
    303     print "异常了!"    
    304 所有的异常类有了新的基类 BaseException,Exception 同样也继承BaseException,所以我们也可以使用 BaseException 来接收所有的异常。
    305 
    306 try:
    307     print(s)
    308 except NameError:
    309     print("异常")
    310 finally:
    311     print("没有异常") #finally如何都都会被执行
    312     
    313 try:
    314     print(s)
    315 except NameError:
    316     print("异常")
    317 else:
    318     print("没有异常") #try正确才会执行
    319 ###读取文件#######################################################
    320 #coding=utf-8
    321 import  time
    322 
    323 files =open('C:/Users/Lee/Desktop/test01.txt','r')
    324 try:
    325    # print(str)
    326     for l in files:
    327         print(l)
    328      #   time.sleep(1)
    329 finally:
    330     #files.close()
    331     print ('Cleaning up ...closed the file')
    332 #######################################
    333 
    334 
    335 
    336 ######################################
    337 
    338 引入包
    339 import time
    340 print(time.ctime())
    341 
    342 引入自己写的模块
    343 
    344 
    345 ##########################导入写的模块的路径
    346 import sys
    347 sys.path.append('C:\test\WorkSpace_Python\Learn0904')
    348 print(sys.path)
    349 print(sys)
    350 
    351 
    352 ###################################
    353 open/文件操作
    354 f=open('/tmp/hello','w')
    355 
    356 #open(路径+文件名,读写模式)
    357 
    358 #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式        
    359 读写模式的类型有:
    360 
    361 rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
    362 w     以写方式打开,
    363 a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
    364 r+     以读写模式打开
    365 w+     以读写模式打开 (参见 w )
    366 a+     以读写模式打开 (参见 a )
    367 rb     以二进制读模式打开
    368 wb     以二进制写模式打开 (参见 w )
    369 ab     以二进制追加模式打开 (参见 a )
    370 rb+    以二进制读写模式打开 (参见 r+ )
    371 wb+    以二进制读写模式打开 (参见 w+ )
    372 ab+    以二进制读写模式打开 (参见 a+ )        
    373 
    374 
    375 #举例:读取文件
    376 f=open('C:/Users/Lee/Desktop/123.csv','r+')
    377 str=f.readlines()
    378 
    379 for i in str:
    380     print(i)
    381 f.close()
    382 
    383 #举例:读取csv文件
    384 import csv
    385 file1=open('C:/Users/Lee/Desktop/actual.csv','r+')
    386 csv_reader=csv.reader(file1)
    387 print(type(csv_reader))
    388 for row in csv_reader:
    389     print(type(row))
    390     print(row[1])
    391 file1.close()
    392 
    393 #写入文件
    394 f=open('C:/Users/Lee/Desktop/111.csv','a+')
    395 num=[1,2,3,4,5]
    396 char=['a','b','c','d','e']
    397 
    398 l=[]
    399 for i in range(len(num)):
    400     m=str(num[i])+','+char[i]
    401     l.append(m)
    402 f.write(str(l)+'
    ')
    403 f.close()
    404 
    405 #写入csv文件,这里的row_all是获取到的数据库的内容,为元祖
    406 l=list(row_all)
    407 f=open('D:/123.csv','a+',newline='')
    408 writer=csv.writer(f)
    409 num=len(l)
    410 for i in range(num):
    411     writer.writerow(l[i])
    412 f.close()
    413 
    414 
    415 #####################################python发送邮件
    416 #coding=utf-8
    417 import smtplib
    418 from email.mime.text import MIMEText
    419 from email.header import Header
    420 
    421 #发送邮箱
    422 sender='lihujun101@163.com'
    423 #接受邮箱
    424 receiver=['316947664@qq.com']
    425 
    426 #发送主题
    427 subject='测试'
    428 #发送邮箱的服务器地址
    429 smtpserver='smtp.163.com'
    430 #发送邮箱用户/密码
    431 user='lihujun101@163.com'
    432 pwd='li1992hujun'
    433 
    434 #邮件正文
    435 msg=MIMEText('<html><h1>你好!!!'
    436              '</h1><a href="http://baidu.com">这是一个链接</a></html>','html','utf-8')
    437 msg['From']='李胡军'#可以写出来表示发件人名字
    438 msg['To']='316947664@qq.com'
    439 msg['Subject']=Header(subject,'utf-8')
    440 
    441 smtpObj=smtplib.SMTP(smtpserver,25)
    442 
    443 smtpObj.login(user,pwd)
    444 smtpObj.sendmail(sender,receiver,msg.as_string())
    445 
    446 ########################################################################
    447 ###带附件发送邮件
    448 #coding=utf-8
    449 import smtplib
    450 from email.mime.multipart import MIMEMultipart
    451 from email.mime.text import MIMEText
    452 from email.header import Header
    453 
    454 #发送邮箱
    455 sender='lihujun101@163.com'
    456 #接受邮箱
    457 receiver=['316947664@qq.com']
    458 
    459 #发送主题
    460 subject='测试'
    461 #发送邮箱的服务器地址
    462 smtpserver='smtp.163.com'
    463 #发送邮箱用户/密码
    464 user='lihujun101@163.com'
    465 pwd='li1992hujun'
    466 
    467 #邮件正文
    468 msg=MIMEMultipart()
    469 msg.attach(MIMEText('<html><h1>你好!!!'
    470              '</h1><a href="http://baidu.com">这是一个链接</a></html>','html','utf-8'))
    471 
    472 msg['From']='李胡军'#可以写出来表示发件人名字
    473 msg['Subject']=Header(subject,'utf-8')
    474 
    475 
    476 #附件
    477 fj='C:\Windows\addins\FXSEXT.ecf'
    478 att=MIMEText(open(fj,'rb').read(),'base64','utf-8')
    479 att["Content-Type"]= 'application/octet-stream'
    480 att['Content-Disposition']='attachment; filename="test"'
    481 msg.attach(att)
    482 
    483 #发送
    484 smtpObj=smtplib.SMTP(smtpserver,25)
    485 smtpObj.login(user,pwd)
    486 smtpObj.sendmail(sender,receiver,msg.as_string())
    487 
    488 ###################################################################################
    489 
    490 
    491 
    492 
    493 
    494 #####lambda函数
    495 f=lambda x:x*2
    496 '''
    497 用 lambda 来声明匿名函数,冒号(:)前面 x 表示入参,冒号后面 x*2 表示返回值。lambda 和普通的函数相比,省去了函数名称,“匿名函数”也是由此而来。
    498 '''
    499 等价于
    500 def f(x):
    501     return x*2
    502 
    503     
    504 #######################################取出文件夹中最新的文件
    505 #coding=utf-8
    506 import os
    507 
    508 #定义文件目录
    509 lists=os.listdir('D:\123')
    510 
    511 #按时间排序
    512 lists.sort(key=lambda fn:os.path.getmtime('D:\123\'+fn))
    513 
    514 print('最新文件为:'+lists[-1])
    515 lists.sort()
    516 print(os.path.getmtime('D:\123\'+lists[-1]))
    517 print(lists)
    518 
    519 ##########################################################
    520 from urllib import request
    521 
    522 with request.urlopen('https://api.douban.com/v2/book/2129650') as f:
    523     data=f.read()
    524     print('状态:',f.status,f.reason)
    525     for k ,j in f.getheaders():
    526         print('%s %s'%(k,j))
    527     print('数据:',data.decode('utf-8'))
    528 
    529 req=request.Request('http://www.douban.com/')
    530 req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
    531 with request.urlopen(req) as m:
    532     print('状态1:',m.status,m.reason)
    533     for k,j in m.getheaders():
    534         print('%s :%s' %(k,j))
    535     print('数据1:',data.decode('utf-8'))
    536 
    537 
    538 可以直接作用于for循环的数据类型有以下几种:
    539     一类是集合数据类型,如list、tuple、dict、set、str等;
    540     一类是generator,包括生成器和带yield的generator function。
    541     这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
    542     
    543 生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。
    544     可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
    545     可以使用isinstance()判断一个对象是否是Iterator对象:
    546     
    547     
    548 map函数/refuce函数/filter函数
    549 >>>list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
    550 ['1', '2', '3', '4', '5', '6', '7', '8', '9']
    551 
    552 reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    553 
    554 def is_odd(n):
    555     return n % 2 == 1
    556 
    557 list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
    558 # 结果: [1, 5, 9, 15]
    559 
    560 >>> sorted([36, 5, -12, 9, -21], key=abs)
    561 [5, 9, -12, -21, 36]
    562 
    563 
    564 列表生成式:
    565 >>> [x * x for x in range(1, 11)]
    566 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    567 
    568 等价于:
    569 >>> L = []
    570 >>> for x in range(1, 11):
    571 ...    L.append(x * x)
    572 ...
    573 >>> L
    574 
    575 
    576 
    577 闭包:相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”
    578     返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
    579     
    580     
    581 匿名函数
    582 lambda x: x * x
    583 等价于
    584 def f(x):
    585     return x * x
    586     
    587     
    588     
    589 装饰器:
    590     这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
    591 
    592 
    593 Python作用域:
    594     1、正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等
    595     2、类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
    596     3、类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等597     之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。
    598     
    599     
    600 获取对象信息:
    601 1、使用type()判断对象类型
    602 2、使用isinstance('aaa',str)判断对象类型
    603 3、使用dir()获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list
    604 >>> type(123)
    605 <class 'int'>
    606 >>> type('str')
    607 <class 'str'>
    608 >>> type(None)
    609 <type(None) 'NoneType'>
    610 >>> isinstance([1, 2, 3], (list, tuple))
    611 True    
    612 >>> hasattr(obj, 'x') # 有属性'x'吗?
    613 True
    614 >>> obj.x
    615 9
    616 >>> hasattr(obj, 'y') # 有属性'y'吗?
    617 False
    618 >>> setattr(obj, 'y', 19) # 设置一个属性'y'
    619 >>> hasattr(obj, 'y') # 有属性'y'吗?
    620 True
    621 >>> getattr(obj, 'y') # 获取属性'y'
    622 19
    623 >>> obj.y # 获取属性'y'
    624 19    
    625     
    626     
    627     
    628 给一个实例绑绑定方法,但是对另外的实例无效
    629 >>> def set_age(self, age): # 定义一个函数作为实例方法
    630 ...     self.age = age
    631 ...
    632 >>> from types import MethodType
    633 >>> s.set_age = MethodType(set_age, s) # 给实例绑定一个方法
    634 >>> s.set_age(25) # 调用实例方法
    635 >>> s.age # 测试结果
    636 25
    637     
  • 相关阅读:
    Android中GC_EXTERNAL_ALLOC的含义
    Phonegap开发的前后台数据交互
    代码管理工具TortoiseSVN
    14款响应式前端开发框架
    简化工作流程,10款必备的HTML5开发工具
    [C#.net]处理UTF-8文件乱码
    [Oracle]ORA-14400:插入的分区关键字未映射到任何分区
    [网络]10M、100M、1000M网线的水晶头接法
    [Office]Execl取消保护密码
    SLI的相关学习
  • 原文地址:https://www.cnblogs.com/ceshixuexi/p/7923149.html
Copyright © 2011-2022 走看看