• python基础语法快速浏览


    1、预览
    1 import sys #导出sys模块
    2 
    3 def test(): 
    4     a,b,c=1,2,3 #一次给多个变量赋值
    5     print(type(a),help(a),help(sys),sys.__file__) 
    6     if b>1:
    7         print("hello world!")
    8 print(u"这句不是函数test的了")

    python的代码很简洁,这里不再看到;和{},变量不需要声明类型,代码块是用缩进的方式实现,如上行5和def对齐,该行不属于函数test。

    语句和控制流:

    • if、else、elif
    • for:历遍迭代器,如for x in [1,2,3] ,注意不支持for( i=0;i<10;i++)
    • while
    • continute\break
    • def:定义函数
    • class:定义类
    • pass:表示此行为空,不执行如何操作
    • yield:在迭代器函数内使用,用于返回一个元素
    • with:在一个场景中运行语句块

    帮助:
    可以用help()查看帮助,__file__查看出处,type()获取类型,dir()列出模块中定义的标识符(函数、类、变量)

    数据类型转换:

    int(x [,base ])         将x转换为一个整数
    long(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 )                 将一个整数转换为一个八进制字符串

    字符串:
    字符串可用单引号、双引号、三引号表示,其中三引号可表示多行,转义符用\,字符串格式化用%

    str="hello world"
    str='hello world'
    str="""hello
    world""" #多行
    str=r"hello \n world" #\n本来表示换行但字符串前面加r保留原始字符,等于“hello \n world”
    "hello %5s %5f"%("zeng",1.2)  #在总长度为5,正数右对齐,负数左对齐,数字也有效 
    "hello %.3s %08.3f"%("zeng",1.2345)  #限制总长度为3,超过部分将被切断,数字总长8,不够前面补0,3位小数点

    注释:
    代码行用#注释,
    函数和类的注释

    def test():
        """在这里写函数的注释"""
        pass
    
    test.__doc__ #查看函数的注释

    2、序列

    元组:a=(1,2,3)

    a,b,c=(1,2,3)         #a=1
    a=(1,2,3)    #arr[1]=1 失败 不能修改
    a=tuple("abc")   #=("a","b","c"),可将列表、字典
    a=(1,)   #只有一个元素的元组要加逗号

    列表:a=[1,2,3]
    列表提供的操作函数比较多,可以新增、修改、删除、排序、合并等。

    字典:a={"id":1,"name":"zyy"}

    age="age"
    user={"id":1,"name":"zyy",age:12,1:2} #键值对的集合构成字典
    user=dict([("id",1),("name","zengyy")] #将键值列表转成字典
    id=user["id"];user["id"]=2 #读写

    集合:
    集合的元素是唯一的,可用set()将元组、列表、字典转成集合

    切割:
    arr[开始:结束:步长]  #输出不包含结束的索引,步长表示间隔,负数则反方向取
    arr=[1,2,3,4,5,6]
    arr[1:3]  #输出[2,3]
    arr[1:]  #输出[2,3,4,5,6]
    arr[:3]  #输出[1,2,3]
    arr[:-2]  #输出[1,2,3,4]
    arr[1:5:2] #输出[2,4] 

    3、表达式

    历遍序列的表达式

    ([x for x in [1,2,3,4,5] if x not in [1,3]]) #输出[2,4,5]
    ({x*x:x*2 for x in [1,2,3,4] if x not in [1,2]}) #输出{16: 8, 9: 6}

    lambda表达式:

    f=lambda a,b:a*b
    f(2,3) #输出6

     4、函数

    def plus(a,b=1,*c,**d): #c,d都是可变参数,d为命名可变参数
        sumc=0;sumd=0
        print(c)
        for x in c:  #列举参数列表(1,2)
            sumc+=x 
        print(d,type(d))
        for x in d.keys(): #列举命名参数列表(a,b)
            sumd+=d[x]
        return (sumc,sumd)
    
    sum=plus(1,2,1,2,3,x=1,y=2) #参数c=(1,2,3),d={"x":1,"y":2}

    5、类 

    class person():
        def __init__(self):
            pass
    
    class user(person):   #继承person 
        __id=1     #私有变量或函数已__开头非__结束
        def __init__(self):
            print(type(self))
            person.__init__(self)
    
        @property           #读取属性的函数 u=user();u.id
        def id(self):
            return self.__id 
    
        @id.setter         #给属性复制的函数 u=user();u.id=123
        def id(self,v):
            self.__id=v
    
        @id.deleter         #删除属性时调用 del u.id
        def id(self):
            del self.__id
    
        def __getattr__(self,name):  #调用类中没有定义的属性时触发 如u.name,同样的函数有__setattr__,__delattr__
            if(name=="name"):
                return "zeng"
            else:
                return ""
        #id = property(getid, setid, delid, "属性id的注释") # 这句和上边的效果一样,getid,setid,delid分别调用3个函数 
    
        @classmethod         #类方法
        def add(self): 
            print("add",type(self))
            pass
        @staticmethod        #静态方法
        def update():
            pass
    
    def save(self):
        print("this is f")
    user.save=save #类成员函数可以这样添加
    
    u=user()
    u.age=30      #age没有在前面定义,但这样是合法的
    View Code
    • 继承 ,class user(person):  user 继承person类
    • 私有成员,以__开头非__结束
    • 属性,注意上边属性的2中定义方法
    • 类方法和静态方法,类方法第一个参数是self,该参数不是实例,而是类
    • 类内置函数,参考文章http://www.cnblogs.com/simayixin/archive/2011/05/04/2036295.html
    • 类方法和属性是可以动态添加上去的

    6、模块

    模块可以是py文件或包含__init__.py的文件夹

    import common              #导入模块common,调用时为common.add(),即加上 模块名.
    import common as c         #导入common,调用时为c.add()
    from common import add,plus   #导入模块的部分类、函数等 可以直接利用该函数
    from common import *    #导入所有的类、函数等 可以直接利用该函数



    if
    __name__=="__main__": #通过__name__获取模块名 pass

    当导入文件夹模块时目录下的__init__.py将被执行

    相对路径:from ..a import b  #..表示上级目录,a表示当前目录的上级目录的a文件夹

    __all__:可以在模块中定义__all__=["b"],当通过“from a import *”方式导入时 只导入__all__定义的对象

    7、迭代器和生成器

    #迭代器
    class myiter:
        def __init__(self):
            self.a=0        
        def next(self):                     #循环调用该函数     
            self.a+=1
            if self.a>5: raise StopIteration   #触发这个异常是停止迭代
            return self.a     
        def __iter__(self):                     #说明可迭代
            return self 
    
    for x in myiter():      #调用next直到StopIteration异常
        print(x)                
    
    #生成器
    def g():                                    #该函数返回生成器,调用g()该函数并没有执行,只有历遍时才执行 
        arr=[1,2,3]
        for x in arr: 
            yield x
    
    for x in g():
        print(x)            #输出1,2,3
    View Code
  • 相关阅读:
    Heritrix源码分析(十) Heritrix中的Http Status Code(Http状态码)(转)
    Heritrix源码分析(九) Heritrix的二次抓取以及如何让Heritrix抓取你不想抓取的URL
    Heritrix源码分析(八) Heritrix8个处理器(Processor)介绍(转)
    HTML 的 iframe 元素
    CSS 选择器及其优先级
    在触屏设备中拖动 overflow 元素
    关于博客园博问标签的自我实现
    ABAP中读取EXCEL中不同的SHEET数据
    创建表索引
    Call Transaction
  • 原文地址:https://www.cnblogs.com/zengyy/p/3352135.html
Copyright © 2020-2023  润新知