Python入門-函數的使用到程序的發佈安裝

Python入門-函數的使用到Python的發佈安裝

本文主要適合有一定編程經驗,至少掌握一門編程語言的人查看。

文中例子大多都是簡單到認識英文單詞就能看懂的水平,主要講的是Python的整體用法和結構,不會設計高深層次,對Python入門有一定幫助。

Python和Java對比,會看到Python設計思想在於簡潔、實用、強大,每一個程序員都值得學習和掌握。

Python函數的定義及實用

Python中的函數是一個命名的代碼塊,和Java一樣,可以帶0個或多個參數。主要形式如

def $函數名($參數):
    ...
    函數體
    ...

可以看出Python通過縮進語句代替了java中的{},將代碼歸組到一起。
如Python中的基本語句:

for item in list:
    ...
    do something
    ...

while true:
     ...
     do something
     ...

if true:
     ...
else:
     ...

寫一個通過參數的類型來打印不同的結果例子:

###如果是一個列表類型,則循環打印,否則打印當前
def print_test(is_list):
     if isinstance(is_list, list):
           for t in is_list:
                 print(t)
                 print_test("not list")
     else:
           print(the_list)

Python中的列表可以理解衛java中的列表,元組看成java中的數組(用小括號擴住),貌似比數據更強大和簡潔一點,我們可以理解爲“打了雞血”的數據,可以隨便伸縮,相關方法有:

len(list)
list.insert(1,‘’)
list.remove(”)
list.append(”)

上述實例中,用到遞歸調用,更具傳入參數類型類遞歸調用自己。可以看到,方法名字前就加了def修飾,參數也是直接隨便寫。Python設計哲學把任何事物都看成了對象或集合,類型並不關心內部到底是什麼類型,變量標識符根本不需要類型,java中則聲明變量時必須要表明類型。可以把Python看成高層集合,對於列表來說,裏面可以存儲不同類型的數值,只要你給出一個名字,其他的由Python搞定

例子中isinstance 函數爲Python內置函數,和java中的 instanceof 類似。

函數的調用,保存method.py, F5運行後,直接在shell和idle中鍵入:

### 句未加‘;’ 和寫多行句子
import method.py
print_test(["item1","item2","item3"])

Python程序的發佈和安裝

模塊化Python代碼,像java一樣,可以構建複雜而強大的系統。把Python代碼模塊化爲類庫,方便管理,業方便後續的代碼重用和架構。

import sys; sys.path 產看python在計算機上存儲位置。

把上例函數封裝爲一個模塊,然後發佈安裝爲例:

  • 爲剛寫的方法文件建立一個文件夾:method
    把method.py 放到裏面
  • 新建立一個文件 “setup.py”
    文件中爲發佈的元數據,編輯如下:
# 元數據
from distutils.core import setup

setup(
       name       = 'CankingApp',
       version    = '1.0',
       py_modules = ['method'],
       author     = 'CankingApp',
       author_email = '[email protected]',
       url        = 'www.baidu.com',
       descripthin= 'test',      
 )
  • 構建發佈文件
    打開終端鍵入命令:

    $python3 setup.py sdist
    running sdist
    running check
    warning: check: missing required meta-data: url
    warning: sdist: manifest template ‘MANIFEST.in’ does not exist (using default file list)
    warning: sdist: standard file not found: should have one of README, README.txt
    writing manifest file ‘MANIFEST’
    creating CankingApp-1.0
    making hard links in CankingApp-1.0…
    hard linking hello.py -> CankingApp-1.0
    hard linking setup.py -> CankingApp-1.0
    Creating tar archive
    removing ‘CankingApp-1.0’ (and everything under it)

  • 按裝到Python本地副本中
    終端中命令:

    $ sudo setup.py install
    /usr/lib/python3.4/distutils/dist.py:260: UserWarning: Unknown distribution option: ‘descripthin’
    warnings.warn(msg)
    running install
    running build
    running build_py
    creating build
    creating build/lib
    copying method.py -> build/lib
    running install_lib
    copying build/lib/method.py -> /usr/local/lib/python3.4/dist-packages
    byte-compiling /usr/local/lib/python3.4/dist-packages/method.py to method.cpython-34.pyc
    running install_egg_info

操作完後會看到文件夾中多了builddist文件夾及MANIFEST文件。

  • 構建成功,測試代碼

直接在idle中測試:

import method
method.print_test(["item1","item2","item3"])

測試函數調用需要加上method,是python中命名空間規定。
Python中的所有代碼都與一個命名空間關聯,主程序中的代碼與”main“命名空間關聯。我們單獨的代碼模塊自然自動創建一個與代碼塊同名的命名空間。所以需要帶上method.print_test。

from method import print_test
print_test()
//也可以這樣用,但是如果此命名空間有同名時會衝突失效,個人認爲還是第一種比較好。

成功打印出item則標識安裝成功。

文中實例源代碼已上傳GitHub, 有興趣的同學歡迎一起交流學習。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章