Python开发Day04

   

Python内置函数:

  1. 在Python3.5中内置的函数:

  2. 查看Python内置函数详情点击这里

  3. 函数解释:

    1. abs():取数字的绝对值。
      print(abs(-123))
      执行结果:
      123
    2. all():循环取出每一个元素,如果所有元素都是真,那么all函数的返回为真,使用True和False返回。
      print(all([1,2,0,]))#假的值有0、None、""、[]、()、{},False。
      执行结果:
      False
    3. any():循环取出每一个元素,如果有一个元素是真的,那么any函数返回为真。
      print(any([1,2,0,]))
      执行结果:
      True
    4. ascii():这个函数跟repr()函数一样,返回一个可打印的对象字符串方式表示。当遇到非ASCII码时,就会输出\x,\u或\U等字符来表示。和Python2.*版本里的repr()是等效的函数.
      ascii(9000000), ascii('b\31')
      执行结果:
      9000000   'b\x19'
    5. bin():转换成二进制格式。
      print(bin(25))
      执行结果:
      0b11001            #0b代表二进制
    6. oct():转换成八进制。
      print(oct(120))
      执行结果:
      0170
    7. int():转换成十进制。
      print(int(13))
      执行结果:
      13
    8. hex():转换成十六进制。
      print(hex(128))
      执行结果:
      0x80

       这四种转换可以互转。

    9. bool():吧每一个对象转换成bool值,他只有两个值,一个是True一个是False。
      print(bool(128))
      print(bool(""))
      执行结果:
      True
      False
    10. bytes():将字符转换成字节。
      c=''
      print(bytes(c,encoding='utf-8'))
      执行结果:
      b'\xe5\x90\xb4'
    11. bytearray():将给的值转成字节列表,如果给的是字符串需要指定编码。
      a=bytearray('',encoding='utf-8')
      print(a)
      执行结果:
      bytearray(b'\xe5\x90\xb4')
    12. chr():找到ascii码对应的字符。
      a=chr(55)
      print(a)
      执行结果:
      7
    13. ord():找到对应的十进制数字。
      a=ord('a')
      print(a)
      执行结果:
      97
    14. callable():查看函数是否可执行,返回的是True和False:
      def test():
          return 'hello'
      print(callable(test))
      执行结果:
      True
    15. exec():用于执行py字符串代码的,可以使用for循环,没有返回值。
      exec('print("hello word")')
      执行结果:
      hello word
    16. compile():编译,把一个字符串编译成一个Python可执行的代码。
      a='print("hello")'
      b=compile(a,'',"exec")
      exec(b)
      print(b)
      执行结果:
      hello
      <code object <module> at 0x00000186C15728A0, file "", line 1>
    17. dir():查看一个类的使用方法。
      print(dir(int))
      执行结果:
      ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
    18. divmod():取商/余数。
      print(divmod(9,4))
      执行结果:
      (2, 1)     #2位商,1为余
    19. dict():定义字典。
      a=dict({'wu':'qi'})
      print(a)
      执行结果:
      {'wu': 'qi'}
    20. enumerate() :在循环输出的字符前添加整数序号,可指定从几开始。
      a=[1,2,3,45,6,7,8,9]
      for k,v in enumerate(a):
          print(k,v)
      执行结果:
      0 1
      1 2
      2 3
      3 45
      4 6
      5 7
      6 8
      7 9
    21. eval():计算以字符串形式出现的加减乘除。
      print(eval("50+80*10/20-12+50"))
      执行结果:
      128.0
    22. filter():使用函数来过滤元素,把符合条件的返回。
      a = filter(lambda a: a < 10, [1, 22, 13, 12, 6, 4, 7])#列表中小于10的数字,结果给变量a他是一个对象所以需要for循环取值
      for i in a:
          print(i)
      执行结果:
      1
      6
      4
      7
    23. map():让所有的操作都统一一个。
      a = map(lambda a: a + 100, [1, 22, 13, 12, 6, 4, 7])     #让每一个元素+100
      for i in a:
          print(i)
      执行结果:
      101
      122
      113
      112
      106
      104
      107
    24. format()字符串的格式化。
      age = 22
      name = 'Wuqi'
      
      print('{0} is {1} years old. '.format(name, age)) #输出参数
      print('{0} is a girl. '.format(name))
      print('{0:.3} is a decimal. '.format(1/3)) #小数点后三位
      print('{0:_^11} is a 11 length. '.format(name)) #使用_补齐空位
      print('{first} is as {second}. '.format(first=name, second='Wendy')) #别名替换
      print('My name is {0.name}'.format(open('out.txt', 'w'))) #调用方法
      print('My name is {0:8}.'.format('Fred')) #指定宽度  
      执行结果:
      Wuqi is 22 years old. 
      Wuqi is a girl. 
      0.333 is a decimal. 
      ___Wuqi____ is a 11 length. 
      Wuqi is as Wendy. 
      My name is out.txt
      My name is Fred    
    25. frozenset():冻结集合,让集合不可变。没有add,remove方法。好处可以用作字典的key。
      li = [1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9]
      print(len(li), li)
      set = frozenset(li)  
      print(len(set), set)
      执行结果:
      li = [1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9]
      print(len(li), li)
      set = frozenset(li)  
      print(len(set), set)
    26. globals():获取当前所有的全局变量
      print(globals())
      执行结果:
      {'__file__': 'F:/oldboy-Python/py_code/test/test.py', '__cached__': None, 'name': 'wu', '__doc__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000173264679E8>, '__author__': 'WuYongQi', '__package__': None, '__builtins__': <module 'builtins' (built-in)>, 'li': [1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 9], '__name__': '__main__', '__spec__': None}
    27. locals()获取所有的局部变量。
      def test():
          a=123
          b=234
          print(locals())
      执行结果:
      {'a': 123, 'b': 234}
    28. hash():把一个值转成哈希值。做字典或其他key的一个优化
      a='fdsahfkjsavbyubalwehjkdsfweagsad'
      print(hash(a))
      执行结果:
      6269283459739148757
    29. isinstance():判断一个变量的值是不是这个某一个类型用True和False返回。
      a='fdsahfkjsavbyubalwehjkdsfweagsad'
      print(isinstance(a,str))
      执行结果:
      True
    30. help():查看类的使用方法。 print(help(list))
    31. input():和用户交互,获取用户输入的内容。
      a=input()
      print(a)
      执行结果:
      123123
      123123
    32. id():查看内存地址。
      a='hello'
      print(id(a))
      执行结果:
      2216721087152
    33. iter():将元素转成对象,可以使用next函数来看下一个
      a=iter([1,2,3,4,5])
      print(next(a))
      print(next(a))
      print(next(a))
      执行结果:
      1
      2
      3
    34. max():取最大值。
      max([1,2,3,4,5,6])
      执行结果:
      6
    35. min():取最小值。
      min([1,2,3,4,5,6])
      执行结果:
      1
    36. sum():求和。
      sum([1,2,3,4,5,6,12])
      执行结果:
      33
    37. pow():求指数。
      print(pow(2,9))     #2的9次方
      执行结果:
      512
    38. reverse():反转列表中的元素。
      a=['hello','word','wu']
      a.reverse()
      print(a)
      执行结果:
      a=['hello','word','wu']
      a.reverse()
      print(a)
    39. round():四舍五入。
      a=round(3.3)
      print(a)
      执行结果:
      3
    40. slice():相当于切片。

      a=[1,2,3,4,5,6,7,8,9]
      b=slice(3)
      print(a[b])
      执行结果:
      [1, 2, 3]
    41. vars():查看一个类例有多少变量。

      vars()
      执行结果:
      {'__truediv__': <slot wrapper '__truediv__' of 'int' objects>, '__rand__': <slot wrapper '__rand__' of 'int' objects>, '__int__': <slot wrapper '__int__' of 'int' objects>, '__rrshift__': <slot wrapper '__rrshift__' of 'int' objects>, 'denominator': <attribute 'denominator' of 'int' objects>, '__floor__': <method '__floor__' of 'int' objects>, '__rmod__': <slot wrapper '__rmod__' of 'int' objects>, 'numerator': <attribute 'numerator' of 'int' objects>, '__eq__': <slot wrapper '__eq__' of 'int' objects>, '__ge__': <slot wrapper '__ge__' of 'int' objects>, 'from_bytes': <method 'from_bytes' of 'int' objects>, '__round__': <method '__round__' of 'int' objects>, '__abs__': <slot wrapper '__abs__' of 'int' objects>, '__ne__': <slot wrapper '__ne__' of 'int' objects>, '__rxor__': <slot wrapper '__rxor__' of 'int' objects>, '__lt__': <slot wrapper '__lt__' of 'int' objects>, '__xor__': <slot wrapper '__xor__' of 'int' objects>, '__trunc__': <method '__trunc__' of 'int' objects>, '__bool__': <slot wrapper '__bool__' of 'int' objects>, '__rsub__': <slot wrapper '__rsub__' of 'int' objects>, 'imag': <attribute 'imag' of 'int' objects>, '__gt__': <slot wrapper '__gt__' of 'int' objects>, 'to_bytes': <method 'to_bytes' of 'int' objects>, '__ror__': <slot wrapper '__ror__' of 'int' objects>, '__rpow__': <slot wrapper '__rpow__' of 'int' objects>, '__le__': <slot wrapper '__le__' of 'int' objects>, 'real': <attribute 'real' of 'int' objects>, '__invert__': <slot wrapper '__invert__' of 'int' objects>, '__mul__': <slot wrapper '__mul__' of 'int' objects>, '__float__': <slot wrapper '__float__' of 'int' objects>, '__format__': <method '__format__' of 'int' objects>, '__lshift__': <slot wrapper '__lshift__' of 'int' objects>, '__mod__': <slot wrapper '__mod__' of 'int' objects>, '__pos__': <slot wrapper '__pos__' of 'int' objects>, '__new__': <built-in method __new__ of type object at 0x0000000061FC5A60>, '__rshift__': <slot wrapper '__rshift__' of 'int' objects>, '__getnewargs__': <method '__getnewargs__' of 'int' objects>, '__index__': <slot wrapper '__index__' of 'int' objects>, '__rtruediv__': <slot wrapper '__rtruediv__' of 'int' objects>, '__rmul__': <slot wrapper '__rmul__' of 'int' objects>, '__sub__': <slot wrapper '__sub__' of 'int' objects>, '__rdivmod__': <slot wrapper '__rdivmod__' of 'int' objects>, '__neg__': <slot wrapper '__neg__' of 'int' objects>, '__ceil__': <method '__ceil__' of 'int' objects>, '__repr__': <slot wrapper '__repr__' of 'int' objects>, '__getattribute__': <slot wrapper '__getattribute__' of 'int' objects>, '__floordiv__': <slot wrapper '__floordiv__' of 'int' objects>, '__add__': <slot wrapper '__add__' of 'int' objects>, '__doc__': "int(x=0) -> integer\nint(x, base=10) -> integer\n\nConvert a number or string to an integer, or return 0 if no arguments\nare given.  If x is a number, return x.__int__().  For floating point\nnumbers, this truncates towards zero.\n\nIf x is not a number or if base is given, then x must be a string,\nbytes, or bytearray instance representing an integer literal in the\ngiven base.  The literal can be preceded by '+' or '-' and be surrounded\nby whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.\nBase 0 means to interpret the base from the string as an integer literal.\n>>> int('0b100', base=0)\n4", '__divmod__': <slot wrapper '__divmod__' of 'int' objects>, 'bit_length': <method 'bit_length' of 'int' objects>, '__sizeof__': <method '__sizeof__' of 'int' objects>, '__radd__': <slot wrapper '__radd__' of 'int' objects>, '__str__': <slot wrapper '__str__' of 'int' objects>, '__or__': <slot wrapper '__or__' of 'int' objects>, '__rlshift__': <slot wrapper '__rlshift__' of 'int' objects>, '__pow__': <slot wrapper '__pow__' of 'int' objects>, 'conjugate': <method 'conjugate' of 'int' objects>, '__and__': <slot wrapper '__and__' of 'int' objects>, '__hash__': <slot wrapper '__hash__' of 'int' objects>, '__rfloordiv__': <slot wrapper '__rfloordiv__' of 'int' objects>}
    42. zip():给多个可迭代对象,用元组的形式返回,长度要一样
      a=[1,2,3,4,5,6,7,8,9]
      b=[1,2,3,4,5,6,7,8,9]
      c=[1,2,3,4,5,6,7,8,9]
      ab=zip(a,b,c)#返回的是一个对象
      for i in ab:
          print(i)
      执行结果:
      (1, 1, 1)
      (2, 2, 2)
      (3, 3, 3)
      (4, 4, 4)
      (5, 5, 5)
      (6, 6, 6)
      (7, 7, 7)
      (8, 8, 8)
      (9, 9, 9)
    43. __import__():
      同import语句同样的功能,但__import__是一个函数,并且只接收字符串作为参数,所以它的作用就可想而知了。其实import语句就是调用这个函数进行导入工作的,import sys <==>sys = __import__('sys')

 

open函数的使用方法

  • 在操作文件时我们一般需要操作两个步骤

    1. 打开文件
    2. 操作文件
  • 打开文件:

    1. a=file('c:\\a.txt','r') #a为文件句柄,c:\\a.txt是文件路径,r是文件打开模式,之后的操作都是根据文件句柄来操作。
      • #在Python中的打开方式有两种,一个是file函数、一个是open函数,这两种方式open函数在代码内部会调用file函数来操作。在Python3.*之后没有了file函数,使用open代替。
    2. 打开文件的模式有三种:
      1. r,只读模式(两种打开方法的默认模式)
      2. w,只写模式(只写文件;在指定的路径下如果有文件就会把文件内容进行清空,如果没有会新建文件。)
      3. x,只写。他是Python3.*以后出现的。(如果文件不存在会创建一个文件,如果文件存在就会报错)
      4. a,追加模式(可读取文件内容;如果在指定目录下没有此文件就会创建,如果有就会往文件中追加内容。)
    3. "+"表示可以同时读写某个文件:
      1. r+,可读写文件(该模式的使用可以做到对文件的读取、写入、追加。)
      2. w+,读取和写入文件,先清空,在写之后可以读,在读的时候需要调一下指针位置。
      3. x+,写读,顺序是[可写可读],先清空,在写之后可以读,他和w+一样,如果文件存在会报错。
      4. a+,再打开文件的同时价格指针移动到最后。顺序是[可写可读]。
    4. "b"表示处理二进制文件(列如:FTP上传ISO镜像文件,Windows处理二进制文件时需标注,linux可忽略)
      1. rb,只读。用二级制的方法打开文件,他打开的模式就是二进制了。
      2. wb,只写。用二进制的方式向文件内写入文件。
      3. xb,创建二进制。
      4. ab,只追加二进制。
  • 文件的操作:

    1. file类的使用方法:
      1. write('内容'),向文件内写入内容
        ab = open('aaa','r+',encoding='utf-8')
        ab.write('hello')
        ab.seek(0)
        print(ab.read())
        执行结果:
        hello,文件中也有了hello
      2. tell(),查看指针位置。
        ab = open('aaa','w+',encoding='utf-8')
        ab.write('hello')#向文件写入内容
        print(ab.tell())#查看当前指针位置并输出
        执行结果:
        5
      3. read(),读取当前指针后面的文件内容
        ab = open('aaa','r+',encoding='utf-8')
        print(ab.read())读取指针后面的所有内容
        执行结果:
        hello
        
        #————————————————————————————
        ab = open('aaa','r+',encoding='utf-8')
        print(ab.read(1))#读取指针后面的一个字节
        执行结果:
        h
      4. seek(0)调整当前指针位置,本次定义将指针调整到第0个位置
        ab = open('aaa','r+',encoding='utf-8')
        print(ab.tell())#查看当前指针位置
        ab.seek(3)#将指针位置调到3
        print(ab.tell())#查看当前指针位置
        执行结果:
        0
        3
      5. fileno(),文件描述符
        ab = open('aaa','r+',encoding='utf-8')
        print(ab.fileno())#查看文件描述符
        执行结果:
        3
      6. flush(),强制刷新内存中的内容到硬盘
        ab = open('aaa','w+',encoding='utf-8')
        ab.write('123123123123123')
        input('11111111')#这样当我们脚本到input的时候会等待用户输入,上一层的向文件写入内容其内容在内存中还没有写入硬盘。
        
        
        ————————————————————————————
        ab = open('aaa','w+',encoding='utf-8')
        ab.write('123123123123123')
        ab.flush()#将内存中的内容写到文件中,这样在input的时候文件内容已经写入
        input('11111111')
      7. readline(),取一行数据
        ab = open('aaa','r+',encoding='utf-8')#aaa文件中有两行内容
        print(ab.readline())#读取一行
        print(ab.readline())#读取一行
        执行结果:
        hello
        
        word
      8. truncate(),截取指针前面的的内容
        ab = open('aaa','r+',encoding='utf-8')
        ab.seek(3)
        ab.truncate()
        执行结果:
        #将aaa文件中的前3个字节留下,其他的全部删除
      9. close(),关闭文件
        ab = open('aaa','r+',encoding='utf-8')
        ab.close()#关闭文件
        print(ab.read())#在关闭文件后在读取直接报错。
        执行结果:
        Traceback (most recent call last):
          File "F:/oldboy-Python/py_code/test/day5/123.py", line 8, in <module>
            print(ab.read())
        ValueError: I/O operation on closed file.
    • 为了避免我们打开文件后退出时或应该关闭的时候忘记关闭,可以通过管理上下文,即:
      • with open('文件名','打开方式') as f:     #f为文件句柄        
        
            ...
        避免忘记关闭文件

         此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

      • 在Python 2.7 及以后,with又支持同时对多个文件的上下文进行管理,即:
        with open('文件名','打开方式') as a1, open('文件名','打开方式') as a1:#a1和a2为文件句柄
        
            pass

 

lambda表达式:

  • 我们在做简单的运算时有三元运算同时函数也一样,简单的函数可以使用lambda表达式

    • 普通的简单函数

      def s1(a,b):
          return a+b
      print(s1(12,12))
      执行结果:
      24
      普通函数
    • lambda表达式

      s2=lambda a,b : a+b
      print(s2(12,12))
      执行结果:
      24
      lambda表达式

 

 

递归:

  • 在函数内部调用本身,就叫做递归,如果没有条件就成为了相当于while的死循环,但是Python给我们定义了如果递归太多就会直接报错。
    def func(arg1,arg2):
        if arg1 == 0:
            print arg1, arg2
        arg3 = arg1 + arg2
        print arg3
        func(arg2, arg3)
    
    
    func(0,1)
    使用递归来做斐波那契

     

 

冒泡算法:

  1. 冒泡算法就相当于是排序,可以从小到大或者从大到小

    li=[11,22,33,11,42]#定义一个列表
    for j in range(1,len(li)):#循环输出数字1到li列表的长度,不会循环的列表的第0个数字
        for i in range(len(li)-j):#循环输出数字列表总长度减上一层循环的数字,也就不会去循环出索引最后一个数字
            if li[i] > li[i+1]:#判断当前循环索引位置的数字大于索引+1的数字
                temp=li[i]#将列表中本次循环索引位置的数字赋值给变量temp
                li[i] = li[i+1]#将列表中本次循环索引位置的数字修改成索引+1位置的数字
                li[i+1] = temp #将列表中本次循环索引+1位置的数字,修改成索引的位置数字也就是我们定义的temp
    
    print(li)#输出列表li
    执行结果:
    [11, 11, 22, 33, 42]
    冒泡算法

     

 

使用内置函数写一个验证码:

    • 使用chr()内置函数写验证码
      import random#随机模块
      a=""#定义一个空的字符串
      for i in range(4):  #循环4次
          num = random.randrange(0,4)         #生成0-4的随机数
          if num == 3 :      #如果随机数是3那么就在验证码中生成一个0-9的数字
              red2 = random.randrange(0,10)  #自行百度ascii码对照表
              a = a + str(red2)#向a变量中添加当前数字对应的ascii码的字符
          elif num == 2 or num == 1:      #如果随机数等于2或者1的时候生成小写字母
              red3=random.randrange(97,123)#自行百度ascii码对照表
              a = a + chr(red3)#向a变量中添加当前数字对应的ascii码的字符
          else:           #在验证码中生成一个随机的大写字母
              red1 = random.randrange(65,91)#自行百度ascii码对照表
              a = a + chr(red1)#向a变量中添加当前数字对应的ascii码的字符
      print(a)#输出a变量
      执行结果:
      o5ko
      验证码

       

 

装饰器:

    • 装饰器格式:

      def outer(func):#定义一个函数加参数,其中的func参数为装饰这个装饰器的函数体
          def inter(*args,**kwargs):#这个函数可以接受任何参数,这样我们后期也不必要进行调整,可以直接使用,这个函数主要用于执行完装饰这个装饰器函数的返回值进行返回
              print('tail')#输出tail后执行函数
              a=func(*args,**kwargs)#执行装饰这个装饰器的函数并将其返回值定义给a变量
              return #a返回变量a
          return inter#执行完outer函数后返回inter执行的返回值
    • 使用装饰器:

      def outer(func):#定义一个函数加参数,其中的func参数为装饰这个装饰器的函数体
          def inter(*args,**kwargs):#这个函数可以接受任何参数,这样我们后期也不必要进行调整,可以直接使用,这个函数主要用于执行完装饰这个装饰器函数的返回值进行返回
              print('tail')#输出tail后执行函数
              a=func(*args,**kwargs)#执行装饰这个装饰器的函数并将其返回值定义给a变量
              return a#返回变量a
          return inter#执行完outer函数后返回inter执行的返回值
      
      @outer#使用装饰器,装饰器的名称为outer
      def test(a1,a2):
          return a1+a2
      print(test(2,10))#输出test函数返回值
      执行结果:
      tail#装饰器输出
      12#函数返回输出
      使用装饰器

       

 

 

练习:

使用open函数来写一个用户登录、注册、删除用户、修改密码的功能,练习答案在另一章中的出现!

posted @ 2016-05-14 09:47  WuYongQi。  阅读(204)  评论(0编辑  收藏  举报