一、工欲善其事必先利其器
1、安装。常规方法:官网下载,依据官方手册进行安装。非常规方法:第三方工具,PyCharm,Spyder等。然而今天我又get到一个好东东,Anaconda。 Anaconda是一个开源的环境、包管理器, 其包含了conda、Python等180多个科学包及其依赖项。操作简单,高效能使用python及第三方库。安装方法及使用链接:初学 Python 者自学 Anaconda 的正确姿势是什么? - 知乎 https://www.zhihu.com/question/58033789
二、常识
1、python的3.0版本,常被称为python3000,或简称py3k.;python3.0在设计的时候没有考虑向下兼容。
2、python 3.0 区分大小写,且首字段无空格、制表符。
3、python中'和"使用方法完全一致。
4、注释:单行注释:#;多行注释:'''三个单引'''或者"""三个双引"""。
5、编码: 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。
6、同一个代码块的行缩进必须一致,否则报错,不同的代码块缩进的空格数可以不一致
7、一条长语句,分多行编写,则需在上一行的结尾增加
另:在{},[],()之间的多行,则不需要
8、多条语句,同时编辑在同一行,则语句之间通过 ; 区分
9、空行:为增强脚本阅读性,建议在代码块,函数以及类等之间,插入空行,空行不执行
10、变量,python中变量无需声明,赋值即创建变量,变量=值,而且变量没有数据类型之说,只能说是变量指向的内存中的对象的数据类型。变量命名:一般采取 变量意义_数据类型,如:count_number,计数.
11、每个对象都有唯一标识符,而python用对象的内存地址作为唯一标识符。可变,不可变,指的是一个对象(标识符)的值可不可变,反之,如果值变了,标识符是否变了。
12、数据类型中的索引
13、步长
14、python中的True,False。
三、数据类型
1、number,数字数据类型,不可变类型,即改变数字数据类型的值,将重新分配内存地址。数字数据类型包括:int,float,complex。
2、string:字符串数据类型,不可变类型,用'或者"创建。可以被索引,截取。
3、list:列表数据类型,可变类型,写在[ ]里,用","隔开,其元素类型可以不相同,可以是数字,字符串,列表(嵌套)。 和字符串一样,可以被索引和截取,但截取时可以输入第三个参数,步长。是python中使用最频繁的数据类型。
4、tuple:元组数据类型,不可变类型,写在( )里,以“,”隔开,其元素可以是不同数据类型,其中可以包括可变数据类型list。可以被索引,截取。特殊语法:只有一个元素:touple1(value1,),有0个元素:tuple1( )。注:tuple属于不可变序列,故代码更安全。但,tuple的元素可以是可变类型数据类型list,list可变,但tuple不可变,也没变,还是依然指向该list的内存地址,故没变。
5、dictionary:字典数据类型,可变数据类型,用{ }创建,其中元素以key:value形式存放,各元素以“,”隔开,其中key值必须为不可变数据类型(number,string,tuple),且唯一(在同一个dictionary中),value可以为任意数据类型。dictionary是一种无序的集合,通过key值存取,而不是位置。dictionary是另一种使用广泛的数据类型(序列)。特殊语法:{ },表示空字典。
6、set:集合数据类型,可变类型,set( )或者{ }创建。 空集合:只能用set( ),不能用{ },{ }表示空字典。集合无序,无重复元素序列,多半用来做成员测试。
四、运算符
五、条件判断——if
1、Python 条件判断是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。如下演示:
2、语法:
六、循环
1、while
2、for
3、for和while的区别: for可用于遍历任何序列的项目,如一个列表或者一个字符串。while不能自行遍历。故常用for。
4、无限循环:通过设置条件永远为True,实现无限循环。ctrl+c:退出无限循环。实际作用: 在服务器上客户端的实时请求非常有用。
5、else,break,continue,pass在循环语句中的作用
- else: 穷尽列表(for循环)或条件变为 false (while循环)导致循环终止时被执行,但循环被break终止时不执行else
- break: 跳出 for 和 while 的循环体,其else语句也将跳过不执行
- continue: 跳过当前循环块中的剩余语句,直接进入下一轮循环。
- pass: 空语句, 不做任何事情,一般用做占位语句
七、函数
1、函数定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
2、函数语法:
3、传递可变和不可变数据类型参数,对于函数外变量值的影响——其实还是不可变类型和可变类型的本质。结论如下:
- number,string,tuple,不可变类型,函数参数传递时,只会影响函数内的值,不会影响函数外的值,即函数内外指向不同内存地址。
- list,set,dictionary,可变类型,函数参数传递时,修改函数内的值,会直接影响函数外的值,即函数内外指向同一内存地址。
4、调用函数时,参数的类型及使用:
- 必须参数:
- 默认参数:函数设计之初,调用函数时可指定参数具体值,也可不指定,不知定时则采取默认值,注:默认参数必须写在最后,否则报错
- 关键字参数:调用函数有多个参数,不按顺序输入,而是明确指定参数名及参数值
- 不定长参数: 声明函数时不确定其参数长度,则可采用不定长参数声明法,一共两种方式,如下:加了一个星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数; 加了两个星号 ** 的参数会以字典的形式导入。
5、变量作用域:
- L(Local):局部作用域, 定义在函数内部的变量拥有一个局部作用域,局部变量只能在其被声明的函数内部访问
- E(Enclosing):闭包函数外作用域,
- G(Global):全局作用域, 定义在函数外的变量拥有全局作用域, 全局变量可以在整个程序范围内访问
- B(Built-in)内置作用域, 是通过一个名为 builtin 的标准模块来实现的,但是这个变量名自身并没有放入内置作用域内,所以必须导入这个文件才能够使用它。
- 查找规则:L-E-G-B
- 另: Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问
- global:函数内部想修改全局变量,需在函数内部使用global 变量 来声明
- nolocal:想闭包函数外的函数中的变量,需在闭包函数内使用nolocal 变量 来声明
八、模块
1、模块:是一个包含所有你定义的函数和变量的文件,其后缀名是.py。
2、模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
3、模块引入的方法:import,from...import,from...import ,如下: