python系統介紹

大綱:html

  • python發展史
  • 變量
  • 字符編碼
  • 用戶交互
  • if else
  • for while循環
pycharm安裝
pycharm破解
金角大王的博客,在這個文章裏面:
  • 編譯與解釋的區別:
假如你打算閱讀一本外文書,而你不知道這門外語,那麼你能夠找一名翻譯,給他足夠的時間讓他從頭至尾把整本書翻譯好,而後把書的母語版交給你閱讀;或者,你也馬上讓這名翻譯輔助你閱讀,讓他一句一句給你翻譯,若是你想往回看某個章節,他也得從新給你翻譯。
兩種方式,前者就至關於咱們剛纔所說的編譯型:一次把全部的代碼轉換成機器語言,而後寫成可執行文件;然後者就至關於咱們要說的解釋型:在程序運行的前一刻,還只有源程序而沒有可執行程序;而程序每執行到源程序的某一條指令,則會有一個稱之爲解釋程序的外殼程序將源代碼轉換成二進制代碼以供執行,總言之,就是不斷地解釋、執行、解釋、執行……因此,解釋型程序是離不開解釋程序的。像早期的BASIC就是一門經典的解釋型語言,要執行BASIC程序,就得進入BASIC環境,而後才能加載程序源文件、運行。解釋型程序中,因爲程序老是以源代碼的形式出現,所以只要有相應的解釋器,移植幾乎不成問題
編譯型與解釋型,二者各有利弊。前者因爲程序執行速度快,同等條件下對系統要求較低,所以像開發操做系統、大型應用程序、數據庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)、VB等基本均可視爲編譯語言,而一些網頁腳本、服務器腳本及輔助開發接口這樣的對速度要求不高、對不一樣系統平臺間的兼容性有必定要求的程序則一般使用解釋性語言,
Java首先是經過編譯器編譯成字節碼文件(預編譯),而後在運行時經過解釋器給解釋成機器文件。因此咱們說Java是一種先編譯後解釋的混合語言。
簡述Python的運行過程
在說這個問題以前,咱們先來講兩個概念,PyCodeObject和pyc文件。
咱們在硬盤上看到的pyc天然沒必要多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。咱們先簡單知道就能夠了,繼續向下看。
當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。
當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,若是找到,則直接載入,不然就重複上面的過程。
因此咱們應該這樣來定位PyCodeObject和pyc文件,咱們說pyc文件實際上是PyCodeObject的一種持久化保存方式。
  • 動態語言和靜態語言
一般咱們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。
(1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。
(2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。
  • 強類型和弱類型語言

強類型語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。python

強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。
經過上面這些介紹,咱們能夠得出,python是一門動態解釋性的強類型定義語言
  • Python的優缺點
先看優勢
Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工 做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
再看缺點:
 速度慢,Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些,所以這也是不少所謂的大牛不屑於使用Python的主要緣由,但其實這裏所指的運行速度慢在大多數狀況下用戶是沒法直接感知到的,必須藉助測試工具才能體現出來,好比你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是很是誇張了,可是你是沒法直接經過肉眼感知的,由於一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數狀況下Python已經徹底能夠知足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種狀況下,固然仍是建議你用C去實現的。
代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。關於這個問題的折衷解決方法,咱們在之後線程和進程章節裏再進行詳細探討。
  • 變量定義的規則:
變量名只能是 字母、數字或下劃線的任意組合
變量名的第一個字符不能是數字
如下關鍵字不能聲明爲變量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
外層變量,能夠被內層代碼使用
內層變量,不該被外層代碼使用
  •  字符編碼
問題二 ASCII在平常中的應用,須要掌握的程度

升級版本:Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼
終極版本:UTF-8,是對Unicode編碼的壓縮和優化
因此應該告訴python解釋器,用什麼編碼來執行源代碼,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-  
輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法
>>> import getpass
>>> pwd=getpass.getpass('請輸入密碼:')
請輸入密碼:
>>> print(pwd)
1234556
問題3:模塊初始
#輸出
$ python test.py helo world
這裏的$是什麼鬼
本身寫的tab.py模塊只能在當前目錄下導入,若是想在系統的何何一個地方都使用怎麼辦呢? 此時你就要把這個tab.py放到python全局環境變量目錄裏啦
用  print(sys.path) 能夠查看python環境變量列表
字符串經常使用功能:
  • 移除空白
  • 分割
  • 長度
  • 索引
  • 切片
列表經常使用操做:
  • 索引
  • 切片
  • 追加
  • 刪除
  • 長度
  • 切片
  • 循環
  • 包含
字典經常使用操做:
  • 索引
  • 新增
  • 刪除
  • 鍵、值、鍵值對
  • 循環
  • 長度
"""
for循環 與 while循環的一區別
for i in 序列: 循環體中不須要對變量i +1
while i<N:循環體中須要代碼進行loop次數的累加 i=i+1
"""
i=0
yage=23
while i<3:
   
    temp=int(input('猜猜個人年齡:'))
    if temp==29:
        print('恭喜你,猜對啦')
        break
    elif temp<29:
        print('你猜小啦')
    else:
        print('猜大啦啦big!')
    if i==2:
        print('對不起,3次機會用完啦')
        
    i=i+1
continue是結束本次循環跳到下一次循環(所在的循環體並無結束);
break是結束所在循環體。
算數運算:

比較運算:算法

賦值運算:數據庫

邏輯運算:編程

成員運算:安全

身份運算:服務器

位運算:多線程

a = 60            # 60 = 0011 1100
b = 13            # 13 = 0000 1101
c = 0

運算符優先級:ide

相關文章
相關標籤/搜索