正文
‘’‘生成器’‘’ def myyield(n): while n>0: print(“开始生成…:”) yield n print(“完成一次…:”) n -= 1 for i in myyield(4): print(“遍历得到的值:”,i) 3、闭包 闭包可以实现先将一个参数传递给一个函数,而并不立即执行,以达到延迟求值的目的。满足以下三个条件:必须有一个内嵌函数;内嵌函数必须引用外部函数中变量;外部函数返回值必须是内嵌函数。 def delay_fun(x, y): def caculator(): return x+y return caculator print(‘返回一个求和的函数,并不求和’) msum = delay_fun(3,4) print(‘调用并求和:’) print(msum()) 4、*args 和 **kwargs 这两个是Python中的可变参数,用于接受参数的传递。_args表示任何多个无名参数,它是一个元组,_kwargs表示关键字参数,它是一个字典。同时使用_args和__kwargs时,必须_args在*kwargs之前。 5、鸭子类型: 在鸭子类型中,关注的不是对象的类型本身,而是他是如何使用的。例如,在不使用鸭子类型的语言中,我们可以编写一个函数,它接受一个类型为鸭的对象,并调用它的走和叫方法。在使用鸭子类型的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的走和叫方法。 class duck(): def walk(self): print(‘I am duck,I can walk…’) def swim(self): print(‘I am duck,I can swim…’) def call(self): print(‘I am duck,I can call…’) duck1=duck() duck1.walk()
I am duck,I can walk…
duck1.call() # I am duck,I can call… 6、@property 和 @setter @property负责把一个方法变成属性调用。在对实例操作时,不暴露接口,而是通过getter和setter方法实现。 class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise ValueError(‘score must be an intager’) if value<0 or value>100: raise ValueError(‘score must between 0~100!’) self._score = value s = Student() s.score = 60 print(s.score) s.score = 999 print(s.score)
7、多进程和多线程
**进程:**是资源分配的最小单位,创建和销毁开销较大;
**线程:**是CPU调度的最小单位,开销小,切换速度快;
操作系统将CPU时间片分配给多个线程,每个线程在指定放到时间片内完成。操作系统不断从一个线程切换到另一个线程执行,宏观上看就好像是多个线程一起执行。
Python中由于全局锁 (GIL) 的存在导致,同一时间只有一个获得GIL的线程在跑,其他线程则处于等待状态,这导致了多线程只是在做分时切换,并不能利用多核。
多线程与多进程的区别:(1)多进程中同一个变量各自有一份拷贝在每个进程中,互不影响;(2)多线程中,所有变量都由所有线程共享,任何一个变量都可被任何一个线程修改。线程之间共享数据的最大危险在于多个线程同时更改一个变量,把内容改乱。
from multiprocessing import Pool #多进程
from multiprocessing.dummpy import Pool #多线程
8、类变量和实例变量
普通的变量(非类的变量),在被赋值后即变量存在。类的变量在class里def外,通过变量名能被赋值,在def里通过类对象可被赋值
class Apple(object): name = ‘apple’ p1 = Apple() p2 = Apple() p1.name = ‘orange’ print(p1.name) print(p2.name)
9、装饰器
装饰器是一个工厂函数,接受一个函数作为参数,然后返回一个新函数,其闭包中包含被装饰的函数。有了装饰器,可以提取大量函数中与本身功能无关的类似代码 ( 这块在Flask中用于定义路由的@app.route,就是一个很好的例子),达到代码重用的目的。可应用于插入日志、性能测试、事务处理等方面。
def deco(func): def warpper(*args, **kwargs): print(‘start’) func(*args, **kwargs) print(‘end’) return warpper @deco def myfunc(parameter): print(“run with %s” % parameter) myfunc(“something”)
2、数据库
1、MySQL基本语法
增:创建数据表
USE database CREATE TABLE example(id INT, name VARCHAR(20), sex BOOLEAN);
删:
ALTER TABLE 表名 DROP 属性名; # 删除字段
DROP TABLE 表名; # 删除表
改:
ALTER TABLE 旧表名 RENAME 新表名; # 修改表名
ALTER TABLE 表名 MODIFY 属性名 数据类型; # 修改字段数据类型
查:
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。