Python学习-初学入门2

1 模块介绍

标准库和第三方模块 

(1) 标准库

#!/usr/bin/env python

# -*- coding:utf-8 -*- 

import sys

print(sys.path)

"""

'/Users/develop/Documents/Python_study/s14/day2', 

'/Users/develop/Documents/Python_study/s14', 

'/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', 

'/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', 

'/Users/develop/Documents/Python_study/s14/venv/lib/python3.7/site-packages', 

'/Users/develop/Documents/Python_study/s14/venv/lib/python3.7/site-packages/setuptools-40.8.0-py3.7.egg',

'/Users/develop/Documents/Python_study/s14/venv/lib/python3.7/site-packages/pip-19.0.3-py3.7.egg']

"""

python的标准库一般都存在/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7中例如socket.py网络相关,re模块是正则表达式

print(sys.argv[2])在终端输入develop$ python3 文件名.py 1 2 3会输出结果2

'''

输入模块.py 1 2 3

会打印出2

zzhdeMacBook-Pro:day2 develop$ python3 模块.py 1 2 3

['/Users/develop/Documents/Python_study/s14/day2', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',

'/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',

'/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']

2

'''

os.mkdir("new")会在当前目录创建一个new的文件夹

 

(2) 第三方模块

'''

#引用第三方 先从当前目录下选择

# 1.放在/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7中变为自己写的模块

# 2.添加路径

'''

例如:在当前目录创建了一个文件guess_age.py复制一份放于/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7

import guess_age.py#直接会读取guess_age.py里面的程序

'''

guess_age:50

think bigger!

guess_age:80

think smaller...

guess_age:60

think smaller...

you have tried too many times...fuck off

'''

二  pyc

python是解释性语言,但是生成的pyc是干嘛的呢,c应该是complied的缩写才对啊

计算机不能够识别高级语言,所以通过运行一个高级语言时候需要翻译为计算机识别的语言

在运行python的过程跟Jave一样先编译后解释。python跟Java是基于虚拟机的语言

pyc文件就是编译器真正编译的结果

过程如下:

python运行时候,编译结果会存放在内存的PyCodeObject中,当python运行结束时,pyhton

编译器会将PyCodeObject写回到pyc中。

当python程序第二次运行时,程序去硬盘中寻找pyc文件,如果找到直接载入,否则重复以上过程(第一次没找到就重复)

如果pyc已经存在,修改了源代码,怎么办。是从更新时间来判断,是否重新编译生成pyc

例如import guess_age之后会在/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7'/__pycache__生成guess_age.cpython-37.pyc

 

 

 

 

三 字符串

不能修改,换成大小写是重新生成一个覆盖了原来的

name = "my name is Jerry"
print("-----语法----")
print("capitalize()")
print(name.capitalize()) #首字母大写其他都会变小写 结果:My name is jerry
print("count")
print(name.count("e")) #e 出现的次数
print("center")
print(name.center(50,"*"))# 总共打印50个字符 不够的把name放中间,两边填充 *:*****************my name is Jerry*****************

print("endswith")
print(name.endswith("rry")) #判断是否以rry结尾 返回True

print("expandtabs()")
name1 = "my \tname is Jerry"
print(name1.expandtabs(tabsize=10)) #字符串有tab的时候,把tab转为多少个空格。结果:my        name is Jerry

print("find")
print(name.find("is"))#返回下标 8
print(name[name.find("is"):10])#跟list类似可以切片。结果:is

print("fomat")
name2 = "my name is {name} and i am {age}"
print(name2.format(name="Jerry",age=25))
print(name2.format_map({"name":"Jerry","age":25}))#字典的形式

print("index")

print(name2.index("m"))#从左往右寻找第一个符合条件的结果为0

print("isalnum")#是不是阿拉伯数字(英文字符加0-9数字)

print("isalpha")#是否纯英文字符

print("isdigit是否整数")
print("isidentifier是不是合法的变量名")
print("islower是不是小写")
print("isnumeric是否为数字")
print("33.3".isnumeric())#只有数字
print("33.3".isdigit())#常用
print("isspaces是否为空格")
print("istitle字符中每个是否为开头大写")
print("isupper是否所有为大写")
print("join")
name4 = "my name is Jerry"
print(name4.join(["1","2","3","4"])) #1my name is Jerry2my name is Jerry3my name is Jerry4

print("+".join(["1","2","3"])) #1+2+3

print("ljust")
print(name4.ljust(50 ,"*"))#总共输出50个字符不足的话后面不* 与rjust相反

print("lower")#把大写变为小写
print("upper")#把小写变为大写
print("lstrip")#strip会去掉两边空格/换行 lstrip是去掉左边 rstrip是去掉右边

print("maketrans把对应的字符互相交换,相同的对应最后一个")
p = str.maketrans("jergg","12345")
print("jergy".translate(p))

print("replace替换 替换默认全部可传替换个数")
print("Jerrry".replace("r","R",2))

print("rfind从左找到最后面的值的下标")
print("Jerry".rfind("r"))

print("split按什么截取,默认是空格")
print("Jerry is".split())
print("1+2+3+4".split("+"))

print("splitlines按换行截取")
print("1+2\n+3+4".splitlines())

print("startswith按什么开始")

print("swapcase大小写互换")
print("Jerry".swapcase())

print("title每个字符的首字母变大写")
print("my name is".title())

print("zfill")
print("Jerry".zfill(50))#000000000000000000000000000000000000000000000Jerry

 

 

 四 列表

import copy

print("-----列表操作------")
names = ["ZhangSan","LiSi","WangWu","LaoLiu"]
print(names[1:])#['LiSi', 'WangWu', 'LaoLiu']
print(names[1:3])#['LiSi', 'WangWu']

