《30天自制作業系統》軟盤 -> VMware虛擬機器 阿新 • • 發佈:2020-12-05 from modname import * 這一句裡的星號應該是沿用自正則中一樣的意義,表示的是全部的意思,文中指出少用這種匯入方式,我覺得是如果將一個模組的所有函式名匯入當前名稱空間中,如果不同模組包含了函式名相同的函式,或者是與自己編寫得函式名相同將會導致混亂,而且在 debug 時還不容易發現。 在需要匯入包中所有模組時,import* 還是有意義的。 只需要在 __init__.py 檔案裡面將所有模組名定義在列表 __ALL__ 中就能解決你最後的擔憂。 from modname import * 這種方式進行匯入,如果不同模組之間有相同的函式命名,最後匯入的會覆蓋前面的,也就是說只會呼叫到最後匯入進的函式。 關於匯入模組,自己寫的程式,自己也可以把它儲存下來,以後需要的時候匯入使用,例如下面所示。 我有個程式碼名稱為 test1.py,它的所在路徑為 D:\test 下面。那我只需要完成以下步驟就可以把它作為模組 import 到其他程式碼中了。 1.import sys 2.sys.path.append("D:\\test") 在 test2.py 中我們就可以直接 import test1.py 了。成功匯入後,test1中 的方法也就可以在 test2 中進行使用。 import test1 python檔案寫入也可以進行網站爬蟲,我的python版本是3.6,以下程式碼是開啟project.txt檔案,並向裡面寫入http://www.baidu.com網站程式碼。 from urllib import request response = request.urlopen("http://www.baidu.com/") # 開啟網站 fi = open("project.txt", 'w') # open一個txt檔案 page = fi.write(str(response.read())) # 網站程式碼寫入 fi.close() # 關閉txt檔案 input() 預設輸入的為 str 格式,若用數學計算,則需要轉換格式,例: a=input('請輸入數字:') print(a*2) 假設輸入數值為3,則上例中得出結果為: 33 若將程式碼修改為: a=int(input('請輸入數字:')) print(a*2) 則結果為: 6 通過 pickle 序列化實現一個簡單聯絡人資訊管理: import pickle import os datafile = 'person.data' line = '=======================================' message = ''' ======================================= Welcome bookmark: press 1 to show list press 2 to add pepole press 3 to edit pepole press 4 to delete pepole press 5 to search pepole press 6 to show menu press 0 to quit ======================================= ''' print(message) class Person(object): """通訊錄聯絡人""" def __init__(self, name, number): self.name = name self.number = number # 獲取資料 def get_data(filename=datafile): # 檔案存在且不為空 if os.path.exists(filename) and os.path.getsize(filename): with open(filename,'rb') as f: return pickle.load(f) return None # 寫入資料 def set_data(name, number, filename=datafile): personList = {} if get_data() == None else get_data() with open(filename,'wb') as f: personList[name] = Person(name,number) pickle.dump(personList,f) # 儲存字典格式的資料到檔案 def save_data(dictPerson, filename=datafile): with open(filename,'wb') as f: pickle.dump(dictPerson,f) # 顯示所有聯絡人 def show_all(): personList = get_data() if personList: for v in personList.values(): print(v.name,v.number) print(line) else:
from modname import *
這一句裡的星號應該是沿用自正則中一樣的意義,表示的是全部的意思,文中指出少用這種匯入方式,我覺得是如果將一個模組的所有函式名匯入當前名稱空間中,如果不同模組包含了函式名相同的函式,或者是與自己編寫得函式名相同將會導致混亂,而且在 debug 時還不容易發現。
在需要匯入包中所有模組時,import* 還是有意義的。
只需要在 __init__.py 檔案裡面將所有模組名定義在列表 __ALL__ 中就能解決你最後的擔憂。
from modname import *
這種方式進行匯入,如果不同模組之間有相同的函式命名,最後匯入的會覆蓋前面的,也就是說只會呼叫到最後匯入進的函式。
關於匯入模組,自己寫的程式,自己也可以把它儲存下來,以後需要的時候匯入使用,例如下面所示。
我有個程式碼名稱為 test1.py,它的所在路徑為 D:\test 下面。那我只需要完成以下步驟就可以把它作為模組 import 到其他程式碼中了。
在 test2.py 中我們就可以直接 import test1.py 了。成功匯入後,test1中 的方法也就可以在 test2 中進行使用。
import test1
python檔案寫入也可以進行網站爬蟲,我的python版本是3.6,以下程式碼是開啟project.txt檔案,並向裡面寫入http://www.baidu.com網站程式碼。
from urllib import request response = request.urlopen("http://www.baidu.com/") # 開啟網站 fi = open("project.txt", 'w') # open一個txt檔案 page = fi.write(str(response.read())) # 網站程式碼寫入 fi.close() # 關閉txt檔案
input() 預設輸入的為 str 格式,若用數學計算,則需要轉換格式,例:
a=input('請輸入數字:') print(a*2)
假設輸入數值為3,則上例中得出結果為:
33
若將程式碼修改為:
a=int(input('請輸入數字:')) print(a*2)
則結果為:
6
通過 pickle 序列化實現一個簡單聯絡人資訊管理:
import pickle import os datafile = 'person.data' line = '=======================================' message = ''' ======================================= Welcome bookmark: press 1 to show list press 2 to add pepole press 3 to edit pepole press 4 to delete pepole press 5 to search pepole press 6 to show menu press 0 to quit ======================================= ''' print(message) class Person(object): """通訊錄聯絡人""" def __init__(self, name, number): self.name = name self.number = number # 獲取資料 def get_data(filename=datafile): # 檔案存在且不為空 if os.path.exists(filename) and os.path.getsize(filename): with open(filename,'rb') as f: return pickle.load(f) return None # 寫入資料 def set_data(name, number, filename=datafile): personList = {} if get_data() == None else get_data() with open(filename,'wb') as f: personList[name] = Person(name,number) pickle.dump(personList,f) # 儲存字典格式的資料到檔案 def save_data(dictPerson, filename=datafile): with open(filename,'wb') as f: pickle.dump(dictPerson,f) # 顯示所有聯絡人 def show_all(): personList = get_data() if personList: for v in personList.values(): print(v.name,v.number) print(line) else: