python實戰一期:第一天 原

1. 爲什麼學習python

1.1 爲什麼要學Python?

    Python第一是個非常牛B的腳本語言,能滿足絕大部分自動化運維的需求,又能做後端C/S架構,又能用WEB框架快速開發出高大上的Web界面,只有當你自已有能力做出一套運維自動化系統的時候,你的價值才體現出來,你纔有資格跟老闆談重視,否則,還是老老實實回去裝機器吧。

2. 運維開發爲什麼要用Python?

    Good question, 爲什麼不用PHP,JAVA, C++,RUBY,這裏我只能說,見人見智, 如果你碰巧已經掌握了除Python之外的其它語言,那你愛用啥用啥,如果你是一個連SHELL都還沒寫明白的新手,想學個語言的話,請用Python,爲什麼呢?

    首先,PHP是跟Python比的最多的,其實他倆根本就不用比,爲什麼呢?兩個語言適用性不同,PHP主要適用於Web開發,可以迅速的做出中小型,輕量級的WEB網站,但後端嘛,基本還是要藉助其它語言,藉助什麼語言呢?Shell?Python?呵呵。而Python呢,是個綜合語言,前後端都可以,單拿出來比Web,也一點不比PHP差,但爲什麼Web方向上PHP比Python要火?

    先入爲主嘛,PHP 90年代誕生就是做Web的,Python2000年後纔出現Web框架,但論優秀程度上,Python的Web框架基本上出其無左,至少是跟PHP比。

    那JAVA呢?好吧,一個臃腫、中庸、豪無新意的語言,還是老老實實用它來做ERP吧,搞個運維小平臺,用JAVA真心沒啥必要,在我看來,JAVA就是穩定的中年男人,穩定、成熟、禿頂,而Python代表的就是青春,簡潔、快、乾淨、帥!

    C++/C,這個嘛,我只能說,如果你會了Python,又會C的話,那你會更吃香,但是不會C的話,其實也無大礙,基本上做運維的人,搞搞C就是爲了來裝B的,因爲多數情況下你都到不了看系統底層源碼的程度, 不過如果你學好了Python之後,還是建議你學習下C++,畢竟相比Python這個動態語言來講,C++的效率還是高很多的,但對新手來講,不建議做爲第一門語言開始學習,爲什麼呢?打擊自信心…呵呵,你懂的

    Ruby,小日本開發的,還不錯,風格跟Python有點像,因爲Ruby onrails出了名,國外用的比較多,國內,放心吧,沒戲,Python已經把它的想象空間都佔死了。

    當然還有新的語言GO,有些搞運維的看見做開發的人員搞GO,也想湊熱鬧,覺得是未來,我想說,別瞎沒事跟風,GO再成功,也不會變成運維開發語言。

    有些人覺得Python效率底,說他不能支持多線程,OH,好吧,這個還有點說對了,但是我想問,看我這篇文章的有幾個做過搜索引擎開發?有幾個做個上億PV的併發網站開發?

    有幾個看過LINUX內核源碼?如果沒有,請別瞎跟着傳了,知道PYTHON爲什麼不支持多線程嗎?這句話問錯了,其實Python支持多線程,只是不支持多CPU多線程,也就是一個程序spawn出來的多線程只能佔用一個CPU,但是爲什麼呢?噢,因爲GIL,GIL是什麼東東,請自行補腦。。。但是你非得用多線程嗎?你可以用多進程呀,再牛B你還可以用協程呀,這些Python支持的都很好呀,如果你的程序邏輯不好,搞個多線程也快不起來。

    我認識一個博士講過一句話,我覺得不錯,他說,程序效率高低,80%都是寫程序的人決定了,語言本身就佔20%,所以下次有人再說PYTHON效率低的時候,請讓他先回去自己檢查下自己的程序多了多少無用的邏輯、循環等等。這個博士自己用Python寫的WEB程序,一臺服務器每天能處理上億請求,一秒併發近兩萬,什麼WEB框架這麼牛B? 別問它是誰,它叫tornado。

 

2. python安裝

2.1 linux默認自帶python

  • 可以rpm -q python查看是否有安裝
  • [root@localhost src]# rpm -q python
  • python-2.7.5-58.el7.x86_64

2.2 查看python版本

[root@localhost src]# python -V

Python 2.7.5

2.3 python使用以及退出

[root@localhost src]# python

Python 2.7.5 (default, Aug 4 2017, 00:39:18)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> print 'hello python'

hello python

exit() 或則ctrl d 退出python

2.4 安裝使用ipython

pip 安裝軟件從此鏈接搜索https://pypi.python.org/pypi

ipython手動下載鏈接:https://pypi.python.org/pypi/ipython

