python基础
Python2.x学习笔记
------------------------------first-------------------------------------------
1.编码的修改:file->setting->encoding
2.脚本的执行:1>./xxx.py 2>python xxx.py
3.print "True"
a.多行语句的写法
total = item_one + \
item_two + \
item_three
b.语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
4.python中单行注释采用 # 开头。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
5.数据类型
Numbers(数字):
int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数)
String(字符串)
xxx[0:2]截取0,1两个字符
List(列表)
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个的元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
Tuple(元组)
元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,
相当于只读列表。
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
print tuple[1:3]
Dictionary(字典)
列表是有序的对象结合,字典是无序的对象集合
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
6.算术运算符(整数除整数只能得到整数,要得到小数部分,要把一个数改为浮点数)
% 取模 返回除法的余数 b % a 输出结果 0
** 幂 返回x的y次幂(x**y)
// 取整除 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
== 等于 比较对象是否相等 (a == b) 返回 False。
!= 不等于 比较两个对象是否不相等 (a != b) 返回 true.
<> 不等于 比较两个对象是否不相等,这个运算符类似 !=
+= 加法赋值运算符 c += a 等效于 c = c + a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
按位运算符是把数字看作二进制来进行计算的:
& 按位与运算符:两个都为1则结果为1
| 或:一个为1,结果就为1
^ 异或:相异时为1
~ 取反:
<< 左移: a=0011 1100 ,a<<2 --------->1111 0000
>> 右移
and x and y 布尔"与" 如果 x 为 true,返回 y ,否则返回自身
or x or y 布尔"或" 如果 x 是非 0,它返回 x 的值,否则它返回 y
not not x 布尔"非" 如果 x 为 True,返回 False
in 如果在指定的序列中找到值返回 True,否则返回 False
not in 相反
is 判断两个标识符是不是引用自一个对象 x is y
is not
a=2.0,b=2.0这两个语句时会先后为2.0这个Float类型对象分配内存,然后将a与b分别指向
这两个对象。所以a与b指向的不是同一对象:
a=2.0
b=2.0
a is b # 结果为False
对一些数值较小的int对象,python采取重用对象内存的办法,如指向a=2,b=2时,
python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:
a=2
b=2
a is b # 结果为True
如但果赋值的不是2而是大的数值,情况就跟前面的一样了:
a=4444
b=4444
a is b # 结果为False
如果变量写在同一行,将会指向同一个对象
>>> a=4444; b=4444; # 写在同一行
>>> a is b
True
7.运算符的优先级
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符
8.条件语句
1> if name == 'python':
print 'welcome boss'
else:
print name
2> if 判断条件1:
执行语句1
elif 判断条件3:
执行语句2
else:
9.循环
1> while可以与else一起使用
while count < 5:
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
2> (1)基础for
for letter in 'Python':
print '当前字母 :', letter
(2) 通过序列索引迭代
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '当前水果 :', fruits[index]
(3)for中的语句和普通的没有区别,else 中的语句会在循环正常执行完
(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样
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 num, '是一个质数'
10.Python中continue 语句跳出本次循环,而break跳出整个循环
--------------------------------------second-----------------------------------------------
*****************************************11.时间处理
常用的模块:time,calendar,datetime,pytz,dateutil
格式化日期
使用time模块的strftime方法来格式化日期:time.strftime(format[, t])
import time
# 格式化成2016-04-07 10:25:09形式
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 格式化成Thu Apr 07 10:25:09 2016形式
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
# 将格式字符串转换为时间戳(1459175064.0)
a = "Sat Mar 28 22:24:24 2016"
print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
#time.time返回当前时间戳
*******************************12.函数(依靠缩进来控制函数的作用域)
实例1
def printme( str ):
"打印任何传入的字符串"
print str;
return;
# 调用函数
printme("我要调用用户自定义函数!");
变量是没有类型的
1.python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,
没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,
不会影响 a 本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,
修改后fun外部的la也会受影响
2.调用函数时可使用的正式参数类型:
必备参数
关键字参数
默认参数
不定长参数
3.return语句[表达式]退出函数,选择性地向调用方返回一个表达式。
不带参数值的return语句返回None。
*********************************13.模块
模块(Module)是一个以.py结尾的Python 文件,包含了Python对象定义和Python语句。
1.模块的导入import math,调用:模块名.函数名
2.From…import 导入模块的一部分函数
3.Python 解析器对模块位置的搜索顺序是:
1>当前目录
2>如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
PYTHONPATH 由装在一个列表里的许多目录组成。PYTHONPATH 的语法和
shell 变量 PATH 的一样。
Windows下:
set PYTHONPATH=c:\python27\lib;
UNIX下:
set PYTHONPATH=/usr/local/lib/python
3>如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
4.如果想在函数内修改全局变量,则必须先用global修饰
Money = 2000
def AddMoney():
global Money
Money = Money + 1
5.相关的几个函数
dir()返回模块中定义过的名字,字符串列表
globals()和locals()函数(返回类型是字典):
在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。
如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。
reload() 函数
6.Python中的包
包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。
__int__.py用于标识当前文件夹是一个包
**************************************14.文件IO
1.print
可以传递多个用逗号隔开的表达式
2.键盘输入
a.raw_input函数
raw_input([prompt]) 函数从标准输入读取一个行,
并返回一个字符串(去掉结尾的换行符)
str = raw_input("请输入:");
print "你输入的内容是: ", str
b.input函数
与上面类似input函数
但是input可以接收一个Python表达式作为输入,并将运算结果返回。
3.打开和关闭文件
file object = open(file_name [, access_mode][, buffering])
文件路径,打开模式,缓存设置
打开模式:r读,r+读写,w创建一个文件(会覆盖),w+创建一个文件用于读写
file对象的属性:
file.closed 返回true如果文件已被关闭,
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.softspace 如果用print输出后,必须跟一个空格符,则返回false
close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入
write()将字符串写入一个打开的文件.Python字符串还可以是二进制数据,
不会在字符串的结尾添加换行符('\n')
read()方法从一个打开的文件中读取一个字符串
4.文件定位
fo = open("foo.txt", "r+")
str = fo.read(10);
print "读取的字符串是 : ", str
# 查找当前位置
position = fo.tell();
print "当前文件位置 : ", position
# 把指针再次重新定位到文件开头
position = fo.seek(0, 0);
str = fo.read(10);
print "重新读取字符串 : ", str
# 关闭打开的文件
fo.close()
5.重命名:os.rename(old,new) 删除:os.remove(filename)
6.目录操作
使用os模块的mkdir("test1")方法在当前目录下创建新的目录
用chdir("ha")方法来改变当前的目录。将当前目录设置成ha
rmdir()删除目录
**********************************15.异常处理
1.try....except....
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
print "Error: 没有找到文件或读取文件失败"
else:
print "内容写入文件成功"
fh.close()
2.try....finally....except