@author 鲁伟林
刚开始学习python,以前是一个java/c++党。给出一份学习python时自己的笔记,方便自己回顾,也希望能给大家参考下。
学习python的网址是:http://www.runoob.com/python/python-object.html
gitHub地址: https://github.com/thinkingfioa/Notes/tree/master/python
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
Python语法的后缀名是以.py结尾,文件开头是:
#!/usr/bin/python 或 #!/usr/bin/env python
如果支持中文,请改成:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print "hello world";
if True:
print("Answer:");
print("true");
else:
print("Answer:");
# 没有严格缩进,在执行时会报错
print("false");
//换行
print("hello");
//不换行
print("hello"),
print("world");
if expression:
suite
elif expression:
suite
else:
suite
变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
print(count),
print(miles),
print(name);
a = b = c = 1;
a, b, c = 1,2, "thinking";
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = "Hello World!";
print(str); #输出: Hello World!
print(str[0]); # 输出: H
print(str[2:5]); # 输出: llo
print(str[2:]); # 输出: llo World!
print(str * 2); # 输出2遍: Hello World!Hello World!
print(str + " TEST"); # 输出: Hello World! TEST
#!/usr/bin/python
# -*- coding: UTF-8 -*-
list = [ "runoob", 786 , 2.23, "john", 70.2 ];
tinylist = [123, "john"];
print(list); #输出: ['runoob', 786, 2.23, 'john', 70.2]
print(list[0]); #输出: runoob
print(list[1:3]); #输出: [786, 2.23]
print(list[2:]); #输出: [2.23, 'john', 70.2]
print(tinylist *2 ); #输出: [123, 'john', 123, 'john']
print(list + tinylist); #输出: ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
tuply = ("runoob", 786 , 2.23, "john", 70.2 );
tinytuply = (123, "john");
print(tuply); #输出: ['runoob', 786, 2.23, 'john', 70.2]
print(tuply[0]); #输出: runoob
print(tuply[1:3]); #输出: [786, 2.23]
print(tuply[2:]); #输出: [2.23, 'john', 70.2]
print(tinytuply *2 ); #输出: [123, 'john', 123, 'john']
print(tuply + tinytuply); #输出: ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
dict = {};
dict["one"] = "This is one";
dict[2] = "This is two";
tinydict = {"name": "john", "code":6734, "dept":"sales"};
print(dict["one"]); # 输出: This is one
print(dict[2]); # 输出: This is two
print(tinydict); # 输出: {'dept': 'sales', 'code': 6734, 'name': 'john'}
print(tinydict.keys()); # 输出: ['dept', 'code', 'name']
print(tinydict.values()); # 输出: ['sales', 6734, 'john']
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
long(x [,base] ) | 将x转换为一个长整数 |
float(x) | 将x转换到一个浮点数 |
complex(real [,imag]) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
unichr(x) | 将一个整数转换为Unicode字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
运算符 | 描述 | 举例 |
---|---|---|
** | 幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
运算符 | 描述 | 举例 |
---|---|---|
and | x and y | 布尔"与", 类似于: && |
or | x or y | 布尔"或", 类似于:或 |
not | not x | 布尔"非", 类似于: ! |
运算符 | 描述 |
---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False |
a = 7;
b = 2;
list = [1,2,3,4,5];
if(a in list):
print("a is in list");
else:
print(" a is not list"); # 输出
if(b in list):
print("b is in list"); # 输出
else:
print("b is not list");
运算符 | 描述 |
---|---|
is | is 是判断两个标识符是不是引用自一个对象 |
is not | is not 是判断两个标识符是不是引用自不同对象 |
//运用脚本运行,是同一个对象。
a = 7;
b = 7;
if(a is b):
print("a is b"); # 输出
else:
print(" a is not list");
b = 10;
if(a is b):
print("a is b");
else:
print("a is not b"); # 输出
if 判断语句1:
执行语句....;
elif 判断语句2:
执行语句....;
else:
执行语句3;
num = 9
if(num >= 0 and num <= 10): # 判断值是否在0~10之间
print 'hello'; # 输出结果: hello
numbers = [12, 37, 5, 42, 8, 3];
even = [];
odd = [];
while(len(numbers) > 0):
number = numbers.pop();
if(number%2==0):
even.append(number);
else:
odd.append(number);
count = 0
while(count < 5):
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
for(letter in 'Python'): # 第一个实例
print '当前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for(fruit in fruits): # 第二个实例
print '当前水果 :', fruit
print "Good bye!"
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
long(x [,base] ) | 将x转换为一个长整数 |
float(x) | 将x转换到一个浮点数 |
complex(real [,imag]) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
unichr(x) | 将一个整数转换为Unicode字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
函数 | 描述 |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根 |
函数 | 描述 |
---|---|
choice(seq) | 从序列的元素中随机挑选一个元素,如random.choice(range(10)),从0到9中随机挑选一个整数 |
randrange | ([start,] stop [,step])从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1 |
random() | 随机生成下一个实数,它在[0,1)范围内 |
seed([x]) | 改变随机数生成器的种子seed |
shuffle(list) | 将序列的所有元素随机排序 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内 |
常量 | 描述 |
---|---|
pi | 数学常量pi(圆周率) |
e | 数学常量e,e是自然数 |
符号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
list = ["thinking", "fioa", 123, 456];
print list # 输出: ['thinking', 'fioa', 123, 456]
del list[2]
print list # 输出: ['thinking', 'fioa', 456]
表达式 | 结果 | 描述 |
---|---|---|
L[2] | 'fioa' | 读取列表中第三个元素 |
L[-2] | 123 | 读取列表中倒数第二个元素 |
L[1:] | ['fioa', 123, 456] | 从第二个元素开始截取列表 |
list2 = ["thinking", "fioa", 123, 456]
print list2[2] # 输出 123
print list2[-3] # 输出 fioa
print list2[1:] # 输出 ['fioa', 123, 456]
dict = {"Name": "thinking", "age":18, "lover":"ppp"}
print dict #输出 {'age': 18, 'Name': 'thinking', 'lover': 'ppp'}
del dict["lover"]
print dict #输出 {'age': 18, 'Name': 'thinking'}
dict.clear()
del dict
ticks = time.time()
print ticks # 输出:1508668369.94
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 输出: 2017-10-22 18:36:56
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) # 输出: Sun Oct 22 18:36:56
# 将格式化转换成时间戳
a = "Sun Oct 22 18:36:56 2017"
print time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")) # 输出: 1508668616.0
cal = calendar.month(2017, 2)
'''输出:
February 2017
Mo Tu We Th Fr Sa Su
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
'''
print cal
def functionname(parameters):
"""函数说明"""
function_suite
return [expression]
def printme(str):
"""打印任何传入的字符串"""
print str
return
printme("thinking") # 输出:thinking
printme("fioa") # 输出:fioa
在Python中,string,tuples和numbers是不可更改的对象,而list, dict等则是可修改的对象.
python函数的参数传递:
def changeint(a):
a = 10
b = 2
changeint(b)
print b # 结果: 2
def changelist(mylist):
mylist.append("thinking")
return
mylist = [1, 2, 3]
print mylist # 输出:[1, 2, 3]
changelist(mylist)
print mylist # 输出:[1, 2, 3, 'thinking']
总结:
调用函数时可使用的参数类型
想调用函数,必须传入对应的参数
def printmustargument(str):
"""必备参数"""
print str
return
str = "ppp"
printmustargument(str) # 输出:ppp
使用关键字参数,允许调用函数时参数的顺序可以不一致。
def printkeywordargument(name, age):
"""关键字函数"""
print "Name: ", name
print "Age:", age
printkeywordargument(name="ppp", age=35) # 输出: Name: ppp Age: 35
调用函数时,缺省参数没有传入,使用默认值
def printdefaultargument(name, age=20):
"""缺省参数"""
print "Name: ", name
print "Age:", age
printdefaultargument(name="thinking_fioa") # 输出: Name: thinking_fioa Age: 20
函数接受任意长度的参数
def printmoreargument(arg1, *vartuple):
"""不定长参数"""
print arg1
for var in vartuple:
print var
return
printmoreargument(10) # 输出:10
printmoreargument(10, 20, 30) # 输出: (10, 20, 30)
python使用lambda来创建匿名函数
sum = lambda arg1, arg2: arg1 + arg2
print "sum is: ", sum(10, 20) # 输出: 30
def sumtwonumber(arg1, arg2):
return arg1+arg2
print sumtwonumber(100, 200) # 输出: 300
total = 1
def sumtwonumber(arg1, arg2):
total = arg1 + arg2
print "函数内total: ", total # 输出: 函数内total: 300
return total
sumtwonumber(100, 200) # 输出: 300
print "全局变量: ", total # 输出: 全局变量: 1
support.py是:
def print_func(var):
print "Hello ", var
return
test.py是
import support
support.print_func("thinking") # 输出:Hello thinking
当导入一个模块,Python解析器搜索模块的顺序:
当函数中想修改全局变量,需要使用关键字:global
Money = 2000
def add_money():
global Money
Money = Money + 200
print Money # 输出:2000
add_money()
print Money # 输出:2200
dir()函数是一个排好序的字符串列表,内容是一个模块里定义过的名字
import support
print dir(support) # 输出:['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'print_func']
当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。如果想从新执行模块里顶层部分的代码,需要使用reload()函数。
定义包:package_runoob和文件:runoob1.py
def runoob1():
print "I am runoob1"
在测试文件: test.py
import package_runoob.runoob1
package_runoob.runoob1.runoob1() # 输出: I am runoob1
Python提供了两个内置函数从标准输入读取一行文本,默认的标准输入是键盘
raw_input(提示文字)函数从标准输入读取一行,并返回一个字符串(去掉结尾的换行符)
str = raw_input("请输入: ") # 输入: thinking
print "输入内容是:", str # 输出: thinking
input函数和raw_input函数基本类似。但input可以接收一个Python表达式输入,并将运算结果返回
str2 = input("请输入: ") # 输入: [x*5 for x in range(2,10,2)]
print "输入内容是:", str2 # 输出: [10, 20, 30, 40]
注: range函数用法解释: range(start, end, step)
Python函数内置一个open()函数
File对象的close()方法:刷新缓冲区里任何还没写的信息,并关闭该文件
fileObject = open("test_io_file.txt", "rb+")
fileLine = fileObject.read()
print "context is : ", fileLine
fileObject.close()
Python提供os模块,帮助执行文件处理操作的方法,比如:重命名和删除文件
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理
try:
<语句> #运行别的代码
except <名字>:
<语句> #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句> #如果引发了'name'异常,获得附加的数据
else:
<语句> #如果没有异常发生
说明:
try:
正常的操作...
except:
发生异常,执行这块代码...
else:
如果没有异常执行这块代码
try:
正常的操作...
except(Exception1[, Exception2[,...ExceptionN]]]):
发生以上多个异常中的一个,执行这块代码...
else:
如果没有异常执行这块代码
try:
正常的操作...
except(Exception1):
发生异常,执行这块代码...
finally:
无论如何都会执行这段代码
def temp_convert(var):
try:
return int(var)
except ValueError, Argument:
print "reason: ", Argument
temp_convert("abc") # 输出:reason: invalid literal for int() with base 10: 'abc'
def throw_excep(var):
print "function start..."
raise Exception("you win", var)
try:
throw_excep("abcd")
except Exception:
print "catch exception"
else:
print "no problem." # 输出: no problem
class Networkerror(Exception):
def __init__(self, arg):
self.args = arg
try:
raise Networkerror("Bad hostname")
except Networkerror, argument:
print argument.args # 输出: ('B', 'a', 'd', ' ', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e')