之前用python跑過深度學習的**,用過一段時間的jupiter和tensorflow;最近在ubuntu下搭建起了vscode + anaconda的python開發環境,感覺很好用,尤其是用來做演算法驗證簡直舒服得一匹。遂單獨開一貼,記錄一下python學習與使用中的一些好玩的點。
python是弱引數型別語言,這符合當前高階變成語言發展的趨勢。我是從c++新標準中提倡使用的auto開始了解這一趨勢的,後來在《物件導向程式設計》一課中,寫jsp的時候,用到了var,也是根據初始化引數型別推測變數的型別。如今,python將這一趨勢發揚光大,使得語言變得及其好用,簡直舒服極了!!!
在python的函式定義中,延續了這一特點,使得其函式的定義方式天然就就具有過載性質,顯示出了無與倫比的優美與簡潔,舉例如下。
from shapely.geometry importpoint
from shapely.geometry import
linestring
from shapely.geometry import
polygon
from shapely.geometry import
multipoint
#不指定引數型別,實際上相當於無限過載
defoutputallattributes(mem):
print('
geom_type
',mem.geom_type)
print('
area
',mem.area)
print('
bounds
',mem.bounds)
print('
length
',mem.length)
print('
distance
',mem.distance)
print('
representative_point
',mem.representative_point)
print('\n'
)def
test():
# point/linestring/polygon型別的形參通過同乙個函式呼叫,完美體現物件導向中「過載」的思想
p =point(0,0)
outputallattributes(p)
line = linestring([(0,0), (0,1), (1,1),(1,0)])
outputallattributes(line)
poly = polygon([(0,0), (1,1), (1,2)])
outputallattributes(poly)
if__name__ == '
__main__':
test()
看了一貼,鏈結如下。
結論:python不允許程式設計師選擇採用傳值還是傳引用。python引數傳遞採用的肯定是「傳物件引用」的方式。這種方式相當於傳值和傳引用的一種綜合。
如果函式收到的是乙個可變物件(number,string, tuple)的引用,就能修改物件的原始值--相當於通過「傳引用」來傳遞物件。
如果函式收到的是乙個不可變物件(list,dictionary,set)的引用,就不能直接修改原始物件--相當於通過「傳值'來傳遞物件。
# 介紹了setuptools的用法
# 介紹了將朋友python程式打包成linux/windows可執行檔案的操作方法
conda install pyqt #神奇地解決了
**既可以匯入,又可以執行
(2)in: 包含和迭代
if x in items: # 包含
for x in items: # 迭代
(3)zip組合鍵和值來建立字典
keys = ['1001
', '
1002
', '
1003']
values = ['
駱昊', '
王大錘', '
白元芳'
]d =dict(zip(keys, values))
print(d)
4 6Python多版本存在問題
返回總目錄 更新pip,也就是重新安裝pip,重新連線pip與對應python的關係。至於 m 什麼意思?可參考 由3.6版本的我沒有截圖,只好拿3.4的演示 如果你安裝的python直譯器裡的pip是最新版本,而無法更新,可以先使用 pythonx.x m pip install pip 18.0...
Python學習筆記(46) join 函式
作用 將序列中的元素以指定的字元連線生成乙個新的字串.語法 a join b 引數說明 a 分隔符。可以為空 b 要連線的元素序列 字串 元組 字典 返回值 返回乙個以分隔符a連線各個元素後生成的字串 簡單說來就是 以a作為分隔符,將b所有的元素合併成乙個新的字串 demo usr bin pyth...
python學習筆記 46 TCP程式設計
socket是網路程式設計的乙個抽象概念。通常我們用乙個socket表示 開啟了乙個網路鏈結 而開啟乙個socket需要知道目標計算機的ip位址和埠號,再指定協議型別即可。大多數連線都是可靠的tcp連線。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫伺服器。所以,我們要建立乙個基於tcp...