python进修笔记(一)
添加时间:2013-5-5 点击量:
python很多人都很是熟悉,而我作为后知后觉者,固然慢人一步,然则进修永远不会晚。其实作为shell,不管是perl还是ruby、powershell等,语法很类似的,我以前没接触过python,如今从最根蒂根基的学起,当然对于很是简单的并没有具体记录,简单的筹办记录下应当重视的处所。固然python3.X的shell对象已经出来了,然则相干教程如同没找到,并且与python2.x语法很多多少不兼容。所以我的进修景象是python shell2.7,也是今朝稳定和常用的版本吧。
娱乐阶段:
进修python之前,先来看看python的设计哲学,我感觉Guido van Rossum必然是个有趣的人,能将设计思惟展如今python申明器中,呵呵。输入import this 号令:
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type copyright, credits or license() for more information.
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly. 精美胜于丑恶
Explicit is better than implicit. 了然胜于晦涩
Simple is better than complex. 简单胜过错杂
Complex is better than complicated. 错杂胜过纷乱
Flat is better than nested. 扁平胜于嵌套
Sparse is better than dense. 间隔胜于紧凑
Readability counts. 可读性很首要
Special cases arent special enough to break the rules. 即使假借特例的实用性之名,也不违背这些规矩
Although practicality beats purity. 固然实用性次于纯度
Errors should never pass silently. 错误不该该被无声的忽视
Unless explicitly silenced. 除非明白的沉默
In the face of ambiguity, refuse the temptation to guess. 当存在多种可能时,不要测验测验去猜测
There should be one-- and preferably only one --obvious way to do it. 应当有一个,好只有一个,明显能做到这一点
Although that way may not be obvious at first unless youre Dutch.固然这种 体式格式可能不轻易,除非你是python之父
Now is better than never. 如今做总比不做好
Although never is often better than right now. 固然畴昔从未比如今好
If the implementation is hard to explain, its a bad idea. 若是这个实现不轻易申明,那么它必然是坏主意
If the implementation is easy to explain, it may be a good idea. 若是这个实现轻易申明,那么它很可能是个好主意
Namespaces are one honking great idea -- lets do more of those! 定名空间是一种绝妙的理念,该当多加哄骗
>>>
哈哈,和一般的说话不合,在“hello world”法度开端之前,它还有一番人生哲学啊。
初步入门:
第一个python法度:(和其他脚本一样,可以按tab键快速选择)
>>> print hello world ==>print是一个函数
hello world
>>>
这个在python3.0的申明器中运行是错误的,应当写成:print(hello world),不管这些,以下均是2.X版本下。
根蒂根基常识:
交互式python申明器可以当很是强大的策画器应用
>>> 1+1
2
>>> 1/2 ==>和其他说话一样,不做任何处理惩罚的景象下,这个是取整
0
>>> 1.0/2 ==>将随便率性一个数写成浮点情势,则成果会与精度大对峙一致
0.5
>>> 1./2 ==>零丁写个小数点也行
0.5
>>> 1//2 ==> //这个符号是专门取整的
0
>>>
假如不想每次都要这么费劲一下,我就想在python里履行通俗的除法,有办法:
>>> __future__ import division ==>重视future阁下是两个下划线
>>> 1/2
0.5
>>> 1//2 ==>在这种景象下你反而想取整数项目组了,应用//
>>> 0
>>>1.//2
>>>0.0
长整型和进制:
>>> 958346283662845 ==>2.2版本以前是不克不及处理惩罚长整型的,局限是-2147483648~2147483647
958346283662845L ==>L默示长整型,并且是大写
>>> 0 xAF ==>16进制
175
>>> 010 ==>8进制 (010首数字是0,表8进制)
8
>>>
获取用户输入:
>>> x=input(x=)
x=3
>>> y=input(y=)
y=4
>>> xy
12
函数:
>>> pow(2,3) ==>求幂函数
8
>>> 23
8
>>> abs(-10) ==>取绝对值
10
>>> round(5/2) ==>这里是先算5/2,即2,所以round(2)=2.0
2.0
>>> round(2.5) ==>把浮点数四舍五入为最接近的整数值
3.0
>>> floor(32.9) ==>取为不大于该数的最大整数
32
模块:
那我不想每次都输入math.来调用响应函数,如下写法:
>>> math import floor
>>> floor(3.2)
3.0
cmath和复数:
在高中的时辰有复数的预算,比如对一个复数取根,python供给了对复数处理惩罚的机制,然则要引入cmath模块。
>>> sqrt(-9)
Traceback (most recent call last):
File <pyshell#35>, line 1, in <module>
sqrt(-9)
NameError: name sqrt is not defined
>>> import math ==>引入math模块也无效
>>> math.sqrt(-9)
Traceback (most recent call last):
File <pyshell#37>, line 1, in <module>
math.sqrt(-9)
ValueError: math domain error
>>> import cmath ==>引入cmath模块
>>> cmath.sqrt(-9)
3j
>>> (1+3j)(9-2j) ==>还可以进行策画
(15+25j)
>>>
(__future__这个模块斗劲希罕,它可以导入那些在将来会成为标准python构成的新特点)
保存并履行法度:
如今建一个python文件,扩大名是.py,把 print hello python!写入,双击,我们看到的是一闪而过的一个黑框,我记得在履行C#窗体法度的时辰也会呈现这种景象,只要在主法度结尾加上Console.ReadKey()就行了,这里也是,要给把握台一个提示输入的机会,不然运行完就退出了,在结尾加一个语句:raw_input()。再双击即可弹出“hello python!”
履行这个文件hello.py
name=raw_input (what is you name:)
print hello +name +!
raw_input()
字符串:
>>> hello python! ==>双引号会把原字符串按原样显示
hello python!
>>> well go shopping!
well go shopping!
>>> well go shopping!
SyntaxError: invalid syntax
>>> we\ll go shopping! ==>转义单引号
well go shopping!
>>> \hello,python!\ she said ==>字符串本身有双引号的景象
hello,python! she said
>>>hello + python! ==>字符串拼接
hello python!
str & repr:
您可能发了然,不消print打印出的字符串显示出来的时辰会被单引号括起来。所有经由过程python打印的字符串是被引号括起来的,这是因为python打印值的时辰会对峙该值在代码中的状况,而不是你用户看到的状况。
>>> print hello world
hello world
>>> print hello world
hello world
>>> hello world
hello world
>>> hello world
hello world
>>> print 10000L
10000
>>> 10000L
10000L
>>>
这里评论辩论的实际是值转换成字符串的两种机制,
str函数:会把值转换为和理性是的字符串,以便用户可以懂得
repr函数:会创建一个字符串,以合法的python表达式的情势默示值。
>>> print repr(hello python!)
hello python!
>>> print repr(100000L)
100000L
>>> print str(hello python!) ==>显然,用户更看到的是str函数处理惩罚后的成果
hello python!
>>> print str(10000L)
10000
>>>
其实python有时辰也没有这么智能,在高等说话中,如同数字有时辰可以主动转换为字符串型
>>> age=22
>>> print my age is + age
Traceback (most recent call last):
File <pyshell#72>, line 1, in <module>
print my age is + age
TypeError: cannot concatenate str and int objects
>>> print my age is + str(age)
my age is 22
>>>
input & raw_input
如许,我们先运行两个脚本,代码如下:
name=input(please input your name:)
print hello,+name
另一个脚本是将上述input改为raw_input
运行会发明,第一个失足。其实不运行脚本也行,我么直接在申明器里运行号令吧!
>>> name =input(please input name:)
please input name:Jay
Traceback (most recent call last):
File <pyshell#74>, line 1, in <module>
name =input (please input name:)
File <string>, line 1, in <module>
NameError: name Jay is not defined
>>> name =raw_input (please input name:)
please input name:Jay
其实你只要在input那个下面输入的字符串加上引号就行了,这就是原因。input会假设用户输入的是python的合法表达式,当然以字符串作为输入的名字必然没有题目,然则请求用户每次输入一个器材还须要加引号,这不太友爱。
想反,raw_input函数会把所有的输入当做原始数据,然后主动将其放入字符串中,所以不会失足,所以我们应尽可能应用 raw_input()
长字符串
若是须要写一个很长的字符串,它须要跨多行,可以应用三个单引号,强迫换行用反斜杠\
>>> asdgh
agjaw
ag
asdgh\nagjaw\nag
>>> 1+5+ 4+6
16
>>>
python中对多个反斜杠(路径中常用)转义除了加\,可以在全部字串的前面加r
>>> print c:\temp\test.txt
c: emp est.txt ==>\t是制表符,所以会将\t作为一个制表符显示
>>> print c:\\temp\\test.txt ==>用传统的\转义
c:\temp\test.txt
>>> print rc:\temp\test.txt ==>在前面加r转义
c:\temp\test.txt
>>>
常用的函数:abs(number)、cmath.sqrt(number)、float(object)、help()、input(prompt)、int(object)、long(object)、math.ceil(number)(返回上入整数)、math.floor(number)(返回下舍整数)、pow(x,y)、raw_input(prompt)、repr(object)、str(object)、round(number[.ndigits])
(转)
我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
python很多人都很是熟悉,而我作为后知后觉者,固然慢人一步,然则进修永远不会晚。其实作为shell,不管是perl还是ruby、powershell等,语法很类似的,我以前没接触过python,如今从最根蒂根基的学起,当然对于很是简单的并没有具体记录,简单的筹办记录下应当重视的处所。固然python3.X的shell对象已经出来了,然则相干教程如同没找到,并且与python2.x语法很多多少不兼容。所以我的进修景象是python shell2.7,也是今朝稳定和常用的版本吧。
娱乐阶段:
进修python之前,先来看看python的设计哲学,我感觉Guido van Rossum必然是个有趣的人,能将设计思惟展如今python申明器中,呵呵。输入import this 号令:
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type copyright, credits or license() for more information.
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly. 精美胜于丑恶
Explicit is better than implicit. 了然胜于晦涩
Simple is better than complex. 简单胜过错杂
Complex is better than complicated. 错杂胜过纷乱
Flat is better than nested. 扁平胜于嵌套
Sparse is better than dense. 间隔胜于紧凑
Readability counts. 可读性很首要
Special cases arent special enough to break the rules. 即使假借特例的实用性之名,也不违背这些规矩
Although practicality beats purity. 固然实用性次于纯度
Errors should never pass silently. 错误不该该被无声的忽视
Unless explicitly silenced. 除非明白的沉默
In the face of ambiguity, refuse the temptation to guess. 当存在多种可能时,不要测验测验去猜测
There should be one-- and preferably only one --obvious way to do it. 应当有一个,好只有一个,明显能做到这一点
Although that way may not be obvious at first unless youre Dutch.固然这种 体式格式可能不轻易,除非你是python之父
Now is better than never. 如今做总比不做好
Although never is often better than right now. 固然畴昔从未比如今好
If the implementation is hard to explain, its a bad idea. 若是这个实现不轻易申明,那么它必然是坏主意
If the implementation is easy to explain, it may be a good idea. 若是这个实现轻易申明,那么它很可能是个好主意
Namespaces are one honking great idea -- lets do more of those! 定名空间是一种绝妙的理念,该当多加哄骗
>>>
哈哈,和一般的说话不合,在“hello world”法度开端之前,它还有一番人生哲学啊。
初步入门:
第一个python法度:(和其他脚本一样,可以按tab键快速选择)
>>> print hello world ==>print是一个函数
hello world
>>>
这个在python3.0的申明器中运行是错误的,应当写成:print(hello world),不管这些,以下均是2.X版本下。
根蒂根基常识:
交互式python申明器可以当很是强大的策画器应用
>>> 1+1
2
>>> 1/2 ==>和其他说话一样,不做任何处理惩罚的景象下,这个是取整
0
>>> 1.0/2 ==>将随便率性一个数写成浮点情势,则成果会与精度大对峙一致
0.5
>>> 1./2 ==>零丁写个小数点也行
0.5
>>> 1//2 ==> //这个符号是专门取整的
0
>>>
假如不想每次都要这么费劲一下,我就想在python里履行通俗的除法,有办法:
>>> __future__ import division ==>重视future阁下是两个下划线
>>> 1/2
0.5
>>> 1//2 ==>在这种景象下你反而想取整数项目组了,应用//
>>> 0
>>>1.//2
>>>0.0
长整型和进制:
>>> 958346283662845 ==>2.2版本以前是不克不及处理惩罚长整型的,局限是-2147483648~2147483647
958346283662845L ==>L默示长整型,并且是大写
>>> 0 xAF ==>16进制
175
>>> 010 ==>8进制 (010首数字是0,表8进制)
8
>>>
获取用户输入:
>>> x=input(x=)
x=3
>>> y=input(y=)
y=4
>>> xy
12
函数:
>>> pow(2,3) ==>求幂函数
8
>>> 23
8
>>> abs(-10) ==>取绝对值
10
>>> round(5/2) ==>这里是先算5/2,即2,所以round(2)=2.0
2.0
>>> round(2.5) ==>把浮点数四舍五入为最接近的整数值
3.0
>>> floor(32.9) ==>取为不大于该数的最大整数
32
模块:
那我不想每次都输入math.来调用响应函数,如下写法:
>>> math import floor
>>> floor(3.2)
3.0
cmath和复数:
在高中的时辰有复数的预算,比如对一个复数取根,python供给了对复数处理惩罚的机制,然则要引入cmath模块。
>>> sqrt(-9)
Traceback (most recent call last):
File <pyshell#35>, line 1, in <module>
sqrt(-9)
NameError: name sqrt is not defined
>>> import math ==>引入math模块也无效
>>> math.sqrt(-9)
Traceback (most recent call last):
File <pyshell#37>, line 1, in <module>
math.sqrt(-9)
ValueError: math domain error
>>> import cmath ==>引入cmath模块
>>> cmath.sqrt(-9)
3j
>>> (1+3j)(9-2j) ==>还可以进行策画
(15+25j)
>>>
(__future__这个模块斗劲希罕,它可以导入那些在将来会成为标准python构成的新特点)
保存并履行法度:
如今建一个python文件,扩大名是.py,把 print hello python!写入,双击,我们看到的是一闪而过的一个黑框,我记得在履行C#窗体法度的时辰也会呈现这种景象,只要在主法度结尾加上Console.ReadKey()就行了,这里也是,要给把握台一个提示输入的机会,不然运行完就退出了,在结尾加一个语句:raw_input()。再双击即可弹出“hello python!”
履行这个文件hello.py
name=raw_input (what is you name:)
print hello +name +!
raw_input()
字符串:
>>> hello python! ==>双引号会把原字符串按原样显示
hello python!
>>> well go shopping!
well go shopping!
>>> well go shopping!
SyntaxError: invalid syntax
>>> we\ll go shopping! ==>转义单引号
well go shopping!
>>> \hello,python!\ she said ==>字符串本身有双引号的景象
hello,python! she said
>>>hello + python! ==>字符串拼接
hello python!
str & repr:
您可能发了然,不消print打印出的字符串显示出来的时辰会被单引号括起来。所有经由过程python打印的字符串是被引号括起来的,这是因为python打印值的时辰会对峙该值在代码中的状况,而不是你用户看到的状况。
>>> print hello world
hello world
>>> print hello world
hello world
>>> hello world
hello world
>>> hello world
hello world
>>> print 10000L
10000
>>> 10000L
10000L
>>>
这里评论辩论的实际是值转换成字符串的两种机制,
str函数:会把值转换为和理性是的字符串,以便用户可以懂得
repr函数:会创建一个字符串,以合法的python表达式的情势默示值。
>>> print repr(hello python!)
hello python!
>>> print repr(100000L)
100000L
>>> print str(hello python!) ==>显然,用户更看到的是str函数处理惩罚后的成果
hello python!
>>> print str(10000L)
10000
>>>
其实python有时辰也没有这么智能,在高等说话中,如同数字有时辰可以主动转换为字符串型
>>> age=22
>>> print my age is + age
Traceback (most recent call last):
File <pyshell#72>, line 1, in <module>
print my age is + age
TypeError: cannot concatenate str and int objects
>>> print my age is + str(age)
my age is 22
>>>
input & raw_input
如许,我们先运行两个脚本,代码如下:
name=input(please input your name:)
print hello,+name
另一个脚本是将上述input改为raw_input
运行会发明,第一个失足。其实不运行脚本也行,我么直接在申明器里运行号令吧!
>>> name =input(please input name:)
please input name:Jay
Traceback (most recent call last):
File <pyshell#74>, line 1, in <module>
name =input (please input name:)
File <string>, line 1, in <module>
NameError: name Jay is not defined
>>> name =raw_input (please input name:)
please input name:Jay
其实你只要在input那个下面输入的字符串加上引号就行了,这就是原因。input会假设用户输入的是python的合法表达式,当然以字符串作为输入的名字必然没有题目,然则请求用户每次输入一个器材还须要加引号,这不太友爱。
想反,raw_input函数会把所有的输入当做原始数据,然后主动将其放入字符串中,所以不会失足,所以我们应尽可能应用 raw_input()
长字符串
若是须要写一个很长的字符串,它须要跨多行,可以应用三个单引号,强迫换行用反斜杠\
>>> asdgh
agjaw
ag
asdgh\nagjaw\nag
>>> 1+5+ 4+6
16
>>>
python中对多个反斜杠(路径中常用)转义除了加\,可以在全部字串的前面加r
>>> print c:\temp\test.txt
c: emp est.txt ==>\t是制表符,所以会将\t作为一个制表符显示
>>> print c:\\temp\\test.txt ==>用传统的\转义
c:\temp\test.txt
>>> print rc:\temp\test.txt ==>在前面加r转义
c:\temp\test.txt
>>>
常用的函数:abs(number)、cmath.sqrt(number)、float(object)、help()、input(prompt)、int(object)、long(object)、math.ceil(number)(返回上入整数)、math.floor(number)(返回下舍整数)、pow(x,y)、raw_input(prompt)、repr(object)、str(object)、round(number[.ndigits])
(转)
我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》