轉載:python基礎之模塊

来源:http://www.cnblogs.com/alan-babyblog/archive/2016/01/21/5147179.html
-Advertisement-
Play Games

作者:武沛齊出處:http://www.cnblogs.com/wupeiqi/本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。模塊,用一砣代碼實現了某個功能的代碼集合。類似於函數式編程和麵向過程編程,函數式編程則完成一個功能,其他代碼用來調用...



作者:武沛齊 
出處:http://www.cnblogs.com/wupeiqi/ 
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

模塊,用一砣代碼實現了某個功能的代碼集合。 

類似於函數式編程和麵向過程編程,函數式編程則完成一個功能,其他代碼用來調用即可,提供了代碼的重用性和代碼間的耦合。而對於一個複雜的功能來,可能需要多個函數才能完成(函數又可以在不同的.py文件中),n個 .py 文件組成的代碼集合就稱為模塊。

如:os 是系統相關的模塊;file是文件操作相關的模塊

模塊分為三種:

  • 自定義模塊
  • 內置模塊
  • 開源模塊

自定義模塊

1、定義模塊

情景一:

  

情景二:

  

情景三:

  

2、導入模塊

Python之所以應用越來越廣泛,在一定程度上也依賴於其為程式員提供了大量的模塊以供使用,如果想要使用模塊,則需要導入。導入模塊有一下幾種方法:

1 2 3 4 import module from module.xx.xx import xx from module.xx.xx import xx as rename   from module.xx.xx import *

導入模塊其實就是告訴Python解釋器去解釋那個py文件

  • 導入一個py文件,解釋器解釋該py文件
  • 導入一個包,解釋器解釋該包下的 __init__.py 文件

那麼問題來了,導入模塊時是根據那個路徑作為基準來進行的呢?即:sys.path

1 2 3 4 5 import sys print sys.path    結果: ['/Users/wupeiqi/PycharmProjects/calculator/p1/pp1''/usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg''/usr/local/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg''/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.10-x86_64.egg''/usr/local/lib/python2.7/site-packages/xlutils-1.7.1-py2.7.egg''/usr/local/lib/python2.7/site-packages/xlwt-1.0.0-py2.7.egg''/usr/local/lib/python2.7/site-packages/xlrd-0.9.3-py2.7.egg''/usr/local/lib/python2.7/site-packages/tornado-4.1-py2.7-macosx-10.10-x86_64.egg''/usr/local/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg''/usr/local/lib/python2.7/site-packages/certifi-2015.4.28-py2.7.egg''/usr/local/lib/python2.7/site-packages/pyOpenSSL-0.15.1-py2.7.egg''/usr/local/lib/python2.7/site-packages/six-1.9.0-py2.7.egg''/usr/local/lib/python2.7/site-packages/cryptography-0.9.1-py2.7-macosx-10.10-x86_64.egg''/usr/local/lib/python2.7/site-packages/cffi-1.1.1-py2.7-macosx-10.10-x86_64.egg''/usr/local/lib/python2.7/site-packages/ipaddress-1.0.7-py2.7.egg''/usr/local/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg''/usr/local/lib/python2.7/site-packages/pyasn1-0.1.7-py2.7.egg''/usr/local/lib/python2.7/site-packages/idna-2.0-py2.7.egg''/usr/local/lib/python2.7/site-packages/pycparser-2.13-py2.7.egg''/usr/local/lib/python2.7/site-packages/Django-1.7.8-py2.7.egg''/usr/local/lib/python2.7/site-packages/paramiko-1.10.1-py2.7.egg''/usr/local/lib/python2.7/site-packages/gevent-1.0.2-py2.7-macosx-10.10-x86_64.egg''/usr/local/lib/python2.7/site-packages/greenlet-0.4.7-py2.7-macosx-10.10-x86_64.egg''/Users/wupeiqi/PycharmProjects/calculator''/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python27.zip''/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7''/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin''/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac''/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages''/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk''/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old''/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload''/usr/local/lib/python2.7/site-packages''/Library/Python/2.7/site-packages']

如果sys.path路徑列表沒有你想要的路徑,可以通過 sys.path.append('路徑') 添加。
通過os模塊可以獲取各種目錄,例如:

import sys
import os

pre_path = os.path.abspath('../')
sys.path.append(pre_path)
 

開源模塊

一、下載安裝

下載安裝有兩種方式:

yum 
pip
apt-get
...
下載源碼
解壓源碼
進入目錄
編譯源碼    python setup.py build
安裝源碼    python setup.py install

註:在使用源碼安裝時,需要使用到gcc編譯和python開發環境,所以,需要先執行:

