zoukankan      html  css  js  c++  java
  • python 笔记

    IDE:pyCharm

    教育版 是free的。
    快捷键:
    Ctrl + Shift + F10 运行
    Ctrl + / 行注释/取消行注释

    运算符

    ** 是幂
    // 是整除
    ps. 真是True,注意大小写

    可变参数

    *args是可变参数,args接收的是一个tuple;

    **kw是关键字参数,kw接收的是一个dict。

    命名关键字参数就是限制了参数名字。

    可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3))

    关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})

    使用命名关键字参数时,要特别注意,如果没有可变参数,就必须加一个*作为特殊分隔符:fun(name,*,city)

    def hello(greeting, *args):
        if (len(args)==0):
            print('%s~' % greeting)
        else:
            print('%s,%s~~~'%(greeting,','.join(args)))
    
    hello('Hi')
    hello('Hi', 'flipped')
    hello('hi','a','b','abc')
    
    names=('aa','bb')
    hello('hello', *names)
    

    切片

    L[起点 : 终点 : 每几个输出一个]

    >>>'ABCDEFG'[::2]
    ACEG
    

    -1代表倒数第一个元素,或者往右数1。

    列表生成式

    >>>[m + n for m in 'ABC' for n in 'XYZ']
    ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
    

    生成器

    >>>g = (x * x for x in range(5))
    >>>for n in g:
    ...        print(n)
    ...
    0
    1
    4
    9
    16
    

    杨辉三角:

    # -*- coding: utf-8 -*-
    
    def triangles():
        g = [1]
        while True:
            yield g
            g.append(0)
            print('len=%d',len(g))
            g = [g[i] + g[i-1] for i in range(len(g))]
    
    n = 0
    for t in triangles():
        print(t)
        n = n + 1
        if n == 10:
            break
    [1]
    [1, 1]
    [1, 2, 1]
    [1, 3, 3, 1]
    [1, 4, 6, 4, 1]
    [1, 5, 10, 10, 5, 1]
    [1, 6, 15, 20, 15, 6, 1]
    [1, 7, 21, 35, 35, 21, 7, 1]
    [1, 8, 28, 56, 70, 56, 28, 8, 1]
    [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
    

    map/reduce/filter

    map(f,xx)就是把Iterable(可枚举的)的对象xx(一般是列表)传给f,结果返回一个Iterator(惰性序列)。
    reduce(f,xx)就是把Iterable的对象xx依次调用两个参数的函数f:f(f(f(x1,x2),x3),x4)。
    filter(f,xx)是根据f(x)为真则保留该元素,否则抛弃,来筛选序列的值。

    # -*- coding: utf-8 -*-
    
    #输出1到1000的回文数
    def is_palindrome(n):
        return str(n)==str(n)[::-1]
        # 转换为字符串,再利用切片得到倒转的字符串
    
    output = filter(is_palindrome, range(1, 1000))
    print(list(output))
    

    排序实例

    sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
    ['Zoo', 'Credit', 'bob', 'about']
    

    继承: class 派生类名(基类名):
    构造析构:

    def __init__(self, name, salary):
       ...
    def __del__(self):
      ...
    

    属性:

    hasattr(emp1, 'age')    # 如果存在 'age' 属性返回 True。
    getattr(emp1, 'age')    # 返回 'age' 属性的值
    setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8
    delattr(empl, 'age')    # 删除属性 'age'
    

    两个下划线开头,声明该属性为私有, 实例不能直接访问,可以用object._className__attrName 访问属性
    两个下划线开头,声明该方法为私有方法

    匿名函数

    关键字lambda表示匿名函数,冒号前面的x表示函数参数。

    装饰器

    @log
    def now():
        ...
    

    把@log放到now()函数的定义处,相当于执行了语句:
    now = log(now)

    偏函数

    functools.partial返回一个指定了某些参数默认值的新函数。

    模块/包

    abc.py作为一个模块。里面的函数fun就是abc.fun。
    pakage作为一个包,可以有很多模块,那么abc.py里的fun就是pakage.abc.fun。
    包可以有多级目录。
    包需要有__init__.py,它本身也是一个模块,名字就是该包的名字。

    任何模块代码的第一个字符串都被视为模块的文档注释
    __author__记录作者

    使用模块

    在hello.py中导入sys模块:import sys。sys模块有一个argv变量,用list存储了所有参数。
    argv至少有一个元素,因为第一个参数永远是该.py文件的名称'hello.py'。

    作用域

    类似_xxx和__xxx这样的函数或变量就是非公开的(private)

    pip

    pip是用来安装python第三方模块(包)的。

    正则表达式

    包:re
    尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

    re.match(pattern, string, flags=0)

    参数 描述
    pattern 匹配的正则表达式
    string 要匹配的字符串。
    flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

    search()搜索字符串,找第一个匹配

    re.search(pattern, string, flags=0)
    以及sub()替换

  • 相关阅读:
    - 错误笔记
    只是一个没有人知道的蒟蒻
    省选前模板复习
    数学知识小结#1
    写在NOIP2018后
    Atcoder&CodeForces杂题11.7
    Atcoder&CodeForces杂题11.6
    [NOIP11.1模拟赛]补番报告
    [JZOJ5281]钦点题解--瞎搞+链表
    [JZOJ5280]膜法师题解--思维+前缀和
  • 原文地址:https://www.cnblogs.com/flipped/p/6679606.html
Copyright © 2011-2022 走看看