1 / 24
文档名称:

Python25个关键技术点.pdf

格式:pdf   大小:1,181KB   页数:24页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Python25个关键技术点.pdf

上传人:鼠标 2023/6/8 文件大小:1.15 MB

下载得到文件列表

Python25个关键技术点.pdf

文档介绍

文档介绍:该【Python25个关键技术点】是由【鼠标】上传分享,文档一共【24】页,该文档可以免费在线阅读,需要了解更多关于【Python25个关键技术点】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..Python25个关键技术点(附代码)01Python简介什么是Python?种?向对象的?级动态可解释型脚本语?。Python解释器?次读取??代码,将其解释为低级机器语?(如字节代码)并执?它。因此这种语?经常会引发运?错误。为什么选择Python优(势)Python是当前最流?的语?,因为它更容易编码且具有很强的可解释性。Python是?种?向对象的编程语?,也可?于编写?些功能代码。Python是能够很好地弥补业务和开发?员之间差距。与其他语?(如C#/Java)相?,Python程序被推向市场的时间更短。Python?带?量的机器学****和分析包。?量社区和书籍可?于?持Python开发?员。从预测分析到UI,?乎所有类型的应?程序都可以?Python实现。Python程序?需声明变量类型。因此,所构建的应?程序能有更快的运?速度。为什么不选择Python劣(势)与其他语?(C++,C#,Java)相?,Python程序的运?更慢,这是因为Python中缺少类似JustInTim优e化器的?持。Python语法空?约束给新?编码实现带来?些困难。Python不像R语?那样提供?级的统计功能。Python不适合进?低级系统和硬件交互。Python是如何?作下图展?了Python在机器上的运?机制。这?的关键是解释器,它是负责将?级的Python语?编译成低级的机器语?,以便理解。02变量——?标类型及范围可在程序中使?的变量存储信息,如保存?户输?,程序的本地状态等。:..Python中的变量以名字命名。Python中变量类型包括数字,字符串,集合,列表,元组和字典,这些都是标准的数据类型。声明并给变量赋值如下所?:这??先分别为变量myFirstVariable分配整型数值1,字符串“HelloYo。u”由于Python中的数据类型是动态变化的,因此这种重复赋值操作是可以实现的。Python中变量赋值操作?称为绑定(blinding。)数值型如下所?,Python?持整型,?数,浮点型数据。此外,也能?持长整型,以L为后缀表?,如999999999999L。字符串字符串就是字母的序列表??本信息。字符串的值?引号括起来,如下所?。字符串是不可改变的,?旦创建,就不能被修改。如下所?:当字符串变量被赋予?个新值时,Python将创建?个新的?标来存储这个变量值。局部变量和全局变量局部变量局部变量,如在?个函数内声明?个变量,则该变量只存在于该函数中。局部变量在外部是不能被访问的,如下所?。Python中if-else和for/whil循e环模块是不能创建局部变量,如下所?在for/whil循e环中::..输出为在if-else模块中:输出为全部变量全局变量可以通过任意?个全局函数访问,它们存在于__main__框架中。此外,在函数之外你也可以声明?个全局变量。值得注意得是,当需要为?个全局变量分配新值时,必须使?“globa关l”键字,如下所?:当移除“GlobalTestMod只e能”在some_function(函)数中将变量设置为False。如果你想在多个模块间共享?个全局变量,那么你需要创建?个共享模块?件。,y并在?件中找到你所需的变量。最后导?共享模块。查看变量类型通过type()函数来查看变脸类型,如下所?。整型变量中的逗号逗号可视为是变量序列,如下所?。:..03操作数值操作Python?持基础的加减乘除数值计算,也?持地板除法(floordivisio,n)如下所?。此外,Python还?持指数运算(**,)如下所?。同时,Python还能进?除法取余操作,如下所?。字符串操作字符串拼接字符串复制字符串切?:..字符串反序负索引如果你想得到字符串的最后?个字符,那需要使?负索引值,如下所?。查看索引值正则表达式split():通过正则表达式将?个字符串分割得到?个列表。sub():通过正则表达式取代所要匹配的字符。subn():通过正则表达式取代所要匹配的字符并返回所替代字符的个数。Castingstr(x):将变量x转为字符串类型int(x):将变量x转为整型float(x):将变量x转为浮点型集合操作集合是?种?序的数据集合,定义?个集合变量,如下所?。集合交集获取两个集合的公共部分,如下所?。:..集合差异获取两个集合之间的不同部分,如下所?。集合并集获取两个集合的并集,如下所?。三元运算符?于在??编写条件语句,语法结构为[IfTrue]if[Expression]Else[IfF,al如se下]所?。04注释单?注释多?注释:..05表达式可?于布尔运算,如:Equality:==NotEqualit:y!=Greater:>Less:<GreaterorEqu:al>=LessorEqua:l<=06Pickling将对象转换为字符串并将字符串转储为?个?件的过程称为pickling,反之则称为unpicklin。g07函数函数是?种可以在代码中执?的语句序列。如果在你的代码中出现重复的语句,那么可以创建?个可重?的函数并在程序中使?它。函数也可以引?其他函数。函数消除了代码中的重复,这使得代码调试和问题查找变得更容易。函数使得代码更易于理解且易于管理。函数允许将?个?型的应?程序拆分为?些?的模块。定义?个新的函数调??个函数查看字符串的长度可以调?函数len(x,)如下所?。参数参数可以被添加到?个函数中,使得函数更通?。通过参数,可以将?个变量传递给?法,如下所?。:..可选参数为参数提供?个默认值来传递?个可选参数,如下所?。*参数如果想让函数使?任意数量的参数,那么需要在参数名前添加*,如下所?。**参数**允许传递可变数量的关键字参数给函数,同时也可以传递?个字典值作为关键字参数。Return函数能够返回?个值,如下所?。如果?个函数需要返回多个值的话,那么最好返回?个元组(以逗号隔开每个值),如下所?。Lambda函数:..是?种单?表达式的匿名函数是?种内联函数Lambda函数没有声明,只是通过?个表达式来实现,如下所?。函数的语法结构为:variable=lambdaarguments:expressionLambda函数也可以作为参数传递给其他的函数。dir()和help()dir()?于显?定义的符号help()?于显?帮助?档08模块什么是模块Python语?附带了200多个标准模块。模块是?种将python程序中相似功能进?分组的组件。任何python代码?件都可以打包为模块,然后再导?。模块允许使?者在??的代码解决?案中进?组件化设计。模块提供了命名空间的概念,帮助使?者共享数据和服务。模块?励代码重?,并减少变量名称冲突。PYTHONPATH这是python的环境变量,表??于操作模块的python解释器所在的位置。PYTHONHOME是?个?于搜索该路径的模块。如何导?模块如果你有?个?件:MyFirstPythonFile包含很多个函数,变量和对象,然后你可以将这些功能导?到其他类中,如下所?。Python内部会将模块?件编译为?进制再运?模块的代码如果想导?模块中的所有对象,可以这样:如果模块中包含的函数或对象命名为my_objec,t那么你可以将其打印出来,如下所?。:..值得注意的是,如果你不想在加载时执?模块的话,那么你需要检查是否有__name__==‘__main__’From导?模块如果你只是想访问模块中的?个对象或某个部分,可以这样:这种?式导?模块允许使?者在访问模块中的对象,??需引?模块,如下所?。可以通过from来*导?模块中的所有对象,如下所?。值得注意的是,模块只能在第?次impor时t导?。如果你想使?C模块,那么你可以使?PyImport_ImportMod。ule此外,如果你想在两个不同模块中使?定义相同的对象,那么可以将impor和tfrom结合起来导?模块。09包(Packages)Python中包是模块的?录。如果你的Python代码中提供了?量功能,这些功能被分组到模块?件中,那么可以从模块中创建?个包,以便更好地分配和管理这些模块。包能够更好地管理和组织模块,这有助于使?者更轻松地解决问题和查找模块。可以将第三?软件包导?到代码中,如pandas/scikitlear和ntensorflow等等。包可以包含?量的模块。如果代码中的某些部分提供相似的功能,那么可以将模块分组到?个包中,如下所?。上图中packageroo是t?个根?录(rootfolde,r)packagefolder是其根?录下?的?个??录,?my_module是在packagefolde?r录下的?个python模块?件。此外,?件夹名可以作为命名空间,如下所?。值得注意的是,需要确保所导?的包中每个?录都包含??件。PIPPIP是python的包管理器。可以使?PIP来下载包,如下所?。:..10条件语句条件语句ifels,e如下所?。请注意冒号和缩进在条件语句中的使?。检查类型你也可以在else部分继续添加条件逻辑语句,这样构成嵌套条件结构,如下所?。11循环WhileWhile语句提供?个条件,运?循环语句直到满?该条件位置,循环终?,如下所?。For循环?定的次数,如下所?。:..循环遍历整个字符串的所有字符,如下所?。单?for循环语法结构为[Variable]AggregateFunction([Value]for[item]in[collection])Yielding假定你的列表中包含?万亿条数据,需要从列表中计算偶数的数量。这时候将整个列表加载到内存中并不是最佳的做法,你可以通过列表来?成每个项。使?xrange的循环结构结合条件if的for循环通过带if的for循环来查找两个单词中的字母,如下所?。Break如果你想终?循环,可以这样:使?i函数的循环结构,如下所?。:..12递归函数调???的过程称为递归。下?来演??个阶乘递归函数:创建?个阶乘函数,输?为n如果输?n=0,则0!=1如果输?n!=,0则n!=n(n-1)!此外,i递归函数的流程如下所?:创建?i递归函数,输?为n创建前两个变量,并为其分别赋值0和1如果输?n=,0则返回0;如果输?n=,1则返回1;否则,返回(n-1)+(n-2)值得注意的是,递归结构需要有?个退出检查,否则函数将进??限循环。13框架Frames和栈Stack调?Python代码被加载到堆栈中的框架。函数及其参数和变量?起被加载到框架中。框架以正确的执?顺序被加载到堆栈中。:..堆栈描述了函数的执?。在函数外声明的变量被存储在__main__中。堆栈?先执?最后?个框架。如果遇到运?错误,可以使?回溯(traceback)来查找函数列表。14集合Collections列表Lists列表是?种能够包含任何数据类型的序列数据结构,这种结构是可变的。列表可以进?整数索引,可以使?中括号来创建?个列表,如下所?。使?索引值来添加、更新、删除列表中的项,如下所?。此外,复制和切?同样适?于列表(可类?字符串中的操作)列表还?持排序操作,如下所?。元组Tuples在某种程度上元组和列表类似,都是可以存储任意对象序列的数据结构。元组的运??列表更快速。元组可以进?整数索引元组是不可变的,如下所?。值得注意的是,如果?个元组中的元素包含?个列表,那么可以对列表进?修改。同样,当为?个对象赋值并将该对象存储到列表中,随后如果对象发?变化的话,相应地,列表中的对象也会进?更新。字典Dictionaries字典是编程语?中最重要的?种数据结构之?,它能够存储键值对(key/value对)象。字典有许多优点,能够轻松地进?数据检索,如下所?。:..可以通过如下?式创建?个字典。打印字典中的内容,如下所?。字典中的值可以是任意类型的数据,包括字符串,数值,布尔型,列表甚?是字典,如下所?。值得注意的是,如果你想对?个列表进?向量或矩阵操作,可以调?Numpy包来实现。15pilation与)关联(Linking)这些特征可?于?些以其他语?编写的?件,例如C或C++等。?旦将代码写??件后,可以将?件放在Modules?录中。?件中添加??是?常重要的,这能确保新创建的?件能够被加载。pilation允许?任何错误地进?新扩展的编译过程。关联Linking?旦新的扩展编译完成,他们之间就会被关联。16迭代器IteratorIterators允许遍历?个集合所有迭代器都包含__iter__()和__next__()函数只需在列表,字典,字符串或集合上执?iter(x)即可可以执?实例next(iter,)这?iter=iter(list)如果集合中元素项的数??常?且?法?次加载内存中的所有?件,此时迭代器很有?有?些通?的迭代器使开发?员能够实现函数式编程,如下:Filter根据条件过滤掉相应的值Map:..对集合中的每个值进?计算,即将值进?映射,如将?本转为整型数值。Reduce减少集合中的值,即得到?个更?的集合。如集合求和,它本质上是可迭代的。Zip获取多个集合并返回?个新集合新集合的每个项,包含每个输?集合中的元素Zip允许同时对多个集合进?横向操作,如下所?。17?向对象设计——类ClassesPython允许创建?定义类型,将这些?户?定义的类型称为类。这些类具有?定义属性和功能。?向对象的设计允许程序员根据??所需的属性和功能?定义创建对象。属性也可以引?另?个对象。Python中的类可以引?其他类。Python?持封装--实例函数和变量。Python?持继承,如下所?。类的?个实例称为对象。对象具有可变性,?旦创建对象,相应的属性也将被更新。__init____init__函数在所有类中都存在。当需要进?类实例化时,该函数就将被执?。__init__函数可以根据需要设置相应的属性,如下所?。值得注意的是,self参数将包含对象的引?,这与C#语?中的this参数类似。__str__当调?print时,返回?个对象的字符串结果,如下所?。:..因此,当执?print语句时,__str__将会被执?。__cmp__如果想要提供?定义逻辑来?较同?实例的两个对象,可以使?__cmp__实例函数。__cmp__函数返回1(更?),-1更(低)和0(相等),以指?两个对象的??。可以将__cmp__想象成其他编程语?中的Equals()?法。Overloading通过将更多参数作为实例,来重载?个对象。还可以通过为__add__来实现想要的运算符,如+。对象的浅拷贝(ShallowCopy和)深拷贝(DeepCopy)等效对象–包含相同的值相同对象–引?相同的对象–内存中指向相同的地址如果要复制整个对象,可以使?复制模块(copymodul,e)如下所?。这将导致浅拷贝,因为属性的引?指针将会被复制。如果对象的?个属性是对象引?,那么它将简单地指向与原始对象相同的引?地址。更新源对象中的属性将导致?标对象中的属性也会更新。浅拷贝是复制引?指针。这种情况下可以利?深拷贝,如下所?。如果MyClass包含引?MyOtherClass对象的属性,则属性的内容将通过deepcopy复制到新创建的对象中。深拷贝将对对象进?新的引?。17?向对象设计——继承Python?持对象的继承,即对象可以继承其?类的功能和属性。继承的类可以在其函数中包含不同的逻辑。如果?个?类ParentClass有两个?类SubClass1和SubClass2,那么你可以使?Python来创建类,如下所?。:..上例中两个?类都将包含my_function(函)数类的继承属性?励代码的重?性和可维护性。此外,python中?持多类继承,这与C#语?不同。多类继承multi-Inheritance如果你想调??类函数,可以这样:18垃圾收集——内存管理Python中的所有对象都存储在?个堆积空间(heapspace,)?Python解释器可以访问此空间。Python有?个内置的垃圾收集机制。这意味着Python可以?动为程序进?分配和取消内存,这与C++或C#等其他语?类似。垃圾收集机制主要是清除程序中未引?/使?的那些对象的内存空间。由于多个对象可以共享内存引?,因此python使?两种机制:引?计数:计算引?对象的数?。如果对象的计数为0,则取消对象的空间分配。循环引?:这种机制关注的是循环引?:当取消分配(deallocation的)数??于阈值时,仅取消对象所在的内存空间分配。在Python中新创建的对象,可以通过如下?式进?检查:此外,也可以通过及时或者基于事件机制来进??动的垃圾收集。20I/OFromKeyboard使?raw_input(函)数,如下所?。:..?件Files使?with/as语句来打开并读取?件,这与C#中读取?件的操作?致。此外,with语句还可以处理关闭连接和其他清理操作。打开?个?件,如下所?。需要注意的是,readline()可?于读取?件中的每??。打开两个?件,如下所?。?件写?,如下所?。Python中对?件的操作通常涉及os和shutil模块。rw表?读写模式,a代表可添加模式。SQL打开?个连接,如下所?。执??个SQL声明,如下所?。:..?络服务(WebServices)查询?个闲置服务,如下所?:序列化和反序列化JSON?件反序列化JSON,如下所?:序列化JSON,如下所?:21异常处理抛出异常如果你想抛出异常,那么可以使?raise关键字,如下所?。捕获异常可以通过如下?式捕获异常信息:如果想捕获特定的异常,可以这样::..如果想使?try/catch/final结ly构捕获异常信息,可以这样:值得注意的是,?论finally部分的代码是否触发,你都可以使?finally来关闭数据库/?件的连接。Try/Except/Else如果想为异常信息分配?个变量,可以这样:如果想定义?于?定义的限制,可以通过assert关键字实现,如下所?:值得注意的是,python中的异常同样具有继承性。此外,你也可以创建??的异常类,如下所?::..22多线程和GILGIL表?GlobalInterpreterLo。ckGIL确保线程可以在任何时间执?,并允许CPU选择要执?的所需线程。GIL能够传递当前正在执?的线程。Python?持多线程。此外,GIL会增加代码执?的计算开销。因此,运?多线程时需谨慎。23装饰器Decorators装饰器可以为代码添加功能,其本质上是?种调?其他对象/函数的函数。它是可调?函数,因此在调?装饰器函数时将返回随后需要调?的对象。通过封装包/装?个类/函数,然后在调?函数时执?特定的代码。此外,还可以通过实现通?逻辑来记录,进?安全检查等,然后使?propert标y记?法的属性。24Python中的单元测试Python中有许多单元测试和模拟库下?以unittes为t例假定你的函数每次将输?值减少1,如下所?:可以通过如下?式来进?单元测试:同样地,也可以使?doctest来测试docstrings中所编写的代码。25:..?些与Python有关的热门话题为什么要使?Python编码简单,易于学****向对象编程语?强?的分析功能和机器学****包更快速地开发并将解决?案推向市场提供内置的内存管理功能提供巨?的社区?持和应?程序?需编译,因为它本?是?种可解释的语?动态输?,即?需声明变量如何让Python运?得更快Python是?种?级语?,不适合在系统程序或硬件层?访问。Python不适?于跨平台的应?程序。Python是?种动态类型的解释语?。与低级语?相?,它的优化和运?速度较慢。实现基于C语?的扩展。可以使?Spark或Hadoop创建多进程可以利?Cython,Numba和PyPy来加速Python代码或?C语?编写它并在Python中公开。Python爱好者都是?哪些IDEs?包括Spyde,rPycharm等。此外,还会使?各种的notebook,s如Jupyte。rPython中热门的框架和包有哪些Python中必须掌握的包有很多,包括PyUnit单(元测试),PyDoc?(档),SciPy代(数和数值计算),Pandas数(据管理),Sci-Kitlearn机(器学****和数据科学),Tensorflow?(?智能),Numpy数(组和数值计算),BeautifulSoap?(页爬取),Flask微(服务框架),Pyramid企(业应?),Django(UIMVVM),url?lib页(爬取),Tkinter(GUI),moc模k拟(库),PyChecker(bug检测器),Pylint模(块代码分析)等。如何托管Python包对于Unix系统:制作脚本?件,模式为可执?且?件第??必须是:可以使?命令??具并执?它。也可以通过PyPRI和PyPI服务。Python和R语?能合并吗R语?中有着?量丰富的统计库,可以使?Rpy2pytho包n或在Juputer中使?beaker笔记本或IR内核,在Python中执?R代码。:..在运?Python前有没有办法能够捕获异常?在运?代码之前,可以使?PyChecker和PyLink来捕获异常信息。总结本?以简短、相关且集中的?式概述了Python最重要的25个概念,这些知识对初学者来说?以编写??的Python包或使?现有的Python包,希望能帮助?家更好地学****Python。如果时间充裕的话,尽可能多地进??些练****以便更好地熟悉和理解本?中所提到的知识以及包的使?。原?地址