Python基礎定義

来源:https://www.cnblogs.com/onestudy/archive/2018/03/03/8502641.html
-Advertisement-
Play Games

CPython: 安裝Python後,官方提供了一個Python解釋器CPython,是通過C語言寫的,在命令行下運行Python就是啟動Cpython解釋器,運用最廣泛的一個。 Ipython: 基於Cpython之上的一個解釋器,跟Cpython差不多,只不過在互動式上有所增強; Jpython ...


  1. Python的解釋器種類: 
  • CPython:

    安裝Python後,官方提供了一個Python解釋器CPython,是通過C語言寫的,在命令行下運行Python就是啟動Cpython解釋器,運用最廣泛的一個。

  • Ipython:

         基於Cpython之上的一個解釋器,跟Cpython差不多,只不過在互動式上有所增強;

  • Jpython:

    用Java語言寫的一個python解釋器,可以直接將python編譯成Java位元組碼運行;

  • PyPy:

    它的目標是使python代碼執行速度快,使用JIT技術實現的,對python動態編譯,

  • ironPython

    運行在微軟的.net平臺上

  2.Pythong變數:

      Python 中的變數不需要聲明。每個變數在使用前都必須賦值,變數賦值以後該變數才會被創建。

    Python中的,全部大寫的變數名代表常量

  3.python數據類型:  

  • 布爾值:   (ture|false)
  • 數字:

    整型(int):

       在32位機器上,整數的位數為32位,即:-2**31~~2**31-1,即:-2147483648——2147483647

      在64位機器上,整數的位數為64位,即:-2**63~~2**63-1,即:-2147483648——2147483647

              長整型(long):

                python中沒有指定位寬,理論上可以無限大,但受限於記憶體;但是到python3中沒有long了,全部都是正型了。

  • 浮點型(float):

    是有理數的一個特定子集的集合,Python中精度預設只能是17位精度,所有的語言都是這樣的,跟浮點數的存儲結構有關係

    Python中的工具箱,有個decimal模塊,getcontext(),其中prec定義的是精度,預設是28,改之可以調。  

 1 >>>from decimal import getcontext
 2 >>> from decimal import Decimal
 3 >>>getcontext()
 4 Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999, capitals=1, flags=[], traps=[DivisionByZero, Overflow, InvalidOperation])
 5 >>> b = Decimal(1)/Decimal(3)
 6 >>> b
 7 Decimal('0.3333333333333333333333333333')  ///28個精度值
 8 >>> getcontext().prec = 50
 9 >>> b = Decimal(1)/Decimal(3)
10 >>> b
11 Decimal('0.33333333333333333333333333333333333333333333333333')   ////50個精度值。
decimal模塊--擴大浮點數精度

 

  • 字元串

    在python中,加了引號的字元都被認為字元串,多行用多引號(''' '''),註意字元串的拼接只能是雙方都是字元串,不能跨數據類型;

  • 列表

    列表是數據的集合,可以存任何數據,可以增刪改查:

         

>>> name = []    
>>> name
[]
>>> name = list()
>>> name
[]              ////定義空列表的兩個方法;
>>> name = ['ming','long','mng','ting','jun','fei','xiang','fei','alex'] //創建列表  
>>> name[0]
'ming'
>>> name[3]
'ting'
>>> name[4]
'jun'           ////以上是查詢列表裡的值,其中0、3、4是列表裡數據的索引,從0開始;
>>> name.index('ming')
0
>>> name.index('fei') 
5               ////查詢列表裡的數據位於列表哪個索引位置;

>>> name.count('ming')
1
>>> name.count('fei')
2              ////count() 是查詢列表裡某個數據重覆了多少次;
>>> name.append('xiangmin')
>>> name
['ming', 'long', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'xiangmin']  ////append()在列表最後邊附加數據;

>>> name.insert(0,'qing')     
>>> name
['qing', 'ming', 'long', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'xiangmin']
>>> name.insert(-1,'wu')
>>> name
['qing', 'ming', 'long', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'wu', 'xiangmin']     ////insert()向索引的前面添加值    

>>> name.pop(0)    
'qing'
>>> name
['ming',  'long', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'wu', 'xiangmin']      ////pop() 刪除指定索引處的數據

>>> name.remove('tong')
>>> name
['ming', 'mng', 'ting', 'jun', 'fei', 'xiang', 'fei', 'alex', 'wu', 'xiangmin']
    /////reomve()刪除指定的數據;

>>> name
['mng', 'ting', 'tong', 'wu', 'wu', 'xiang', 'xiangmin', ['JOHN', 'JAckson', 'a'], 'kun', 'fei', 'fei', 'alex']
>>> del name[2]   
>>> name
['mng', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['JOHN', 'JAckson', 'a'], 'kun', 'fei', 'fei', 'alex']
>>> del name
>>> name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined    ////del是全局刪的,可以刪列表裡的值,也可以刪列表;

>>> name
['alex', 'fei', 'fei', 'kun', ['JOHN', 'JAckson'], 'mng', 'ting', 'tong', 'wu', 'wu', 'xiang', 'xiangmin']
>>> name.reverse()
>>> name
['xiangmin', 'xiang', 'wu', 'wu', 'tong', 'ting', 'mng', ['JOHN', 'JAckson'], 'kun', 'fei', 'fei', 'alex']    ////reverse() 反轉,sort()排序;

>>> name
['ming', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['JOHN', 'JAckson'], 'kun', 'fei', 'fei', 'alex']
>>> name2 = name.copy()
>>> name2
['ming', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['JOHN', 'JAckson'], 'kun', 'fei', 'fei', 'alex']     ////copy()  拷貝列表內容

>>> name[0] = 'hong'
>>> name[6][0] = 'john'
>>> name
['hong', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['john', 'JAckson'], 'kun', 'fei', 'fei', 'alex']
>>> name2
['ming', 'ting', 'wu', 'wu', 'xiang', 'xiangmin', ['john', 'JAckson'], 'kun', 'fei', 'fei', 'alex']     ////我們會奇怪發現,name2是name1的複製品,當name的索引為0處和嵌套的列表都有變化,為何name2的嵌套列表也會變化呢??不應該都不變嗎?這是因為copy()只是淺淺copy,它只copy列表第一層的數據,至於嵌套的列表它複製的不是數據,是嵌套列表的記憶體地址空間,或者是一個記憶體指針;所以,當name嵌套列表數據變化時,name2里的找的是這個嵌套列表記憶體空間的值,所以name2的值也會發生變化。

 

    


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • (一) 字元串 單引號、雙引號、三重引號都可以作為字元串的開始和結束,三重引號可以直接輸入多行字元串。三重引號可能一般是用來寫多行註釋。 (二) r和\ r使字元串成為原始字元串,忽略所有轉義字元。 \是轉義字元。 (三) 字元串下標和切片 (四) 字元串的in和not in (五) 改變大小寫 方 ...
  • 事先聲明,我只是java併發的新手,這篇文章也只是我閱讀《java併發編程的藝術》一書(內容主要涉及前3章)的一些總結和感悟。希望大家能多多討論,對於錯誤的地方還請指出。 0. 簡介 程式的世界是有層次分明的,每層都對外封裝細節而提供一些方式或者說介面來提供功能,甚至是約束功能來換取正確性等等。那麼 ...
  • SpringBoot中關於Mybatis使用的三個問題 轉載請註明源地址:http://www.cnblogs.com/funnyzpc/p/8495453.html 原本是要講講PostgreSQL的一些學習總結的,不巧的是最近一段時間的進度都是一些類似於加減乘除、位移、類型轉換的稍顯小兒科的一些 ...
  • istringstream用於執行C++風格的串流操作。 下麵的示例是使用一個字元串初始化istringstream類,然後再使用>>操作符來依次輸出字元串中的內容。 ...
  • 截止目前已經改造了5個類: ubuntu:通過封裝驗證碼類庫一步步安裝php的gd擴展 自定義MVC框架之工具類-分頁類的封裝 自定義MVC框架之工具類-文件上傳類 自定義MVC框架之工具類-圖像處理類 這個模型類支持以下功能: >連貫操作,js叫鏈式操作,連貫操作的函數可以打亂順序,最後一個函數必 ...
  • Go語言記憶體管理(一)記憶體分配 golang作為一種“高級語言”,也提供了自己的記憶體管理機制。這樣一方面可以簡化編碼的流程,降低因記憶體使用導致出現問題的頻率(C語言使用者尤其是初學者應該深有體會),對程式猿友好。另一方面也可以減少記憶體相關係統調用,提升性能。 先瞭解下記憶體管理大致策略: 申請一塊較大 ...
  • 題目描述 Frank對天文學非常感興趣,他經常用望遠鏡看星星,同時記錄下它們的信息,比如亮度、顏色等等,進而估算出星星的距離,半徑等等。 Frank不僅喜歡觀測,還喜歡分析觀測到的數據。他經常分析兩個參數之間(比如亮度和半徑)是否存在某種關係。 現在Frank要分析參數XX 與YY 之間的關係。他有 ...
  • 近期大家無論是自己做數據分析還是緊急答辯做PPT,可能都需要畫一些數據的展示圖;以前大家都是用excel畫圖,但excel畫圖存在一定的局限性,比如你要畫個累積直方圖,excel就很麻煩了,所以給大家介紹一個基於python的交互數據分析工具,ipython notebook。 近期大家無論是自己做 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...