一 python简介
# 主流语言的区别 c:c代码写完,编译(不同平台),跨平台运行,linux上源码安装软件,自行编译 java:一处编码,处处运行,java是编译型还是解释型?编译型,编译过程---把java源代码编译成字节码文件 .class ---不能直接运行在操作系统上---》jvm(java虚拟机),jvm运行至少要300M内存 jdk jre jvm javase javame javaee go:编译型,跨平台编译(windows平台可以编译出linux平台的可执行文件),所有go代码打成一个可执行文件 python:强类型动态语言,一行一行的解释 js:只能在浏览器中运行,nodejs php:web开发 # 将来从事的方向 1 python后端开发:做网站,前端可以是app,小程序的python后端 2 自动化云纹:收集服务器软件硬件信息(cmdb),jumpserver(堡垒机),sql审批,监控,日志收集,处理 3 自动化测试:selenium,appnium,pytest 4 数据分析 5 爬虫 6 量化交易 7 安全方向:端口扫描,弱口令扫描,sql注入,csrf工具,xss攻击 看书:python绝技:运用python成为顶级黑客 8 物联网 9 网络安全
二 数据类型
# == 和 is 的区别是:==是值相等,is是值和内存地址都相等 # python中一切皆对象,对象的实质,一个内存地址的指向 ''' python源码中,有pass的地方,是用c语言写的 ''' # type和object的关系 ''' type是objectd的类 type继承了object type是type自己的类 c语言的指针可以自己指向自己 object也是type实例化得到 所有类,除了object都是继承自object,包括type ''' # 一切对象的好处 ''' 不同类型之间的变量直接可以相关赋值 a = 100 a = 'xxx' 本质,变量都是指向了一个内存地址,变量赋值就是向内存申请内存地址 ''' # 浅拷贝和深拷贝的区别 ''' 1、Python 深拷贝和浅拷贝概念理解 浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。 深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。 2、浅拷贝 使用数据类型本身的构造器 对于可变的序列,还可以通过切片操作符 : 来完成浅拷贝 Python 还提供了对应的函数 copy.copy() 函数,适用于任何数据类型 ''' from copy import copy,deepcopy list1 = [1, 2, 3] list2 = copy.copy(list1) list1 = [[1, 2], (30, 40)] list2 = copy.deepcopy(list1)
三 可变和不可变类型
......
四 字符编码
......
五 闭包函数
......
六 面向对象进阶(反射、魔法语法)
https://www.cnblogs.com/liuqingzheng/articles/9949568.html
作业一
写一个类,有个那么属性,如果name赋值为非字符串,不通过
''' 两个知识点应用,自定义异常和魔法方法__setattr__的应用 ''' ''' 写一个类,有个那么属性,如果name赋值为非字符串,不通过 ''' # 自定义异常 class NoStrException(BaseException): def __init__(self, msg): self.msg = msg def __str__(self): return self.msg class Person(object): # __setattr__ 对象.属性的时候,自动触发 def __setattr__(self, key, value): # 判断value是不是该后面的对象,issubclass():判断前面的是不后面的子类 if isinstance(value, str): # maximum recursion depth exceeded while calling a Python object # 最深度递归异常,因为setattr(self, key, value),内部执行的self.key = value # self.key,会点属性拦截,自动触发__setattr__,就是死循环递归函数,解决方法,用__dict__的方法 # setattr(self, key, value) self.__dict__[key] = value # 第二种解决方法,不是对象调用方法,不能自动传参,所有指名道姓的传参,self也要对象也要传进去 object.__setattr__(self, key, value) else: # print('你不能放') raise NoStrException('不是字符串异常') person = Person() try: person.name = 10 # person.name = 'lq' except NoStrException as e: print(e)
作业2
通过上下文管理器写一个mysql的链接,通过with管理
# with管理的作用,结束操作后,自动帮你关闭资源,文件读取用的这个with管理 import pymysql class MySql(): def __enter__(self): self.conn = pymysql.connect( host='127.0.0.1', port=3306, user='root', password='123', database='day47', charset='utf8' # 编码不要加- ) return self.conn # mysql对象拿到 def __exit__(self, exc_type, exc_val, exc_tb): self.conn.close() with MySql() as mysql: cursor = mysql.cursor(cursor=pymysql.cursors.DictCursor) # 产生一个游标对象(用来帮助执行命令) print('mysql连接关闭')
七 异常
try: print(1/0) except Exception as e: print(e) else: # 正常执行,没有出异常,会走 print('正常执行,没有出异常,会走') finally: # 有没有异常,都会走 print('有没有异常,都会走')
八 断点调试
''' 断点测试 第一步:打断点,鼠标左键点一下,有个红点,表示打了一个断点,如果走在这里程序停止 第二步: 以debug模式运行 第三步:快速跳到下一个断点,左侧的绿箭头(F9) 第四步:单步调试,跳到函数内部,把函数运行当做一句话,(F7)一步一步走,(F8)把函数运行当一句话 第五步:左侧的红点带斜杠,表示 快速把所有断点都设置为灰色 '''
标签:__,复习,python,self,object,对象,type From: https://www.cnblogs.com/coderxueshan/p/17712379.html