初識python

1.Hello World程序

      長期以來,編程界都有一個聖神的儀式,如今我爲本身加冕,那就是在屏幕上顯示消息「hello world!」程序,學習python的第一次就是這樣一行代碼。java

>>> print("hello world!")
hello world!

在編輯器中運行hello_world.py;python

#!/bin/python

print("hello world!")
[root@localhost /]# python3 /dj/hello_world.py 
hello world!

2.Python簡介

  python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。  c++

  Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。編程

目前Python主要應用領域:小程序

  • 雲計算: 雲計算最火的語言, 典型應用OpenStack
  • WEB開發: 衆多優秀的WEB框架,衆多大型網站均爲Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系統運維: 運維人員必備語言
  • 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,並且重要性逐年提升。緣由:做爲動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤爲擅長策略回測
  • 圖形GUI: PyQT, WxPython,TkInter

Python在一些公司的應用: 網絡

 

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發
  • CIA: 美國中情局網站就是用Python開發的
  • NASA: 美國航天局(NASA)大量使用Python進行數據分析和運算
  • YouTube:世界上最大的視頻網站YouTube就是用Python開發的
  • Dropbox:美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
  • Instagram:美國最大的圖片分享社交網站,天天超過3千萬張照片被分享,所有用python開發
  • Facebook:大量的基礎庫均經過Python實現的
  • Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
  • 豆瓣: 公司幾乎全部的業務均是經過Python開發的
  • 知乎: 國內最大的問答社區,經過Python開發(國外Quora)
  • 春雨醫生:國內知名的在線醫療網站是用Python開發的
  • 除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。 

Python與其餘語言相比較優點有哪些?框架

C 和 Python、Java、C#等運維

    C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做編輯器

其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行函數

Python和C Python這門語言是由C開發而來

  對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
  對於速度:Python的運行速度相較與C,絕逼是慢了

Python 和 Java、C#等

  對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
  對於速度:Python在速度上可能稍顯遜色

因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。

 

Python的種類

    • Cpython
          Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
    • Jyhton
          Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
    • IronPython
          Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
    • PyPy(特殊)
          Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
    • RubyPython、Brython ...

 3.認識python中的變量與簡單的數據類型

     變量的命名規則:1.變量名只能包含字母數字下劃線,且不能以數字開頭;

                                2.變量名中不能包含空格,通常咱們使用下劃線來分隔其中的單詞;

                                3.切記不可將python中的函數名與關鍵字用做變量名(python保留用於特殊用途的單詞);

                                4.變量名應聽從簡短可是具備描述性;

                                5.慎用小寫l與大寫O容易被誤覺得是1和0。

     變量的使用方法:

message = "hello python world!"
_age = 18
print(message)
print(_age)

    注:每一個變量都存儲一個值(與變量相關聯的信息)。

    字符串:字符串就是一系列字符。在python中,用引號括起來的都是字符串,其中的引號能夠是單引號也能夠是雙引號。

print("this is a string")
print('this is also a string')

    字符串的拼接:

    咱們可使用加號來

print('hello\t'+'world')

    在python中,咱們可使用方法對數據執行操做。註釋用井號標識。

print('\nhello world\r'.strip())#去除空白
print('hello world'.title())#首字母大寫
print('hello world'.upper())#所有大寫
print('hello world'.lower())#所有小寫

4.在python中數據類型十分重要,錯誤的數據類型可能致使程序運行錯誤

    以下程序:

#coding=utf-8
age = 24
i = 1
while i <= 3:
    guss =  raw_input("you guss:") 
    if guss > age:
        print("so big")
    elif guss < age:
        print("so small")
    else:
        print("you are wright")
        break
    i = i+1
    if i == 4:
        ask = raw_input("are you ok?y/n")
        if ask == 'y':
            i = 1
        else:
            exit()
    continue
else:
     exit()

    這是一個猜年齡的小程序,這裏存在一個問題,咱們輸入的guss其實是一個字符串類型,咱們把它與整型進行比較,這從邏輯上是錯誤的,python解釋器從語法上判斷是沒錯的,可是這確實是一個邏輯錯誤。因此咱們須要對guss類型進行改正。

