Chinaunix首页 | 论坛 | 博客
  • 博客访问: 152694
  • 博文数量: 53
  • 博客积分: 1776
  • 博客等级: 上尉
  • 技术积分: 545
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-05 00:17
文章分类

全部博文(53)

文章存档

2016年(1)

2013年(2)

2012年(11)

2011年(6)

2010年(9)

2009年(19)

2008年(5)

我的朋友

分类: Python/Ruby

2016-01-27 17:59:33

python的产生和发展历史
    1,who
        Guido von Rossum,荷兰人。
    2,when
        1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器。Python来自Guido所挚爱的电视剧Monty Python's Flying Circus (BBC 1960-1970年代播放的室内情景幽默剧,以当时的英国生活为素材)。他希望这个新的叫做Python的语言,能实现他的理念(一种C和shell之间,功能全面,易学易用,可拓展的语言)。1991年,第一个Python编译器(同时也是解释器)诞生。它是用C语言实现的,并能够调用C库(.so文件)。从一出生,Python已经具有了:类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统
    3,发展历史
        python1.0 --- Jan 1994, 增加了lambda,map,filter and reduce
        python2.0 --- Oct 16, 2000,加入了内存回收机制,构成了python语言框架的基础,里程碑
        python2.4 --- Nov 30, 2004,
        python2.6 --- Oct 1,2008
        python2.7 --- Jul 3,2010
        python3.0 --- Dec 3,2008
        python3.1 --- Jun 27,2009
        python3.2 --- Feb 20,2011
        python3.4 --- Mar 16,2014
        python3.5 --- Sep 13,2015
        因为2.6和3.0不兼容,为了满足生产的需要,出现了2.7版本,官方支持到2020年,是2.X版本的最后一版。
        
        4,开发工具IDE
            开发工具 --pycharm

        5,hello world
            编译器声明,保险的写法#!/usr/bin/env python3
            print ("hello world!")
        6,变量和赋值
            变量是程序运行时调用的数值,变量名是大小写敏感的。字符串不加“”,作为变量处理
              变量命名规则:1 显示;2 nums_of_alex_gf = 19 ; 3 NumsOfAlexGf = 2 (驼峰式);不能以数字,特殊字符开头,不能有空格,横杠。
            Python是动态类型语言,不需要预先声明变量类型,变量的类型和值在赋值那一刻被初始化,其变量赋值主要有四种方法:

(1).赋值操作符(=)
                           Python中的赋值并不是直接将一个值赋给一个变量,其是通过引用传递的,在赋值时,不管这个对象是新创建的还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量,其赋值语句是没有返回值的
                            例如,在python中,类似语句是非法的

>>> x=1  
>>> y=(x=x+1)  
  File "", line 1  
    y=(x=x+1)  
        ^  
SyntaxError: invalid syntax  
(2).增量赋值(等号与算术操作符组合)
增量赋值是将算式结果重新赋值给左边的变量,例如 x=x+1 写为 x+=1
其意义在于第一个对象仅被处理过一次
注意,Python不支持类似x++ ++x之类的前后置自增自减运算
 
(3). 多重赋值
如下例,创建一个值为1的整型对象,将对象的同一个引用赋值给x,y和z
>>> x=y=z=1
 >>> print (x,y,z)
1 1 1
(4).“多元”赋值
将多个变量同时赋值给多个变量,等式两边的对象都是元组
例如

>>> x,y,z=1,2,3  
>>> x  
1  
>>> y  
2  
>>> z  
3  
另外,多元赋值可以实现无需中间变量交换两个变量的值

>>> x,y=1,2  
>>> x  
1  
>>> y  
2  
>>> x,y = y, x  
>>> x  
2  
>>> y  
1  

        7,用户交互
            python2         python3
              input()   -->  eval('变量名') 取变量值
             raw_input --> input() 取输入值

>>> name = input("please input your name:")
please input your name:lisi
>>> print(name)
lisi

>>> name = "lisi"
>>> eval('name')
'lisi'

        8,条件判断与缩进
            IF ... ELSE和缩进
                elif 是else if在python里的写法,不能开头写
            缩进来体现代码的作用域,python强制缩进,官方是4个空格。IndentationError错误提示是缩进有问题
sex =input("please input your gender:")ifsex =="girl":print("I Like You!")elifsex =="man":print("You Are My Brother!")else:print("Are You Kidding Me!")

