美文网首页
Python语言基础

Python语言基础

作者: plightfieldDo | 来源:发表于2018-01-24 18:05 被阅读0次

    声明文件字符集

    # -*- coding: cp-1252 -*-

    数的表示方法

    100 # 十进制

    0xff00 # 16进制

    1.23 # 浮点数

    1.23e10 # 浮点数科学计数法

    数学计算

    加减乘除取余与其他语言相同

    17//3 #不要余数的除法

    5**2 #幂运算

    2 & 3 #二进制按位与

    2 | 3 #二进制按位或

    2 ^ 3 #二进制按位异或

    2 ~ 3 #二进制按位取反

    1 << 10 #二进制左移——1024

    1024 >> 2 #二进制右移——256

    逻辑运算采用and or not表示

    成员运算in not in

    身份运算(判断引用)is is not

    运算优先级:
    ** ~ +@ -@ * / % // + - >> << & ^ | <= < > >= == != = %= /= //= -= += *= **= is is not in not in not or and

    数学函数(import math

    abs(x) #绝对值
    ceil(x) #向上取整
    floor(x) #向下取整
    cmp(x, y) #比较,返回-1,0,1
    exp(x) #e的n次幂
    fabs(x) #数值绝对值
    log(x) #对数
    log10(x) #含基数对数
    max(x1, x2,...) #最大值
    min(x1, x2,...) #最小值
    modf(x) 分别返回整数部分和小数部分
    pow(x, y) 幂运算
    round(x [,n]) 四舍五入
    sqrt(x) 平方根
    三角函数:acos(x) asin(x) atan(x) atan2(y, x) cos(x) hypot(x, y) # 欧几里得范数 sin(x) tan(x) degrees(x) #弧度转角度 radians(x) #角度转弧度

    常量:pi e

    随机函数:
    choice(seq) #随机选取
    randrange ([start,] stop [,step]) #指定范围随机数
    random() #0-1随机数
    seed([x]) #自定义生成器
    shuffle(lst) #序列随机排列
    uniform(x, y) #随机x-y实数

    条件&循环

    python的else if写作elif

    python不支持switch

    while x>0:

    for x in range(10):

    break中断整个循环

    continue跳过当前循环

    pass仅仅用于占位

    字符串

    单双引号可互相嵌套

    *可以重复输出字符串串

    r无转移字符串

    ord(str) chr(num) 字符整数相互转化

    b'adad' bytes类型数据

    decode('utf-8',errors='ignore') 解码相应字符串

    可以通过数组方法索引,可以切片,可以使用成员运算符

    格式化字符串: %d #十进制 %f #浮点数 %s #字符串 %x #十六进制 %o #八进制

    '%d%s'%(10,'test') #%格式化

    '{0:d}{1:s}'.format(10,'test') #format格式化

    '''
    这是大段字符串
    '''
    
    test = 'just a test'
    f'{test}'
    # 模板字符串
    from string import Template
    Template('${test}').substitute(test='just a test')
    # 模板字符串声明再实例
    

    可迭代对象

    列表类似其他语言数组,表现形式相同,可以不同类型元素

    元组是小括号列表

    字典类似对象,但是键可以是所有不可变对象,包括元组,字典没有顺序

    集合是不重复的列表

    #用已有可迭代对象构建迭代器
    test_1 = iter([1,2,3])
    #自定义可迭代对象
    def __iter__(self):
        return self
    

    所有可迭代对象除了元组都是可变对象

    函数

    #匿名函数
    def test(cb):
        print(cb(2))
    
    test(lambda x:x)
    
    #装饰器——任何返回函数的高阶函数
    def test(dec_data):
        def wrapper(function):
            def dec(*args, **kw): # 原函数会被替换
                print(args, kw)
                print(dec_data)
                return function(*args, **kw)
            return dec
        return wrapper
    
    
    @test('shit')
    def test2(a, b, *args, **kw): # 非关键字参数 关键字参数——被解析为dict
        print('just a test')
    
    
    test2(1, 2, 3, 4,test = 3)
    print(test2.__name__)
    
    #偏函数——固定参数
    from functools import partial
    
    
    def test(a, b):
        if b < 5:
            print('b<5')
        if a < 5:
            print('a<5')
        
    test2 = partial(test,a=1,b=6)
    
    test2()
    

    异步相关

    # 生成器在有值的时候返回
    import time
    
    
    def test_1():
        time.sleep(1) # 一般用while
        yield print('success')
    
    test_1_runner = test_1()
    next(test_1_runner)
    
    # coroutine 协程
    import time
    import types
    import asyncio
    
    @types.coroutine
    def test_2():
        time.sleep(1)
        yield print('success')
    
    async def test_3():
        await test_2()
    
    asyncio.get_event_loop().run_until_complete(asyncio.wait([test_3()]))
    # 协程在事件循环中执行
    test_3().send(None)
    # 协程直接执行
    

    类相关

    __表示不能被外部访问(私有)

    __init__构造函数

    (self)所有成员函数的self参数表示自引用

    class Student(object):表示继承

    # 继承
    class Test_1:
        name = 'name'
    
    
    class Test_2(Test_1):
        def __init__(self):
            print(self.name)
    
    Test_2()
    
    # 组合依赖注入
    class Test_1:
        name = 'name'
    
    
    class Test_2:
        def __init__(self, com):
            print(com().name)
    
    
    Test_2(Test_1)
    
    # 限制属性
    class Test(object):
        __slots__ = ('name')
    
    test = Test()
    test.name = 1
    test.func = 2
    
    # getter setter
    class Test(object):
        @property
        def test_1(self):
            return self.__test_1
        @test_1.setter
        def test_1(self,val):
            self.__test_1 = val
    

    __str__()自定义打印显示

    __repr__()交互解释器中的显示

    __getitem__()数组方法访问

    __getattr__()对象方法访问

    __call__函数方法

    # 枚举类
    from enum import Enum
    
    Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) # 类工厂写法
    
    # 限制不重复
    from enum import Enum, unique
    
    @unique
    class Weekday(Enum):
        Sun = 0 # Sun的value被设定为0
        Mon = 1
        Tue = 2
        Wed = 3
        Thu = 4
        Fri = 5
        Sat = 6
    
    # 类工厂 传入类名,父类元组,属性字典
    Hello = type('Hello', (object,), dict(hello=fn))
    # 元类 继承type,重载__new__方法
    class Test1(type):
        def __new__(cls, name, bases, attrs): # 第一个参数是当前实例
            attrs['name'] = lambda self, value: print(value)
            return type.__new__(cls, name, bases, attrs)
    
    class Test2(metaclass=Test1):
        pass
        
    

    错误

    try抛出,except处理,finally执行完毕

    凡是用print可以打印的地方,都可以用assert断言替代

    def foo(s):
        n = int(s)
        assert n != 0, 'n is zero!'
        return 10 / n
    

    logging可以输出到文件,并不会抛出错误

    pdb.set_trace()设置断点


    星空.jpg

    相关文章

      网友评论

          本文标题:Python语言基础

          本文链接:https://www.haomeiwen.com/subject/wuauaxtx.html