guss = int( raw_input("you guss:") )#將guss改成整型

 5.pyc是什麼

  Python是一門解釋型語言?

 

  我初學Python時,聽到的關於Python的第一句話就是,Python是一門解釋性語言,我就這樣一直相信下去,直到發現了*.pyc文件的存在。若是是解釋型語言,那麼生成的*.pyc文件是什麼呢?c應該是compiled的縮寫纔對啊!

  爲了防止其餘學習Python的人也被這句話誤解,那麼咱們就在文中來澄清下這個問題,而且把一些基礎概念給理清。

  

   解釋型語言和編譯型語言 

  計算機是不可以識別高級語言的,因此當咱們運行一個高級語言程序的時候,就須要一個「翻譯機」來從事把高級語言轉變成計算機能讀懂的機器語言的過程。這個過程分紅兩類,第一種是編譯,第二種是解釋。

  編譯型語言在程序執行以前,先會經過編譯器對程序執行一個編譯的過程,把程序轉變成機器語言。運行時就不須要翻譯,而直接執行就能夠了。最典型的例子就是C語言。

  解釋型語言就沒有這個編譯的過程,而是在程序運行的時候,經過解釋器對程序逐行做出解釋,而後直接運行,最典型的例子是Ruby。

  經過以上的例子,咱們能夠來總結一下解釋型語言和編譯型語言的優缺點,由於編譯型語言在程序運行以前就已經對程序作出了「翻譯」,因此在運行時就少掉了「翻譯」的過程,因此效率比較高。可是咱們也不能一律而論,一些解釋型語言也能夠經過解釋器的優化來在對程序作出翻譯時對整個程序作出優化,從而在效率上超過編譯型語言。

  此外,隨着Java等基於虛擬機的語言的興起,咱們又不能把語言純粹地分紅解釋型和編譯型這兩種。

  用Java來舉例,Java首先是經過編譯器編譯成字節碼文件,而後在運行時經過解釋器給解釋成機器文件。因此咱們說Java是一種先編譯後解釋的語言。

 

   Python究竟是什麼 

  其實Python和Java/C#同樣,也是一門基於虛擬機的語言,咱們先來從表面上簡單地瞭解一下Python程序的運行過程吧。

  當咱們在命令行中輸入python hello.py時,實際上是激活了Python的「解釋器」,告訴「解釋器」:你要開始工做了。但是在「解釋」以前,其實執行的第一項工做和Java同樣,是編譯。

  熟悉Java的同窗能夠想一下咱們在命令行中如何執行一個Java的程序:

  javac hello.java

  java hello

 

 

  只是咱們在用Eclipse之類的IDE時,將這兩部給融合成了一部而已。其實Python也同樣,當咱們執行python hello.py時,他也同樣執行了這麼一個過程,因此咱們應該這樣來描述Python,Python是一門先編譯後解釋的語言。

   簡述Python的運行過程

  在說這個問題以前,咱們先來講兩個概念,PyCodeObject和pyc文件。

  咱們在硬盤上看到的pyc天然沒必要多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。咱們先簡單知道就能夠了,繼續向下看。

  當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。

  當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,若是找到,則直接載入,不然就重複上面的過程。

  因此咱們應該這樣來定位PyCodeObject和pyc文件,咱們說pyc文件實際上是PyCodeObject的一種持久化保存方式。

   pyc文件在py2和py3的區別

  python 字節碼文件
  python3 會建立一個__pycache__目錄,存放
  python2 在本地生成一個pyc文件

  手動執行不能生成pyc文件,只有該py文件被其餘py文件調用時,纔會生成並且執行前會比較py和pyc 文件的時間戳,若是不同則從新編譯。

  python的源碼進行編譯成pyc形式的字節碼,而後這些字節碼在python虛擬機中進行一個大循環,其本質就是迭代整個pyc文件的字節碼,因此python的虛擬機實際上作的就是python解釋器的事情。

  注:這裏必需要先作聲明,python由於其本質爲動態語言,這意味着他很難直接被編譯成機器碼。

  附加:python安裝

  1.安裝包下載

  2.安裝:默認安裝路徑:C:\python27

  3.配置環境變量:【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】

  如:原來的值;C:\python27,切記前面有分號

相關文章
相關標籤/搜索