# 猜数字luck_num =6input_num =input("Please input your numbers:")ifinput_numis"6":print("Bingo!")elifinput_num <"6":print("Smaller than the luck number")else:print("Bigger than the luck number")
        9,循环控制
            while 判断式
            循环猜数字,尽量减少重复代码
# 猜数字luck_num =6input_num= -1whileluck_numis notinput_num:input_num=int(input("Please input your numbers:"))ifinput_num>6:print("Bigger than the luck number")elifinput_num<6:print("Smaller than the luck number")print("Bingo!")        10,循环控制
            while 循环次数判断
            带循环次数的猜数字
# 猜数字luck_num =6input_num = -1retry_num =0whileretry_num <3: input_num =int(input("Please input your numbers:"))ifinput_num >6:print("Bigger than the luck number")elifinput_num <6:print("Smaller than the luck number")else:print("Bingo!")breakretry_num +=1else:print("Too many retrys")
#for循环猜数字luck_num =6input_num = -1foriinrange(3): input_num =int(input("Please input your numbers:"))ifinput_num >6:print("Bigger than the luck number")elifinput_num <6:print("Smaller than the luck number")else:print("Bingo!")breakelse:print("Too many retrys")
        11,常见数据类型及字符串初始化

目录
1、字符串
2、布尔类型
3、整数
4、浮点数
5、数字
6、列表
7、元组
8、字典
9、日期

