基础

python的PEP8规范

1、 变量名,函数名,方法名的命名

1) 命名的名字要力求见名知意;

2) 命名不要和python的关键字(比如while)和内建字重名(比如int);

3) 不能以数字开头,只能由字母,数字和下划线组成;

4) 常量字母都大写,一个单词描述不下可以用下划线连接多个单词来描述。

2、 缩进,空行以及单行字符数要求

3、 脚本第一行指定编码:# -- coding: utf-8 --

4、 编写程序时,尽量少使用全局变量,易于维护,且对于常量可统一定义在配置文件。

5、 不要在一句import中多个库,比如import os, sys不推荐

导入语句一般顶头写。如果写多个导入语句,建议先写导入内建的模块,然后再导入的第三方模块,最后写导入自定义模块。
7、 在if/for/while语句中,即使执行语句只有一句,也必须另起一行。比如if 3>2:print("ok"),这种写法虽然没错,但是不推荐,需要把print语句另起一行。
8. 尽可能使用'is''is not'取代'',比如if x is not None 要优于if xNone。

为什么字典必列表快
字典可hash,无顺序,去重,查询速度比列表快,比列表占内存多
元祖与列表的区别

元组 不可变,可以做函数返回多值,可以做字典的key,元组没有增删改查,反而换取性能上的提升,创建tuple比list 快,存储空间比list占用小,多线程并发的时候,tuple是不需要加锁的,不用担心安全问题

python2 跟Python3的区别
Python3 中的print是一个内置函数,而Python2中print是一个语法结构

python3:                                
    # print()                                   
    # input()  ==raw_input()             
    # utf-8                                     
    # readlines 列表        
    # bytes 字节         
    # str 字符串          
    # range() 可迭代对象       
    # 新式类(c3)          
    # int          

python2:
    print 
    raw_input()input()  你输入什么类 型,就是什么类型 
     ascii 
    xreadlines 迭代器 
     str 字节
    unicode 字符串
    range() 列表/xrange()  可迭代对象 
    经典类/新式类(object)
     int/long可哈希的数据类型,即不可改变的数据

字符串:
Strip split replace find upper lower capitalize startswith endswith
列表:Append insert remove pop count del sort
元祖:Count index 无
字典:Get setdefault update pop popitem keys values itemsSet
集合:Add update pop remove clear

可变数据类型:列表和字典
不可变数据类型:字符串,元祖,集合

1.格式化输出

 msg = '你好%s,我是%s'%('少年','meet')
 print(msg)
变量

%s %d %%
f'{变量名}' 3.6以上

name=input(‘jjlk’) 
age = input(‘12’)
msg = f'姓名:{name},年龄:{age}'  #python3.6版本以上
print(msg)
s=’{}{}’.format(1,2)
print(s)

‘’.join(s) 字符串拼接

2.not>and>or

X and y And : 同真为真,取后边,有一个假即为假,同假取前边
X or y Or : 同真取前边,有一个真即为真,同假取后边

3.编码

utf-8 转成Unicode 是解码
ascii 美国 256 没有中文
一个字节 8位

gbk 中国
英文 1字节 8位
中文 2字节 16位

unicode 万国码
英文 2个字节 16位
中文 4个字节 32位

utf-8 可变编码
英文 1字节 8位
欧洲 2字节 16位
亚洲 3字节 24位

4.索引

获取s字符串中所有内容
m[:]
m ='人生若只如初见'
print(m[6:2:-2])
print(m[2:7:2])

5.字符串 不可变

s1 = 'Alex'
s1 = s.capitalize()  首字母大写
print(s1)
s.capitalize()  # 首字母大写
print(s.title())  # 特殊符号分割的每个单词首字母大写
s.upper()       #  全部大写
s.lower()       # 全部小写
print(s.count('L'))  # 返回的是数量

print(s.endswith('x'))  # 以什么结尾  结果为true or false
print(s.startswith('a'))  # 以什么开头
print(s.find('p'))  #通过元素查找下标  查找的没有返回-1
print(s.index('p'))   #通过元素查找下标  查找的没有就报错

s.format()添加
s='njkj,{a},{b}'  字符串形式
print('_'.join(s))

答案:n_j_k_j_,{a},_{b}

S=[‘hj’,’hgjh’]     列表形式
Print(‘_’.join(s))

答案:hj_hgjh
For 循环

li = ["alex", "wusir", "taibai"]
#msg = ''
#for i in li:
  #msg = msg + i+'_'
#print(msg[0:-1])
print('_'.join(s))  

s.split('x'))  #分割 (没了)
s. strip('   a'))   #脱  脱头尾两边的(空格 换行符)东西
s.replace(‘a’,’b’)第一个放要被替换的 第二个是替换的内容 
print(s.swapcase())    # 大小写转换  里边不用填东西
s.isdigit()  #判断是不是纯数字
s.isalpha()#判断是不是只有字母和数字
s.isspace()  #判断是否为空    

6.列表 可变数据 有序的

可hash的(int, str, tuple,bool)

Append(‘画江湖’)    #添加   在末尾添加
insert(3,’成交价’)   # 插入 第一个位置插入为下标,第二个位置插入为内容
extend()    #迭代添加整型和布尔值不能迭代
print(lst1+lst2)    #列表的合并  

Del  lst[2]     #通过下标删除
Del  lst[0:3]    #切片删除
Remove()      #通过内容删除
Pop()    #没有指定,默认删除最后一个,可以指定下标删除
Clear()     #清空
Ret=lst.pop(2)  #可以指定下标,有返回值    

