1.python简介
Python语言是少有的一种可以称得上即简单又功能强大的编程语言。你将惊喜地发现Python语言是多么地简单,它注重的是如何解决问题而不是编程语言的语法和结构。
Python的官方介绍是:Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发
python的广告词:人生苦短,我用python!
2.python的特色
(1).简单
Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
(2).易学
就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。
(3).免费、开源
Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
(4).高层语言
当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
(5).可移植性
由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。
这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC!
(6).解释性
一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。
而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。
(7).面向对象
Python即支持面向过程的编程也支持面向对象的编程。在 面向过程 的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在 面向对象 的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
(8).可扩展性
如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
(9).可嵌入性
你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
(10).丰富的库
Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。
3.python安装
pip安装
https://pypi.python.org/pypi/pip#downloads
pip升级包 pip install -U setuptools
pip安装指定包版本 pip install setuptools==36.0.1
pip安装python的mysql驱动
https://www.microsoft.com/en-us/download/details.aspx?id=44266
http://www.codegood.com/downloads
pip install mysql-python
IDE安装
字体
代码模板
-- encoding: utf-8 --
'''
${NAME}.py
Created on ${DATE} ${TIME}
Copyright (c) ${DATE}, 海牛版权所有.
@author: 青牛
'''
显示行号
4.python基础
(1).数字
在Python中有4种类型的数——整数、长整数、浮点数和复数。
● 2是一个整数的例子。
● 长整数不过是大一些的整数。
● 3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
● (-5+4j)和(2.3-4.6j)是复数的例子。
(2).字符串
● 使用单引号(')
你可以用单引号指示字符串,就如同'Quote me on this'这样。所有的空白,即空格和制表符都照原样保留。
● 使用双引号(")
在双引号中的字符串与单引号中的字符串的使用完全相同,例如"What's your name?"。
● 使用三引号('''或""")
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。
● 转义符
'What\'s your name?'
转义符 \来指示反斜杠本身
"This is the first sentence.\
This is the second sentence."
等价于"This is the first sentence. This is the second sentence."
● 自然字符串
如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如r"Newlines are indicatedby \n"。
● Unicode字符串
Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u"This is a Unicode string."。记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
● 字符串是不可变的
这意味着一旦你创造了一个字符串,你就不能再改变它了。
在Python中没有专门的char数据类型。确实没有需要有这个类型,我相信你不会为此而烦恼。单引号和双引号字符串是完全相同的——它们没有在任何方面有不同。
● 按字面意义级连字符串
如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'What\'s''your name?'会被自动转为"What's your name?"。
表达式一定要用自然字符串处理。否则会需要使用很多的反斜杠。例如,后向引用符可以写成'\1'或r'\1'。
(3).标识符的命名
● 标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ ’)。
● 标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ ’)或数字(0-9)组成。
● 标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中的小写n和后者中的大写N。
● 有效 标识符名称的例子有i、__my_name、name_23和a1b2_c3。
● 无效 标识符名称的例子有2things、this is spaced out和my-name。
(4).数据类型
基本的类型是数和字符串,可以用类创造自己的类型。
(5).对象
记住,Python把在程序中用到的任何东西都称为对象 。就每一个东西包括数、字符串甚至函数都是对象这一点来说,Python是极其完全地面向对象的。
(6).如何编写Python程序
下面是保存和运行Python程序的标准流程。
1). 打开你最喜欢的编辑器。
2). 输入例子中的程序代码。
3). 把它保存为一个以扩展名的py文件。
4). 运行解释器命令python program.py或者使用IDLE运行程序。
代码例子
i = 5
print i
i = i + 1
print i
s = '''This is a multi-line string.
This is the second line.'''
print s
它如何工作
下面来说明一下这个程序如何工作。首先我们使用赋值运算符(=)把一个字面意义上的常数5赋给变量i。这一行称为一个语句。语句声明需要做某件事情,在这个地方我们把变量名i与值5连接在一起。接下来,我们用print语句打印i的值,就是把变量的值打印在屏幕上。然后我们对i中存储的值加1,再把它存回i。我们打印它时,得到期望的值6。类似地,我们把一个字面意义上的字符串赋给变量s然后打印它。
使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。
(7).逻辑行与物理行
物理行是你在编写程序时所 看见 的。逻辑行是Python 看见 的单个语句。Python假定每个 物理行 对应一个 逻辑行 。
逻辑行的例子如print 'Hello World'这样的语句——如果它本身就是一行(就像你在编辑器中看到的那样),那么它也是一个物理行。
默认地,Python希望每行都只使用一个语句,这样使得代码更加易读。
如果你想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号(;)来特别地标明这种用法。分号表示一个逻辑行/语句的结束。例如:
i = 5
print i
与下面这个相同:
i = 5;
print i;
同样也可以写成:
i = 5; print i;
甚至可以写成:
i = 5; print i
然而,我强烈建议你坚持在每个物理行只写一句逻辑行。仅仅当逻辑行太长的时候,在多于一个物理行写一个逻辑行。这些都是为了尽可能避免使用分号,从而让代码更加易读。事实上,我 从来没有 在Python程序中使用过或看到过分号。下面是一个在多个物理行中写一个逻辑行的例子。它被称为明确的行连接。
s = 'This is a string. \
This continues the string.'
print s
它的输出:
This is a string. This continues the string.
类似地,
print \
i
与如下写法效果相同:
print i
(8).缩进
空白在Python中是重要的。事实上行首的空白是重要的。它称为缩进。在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。
这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个块。我们将在判断用法中看到有关块的用处的例子。你需要记住的一样东西是错误的缩进会引发错误。例如:
i = 5
print 'Value is', i # Error! Notice a single space at the start of the line
print 'I repeat, the value is', i
当你运行这个程序的时候,你会得到下面的错误:
print 'Value is', i # Error! Notice a single space at the start of the line
注意,在第二行的行首有一个tab(或空格)。Python指示的这个错误告诉我们程序的语法是无效的,即程序没有正确地编写。它告诉你, 你不能随意地开始新的语句块 (当然除了你一直在使用的主块)。何时你能够使用新块。如何缩进不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。使用单个单个制表符 或 两个或四个空格都可以代表缩进层次,一般使用单个制表符
(9).运算符
可以交互地使用解释器来计算例子中给出的表达式,例如,为了测试表达式2 + 3,使用交互式的带提示符的Python解释器:
运算符与它们的用法
(10).运算符优先级
Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算在上部的运算符。使用圆括号来分组运算符和操作数,以便能够明确地指出运算的先后顺序,使程序尽可能地易读。例如,2 + (3 4)显然比2 + 3 4清晰。与此同时,圆括号也应该正确使用,而不应该用得过滥(比如2 + (3 + 4))。
运算符优先级,由低到高
在表中列在同一行的运算符具有 相同优先级 。例如,+和-有相同的优先级。
(11).计算顺序
默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。然而,如果你想要改变它们的计算顺序,你得使用圆括号。例如,你想要在一个表达式中让加法在乘法之前计算,那么你就得写成类似(2 + 3) * 4的样子。
结合规律
运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算。例如,2 +3 + 4被计算成(2 + 3) + 4。一些如赋值运算符那样的运算符是由右向左结合的,即a = b = c被处理为a = (b = c)
(12).表达式
使用表达式
length = 5
breadth = 2
area = length breadth
print 'Area is', area
print 'Perimeter is', 2 (length + breadth)
print 中的","会自动生成空格
(13).if语句
控制流
在Python中有三种控制流语句——if、for和while。
用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 )。 else 从句是可选的。
使用if语句
代码示例
number = 23
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.'
print "(but you do not win any prizes!)"
elif guess < number:
print 'No, it is a little higher than that'
else:
print 'No, it is a little lower than that'
注意if语句在结尾处包含一个冒号——我们通过它告诉Python下面跟着一个语句块。elif和else从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块
elif和else部分是可选的。一个最简单的有效if语句是:
if True:
print 'Yes, it is true'
在Python中没有switch语句。你可以使用if..elif..else语句来完成同样的工作
(14).while语句
只要在一个条件为真的情况下,while语句允许你重复执行一块语句。while语句是所谓 循环 语句的一个例子。while语句有一个可选的else从句。
代码示例
number = 23
running = True
while running:
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.'
running = False # this causes the while loop to stop
elif guess < number:
print 'No, it is a little higher than that'
else:
print 'No, it is a little lower than that'
else:
print 'The while loop is over.'
Do anything else you want to do here
print 'Done'
你可以在while循环中使用一个else从句,else块事实上是多余的,因为你可以把其中的语句放在同一块(与while相同)中,跟在while语句之后,这样可以取得相同的效果。
(15).for循环
for..in是另外一个循环语句,它在一序列的对象上 递归 即逐一使用队列中的每个项目。
代码示例
for i in range(1, 5):
print i
else:
print 'The for loop is over'
range返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,range(1,5)给出序列[1, 2, 3, 4]。默认地,range的步长为1。如果我们为range提供第
三个数,那么它将成为步长。例如,range(1,5,2)给出[1,3]。记住,range 向上 延伸到第二个数,即它不包含第二个数
for循环在这个范围内递归——for i in range(1,5)等价于for i in [1, 2, 3, 4],这就如同把序列中的每个数(或对象)赋值给i,一次一个,然后以每个i的值执行这个程序块。
else部分是可选的。如果包含else,它总是在for循环结束后执行一次,除非遇到break语句。
for..in循环对于任何序列都适用。
(16).break语句
break语句是用来 终止 循环语句的,即哪怕循环条件没有称为False或序列还没有被完全递归,也停止执行循环语句。
示例代码
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
print 'Length of the string is', len(s)
print 'Done
break语句也可以在for循环中使用。
(17).continue语句
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后 继续 进行下一轮循环。
示例代码
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
continue
print 'Input is of sufficient length'
Do other kinds of processing here...
continue语句对于for循环也有效。
(18).函数
函数通过def关键字定义。def关键字后跟一个函数的 标识符 名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。下面这个例子将说明这事实上是十分简单的:
代码示例
def sayHello():
print 'Hello World!' # block belonging to the function
sayHello() # call the function
(19).函数形参
函数中的参数名称为 形参 而你提供给函数调用的值称为实参
代码示例
def printMax(a, b):
if a > b:
print a, 'is maximum'
else:
print b, 'is maximum'
printMax(3, 4)
(20).局部变量
当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。
示例代码
def func(x):
print 'x is', x
x = 2
print 'Changed local x to', x
x = 50
func(x)
print 'x is still', x
(21).使用global语句
如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局 的。我们使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。
你可以使用定义在函数外的变量的值(假设在函数内没有同名的变量)。然而,我并不鼓励你这样做,并且你应该尽量避免这样做,因为这使得程序的读者会不清楚这个变量是在哪里定义的。使用global语句可以清楚地表明变量是在外面的块定义的
代码示例
def func():
global x
print 'x is', x
x = 2
print 'Changed local x to', x
x = 50
func()
print 'Value of x is', x
可以使用同一个global语句指定多个全局变量。例如global x, y, z。
(22).默认参数值
对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值
代码示例
版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-青牛,http://hainiubl.com/topics/189