当前位置:   article > 正文

《Python编程从入门到实战》学习心得_python编辑从入门到实践读后

python编辑从入门到实践读后

一、前言

之前,项目后台基本都是使用 Java 的 SpringBoot 框架完成的,
Python 自去年到现在,一直以来,都是玩着学的,没有想过要应用到项目上。
但近来,科技园这边的吴老师,建议项目中使用 PythonDjango 框架做后台,因其容易拓展、维护等,这是笨重的 Java 难以企及的。

是时候认真对待 Python ,近来其也火得不行了~
花了一天跳读了一本评价极好的书《Python编程从入门到实战》,以复习一下之前的 Python 基础,同时做了一些小 demo,同时借机对比了 C++、Java、JavaScript 等语言的基础,像读小说般轻松有趣,相当不错的一次体验,分享一下
这里写图片描述

推荐 Python基础 学习网站:
子雨大数据之Spark入门教程(Python版)
Python教程 - 廖雪峰的官方网站
编程小白的第一本 Python 入门书

二、demo

Python解释器有两种,也就是说有两种方式执行Python代码——①交互式编程、②脚本式编程
很多初始教程采用交互式编程
这里笔者借助 pycharm,采用脚本式编程。

1.数据类型

# 1、全体小写
print('Itaem'.lower())

# 2、全体大写
print('Itaem'.upper())

# 3、连接+
print('Itaem'+'团队')

# 4、转义:和当年 C++ 课设常用的‘UI’符号一样作用
print('方向:\n\t大数据\n\t云计算\n\t人工智能')

# 5、去空:lstrip 去左空、rstrip 去右空
print('----'+'  ITAEM  '.strip()+'----')

# 6、乘方:Python 特色
print(2**3)

# 7、浮点:和 C++ 一致
print(2*0.3,3/2,3.0/2)

# 8、字符+ 数字:和 Java 不一样,得先转换先
print('ITAEM有'+str(15)+'个成员')

