• 模块初识
  • 数据类型
  • 三元运算
  • bytes类型
  • 浅拷贝和深拷贝和赋值的区别

模块也可以叫库。分为标准库和第三方库。区别在于标准库不需要安装,可以直接导入的内置模块。

第三方库则是需要安装的库。

  

import sys


sys.argv #打印环境变量(相对路径)


import os

os.system('dir')  #执行命令,不执行结果 
a = os.popen('dir').read() #用read()方法调取它的结果,结果存在内存中。
print(a)

 

os.mkdir('new dir') #创建目录

 

驱动器 C 中的卷没有标签。
卷的序列号是 A649-EE2A

C:\Users\Administrator\PycharmProjects\day01\day02 的目录

2019/02/26 22:16 <DIR> .
2019/02/26 22:16 <DIR> ..
2019/02/25 19:39 165 encode to decode.py
2019/02/26 11:11 <DIR> fp
2019/02/26 16:58 1,122 list.py
2019/02/26 20:26 1,329 shopping.py
2019/02/26 21:47 21 str1.py
2019/02/26 22:16 263 模块初始.py
2019/02/26 16:57 644 浅拷贝.py
2019/02/22 21:11 551 爬虫.py
7 个文件 4,095 字节
3 个目录 8,209,002,496 可用字节

  • 动态数据类型

Number

int(整型),注:在python2.x中有份整型和长整型long。

float 浮点数,带有小数点的浮点数。

布尔型

0和1 True or False

字符串

由有单引号或双引号括起来的。
s = 'sleiman is very handsome'
s1 = 'sleiman\n'
print(s.capitalize()) #首字母大写 Sleiman is very handsome
print(s.title()) #首席母大写 Sleiman Is Very Handsome
print(s.count('e')) #出现的次数 3
print(s.center(50,'-')) #-------------sleiman is very handsome-------------
print(('sleiman').endswith('an'))#以an结尾的
print(s1.startswith('sl')) #以sl开头
print(('格式化输出:%s'% s).format())
print(s.find('s'))#索引值
print(s.isdigit()) #是否为整数
print(('t1').isalnum()) #是否为字母或数字
print(s.isalpha()) #是否为字母
print(s.isdecimal())#是否为数字
print(s.isidentifier())#判断是否为合法是标识符
print(s.islower())#是否为小写
print(s.isupper())# 是否为大写
print(s.lower())#小写
print(s.upper())#大写
s2 = '  str    '
print(s2.strip()) #去掉两边的空格\t\n空格
# 字符串拼接
print('+'.join(['1','2','3']))
print(s2.replace('r','l',1)) #参数一:被替换的参数  参数二:替换的参数,三:替换的次数
print(s.split(' ')) #按空格分割,逗号
s3 = '\nstr'
print(s3.splitlines()) #按行分割
  • 列表
# 列表的增删改查
names = ['tom', 'candy', 'jerry' ,'hurry', 'alan']

# 切片
# print(names[:2])
# print(names[-3:])
print(names[: :2]) #['tom', 'jerry', 'alan']

#
names.append(1)
print(names)


#指定插入
names.insert(1,'1')  #['tom', 'candy', 'jerry', 'hurry', 'alan', 1]
names.insert(3,'3')  #['tom', '1', 'candy', '3', 'jerry', 'hurry', 'alan', 1]
print(names)

#增加

names.extend([1,2,3])  #合并 ['tom', '1', 'candy', '3', 'jerry', 'hurry', 'alan', 1, 2, 3]
#
# names.remove('1') ['tom','candy', '3', 'jerry', 'hurry', 'alan', 1]
# del names[3] ['tom', '1', 'candy', 'jerry', 'hurry', 'alan', 1]
names.pop()  #默认从最后一个开始删除,指定下标志删除
# ['tom', '1', 'candy', '3', 'jerry', 'hurry', 'alan']
# names.clear()  #清空列表 []
print(names)

#
names[0] = 'gary' #['gary', '1', 'candy', '3', 'jerry', 'hurry', 'alan']

print(names)


#
print(names.index('1')) #1
print(names.count(1)) #2次
# names.reverse()
print(names)  #反转
list1 = [1,2,3,4,5,6]
list1.sort(reverse=True) #降序 默认升序
print(list1)
  • 元组

元组由小括号括起来的。一旦初始化,就不能更改。

注;后面的数据类型下次会更新上来。

#切片
names = ('alan','jack')
print(names[:1])

#查询
print((1,2,3,4,1,1).count(1)) #3

注:后面的数据类型下次更新上来。

  • 三元运算
# result = 值1 if 条件 else 值2
# 条件为真则result为值1
# 条件为假则result为值2
a = 1
b = 2
result1 = a if a>b else b #2
print(result1) 
  • 浅拷贝、深拷贝、赋值区别

赋值拷贝:list1与list2分别指向 list1的值,list1重新赋值后指针发生改变,list2指针不变。

浅拷贝:list1调用copy()方法后与上面的赋值拷贝原理一样,区别在于在二维列表中,list1和list2都指向了list[0] = 'zero'这个值,并没有复制它。

深拷贝:list1复制了二维列表中的值,而list2不变。

#复制拷贝
list1 = [1,2,[3,4]]
list2 = list1
print(list1) #[1, 2, [3, 4]]
print(list2) #[1, 2, [3, 4]]
list1 = ['zero',2,[3,4]]
print(list1) #['zero', 2, [3, 4]]
print(list2) #[1, 2, [3, 4]]


# 浅拷贝
list1 = [1,2,[3,4]]
list2 = list1.copy()
print(list1) #[1, 2, [3, 4]]
print(list2) #[1, 2, [3, 4]]
list1[0] = 'zero'
print(list1) #['zero', 2, [3, 4]]
print(list2)  #[1, 2, [3, 4]]
list1[2][0] = 'three'
print(list1) # ['zero', 2, ['three', 4]]
print(list2)# #[1, 2, ['three', 4]]


#深拷贝
import copy
list1 = [1,2,[3,4]]
list2 = copy.deepcopy(list1)
print(list1) #[1, 2, [3, 4]]
print(list2) #[1, 2, [3, 4]]
list1[0] = 'zero'
print(list1) #['zero', 2, [3, 4]]
print(list2)  #[1, 2, [3, 4]]
list1[2][0] = 'three'
print(list1) #['zero', 2, ['three', 4]]
print(list2) # [1, 2, [3, 4]]
  • bytes
#字符串转二进制
print('中国'.encode('utf-8')) #编码 b'\xe4\xb8\xad\xe5\x9b\xbd'

#相反  解码
print(b'\xe4\xb8\xad\xe5\x9b\xbd'.decode('utf-8')) #中国