準備發佈:
1.首先爲模組建立一個資料夾;
建立好之後,將nester.py模組檔案複製到這個資料夾中。簡單起見,資料夾命名爲nester;
2.在建立好的資料夾中建立一個名爲setup.py的檔案;
這個檔案包含有關發佈的元數據。編輯這個檔案,增加下面 下麪的程式碼:
from distutils.core import setup # 從python發佈工具匯入「setup」函數
setup(
# setup函數的參數名
name = 'nester',
version = '1.0.0',
py_modules = ['nester'] # 將模組的元數據與setup函數的參數關聯
author = 'abc' # 自定義模組使用的值
author_email = '[email protected]', # 自定義模組使用的值
url = 'http://wwwabc.net', # 自定義模組使用的值
description = 'A test for ', # 自定義模組使用的值
)
構建發佈:
3.構建一個發佈檔案;
發佈工具包含有構建一個發佈所需的所有功能。在nester資料夾中開啓一個終端視窗,鍵入一行命令:python setup.py sdist
4.將發佈安裝到你的Python本地副本中;
仍然在終端視窗,鍵入命令:sudo python setup.py install
發佈速覽
利用Python的發佈工具,你的模組已經轉換爲一個發佈,並且安裝在你的Python本地副本上。
開始時只有一個函數,這個函數輸入到一個名爲nester.py的檔案中,這就建立了一個模組。然後建立一個名爲nester的資料夾存放這個模組。通過在這個資料夾中增加一個名爲setup.py的檔案,從而能夠構建和安裝你的發佈,這會生成一組額外的檔案,並在nester資料夾中出現兩個新的資料夾。這些檔案和資料夾都是由發佈工具爲你建立的。
python是動態語言,而靜態語言是?
靜態語言(強型別語言)
靜態語言是在編譯時變數的數據型別即可確定的語言,多數靜態型別語言要求在使用變數之前必須宣告數據型別。例如:C++、Java、Delphi、C#等。
動態語言(弱型別語言)
動態語言是在執行時確定數據型別的語言。變數使用之前不需要型別宣告,通常變數的型別是被賦值的那個值的型別。例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
.pyc檔案,位元組碼。
pyc是一種二進制檔案,是由py檔案經過編譯後,生成的檔案,是一種byte code,py檔案變成pyc檔案後,載入的速度有所提高,而且pyc是一種跨平臺的位元組碼,是由Python的虛擬機器來執行的,這個是類似於Java或者.NET的虛擬機器的概念。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc檔案是不同的,2.5編譯的pyc檔案,2.4版本的python是無法執行的。
匯入模組並使用
既然已經構建了模組,並作爲發佈打包和安裝,下面 下麪來看使用時還需要什麼。要使用一個模組,只需要把它匯入到你的程式中,或者匯入到互動式shell:
import nester # import是python關鍵字,nester是模組名
Python的模組實現名稱空間
Python中的所有程式碼都與一個名稱空間關聯。
主Python程式中的程式碼與一個名爲__main__的名稱空間關聯。將程式碼放在其單獨的模組中時,Python會自動建立一個與模組同名的名稱空間。所有,你的模組中的程式碼會與一個名爲nester的名稱空間關聯。
假設你目前正在某個名稱空間,如果想指示另外一個模組名稱空間中的某個函數,就需要用該模組的名稱空間對這個函數的呼叫作出限制。
所有,不能簡單的通過print_lol(cast)呼叫這個函數,而需要限定爲nester.print_lol(cast),這樣一來,Python直譯器就會知道去那裏找這個函數。名稱空間限定的格式如下:首先是模組名,然後是一個點,再後面是函數名,如nester.print_lol(cast)。
採用from nester import 函數名,可以直接參照函數,但是不建議這樣做,因爲可能本名稱空間存在同名函數,會覆蓋本名稱空間的屬性。
Pypi社羣上傳?
Python包索引(PyPI)是Python程式語言的軟體儲存庫。
PyPI(Python Package Index)是python官方的第三方庫的倉庫,所有人都可以下載第三方庫或上傳自己開發的庫到PyPI。PyPI推薦使用pip包管理器來下載第三方庫。
pip可正常工作在Windows、Mac OS、Unix/Linux等操作系統上,但是需要至少2.6+和3.2+的CPython或PyPy的支援。python 2.7.9 和3.4以後的版本已經內建累pip程式,所以不需要安裝。
s = "abc漢字"
len(s) # 5
type(b"abc") # bytes
type(u'abc') # str
str(2.2) #str
"學習{0},還要學習{1}".format('C語言','Python')
s = "a,b,c"
l = s.split(',') # l = ['a','b','c']
ll = ','.join(l) # ll = 'a,b,c'
s.find('a') #0
s.find('b') #2
l.sort.__doc__ # 'L.sort(key=None,reverse=False)
x = ['abc','a','bc','abcd']
x.sort(key=len) # x = ['a','bc','abc','abcd']
num = '1', # num = ('1',)
num = ('1',) # num = ('1',)
type(num) # tuple
num = ('1') # num = '1'
type(num) # str
num = '1','2','3' # num = ('1','2','3')
num = ('1','2','3') # num = ('1','2','3')
a,b,c = num # a = '1', b = '2', c = '3'
l = list(num) # l = ['1','2','3'], num = ('1','2','3')
ll = tuple(l) # ll = ('1','2','3')
想要元素不可變,用元組。