python入门指南
python是一门简单易学且功能强大的编程语言。它拥有高效的高级数据结构,并且能够简单而又高效的方式进行面向对象编程。
python是一门解释性语言,因为无需编译和链接,在开发中节省时间。
使用python解释器
调用python解释器
python解释器通常被安装在目标机器的/user/local/bin/python3.4目录下,将/user/local/bin目录包含进Unix shell的搜索路径里,以确保可以通过输入:python3.4 命令来启动它。
在windows机器上,python通常安装在c:\python3.4位置,你可以在运行安装向导时修改此值。想要把此目录添加到你的PATH环境变量中,你可以在DOS窗口中输入以下命令:
set path=%path%;c:\ptrhon33
由于python语句通常会包含空格或其他特殊shell字符,一般建议将命令用单引号包裹起来。
参数传递
解释器会读取命令行参数,转化为字符串列表存入sys模块中的argv变量中。执行命令import sys你可以导入这个模块并访问这个列表。
交互模式
在交互模式下,根据主提示符来执行,主提示符通常标识为三个大于号(>>>),继续的部分被称为从属提示符,有三个点标识(…)。在第一行之前,解释器打印欢迎信息,版本和授权提示:
解释器及其环境
错误处理
在主提示符或附属提示符输入中断符(通常时ctrl+C或者DEL)就会取消当前输入,回到主命令行。执行命令时输入一个中断符会抛出一个keyboardInterrupt异常,它可以被try语句截获。
执行pthon脚本
python脚本可以像shell脚本那样执行,只要在脚本文件开头写一行命令,指定文件和模式。
#!/user/bin/evn python3.3
(要确认python解释器在用户的PATH中)
脚本可以通过chmod命令指定执行模式和权限
$ chmod +x myscript.py
源程序编码
默认情况下,python源文件是UTF-8编码。
你也可以为源文件指定不同的字符编码。为此,在#!行(首行)后插入至少一行特殊的注释行来定义源文件的编码
# -*- coding:encoding -*-
通过此声明,源文件中所有的东西都会被当作用encoding指代的UTF-8编码对待。
交互执行文件
你可以在一个文件中包含你想要执行的命令,设定一个名为PYTHONSTARTUP的环境变量来指定这个文件。
如果你想要在当前的目录中执行附加的启动文件,可以在全局启动文件中加入类似以下的代码:
if os.path.isfile('.pythonrc.py'): execfile('.pythonrc.py')。
如果你想要在某个脚本中使用启动文件,必须要在脚本中写入这样的语句:
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
exec(open(filename).read())
本地化模块
python提供了两个钩子(方法)来本地化:sitecustomize和usercustomize。为了见识他们,你首先需要找到你的site-packages的目录,启动python执行下面的代码:
import site
site.getusersitepackages()
'C:\\Users\\86159\\AppData\\Roaming\\Python\\Python36\\site-packages'
python简介
将python当做计算器
数字
解释器的表示就像一个简单的计算器:可以向其录入一些表达式,它会给出返回值。表达式语法很直白:运算符+,-,*,/,与其他语言一样,:括号用于分组。
注意:有时你可能会得到不同的结果:浮点数在不同机器上的运算结果可能是不同的。
对整数做除法运算并想去除小数部分取得整数结果时,可以使用另外一个运算符, //:
等号(’=’)用于给变量赋值。一个值可以同时赋值给几个变量。变量在使用前必须"定义"(赋值),否则会出错。
浮点数有完整的支持:与整型混合计算时会自动转为浮点数。
字符串
python也提供了可以通过几种不同的方式传递的字符串。他们可以用单引号或双引号标识。
字符串文本有几种方法分行。可以使用反斜杠为行结尾的连续字符串,它表示下一行在逻辑上是本行的后续内容。
字符串文本有几种分行的方法。可以使用反斜杠为行结尾的连续字符串,它表示下一行在逻辑上是本行的后续内容。
字符串可以标识在一对儿三引号中。不需要行属转义,它们已经包含在字符串中。
字符串可以由+操作符连接(粘到一起),可以由*重复。
字符串可以被截取(检索)可以用切片标注法截取字符串:由两个索引分割的复本。
索引切片可以有默认值,切片时,忽略第一个索引的话,默认为0,忽略第二个索引,默认为字符串的长度。
python字符串不可变。向字符串文本的某一个索引赋值会引发错误:
关于Unicode
如果想在字符串中包含特殊字符,你可以使用python的Unicode的编码方式。
>>> 'Hello\u0020World!'
'Hello World!'
转码序列\u0020表示在指定位置插入编码为0x0020的Unicode字符(空格)
字符串对象提供了一个encode()方法用以将字符串转换成特定编码的字节序列,它接收一个小写的编码名称作为参数。
>>> "Apfel".encode('utf-8')
b'Apfel'
列表
列表可以用作中括号之间的一列逗号分隔的值。列表的元素不必是同一类型。
就像字符串索引,列表的元素不必是同一类型。
像字符串索引,列表从0开始检索,列表可以被切片和连接:
所有的切片操作都会返回新的列表,包含求得的元素,这意味着以下的切片操作返回列表a的一个浅拷贝的副本。
列表允许修改元素,可变,也可以对切片赋值。
编程的第一步
写一个生成斐波那契数列的程序
>>> a,b=0,1
>>> while b<10:
... print(b)
... a,b=b,a+b
...
1
1
2
3
5
8
用一个都好结尾就可以禁止输出换行:
>>> a,b=0,1
>>> while b<1000:
... print(b,end=',')
... a,b=b,a+b
...
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,>>>
深入python流程控制
if语句
if ...elif...elif...序列用于替代其他语言中的switch或case语句
x = int(input("请输入数字:"))
if x < 0:
print('zero')
elif x == 0:
print('one')
elif x == 1:
print('two')
else:
print('three')
for语句
在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这样的情况)。如果你想要修改迭代的序列,你可以迭代他的复本。使用切割标识就可以很方便的做到这一点。
>>> a = ['wer','ertb','tytyjjj']
>>> for x in a[:]:
... print(x)
... if len(x)>6:
... a.insert(0,x)
...
wer
ertb
tytyjjj
range函数
内置函数range()会很方便,生成一个等差级数链表
需要迭代链表索引,结合使用range()和len()或者enumerate()
在不同方面range()函数返回的对象表现为一个列表,但事实上它并不是。当你迭代它时,它是一个能够像期望的序列返回连续项的对象;但为了节省空间,它并不是真正的构造列表。
list(range(5))
[0,1,2,3,4]
break和continue语句,以及循环中的else子句
break语句,用于跳出最近的一级for或while循环
循环可以有一个else字句,它在循环迭代完整个列表(对于for)或执行条件为false(对于while)时执行,但循环为break中止的情况下不会执行,
for n in range(2, 10):
for x in rang