(1)print 默認輸出是換行的,若是要實現不換行須要在變量末尾加上 end="":html
(2)isinstance 和 type 的區別在於:type()不會認爲子類是一種父類類型。isinstance()會認爲子類是一種父類類型。這麼理解,父類:動物;子類:貓。isinstance()認爲貓是動物,type()認爲貓就是貓不是動物。python
(3)數值的除法包含兩個運算符:/ 返回一個浮點數,// 返回一個整數。git
(4)Python 不支持單字符類型,單字符在 Python 中也是做爲一個字符串使用。github
(5)迭代器與生成器。正則表達式
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
#!/usr/bin/python3 import sys def fibonacci(n): # 生成器函數 - 斐波那契 a, b, counter = 0, 1, 0 while True: if (counter > n): return yield a a, b = b, a + b counter += 1 f = fibonacci(10) # f 是一個迭代器,由生成器返回生成 while True: try: print (next(f), end=" ") except StopIteration: sys.exit()
(6)列表的棧與隊列sql
(7)將輸出的值轉成字符串,可使用 repr() 或 str() 函數來實現。mongodb
(8)類定義了 init() 方法,類的實例化操做會自動調用 init() 方法。類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。與通常函數定義不一樣,類方法必須包含參數 self, 且爲第一個參數,self 表明的是類的實例。self 的名字並非規定死的,也可使用 this,可是最好仍是按照約定是用 self。數據庫
(9)**__private_attrs:兩個下劃線開頭,聲明該屬性爲私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs**。flask
(10)處理從 urls 接收數據的 urllib.request 以及用於發送電子郵件的 smtplib:app
>>> from urllib.request import urlopen >>> for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'): ... if 'EST' in line or 'EDT' in line.decode('utf-8'): ... print(line) >>> import smtplib >>> server = smtplib.SMTP('localhost') >>> server.sendmail('soothsayer@example.org', 'jcaesar@example.org', ... """To: jcaesar@example.org ... From: soothsayer@example.org ... ... Beware the Ides of March. ... """) >>> server.quit()
(11)doctest掃描模塊並根據程序中內嵌的文檔字符串執行測試。經過用戶提供的例子,它強化了文檔,容許 doctest 模塊確認代碼的結果是否與文檔一致:
def average(values): return sum(values) / len(values) import doctest print(doctest.testmod()) # 自動驗證嵌入測試
(12)Python實例總結 https://www.runoob.com/python3/python3-examples.html
(13)Python實現查找與排序:https://www.runoob.com/python3/python3-examples.html
(14)re.match 嘗試從字符串的起始位置匹配一個模式,若是不是起始位置匹配成功的話,match()就返回none。flags是否區分大小寫。
re.match(pattern, string, flags=0)
(15)re.match與re.search的區別。re.match只匹配字符串的開始,若是字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。
(16)Python鏈接MySQL
import MySQLdb # 顯示全部數據庫 mydb = MySQLdb.Connect( host='localhost', user='root', passwd='root', database='all_news' ) mycursor = mydb.cursor() mycursor.execute("SHOW DATABASES") for x in mycursor: print(x) print("*"*20) # 建立數據表 # mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))") mycursor.execute("SHOW TABLES") for x in mycursor: print(x) # 修改表 # mycursor.execute("ALTER TABLE sites ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY") # 插入數據 # sql = "INSERT INTO sites (name, url) VALUES (%s, %s)" # val = ("RUNOOB", "https://www.runoob.com") # mycursor.execute(sql, val) # mydb.commit() # 數據表內容有更新,必須使用到該語句 # print(mycursor.rowcount, "記錄插入成功。") # 批量插入 # sql = "INSERT INTO sites (name, url) VALUES (%s, %s)" # val = [ # ('Google', 'https://www.google.com'), # ('Github', 'https://www.github.com'), # ('Taobao', 'https://www.taobao.com'), # ('stackoverflow', 'https://www.stackoverflow.com/') # ] # mycursor.executemany(sql, val) # mydb.commit() # 數據表內容有更新,必須使用到該語句 # print(mycursor.rowcount, "記錄插入成功。") # 查詢數據 print("="*20) mycursor.execute("SELECT * FROM sites") myresult = mycursor.fetchall() # fetchall() 獲取全部記錄 # myresult = mycursor.fetchone() # 讀一條數據 for x in myresult: print(x) # 刪除數據 # sql = "DELETE FROM sites WHERE name = 'stackoverflow'" # mycursor.execute(sql) # mydb.commit() # print(mycursor.rowcount, " 條記錄刪除") # 更新數據 sql = "UPDATE sites SET name = 'ZH' WHERE id = 4" mycursor.execute(sql) mydb.commit() print(mycursor.rowcount, " 條記錄被修改") # 執行事務 # SQL刪除記錄語句 sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20) try: # 執行SQL語句 cursor.execute(sql) # 向數據庫提交 db.commit() except: # 發生錯誤時回滾 db.rollback()
(17) 格式化日期:
#!/usr/bin/python3 import time # 格式化成2016-03-20 11:45:39形式 print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # 格式化成Sat Mar 28 22:24:24 2016形式 print (time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
(18)Python操做MongoDB
D:\mongodb\bin>mongod --dbpath D:\mongodb\data\db --logpath=D:\mongodb\log\mongo.log --logappend
# Python 操做MongoDB print("*"*50) import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["runoobdb"] dblist = myclient.list_database_names() if "runoobdb" in dblist: print("數據庫已存在!") # 建立集合 mycol = mydb["sites"] collist = mydb.list_collection_names() if "sites" in collist: # 判斷 sites 集合是否存在 print("集合已存在!") # 添加數據 mydict = [ { "_id": 1, "name": "RUNOOB", "cn_name": "菜鳥教程"}, { "_id": 2, "name": "Google", "address": "Google 搜索"}, { "_id": 3, "name": "Facebook", "address": "臉書"}, { "_id": 4, "name": "Taobao", "address": "淘寶"}, { "_id": 5, "name": "Zhihu", "address": "知乎"} ] # x = mycol.insert_one(mydict) # x = mycol.insert_many(mydict) # print(x.inserted_ids) # 修改數據 myquery = { "alexa": "10000" } newvalues = { "$set": { "alexa": "12345" } } mycol.update_one(myquery, newvalues) # 輸出修改後的 "sites" 集合 # for x in mycol.find(): # print(x) # 查詢數據, find() 方法來查詢指定字段的數據,將要返回的字段對應值設置爲 1。 # for x in mycol.find(): # print(x) # for x in mycol.find({},{"_id":0}): # print(x) # myquery = { "name": "RUNOOB" } # for x in mycol.find(myquery): # print(x) # myresult = mycol.find().limit(3) # 輸出結果 # for x in myresult: # print(x) # 刪除數據 # myquery = { "name": "知乎" } # myquery = { "name": {"$regex": "^F"} } # mycol.delete_one(myquery) # mycol.delete_many(myquery) # 刪除後輸出 for x in mycol.find(): print(x) # 排序,升序sort("alexa"),降序sort("alexa", -1) # mydoc = mycol.find().sort("alexa") # for x in mydoc: # print(x)
(19)WSGI 應用和常見的 Web 框架
[uwsgi] socket = 127.0.0.1:3031 chdir = /home/foobar/myproject/ wsgi-file = myproject/wsgi.py processes = 4 threads = 2 stats = 127.0.0.1:9191
uwsgi yourfile.ini
建立文件 myflaskapp.py ,代碼以下:
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "<span style='color:red'>I am app 1</span>"
執行如下命令:
uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191