linux下直接使用python進入解釋器時沒有命令補全功能,不太方便,可以安裝使用ipython

yum install python-pip 安裝pip命令

pip install ipython 安裝ipython

pip install ipython==5.8.0 安裝指定版本ipython

pip list 查看已安裝的模塊

pip install --upgrade pip 升級pip

輸入ipython後直接回車進入ipyhon解釋器

exit 退出ipython;

2.5 通過源碼包安裝ipython

解壓包後,直接運行 python setup.py install

測試後發現需要安裝好多相關模塊:

pip install traitlets

pip install pygments

pip install pexpect

pip install pathlib2

pip install pickleshare

pip install prompt-toolkit==1.0.15

pip install simplegeneric

2.6 擴展: 

ipython的安裝問題 

http://www.jianshu.com/p/8779eac7f313

如果報錯_scandir.c:14:20: 致命錯誤:Python.h:沒有那個文件或目錄,#include <Python.h>,安裝python開發工具yum install python-devel

3. python文件類型

3.1 使用方式:

  • 解釋器交互方式
    • python shell
    • ipython
  • 建立程序文件
    • 文件執行

3.2 python文件類型

  • 源代碼
    • python源代碼文件以“.py”爲擴展名,由python程序解釋,不需要編譯。
    • vim 1.py
    • 第一行#! /usr/bin/python註釋;表示以python解釋此文件;
    • 執行用python 1.py
    • 也可以給1.py加上x權限,執行時用./1.py

  • 字節代碼
    • python源碼文件經編譯後生成的擴展名爲“pyc”的文件
    • 方法一:
      • python -m py_compile 1.py
    • 方法二編譯方法:
      • import py_compile
      • py_compile.compile
    • .pyc"文件格式是二進制,不能直接查看
    • file 1.pyc 查看文件類型
    • 把1.py文件編譯成1.pyc
      • vim 2.py
#! /usr/bin/python
import py_compile
py_compile.compile('/python/1.py')

 

  • 執行python 2.py
    • 會生成一個1.pyc
  • 優化代碼
    • 經過優化的源碼文件,擴展名爲“pyo“
    • 和pyc類似,比pyc更優化些。
    • python -O -m py_compile 1.py
      • -O 表示優化
      • -m 表示模塊
      • 1.py是源碼文件
    • pyc 和 pyo文件都是二進制文件,經過編譯後脫離源碼都可以用python執行;

4. python變量

4.1 變量

  • 變量是計算機內存中的一塊區域,變量可以存儲規定範圍內的值,而且值可以改變。
  • Python下變量是對一個數據的引用

4.1.1 變量的命名

  • 變量名由字母、數字、下劃線組成。
  • 變量不能以數字開頭
  • 不可以使用關鍵字
  • a a1 _a

4.1.2 變量的賦值

  • 是變量聲明和定義的過程

a = 1 給變量a賦值1

id(a) id()查看變量在內存中的位置

4.2 運算符與表達式

4.2.1 Python運算符包括

1. 賦值運算符

  • = x = 2 y = 'ab'
  • += x += 2 表示x= x+2
  • -= x -= 3 表示x= x-3
  • *= x *= 2 表示x= x*2
  • /= x /= 2 表示x= x除以2(不加浮點數時只取整數部分)
  • %= x %= 3 表示x=x除以3取餘

2. 算術運算符

  • + 加
  • - 減
  • * 乘
  • / 除、不加浮點數時取的是整
  • // 除、只取整
  • % 除、取餘
  • ** 乘方

3. 關係運算符

  • > 大於
  • < 小於
  • >= 大於等於
  • <= 小於等於
  • == 等於
  • != 不等於
  • 返回的都是布爾值 true 或 false

4. 邏輯運算符

  • and邏輯與:True and False 兩個全對才true
  • or邏輯或: False or True 兩個中任意一個對就true
  • not邏輯非: not Ture 取反

注:越往下優先級越高;同行越往右優先級越高。

4.2.2 表達式

表達式是將不同的數據(包括變量、函數)用運算符號按一定的規則連接起來的一種式子。

4.3 練習

4.3.1 input和raw_input區別

  • input更適合數字,輸入字母加上引號表示字符串;
  • raw_input可以直接輸入數字或字母,輸出都是字符串;

4.3.2 寫一個四則運算器

vim num.py 編輯以下代碼:

#! /usr/bin/python

num1 = input("Please input a number: ")

num2 = input("Please input a number: ")

print "%s + %s = %s" % (num1, num2, num1+num2)

print "%s - %s = %s" % (num1, num2, num1-num2)

print "%s * %s = %s" % (num1, num2, num1*num2)

print "%s / %s = %s" % (num1, num2, num1/num2)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章