python快速入门—————附完整示例代码

网友投稿 239 2022-09-01


python快速入门—————附完整示例代码

文章目录

​​0 背景​​​​1 基本概念和操作​​

​​1.1 概念​​​​1.2 操作​​

​​2 基本数据结构​​

​​2.1 list(列表)​​​​2.2 tuple(元祖)​​​​2.3 dict(字典):​​​​2.4 Set(集合)————字典的特殊形式​​​​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 类(class)​​

​​7.1 基本类的创建​​​​7.2 装饰器​​

​​7.2.1自带属性​​

​​7.2.1.1 property属性​​​​7.2.1.2 staticmethod和classmethod属性​​

​​7.2.2 自定义属性​​

​​7.2.2.1 不带返回值、参数​​​​7.2.2.2 带返回值、参数​​

​​7.3 继承​​

​​8 print使用​​​​9 排序​​​​10 模块​​

0 背景

因为项目涉及到做数据分析,因此需要用到python,所以借此机会学习了一些基本的python语法,学习使用的参考书籍为《Head first of python》,该书以实际的小项目为指引,从中穿插各种基本语法,学习起来也不枯燥。 本文正是以参考书籍为大纲,展开的python常用语法总结。

1 基本概念和操作

1.1 概念

num = [1, 2, 3, 4]for n in num: print(n) # 操作代码

import sysprint(sys.path)

9,切片格式:[起始偏移量 start:终止偏移量 end[:步长 step]]注意:左封右开

name2 = 'qwer'print(name2[0:2])# 打印qw

10,打印模块中的所有变量和方法:

import mathprint(dir(math))

11,返回全局和局部命名空间里的名字

print(locals())print(globals())

12,方法串链(从左到右)

data = ' 12345,789'print(data.strip().split(','))

13,函数串链(从右到左)

data = [1, 5, 2, 4]print(sorted(data))

14,工厂函数创建某种类型的新数据线:

例如:

a = dict() # 创建字典类型数据

1.2 操作

name = ['江雪韩', 'hjx']print(type(name)) # 查看数据类型print(len(name)) # 查看长度if isinstance(name, list): # 判断类型 print("It's list")print(id(name)) # 打印idfor i, n in enumerate(name): # 列出数据和数据下标 print('i: ' + str(i) + ' n:' + n) name2 = 'qwer'for i in range(len(name2)): # 打印字符串 range(start,stop[,step]) 开始,结束,步长 print(name2[i])

2 基本数据结构

2.1 list(列表)

特点:可以存储任何类型的数据

[]

操作:

sch = []sch.append("中科大") # 追加到末尾sch.extend("南大", "浙大") # 添加列表sch.insert(1, "复旦") # 在第二个位置添加元素sch.pop(1) # 在删除第二个元素shc.remove('浙大') # 移除第一个出现的元素shc.index('中科大') # 打印元素的位置shc.count('中科大') # 获得指定元素在列表中出现的次数

2.2 tuple(元祖)

特点:不可改变,可以理解为常量类型的列表

()

name = ('江雪')

2.3 dict(字典):

特点:就像map一样,有键和值,一个键可以对应多个值

{}

操作

sch = {1:'南大', 2:'浙大'}sch.keys() # 取出所有key值sch.values() # 取出所有values值#遍历键和值for key,value in sch.items(): print(str(key) + ": " + str(value))# 按键排序sch = sorted(sch.items(), key=lambda sch: sch[0]) # ,reverse=True 是否降序排列sch = dict(sch) # 重现转为idct# 按值排序sch = sorted(sch.items(), key=lambda x: x[1], reverse=True) # reverse为是否降序排列sch = dict(sch)

2.4 Set(集合)————字典的特殊形式

特点:只有键的字典,不能重复的且唯一

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)) # 转字典print(type(c), c)d = tuple(a) # 转元祖print(type(d), d)e = set(a) # 转集合print(type(e), e) # {2, 3, 4, 5}

元祖转换(同上):

a =(5, 3, 2, 4, 2)b = ['c', 'p', 'j']c = dict(zip(a, b)) # 转字典print(type(c), c)d = tuple(a) # 转元祖print(type(d), d)e = set(a) # 转集合print(type(e), e) # {2, 3, 4, 5}

字典转换(元祖、列表、集合):

dict1 = {1:'a',2:'b',3:'c'}print(list(dict1.keys()))print(list(dict1.values()))print(tuple(dict1.keys()))print(tuple(dict1.values()))print(set(dict1.keys()))print(set(dict1.values()))print(tuple(dict1.items())) #生成元祖为单位的元祖print(list(dict1.items())) #生成元祖为单位的列表print(set(dict1.items())) #生成元祖为单位的集合

3 条件、循环

3.1 条件(if)

格式:

if 条件: # 组elif 条件: # 组 else: # 组

注意:使用not可以对条件取反

3.2 循环(while)

格式:

for 目标标识符 in 序列: # 组

4 函数(def)

作用:复用需要重复使用的代码 格式:

def 函数名 (参数列表): 函数方法

5 异常(try,exception,else,finally)

5.1 捕获处理异常

格式

try: # 捕捉异常 # raise IOErrorexcept IOError as err: # 异常发生时执行 # 处理异常 print('The file is not writting' + str(err)) # 忽律异常 pass # 空语句或null语句else: print('没有异常发生') finally: # 异常无论是否发生,都会执行 print('finally')

5.2 抛出异常

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

6 文件、数据管理

6. 1 使用with管理文件读入

不使用with读入语句:

try: data = open('/Users/mac/test.txt') print(data.readline(), end='')except IOError as err: print('File Error: '+ str(err))finally: if 'data' in locals(): # 如果文件被打开 data.close()

使用上下文管理器with(不需要手动关闭打开的文件):

try: #上下文管理 with open('/Users/mac/数据科学/test.txt', 'a+') as data: print("It is...", file=data)except IOError as err: print('File Error: '+ str(err))

6.2 打开文件的方法(r,r+,a,a+,w,w+)

默认的打开方式是r

""""a,a+的方式打开文件,附加方式打开 a:附加写方式打开,不可读;a+: 附加读写方式打开w新建只写,w+新建读写,二者都会将文件内容清零,即事先不需要有该文件存在,若已经存在则会覆盖w方式打开,不能读出;w+可读写r只读,r+读写,不创建,即需要事先存在一个文件以供读/读写,若不存在文件会报错"""""

6.3 进行文件写入和读出

例子:

import sysdef test_print(the_list, f = sys.stdout): print(the_list, end='', file=f)try: # 写文件 with open('/Users/mac/PycharmProjects/hello/test3.txt', 'w') as file: test_print([1, 2, '3'], file) # 文件读出 with open('/Users/mac/PycharmProjects/hello/test3.txt', 'r') as file: data = file.readline() print(data)except IOError as err: print('File Error: '+ str(err))

6.4 使用pickle进行数据存储和读出

要求以二进制方法打开文件:

格式:

import pickletry: # 写文件 with open('/Users/mac/PycharmProjects/hello/test.pickle', 'wb') as data: pickle.dump([1, 2, 'a'], data) # 读文件 with open('/Users/mac/PycharmProjects/hello/test.pickle', 'rb') as data: a_list = pickle.load(data) print(a_list)except IOError as err: print('File Error: '+ str(err))

6.5 数据库

6.5.1 使用mysql数据库

import pymysqltry: conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='db_testAnalyzeData', port=9996, charset='utf8') # 连接数据库 cur = conn.cursor() # 使用游标 try: # 执行sql语句 cur.execute('SELECT * FROM Customers') db.commit() # 提交修改 except: # 出现错误,则回滚 db.rollback() data = cur.fetchall() for d in data: print("cust_id: " + str(d[0]) + ' cust_name:' + d[2]) cur.close() # 关闭游标 conn.close() # 关闭数据库连接except Exception: print('查询失败')

使用通配符:

cur.execute( "SELECT quantity,to_big_ratio,is_refund,create_time FROM trans_detail WHERE com_name = %s", (commodityName))

6.5.2 使用sqlite数据库

import sqlite3connection = sqlite3.connect('data.sqlite')cursor = connection.cursor()# 使用通配符cursor.execute("INSERT INTO school(name, dob) VALUES (?,?)", (name, dob))cursor.close()connection.close()

7 类(class)

类的方法(method):代码(共享) 类的属性(attribute):数据(不贡献) 类的实例:实例化后的数据对象

7.1 基本类的创建

其中self为指向类的指针

# 类测试class Athlete: # 构造函数 def __init__(self, a_name, a_age = None, a_grade = dict()): self.name = a_name self.age = a_age self.grades = a_grade # 析构函数 def __del__(self): self.name = '' self.age = 0 self.grades = {} # 比较 def __cmp__(self, other): if self.age > other.age: print('你有点年轻') elif self.age < other.age: print('你有点成熟') else: print('刚刚好') # 下面两个方法作用相同,都是打印类信息 def __repr__(self): # 在命令端口输入对象名,也可以输出 return ('Athlete Class:name、age、grades') def __str__(self): # 只能使用print(对象) grade = '' for key, value in self.grades.items(): grade += str(key) + ':' + str(value) return (self.name + ' ' + str(self.age) + ' ' + grade) # 对字典进行操作 def __getitem__(self, key): # 返回字典值 if key == '田径': return self.grades['田径'] elif key == '游泳': return self.grades['游泳'] elif key == '健身': return self.grades['健身'] else: return 'unknown' def __setitem__(self, key, value): # 设置字典值 self.grades[key] = value def __delitem__(self, key): # 删除字典值 del self.grades[key]a = Athlete('jiangxuehan', 42, {'田径':98, '游泳':82, '健身':90})b = Athlete('james', 36, {'田径':90, '游泳':96, '健身':98})a['田径'] = 92del a['游泳']print(a)a.__cmp__(b)a.__del__()print(a)

