本书的官方网站是www.byteofpython.info
安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路径安装好后,一定要配置环境变量,详细呢可以看武老师的博客(我的python编程入门老师虽然他不认识我,我也不认识他)。
重要
在你的程序中合理地使用注释以解释一些重要的细节——这将有助于你的程序的读者轻松地理
解程序在干什么。记住,这个读者可能就是6个月以后的你!
$ chmod a+x hello_world.py
$ ./hello_world.py
$ 输出程序的执行结果
chmod命令用来改变文件模式,给系统中所有用户这个源文件的执行权限,然后就可以直接通过指定源文件的位置来执行程序,使用./提示程序位于当前目录。
也可以把.py去掉直接执行文件,因为系统要使用源文件第一行指定的解释器来执行该文件。
只要知道文件的确切位置,你就可以运行程序——但是如果你希望你的程序可以从各个位置运行,你可以把你的程序保存在PATH环境变量中的目录之一,系统会自动在PATH中的目录里寻找你要执行的文件。
$echo $PATH
/opt/mono/bin/:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/swaroop/bin
$cp hello_world.py /home/swaroop/bin/hello_world
$hello_world
程序执行的结果
用echo命令显示PATH变量,用$给变量名加前缀以向shell表示我们需要这个变量的值。我们看到的/home/swaroop/bin是PATH变量中的目录之一。swaroop是在系统中使用的用户名。你可以把你选择的目录添加到PATH变量中——这可以通过运行PATH=$PATH :/home/swaroop/mydir完成。
当你想要在任何时间、任何地方运行你的程序,这个方法很有用。他就好像创造你自己的指令,如同cd或其他linux终端或DOS提示符命令那样。
提示:(这个问题困惑我好久)
对于Python,程序、脚本或者软件都是指同一个东西。
help(str)括号内是你要查询的数据类型。
linux下的操作:
如果想要获取关于如print那样操作符的帮助,那么你需要正确的设置PYTH ON DOCS环境变量。这可以在linux中轻松的通过env完成。
$ env PYRH ON DOCS=/usr/share/doc/python-docs-2.3.4/html/python
Python2.3.4(#1,0 ct26 2004,16:42:40)
[GCC 3.4.2 20041017(Red Hat3.4.2-6.fce)] on linux2
Type"help","copyright","cred its"or"license"form ore inform ation.
>>>help("print")
注意"print"要加引号。
使用字符串的方式:
~ 单引号(’)
~ 双引号(”) #"what‘s your name?"双引号内使用单引号不用转义符
~ 三引号(‘‘‘或""") #‘‘‘what‘s your name? My name is "Guido‘s admisers", I like python.‘‘‘三引号中自由的使用单引号和双引号
‘what\‘s your name?‘如果没有 \ python解释器则找不到字符串的起止位置。
\\ 表示 \ 的意思
”how old are you?\
what‘s your name?"
上面的字符串则表示:行末的单独的一个 \ 表示字符串在下一行继续,而不是开始新的一行。
r‘what\‘s your name? \n My name is Guido?‘
这样字符串里的转义符就不会进行转义处理了。
在处理正则表达式时一定要用"r"
~ 第一个字符必须是字母(大小写均可)或者一个下划线(‘_‘)
~ 其他部分可以由字母(大小写均可)、下划线(‘_‘)或树脂(0-9)组成
~ 相同的变量名是区分大小写的,例如name!=Name
~ 变量名中只能有以上说的方式内容组成
在Python中,在程序中用到的任何东西都叫对象。
物理行是你在编写程序时说看见的。逻辑行是Python解释器看见的单个语句。如果在一个物理行使用多于一个逻辑行,就需要用分号(;)来特别标明这种用法。(;)表示一个逻辑行的结束。(尽量避免使用一个物理行存在多个逻辑行)
多个物理行可以写一个逻辑行,例如:
s = "This is a string.\
This continues the sting."
print(s)
执行输出:
This is a string.This continues the sting.
在python中缩进决定语句的分组,同一层次的语句必须有相同的缩进,错误的缩进会引发错误。
在使用缩进时,空格和制表符不要混合使用,因为在跨平台操作时无法正常工作,在每个缩进层次使用单个制表符或者使用四个空格。
在运算中,python会优先计算下表中最下面的运算符,最好使用()圆括号来分组运算和操作数,使程序更加易读。
在下表中列在同一行的运算符具有相同优先级。
下表是一个优先级的默认顺序,如若想改变优先级的顺序,则需使用圆括号。
具有相同优先级的运算符按照从左向右的顺序计算。一些如赋值运算符那样的运算符是由右向左结合的,即a=b=c被处理为a=(b=c)。
if条件为真,执行if下的语句;如果if条件为假,处理另一块elif语句;否则实行else块,else从句是可选的。
注意:if、elif、else语句在结尾处包含一个冒号——我们通过他告诉python下面跟着一个语句块。
#! usr/bin/env python # -*-coding:utf-8-*- name = input("what‘s your name?") if name == "VV": print("I love you!") elif name == "MM": print("Get out!") else: print("I don‘t know.")
如果条件为真,while语句允许重复执行一块语句。所以while语句是循环语句。同时,也有一个可选的else从句
#!/usr/bin/env python # -*- coding:utf -8-*- while 1>2: print(123) break else: print(789)
for...in...是另外一个循环语句,它在以序列的对象上递归即逐一使用队列中的每个项目。
#!/usr/bin/env python # -*- coding:utf -8-*- for i in range(1,5,2): print(i) else: print(‘MM‘)
range(1,5)生成序列[1,2,3,4],range的默认步长为1,给range提供第3个数,它将成为步长。例如:range(1,5,2)给出[1,3]。
else总是会在for循环结束后执行一次,除非遇到break
break语句:终止循环语句,一旦遇到立刻停止执行循环程序。
continue语句:终止后面的剩余语句,然后继续进行下一轮循环。
#!/usr/bin/env python # -*- coding:utf -8-*- def name(): #定义函数 pass #函数体 name() #执行函数
函数的参数有形式参数和实际参数
定义时圆括号内的参数为形式参数,执行时圆括号内的参数为实际参数。
当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。这称为变量的作用域。所有变量的作用域是它们被定义的块,从他们的名称被定义的那点开始。
如果你想为一个定义在函数外的变量赋值,那么就得告诉python这个变量不是局部的,而是全局的。我们使用global语句完成这一功能。没有global语句是不可能为定义在函数外的变量赋值的。
#!/usr/bin/env python # -*- coding:utf -8-*- MM = "alex" def name(): global MM print(MM) name()
你可以在函数定义的形参后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。
默认参数值应该是一个不可变的参数。
#!/usr/bin/env python # -*- coding:utf -8-*- def name(MM, VV="Lily"): pass name(‘TT‘)
不再依照传入参数的顺序来分配参数,而是使用名字来参入参数。
这样做的两个优势:
~ 由于我们不必担心参数的顺序,使用函数变得更加简单。
~ 假设其他参数都有默认值,我们可以只给我们想要的那些参数赋值。
#!/usr/bin/env python # -*- coding:utf -8-*- def name(MM, NN, VV="Lily"): pass name(NN=‘pp‘, MM=‘TT‘)
return语句用来从一个函数返回即天出函数。我们也可以选择从函数返回一个值。
函数一旦遇到return立刻终止函数的运行并返回其后的参数。
#!/usr/bin/env python # -*- coding:utf -8-*- def name(MM, VV="Lily"): if MM==VV: return MM else: return VV name(‘TT‘)
奇妙的特性,文档字符串。DocStrings是一个重要的工具,他可以帮助你的程序文档更加简单易懂,你应该尽量使用它。甚至可以在程序运行的时候从函数恢复文档字符串!
#!/usr/bin/env python # -*- coding:utf -8-*- def printM_ax(x, y): ‘‘‘Prints the m axim um of two num bers. The two values m ust be integers.‘‘‘ x = int(x) # convert to integers, if possible y = int(y) if x > y: print(x, ‘is m axim um ‘) else: print(y, ‘is m axim um ‘) printM_ax(3, 5) print(printM_ax.__doc__) #执行结果 5 is m axim um Prints the m axim um of two num bers. The two values m ust be integers.
~ 在函数的第一个逻辑行的字符串是这个函数的 文档字符串 。注意,D ocStrings也适用于模块和类,我们会在后面相应的章节学习它们。
~ 文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。 强烈建议 你在你的函数中使用文档字符串时遵循这个惯例。
~ 你可以使用__doc__(注意双下划线)调用printM ax函数的文档字符串属性(属于函数的名称)。请记住Python把 每一样东西 都作为对象,包括这个函数。我们会在后面的类一章学习更多关于对象的知识。
~ 如果你已经在Python中使用过help(),那么你已经看到过D ocStings的使用了!它所做的只是抓取函数的__doc__属性,然后整洁地展示给你。你可以对上面这个函数尝试一下——只是在你的程序中包括help(printM ax)。记住按q退出 help。
~ 自动化工具也可以以同样的方式从你的程序中提取文档。因此,我 强烈建议 你对你所写的任何正式函数编写文档字符串。随你的Python发行版附带的pydoc命令,与help()类似地使用D ocStrings。
原文:http://www.cnblogs.com/Guido-admirers/p/6238712.html