print(names[-1])#LaoLiu最后一个

print(names[-3:])#从倒数第三个开始

print("添加")
'''
append在后面添加
insert在指定位置添加
'''
names.append("Jerry")
names.insert(1,'Tom')
print(names)

print("修改")
names[1] = "Jack"
print(names)

print("删除")
'''
remove直接删除列表里面的值
del names[index]删除相应的位置
pop(index) 删除相应的位置 默认删除最后一个
'''

names.remove("Jack")
print(names)
names.pop(-1)
print(names)

print("查询位置")
print(names.index("LaoLiu")) #3

# print("clear")
# names.clear() #删除整个列表
# print(names)

print("count查询某个值在列表的次数")
print(names.count("LaoLiu"))

print("reverse列表反转")
names.reverse()
print(names)

print("")
print("sort排序")
names.sort()
print(names)

print("extend合并")
name2 = [1,2,3,4,5,6]
names.extend(name2)
del name2 #删除列表
print(names)
# print(name2)

print("----copy-----浅复制跟深层复制")
names3 = ["3ZhangSan","5LiSi",["Jerry","Tom"],"1WangWu","4LaoLiu"]
name5 = names3 #直接赋值 分配了同一个内存 修改其中一个都会改变
name4 = names3.copy()#name4 = copy.copy(names3)一样效果 只是第一层拷贝
name6 = copy.deepcopy(names3) #深拷贝 完全独立
print(names3)
print(name4)
print(name5)
print(name6)
print("----------")
names3[1] = "LiSi"
names3[2][0] = "Jerry1"
print(names3)
print(name4)
print(name5)
print(name6)
'''
这就是浅copy,只copy第一层。["Jerry","Tom"]里面copy的是内存地址,所有改变第二次里面数据都会变化
1 a = copy.copy(names3)
2 b = names3[:]
3 c =list(names3) 工厂函数
这三种方式一样,都是浅拷贝
'''
print("浅拷贝的使用 老公老婆的共同财产")
person = ["name",["saveing",100]]
p1 = person[:]
p2 = person[:]
p1[0] = "Jerry"
p2[0] = "Tom"

p1[1][1] = 50

print(p1)
print(p2)


print('')
print("深层复制----name6") #name6 = copy.deepcopy(names3) #深拷贝 完全独立

print("步长切片")
print(names3[::2])#隔开2个打印
print(names3[0:-1:2])#与上相比 遵循顾头不顾尾

print("")
print("for 循环 ")
for key in names3:
print(key)

 

五 元组

元祖跟列表差不多,切片等操作都一样,唯一是不能变,可以说了不可变的列表。所以只有count()/index()这两个方法。

使用元祖的时候注意储存的值不可变的数据,程序用它来存储不可变的数据

count(参数)查找有参数在列表出现次数

index(参数)返回参数在列表的下标

 

六 字典

print("字典是无序的,因此没有字典的下标的说法")

dict1 = {
"num0001":"Jerry",
"num0002":"Tom",
"num0003":"Json",
"num0004":"Jack",
}

print("查找")
print(dict1["num0001"])#通过key寻找值

print("增加")
dict1["num0005"] = "string"
print(dict1)

print("修改")
dict1["num0001"] = "老师"
print(dict1)

print("删除")
del dict1["num0002"]
print(dict1)


print("pop必须写删掉谁")
print(dict1.pop("num0005"))
print(dict1)

print("popitem随机删掉")


print("")
print("查找的其他方法")
dict2 = {
"num0001":"Jerry",
"num0002":"Tom",
"num0003":"Json",
"num0004":"Jack",
}

print("直接查找dict[]里面填写key,要是找不到key会报错")
# value = dict2["num0006"] KeyError: 'num0006'
print("通过get可以解决这个问题")

value = dict2.get("num0006")#如果key找不到会返回None,而不会报错
print(value)

print("num0005" in dict2) #表示判断num0003是不是在dict2里面.python2.x中用dict2.has_key()
print(dict2)


print("多级字典的嵌套")

dict3 = {
"num0001":"Jerry",
"num0002":"Tom",
"num0003":"Json",
"num0004":"Jack",
}

b = {
"num0001":"Jerry_new",
1:2,
3:5
}


print("update()合并字典如果有相同的key的话进行修改")
dict3.update(b)
print(dict3)
print("items()把字典转为了列表")
print(dict3.items())
print("fromkeys创建字典并初始化 test1是他们共享的数据")
dict4 = dict.fromkeys([6,7,8],"test1")
print(dict4)

dict5 = dict.fromkeys([6,7,8],[1,{"name":"Jerry"}])
print(dict5)
dict5[6][1]["name"] = "Json"
print(dict5)

print("字典的循环")
dict6 = {
"num0001":"Jerry",
"num0002":"Tom",
"num0003":"Json",
"num0004":"Jack",
}

#高效也最建议使用
for i in dict6:
  print(i,dict6[i])

print("--------------")

#dict6.items()是先转换为列表,效率低
for k,v in dict6.items():
  print(k,v)

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Authon:Jerry Z

dict1 = {
"num0001":"Jerry",
"num0002":"Tom",
"num0003":"Json",
"num0004":"Jack",
}

print(dict1["num0001"])

dict1["num0005"] = "Jackson"
print(dict1)

dict1["num0005"] = "Jackson1"
print(dict1)

value = dict1.get("num0005")
print(value)
View Code

 

 

 

 

 

 

posted @ 2019-08-30 12:17  张振华Python  阅读(156)  评论(0编辑  收藏  举报