__repr__和__str__的区别:

7.2 装饰器

7.2.1自带属性

7.2.1.1 property属性

使用了property属性的方法,调用时不需要加(),为的是提供更加友好访问类数据的方式。

class people: def __init__(self, name): self._name = name self._age = 20 @property # 设置为属性 def age(self): print('@property') return self._age @age.setter # 设置属性值 def age(self, value): if not isinstance(value, int): raise ValueError('年龄非法') if value < 0 or value > 120: raise ValueError('年龄非法') self._age = value @age.getter # 返回属性值 def age(self): print('@age.getter') return self._age @age.deleter # 删除属性值 def age(self): # 删除后就找不到对象属性 del self.agep = people('james')print(str(p.age))people.age = 60print(str(p.age))del p.ageprint(str(p.age)) # 因为属性被删,会报错,AttributeError: age

7.2.1.2 staticmethod和classmethod属性

共同点:

都可以通过不示例化类,就可以直接调用

区别:

classmethod由于默认传递了一个类的本身(cls),因此可以调用类中不需要示例化的方法和数据,用于初始化参数等用途。

class A(): number = 0 @staticmethod def static_test(): print('static_test') @classmethod # 只在类中运行而不在实例中运行的方法 def classmethod_test(cls): # 参数cls就是类本身 print('classmethod_test') cls.number = 20 cls.test() # 调用可以不示例化的方法 def test(): print('test') def print_number(self): print(str(self.number))a = A()a.print_number()A.static_test()A.classmethod_test()# a.classmethod_test()a.print_number()

7.2.2 自定义属性

作用:再不修改已有函数的前提下,扩充已有函数。

7.2.2.1 不带返回值、参数

调用的顺序为:run_time—>warp—>foo

import timedef run_time(func): def warp(): start = time.time() temp = func() # 执行函数 end = time.time() print('程序执行时间: ',end - start) print('warp') return warp@run_timedef foo(): print('hello')foo()# 等同与不用装饰器的foo# foo = run_time(foo)# foo()

7.2.2.2 带返回值、参数

用例:

import timedef run_time(func): def warp(*args, **kwargs): print(type(args)) # print(type(kwargs)) # print(args) # foo的参数列表 # ({'a': 1, 'b': 2, 'c': 3},) print(kwargs) # {'arg2': '1234', 'arg3': 'hahaha', 'arg4': 'lalalala'} start = time.time() temp = func(*args, **kwargs) # 执行函数 end = time.time() print('程序执行时间: ', end - start) return temp return warp@run_timedef foo(n, **kwargs): temp_num = 2 return(n['a'] + 1)*temp_numprint(str(foo({'a':1,'b':2,'c':3}, arg2 = '1234', arg3 = 'hahaha', arg4 = 'lalalala')))# 等同与不用装饰器的foo# foo = run_time(foo)# foo()

*args:用于可变长参数;

**kwargs:用于键值参数。

def test_args(*args): print(type(args)) print(args)def test_kwargs(**kwargs): print(type(kwargs)) print(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 继承

class A(list): def __init__(self, number): list.__init__([]) # 初始化父类 self.number = number a = A([1,2,3])a.append(9)print(a)

8 print使用

格式:

import sysprint(value, sep = '', end='\n', file = sys.stdout)

sep:

用来间隔多个对象,默认值是一个空格。也可以输入特定的值(符号、数字、中文都可)来间隔内容。 end:用来设定以什么结尾,默认值是换行符"\n"。也可以输入其他值来结尾。 file:输出的文件,默认为输出到屏幕。

测试:

a = 'qwer'b = 2print(a, b, sep=' | ',end='', file=open('test23.txt','w'))

9 排序

sort和sorted的区别:

sort():原地排序,对原始序列进行改变;

sorted():复制原始序列,对新序列进行排序,并返回,不会修改原始序列。

测试:

a = [1,5,4,2]print(sorted(a)) # [1, 2, 4, 5]print(a) # [1, 2, 4, 5]a.sort()print(a) # [1, 2, 4, 5]

10 模块

格式:

import 模块名from 模块 import 函数

示例:

import mathfrom time import sleepmath.cos(2)sleep(2) # 不使用包名


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python简明教程--Set
下一篇:Python操作数据库-数据库编程接口(python数据接口开发)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~