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
操作完後會看到文件夾中多了build和dist文件夾及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, 有興趣的同學歡迎一起交流學習。