python2基础

 : jank    :   : 2300    : 2016-08-24 18:01  python

一.语法部分

    1.学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。

        注:缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。

        例:

    a=1
    b=2
    if(a < b):
        print "jank";
    else:            #elif代表elseif
        print "占魁";

    2.Python语句中一般以新行作为为语句的结束符。

      但是我们可以使用斜杠( )将一行的语句分为多行显示,如下所示:

      例:

    total = a + 
      b + 
      c
        print total;

    3.Python 引号

    Python 接收单引号(' ),双引号(" ),三引号(''' """) 来表示字符串,引号的开始与结束必须的相同类型的。

    其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释"

    python 中多行注释使用三个单引号(''')或三个双引号(""")。'

    4.同一行显示多条语句加';'号

    5.Python空行

    函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

    空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

    记住:空行也是程序代码的一部分。

二.变量类型

      1.python中的变量赋值不需要声明

        如:

        a=1; b=1.23; c='jank';

        python不仅可以同时为多个变量赋一个值,还可以为多个变量同时赋不同的值

        如:

        a=b=c=1; a,b,c=1,2,3;

      2.python中的标准赋值类型

        Numbers(数字):int(整形),long(长整形),float(浮点型),complex(复数)

        String(字符串)

        List(列表)

        Tuple(元组)

        Dictionary(字典)

      3.python中的字符串中的字符选取

        例:

            str = 'Hello World!'
            print str # 输出完整字符串
            print str[0] # 输出字符串中的第一个字符
            print str[2:5] # 输出字符串中第三个至第五个之间的字符串
            print str[2:] # 输出从第三个字符开始的字符串
            print str * 2 # 输出字符串两次
            print str + "TEST" # 输出连接的字符串

      4.python列表list

        List(列表) 是 Python 中使用最频繁的数据类型。

        列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。

        列表用[ ]标识。

        例:

        list = [ 'abcd', 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 # 打印组合的列表

         删除列表元素

      list1 = ['physics', 'chemistry', 1997, 2000];
            del list1[2];

      5.python元组

        元组是另一个数据类型,类似于List(列表)。

        元组用"()"标识。内部元素用逗号隔开。但是'元组不能二次赋值,相当于只读列表'。

        例:

        tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
                tinytuple = (123, 'john')
                print tuple # 输出完整元组
                print tuple[0] # 输出元组的第一个元素
                print tuple[1:3] # 输出第二个至第三个的元素 
                print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
                print tinytuple * 2 # 输出元组两次
                print tuple + tinytuple # 打印组合的元组

      6.python元字典                                                         元字典是python中除列表外最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。

       两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

       字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

      例:

              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() # 输出所有值

        

三.运算符

   1.算数运算符:

    +加 - 两个对象相加a + b 输出结果 30

    -减 - 得到负数或是一个数减去另一个数a - b 输出结果 -10

    *乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 200

    /除 - x除以yb / a 输出结果 2

    %取模 - 返回除法的余数b % a 输出结果 0

    **幂 - 返回x的y次幂a**b 为10的20次方, 输出结果 100000000000000000000

    //取整除 - 返回商的整数部分9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

   2.比较运算符:

    ==等于 - 比较对象是否相等(a == b) 返回 False。

    !=不等于 - 比较两个对象是否不相等(a != b) 返回 true.

    <>不等于 - 比较两个对象是否不相等(a <> b) 返回 true。这个运算符类似 != 。

    >大于 - 返回x是否大于y(a > b) 返回 False。

    <小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。(a < b) 返回 true。

    >=大于等于- 返回x是否大于等于y。(a >= b) 返回 False。

    <=小于等于 -返回x是否小于等于y。(a <= b) 返回 true。

    由上可见:python算数运算符和比较运算符跟php几乎没什么区别。

   3.赋值运算符

    =简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c

    +=加法赋值运算符c += a 等效于 c = c + a

    -=减法赋值运算符c -= a 等效于 c = c - a

    *=乘法赋值运算符c *= a 等效于 c = c * a

    /=除法赋值运算符c /= a 等效于 c = c / a

    %=取模赋值运算符c %= a 等效于 c = c % a

    **=幂赋值运算符c **= a 等效于 c = c ** a

    '//='取整除赋值运算符'c //= a' 等效于 'c = c // a'

   4.逻辑运算符

    and x and y布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。(a and b) 返回 20。

    or x or y布尔"或"- 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。

    not not x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False

    5.身份运算符

    isis是判断两个标识符是不是引用自一个对象x is y, 如果 id(x) 等于 id(y) , is 返回结果 1

    is notis not是判断两个标识符是不是引用自不同对象x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1

    例:

a = 20
b = 20
if ( a is b ):
   print "a 和 b 有相同的标识"
else:
   print "a 和 b 没有相同的标识"

    输出结果为:a 和 b 有相同的标识

    5.成员运算符

    in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

    not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

    例:

a = 1
b = 6
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
   print "变量 a 在给定的列表 list 中"
elif( b not in list):
   print "变量 b 不在给定的列表 list 中"


四.循环语句

    1.循环类型

    while 循环在给定的判断条件为 true 时执行循环体,否则退出循环体。

    for 循环重复执行语句

    嵌套循环你可以在while循环体中嵌套for循环

      例:

      num = 0;
      while(num < 9):
        print '当期数值为:' , num;
        num += 1;

   while 循环 '还支持else语句,这是php所不允许的'

    nun = 0;
    while(num < 10):
        print '当前数值为:' , num;
    else
        print '当前数值已超出循环范围';

   for 循环 

   //字符串

   for string in 'python':
     print '当前字母:', string;

   //列表

   names = ['jank', 'jack', 'jackson', 'jason'];
    for name in names:
     print '当前的名字:', name

   //序列索引迭代

   fruits = ['banana', 'apple',  'mango']
   for index in range(len(fruits)):
      print '当前水果 :', fruits[index]

   //for循环也支持else

    for num in range(3,9):
      print '当前数字:', num;
    else:
      num += 1;
       print num, ' 加数字';

循环嵌套

i = 2
while(i < 100):
   j = 2
   while(j <= (i/j)):
      if not(i%j): break
      j = j + 1
   if (j > i/j) : print i, " 是素数"
   i = i + 1



2.循环控制语句

break 语句在语句块执行过程中终止循环,并且跳出整个循环

continue 语句在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。

pass 语句pass是空语句,是为了保持程序结构的完整性。

五.日期和时间

    1.获取当前时间戳:

    import time;  # 引入time模块
    ticks = time.time()
    print "当前时间戳为:", ticks

   2.获取当前时间:

    import time;
    localtime = time.localtime(time.time())
    print "本地时间为 :", localtime

    打印结果:time.struct_time(tm_year=2016, tm_mon=8, tm_mday=23, tm_hour=18, tm_min=25,     tm_sec=34, tm_wday=1, tm_yday=236, tm_isdst=0)   

   3.获取当前带格式时间:

    import time
    localtime = time.asctime(time.localtime(time.time()))
    print "当前时间为 :", localtime
    打印结果:Tue Aug 23 18:28:03 2016

   4.格式化时间:使用 time 模块的 strftime 方法来格式化日期

    # 格式化成2016-03-20 11:45:39形式

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


    # 格式化成Sat Mar 28 22:24:24 2016形式

    print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())

 

      

    # 将格式字符串转换为时间戳

    a = "Sat Mar 28 22:24:24 2016"
    print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))

    5.获取日历

    import calendar
    cal = calendar.month(2016, 1)
    print "以下输出2016年1月份的日历:"
    print cal;