# 9、求模:可以 %2 根据 1/0  定 奇偶
print(5%2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

2.列表

# 1、列表 CRUD
lang=['Java','JavaScript','Python']
# ① 查
# 第一个元素
print(lang[0])
# 最后一个元素,当len=0 时报错,负数即从末尾算起
print(lang[-1])
# ② 改
lang[0]='Go'
print(lang)
# ③ 增
lang.append('php')
print(lang)
# ④ 删
del lang[0]
print(lang)
# ⑤ 删末、用之
print(lang.pop())
print(lang)
# ⑥ 删值:只删除第一个指定的值
lang.remove('JavaScript')
print(lang)


# 2、列表 组织
lang=['Java','C','Python']
# ① 永久排序:
# Ⅰ、正:按字母
lang.sort()
print(lang)
# Ⅱ、反:按字母
lang.sort(reverse=True)
print(lang)
# ② 临时排序:只排序显示本次
print(sorted(lang))
# print(sorted(lang,reverse=True)) # 反
print(lang)
# ③ 倒排序
lang.reverse()
print(lang)
# ④ 长度
print(len(lang))

# 3、列表 遍历
lang=['Java','C','Python']
# ① for in:和 ES 差不多,就省了( )
for l in lang:
    print(l)
# ② 数值
for v in range(3,9):
    print(v)
# ③ 数值->列表
nums=list(range(3,9))
print(nums)
# ④ 统计数字列表
# 最小
print(min(nums))
# 最大
print(max(nums))
# 平均
print(sum(nums))
# ⑤ 列表解析
squares=[v**2 for v in range(3,9)]
print(squares)
# ⑥ 切片
print(squares[:3])
print(squares[0:3])
print(squares[0:])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68

3.元组

ssh=('Spring','Struts2','Hibernate')
print(ssh)
print(ssh[0])
# ① 元组不能修改
# ssh[0]='xxx' # 报错
# ② 遍历
for v in ssh:
    print(v)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.字典

# 1、创建:基本是 JSON 串、可嵌套
program={
    'C++':'good',
    'Java':'well',
    'Python':['perfect', 'powerful'],
    'other':{
        'php':'easy',
        'C#':'windows'
    }
}
print(program)
# 2、查
print(program['Java'])
# 3、增
program['Go']='excellent'
print(program)
# 4、改
program['C++']='common'
print(program)
# 5、删
del program['C++']
print(program)
# 6、遍历key-value
for k,v in program.items():
    print(k,v)
# 7、遍历key、排序
for k in sorted(program.keys()):
    print(k)
# 8、遍历value:value 嵌套,排不了序
for v in program.values():
    print(v)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

这里写图片描述

5.流程控制

# 1、if-elif-else 判断
SSM=['Spring','SpringMVC','MyBatis']
# 列表部位空返回 True,否则 False
if SSM:
    print('SSM不为空')
elif 'Hibernate' not in SSM:
    print('Hibernate 不属于SSM系列')
else:
    print('结束')

# 2、input 输入:默认字符串
# name=input('your name')
# print('hello',name)
# age=int(input('your age')) # 字符转数值
# if 18==age:
#     print('perfect!')

# 3、while 循环:break 退出、continue 跳过
i=0
total=0
while i<=100:
    i = i + 1
    if i==5:
        break
    if i==4:
        continue
    total=total+i
print(total)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

6.函数

import mymodule  as s

# 1、定义函数:传参
def sayHello(name,msg='excellent~'):
    print(name,msg)
    return 'that`s all'

# 2、参数顺序
sayHello('linhongcun!','well done~') # linhongcun! well done~
sayHello(msg='good~',name='larger5!') # larger5! good~

# 3、默认值:和 C++ 一致
sayHello(name='ITAEM!') # ITAEM excellent~
sayHello('ITAEM!') # ITAEM excellent~

# 4、返回值
print(sayHello('04008'))

# 5、列表参数
def update(list):
    list.append('55开')
# ① 原件
list=['Python','Java']
update(list)
print(list)
# ② 副本:禁止修改列表
update(list[:])
print(list)

#  6、不定参数
def show(*lan):
    print(lan)
show('Python')
show('Python','JavaScript')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

7.类

# 继承 object
class People():
    def __init__(self,hobby='bb'):
        self.hobby=hobby

class Student(People):

    # 构造方法
    def __init__(self,hobby='bb',name='lvcha',age=15):
        super().__init__(hobby)
        self.name=name
        self.age=age

    # 类似 Java 的 toString
    def __str__(self):
        return str(self.hobby+self.name+str(self.age))

    # 定义类 内部函数
    def showMSG(self):
        print('your name:',self.name)
        print('your age',self.age)

s1=Student('progra','linhongcun',21)
print(s1.hobby)
print(s1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

8.文件

# 1、传统打开、读取、关闭:和 C++ 基本一致
file1=open('xxx.txt','r') #注意路径
#全部输入,打成一行
content=file1.readlines()
print(len(content))
print(content)
file1.close()

# 2、with 在不需要访问文件后将自动关闭 ✔
with open('xxx.txt','r') as file2:
    print(file2.read())

# 3、新建写入
with open('zzz.txt','w') as file3:
    file3.write('I like programming\n')
    file3.write('I love you\n')

# 4、追加
with open('zzz.txt','a') as file4:
    file4.write('I can`t forget you\n')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

9.异常

# 1、try-except-else
try:
    # print(1/0)
    print(2/5)
except ZeroDivisionError:
    print('fail by zero')
else:
    print('ok')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

10.JSON

import json

# 列表
language1=['Python','Java','JavaScript']
# 字典
language2={
    'Python':'powerful',
    'Java':'famous',
    'JavaScript':'developing'
}
# 元组
language3=('C++','C','C#','Go')

# 1、JSON 写入文件
with open('yyy.txt','w') as file1:
    # json.dump(language1,file1)
    json.dump(language2,file1)
    # json.dump(language3,file1)

# 2、读取 JSON 文件
with open('yyy.txt','r') as file2:
    txt=json.load(file2)
    print(txt)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

11.pygame

import pygame
import sys

def run():

    # 初始化屏幕
    pygame.init()
    # 窗口大小
    screen = pygame.display.set_mode((900, 600))
    # 窗口标题
    pygame.display.set_caption('吃鸡神坑助手')
    # 浅灰色
    bg_color=(230,230,230)
    image=pygame.image.load('numberOne.png')
    rect=screen.get_rect()
    while True:
        # 监视键盘、鼠标
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
        # 背景颜色
        screen.fill(bg_color)
        # 图片
        screen.blit(image,rect)
        # 显示窗口
        pygame.display.flip()

# 运行
run()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

这里写图片描述

12.模块化编程

这里写图片描述

参考文章:
使用模块的方法:Python3导入自定义模块的3种方式
使用__.ini.py 以模块化:python引入导入自定义模块和外部文件

1.__init__.py
def show():
    print('hello')
  • 1
  • 2
2.test.py
from CrashProject import other
other.show()
  • 1
  • 2

13.切片、迭代器、生成器

letter = ['a', 'b', 'c']
num = ['1', '2']

# []->()
list = (a + b for a in letter for b in num)
print(list)
for a in list:
    print(a)

list = [a + b for a in letter for b in num]
print(list)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这里写图片描述

这里写图片描述

14、装饰器

类似 JavaEE Spring 框架的 AOP

# 模拟登陆拦截
def AOPTest(func):
    print("---登陆前---")
    func()
    print("---登陆后---")

@AOPTest
def f1():
    print('调用方法')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这里写图片描述

15、属性 setter、getter

class Student(object):
    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self, value):
        self._birth = value


s1=Student()
s1.birth=18
print(s1.birth)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里写图片描述

16、多态

class Animal:
    def __init__(self, name):
        self.name = name

    def talk(self):
        pass

    @staticmethod   # 封装
    def animal_talk(obj):
        obj.talk()


class Cat(Animal):
    def talk(self):
        print('喵')

class Dog(Animal):
    def talk(self):
        print('汪')

d = Dog("dog1")

c = Cat("cat1")

Animal.animal_talk(c)
Animal.animal_talk(d)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

这里写图片描述

三、其他

1、使用豆瓣加速 pip 模块,如安装:

pip  install  -i  https://pypi.doubanio.com/simple/ django
pip install web.py -i http://pypi.douban.com/simple
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/133915
推荐阅读
相关标签
  

闽ICP备14008679号