python &操作,例解Python:Python编程快速入门践行指南
文章0背景1基本概念和操作1.1概念1.2操作2基本数据结构2.1列表2.2元组2.3 dict(字典):2.4 Set(集合)——3354特殊形式的字典2.5相互转换3、循环3.1条件(if) 3.2循环(while) 4函数(def) 5异常(try、exception、else、Finally) 5.1捕捉并处理异常5.2抛出异常6文件和数据管理6。1使用with管理文件读取6.2打开文件的方法(r,r,a,a,w,w) 6.3读写文件6.4使用pickle存储和读取数据6.5数据库6.5.1使用mysql数据库6.5.2使用sqlite数据库
7(类)7.1创建基类7.2装饰器7.2.1自含属性7.2.1.1属性属性7.2.1.2 static method和classmethod属性7.2.2自定义属性7.2.2.1无返回值,参数7.2.2.2有返回值和参数。
7.3继承8打印,使用9排序10模块
0因为项目涉及到做数据分析,需要用到python,所以借此机会学习了一些基本的python语法。学习的参考书是《Head first of python》,以实际小项目为指导,穿插各种基础语法。学起来不枯燥。本文是基于参考书的python通用语法总结。
1基本概念和操作
1.1概念1、BIF(内置函数):即内置函数,没有任何导入模块,比如打印函数;2.目标标识符:变量或函数的名称;3.变量不需要声明自己的类型,编译器会自己做类型派生;4、花色:代码块,按缩进分组,例如:num=[1,2,3,4]
对于n in num:
Print(n) #操作代码5,区分大小写;6.在命令行中使用ctr/alt p/n查看前后说明;7、字节码:文件后缀命名为pyc,是在导入自己编写的模块时生成的,以防止Python每次运行时重新解析源代码(在__pycache__)的子目录中),为了加快程序运行速度;
8.检查模块的位置:导入系统
Print(sys.path)9,切片
格式:[开始偏移:结束[偏移[:步长]]
注意:name2=qwer ,带左密封和右开口
打印(名称2[0:2])
# Print qw10,打印模块中的所有变量和方法:导入数学
Print(dir(math))11,它返回全局和本地名称空间中的名称print(locals())。
Print(globals())12,方法链(从左到右)数据= 12345789
Print (data.strip()。split(,))13、函数字符串链(从右到左)数据=[1,5,2,4]
打印(排序(数据))14、工厂功能
创建某种新的数据行:例如:
A=dict() #创建字典类型数据
1.2作业名称=[江, hjx]
Print(type(name)) #查看数据类型
Print(len(name)) #检查长度
is instance(name,list): #确定类型
打印(“它的列表”)
Print(id(name)) #打印id
对于I,n in enumerate(name): #列出数据和数据下标
print(i: str(i) n: n)
name2=qwer
对于i in range(len(name2)): # print字符串range(start,stop[,step])开始、结束、步长
打印(名称2[i])
2基本数据结构
2.1列表功能:可以存储任何类型的数据。
[]操作:
sch=[]
Sch.append(中国科技大学)#追加到末尾
Sch.extend (NTU ,浙江大学)#添加列表
Sch.insert(1, Fudan) #在第二个位置添加一个元素
Sch.pop(1) #正在删除第二个元素。
Shc.remove(浙大)#删除出现的第一个元素。
Shc.index(中国科技大学)#打印元素的位置
Shc.count(中国科技大学)#获取指定元素在列表中出现的次数。
2.2元组(祖先)特征:不可变,可以理解为常量类型列表。
()name=(“江雪”)
2.3 dict(字典):特点:和map一样,有键和值,一个键可以对应多个值。
{}操作
Sch={1:南大,2:浙大 }
Sch.keys() #取出所有键值
Sch.values() #取出所有值
#遍历键和值
对于键,sch.items()中的值:
print(str(key) : str(value))
#关键排序
Sch=sorted (sch.items(),key=lambdasch: sch [0]) #,reverse=true,是降序吗?
Sch=dict(sch) #复制到idct
#按值排序
Sch=sorted (sch.items(),key=lambda x: x [1],reverse=true) # reverse是是否按降序排序。
sch=字典(sch)
2.4 Set(集合)——3354字典的特殊形式特征:字典只有关键字,不能重复,唯一。
a=[1,2,3,1]
B=set(a) #将列表和元组等迭代对象转换成集合
2.5相互转换列表转换(字典、祖先、集合):
a=[5,3,2,4,2]
b=[c , p , j]
C=dict(zip(a,b)) # to字典
打印(类型(c),c)
D=元组(a) #转换组
打印(类型(d),d)
E=集合(a) #变换集合
Print(type(e),e) # {2,3,4,5}元组变换(同上):
a=(5,3,2,4,2)
b=[c , p , j]
C=dict(zip(a,b)) # to字典
打印(类型(c),c)
D=元组(a) #转换组
打印(类型(d),d)
E=集合(a) #变换集合
Print(type(e),e) # {2,3,4,5}字典转换(祖先,列表,集合):
dict1={1:a ,2:b ,3:c}
print(list(dict1.keys()))
打印(list(dict1.values()))
打印(tuple(dict1.keys()))
打印(tuple(dict1.values()))
print(set(dict1.keys()))
print(set(dict1.values()))
print(tuple(dict 1 . items())#生成祖先的祖先。
Print(list(dict1.items())) #以祖先为单位生成一个列表
print(set(dict 1 . items())#以祖先单位生成集合
3.条件和周期
3.1条件(if)格式:
如果条件:
#组
Elif条件:
#组
否则:
# group注意:使用not可以否定条件。
3.2 while格式:
对于序列中的目标标识符:
#组
函数(def):复用需要复用的代码。
格式:
定义函数名(参数列表):
功能方法
5异常(尝试、异常、否则、最终)
5.1捕获和处理异常格式
尝试:
#捕捉异常
#引发IOError
异常发生时除IOError as err: # execute。
#处理异常
print(文件未写入 str(err))
#法律的反常
传递# null语句或null语句
否则:
打印(“未发生异常”)
最后:#异常无论发生与否都会被执行。
打印(“最终”)
5.2 Throw Exception raise[Exception[,args [,traceback]]]语句中的异常是任何一种类型的异常(例如NameError)参数标准异常,args是其自身提供的异常参数。
最后一个参数是可选的(实践中很少使用)。如果存在,就是追踪异常对象。
6.文件和数据管理
6.1使用with管理文件读入,而不使用with read-in语句:
尝试:
data=open(/Users/mac/test.txt )
print(data.readline(),end= )
除了IOError作为err:
print(文件错误: str(err )
最后:
If data in locales():#如果文件已打开
Data.close()使用上下文管理器(无需手动关闭打开的文件):
尝试:
#上下文管理
以(/users/MAC/data science/test . txt , a )为数据:
打印(它是.文件=数据)
除了IOError作为err:
print(文件错误: str(err )
6.2打开文件的方法(r,r,a,a,w,w)默认的打开方法是r。
一种方式打开文件,另外一种方式打开。
答:附加写入模式开启,不可读;答:附加读写模式开启。
W new write only,w new read and write,这两种方式都会清除文件的内容,即文件不需要预先存在,如果已经存在,就会被覆盖。
w模式开启,无法读取;我们能读和写
只读,R读写,不创建,即需要预先存在一个文件进行读写。如果没有文件,将会报告一个错误。
6.3写入和读取文件的示例:
导入系统
def test_print(the_list,f=sys.stdout):
print(the_list,end= ,file=f)
尝试:
#写一个文件
打开(/Users/MAC/PycharmProjects/hello/test 3 . txt , w )作为文件:
test_print([1,2, 3],file)
#文件读出
打开(/Users/MAC/PycharmProjects/hello/test 3 . txt , r )作为文件:
data=file.readline()
打印(数据)
除了IOError作为err:
打印(文件错误: str(err )
6.4 使用泡菜进行数据存储和读出要求以二进制方法打开文件:
格式:
进口泡菜
尝试:
# 写文件
以打开(/Users/MAC/PycharmProjects/hello/test。泡菜,世界银行)为数据:
pickle.dump([1,2, a],数据)
# 读文件
以打开(/Users/MAC/PycharmProjects/hello/test。泡菜, rb )为数据:
a_list=pickle.load(数据)
打印(列表)
除了输出异常作为错误:
打印(文件错误: str(err )
6.5 数据库
6.5.1 使用关系型数据库数据库导入已安装
尝试:
conn=pymysql。连接(host= 127。0 .0 .1 ,user=root ,passwd=root ,db=db_testAnalyzeData ,port=9996,charset=utf8) #连接数据库
cur=conn.cursor() #使用游标
尝试:#执行结构化查询语言语句
cur.execute(从客户中选择)
db.commit() #提交修改
除了:#出现错误,则回滚
db.rollback()
data=cur.fetchall()
对于数据中的d:
print( cust _ id: str(d[0]) cust _ name: d[2])
cur.close() #关闭游标
conn.close() #关闭数据库连接
例外情况除外:
打印(查询失败)使用通配符:
当前执行(
SELECT quantity,to_big_ratio,is_refund,create_time FROM trans_detail其中com_name=%s ,
(商品名称))
6.5.2 使用数据库数据库导入sqlite3
connection=sqlite3。连接(数据。SQLite’)
游标=connection .游标()
# 使用通配符
光标。执行(插入学校(姓名,出生日期)值(?),(姓名,出生日期))
cursor.close()
connection.close()
七类(类别)类的方法(方法):代码(共享)
类的属性(属性):数据(不贡献)
类的实例:实例化后的数据对象
7.1 基本类的创建其中自己为指向类的指针
# 类测试
一级运动员:
# 构造函数
def __init__(self,a_name,a_age=None,a_grade=dict()):
self.name=a_name
self.age=a_age
自我等级=a _成绩
# 析构函数
def __del__(self):
self.name=
self.age=0
self.grades={}
# 比较
def __cmp__(自身,其他):
如果自我年龄其他年龄:
打印(你有点年轻)
elif self.age other.age:
打印(你有点成熟)
否则:
打印(刚刚好)
# 下面两个方法作用相同,都是打印类信息
def __repr__(self):
# 在命令端口输入对象名,也可以输出
返回("运动员类别:姓名、年龄、成绩")
def __str__(self):
# 只能使用打印(对象)
等级=
对于键,self.grades.items()中的值:
grade=str(key) : str(value)
return (self.name str(self.age) 等级)
# 对字典进行操作
def __getitem__(self,key): #返回字典值
if key==田径:return self.grades[田径]
elif key==游泳:return self.grades[游泳]
elif key==健身:return self.grades[健身]
否则:返回"未知"
def __setitem__(自身,键,值):#设置字典值
self.grades[key]=值
def __delitem__(self,key): #删除字典值
del self.grades[key]
a=运动员(韩降雪,42岁,{ 田径:98, 游泳:82, 健身:90})
b=运动员(詹姆斯,36,{ 田径:90, 游泳:96, 健身:98})
一个[田径]=92
del a[游泳]
打印(一份)
a.__cmp__(b)
a.__del__()
打印(a)共和国和__str__的区别:
7.2 装饰器
7.2.1自带属性
7.2.1.1房产属性使用了财产属性的方法,调用时不需要加(),为的是提供更加友好访问类数据的方式。
班级人员:
def __init__(self,name):
自我. name=name
自我。_年龄=20岁
@属性#设置为属性
定义年龄(自己):
打印( @property )
回归自我。_年龄
@age.setter #设置属性值
定义年龄(自我,价值):
如果不是isinstance(value,int):
提高值错误(年龄非法)
如果值为0或值为120:
提高值错误(年龄非法)
自我.年龄=值
@age.getter #返回属性值
定义年龄(自己):
打印( @age.getter )
回归自我。_年龄
@age.deleter #删除属性值
定义年龄(自己):#删除后就找不到对象属性
自我年龄
p=人(詹姆斯)
打印(字符串(页面))
人。年龄=60
打印(字符串(页面))
德尔佩奇
打印(字符串(页面))#因为属性被删,会报错,属性错误:年龄
7.2.1.2静态方法和分类方法属性共同点:
可以直接调用,而无需实例化该类。
差异:
类默认传递一个类本身(cls),所以它可以调用classmethod中的方法和数据而不需要被实例化,并且它可以用于初始化参数和其他目的。
A类():
数字=0
@静态方法
def静态测试():
打印(“静态测试”)
@classmethod #只在类中运行而不在实例中运行的方法
Classmethod _ test (cls): #参数cls是类本身。
打印( classmethod_test )
cls.number=20
Cls.test() #调用可以不初始化的方法
定义测试():
打印(“测试”)
def print_number(自身):
print(str(自身编号))
a=A()
a .打印编号()
静态测试()
A.classmethod_test()
# a.classmethod_test()
a .打印编号()
7.2.2自定义属性的功能:扩展已有功能,无需修改。
7.2.2.1没有返回值,参数调用的顺序是:run_time— warp— foo。
导入时间
定义运行时间(函数):
定义扭曲():
start=time.time()
Temp=func() #执行函数
end=time.time()
打印(程序执行时间:,结束-开始)
打印(“扭曲”)
返回经线
@run_time
def foo():
打印(“你好”)
foo()
#相当于不带装饰器的foo
# foo=运行时间(foo)
# foo()
具有返回值和参数的7.2.2.2用例:
导入时间
定义运行时间(函数):
def warp(*args,**kwargs):
print(type(args)) #
打印(类型(夸脱))#
print(args) # foo的参数列表
# ({a: 1, b: 2, c: 3},)
印刷品(夸脱)
# {arg2: 1234 , arg3 :哈哈哈, arg4 :拉拉拉拉 }
start=time.time()
Temp=func(*args,**kwargs) #执行函数
end=time.time()
打印(程序执行时间:,结束-开始)
返回温度
返回经线
@run_time
def foo(n,**kwargs):
temp_num=2
return(n[ a ]1)*临时编号
print(str(foo({a:1, b:2, c:3},arg2=1234 ,arg3=哈哈哈,arg4=拉拉拉拉))
#相当于不带装饰器的foo
# foo=运行时间(foo)
# foo()*args:用于变长参数;
**kwargs:用于键值参数。
def test_args(*args):
打印(类型(参数))
打印(参数)
def test_kwargs(**kwargs):
打印(类型(夸脱))
印刷品(夸脱)
test_args(1,2, 1231 )
test_kwargs(arg1=1,arg2=12 ,arg3=asdf )
#输出:
#
# (1, 2, 1231)
#
# {arg1: 1, arg2: 12 , arg3: asdf}
7.3继承A类(列表):
def __init__(self,number):
列表。__init__([]) #初始化父类
self.number=数字
a=A([1,2,3])
a .追加(9)
打印(一份)
8打印使用格式:
导入系统
print(value,sep= ,end=\n ,file=sys.stdout)sep:
用于分隔多个对象。默认值是一个空格。您也可以输入特定值(符号、数字、中文)来分隔内容。
End:用于设置结尾。默认值是换行符 \n 。您也可以输入另一个值来结束。
文件:输出文件,默认输出到屏幕。
测试:
a=qwer
b=2
print(a,b,sep= ,end= ,file=open(test23.txt , w ))
9排序和已排序的区别:
Sort():就地排序,改变原来的顺序;
Sorted():复制原始序列,对新序列进行排序,并在不修改原始序列的情况下返回。
测试:
a=[1,5,4,2]
打印(排序(a)) # [1,2,4,5]
打印(a) # [1,2,4,5]
排序()
打印(a) # [1,2,4,5]
10模块格式:
导入模块名称
模块的fromimport函数示例:
导入数学
从时间进入睡眠
math.cos(2)
Sleep(2) #不要使用包名
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。