python基础学习

来源:互联网 发布:淘宝店铺 花呗 编辑:程序博客网 时间:2024/05/16 10:06

1、python文件类型

1)源代码

        后缀名:.py 

        由Python语言解释,不需要编译。

2)字节代码

       后缀名:.pyc

       Python源文件经过编译后生成的文件

       编译方法:        import  py_compile

                                   pt_compile.compile("hello.py")

3)优化代码

     后缀名: .pyo

     python -O -m py_compile hello.py

三种文件类型都可以直接运行。


2、python变量

1)变量的命名

    -变量名只能是字母、数字、下划线

    -数字不能开头

    -不可以使用关键字

2)变量的赋值

    -a = 1

    -id(a):可以查看变量在内存中的地址编码

    python语言变量一个特性:

  • 变量只是对数据在内存上的引用,当对变量重新赋值的时候是地址改变。而且内存上,存在着多个变量指向同一个地址空间。
3、python运算符
    -赋值运算符
             =、+=、-=、*=、/=、%=
    -算数运算符
             +、-、*、  %
             / :实数除法
                       3/2=1
                       3.0/2=1.5
             // :整数除法
                       3.0//2=1.0
            ** :求幂运算:2**3 = 8
    -关系运算符
            <、>、<=、》=、!=、==
    -逻辑运算符
            and、or、not
    -按位运算
            |、^、&、<<、>>、~
    -注意python的优先级
4、python数据类型(type(partmenter) 可以查看数据类型 )

  • 数字
              -整型
                       -int(-2,147,483,648 ~ 2,147,483,647)
              -长整型
                        -long (int 之外,的整数类型)
                                 可以使用数据后面加上“L”就可以指定长整型a=123L;
              -浮点型
                       -float (c=3.14)
              -复数型
                       -complex (c = 3.14j)
  • 字符串
              -单引号
              -双引号
              -三重引号 
                       “”“This is a simple“”“
              -索引
                      a='abcde'
                      a[0]='a'
                      a[1:4]='bcd'  
                      a[::2]='ace'
                      a[-1]='e'(最后一位)
                      a[-4:-1]='bcd'
                      a[-2:-5:-1]='dcb'(-1在这里表示从右往左取)
  • 列表[]
              -list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个系列的项目。
                           listTemp=['ydonghao',1992,'man']
                           listTemp=('ydonghao',1992,'man')
              -列表是可变类型的数据
              -列表的组成:用[]表示列表,包含了多个以逗号分隔开的数字,或者字串
              -列表操作:
                      -取值
                              -切片和索引
                              -list[]
              -添加
                      -list.append()
              -删除
                      -del(list[])
                      -list.remove(list[])
              -修改
                      -list[]=x
              -查找
                      -var in list
  • 字典{}、元组()
              -字典是python中唯一的映射类型(哈希表)
              -字典对象是可变的,但是字典的键必须使用不可变对象,并且一个字典中可以使用不同类型的键值
              -keys()或者vaules()返回键列表或者值列表
              -items()返回包含键值对的元组
              -创建字典
                       dic={'name':'ydonghao', 'age':21, 'gender':'male'}
                       dic['name']='ydonghao'
                       注意:键值和变量之间的联系,不建议使用变量做键值
                       内建方法:fromkeys(),字典中的元素具有相同的值,默认为None
                              ddict={}.fromkeys(('x','y'), -1)(不是非常常用,一般还是使用上面的方法)
              -字典更新,删除
                       -直接使用键值访问更新;内建的update()方法可以将整个字典的内容拷贝到另一个字典中。
                                添加:dict1['tel'] = '12345678901'
                                修改:dict1['tel'] = '10987654321'
                       -del dict['a']删除字典中键值为a的元素
                                -dict1.pop('a')删除并且返回键值为“a”的元素
                                -dict1.clear()删除字典所有元素
                                -del dict1删除整个字典
              -字典相关的内建函数
                      -type(), str(), cmp()(cmp很少用于比较字典,比较的依次是字典的大小、键、值) 
                      -工厂函数dict():
                               -例如:dict(zip('x','y'),(1,2))或者dict(x=1, y=2)
                                           {'y':2,'x':1}
                      -一些常用内建函数
         
5、python流程控制
         -   if-else, python使用缩进作为其语句分组的方法,建议使用4个空格代替缩进。
#!/usr/bin/pythonif 1 < 2:    print "OK"print "another ok"

                     -逻辑值Ture:表示非空的量(比如:string,tuple,list,set,dictonary等),所有非0的数
                     -逻辑值False:表示0,None(空值),空的量
#!/usr/bin/pythonx = int(raw_input("please input:"))if x >= 90:    print "A"elif x >= 80:    print "B"elif x >= 70:    print "C"else:    print "D"

6、循环
-for循环
        for iterating_var in sequence
                   statements(s)
         注意:如果一个序列包含一个表达式列表,它是第一个执行。然后,该序列中的第一项赋值iterating_var。接下来,执行                                 语句块。列表中的每个项目分配到itering_var,代码块被执行,直到整个序列被耗尽。
          格式遵守代码块缩进原则。
#!/usr/bin/pythonfor x in "abcd":    print x + "  hello world"

