1、python的特点和应用领域
python语言的特点:优雅 明确 简单
python适合的领域:web网站和各种网络服务 系统工具和脚本 作为“胶水”语言把其他语言开发的模块包装起来方便使用
python不适合的领域:贴近硬件的开发(比如操作系统) 移动开发(iso和安卓) 游戏开发C/C++
python和java以及c语言的对比:
语言 类型 运行速度 代码量
c 编译为机器码 非常快 非常多
java 编译为字节码 快 多
python 解释执行 慢 少
python缺点一:运行速度慢,但是开发速度快。目前cpu越来越快,但是网络和硬盘的速度却没有这么快,大量的代码运行起来瓶颈不在于python代码,而在于数据库和网络调用。
python的缺点二:源码不能加密。
2、python的安装及环境配置。
python是一种跨平台语言,可以运行在windows、linux、unix平台上。在windows上开发的语言也可以在linux上运行。
windows上安装python:python的官网:python.org。登录官网 选择download for windows下载python3.7,下载之后安装(直接下一步直至完成)。配置环境变量:我的电脑-属性-高级系统设置-环境变量-找到path把python的安装位置加在最后,用;分隔。命令行输入 python如果出现python的版本信息则安装配置成功。
3、python的基础语法
3.1 python的数据类型
整数:例如1,-8008,0;十六进制用0x作前缀,例如0xff00.
浮点数:1.23*10^8可以写为1.23e8。10用e代替。
字符串:字符串用'' 或 ""括起来,例如'abc',"xyz"
布尔值:True,False注意大小写,布尔值可以进行 and,or,not进行运算。
空值:None。None不为0.
python之print语句,python3之后的版本输出时要加()
print "abc" 即可输出abc字符串
print "hello","world"输出结果为: Hello world python检测到,时会输出空格。
python的注释:#开头,至行尾。
python的变量:在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文、数字和下划线的组合,且不能用数字开头,比如:a=3,t_007="T202"
则表示,a是一个整数,t_007是一个字符串
python的字符串,用''或者""括起来,如果字符串本身包含',"时,用\进行转义,常用的转义字符有\n表示换行 \t表示一个制表符 \\表示\本身。
raw字符和多行字符:如果一个字符中包含很多需要转义的字符,则在这行字符前加r表示这是一个raw字符,里面的字符就不需要转义了。例如:r"\~~~/".但是r"..."表示法不能表示包含'或者"的字符,也不能表示多行字符。'''....'''表示这是一个多行字符。例如"line1\nline2\nline3\n"就和'''line1
line2
line3'''一样。
python中的Unicode字符串:在字符串前面加u就可以正常显示中文,如果中文字符串在python环境下遇到unicodedecodeError只需在第一行添加注释:
# -*- coding: utf-8 -*-
4、python读取文件
my_file=open('myfile.txt','w')#以写的方式打开,‘r’以只读的方式打开 'a'往文件后面添加内容
my_file.write(text)
my_file.close()
file=open('myfile.txt','r')
content=file.read()
print(content)
readline()#按行读取
readlines()#读取全部行 保存到一个list中
5、class
class Cal:
size=18
price=10
def add(self,x,y):
return x+y
def minus(self,x,y):
return x-y
cal=Cal()
print(cal.price)
print(cal.add(1,2))
5.1 init()
def __init__(self,size,price,hight,width):
self.size=size
self.price=price
self.hight=hight
self.width=width
6、input
a_input=input("please input :") #input返回的是一个字符串
print(a_input)
7、元组 列表
a_tuple=(1,2,3)
a_list=[1,2,3,4,5,6]
for index in range(len(a_list)): #range(n)生成一个从1到n-1的迭代器
print(index,a_list[index])
a=[1,2,3,4,5,6]
a.append(0)#追加元素
a.insert(1,0)#第一个参数是添加的位置,第二个参数是要添加的元素
a.remove(6)#参数去掉的是列表里第一次出现的这个元素
print(a[-1])#打印出最后一个值
print(a[0:3])#打印出0到2的元素
print(a[:3])
print(a[3:])#打印第三元素之后的元素
print(a[-3:])#打印最后三个元素
print(a.index(4))#第一个出现4的位置
print(a.count(4))#4的个数
a.sort()#从小到大排序
a.sort(reverse=True)#从大到小排序
8、多维列表(详见numpy和pandas)
9、字典dictionary
d={'apple':[1,2,3],'pear':2,'orange':3} #字典是键值对的形式
print(d['apple'][1])
del d['pear'] #删除字典中的某个元素
d['c']=20 #给字典添加元素
10、错误处理try
try:
file=open('eee','r+')
except Exception as e:
print(e)
a=input('if you want to create eee please input y')
if a=='y':
file=open('eee','w')
else:
pass
else:#没有错误的话执行该内容,如果执行了except不执行该模块
file.write('sssss')
file.close()
11、map zip lambda
a=[1,2,3]
b=[4,5,6]
print(zip(a,b))#输出是<zip object at 0x0000000002BFA048>
print(list(zip(a,b)))#输出是[(1, 4), (2, 5), (3, 6)] zip可以合并 多个元素
for i,j in zip(a,b):
print(i*2,j/2)
def fun1(x,y):
return (x+y)
print(fun1(2,3))
fun2=lambda x,y:x+y
print(fun2(2,3))
print(map(fun1,[1],[2]))#<map object at 0x0000000002DB9E80>
print(list(map(fun1,[1],[2])))#[3]
print(list(map(fun1,[1,2],[2,3])))#[3, 5]
12、copy和deepcopy
import copy
a=[1,2,[3,4]]
b=a
c=copy.copy(a)
d=copy.deepcopy(a)
print(id(a)==id(b))#true
print(id(a)==id(c))#false
print(id(a)==id(d))#false
a[0]=-1
print(b,c,d)
a[2][0]=-1
print(b,c,d)
[-1, 2, [3, 4]] [1, 2, [3, 4]] [1, 2, [3, 4]]
[-1, 2, [-1, 4]] [1, 2, [-1, 4]] [1, 2, [3, 4]]
13、pickle存放数据
a_dict={'a':[1,2,3],'b':'string','c':555}
file=open('pickle_example.pickle','wb')
pickle.dump(a_dict,file)#把dict的内容给file
file.close()
with open('pickle_example.pickle','rb') as file: #with语句用完不用关闭
a=pickle.load(file)
print(a)
14、set类型
char_list=['c','a','a','b','b','b']
print(set(char_list)) #{'a','c','b'}去除list中重复出现的项,返回值是set类型
print(type(set(char_list)))
sentence='i am from beijing'
print(set(sentence)) #{'m', 'r', 'b', 'j', 'f', 'o', 'e', 'a', 'g', ' ', 'n', 'i'}
char1=set(char_list)
char1.add('x') #往char1里添加元素x
char1.clear()#清除该set
print(char1.remove('x'))#None
print(char1)#{'a', 'b', 'c'}
char1.discard(‘y’)#检查如果有y就删除y没有就不操作 不会报错
char_list=['c','a','a','b','b','b']
set1=set(char_list)
set2={'a','r','i'}
print(set1.difference(set2))#{'c', 'b'}
print(set2.difference(set1))#{'r', 'i'}
print(set1.intersection(set2))#{'a'}
15、正则表达
import re
#简单Python匹配
pattern1='cat'
pattern2='bird'
string='dog runs to cat'
print(pattern1 in string) #true
print(pattern2 in string)#false
#用正则匹配
print(re.search(pattern1,string))#<_sre.SRE_Match object; span=(12, 15), match='cat'>
print(re.search(pattern2,string))#none
#匹配多种可能
ptn=r"r[ua]n"
print(re.search(ptn,string))#匹配ran或者run[]表示或者
#匹配很多种
print(re.search(r"r[A-Z]n",string))
print(re.search(r"r\dn",string)) #\d表示所有的数字形式 \D所有的非数字形式
#\s所有的空格 \S所有的非空格符 \w所有的字母数字下划线 \W和w相反
#\brun\b只有run前后各一个空格能匹配到 \B不管有没有空格都能匹配到
#\\匹配\ .匹配任何非\n的东西 ^dog只有dog出现在句首才能匹配到
#cat$只有cat在句尾才能匹配到