1 2 3 4 yum install gcc yum install python-devel apt-get python-dev

安裝成功後,模塊會自動安裝到 sys.path 中的某個目錄中,如:

1 /usr/lib/python2.7/site-packages/

二、導入模塊

同自定義模塊中導入的方式

三、模塊 paramiko

paramiko是一個用於做遠程式控制制的模塊,使用該模塊可以對遠程伺服器進行命令或文件操作,值得一說的是,fabric和ansible內部的遠程管理就是使用的paramiko來現實。

1、下載安裝

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # pycrypto,由於 paramiko 模塊內部依賴pycrypto,所以先下載安裝pycrypto   # 下載安裝 pycrypto wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz tar -xvf pycrypto-2.6.1.tar.gz cd pycrypto-2.6.1 python setup.py build python setup.py install   # 進入python環境,導入Crypto檢查是否安裝成功   # 下載安裝 paramiko wget http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz tar -xvf paramiko-1.10.1.tar.gz cd paramiko-1.10.1 python setup.py build python setup.py install   # 進入python環境,導入paramiko檢查是否安裝成功

2、使用模塊

 執行命令 - 通過用戶名和密碼連接伺服器  執行命令 - 過密鑰鏈接伺服器  上傳或者下載文件 - 通過用戶名和密碼  上傳或下載文件 - 通過密鑰

內置模塊

一、os

用於提供系統級別的操作

複製代碼
os.getcwd() 獲取當前工作目錄,即當前python腳本工作的目錄路徑
os.chdir("dirname")  改變當前腳本工作目錄;相當於shell下cd
os.curdir  返回當前目錄: ('.')
os.pardir  獲取當前目錄的父目錄字元串名:('..')
os.makedirs('dirname1/dirname2')    可生成多層遞歸目錄
os.removedirs('dirname1')    若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依此類推
os.mkdir('dirname')    生成單級目錄;相當於shell中mkdir dirname
os.rmdir('dirname')    刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell中rmdir dirname
os.listdir('dirname')    列出指定目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式列印
os.remove()  刪除一個文件
os.rename("oldname","newname")  重命名文件/目錄
os.stat('path/filename')  獲取文件/目錄信息
os.sep    輸出操作系統特定的路徑分隔符,win下為"\\",Linux下為"/"
os.linesep    輸出當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n"
os.pathsep    輸出用於分割文件路徑的字元串
os.name    輸出字元串指示當前使用平臺。win->'nt'; Linux->'posix'
os.system("bash command")  運行shell命令,直接顯示
os.environ  獲取系統環境變數
os.path.abspath(path)  返回path規範化的絕對路徑
os.path.split(path)  將path分割成目錄和文件名二元組返回
os.path.dirname(path)  返回path的目錄。其實就是os.path.split(path)的第一個元素
os.path.basename(path)  返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是絕對路徑,返回True
os.path.isfile(path)  如果path是一個存在的文件,返回True。否則返回False
os.path.isdir(path)  如果path是一個存在的目錄,則返回True。否則返回False
os.path.join(path1[, path2[, ...]])  將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略
os.path.getatime(path)  返回path所指向的文件或者目錄的最後存取時間
os.path.getmtime(path)  返回path所指向的文件或者目錄的最後修改時間
複製代碼

更多猛擊這裡

二、sys

用於提供對解釋器相關的操作

複製代碼
sys.argv           命令行參數List,第一個元素是程式本身路徑
sys.exit(n)        退出程式,正常退出時exit(0)
sys.version        獲取Python解釋程式的版本信息
sys.maxint         最大的Int值
sys.path           返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變數的值
sys.platform       返回操作系統平臺名稱
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]
複製代碼

更多猛擊這裡

三、hashlib 

用於加密相關的操作,代替了md5模塊和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 演算法

 md5-廢棄  sha-廢棄
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import hashlib   # ######## md5 ########   hash = hashlib.md5() hash.update('admin') print hash.hexdigest()   # ######## sha1 ########   hash = hashlib.sha1() hash.update('admin') print hash.hexdigest()   # ######## sha256 ########   hash = hashlib.sha256() hash.update('admin') print hash.hexdigest()     # ######## sha384 ########   hash = hashlib.sha384() hash.update('admin') print hash.hexdigest()   # ######## sha512 ########   hash = hashlib.sha512() hash.update('admin') print hash.hexdigest()

以上加密演算法雖然依然非常厲害,但時候存在缺陷,即:通過撞庫可以反解。所以,有必要對加密演算法中添加自定義key再來做加密。

1 2 3 4 5 6 7 import hashlib   # ######## md5 ########   hash = hashlib.md5('898oaFs09f') hash.update('admin') print hash.hexdigest()

還不夠弔?python 還有一個 hmac 模塊,它內部對我們創建 key 和 內容 再進行處理然後再加密

1 2 3 4 import hmac = hmac.new('wueiqi') h.update('hellowo') print h.hexdigest()

不能再牛逼了!!!

四、json 和 pickle 

用於序列化的兩個模塊

  • json,用於字元串 和 python數據類型間進行轉換
  • pickle,用於python特有的類型 和 python的數據類型間進行轉換

Json模塊提供了四個功能:dumps、dump、loads、load

pickle模塊提供了四個功能:dumps、dump、loads、load

五、執行系統命令 

可以執行shell命令的相關模塊和函數有:

  • os.system
  • os.spawn*
  • os.popen*          --廢棄
  • popen2.*           --廢棄
  • commands.*      --廢棄,3.x中被移除
 commands

以上執行shell命令的相關的模塊和函數的功能均在 subprocess 模塊中實現,並提供了更豐富的功能。

call 

執行命令,返回狀態碼

1 2 ret = subprocess.call(["ls""-l"], shell=False) ret = subprocess.call("ls -l", shell=True)

shell = True ,允許 shell 命令是字元串形式

check_call

執行命令,如果執行狀態碼是 0 ,則返回0,否則拋異常

1 2 subprocess.check_call(["ls""-l"]) subprocess.check_call("exit 1", shell=True)

check_output

執行命令,如果狀態碼是 0 ,則返回執行結果,否則拋異常

1 2 subprocess.check_output(["echo""Hello World!"]) subprocess.check_output("exit 1", shell=True)

subprocess.Popen(...)

用於執行複雜的系統命令

參數:

  • args:shell命令,可以是字元串或者序列類型(如:list,元組)
  • bufsize:指定緩衝。0 無緩衝,1 行緩衝,其他 緩衝區大小,負值 系統緩衝
  • stdin, stdout, stderr:分別表示程式的標準輸入、輸出、錯誤句柄
  • preexec_fn:只在Unix平臺下有效,用於指定一個可執行對象(callable object),它將在子進程運行之前被調用
  • close_sfs:在windows平臺下,如果close_fds被設置為True,則新創建的子進程將不會繼承父進程的輸入、輸出、錯誤管道。
    所以不能將close_fds設置為True同時重定向子進程的標準輸入、輸出與錯誤(stdin, stdout, stderr)。
  • shell:同上
  • cwd:用於設置子進程的當前目錄
  • env:用於指定子進程的環境變數。如果env = None,子進程的環境變數將從父進程中繼承。
  • universal_newlines:不同系統的換行符不同,True -> 同意使用 \n
  • startupinfo與createionflags只在windows下有效
    將被傳遞給底層的CreateProcess()函數,用於設置子進程的一些屬性,如:主視窗的外觀,進程的優先順序等等
 執行普通命令

終端輸入的命令分為兩種:

  • 輸入即可得到輸出,如:ifconfig
  • 輸入進行某環境,依賴再輸入,如:python
 View Code  View Code  View Code  View Code

更多猛擊這裡

六、shutil

高級的 文件、文件夾、壓縮包 處理模塊

shutil.copyfileobj(fsrc, fdst[, length])
將文件內容拷貝到另一個文件中,可以部分內容

 View Code

shutil.copyfile(src, dst)
拷貝文件

 View Code

shutil.copymode(src, dst)
僅拷貝許可權。內容、組、用戶均不變

 View Code

shutil.copystat(src, dst)
拷貝狀態的信息,包括:mode bits, atime, mtime, flags

 View Code

shutil.copy(src, dst)
拷貝文件和許可權

 View Code

shutil.copy2(src, dst)
拷貝文件和狀態信息

 View Code

shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
遞歸的去拷貝文件

例如:copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))

 View Code

shutil.rmtree(path[, ignore_errors[, onerror]])
遞歸的去刪除文件

 View Code

shutil.move(src, dst)
遞歸的去移動文件

 View Code

shutil.make_archive(base_name, format,...)

創建壓縮包並返迴文件路徑,例如:zip、tar

  • base_name: 壓縮包的文件名,也可以是壓縮包的路徑。只是文件名時,則保存至當前目錄,否則保存至指定路徑,
    如:www                        =>保存至當前路徑
    如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
  • format: 壓縮包種類,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要壓縮的文件夾路徑(預設當前目錄)
  • owner: 用戶,預設當前用戶
  • group: 組,預設當前組
  • logger: 用於記錄日誌,通常是logging.Logger對象
1 2 3 4 5 6 7 8 9 #將 /Users/wupeiqi/Downloads/test 下的文件打包放置當前程式目錄   import shutil ret = shutil.make_archive("wwwwwwwwww"'gztar', root_dir='/Users/wupeiqi/Downloads/test')     #將 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目錄 import shutil ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww"'gztar', root_dir='/Users/wupeiqi/Downloads/test')
 View Code

shutil 對壓縮包的處理是調用 ZipFile 和 TarFile 兩個模塊來進行的,詳細:

 zipfile 壓縮解壓  tarfile 壓縮解壓  ZipFile  TarFile 

七、ConfigParser

用於對特定的配置進行操作,當前模塊的名稱在 python 3.x 版本中變更為 configparser。

1 2 3 4 5 6 7 8 9 # 註釋1 ; 註釋2   [section1] k1 = v1 k2:v2   [section2] k1 = v1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import ConfigParser   config = ConfigParser.ConfigParser() config.read('i.cfg')   # ########## 讀 ########## #secs = config.sections() #print secs #options = config.options('group2') #print options   #item_list = config.items('group2') #print item_list   #val = config.get('group1','key') #val = config.getint('group1','key')   # ########## 改寫 ########## #sec = config.remove_section('group1') #config.write(open('i.cfg', "w"))   #sec = config.has_section('wupeiqi') #sec = config.add_section('wupeiqi') #config.write(open('i.cfg', "w"))     #config.set('group2','k1',11111) #config.write(open('i.cfg', "w"))   #config.remove_option('group2','age') #config.write(open('i.cfg', "w"))

八、logging

用於便捷記錄日誌且線程安全的模塊

1 2 3 4 5 6 7 8 9 10 11 12 13 14 import logging     logging.basicConfig(filename='log.log',                     format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',                     datefmt='%Y-%m-%d %H:%M:%S %p',                     level=10)   logging.debug('debug') logging.info('info') logging.warning('warning') logging.error('error') logging.critical('critical') logging.log(10,'log')

對於等級:

1 2 3 4 5 6 7 8 CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN = WARNING INFO = 20 DEBUG = 10 NOTSET = 0

只有大於當前日誌等級的操作才會被記錄。

對於格式,有如下屬性可是配置:

九、time

時間相關的操作,時間有三種表示方式:

  • 時間戳               1970年1月1日之後的秒,即:time.time()
  • 格式化的字元串    2014-11-11 11:11,    即:time.strftime('%Y-%m-%d')
  • 結構化時間          元組包含了:年、日、星期等... time.struct_time    即:time.localtime()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. Callable、Future、RunnableFuture、FutureTask的繼承關係 在多線程編程中,我們一般通過一個實現了Runnable介面的對象來創建一個線程,這個線程在內部會執行Runnable對象的run方法。如果說我們創建一個線程來完成某項工作,希望在完成以後該線程能夠返回...
  • 一、字典(dict) 1. 概述 字典是Python唯一的映射類型。 只能使用不可變的對象(比如字元串)來作為字典的鍵,但是可以把不可變或可變的對象作為字典的值。 鍵值對在字典中以這樣的方式標記:d = key1 : value1, key2 : value2 。註意它們的鍵/值...
  • 最近項目中用到瞭解析Execl表格的功能,在網上百度了一下自己寫了一個小Demo。由於項目中使用的是Execl2007,就是尾碼為.xlsx的,所以只研究瞭解析和創建Execl2007的文件,解析Execl2007和Execl2003有一定的區別,大家在解析的時候要註意。一下是Demo中用到的jar...
  • 一個java 知乎爬蟲程式,使用echart 做圖表展示
  • Swift中的閉包,就是Objective-C中的Block, 其實兩者是一個東西1.Closure變數的聲明 (1)Closure就是匿名函數,我們可以定義一個閉包變數,而這個閉包變數的類型就是我們上面介紹的“函數類型”。 定義一個閉包變數其實就是定義一個特定函數類型的變數,方式如下。 因為...
  • 歡迎關註我的社交賬號: 博客園地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/people/jia....
  • 傳統的線程互斥和同步通信是通過synchronized關鍵字和wait()、notify()方法來實現的。首先介紹下synchronized關鍵字。synchronized 關鍵字,它包括兩種用法:synchronized 方法和 synchronized 塊。1. synchronized 方法:...
  • 總結:通過開發日報告提交系統,掌握了基本的phalcon框架原理和PHP語言。也瞭解了一些linux常用指令,收穫頗豐。下麵對項目中所遇到的問題進行總結:1.前臺數據傳往後臺所用的三種方法:(1)表單提交form,$this->request->getPost(‘name’);(2)超鏈接, $_G...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...