Python是解释型语言
解释型语言:不进行预先编译,将代码一行一行直接运行。看起来省了编译工序,但是运行时必须先编译再运行。执行速度慢、跨平台性好。
编译型语言:程序在执行之前需要编译,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果。程序执行效率高,依赖编译器,跨平台性差。如C、C++
【Pyc文件(c是compiled:编译过)是由Python解释器将模块的源码编译后的二进制文件。
Python会把被import的模块先编译成字节码,提高执行速度,有了模块的字节码文件之后,下次运行程序若没有修改过源代码,将会加载pyc文件并跳过编译;如果又修改了源代码,下次运行时将重新编译。】
命名规则
文件命名规则:命名文件名时建议只使用小写字母、数字和下划线。文件名不能以数字开头(以数字开头的文件不能被import)
变量命名规则:变量名由大小写英文字母、数字和下划线组成,变量不能用数字开头,习惯使用小写字母加_隔开
注释
单行注释:#(后跟两个空格)
多行注释:三个连续的双引号"""
算术运算符
/:除 //:整除 **:幂(2**3=8)
变量类型
type(x)可以查看变量类型
bool型和数字型变量可以进行运算,对应0 1
字符串用+可以进行拼接
int(x) float(x) 强转
空值用None表示
可变和不可变类型
不可变类型:内存中的数据不允许被修改(变量重新赋值,地址改变)
- 数字类型int , bool , float , complex , long(2.x)
- 字符串str
- 元组tuple
可变类型:内存中的数据可以被修改(通过方法改变数据,地址不变;重新赋值,地址改变)
- 列表list
- 字典dict
输入
x = input("请输入x:") 输入类型默认是字符串
格式化输出
print("格式化字符" % (变量1,变量2))
条件判断
python中的else if写作elif
长逻辑表达式换行缩进
完整的for循环语法
模块
模块是Python程序架构的一个核心概念
模块就好比是工具包,需要import这个模块,模块中定义的全局变量、函数都能给外界直接使用。
哈希(hash)
Python的内置函数。参数必须是不可变类型的数据,返回结果是整数
哈希是一种算法,其作用就是提取数据的特征码。相同内容的特征码相同,不同内容的特征码不同。
设置字典的键值对时,会首先对key进行hash来决定如何在内存中保存字典的数据,以方便后续对字典的操作
- key必须是不可变类型数据
- value可以是任意类型的数据
全局变量和局部变量
全局变量命名一般加g_或gl_前缀
在函数内部不允许直接修改全局变量的引用,如果使用赋值语句,会在函数内部重新定义一个局部变量;
若要在函数内部修改全局变量的值,需先使用global声明一下变量,global关键字会告诉解释器后面的变量是一个全局变量再使用赋值语句时,就不会创建局部变量。
利用元组交换变量
a,b = (b,a) ()可以省略,写作:a,b = b,a
函数参数
- 在函数内部使用赋值语句修改参数不会影响外部数据,无论参数是可变还是不可变
- 若参数为可变类型,在函数内部使用方法修改数据内容会影响外部数据
注意:
函数多个返回值
返回值是元组时,( )可以省略
有默认值的参数必须在参数列表末尾,调用函数时,如果有多个缺省参数需指定参数名。
多值参数
有时可能一个函数能够处理的参数个数是不确定的,可以使用多值参数
- 参数名前增加一个*可以接收元组
- 参数名前增加两个*可以接收字典
—般在给多值参数命名时,习惯使用以下两个名字
- *args:存放元组参数,前面一个*
- **kwargs:存放字典参数,前面有两个*(kw:keyword)
元组和字典的拆包
在调用多值参数的函数时,若要将一个元组直接传递给args,将一个字典直接传递给kwargs,可以使用拆包简化参数的传递
在元组变量前,增加一个*;在字典变量前,增加两个*
读写文件
打开文件
Python提供了open()函数,可以打开一个文件,得到一个文件file对象,而file对象提供相关的方法对文件内容进行读写等操作。
open()函数有若干个参数,比较重要的是:
- 文件路径
- 打开模式:不同文件(二进制文件、文本文件)和不同操作(读操作、写操作),有不同的打开模式
- 编码:打开文件的默认编码
【为了安全操作文件,文件使用完毕后,需要使用close()函数正确关闭。】
读取文件内容
- f.read(5) 读取文件中的若干个字符,参数size可以指定读取字符的数量。
- f.readline(20) 和read()类似,读取文件中的若干个字符,它也提供一个参数size指定读取字符的数量,但readline()遇到一行结束的时候,就会返回。最多返回一行数据
- f.readlines() 读取多行字符,返回一个列表。提供一个hint参数表示指定读取的行数,默认以列表的形式返回文件所有的字符串。
写入文件
- f.write('Hello\n') 向文件写入若干字符,参数为要写入的字符串。
- f.writelines(lines) 向文件写入多行数据,参数为要写入的字符串列表。
追加文件内容
使用a的打开方式打开文件,游标默认在文件的尾部,方便在文件尾部添加内容
【文件对象还提供seek()方法,可以移动文件的游标位置但不改变文件内容,接收一个参数表示文件的位置,0:文件首部,1:当前位置,2:文件尾部】
正确关闭文件
在一般情况下,使用的close()方法来关闭一个文件。但使用close()方法不是100%安全的,如果在close()文件之前程序异常退出了,么文件就无法正确关闭。
使用with关键字对资源进行访问,确保无论使用过程中是否发生异常,都会执行必要的“清理”的操作,释放资源,比如文件使用后自动关闭等。
with open('test.txt', 'r') as f:
content = f.readlines()
for line in content:
print(line)