1、字符串
1.1、如何在Python中使用字符串
a、使用单引号(')
用单引号括起来表示字符串,例如:
str='this is string';
print str;

b、使用双引号(")
双引号中的字符串与单引号中的字符串用法完全相同,例如:
str="this is string";
print str;

c、使用三引号(''')
利用三引号,表示多行的字符串,可以在三引号中自由的使用单引号和双引号,例如:
str='''this is string
this is pythod string
this is string'''
print str;

2、布尔类型

1=true

0=false
bool=False;
print bool;
bool=True;
print bool;

3、整数
int=20;
print int;

4、浮点数
float=2.3;
print float;

5、数字
包括整数、浮点数。
5.1、删除数字对象引用,例如:
a=1;
b=2;
c=3;
del a;
del b, c;
#print a; #删除a变量后,再调用a变量会报错

5.2、数字类型转换

int(x [,base]) 将x转换为一个整数float(x ) 将x转换到一个浮点数 complex(real [,imag]) 创建一个复数 str(x) 将对象x转换为字符串 repr(x) 将对象x转换为表达式字符串 eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象 tuple(s) 将序列s转换为一个元组 list(s) 将序列s转换为一个列表 chr(x) 将一个整数转换为一个字符 unichr(x) 将一个整数转换为Unicode字符 ord(x) 将一个字符转换为它的整数值 hex(x) 将一个整数转换为一个十六进制字符串 oct(x) 将一个整数转换为一个八进制字符串


5.3、数学函数

abs(x) 返回数字的绝对值,如abs(-10) 返回10ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回5cmp(x, y) 如果 x< y 返回 -1, 如果 x == y 返回0, 如果 x > y 返回1exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0floor(x) 返回数字的下舍整数,如math.floor(4.9)返回4log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0log10(x) 返回以10为基数的x的对数,如math.log10(100)返回2.0max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。 min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。 modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 pow(x, y) x**y 运算后的值。 round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回2+0j


6、列表
6.1、初始化列表,例如:
list=['physics', 'chemistry', 1997, 2000];
nums=[1, 3, 5, 7, 8, 13, 20];

6.2、访问列表中的值,例如:

'''nums[0]: 1'''print"nums[0]:", nums[0]'''nums[2:5]: [5, 7, 8] 从下标为2的元素切割到下标为5的元素,但不包含下标为5的元素'''print"nums[2:5]:", nums[2:5]'''nums[1:]: [3, 5, 7, 8, 13, 20] 从下标为1切割到最后一个元素'''print"nums[1:]:", nums[1:]'''nums[:-3]: [1, 3, 5, 7] 从最开始的元素一直切割到倒数第3个元素,但不包含倒数第三个元素'''print"nums[:-3]:", nums[:-3]'''nums[:]: [1, 3, 5, 7, 8, 13, 20] 返回所有元素'''print"nums[:]:", nums[:]

6.3、更新列表,例如:

nums[0]="ljq"; print nums[0];

6.4、删除列表元素

del nums[0];'''nums[:]: [3, 5, 7, 8, 13, 20]'''print"nums[:]:", nums[:];

6.5、列表脚本操作符
列表对+和*的操作符与字符串相似。+号用于组合列表,*号用于重复列表,例如:

print len([1,2,3]); #3print [1,2,3] + [4,5,6]; #[1,2,3,4,5,6] print ['Hi!'] *4; #['Hi!','Hi!','Hi!','Hi!'] print3in[1,2,3] #Trueforxin[1,2,3]: print x, #123

6.6、列表截取

L=['spam','Spam','SPAM!']; print L[2]; #'SPAM!'print L[-2]; #'Spam'print L[1:]; #['Spam','SPAM!']

6.7、列表函数&方法

list.append(obj) 在列表末尾添加新的对象 list.count(obj) 统计某个元素在列表中出现的次数 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) list.index(obj) 从列表中找出某个值第一个匹配项的索引位置,索引从0开始 list.insert(index, obj) 将对象插入列表 list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 list.remove(obj) 移除列表中某个值的第一个匹配项 list.reverse() 反向列表中元素,倒转 list.sort([func]) 对原列表进行排序

7、元组(tuple)

Python的元组与列表类似,不同之处在于元组的元素不能修改;元组使用小括号(),列表使用方括号[];元组创建很简单,只需要在括号中添加元素,并使用逗号(,)隔开即可,例如:

tup1 = ('physics','chemistry',1997,2000); tup2= (1,2,3,4,5); tup3="a","b","c","d";


创建空元组,例如:tup = ();

元组中只有一个元素时,需要在元素后面添加逗号,例如:tup1 = (50,);

元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

7.1、访问元组

tup1 = ('physics','chemistry',1997,2000); #tup1[0]: physics print"tup1[0]:", tup1[0] #tup1[1:5]: ('chemistry',1997) print"tup1[1:5]:", tup1[1:3]

7.2、修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,例如:
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');

# 以下修改元组元素操作是非法的。
# tup1[0] = 100;

# 创建一个新的元组

tup3 = tup1 +tup2; print tup3; #(12,34.56,'abc','xyz')

7.3、删除元组
元组中的元素值是不允许删除的,可以使用del语句来删除整个元组,例如:

tup = ('physics','chemistry',1997,2000); print tup; del tup;

7.4、元组运算符
与字符串一样,元组之间可以使用+号和*号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

7.5、元组索引&截取

L = ('spam','Spam','SPAM!'); print L[2]; #'SPAM!'print L[-2]; #'Spam'print L[1:]; #['Spam','SPAM!']

7.6、元组内置函数

cmp(tuple1, tuple2) 比较两个元组元素。 len(tuple) 计算元组元素个数。 max(tuple) 返回元组中元素最大值。 min(tuple) 返回元组中元素最小值。 tuple(seq) 将列表转换为元组。

8、字典

8.1、字典简介
字典(dictionary)是除列表之外python中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典由键和对应的值组成。字典也被称作关联数组或哈希表。基本语法如下:

dict = {'Alice':'2341','Beth':'9102','Cecil':'3258'};

也可如此创建字典:

dict1 = {'abc':456}; dict2= {'abc':123,98.6:37};

每个键与值必须用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。键必须独一无二,但值则不必;值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。

8.2、访问字典里的值

#!/usr/bin/python dict= {'name':'Zara','age':7,'class':'First'}; print"dict['name']:", dict['name']; print"dict['age']:", dict['age'];

8.3、修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

#!/usr/bin/python dict= {'name':'Zara','age':7,'class':'First'}; dict["age"]=27; #修改已有键的值 dict["school"]="wutong"; #增加新的键/值对 print"dict['age']:", dict['age']; print"dict['school']:", dict['school'];

8.4、删除字典
del dict['name']; # 删除键是'name'的条目
dict.clear(); # 清空词典所有条目
del dict ; # 删除词典
例如:

#!/usr/bin/python dict= {'name':'Zara','age':7,'class':'First'}; del dict['name']; #dict {'age':7,'class':'First'} print"dict", dict;

注意:字典不存在,del会引发一个异常

8.5、字典内置函数&方法

cmp(dict1, dict2) 比较两个字典元素。 len(dict) 计算字典元素个数,即键的总数。 str(dict) 输出字典可打印的字符串表示。 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 radiansdict.clear() 删除字典内所有元素 radiansdict.copy() 返回一个字典的浅复制 radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 radiansdict.get(key,default=None) 返回指定键的值,如果值不在字典中返回default值 radiansdict.has_key(key) 如果键在字典dict里返回true,否则返回false radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 radiansdict.keys() 以列表返回一个字典所有的键 radiansdict.setdefault(key,default=None) 和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 radiansdict.values() 以列表返回字典中的所有值

9、日期和时间

9.1、获取当前时间,例如:
import time, datetime;

localtime = time.localtime(time.time())
#Local current time : time.struct_time(tm_year=2014, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=13, tm_sec=56, tm_wday=4, tm_yday=80, tm_isdst=0)
print "Local current time :", localtime
说明:time.struct_time(tm_year=2014, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=13, tm_sec=56, tm_wday=4, tm_yday=80, tm_isdst=0)属于struct_time元组,struct_time元组具有如下属性:

9.2、获取格式化的时间
可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime():
2.1、日期转换为字符串

首选:print time.strftime('%Y-%m-%d %H:%M:%S'); 其次:print datetime.datetime.strftime(datetime.datetime.now(),'%Y-%m-%d %H:%M:%S') 最后:print str(datetime.datetime.now())[:19]

2.2、字符串转换为日期

expire_time ="2013-05-21 09:50:35"d= datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S") print d;

9.3、获取日期差

oneday = datetime.timedelta(days=1) #今天,2014-03-21today=datetime.date.today() #昨天,2014-03-20yesterday= datetime.date.today() -oneday #明天,2014-03-22tomorrow= datetime.date.today() +oneday #获取今天零点的时间,2014-03-2100:00:00today_zero_time= datetime.datetime.strftime(today,'%Y-%m-%d %H:%M:%S') #0:00:00.001000print datetime.timedelta(milliseconds=1), #1毫秒 #0:00:01print datetime.timedelta(seconds=1), #1秒 #0:01:00print datetime.timedelta(minutes=1), #1分钟 #1:00:00print datetime.timedelta(hours=1), #1小时 #1day,0:00:00print datetime.timedelta(days=1), #1天 #7days,0:00:00print datetime.timedelta(weeks=1)

9.4、获取时间差

#1day,0:00:00oneday= datetime.timedelta(days=1) #今天,2014-03-2116:07:23.943000today_time=datetime.datetime.now() #昨天,2014-03-2016:07:23.943000yesterday_time= datetime.datetime.now() -oneday #明天,2014-03-2216:07:23.943000tomorrow_time= datetime.datetime.now() +oneday 注意时间是浮点数,带毫秒。 那么要获取当前时间,需要格式化一下: print datetime.datetime.strftime(today_time,'%Y-%m-%d %H:%M:%S') print datetime.datetime.strftime(yesterday_time,'%Y-%m-%d %H:%M:%S') print datetime.datetime.strftime(tomorrow_time,'%Y-%m-%d %H:%M:%S')

9.5、获取上个月最后一天

last_month_last_day = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)

9.6、字符串日期格式化为秒数,返回浮点类型:

expire_time ="2013-05-21 09:50:35"d= datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S") time_sec_float=time.mktime(d.timetuple()) print time_sec_float

9.7、日期格式化为秒数,返回浮点类型:

d =datetime.date.today() time_sec_float=time.mktime(d.timetuple()) print time_sec_float

9.8、秒数转字符串

time_sec =time.time() print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))


    12字符串格式化
        字符串拼接+,每个+都会占用一块内存,+拼接的类型要求一致,不推荐使用
         %s接字符串,%d接数字(使用少)#字符串初始化name =input("name:") age =input("age:") job =input("job:")print("information of %s:\nName:%s\nAge:%s\nJob:%s"% (name,name,age,job))#print("information of :[" + name + "]\nName:[" +name +"]\nAge:[" +age +"]\nJob:[" +job +"]")
        
    13列表常用操作
        去两边的空格.strip(),.strip("A")去掉两边的A,其他类推
        列表的好处是一个变量可以存多维信息,
        列表的切片list[0:5:3],list[-2:]取后面两位
          python3中列表数字和字符串不能一起排序
    14二进制位运算
参见

        15 嵌套循环     

            Python continue 语句跳出本次循环,而break跳出整个循环。

            continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。

             continue语句用在while和for循环中。

            Python break语句,就像在C语言中,打破了最小封闭for或while循环。

            break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。

            break语句用在while和for循环中。

            如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码

          16 文件基本操作
            open函数

                你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。

                    语法:

                    fileobject=open(file_name[,access_mode][,buffering])

                      各个参数的细节如下:

                       - file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
                        - access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
                        - buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
            obj.write()--写文件
            obj.close()--关闭打开的文件
            obj.read()--从打开的文件中读取一个字符串
阅读(1228) | 评论(0) | 转发(0) |
0

上一篇:源码安装svn

下一篇:没有了

给主人留下些什么吧!~~