day02-模块、数据类型、三元运算、列表、元组

1.1  模块

导入系统自带模块

 1 import sys
 2 
 3 #print(sys.path)#打印环境变量
 4 
 5 
 6 print(sys.argv) #打印脚本相对路径
 7 
 8 print(sys.argv[2])
 9 
10 
11 
12 
13 import os
14 
15 #cmd_res = os.system("dir") #打印当前路径下的文件,只能显示,不能保存结果为一个变量
16 
17 cmd_res = os.popen("dir").read() #这样可以保存为变量
18 
19 print(cmd_res)#打印变量
20 
21 
22 
23 os.mkdir("new_dir")#创建新目录

 

 新建一个模块,即是一个Python脚本。

导入模块时,默认在当前目录下寻找这个模块,要么在base\lib\site_packages下

 

1.2  Pyc是什么?

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

1.3  数据类型

1)数字(int(整型)、long(长整型)、float(浮点型)、复数)

在Python3中,取消了长整型这个概念,所有的都是int整型。

2)布尔值

真或假,1或0

a = True
if
a:
    print("a")

3)字符串

Str,文本总是Unicode

4)bytes类型

二进制数据由bytes类型表示

1 msg = "周琼杰"
2 
3 print(msg)
4 
5 print(msg.encode(encoding="utf-8")) #将字符串类型转换成bytes类型
6 
7 print(msg.encode(encoding="utf-8").decode(encoding="utf-8"))#将bytes类型转换成字符串类型

 

1.4  三元运算

1 a,b,c =1,3,5
2 
3 d =a if a>b else c #如果a大于b,那么d就等于a,否则d就等于c
4 
5 print(d)

 

1.5  列表

 1 names = ["zhouqiongjie","zhangdan","qiongjie","dandan"]  #列表
 2 
 3 print(names)
 4 
 5 print(names[0],names[3])  #取列表中的第一个和第4个值
 6 
 7 print(names[1:3])       #顾头不顾尾,取第二个和第三个值
 8 
 9 print(names[-1])#在不知道列表有多长的情况下,取最后一个值
10 
11 print(names[-2:]) #取列表中最后两个值
12 
13 print(names[:3]) #取前面三个值

 


 1 names.append("lisi") #追加插入
 2 
 3 print(names)
 4 
 5 
 6 
 7 names.insert(1,"wangwu")  #在列表指定位置插入,其它值后移
 8 
 9 print(names)
10 
11 
12 
13 names[1] ="zhaoliu"  #替换一个值
14 
15 print(names)

#删除有3中方式
1 names.remove("zhaoliu")
2 
3 del names[1]
4 
5 names.pop(1)
6 
7 print(names)

1 print(names.index("lisi"))  #查找李四所在列表中的位置
2 
3 print(names[names.index("lisi")])
4  
5 
6 names = ["zhouqiongjie","zhangdan","qiongjie","dandan"]
7 
8 print(names.count("zhangdan"))   #统计这个值有几个

 

 1 #names.clear()#清空列表
 2 
 3 #names.reverse() #将列表中的值反转
 4 
 5 #names.sort() #按照Assic码顺序进行排序
 6 
 7 names02 =["haha","xixi","heihei"]
 8 
 9 names.extend(names02)  #将两个列表合并
10 
11 #del names02     #删除一个变量
12 
13 print(names,names02)

 

 

 1 names = ["zhouqiongjie","zhangdan","qiongjie","dandan"]
 2 
 3 names2 = names.copy()
 4 
 5 print(names,names2)
 6 
 7 names[1] = "周琼杰" #只能使用下标,进行赋值
 8 
 9 print(names)
10 
11 print(names2) #names2的值不变

 

 

子列表的情况下,浅拷贝

 1 names = ["zhouqiongjie","zhangdan",["haha","hehe"],"qiongjie","dandan"]
 2 
 3 names2 = names.copy()
 4 
 5 print(names,names2)
 6 
 7 names[0] = "周琼杰" #只能使用下标,进行赋值
 8 
 9 names[2][0] = "哈哈"
10 
11 print(names)
12 
13 print(names2)
 

#打印值,names进行了浅copy。第一层不变,但是第二层变了
['zhouqiongjie', 'zhangdan', ['哈哈', 'hehe'], 'qiongjie', 'dandan']

 

 

导入copy模块

 1 import copy
 2 
 3 names = ["zhouqiongjie","zhangdan",["haha","hehe"],"qiongjie","dandan"]
 4 
 5 names2 = copy.copy(names)#实现浅copy的三种方式
 6 ‘’’
 7 names2=names[:]
 8 
 9 names2=list(names)
10 ‘’’
11 
12 print(names,names2)
13 
14 names[0] = "周琼杰" #只能使用下标,进行赋值
15 
16 names[2][0] = "哈哈"
17 
18 print(names)
19 
20 print(names2)

 


深拷贝
 1 import copy
 2 
 3 names = ["zhouqiongjie","zhangdan",["haha","hehe"],"qiongjie","dandan"]
 4 
 5 names2 = copy.deepcopy(names)  #深拷贝,第一层和第二层都变
 6 
 7 print(names,names2)
 8 
 9 names[0] = "周琼杰" #只能使用下标,进行赋值
10 
11 names[2][0] = "哈哈"
12 
13 print(names)
14 
15 print(names2)

#打印输出,

['zhouqiongjie', 'zhangdan', ['haha', 'hehe'], 'qiongjie', 'dandan']

 

列表的循环:

 1 names = ["zhouqiongjie","zhangdan",["haha","hehe"],"qiongjie","dandan"]
 2 
 3 print(names[0:-1:2])  #步长切片
 4 
 5 print(names[::2])
 6 
 7 
 8 
 9 for i in names:  #循环打印
10 
11     print(i)

 

 

1.6  元组

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

names=(“zhou”,”zhang”) #只能查询,不能修改

posted @ 2017-02-28 14:19  涅槃之路  阅读(209)  评论(0编辑  收藏  举报