一、Hello World
对于大多数程序语言,第一个入门编程代码便是 "Hello World!",以下代码为使用 Python 输出 "Hello World!":
#!/usr/bin/python
print("Hello, World!")
Python 3.0+ 版本已经把 print 作为一个内置函数,输出 "Hello World!" 代码如下:
#!/usr/bin/python3
print("Hello, World!")
运行结果:
二、文件类型
- Python的文件类型分为3种,即源代码、字节代码和优化代码。这些都可以直接运行,不需要进行编译或连接。
- 源代码以.py为扩展名,由python来负责解释;
- 源文件经过编译后生成扩展名为.pyc的文件,即编译过的字节文件。这种文件不能使用文本编辑器修改。pyc文件是和平台无关的,可以在大部分操作系统上运行。如下语句可以用来产生pyc文件:
import py_compile
py_compile.compile(‘hello.py’)
- 经过优化的源文件会以.pyo为后缀,即优化代码。它也不能直接用文本编辑器修改,如下命令可用来生成pyo文件:
python -O -m py_complie hello.py
三、数据类型
- python的数字类型分为整型、长整型、浮点型、布尔型、复数类型。
- python没有字符类型
- python内部没有普通类型,任何类型都是对象。
- 如果需要查看变量的类型,可以使用type类,该类可以返回变量的类型或创建一个新的类型。
- python有3种表示字符串类型的方式,即单引号、双引号、三引号。单引号和双引号的作用是相同的。python程序员更喜欢用单引号,C/Java程序员则习惯使用双引号表示字符串。三引号中可以输入单引号、双引号或换行等字符。
四、注释
- 无论是行注释还是段注释,均以#加一个空格来注释。
- 如果需要在代码中使用中文注释,必须在python文件的最前面加上如下注释说明:
# -* - coding: UTF-8 -* -
- 如下注释用于指定解释器
#! /usr/bin/python
五、变量
- python中的变量不需要声明,变量的赋值操作即是变量声明和定义的过程。
- python中一次新的赋值,将创建一个新的变量。即是变量的名称相同,变量的标识并不相同。用id()函数可以获取变量标识:
x = 10
print id(x)
x = 20
print id(x)
- 如果变量没有赋值,则python认为该变量不存在
- 在函数之外定义的变量都可以称为全局变量。全局变量可以被文件内部的任何函数和外部文件访问。
- 全局变量建议在文件的开头定义。
- 也可以把全局变量放到一个专门的文件中,然后通过import来引用:
- gl.py文件中内容如下:
_a = 10
_b = 20
use_global.py中引用全局变量:
import gl
def fun():
print gl._a
print gl._b
fun()
六、常量
python中并没有提供定义常量的保留字,可以自己定义一个常量类来实现常量的功能。
class _const:
class ConstError(TypeError): pass
def __setattr__(self,name,vlaue):
if self.__dict__.has_key(name):
raise self.ConstError, “Can’t rebind const(%s)”%name
self.__dict__[name]=value
import sys
sys.modules[__name__]=_const()
七、运算符和表达式
- python不支持自增运算符和自减运算符。例如i++/i-是错误的,但i+=1是可以的。
- 1/2在python2.5之前会等于0.5,在python2.5之后会等于0。
- 不等于为!=或<>
- 等于用==表示
- 逻辑表达式中and表示逻辑与,or表示逻辑或,not表示逻辑非
八、控制语句
- 条件语句(1):
if (表达式) :
语句1
else :
语句2
- 条件语句(2):
if (表达式) :
语句1
elif (表达式) :
语句2
…
elif (表达式) :
语句n
else :
语句m
- 条件嵌套:
if (表达式1) :
if (表达式2) :
语句1
elif (表达式3) :
语句2
…
else:
语句3
elif (表达式n) :
…
else :
…
- 实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
num = 9
if num >= 0 and num <= 10: # 判断值是否在0~10之间
print 'hello'
# 输出结果: hello
num = 10
if num < 0 or num > 10: # 判断值是否在小于0或大于10
print 'hello'
else:
print 'undefine'
# 输出结果: undefine
num = 8
# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print 'hello'
else:
print 'undefine'
# 输出结果: undefine
- 循环语句(1):
while(表达式) :
…
else :
…
- 实例:
#!/usr/bin/python
count = 0
while (count < 9):
print 'The count is:', count
count = count + 1
print "Good bye!"
- 循环语句(2):
for 变量 in 集合 :
…
else :
…
- 实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print ('当前水果 : %s' % fruits[index])
print ("Good bye!")
- python不支持类似c的for(i=0;i<5;i++)这样的循环语句,但可以借助range模拟:
for x in range(0,5,2):
print x
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for num in range(10,20): # 迭代 10 到 20 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print ('%d 等于 %d * %d' % (num,i,j))
break # 跳出当前循环
else: # 循环的 else 部分
print ('%d 是一个质数' % num)
九、数组相关
- 元组(tuple):python中一种内置的数据结构。元组由不同的元素组成,每个元素可以存储不同类型的数据,如字符串、数字甚至元素。元组是写保护的,即元组创建之后不能再修改。元组往往代表一行数据,而元组中的元素代表不同的数据项。可以把元组看做不可修改的数组。创建元组示例如下:
tuple_name=(“apple”,”banana”,”grape”,”orange”)
- 列表(list):列表和元组相似,也由一组元素组成,列表可以实现添加、删除和查找操作,元素的值可以被修改。列表是传统意义上的数组。列表创建示例如下:
list=[“apple”,”banana”,”grage”,”orange”]
可以使用append方法来在尾部追加元素,使用remove来删除元素。
- 字典(dictionary):由键-值对组成的集合,字典中的值通过键来引用。键和值之间用冒号隔开,键-值对之间用逗号隔开,并且被包含在一对花括号中。创建示例如下:
dict={“a”:”apple”, “b”:”banana”, “g”:”grage”, “o”:”orange”}
- 序列:序列是具有索引和切片能力的集合。元组、列表和字符串都属于序列。
十、函数相关
- python程序由包(package)、模块(module)和函数组成。包是由一系列模块组成的集合。模块是处理某一类问题的函数和类的集合。
- 包就是一个完成特定任务的工具箱。
- 包必须含有一个__init__.py文件,它用于标识当前文件夹是一个包。
- python的程序是由一个个模块组成的。模块把一组相关的函数或代码组织到一个文件中,一个文件即是一个模块。模块由代码、函数和类组成。导入模块使用import语句。
- 包的作用是实现程序的重用。
- 函数是一段可以重复多次调用的代码,函数定义示例如下:
def cal(x,y,operator):
result={
“+”:x+y,
“-“:x-y,
“*”:x*y,
“/”:x/y
}
- 函数返回值可以用return来控制。
十一、字符串相关
- 格式化输出:
format=”%s%d” % (str1,num)
print format
- 用+进行字符串的合并:
str1=”hello”
str2=”world”
result=str1+str2
- 字符串截取可以通过索引/切片,也可以通过split函数。
- 通过切片截取字符串:
word=”world”
print word[0:3]
- python使用==和!=来进行字符串比较。如果比较的两个变量的类型不相同,那么结果必然为不同。
十二、文件处理
- 简单处理文件:
context=”hello,world”
f=file(“hello.txt”,’w’)
f.write(context);
f.close()
- 读取文件可以使用readline()函数、readlines()函数和read函数。
- 写入文件可以使用write()、writelines()函数。
十三、对象和类
- python用class保留字来定义一个类,类名的首字符要大写。当程序员需要创建的类型不能用简单类型来表示时,就需要定义类,然后利用定义的类创建对象。定义类示例:
class Fruit:
def grow(self):
print “Fruit grow”
- 当一个对象被创建后,包含了三方面的特性,即对象的句柄、属性和方法。创建对象的方法:
fruit = Fruit()
fruit.grow()
- python没有保护类型的修饰符
- 类的方法也分为公有方法和私有方法。私有函数不能被该类之外的函数调用,私有的方法也不能被外部的类或函数调用。
- python使用函数"staticmethod()"或"@ staticmethod"指令的方法把普通的函数转换为静态方法。静态方法相当于全局函数。
- python的构造函数名为__init__,析构函数名为__del__
- 继承的使用方法:
class Apple(Fruit):
def …
十四、连接mysql
用MySQLdb模块操作MySQL数据库非常方便。示例代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
try:
# 打开数据库连接
conn MySQLdb.connect(host=’localhost’,user=’root’,passwd=’123456’,db=’mysql’
except Exception,e:
print e
sys.exit()
# 使用cursor()方法获取操作游标
cursor=conn.cursor()
sql=’insert into address(name, address) values(%s, %s)’
value=((“zhangsan”,”haidian”),(“lisi”,”haidian”))
try
cursor.executemany(sql,values)
except Exception, e:
print e
sql=”select * from address”
# 使用execute方法执行SQL语句
cursor.execute(sql)
# 使用 fetchall() 方法获取所有数据
data=cursor.fetchall()
if data
for x in data:
print x[0],x[1]
# 关闭游标
cursor.close()
# 关闭数据库连接
conn.close()