数字、字符串 小数据池

数字范围: -5~256 在此范围内内存地址相同,超出范围则不同(a=2,b=2此时a和b指向的内存地址相同,a=300,b=300,a和b的内存地址不同)

字符串:1.不能有特殊字符

    2.s*20还是同一个地址,s*21是两个不同的地址

2.编码

ascii 一个字节,只能表示数字、字母、特殊字符,不支持中文

unicode:所有的都是用4个字节表示(浪费空间)

utf-8:字母、数字使用一个字节表示,中文用3个字节

gbk:字母用一个字节,中文用两个字节

备注:

     1)各个编码之间的二进制不能相互识别,会产生乱码

     2)文件的存储、传输,不能是unicode的编码方式(只能是utf-8,utf-16,gbk,gb2312,ascii等)

3.python3

str在内存中是使用unicode编码的

bytes类型

对于英文

  str: 表现形式 s = 'alex'

    编码方式: unicode

  bytes: 

    表现形式:s=b'alex'

    编码方式:utf-8 gbk...

对于中文

  str:表现形式 s='中国'

    编码方式:unicode

  byttes:表现形式:s=b'x\e91\e9\e01\e21\e31\e32'

     编码方式:utf-8 gbk

4.集合:可变的数据类型,他里面的数据元素必须是不可变的数据类型,无序,不重复

set1 =set({1,2,3})

set2 = {1,2,3}

增:

set1. add

5.列表去重

1 list1 = [1,2,3,2,3,5] 2

6.删除列表中指定元素

 

python re 中文字符 python中中文字符范围_python re 中文字符

python re 中文字符 python中中文字符范围_ico_02

1 #移除列表中大于10的元素
2 list1 = [1,20,1,30,45,3]
3 from copy import deepcopy
4 list2 = deepcopy(list1)
5 for i in list2:
6     if i >10:
7         list1.remove(i)
8 print list1

View Code

 

 

 

7.删除字典指定元素

 

python re 中文字符 python中中文字符范围_python re 中文字符

python re 中文字符 python中中文字符范围_ico_02

1 dic1 = {'name':'zhangsan','age':18,'sex':'meal'}
 2 #删除字典中key中含字符a的键值对
 3 #方法一:
 4 dic_new = { }
 5 for k,value in dic1.iteritems():
 6     if 'a' not in k:
 7         dic_new.setdefault(k,value)
 8 dic1 = dic_new
 9 print dic1
10 #方法二
11 list1 = [ ]
12 for k in dic1:
13     if 'a' in k:
14         list1.append(k)
15 for i in list1:
16     del dic1[i]
17 print dic1

View Code

 

8.文件操作

只写

python re 中文字符 python中中文字符范围_python re 中文字符

python re 中文字符 python中中文字符范围_ico_02

1 #w 若文件不存在则先创建再写入,若文件存在则先清除文件的内容再写入
 2 f = open('test',mode='w',encoding='utf-8')
 3 print(type(f))#<class '_io.TextIOWrapper'>
 4 f.write('hello,kugou!你好')
 5 f.close()
 6 #wb
 7 f = open('test',mode='wb')
 8 print(type(f))#<class '_io.BufferedWriter'>
 9 f.write('how are you?小明'.encode('utf-8'))
10 f.close()

View Code

 

python re 中文字符 python中中文字符范围_python re 中文字符

python re 中文字符 python中中文字符范围_ico_02

1 # 读写r+:光标是从文件头开始的,先读后写正常,先写后读会把文件对应长度的内容覆盖掉,
 2 # 读到的内容是光标后的内容,若全被抹掉则读的内容为空
 3 f = open('test',mode='r+',encoding='utf-8')
 4 print(f.read())
 5 f.write('zhangsan,lisi')
 6 f.close()
 7 # 写读w+:
 8 f = open('test',mode='w+',encoding='utf-8')
 9 f.write('wangwu,lisi')
10 f.seek(0)
11 print(f.read())
12 #a:追加
13 f = open('test',mode='a',encoding='utf-8')
14 f.write('wangwu,lisi')
15 #a+:追加(可写可读)
16 f = open('test',mode='a+',encoding='utf-8')
17 f.write('wangwu,lisi')
18 f.seek(0)
19 print(f.read())