六.函数

   1.定义一个函数

    你可以定义一个由自己想要功能的函数,以下是简单的规则:

    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。

    任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

    函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

    函数内容以冒号起始,并且缩进。

    return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    例:

 def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

   2.实例

    以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。

    def printme( str ):
   "打印传入的字符串到标准显示设备上"
   print str
   return

   3.函数调用

  def printme( str ):
    "打印任何传入的字符串"
    print str;
    return;

     

    # 调用函数

    printme("我要调用用户自定义函数!");

    printme("再次调用同一函数");

   4.不定长函数

    所谓不定长函数,就是为了解决使用超过当初设定的参数问题

    例:

def jank(arr, *vartuple):
    print '输出:', arr;
    for val in vartuple:
        print '数字:', val;
jank(1,2,3,4);

    打印结果:

    输出:1

        数字:2

        数字:3

    数字:4

    注:默认先输出上面的一个,后面的参数走循环


七.匿名函数

    python 使用 lambda 来创建匿名函数。

    例:

    sum = lambda arg1, arg2: arg1 + arg2;

    # 调用sum函数

    print "相加后的值为 : ", sum( 10, 20 )

    print "相加后的值为 : ", sum( 20, 20 )


八.模块

    模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。

    模块的概念有点类似php中的类。

    1.import文件名(相当于require_once,且不需要加后缀名)

    使用方法为:文件名.函数名/类名

    例:

    import jank

    jank.add_name('jank');

    2.From…import 语句Python的from语句让你从模块中导入一个指定的部分到当前命名空间中。

    例:

     # -*- coding: UTF-8 -*-
    from python import add_name
    add_name('艾占魁','男', '23','江西省,上饶市,余干县','17777793319');

   3.From…import* 语句把一个模块的所有内容全都导入到当前的命名空间也是可行的,但不该过多的使用

    例:

    from python import *

   4.定位模块

    当你导入一个模块,Python解析器对模块位置的搜索顺序是:

    当前目录

    如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。

    如果都找不到,Python会察看默认路径。

    模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决      定的默认目录

   5.PYTHONPATH变量

    作为环境变量,PYTHONPATH由装在一个列表里的许多目录组成。PYTHONPATH的语法和shell变量PATH的一样。

    在Windows系统,典型的PYTHONPATH如下:

    set PYTHONPATH=c:python20lib;

    在UNIX系统,典型的PYTHONPATH如下:

    set PYTHONPATH=/usr/local/lib/python

   6.dir()函数

    dir()函数一个排好序的字符串列表,内容是一个模块里定义过的名字。

   7.globals()和locals()函数

    根据调用地方的不同,globals()和locals()函数可被用来返回全局和局部命名空间里的名字。

    如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名。

    如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字。

    两个函数的返回类型都是字典。所以名字们能用keys()函数摘取。

   8.reload()函数

    当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。

    因此,如果你想重新执行模块里顶层部分的代码,可以用reload()函数。该函数会重新导入之前导入过的模块。

    例:

    reload(module_name)

    

