zoukankan      html  css  js  c++  java
  • Python-语法模板大全(常用)

    1.怎么存数据

    插入Python数据类型.png

    变量:

    age =10

    字符串: 不可变对象

    name = "python"

    a = "pythonpythonpython"
    
    # 索引和切片
    a[0]         # index
    a[-1]
    a[0:3]       # slice
    a[0:6:2]
    a[-1:-7:-1]
    a[::-1]          # slice reverse
    

    字符串方法详见:https://www.cnblogs.com/haochen273/p/10244032.html#字符串

    列表:

    [1,2,3,"python"]

    a = [1,2,3,"python"] 
    
    len(a)
    a[0]
    [i*2 for i in a]
    a.append(50)
    a.insert(2,15)
    a.extend([5,8,10])
    a[0]="java"
    "python" in a 
    a.index("python")
    a.count(1)
    a.pop(index)
    

    元组:

    (1,2,3)(不可以更改.与list类似)

    字典:

    {"a":100, "b":"666"}

    d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    
    d['Michael']
    d['Adam'] = 67
    'Thomas' in d
    d.get('Thomas')
    d.pop('Bob')
    

    三大容器的遍历方法

    a = [1,2,3]
    for i in a:
        print(i)
    
    b = (1,2,3)
    for i in b:
        print(b)
    
    c = {"a":10, "b":20, "c":30}
    for key,value in dict.items():
        print("key = %s, value = %d"%(key,value))
    

    2.怎么用数据

    数字操作符:

    +、-、*、/、%、//、**

    判断循环:

    • if判断:
    if a>10:
      b = a + 20
      if b>20:
        pass
    elif: a>8:
      pass
    else:
      pass
    
    • while循环
    while i<5:
      # do something
      pass
      i = i + 1
    
    while true:
      pass
    
    • for循环
    for i in [1,2,3]:
        print(i) 
    
    • break和continue的使用
    # break:打断全部循环
    for i in [1,2,3,4,5]:
        print("----")
        if i==4:
            break
        print(i)  
    # continue: 打断一次循环
    for i in [1,2,3,4,5]:
        print("----")
        if i==4:
            continue
        print(i)
    

    3.函数

    # 位置参数
    def person(name, age):
      print(name,age)
    
    # 默认参数
    
    def person(name,age=20):
      print(name, age)
    
    # 关键字参数
    def person(name, age, **kw):
        print('name:', name, 'age:', age, 'other:', kw)
    
    person('hao', 20) # name: Michael age: 30 other: {}
    person('hao', 20, gener = 'M', job = 'Engineer') # name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    extra = {'city': 'Beijing', 'job': 'Engineer'}
    person('Jack', 24, **extra)
    
    # 命名关键字参数
    def person(name, age, *, city='Beijing', job):
        print(name, age, city, job)
    
    person('Jack', 24, job = '123')
    person('Jack', 24, city = 'Beijing', job = 'Engineer')
    
    # Combination
    # 可变 + 关键字参数
    def f1(a, b, c=0, *args, **kw):
        print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
    
    f1(1, 2, 3, 'a', 'b')   # a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
    f1(1, 2, 3, 'a', 'b', x=99) # a = 1 b = 2 c = 0 d = 99 kw = {'ext': None}
    
    # 默认参数 + 命名关键字参数 + 关键字参数
    def f2(a, b, c=0, *, d, **kw):
        print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
    
    f2(1, 2, d=99, ext=None) # a = 1 b = 2 c = 0 d = 99 kw = {'ext': None}
    

    4. Python核心编程

    4.1. 列表生成器

    [x * x for x in range(1, 11) if x % 2 == 0]
    

    5. 类和对象

    5.1. 定义类的模板

    class Student(object):
        def __init__(self, name, score):
            self.__name = name
            self.__score = score
    
        # print(mike)
        def __str__(self):
            msg = "name: " + self.__name + "score: " + str(self.__score)
            return msg
    
        # mike
        __repr__ = __str__
        # mike()
        __call__ = __str__
    
        @property
        def name(self):
            return self.__name
    
        @name.setter
        def name(self, value):
            if type(value) == str:
                self.__name = value
            else:
                raise ValueError('Bad name')
    
        @property
        def score(self):
            return self.__score
    
        @score.setter
        def score(self, value):
            if 0 <= value <= 100:
                self.__score = value
            else:
                raise ValueError('Bad score')
    
        def final_report(self):
            if self.__score >= 90:
                level = 'A'
            elif self.__score >= 70:
                level = 'B'
            elif self.__score >= 60:
                level = 'C'
            else:
                level = 'D'
            msg = "Your final value is: " + level
            return msg
    
    # 调用
    
    mike = Student('mike', 85)
    print("-" * 20 + "Print property" + "-" * 20)
    print(mike)
    print("name: %s" % (mike.name))
    print("-" * 30 + "Print methods" + "-" * 20)
    print(mike.final_report())
    print("-" * 30 + "Print modified infor" + "-" * 20)
    mike.name = "Obama"
    mike.score = 50
    print("-" * 30)
    print("modified name: %s" % (mike.name))
    
    
    --------------------Print property--------------------
    name: mikescore: 85
    name: mike
    ------------------------------Print methods--------------------
    Your final value is: B
    ------------------------------Print modified infor--------------------
    ------------------------------
    modified name: Obama
    

    5.2.继承

    class SixGrade(Student):
        def __init__(self, name, score, grade):
            super().__init__(name, score)
            self.__grade = grade
    
        # grade是一个只读属性
        @property
        def grade(self):
            return self.__grade
    
        def final_report(self, comments):
            # 子类中调用父类方法
            text_from_Father = super().final_report()
            print(text_from_Father)
            msg = "commants from teacher: " + comments
            print(msg)
    
    print("-" * 20 + "继承" + "-" * 20)
    fangfang = SixGrade('fang', 95, 6)
    fangfang.final_report("You are handsome")
    print(fangfang.grade)
    
    --------------------继承--------------------
    Your final value is: A
    commants from teacher: You are handsome
    6
    

    5.3 多态

    class SixGrade(Student):
        pass
    
    class FiveGrade(Student):
        pass
    
    def print_level(Student):
        msg = Student.final_report()
        print(msg)
    
    print_level(Student('from class', 90))
    print_level(SixGrade('from subclass-1', 56))
    print_level(FiveGrade('from subclass-2', 85))
    
    Your final value is: A
    Your final value is: D
    Your final value is: B
    

    6. IO文件操作和OS目录操作

    OS操作

    import os
    # 获取当前目录的绝对路径
    path = os.path.abspath('.')
    # 创建一个目录
    os.path.join('/Users/michael', 'testdir')
    os.mkdir('/Users/michael/testdir')
    # 删除一个目录
    os.rmdir('/Users/michael/testdir')
    # 拆分路径
    os.path.split('/Users/michael/testdir/file.txt')  # ('/Users/michael/testdir', 'file.txt')
    os.path.splitext('/path/to/file.txt')  # ('/path/to/file', '.txt')
    # 重命名
    os.rename('test.txt', 'test.py')
    # 删除文件
    os.remove('test.py')
    # 列出所有python文件
    [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
    

    IO文件

    方法 特性 性能
    read() 读取全部内容 一般
    readline() 每次读出一行内容 占用内存最少
    readlines() 读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素 最好(内存足)
    write() 写文件
    # 读
    
    # 下面是read()方法的使用,“r”表示read
    with open('testRead.txt', 'r', encoding='UTF-8') as f1:
        results = f1.read()    # 读取数据
        print(results)
    
    # 下面是readline()方法的使用,“r”表示read
    with open('testRead.txt', 'r', encoding='UTF-8') as f2:
        line = f2.readline()    # 读取第一行
        while line is not None and line != '':
            print(line)
            line = f2.readline()    # 读取下一行
    
    # 下面是readlines()方法的使用,“r”表示read
    with open('testRead.txt', 'r', encoding='UTF-8') as f3:
        lines = f3.readlines()    # 接收数据
        for line in lines:     # 遍历数据
            print(line)
    
    # 写
    
    with open('/User/test.txt', 'w') as f:
      f.write('hello')
    

    7. 正则表达式及re模块的使用

    主要参考资料为:

    6.1. 正则表达式语法

    7.2. re模块的使用

    内置的 re 模块来使用正则表达式,提供了很多内置函数:

    1. pattern = re.compile(pattern[, flag]):
    • 参数:
      • pattern: 字符串形式的正则
      • flag: 可选模式,表示匹配模式
    • 例子:
    import re
    
    pattern = re.compile(r'd+')
    
    1. Pattern的常用方法
    import re
    
    pattern = re.compile(r'd+')
    
    m0 = pattern.match('one12twothree34four')
    m = pattern.match('one12twothree34four', 3, 10)
    
    print("-" * 15 + "Match methods" + "-" * 15)
    print("found strings: ", m.group(0))
    print("start index of found strings: ", m.start(0))
    print("end index of found strings: ", m.end(0))
    print("Span length of found strigns: ", m.span(0))
    
    s = pattern.search('one12twothree34four')
    
    print("-" * 15 + "Search methods" + "-" * 15)
    print("found strings: ", s.group(0))
    print("start index of found strings: ", s.start(0))
    print("end index of found strings: ", s.end(0))
    print("Span length of found strigns: ", s.span(0))
    
    f = pattern.findall('one1two2three3four4', 0, 10)
    
    print("-" * 15 + "findall methods" + "-" * 15)
    print("found strings: ", f)
    
    f_i = pattern.finditer('one1two2three3four4', 0, 10)
    
    print("-" * 15 + "finditer methods" + "-" * 15)
    print("type of method: ", type(f_i))
    for m1 in f_i:  # m1 是 Match 对象
        print('matching string: {}, position: {}'.format(m1.group(), m1.span()))
    
    p = re.compile(r'[s\,;]+')
    print("-" * 15 + "Split methods" + "-" * 15)
    print("split a,b;c.d: ", p.split('a,b;; c   d'))
    
    p1 = re.compile(r'(w+) (w+)')
    s1 = 'hello 123, hello 456'
    
    
    def func(m):
        return 'hi' + ' ' + m.group(2)
    
    
    print("-" * 15 + "替换 methods" + "-" * 15)
    print(p1.sub(r'hello world', s1))  # 使用 'hello world' 替换 'hello 123' 和 'hello 456'
    print(p1.sub(r'2 1', s1))  # 引用分组
    print(p1.sub(func, s1))
    print(p1.sub(func, s1, 1))  # 最多替换一次
    

    结果是:

    ---------------Match methods---------------
    found strings:  12
    start index of found strings:  3
    end index of found strings:  5
    Span length of found strigns:  (3, 5)
    ---------------Search methods---------------
    found strings:  12
    start index of found strings:  3
    end index of found strings:  5
    Span length of found strigns:  (3, 5)
    ---------------findall methods---------------
    found strings:  ['1', '2']
    ---------------finditer methods---------------
    type of method:  <class 'callable_iterator'>
    matching string: 1, position: (3, 4)
    matching string: 2, position: (7, 8)
    ---------------Split methods---------------
    split a,b;c.d:  ['a', 'b', 'c', 'd']
    ---------------替换 methods---------------
    hello world, hello world
    123 hello, 456 hello
    hi 123, hi 456
    hi 123, hello 456
    
  • 相关阅读:
    C# this关键字的四种用法
    MVC Html.AntiForgeryToken() 防止CSRF攻击
    简单的C#网络爬虫
    string format的各类格式及用法
    选取两个有序数组中最大的K个值,降序存入另一个数组中
    程序员面试:青蛙跳台阶问题(变态跳台阶)
    贪心算法,递归算法,动态规划算法比较与总结
    storm简介[ZZ]
    逻辑回归:使用SGD(Stochastic Gradient Descent)进行大规模机器学习
    mahout分类
  • 原文地址:https://www.cnblogs.com/haochen273/p/10256418.html
Copyright © 2011-2022 走看看