Python 介紹
Python是一種流行
的高級(jí)編程語言,具有易于學(xué)習(xí)和使用的特性,被廣泛應(yīng)用于各種領(lǐng)域。
Python的特性
- 簡(jiǎn)單易學(xué):Python的語法清晰簡(jiǎn)潔,易于理解和學(xué)習(xí)。與其他編程語言相比,Python的語法設(shè)計(jì)非常直觀,使得編程新手也能快速上手。
- 強(qiáng)大的標(biāo)準(zhǔn)庫和豐富的第三方庫:Python擁有一個(gè)龐大的標(biāo)準(zhǔn)庫,提供了許多用于各種任務(wù)的實(shí)用模塊,如文件處理、網(wǎng)絡(luò)編程、數(shù)據(jù)庫交互等。此外,Python的第三方庫非常豐富,包括科學(xué)計(jì)算、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、Web開發(fā)等。
-
動(dòng)態(tài)類型:Python是動(dòng)態(tài)類型的語言,這意味著開發(fā)者
不需要在聲明變量時(shí)指定其類型
。這可以使代碼更加簡(jiǎn)潔,但也需要開發(fā)者注意運(yùn)行時(shí)可能出現(xiàn)的類型錯(cuò)誤。 -
解釋型語言:Python是解釋型語言,這意味著代碼可以在運(yùn)行時(shí)直接解釋執(zhí)行,而
不需要預(yù)先編譯
。這提高了開發(fā)效率,并使得Python適合于快速原型開發(fā)。 -
面向?qū)ο?/strong>:Python支持面向?qū)ο蟮木幊田L(fēng)格,可以用來
創(chuàng)建類和對(duì)象
。這使得Python可以更好地組織和管理代碼,并支持復(fù)雜的程序設(shè)計(jì)。
Python的使用場(chǎng)景
-
Web開發(fā):Python的Web框架如
Django
和Flask
非常流行,可用于構(gòu)建各種類型的Web應(yīng)用。 - 數(shù)據(jù)分析和機(jī)器學(xué)習(xí):Python的第三方庫如NumPy、Pandas、Scikit-learn和TensorFlow等在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)領(lǐng)域具有廣泛的應(yīng)用。
- 自動(dòng)化和腳本編寫:Python的簡(jiǎn)潔語法和動(dòng)態(tài)類型使得編寫自動(dòng)化腳本和批處理任務(wù)變得非常簡(jiǎn)單。
- 科學(xué)計(jì)算和工程:Python的NumPy和SciPy庫為科學(xué)計(jì)算提供了強(qiáng)大的支持,適用于工程和科學(xué)應(yīng)用。
- 網(wǎng)絡(luò)編程和物聯(lián)網(wǎng):Python可以用于編寫各種網(wǎng)絡(luò)服務(wù),包括REST API、WebSocket等,適用于物聯(lián)網(wǎng)(IoT)和其他網(wǎng)絡(luò)相關(guān)的應(yīng)用。
- 游戲開發(fā):Python有許多用于游戲開發(fā)的庫和引擎,如Pygame和Panda3D,可以用于開發(fā)各種類型的游戲。
- 嵌入式系統(tǒng)和硬件交互:Python可以通過與C/C++等語言進(jìn)行混合編程,用于與嵌入式系統(tǒng)和其他硬件設(shè)備進(jìn)行交互。
總之,Python是一種用途廣泛且功能強(qiáng)大的編程語言,適用于各種應(yīng)用領(lǐng)域。它簡(jiǎn)單易學(xué),能夠提高開發(fā)效率和代碼質(zhì)量,因此在軟件開發(fā)、數(shù)據(jù)分析、自動(dòng)化腳本編寫、網(wǎng)絡(luò)編程等領(lǐng)域得到了廣泛的應(yīng)用。
python基本語法
變量命名規(guī)則
Python中的變量命名遵循以下規(guī)則:
起始字母: 變量名應(yīng)始終以字母(a-z,A-Z)或下劃線(_)開始。
后續(xù)字符: 變量名的后續(xù)字符可以是字母,數(shù)字或下劃線。
大小寫敏感性: Python是大小寫敏感的,因此myVariable和myvariable會(huì)被視為兩個(gè)不同的變量。
不要使用Python內(nèi)建關(guān)鍵字: 變量名不應(yīng)與Python的關(guān)鍵字沖突,如for, if, while, break, continue, pass等等。
不要使用Python內(nèi)建模塊名: 避免使用Python內(nèi)建模塊名作為變量名,例如import,print等。
不要使用特殊符號(hào): 除了下劃線,避免在變量名中使用其他特殊符號(hào),如連字符(-),點(diǎn)(.)等。
連字符: 當(dāng)變量名包含多個(gè)單詞時(shí),可以使用連字符(-)連接,例如my-variable。
使用下劃線: 當(dāng)變量名包含多個(gè)單詞時(shí),也可以使用下劃線(_)連接,例如my_variable。
避免使用單個(gè)字符: 除非特殊情況,避免只使用單個(gè)字符作為變量名,這樣的變量通常沒有明確的含義。
使用駝峰命名法: 類通常使用駝峰命名法(CamelCase),例如MyClass。
數(shù)據(jù)類型
Python是一種
動(dòng)態(tài)類型
的語言,這意味著在Python中,你不必預(yù)先聲明變量的數(shù)據(jù)類型。Python會(huì)根據(jù)賦予給它們的數(shù)據(jù)自動(dòng)創(chuàng)建數(shù)據(jù)類型
。
Number(數(shù)字):Python支持整數(shù)和浮點(diǎn)數(shù)。例如:123,400.0。
String(字符串):字符串是由零個(gè)或多個(gè)字符組成的一串字符。例如:"Hello","Python"。
List(列表):列表是Python中非常常用的數(shù)據(jù)結(jié)構(gòu),它可以包含任意數(shù)量和類型的對(duì)象。例如:[1, "a", 2.3]。
Tuple(元組):元組類似于列表,但元組的元素不能修改。例如:(1, "a", 2.3)。
Dictionary(字典):字典是一個(gè)包含鍵值對(duì)的無序集合。例如:{"name": "Alice", "age": 20}。
Set(集合):集合是一個(gè)無序且不重復(fù)元素的集合。例如:{1, 2, 3}。
Boolean(布爾):布爾有兩種值,True和False。
NoneType(None):NoneType表示沒有任何東西,是Python的特殊類型。
Function(函數(shù)):在Python中,函數(shù)也是一種數(shù)據(jù)類型,可以像其他數(shù)據(jù)類型一樣被傳遞和返回。
Class(類):類是創(chuàng)建對(duì)象的藍(lán)圖,定義了對(duì)象的結(jié)構(gòu)和行為。
Module(模塊):模塊是一種數(shù)據(jù)類型,可以包含函數(shù)、類、變量等。
Generator(生成器):生成器是一個(gè)可以迭代的對(duì)象,用于創(chuàng)建迭代器。
Coroutine(協(xié)程):協(xié)程是一種特殊類型的函數(shù),可以在執(zhí)行過程中暫停和恢復(fù)。
Asynciofuture(異步io未來):這是用于處理異步I/O操作的對(duì)象。
print(): 用于在控制臺(tái)輸出指定的信息。
print('Hello World') #Hello World
type(): 用于獲取指定對(duì)象的類型。
print(type(123)) #<class 'int'>
len(): 用于獲取指定對(duì)象的長度(例如列表、字符串、元組等)。
#字符串
print(len('123')) #3
#列表
print(len([1,2,3])) #3
#元組
print(len((1,'2',2.4,[1]))) #4
for…in…: 用于循環(huán)遍歷序列(例如列表、元組、字符串)或其他可迭代對(duì)象。例如,以下代碼將遍歷打印列表中的所有元素:
my_list = [1, 2, 3, 4]
for element in my_list:
print(element) #1,2,3,4
tuple = (1,'2.3',4)
for t in tuple:
print(t) #1,2.3,4
str = "123"
print(len(str)) #3
if…elif…else…: 用于條件語句,根據(jù)條件執(zhí)行不同的操作。
num = 10
if num > 0:
print("positive")
elif num < 0:
print("negative")
else:
print("zero")
def: 用于定義函數(shù)。例如,以下代碼定義了一個(gè)函數(shù),接受兩個(gè)參數(shù)并返回它們的和:
def addNum(a,b):
return a+b
return: 用于從函數(shù)中返回結(jié)果。例如,以下代碼調(diào)用add函數(shù)并將結(jié)果打印出來:
result = addNum(10, 20)
print(result) # prints 30
and、or: 用于邏輯運(yùn)算。例如,以下代碼將判斷是否滿足條件:x > 0 and x < 100:
x = 50
if x > 0 and x < 100:
print("x is between 0 and 100")
not: 用于邏輯非運(yùn)算。例如,以下代碼將判斷是否不滿足條件:x <= 0:
x = -10
if not x <= 0:
print("x is not less than or equal to 0")
pip安裝依賴:
pip install xxx
pip install -r requestments.txt
python運(yùn)行文件
python main.py
Flask
Flask是一個(gè)輕量級(jí)的可定制框架,使用Python語言編寫,較其他同類型框架更為靈活、輕便、安全且容易上手。它可以很好地結(jié)合MVC
模式進(jìn)行開發(fā),開發(fā)人員分工合作,小型團(tuán)隊(duì)在短時(shí)間內(nèi)就可以完成功能豐富的中小型網(wǎng)站或Web服務(wù)的實(shí)現(xiàn)。
Flask和Django都是使用Python開發(fā)的Web應(yīng)用程序后端框架,兩者的主要區(qū)別在于功能豐富程度、框架靈活性和體量大小。
功能豐富程度:Django相比Flask更強(qiáng)大和復(fù)雜。Flask更輕量化,僅提供了框架化、流程化等關(guān)鍵功能。Django則提供了幾乎在網(wǎng)站開發(fā)中需要使用的任何功能,包括用戶認(rèn)證、ORM、模板引擎等。
框架靈活性:Flask在定制性方面相對(duì)較強(qiáng)。它允許用戶自己決定定制哪些功能,可以自由地使用不同的數(shù)據(jù)庫、模板引擎等,而且其插件庫非常豐富,可以輕松實(shí)現(xiàn)個(gè)性化定制。而Django則更注重整體性和一致性,使用起來更加簡(jiǎn)潔,但相比Flask略顯不夠靈活。
體量大小:Django被形容為“大而全”的框架,功能極其強(qiáng)大,是Python web框架的先驅(qū),因此體量相對(duì)較大,對(duì)于小型微服務(wù)來說可能會(huì)顯得過于臃腫。相比之下,F(xiàn)lask更加小巧、靈活,非常適用于小型網(wǎng)站或個(gè)人項(xiàng)目。
總的來說,Flask更適合小型項(xiàng)目或初學(xué)者入門學(xué)習(xí),而Django更適合大型企業(yè)級(jí)網(wǎng)站或復(fù)雜的Web應(yīng)用開發(fā)
。
Django
Flask
View
<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello World(html)</h1>
{{message}}
<div id="listDom" style="display: none;">{{list}}</div>
<ul id="list"></ul>
</body>
<script>
const listDom = document.querySelector('#listDom');
let list = JSON.parse(listDom.innerText)
var ul = document.getElementById("list");
list.forEach(l => {
var item = document.createElement("li");
item.appendChild(document.createTextNode(l.name));
ul.appendChild(item);
});
</script>
</html>
#!/usr/env python3
# -*- coding: UTF-8 -*-
# 導(dǎo)入Flask
from flask import Flask,render_template
# Flask類接收一個(gè)參數(shù)
app = Flask(__name__)
# 裝飾器的作用是將路由映射到視圖函數(shù)index上
@app.route('/')
def index():
return '<h1>Hello World(/)</h1>'
@app.route('/hello')
def hello():
return render_template('index.html')
# Flask應(yīng)用程序?qū)嵗膔un方法啟動(dòng)web服務(wù)器
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=5000)
Model
- 安裝python操作MySQL的驅(qū)動(dòng)
pip install pymysql
- 安裝ORM工具(對(duì)象關(guān)系映射)
pip install flask-sqlalchemy
class User(db.Model):
user_id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(128), nullable=False)
def __repr__(self):
return '<User %r>' % self.name
def to_dict(self):
return{
"userId":self.user_id,
"name":self.name
}
Control
html
# 渲染H5
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World(/)</h1>'
#render_template
@app.route('/renderTemplate')
def renderTemplate():
return render_template('index.html')
# Flask應(yīng)用程序?qū)嵗膔un方法啟動(dòng)web服務(wù)器
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=5000)
simple api
# python接口
from flask import Flask,request
import json
app = Flask(__name__)
@app.route('/')
def index():
return 'api接口'
@app.route('/list',methods=['GET','POST'])
def list():
lists = [1,2,3]
return lists
@app.route('/insert',methods=['GET','POST'])
def insert():
list = ['戴']
if request.method == 'GET':
name = request.args.get('name')
if request.method == 'POST':
name = request.values.get('name')
list.append(name)
return list
if __name__ == '__main__':
app.run(debug=True,host='127.0.0.1',port=5001)
連接數(shù)據(jù)庫
# config.py
class Config(object):
# Database configuration mysql://username:password@hostname/database
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@localhost:3306/python?charset=utf8mb4"
SQLALCHEMY_TRACK_MODIFICATIONS = True
# 連接數(shù)據(jù)庫
from flask import Flask,request
import pymysql
import json
from flask_sqlalchemy import SQLAlchemy
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
@app.route('/')
def index():
return '連接數(shù)據(jù)庫'
# pymysql
@app.route('/searchByPymysql')
def searchByPymysql():
conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='python')
cursor = conn.cursor()
sql = "SELECT * FROM user;"
cursor.execute(sql)
result = cursor.fetchall()
print(result,'result')
arr = []
for row in result:
tmp = {
"userId":row[0],
"password":row[1],
"name":row[2]
}
arr.append(tmp)
cursor.close()
conn.close()
return json.dumps(arr)
# SQLAlchemy
class User(db.Model):
user_id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(128), nullable=False)
def __repr__(self):
return '<User %r>' % self.name
def to_dict(self):
return{
"userId":self.user_id,
"name":self.name
}
@app.route('/searchBySqlAlchemy')
def searchBySqlAlchemy():
result = []
user = User.query.all()
for u in user:
if u:
result.append(u.to_dict())
return json.dumps(result)
# weather
class Weather(db.Model):
city = db.Column(db.String(80), unique=True, primary_key=True)
weather = db.Column(db.String(80), nullable=False)
tem = db.Column(db.Integer, nullable=False)
def __repr__(self):
return '<City %r>' % self.city
def to_dict(self):
return{
"city":self.city,
"weather":self.weather,
"tem":self.tem
}
@app.route('/getWeather')
def getWeather():
if request.method == 'GET':
city = request.args.get('city')
if request.method == 'POST':
city = request.values.get('city')
weather = Weather.query.filter(Weather.city == city).first()
return weather.to_dict()
if __name__ == '__main__':
app.run(debug=True,host='127.0.0.1',port=5002)
跨域
pip install flask_cors
from flask_cors import CORS
CORS(app,resources={r"/*":{"origins":"*"}})
Mojo比python快68000倍
比Python快68000倍!Mojo正式發(fā)布,網(wǎng)友:Python生態(tài)系統(tǒng)最重要的升級(jí)來了文章來源:http://www.zghlxwxcb.cn/news/detail-766777.html
相關(guān)鏈接
Flask中文網(wǎng)
flask_sqlalchemy文章來源地址http://www.zghlxwxcb.cn/news/detail-766777.html
到了這里,關(guān)于【畢設(shè)必備】手把手帶你用Python搭建一個(gè)簡(jiǎn)單的后端服務(wù)- API的創(chuàng)建,前后端交互的數(shù)據(jù)傳遞,GET,POST,JSON,F(xiàn)LASK的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!