日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

学习10:Python重要知识

發布時間:2023/12/10 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习10:Python重要知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python易忽略知識

(1)print 默認輸出是換行的,如果要實現不換行需要在變量末尾加上 end=""

(2)isinstance 和 type 的區別在于:type()不會認為子類是一種父類類型。isinstance()會認為子類是一種父類類型。這么理解,父類:動物;子類:貓。isinstance()認為貓是動物,type()認為貓就是貓不是動物。

(3)數值的除法包含兩個運算符:/ 返回一個浮點數,// 返回一個整數。

(4)Python 不支持單字符類型,單字符在 Python 中也是作為一個字符串使用。

(5)迭代器與生成器。

  • 迭代是Python最強大的功能之一,是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。迭代器有兩個基本的方法:iter()next()。把一個類作為一個迭代器使用需要在類中實現兩個方法 iter() 與 next() 。
class MyNumbers:def __iter__(self):self.a = 1return selfdef __next__(self):x = self.aself.a += 1return xmyclass = MyNumbers() myiter = iter(myclass)print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
  • 在 Python 中,使用了 yield 的函數被稱為生成器(generator)。生成器是一個返回迭代器的函數,只能用于迭代操作,更簡單點理解生成器就是一個迭代器。每次遇到 yield 時函數會暫停并保存當前所有的運行信息,返回 yield 的值, 并在下一次執行 next() 方法時從當前位置繼續運行。使用 yield 實現斐波那契數列:
#!/usr/bin/python3import sysdef fibonacci(n): # 生成器函數 - 斐波那契a, b, counter = 0, 1, 0while True:if (counter > n): returnyield aa, b = b, a + bcounter += 1 f = fibonacci(10) # f 是一個迭代器,由生成器返回生成while True:try:print (next(f), end=" ")except StopIteration:sys.exit()

(6)列表的棧與隊列

(7)將輸出的值轉成字符串,可以使用 repr() 或 str() 函數來實現。

  • str(): 函數返回一個用戶易讀的表達形式。
  • repr(): 產生一個解釋器易讀的表達形式。

(8)類定義了 init() 方法,類的實例化操作會自動調用 init() 方法。類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。與一般函數定義不同,類方法必須包含參數 self, 且為第一個參數,self 代表的是類的實例。self 的名字并不是規定死的,也可以使用 this,但是最好還是按照約定是用 self

(9)**__private_attrs:兩個下劃線開頭,聲明該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs**。

(10)處理從 urls 接收數據的 urllib.request 以及用于發送電子郵件的 smtplib:

>>> 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
  • MongoDB
# Python 操作MongoDB print("*"*50)import pymongomyclient = 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 框架

  • 部署Django
[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
  • 部署Flask

創建文件 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

轉載于:https://www.cnblogs.com/baiboy/p/11014657.html

總結

以上是生活随笔為你收集整理的学习10:Python重要知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。