python笔记(乱记版)
Python
前情:Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,读取中文时会报错。
解决方法:只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 # coding=utf-8 就行了
(# coding=utf-8 的 = 号两边不要空格。)
脚本式编程
通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。
让我们写一个简单的 Python 脚本程序。所有 Python 文件将以 .py 为扩展名。将以下的源代码拷贝至 test.py 文件中。
1 | print ("Hello, Python!") |
这里,假设你已经设置了 Python 解释器 PATH 变量。使用以下命令运行程序:
1 | $ python test.py |
输出结果:
1 | Hello, Python! |
Python 标识符
在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。
Python 可以同一行显示多条语句,方法是用分号分开
行和缩进
Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
多行语句
Python语句中一般以新行作为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
1 | total = item_one + \ |
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下:
1 | days = ['Monday', 'Tuesday', 'Wednesday', |
Python 引号
Python 可以使用引号( ‘ )、双引号( “ )、三引号( ‘’’ 或 “”” ) 来表示字符串,引号的开始与结束必须是相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释
Python注释
单行注释采用 # 开头。多行注释使用三个单引号 ‘’’ 或三个双引号 **”””**。
print 输出
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号
变量赋值
等号 = 用来给变量赋值。
Python允许你同时为多个变量赋值。例如:
1 | a = b = c = 1 |
标准数据类型
Python有五个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
Python 数字
指定一个值时,Number 对象就会被创建:
1 | var1 = 1 |
也可以使用del语句删除一些对象的引用。
del语句的语法是:
1 | del var1[,var2[,var3[....,varN]]] |
可以通过使用del语句删除单个或多个对象的引用。例如:
1 | del var |
Python支持四种不同的数字类型:
- int(有符号整型)
- long(长整型,也可以代表八进制和十六进制)
- float(浮点型)
- complex(复数)
注:long 类型只存在于 Python2.X 版本中,在 Python3.X 版本中 long 类型被移除,使用 int 替代。
复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。
类型转换:
1 | int(x [,base ]) 将x转换为一个整数 |
Python math 模块提供了许多对浮点数的数学运算函数。
Python cmath 模块包含了一些用于复数运算的函数。
要使用 math 或 cmath 函数必须先导入:
1 | import math |
//相关函数Python Number(数字) | 菜鸟教程 (runoob.com)
Python字符串
python的字串列表有2种取值顺序:
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,最大范围是字符串开头
[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符
比如:
1 | >>> s = 'abcdef' |
加号(+)是字符串连接运算符,星号(*)是重复操作…
Python列表
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。Python 列表截取可以接收第三个参数,参数作用是截取的步长。//感觉与数组有点相似
可以对列表的数据项进行修改或更新,使用 del 语句来删除列表的元素
1 | list.append('Google') ## 使用 append() 添加元素 |
Python 元组
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。//只能读不能改
创建空元组
1 | tup1 = () |
元组中只包含一个元素时,需要在元素后面添加逗号
1 | tup1 = (50,) |
可以对元组进行连接组合
1 | tup3 = tup1 + tup2 # 创建一个新的元组 |
任意无符号的对象,以逗号隔开,默认为元组
Python 字典
列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中:
1 | d = {key1 : value1, key2 : value2 } |
注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
字典的内容可以修改
1 | tinydict['Age'] = 8 # 更新 |
Python 运算符
Python 运算符 | 菜鸟教程 (runoob.com)
Python 条件语句
python 并不支持 switch 语句,只能用 if 来实现
1 | if 判断条件1: |
Python 循环语句
Python 提供了 for 循环和 while 循环(在 Python 中没有 do..while 循环)
循环控制语句:
break 语句 | 在语句块执行过程中终止循环,并且跳出整个循环 |
---|---|
continue 语句 | 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 |
pass 语句 | pass是空语句,是为了保持程序结构的完整性。 |
while 语句
1 | while 判断条件(condition): |
for循环
1 | for iterating_var in sequence: |
Python 日期和时间
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。
时间间隔是以秒为单位的浮点小数。
每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。//time.time()用于获取当前时间戳
函数time.time()用于获取当前时间戳
1 | import time # 引入time模块 |
最简单的获取可读的时间模式的函数是asctime()
Python 函数
定义函数的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号**()**。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
函数调用(!!!我上次就忘记调用了!!!)
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,可以通过另一个函数调用执行,也可以直接从Python提示符执行。
Python 模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
import 语句
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
1 | import module1[, module2[,... moduleN]] |
比如要引用模块 math,就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:
1 | 模块名.函数名 |
from…import 语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
1 | from modname import name1[, name2[, ... nameN]] |
from…import* 语句
把一个模块的所有内容全都导入到当前的命名空间
1 | from modname import * |
dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
返回的列表容纳了在一个模块里定义的所有模块,变量和函数。
如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。
如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。
两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。
//下面是不知道在哪里记的东西
1.is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
2.Python 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
3.不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
1 | def functionname([formal_args,] *var_args_tuple ): |
加了星号(*)的变量名会存放所有未命名的变量参数。
4.python 使用 lambda 来创建匿名函数。lambda只是一个表达式
lambda函数的语法只包含一个语句,如下:
1 | lambda [arg1 [,arg2,.....argn]]:expression |