學python lesson3

2020-08-10 09:59:52

準備發佈:

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')

想要元素不可變,用元組。