打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python

目录

  • 1.怎么存数据

  • 2.怎么用数据

  • 3.函数

  • 4. 类和对象

    • 4.1. 定义类的模板

    • 4.2.继承

    • 4.3 多态

  • 5. IO文件操作和OS目录操作

    • OS操作

    • IO文件

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

    • 6.2. re模块的使用

1.怎么存数据

  • 变量: age =10

  • 字符串: name = "python"

  • 列表: [1,2,3,"python"]

  • 元组: (1,2,3)(不可以更改)

  • 字典: {"a":100, "b":"666"}

2.怎么用数据

  • 数字操作符: +、-、*、/、%、//、**

  • 判断循环:

    if a>10:
    b = a + 20
    if b>20:
      pass
    elif: a>8:
    pass
    else:
    pass
    • while循环

    • if判断:

while i<5:
  # do something
  pass
  i = i + 1

while true:
  pass

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. 类和对象

4.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

4.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

4.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

5. 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')

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

主要参考资料为:

6.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
内容来源于网络如有侵权请私信删除
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python 查找文件名包含指定字符串的方法
Python基础语言学习笔记总结
python 关闭 os.popen()
(ok)python3 将print输出的内容保存到txt文件中
46
10. 类与对象
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服