最近学习了python学习入门,所以想把简单的东西总结出来。
python安装
我自己是在fedora系统下学习的,我安装python的方法就是:
- sudo dnf install python
只需一个命令装好了python,我使用python的方法还只是在vim和python自带的命令行下使用,也没有什么python编程神器,有是大家有什么更好的编辑器也顺便求个推荐。
装好了python后,我们以python命令启动python交互式解释器:
程序的输入输出
在python中使用print来进行程序的输出,以一个例子来说,我们把一个字符串赋值给变量myString,先用print来显示变量的内容,之后用变量名称来显示。
通常在代码中,我们用print语句输出变量内容,而在交互式解释器中,不仅可以用print语句显示变量,而且还可以用变量名显示变量的原始值。
注意,在仅用变量时,输出的字符串是用单引号括起来了的。这是为了让非字符串对象也能以字符串的方式先是在屏幕上,即它显示的是该对象的字符串表示,而不仅仅是字符串本身。引号表示你刚刚输入的变量的值是一个字符串。
print语句调用str()函数显示对象,而交互式解释器则调用repr()函数来显示对象。
使用下划线(_)在解释器中有特殊的含义,表示最后一个表达式的值。
print语句可以与字符串格式操作符(%)结合使用,可实现字符串替换功能,这一点和C语言十分的相似。
程序输入和raw _input()内建函数
从用户那里得到数据的输入的最容易的方法是使用raw_input()内建函数。它读取标准输入,并将读取到的数据赋值给指定的变量。也可以使用int()内建函数将用户输入的字符串转换为整型。
上面的例子只用于文本输入。下面是输入一个数值字符串(并将字符串转换为整型int()函数)的例子:
如果不使用int()内建函数将字符串转换为整型值,就将它看做字符串,只有转换为整型值后才能进行数学运算。
注释
python使用#符号标示注释,从#开始,直到一行的结束都是注释。
有一种叫做文档字符串的特别注释。你可以在模块,类或者函数的起始添加一个字符串,起到在线文档的功能,以函数举例:
与普通注释不同,文档字符串可以在运行时访问,也可以用来自动生成文档。
操作符
+ - * / // % **
加,减,乘,除,取余都是标准操作符。Python有两种除法操作符,单斜杠用作传统除法,双斜杠用作浮点数除法(对结果进行四舍五入)。传统除法是指如果两个操作数都是整型的话,它将执行的除法的商是比商小的最大整数。
还有一个乘方操作符,双星号(**),相当于指数 a ** b 相当于 a^b
。
操作符的优先级是+和-优先级最低, *,/,//,%优先级较高,单目操作符+和-优先级更高,乘方的优先级最高。
Python也有标准比较操作符,比较运算符根据表达时的值的真假返回布尔值。
< , <= , > , >= , == , != , <>
Python目前支持两种不等于比较操作符,!= 和 <>。
python同样提供了逻辑操作符。
and or not
使用逻辑操作符可以将任意表达式连接在一起得到一个布尔值。
最后一个例子在其他语言中通常是不合法的,不过Python支持这样的表达式,即简单又优美,但实际上是下面表达式的缩写:
变量和赋值
变量名仅仅是一些字母开头的标示符——所谓字母开头意指大写或小写字母,另外还包括下划线(_)。其他的字符可以是数字、字母或下划线。python变量的大小写是敏感的。也就是说“case”和“Case”是两个不同的变量。
Python是动态类型语言,也就是说不需要预先声明变量的类型。变量的类型和值在赋值那一刻被初始化。
数字
Python支持五种基本数字类型,其中三种是整型类型。
- 有符号整形
int eg:0101 84
- 长整型
long eg:29979062458L -841401
- 布尔值
True False
- 长整型
- 浮点数
float eg:3.14159 4.2E-10
- 复数
eg:6.23+1.5j
Python 的长整型所能表达的范围远远超过C语言的长整型,Python长整型仅受限于用户计算机的虚拟内存总数。
从长远来看,整型与长整型正在逐步统一为一种整型类型。再也不会报整型溢出错误,结果会被自动转换为长整型。或许以后的版本中,两种整型类型将会无缝结合,长整型后缀“L”也会变得可有可无。
布尔值是特殊的整型。尽管布尔值由常量True和False来表示,如果将布尔值放到一个数值上下文环境中(比如将True与一个数字相加),True会被当作整型1,False会被当作整型0.
字符串
Python中字符串被定义为引号之间的字符集合。Python支持使用成对的单引号双引号,三引号(三个连续的单引号或双引号)可用来包含特殊字符。
python字符串通常有单引号(’…’)、双引号(”…”)、三引号(”“”…”“”)或(”’…”’)包围,三引号包含的字符串可由多行组成,一般可表示大段的叙述性字符串。在使用时基本没有差别,但双引号和三引号(”“”…”“”)中可以包含单引号,三引号(”’…”’)可以包含双引号,而不需要转义
使用索引操作符([])和切片操作符([:])可以得到子字符串。子字符串有其特有的索引规则:第一个字符的索引是0,最后一个字符的索引是-1.
加号(+)用于字符串的连接,星号(*)用于字符串重复。
列表和元组
可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的Python对象。和数组一样,通过从0开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。、
列表和元组有几处重要的区别。列表元素用中括号([])包裹,元素的个数及元素的值可以改变。元组元素用小括号(( ))包裹,不可以改变(其实他们的内容可以)。
元组可以看成制度的列表。通过切片运算([]和[:])可以得到子集,这一点与字符串的使用方法一样。
列表:
元组:
字典
字典是Python中的映射数据类型,由键-值对构成。几乎所有类型的Python对象都可以用作键,不过一般还是数字或者字符串最为常用。
值可以是任意类型的Python对象,字典元素用大括号({})包裹。
代码块及缩进对齐
代码块通过缩进对齐表达代码逻辑,而不是使用大括号。因为没有了额外的字符,程序的可读性更高。而且缩进完全能够清楚的表达一个语句属于哪个代码块。当然,代码块也可以只有一个语句组成。
if语句
标准的if语句语法如下:
if expression
if_suite
如果表达式的值非0或者为布尔值True,则代码组if_suit被执行;否则就去执行下一条语句。代码组是一个Python术语,它由一条或多条与句组成,表示一个子代码块。Python的条件表达式不需要用括号括起来。
if expression:
if_suite
elif expression2:
elif_suite
else:
else_suite
while循环
标准while条件循环语句的语法类似if。再说一次,要使用缩进来分割每个子带码块。
while expression:
while_suite
语句while_suite会被连续不断地循环执行,直到表达式的值变成0或False,接着Python会执行下一句代码。类似if语句,Python的while语句中的条件表达式也不需要用括号括起来。
for循环和range()内建函数
Python中的for循环与传统的for循环(计数循环)不太一样,它更像shell脚本里foreach迭代。Python中的for接收可迭代对象作为其参数,每次迭代其中一个元素。
print语句默认会在print语句的最后加上一个换行符。如果在print语句最后加上一个逗号(,)就可以改变这种行为。
由上图,我们发现带逗号的print语句输出的元素之间会自动添加一个空格。通过指定输出格式,程序员可以最大程度的控制输出布局,也不用担心这些自动添加的空格。
下面我们介绍两个函数:
- len(obj) 返回对象的函数
- range([start,]stop[,step]) 返回一个整型列表。起始值是start,结束值是stop-1,start默认值是0,step默认值为1
列表解析
列表解析表示我们可以在一行中使用一个for循环将所有值放在一个列表中:
我们还可以挑选符合要求的值放入列表。
文件和内建函数open(),file()
我们使用open函数打开文件:
- handle = open (file_name, access_mode = ‘r’)
file_name变量包含我们希望打开的文集爱你的字符串名字,access_mode中‘r’表示读取,‘w’表示写入,‘a’表示添加等等。
如果open()成功,一个文件对象句柄会被返回。所有后续的文件操作都必须通过此文件句柄进行。
下面的代码提示用户输入文件名,然后打开文件,并显示内容到屏幕上:
filename = raw_input('Enter file name: ')
fobj = open(filename, 'r')
for eachLine in fobj:
print eachLine,
fobj.close()
错误和异常
当检测到一个错误的时候,Python解释器就发生一个异常,并显示异常的详细信息。程序员可以根据这些信息快速的定位问题并进行调试。
要将代码添加错误检测即异常处理,只要将他们封装在try-except语句中。try后就是打算管理的代码。except之后的代码组就是处理错误的代码。
try:
filename = raw_input('Enter file name: ')
fobj = open(filename, 'r')
for eachLine in fobj:
print eachLine
fobj.close()
except IOError, e:
print 'file open error: ',
函数
类似于其他语言,Python中的函数使用小括号(())调用。函数在调用前必须先定义。如果函数中没有return语句,就会自动返回None对象。
Python是通过引用调用的。这意味着函数对内参数的改变会影响到原始的对象。不过事实上只有可变对象会受此影响,对不可变对象来说,他的行为类似按值调用。
定义函数
定义一个函数的语法由def关键字紧随其后的函数名,再加上该函数需要的几个参数组成。函数参数是可选的,所以用括号。这个语句是由一个冒号(:)结束的,之后便是代表函数整体的代码组。
如何调用函数
注意包含参数的小括号不能省略,哪怕没有参数。
默认参数
函数的参数可以有一个默认值,如果提供有默认值,则参数以赋值与句的形式提供。它表示函数调用时如果没有提供这个参数,他就取这个值作为默认值。
模块
模块是一种组织形式,它将彼此有关系的Python代码组织到一个个独立文件之中。模块可以包含可执行代码,函数,和类,或者这些东西的组合。
当你创建了一个Python源文件,模块的名字就是不带.py后缀的文件名。一个模块建立后就可以从另一个模块中使用import语句导入这个模块来使用。
如何导入模块
import module_name
如何访问模块函数或模块变量
module_name.function()
module_name.var