#!/usr/bin/pythonfor x in ['1','2','3','4','5']:    print x + "  hello world"

#!/usr/bin/pythonfor x in range(2,99,1):    print x , "  hello world"

          range(i,j,[,步进值])
        -如果所创建的对象为整数,可以使用range,
        -i为初始数值
        -j为终止数值,但不包含在范围内,步进值为可选参数,不选的话默认为1
        -i不选的话默认为0

从1加到100
#!/usr/bin/pythonnum = 0for x in range(1,101):    num += xprint num

遍历
实例一
#!/usr/bin/pythonfor x in "hello":    print x

实例二
#!/usr/bin/pythons="hello"for x in range(len(s)):    print s[x]

实例三(迭代遍历)
#!/usr/bin/pythons = "hello"l = [1,2,3,'a','b']t = (7,8,9,'x','y')for x in l:    print xfor x in t:    print xfor x in range(len(s)):    print s[x]

实例四(字典遍历)
#!/usr/bin/pythond = {1:111,2:222,5:555,3:333}for x in d:    print x    print d[x]print d.items()for k,v in d.items():    print k    print v

实例五(循环控制)
#!/usr/bin/pythonimporttimefor x in range(5):    print x    time.sleep(1)else:    print "ending"
for循环的正常循环完应该是输出‘ending’,
         异常退出时(如执行循环过程中按了Ctrl+C ,退出程序)不会执行到“else:”
         
实例6
#!/usr/bin/pythonfor x in range(1,11):    print x    ifx == 3:pass    ifx == 2:print"hello ydonghao"continue    ifx == 5:exit()    ifx == 6:break    print "#"*50else:    print "ending"
正常可以使用break退出for循环。continue是退出当次循环。pass起到占位的作用,称为代码桩,什么都没有做。

-while循环
        while循环,直到表达式变为假。表达的是一个逻辑表达式,必须返回一个True或False值
        while  expression:
                 statements(s)
       注:遵循代码块缩进原则

实例7(按Enter,或者输入q,退出程序
#!/usr/bin/pythonx = ""while x != 'q':    print "ydonghao"    x = raw_input("please input something,q for quit: ")    if not x :  breakelse:    print "ending......"
        正常退出执行else,否则不执行。


7、函数
          -定义函数的语法
                   def    函数名(参数列表) : #可以没有参数
                           函数体
          -形参和实参和C 语言的行参,实参意义相差不大
                   -f(name="ydonghao",'age'=30)指定参数传值
          -def   machine(x="默认参数值",y="默认参数值")
                      print   x,y
          -machine(10)    --------------->  10,默认参数值
          -machine()        ---------------->   默认参数值,默认参数值
          -machine(y='ydonghao')---->  默认参数值,ydonghao
          注意:默认参数要求从右边开始赋值。
         -python的局部变量,全局变量和C 语言相差不大,
                      global可以将局部变量声明为全局变量。
实例8(全局变量和局部变量)
#!/usr/bin/pythonx = "I am global var"def fun():    global y    y = 200    global x    x = 100print xfun()print x

        -函数返回值
                 -函数被调用后会返回一个指定的值,return执行后,函数终止
                 -函数调用后默认返回None
                 -返回值可以是任意类型,
        -函数多类型传值
                 -向函数传元组和字典
实例9(传递元组,加上"*",声明该参数是一个元组,传递一个字典时加上"**"声明该参数是一个字典)
#!/usr/bin/pythont = ('name', 'ydonghao')d = {'y':'ydonghao','x':'name'}def fun(x, y):    print "%s : %s" % (x, y)fun(**d)fun(*t)
       -传值冗余          
                 -处理多余实参(将可能有,可能没有的参数声明成一个元组或者字典,后面不管有多少个参数都会被元组或者字典接收)
#!/usr/bin/pythondef f(x, *args, **kwargs):    print x    print args    print kwargsf(1,2,3,4,5,6,y=20,z=30)

8、lambda表达式
         -匿名函数
                  -lambda函数是一种快速定义单行的最小函数,是从Lisp语言中借用来的,可以用在任何需要函数的地方。
实例10(lambda函数和正常函数对比)
#!/usr/bin/pythondef f(x, y):    return x*yprint f(2,3)g = lambda x,y:x*yprint g(2,3)
         -使用lambda的好处
                   -使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
                   -对于一些抽象的,不会别的地方再复用的函数,有时候给函数起一个名字也是难题,使用lambda不需要考虑命名的问题
                   -使用lambda在某些时候让代码更加容易理解。

         -lambda语法:
                   冒号前面的是参数,可以有多个,用逗号隔开,冒号右边是返回值。
                   lambda语句构造的其实是一个函数对象。

9、switch实现
        python没有提供switch。使用数据字典调用函数
                   {1:case1,2:case2}.get(x, lambda *args, **key:)()
实例11
#!/usr/bin/python#coding:utf-8from __future__ import divisiondef add(x,y):    return x + ydef minus(x,y):    return x - ydef mul(x,y):    return x * ydef divide(x,y):    return x / yoperator = {"+":add, "-":minus, "*":mul, "/":divide}print operator["+"](3,2)def f(x, o ,y):    print operator.get(o)(x,y,*args,**kwargs)f(5,"*",6)