Lst[2]=’hjk’   #通过下标改    ************
Lst[0:3] =’新得内容’   #通过切片改
Lst[0:5:2] =’新的内容’  #切片+步长   长度要统一

For 循环
Print(Lst[2])    通过下标查

其他操作

Reverse()   #翻转  括号里不加内容
Sort()          #排序  升序
Sort(reverse=True)

sort 排序,是属于列表的方法,在原列表基础上直接排序
sorted 排序,是内置函数,排序后会生成一个新的变量,不会在原变量的基础上修改

Index()  通过内容获取下标
Count()   计数

7.元祖: 不可变数据 有序 有下标

Counter:计数   
index:通过元素找下标
Tu=(‘jnjknk’,1,23)   元祖没有增删…
print(tu[0:5])

元祖切片结果也是元祖
元祖不可修改,可以转变成列表,再进行增删…

Tu=list(tu)
Tu.append(‘njnk’)
Print(tu)

查看类型
Tu=() 空的和有逗号是元祖 有数据为数据类型
Print(type(tu))

8. 字典 键不能重复,重复的话就会把值覆盖,键是不可变的

Dic={‘键’:’值’}

dic[12]=’小米’   通过键查找值
dic.setdefault(11,'华为')   # 17 键  华为 值
dic[(1,2,3)].setdefault('k4','v4')
1.先去字典中通过11这个键去查有没有值  就是None
2.如果是值  就不进行添加
3.如果是None, 就添加   返回的是添加的值

Dic[1]   通过键删除
print(dic.pop('25'))    # pop 通过指定键删除  pop也有返回值,  返回的是被删除的值
dic.clear()  # 清空
print(dic)
dic.popitem()   # 随机删除  python3.6 删除最后一个   3.5 中随机删除
print(dic)
dic2.update(dic1)
# 更新   被更新的内容如果在 要更新的内容中那值就会被覆盖

dic2['33'] = 'tsp'   #是字典中没有的时候才叫增,如果字典中这个键存在就叫做修改
print(dic2[2])          # 通过键查找 值  如果键不存在就报错
print(dic2.get(2))        # 通过键查找值    如果键不存在不会报错,返回None
print(dic2.setdefault('33'))   # 不存在返回None

其他操作
获取键
for i in dic2:
print(i)

for i in dic2.keys():
      print(i)

获取值
for i in dic2:
print(dic2.get(i))

for i  in dic2.values():
     print(i)

获取 键值
for i in dic2.items():
print(i)

合并多个字典:可以使用{**dict_name, **dict_name2, … }将多个字典进行合并

d1 = {"v1": 22, "v2": 33}
d2 = {"v2": 44, "v3": 55}
d3 = {**d1, **d2}
print(d3)
结果:{'v1': 22, 'v2': 44, 'v3': 55}
解构
a,b,c=’1,2,3’ true,False,True  '456'  [7,8,9]  (7,8,9) {'1':8,'2':9,'3':0}
# print(a)
# print(b)
# print(c)

9.set{ } 天然去去重 不能用下标,有增删… ,可变数据

Se={1,2,3,1,5}
Print(se)

例:面试题先去重再转换成列表
lst=[1,2,3,1,5]
print(list(set(lst)))

se.add(6)

se.update([1,23,34])   # 可迭代对象
se.update(‘123’)   

结果{‘1’,’2’,’3’}

se.clear()
print(se.pop())
se.remove(4)   # 通过内容删除

S1 = {1,2,2,3,89}
s2 = {1,25,2,3,69}
print(s1 & s2)  # 俩个共有的
print(s1 | s2)  # 两个合并(去重后的)
print(s1 - s2)  # 显示前边有,而后边没有的,(以前边为主)不显示共有的   {89}
print(s1 ^ s2)  # 显示不共有的  {89, 69, 25}

Rang 范围

Python3中 原生态

print(range(0,10))    

结果为range(0,10)

Python3中range为可迭代对象
Python2:分为range xrange

range(1,9)  列表  结果为[1,2,3,4,5,6,7,8,] 
Xrange(1,9)  原生态  结果和python3中一样,都是可迭代对象   xrange(1,9)

Python3中

print(list(range(1,9)))        

结果为[1,2,3,4,5,6,7,8,]

range和切片一样顾头不顾尾

For i in range(0,10,2)
  Print(i)      

结果为0,2,4,6,8
range可以让for循环来循环数字(求奇数偶数)

冻结集合frozenset

s=frozenset([1,2,3,1,5])
print(s)    

结果 frozenset({1, 2, 3, 5})
# dic={{1,2}:'你好'} 错的
dic={s:'你好'}
print(dic)
结果:{frozenset({1, 2, 3, 5}): '你好'}

continue和break区别

break是终止for循环里所有的循环,下面的代码也不执行
continue:是停止当前所在条件的执行,下面的代码接着执行

for i in range(5):
  print(i,'nkn')
  if i==3:
      break
      # continue
  print(i,'fefr')
  break结果:
      0 nkn
      0 fefr
      1 nkn
      1 fefr
      2 nkn
      2 fefr
      3 nkn
  continue结果:
      0 nkn
      0 fefr
      1 nkn
      1 fefr
      2 nkn
      2 fefr
      3 nkn
      4 nkn
      4 fefr

posted on 2020-02-25 10:34  xm微微一笑  阅读(137)  评论(0编辑  收藏  举报

导航