九.文件I/O

    1.打印输出结果:print

    2.读取键盘输入:input(), raw_input()

    例:str = raw_input('请输入')

         print '请输出', str

    注:input()和raw_input(),基本类似,但是input()可以输入一个表达式,并输出一个结果

    3.打开和关闭文件

    open()函数

    file object = open(file_name , access_mode, buffering)

    各个参数的细节如下:

    file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。

    access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

    buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。 

    file.closed返回true如果文件已被关闭,否则返回false。

    file.mode返回被打开文件的访问模式。

    file.name返回文件的名称。

    file.softspace如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

    例:

    # 打开一个文件

    fo = open("python.py", "wb")

    print "文件名: ", fo.name

    print "是否已关闭 : ", fo.closed

    print "访问模式 : ", fo.mode

    print "末尾是否强制加空格 : ", fo.softspace  

    close()方法

    File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

    当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。 

    write()方法

    write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

    write()方法不会在字符串的结尾添加换行符(' '): 

    

    4.文件定位

    tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。

    seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

    如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

    例:

    # 打开一个文件

    fo = open("foo.txt", "r+")

    str = fo.read(10);

    print "读取的字符串是 : ", str

    # 查找当前位置

    position = fo.tell();

    print "当前文件位置 : ", position

    5.重命名

    rename()方法需要两个参数,当前的文件名和新文件名。

    语法:

    import os

    os.rename(current_file_name, new_file_name)

    6.删除文件

    remove()方法删除文件,需要提供要删除的文件名作为参数。

    语法:

    import os

    os.remove(file_name)

    7.创建目录

    例:

    import os

    os.mkdir('jank');

    8.chdir()方法

    可以用chdir()方法来改变当前的目录。

    例:

    import os

    # 将当前目录改为"/home/newdir"

    os.chdir("/home/newdir")

    9.显示当前目录

    getcwd()方法显示当前的工作目录。

    例:

    import os

    print os.getcwd();

    10.删除目录

    例:

    rmdir()方法删除目录,目录名称以参数传递。


   

备案编号:赣ICP备15011386号

联系方式:qq:1150662577    邮箱:1150662577@qq.com