无需编程基础,Python从入门到进阶大法
本文试图概述Python编程语言的所有关键点,并专注于绝对需要理解的最重要的主题。完全零基础,你不需要具备任何先前的编程知识,并且可以非常快速地掌握所有必需的概念。
好,接下来我们开始。
1. Python简介
Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言
Python是交互式语言:你可以在一个Python提示符 >>> 后直接执行代码
Python是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术
Python是初学者的语言:Python对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到WWW浏览器再到游戏
2. 变量、数据类型及作用域
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的。而在Python中,变量等同于names。
声明变量和赋值(Python中也称作binding,相比赋值,绑定这个词可能更形象)操作:
myFirstVariable=1mySecondVariable=2myFirstVariable="Hello You"
Python支持数据类型包括数字、字符串、集合、列表、元组、字典。数字支持整数、小数、浮点。长整型会有一个L的后缀,比如9999999999999L。字符串是被引号(单双均可)包围由数字、字母、下划线组成的一串字符。如果你在学习Python的过程当中有遇见任何问题,可以加入我的python交流学习qq群:250933691,多多交流问题,互帮互助,群里有不错的学习教程和开发工具。学习python有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我,如果你准备学习大数据,也欢迎加入大数据学习交流qq群458345782,每天与大家分享学习资源哦
程序创建、访问、改变一个变量时,都是在一个保存该变量的空间内进行,这个空间为命名空间,即作用域。Python作用域是静态的,变量被赋值、创建的位置决定了其被访问的范围,即变量作用域由其所在位置决定。Python的作用域一共有4种,分别是:
L (Local) 局部作用域
E (Enclosing) 闭包函数外的函数中
G (Global) 全局作用域
B (Built-in) 内建作用域
以L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。
3. 运算符
Python语言支持以下类型的运算符:
算术运算符:+;-;*;/;%(取模 - 返回除法的余数);**(幂 - 返回x的y次幂);//(取整除 - 返回商的整数部分,向下取整)
比较(关系)运算符:==(等于 - 比较对象是否相等);!=(不等于 - 比较两个对象是否不相等);<>(不等于 - 比较两个对象是否不相等);>(大于 - 返回x是否大于y);<(小于 - 返回x是否小于y);>=( 大于等于 - 返回x是否大于等于y);<=(小于等于 - 返回x是否小于等于y)
赋值运算符:=(简单的赋值运算符);+=(加法赋值运算符);-=(减法赋值运算符);*= (乘法赋值运算符);/=(除法赋值运算符);%=(取模赋值运算符);**=(幂赋值运算符);//=(取整除赋值运算符)
位运算符:&(按位与运算符);|(按位或运算符);^(按位异或运算符);~(按位取反运算符);<<(左移动运算符);>>(右移动运算符)
逻辑运算符:and(布尔"与");or(布尔"或");not(布尔"非")
成员运算符:in(如果在指定的序列中找到值返回 True,否则返回 False);not in(如果在指定的序列中没有找到值返回 True,否则返回 False)
身份运算符:is(判断两个标识符是不是引用自一个对象);is not(判断两个标识符是不是引用自不同对象)
4. 注释
单行注释:
#thisisa single line comment
多行注释:
```this is a multilinecomment```
5. Pickling
将对象转换为字符串并将字符串转储到文件中称为酸洗。 反过来被称为unpickling。
6. 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
定义新函数:
def my_new_function():print('thisis mynewfunction')
函数调用
my_new_function()
查看字符串长度
len('hello')prints5
7. 参数
定义函数的时候,把参数的名字和位置确定下来,函数的接口定义就完成了。函数的调用者只需知道如何传递正确的参数,以及函数将返回什么样的值即可。
Python参数包括:位置参数;默认参数;可变参数;命名关键字参数;参数组合。
8. 模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块让你能够有逻辑地组织你的 Python 代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。
导入模块:
importmodule1[, module2[,... moduleN]]
调用模块中的函数:
module1.function1
从某个模块中导入一个指定的部分到当前命名空间中:
frommodnameimportname1[, name2[, ... nameN]]
把一个模块的所有内容全都导入到当前的命名空间:
frommodnameimport*
9. 包
模块与包是任何大型程序的核心,就连Python安装程序本身也是一个包。包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境,包含__init__.py文件和其它模块或子包。
从包里调用模块:
frompackageroot.packagefolder.modimportmy_object
PIP是Python的包管理器,未来你将会频繁的用到他:
pipinstall package_name
10. 条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块,也就是连吃瓜群众都知道的if/else语句:
ifa = b:print'a is b'elifa < b:print'a is less than b'elifa > b:print'a is greater than b'else:print'a is different'
条件语句是可以嵌套的:
else:ifa =2:print'withinifofelse'else:print'withinelseofelse'
11. 循环语句
循环语句允许我们执行一个语句或语句组多次,一般包含两种类型:While循环和For循环。
While循环,一直循环知道满足某个条件终止:
while (input < 0): do_something(input)input=input-1
While循环嵌套:
whileexpression:whileexpression: statement(s) statement(s)
For循环,一直循环知道次数用尽:
foriinrange(0,10)printi
For循环嵌套语法:
foriterating_varinsequence:foriterating_varinsequence: statements(s) statements(s)
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:
break:在语句块执行过程中终止循环,并且跳出整个循环
continue:在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环
pass:pass是空语句,是为了保持程序结构的完整性
break语法:
foriinrange(0,10):if(i==5):break
whileTrue: x = get_value()if(x==1):break
12. 递归
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数factorial(n)表示,可以看出:
factorial(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = factorial(n-1) x n
所以,factorial(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。
于是,factorial(n)用递归的方式写出来就是:
deffactorial(n):ifn==0:return1else:returnn * factorial(n-1)
13. 框架与栈调用
Python代码载入框架,框架位于栈中。
函数与参数和变量一起载入框架
框架会按照正确的执行顺序依次载入栈中
栈中列出函数的执行步骤,在函数外声明的变量存储在main中
最后入栈的框架将最先执行
如果发生错误,可以使用回溯来获取函数表
14、列表和库
列表
列表是可以保存任何数据类型的值序列的数据结构。它们是可变的(可更新的)。
列表由整数索引。
字典
字典是编程世界中最重要的数据结构之一。它的功能是存储键/值对对象,可以优化数据检索功能。
15.编译和链接
这些特征可用于使用以另一种语言编写的文件,例如C或C ++等
将代码写入文件后,可以将文件放在Modules目录中。
在Setup.local文件中添加一行非常重要,以确保可以加载新创建的文件。
16. 迭代器
迭代器可以遍历集合,所有迭代器都包含__iter __()和__next __()函数
只需在列表,字典,字符串或集合上执行iter(x)即可。
如果我们在集合中有大量项目,而且不打算一次加载内存中的所有文件,那么迭代器就是很有用的。一些通用迭代器让开发人员能够实现函数式编程语言实例。
17.面向对象的设计:类
Python允许创建自定义类型。由用户定义的类型称为类。这些类可以具有自定义属性和函数。
面向对象的设计允许程序员将其业务模型定义为具有所需属性和功能的对象。
属性也可以引用另一个对象。
Python类可以引用其他类。
Python支持封装,即实例函数和变量。
Python支持继承。
18.面向对象的设计:继承
Python支持对象的继承。因此,对象可以继承其父级对象的函数和属性。
继承的类可以在其函数中包含不同的逻辑。
如果一个类ParentClass有两个子类:SubClass1,SubClass2
因此,两个子类都将包含函数my_function()。
继承可以鼓励代码重用和维护。
一些常见问题指引
我为什么要使用Python?
简单的编码和学习
面向对象编程语言
伟大的分析和ML包
更快地开发并将我的解决方案推向市场
提供内置内存管理功能
提供巨大的社区支持和应用程序
无需编译,因为它是一种解释性语言
动态输入 - 无需声明变量
如何让Python快速运行?
Python是一种高级语言,不适合访问系统级程序或硬件。
此外,Python不适用于跨平台应用程序。事实上,Python是一种动态类型的解释语言,与低级语言相比,它的优化和运行速度较慢。
实现基于C语言的扩展。
使用Spark或Hadoop创建多进程
利用Cython,Numba和PyPy来加速Python代码,或用C语言编写代码,再像在NumPy中那样在Python中公开
现在有哪些常用的IDE?
Spyder,PyCharm。另外,使用各种笔记本电脑, Jupyter
有哪些顶级Python框架和包?
Python有大量必备的包:
PyUnit(单元测试),PyDoc(文档),SciPy(algebera和数字),Pandas(数据管理),Sci-Kit学习(ML和数据科学),Tensorflow(AI),Numpy(数组和数字),BeautifulSoap(web)页面报废),Flask(微框架),Pyramid(企业应用程序),Django(UI MVVM),urllib(网页抓取),Tkinter(GUI),mock(模拟库),PyChecker(bug检测器),Pylint(模块代码分析))
Python和R可以合并吗?
R中编写了大量丰富的统计库
可以使用Rpy2 python包或在Juputer中使用beaker笔记本或IR内核在Python中执行R代码。
有没有办法在运行Python之前捕获错误?
在运行代码之前,我们可以使用PyChecker和PyLink来捕获错误。