zoukankan      html  css  js  c++  java
  • Python-老男孩-01_基础_文件IO_函数_yield_三元_常用内置函数_反射_random_md5_序列化_正则表达式_time

    Python2.7

     缩进统一;

     约定  常量 大写 , 变量  小写

    判断一个变量在内存中的地址,也能看出是不是一个值 id()函数

    >>> x = 'abc'
    >>> y = x
    >>> x = 'def'
    >>> 
    >>> id(x)
    21306656
    >>> id(y)
    6214752l

     良好的编程风格,我们在命名多个单词的变量时 可以是 task_detail  taskDetail  TaskDetail 都行,但要保持一致.

     True  False 

    type()函数,判断数据的类型

    >>> type('abc')
    <class 'str'>
    >>> type(123)
    <class 'int'>

    用户交互   input()  raw_input()

    row_input() ,无论输入什么都当字符串处理;

    input(), 自动转成输入值的类型,原生格式是什么类型就当什么类型处理,如果是变量就在程序中找这个变量

    #!/usr/bin/env  python
    #_*_ coding:utf-8 _*_
    
    
    # 下面代码在Python2.7和Python3.5中都没有运行起来
    # 其中Python3.5是不支持 raw_input
    # 其中Python2.7是不打印结果
    
    name = raw_input("Please input your name:")
    age = input("age:")  # 这里使用 input,为了看不同的效果
    job = raw_input("job:")
    
    # 采用格式化形式输出 '''除了作多行注释,还有格式化输出的功能
    # %s表示字符串  %d表示整数 %f 表示浮点数
    
    print '''
            Information of %s is:
             Name: %s
             Age : %s
             Job : %s
             
         ''' % (name,name,age,job) 

     在Python中存在 while else、 for  else的语法

    count = 0
    
    while count<10000000:
        count +=1
    else:
        print('loop',count)

    IO 文件操作

     strip()去掉字符串中的指定的前后字符 ,不指定就会去掉前后空白 

    # python2.7的语法使用 file()
    #python 3.5语法是使用 open()
    
    # r以只读方式打开文件、w以只写方式打开文件、a以追加方式打开文件
    
    f1 = file('path','r')
    f2 = file('path','w')
    f3 = file('path','a')
    
    # 读一行
    f1.readline()
    #循环按行读
    for line in f1.readlines():
        line = line.strip('
    ').split[':']   #去掉换行符,再使用冒号分割
        print line
    
    # 写文件
    f2.write("new line") #write()不会立刻写到硬盘而是在缓冲区中,可以使用flush()强制写入
    f2.flush()
    
    #追加方式写入文件,也是直接使用 write()函数写入
    
    
    #关闭文件  
    f1.close()
    f2.close()
    f3.close()

    ------------------------------------------------------------------------------
    readline()是通过next()实现的,next读到最后会报 StopIteratorError
    readlines()是读到列表中
    read()是一次性读出来,结果是字符串形式

    seek(0) 跳到文件开头
    tell() 当前的文件指针位置

    更多可以参考之前我学习的 小甲鱼笔记 http://www.cnblogs.com/yangw/p/4964729.html

    以二进制方式读 我们可以使用 file('path','rb')

    seek() tell()的使用场景 【在分析特别大的日志文件时,每隔10分钟分析一次,只需要分析新增加的内容 用这个就特别方便】

    __init__.py 至关重要,区分文件夹和包的标志

    __name__  判断是否为主文件  if __name__=='__main__'

    __file__  ,当前文件的路径

    __doc__ 当前文件的描述

    函数参数的可变性 当传递的参数用一个 * 标识时,会封装成列表进行处理,当传递的参数用两个*标识时,会封装成字典的形式进行处理

     with打开文件

    一旦一个函数中有 yield,它就是生成器 , yield相当于return,函数遇到yield就会返回yield后面的值,函数处于暂停状态;

    生成器要想继续执行,必须使用迭代.

    应用场景 写多线程时可以作为线程池

     

     三元运算  result= 'a' if x>y else 'b'

     匿名函数 lambda , 只能调用一次

    一些常用的内置函数

    help()

    dir()  以列表的形式列出当前模块中的各个对象

    vars()以字典的形式列出当前模块中的各个对象

    type()

    id()

    -----------------------------------------------

    cmp(a,b) 比较

    abs(-9)  绝对值

    bool()  返回bool值

    divmod(9,4) 返回商和余数  #(2,1)

    -----------------------------------------------

    max()   #print(max([11,45,23,76,1]))

    min()

    sum()

    pow(2,10) # 1024 

    -----------------------------------------------

    len() #print(len('中国'))   6

    all() #所有的是真才是真 all([1,4,6,0])   False

    any() #有一个为真就是真  any([0,0,0,1]) True

    -----------------------------------------------

    print(chr(65)) # A
    print(ord('a')) #97
    print(hex(2)) #0x2
    print(bin(2)) #0b10
    print(oct(2)) #02

    -----------------------------------------------


    s = "I'm {0},go shopping,{1}"
    print(s.format('yangw','today'))   # I'm yangw,go shopping,today

     enumerate()函数

     map() ,原来列表中有几个值还是返回几个值

    filter(), 只返回函数返回真的值

    reduce(),可以用来累计求和求积

    zip()

     eval()

    反射 通过字符串的形式导入模块,并以字符串的形式执行函数

    __import__(str)

     

    ***反射详解二:***

     随机数模块 random

    random 随机数生成的模块

    下面是生成验证码的例子

     Md5的生成方式

    序列化: 应用在Python与Python之间文件传输时.实现了两个Python程序之间内存数据的交换

    pickle方式的序列化,它是Python独有的,除了常规数据类型能序列化,其它的类,对象也能被序列化

    pickle 序列化到文件中

     JSON序列化: 只能序列化常规类型,其它语言也是支持json格式数据的

    json序列化的用法与pickle完全一样,方法名都是一样,不过就是 import json

     

    正则表达式 re

     

    time()模块

    时间的三种表达形式  时间戳形式 time.time() 以元组形式显示 time.gmtime() 以格式化字符串形式显示 time. strftime()

    http://www.runoob.com/python/python-date-time.html 

    时间格式之间可以转化,其中 元组形式的是桥梁

    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    2019-8-31-C#-控制台使用-UAC-权限
    2019-8-31-C#-控制台使用-UAC-权限
    2018-8-10-WPF-程序生成类库错误
    2018-8-10-WPF-程序生成类库错误
    2018-11-8-WPF-获取下载内容长度
    2018-11-8-WPF-获取下载内容长度
    2018-11-19-win10-uwp-使用-AppCenter-自动构建
    2018-11-19-win10-uwp-使用-AppCenter-自动构建
    Java实现 LeetCode 560 和为K的子数组(某著名排序大法改编)
    Java实现 LeetCode 560 和为K的子数组(某著名排序大法改编)
  • 原文地址:https://www.cnblogs.com/xin1006/p/5770398.html
Copyright © 2011-2022 走看看