《Python程式設計從入門到實戰》學習心得
阿新 • • 發佈:2019-02-05
一、前言
之前,專案後臺基本都是使用 Java
的 SpringBoot 框架完成的,
而 Python
自去年到現在,一直以來,都是玩著學的,沒有想過要應用到專案上。
但近來,科技園這邊的吳老師,建議專案中使用 Python
的 Django 框架做後臺,因其容易拓展、維護等,這是笨重的 Java
難以企及的。
是時候認真對待 Python
,近來其也火得不行了~
花了一天跳讀了一本評價極好的書《Python程式設計從入門到實戰》,以複習一下之前的 Python 基礎,同時做了一些小 demo,同時藉機對比了 C++、Java、JavaScript
等語言的基礎,像讀小說般輕鬆有趣,相當不錯的一次體驗,分享一下
二、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)
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:])
3.元組
ssh=('Spring','Struts2','Hibernate')
print(ssh)
print(ssh[0])
# ① 元組不能修改
# ssh[0]='xxx' # 報錯
# ② 遍歷
for v in ssh:
print(v)
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)
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)
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')
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)
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')
9.異常
# 1、try-except-else
try:
# print(1/0)
print(2/5)
except ZeroDivisionError:
print('fail by zero')
else:
print('ok')
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)
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()
12.模組化程式設計
#####1.__init__.py
def show():
print('hello')
#####2.test.py
from CrashProject import other
other.show()
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)
14、裝飾器
類似 JavaEE Spring 框架的 AOP
# 模擬登陸攔截
def AOPTest(func):
print("---登陸前---")
func()
print("---登陸後---")
@AOPTest
def f1():
print('呼叫方法')
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)
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、使用豆瓣加速 pip 模組,如安裝:
pip install -i https://pypi.doubanio.com/simple/ django
pip install web.py -i http://pypi.douban.com/simple