View Code

备注:mode的值没有+号则只能进行单一操作,有+号则可读可写

 

python re 中文字符 python中中文字符范围_python re 中文字符

python re 中文字符 python中中文字符范围_ico_02

1 f = open('test',mode='r+',encoding='utf-8')
 2 content = f.read(3)#读出来的都是字符
 3 f.seek(2) #是按照字节定光标位置,即这里2是字节数,如遇中文则会报错,因为中文一个字符用3个字节表示
 4 location = f.tell()
 5 f.seek(location + 2)#'-'向前移,'+'向后移
 6 contents = f.read()
 7 print(contents)
 8 line = f.readline()#一行一行的读
 9 lines = f.readlines()#每行当成一个元素添加到list
10 print (lines)
11 f.close()
12 #with open 可同时打开多个文件
13 with open('test',mode='r+',encoding='utf-8') as file1,\
14         open('test2',mode='w',encoding='utf-8') as file2:
15     line = file1.readline()
16     print (line)
17     file2.write(line)


 9.动态参数

1 #动态参数:可以接收多个参数
 2 # 1.*args:接收按位置传来的参数组织成一个元组,且*args需定义在默认参数之前
 3 def sum(*args,age = 23):
 4     print (args)
 5     n = 0
 6     for i in args:
 7         n += i
 8     return n + age
 9 
10 print(sum(1,2,3))
11 #2.**kwargs:接收按照关键字传参的值,组织成一个字典
12 def show(**kwargs):
13     print (kwargs)#{'a': 1, 'b': 2}
14 show(a = 1,b =2)
15 #*args和**kwargs结合使用
16 def fun(*args,**kwargs):
17     print(args,kwargs)#(1, 23) {'b': 3, 'n': 4}
18 fun(1,23,b=3,n=4)
#参数的顺序:位置参数、*args,默认参数、**kwargs
动态参数的的另一种方式:
def fun(*args)#站在形形参的角度,给变量加上*,就是组合传来的值
  print(args)
l = [1,2,3,6,8]
fun(*l)#站在实参的角度,给一个序列加上*,就是将这个序列按照顺序打散
同理适用于**kwargs
def fun(**kwargs)
  print(kwargs)
d = {'a':1,'b':2}
fun(**d)
#动态参数注意事项:
如果默认参数的值是一个可变数据类型,每次调用函数的时候如果不传值则共用这个参数的值
def f(l=[]):
  l.append(1)
   print l
f()#[1]
f()#[1,1]
f()#[1,1,1]
def f2(k,d={}):
  d[k] = 'v'
   print d
f2('name')#{'name':'v'}
f2('age')#{'naem':'v','age':'v}
f2('sex')#{'name':'v','age':'v','sex':'v'}

 10.命名空间和作用域

#命名空间 有3种
#内置命名空间 --python解释器
    #就是python解释器一起动就可以使用的名字就是内置命名空间(如print()、input()等)
    #内置命名空间在启动解释器的时候就被加载进内存
#全局命名空间 ---我们写的代码但不是函数中的代码
    #在程序从上到下被执行的过程中依次加载进内存的
    #放置了我们设置的所有变量名和函数名
#局部命名空间 --函数
    #就是函数内部定义的名字
    #当函数调用的时候才会产生这个名字,随着函数的执行结束,这个名字也随着消失
#在局部:可以使用全局、内置命名空间
#在全局:可以使用内置的命名空间,不能使用局部命名空间
#在内置:不能使用全局、局部命名空间

#作用域
#全局作用 ---作用在全局 ---内置和全局名字空间的名字属于全局作用 --globals()
#局部作用 ---作用的局部 ---函数(局部名字空间中的名字属于局部作用)--locals()

# def func():
#     x = 'a'
#     y = 'b'
#     print (locals())#{'x': 'a', 'y': 'b'}
# a = 1
# b = 2
# # func()
# print(globals())
#globals 永远打印全局的名字
#locals 在哪里就打印哪里的名字
# def func():
#     print (a)
# a = 2
# func()

View Code

做一个生活的记录者,耕耘希望之田,践行心中梦想,静待花开果熟~-…-~