day01基礎部分

一、python是什么樣的語言

? ? ?1、編譯型語言和解釋型語言,python是解釋型語言

? ? ?  ? ??1.1、編譯型語言就是把源程序代碼一次性翻譯成機器碼(計算機可識別的代碼),然后交給計算機去運行,一般需經過編譯(compile)、鏈接(linker)這兩個步驟。編譯是把源代碼編譯成機器碼,鏈接是把各個模塊的機器碼和依賴庫串連起來生成可 ? ? ? ? ? ? ? ? ? ? 執行文件。

? ? ?   ? ? ? ? ?優點:編譯器一般會有預編譯的過程對代碼進行優化。?因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高?。可以脫離語言環境獨立運行。

? ? ?   ? ? ? ? ? 缺點:編譯之后如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編譯不同的可執行文件。

? ? ? ? ? ? ? ? ? ? ?代表語言:C、C++、?Pascal、Object-C以及swift等

? ? ? ? ? ? ? ? ? ? ?

?

? ? ? ? ? ? 1.2、解釋型語言就是在程序執行到某個指令的時候在翻譯這段代碼,等于是一直在做翻譯代碼、執行代碼、翻譯代碼、執行代碼,直到代碼結束

? ? ? ? ? ? ? ? ? ?優點:有良好的平臺兼容性,在任何環境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。

? ? ? ? ? ? ? ? ? ?缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。

? ? ? ? ? ? ? ? ? ?代表語言:JavaScript、Python、Erlang、PHP、Perl、Ruby等

? ? ??? ? ? ?1.3、混合型語言

? ? ? ? ? ? ? ? ? ? 混合語言就是綜合以上兩種的有點,先源代碼翻譯成字節碼文件(可以看成是中間碼,介于源碼和機器碼之間),然后交給虛擬機(如java的jvm),直接可以把編譯好的字節碼文件放在各個平臺上去運行,而不需要去改動,每個平臺 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(windows、linux、unix等)都有已經寫好的虛擬機,每個平臺的虛擬機會自動翻譯成對應平臺的機器碼文件,可以達到一次編譯,多次運行的目的

? ? ? ? ? ? ? ? ? ? 代表語言:Java等

? ? ? ? ? ? ? ? ? ??

?

? ? ? 2、靜態語言和動態語言

? ? ? ? ? ? ?2.1、靜態語言

? ? ? ? ? ? ? ? ? ? 靜態語言就是在編譯之前必須要確定語言的類型,多數靜態語言在聲明時必須寫變量類型

? ? ? ? ? ? ?2.2、動態語言

? ? ? ? ? ? ? ? ? ? 動態語言通常是在運行時才確定語言的類型,多數動態語言是不需要聲明類型的,變量的類型通常是賦值的值的類型,如:var = 'a',var就是字符型

? ? ? 3、強類型語言和弱類型語言

? ? ? ? ? ? ?3.1、強類型語言

? ? ? ? ? ? ? ? ? ? 強類型語言不能隨著環境改變而改變,只有同類型的才可以操作,需要使用函數或方法進行強制轉換類型,python就是強類型語言,如:a = 1 b = '2',str(a)+b或a+int(b)才可以進行操作,否則就會報錯必須要強制轉換一下

? ? ? ? ? ? ?3.2、弱類型語言

? ? ? ? ? ? ? ? ? ? 弱類型語言是可以隨時進行操作的,而不需要強制轉換類型后在進行操作,vbs就是弱類型語言,如:a = 1,b = '2',a+b,計算結果是12,a + 1,計算結果是2

? ? ? 4、python語言的優缺點

? ? ? ? ? ? ?4.1、python語言的優點

? ? ? ? ? ? ? ? ? ? 4.1.1、python語言被定位為“優雅”、“明確”、“簡單”,python入門很容易

? ? ? ? ? ? ? ? ? ? 4.1.2、開發效率高,python會提供非常多的三方類庫,也可以對基礎類庫進行二次開發,達到自己想要的效果 ? ? ? ? ? ? ? ? ? ? ? ? 4.1.3、python被稱為膠水語言,會很容易和其他語言結合,調用其他語言已經寫好的代碼,或是直接嵌入到其他語言中

? ? ? ? ? ? ? ? ? ? 4.1.3、python擁有較好的可移植性(不同平臺)和可擴展性

? ? ? ? ? ? 4.2、python語言的缺點

? ? ? ? ? ? ? ? ? ? 4.2.1、python語言運行速度慢,比c語言要慢很多,比java也要慢一些,但是一般感覺不出來,需要借助工具才能看到

? ? ? ? ? ? ? ? ? ? 4.2.2、python不支持多cpu處理,就是說多核cpu也起不到作用,同一時間只有一個線程在運行

? ? ? ? ? ? ? ? ? ? 4.2.3、python由于是解釋性語言,所以代碼不能加密

二、變量部分

? ? ? 變量概念:變量主要是提供為了其他代碼以后調用數據而存儲數據使用的

  1、變量規則

    1.1、變量由數字、字母下劃線組成,不能以數字開頭

? ? ? ? ? ?1.2、如果變量是有多個單詞組成的,使用駝峰式,如:myFristVar,就是從第二個單詞開始首字符是大寫,其余字母小寫;

? ? ? ? ? ?1.3、也可以是用全部都是首字母大寫,如:MyFristVar

? ? ? ? ? ?1.4、或是使用下劃線分隔,如:my_frist_var

? ? ? ? ? ?1.5、如果所有字符都是大寫,則代表是常量,不過這只是開發人員的規范,多個單詞用下劃線分隔,并不是python的規則,也是可以改變的,其他有的語言中有的可以用關鍵字明確聲明,如:c語言中的const

? ? ? ? ? ?1.6、有一些單詞是被python作為關鍵字占用了,有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

? ? ? ? ? ?1.7、擴展

? ? ? ? ? ? ? ? ? ?1.7.1、實例變量用單下劃線開頭,其他和普通變量一樣,如:_myvar,類變量(就是上面1.3中的全部大寫的變量)是指一個類的變量,通常為靜態變量(類似于java的static),而實例變量通常是動態的類變量,和實例變量的區別在于:類變量是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變后的結果;而實例變量則屬對象私有,某一個對象將其值改變,不影響其他對象。類變量是公共變量

? ? ? ? ? ? ? ? ? ?

#!/usr/bin/env python
class Test(object):  num_of_instance = 0  # 類變量def __init__(self, name):  self.name = name  # 實例變量  Test.num_of_instance += 1  if __name__ == '__main__':  print Test.num_of_instance  # 此時是0t1 = Test('jack')  # 調用了一次__init__,此時是1print Test.num_of_instance  t2 = Test('lucy')  # 再調用了一次,此時是2print t1.name , t1.num_of_instance    print t2.name , t2.num_of_instance

?

? ? ? ? ? ? ? ? ? ?1.7.2、私有實例變量以雙下劃線開頭,其他和普通變量一樣,外部訪問會報錯,如__myvar

? ? ? ? ? ? ? ? ? ?1.7.3、專有變量,以雙下劃線開頭,以雙下劃線結尾,是python的自有變量,不要使用這種變量,如__myvar__

? ? ? 2、數據類型

? ? ? ? ? ? ?2.1、數字類型

? ? ? ? ? ? ? ? ? ?2.1.1、整型(int):在32為的機器上顯示的數值范圍是-231~231-1,即-2147483648~2147483647,就是32位二進制數能表示的范圍,在64位機器上顯示的數值是-263~263-1,即-9223372036854775808~9223372036854775807,就是32位二進制數能表示的范圍,可以使用int函數進行轉換,如:a='1',int(a),也可以int(a, base=10),這里的base雖然是轉為十進制,但是前提是a是10進制數,比如int('0b1010', base=2),0b開頭的是二進制數,這樣才可以轉換成二進制數,整型在內存中產生是通過int類,比如a=15,是a=15--->調用int類int(10)--->調用int類下的__init__方法

? ? ? ? ? ? ? ? ? ?2.1.2、長整型(long):c語言中的長整型有位寬限制,而python沒有位寬限制,但是由于內存的原因,數值不能無限放大,從2.2版本起,如果發生溢出,將自動轉換為長整型,不加L也沒有關系

? ? ? ? ? ? ? ? ? ?2.1.3、浮點型(float):主要是用來處理實數的,就是有小數點的數,在python中占64位,實數是有限小數和無限循環小數的集合(不包括無限不循環小數)

? ? ? ? ? ? ? ? ? ?2.1.4、復數(complex):是由實數和虛數組成的,虛數就是一些不是實際存在的數,虛數的單位是i,規定i2=-1

? ? ? ? ? ? 2.2、布爾型

? ? ? ? ? ? ? ? ? ?布爾型只有兩個值,就是真和假,0和1,0是假,1是真,在python中返回true為真,false為假,內置函數為bool()

? ? ? ? ? ? 2.3、字符串

? ? ? ? ? ? ? ? ? ?2.3.1、字符串用單引號或雙引號,這兩種方式沒有任何區別,使用時如果字符串中有單引號,則需要使用雙引號括起字符串,反之亦然,也可以用三引號來擴起來多行字符串,打印是也按照多行來打印

? ? ? ? ? ? ? ? ? ?2.3.2、字符串的拼接可以使用加號或是格式化方式,建議使用格式化方式,如果使用加號美每加一次,就會在內存中多開辟一塊空間,格式化中%s是字符串,%d是整數%f是浮點型

? ? ? ? ? ? ? ? ? ?2.3.3、字符串常用的方法有移除空白(strip)、分割(split)、長度(len)、索引(index)、切片

? ? ? ? ? ? 2.4、列表

? ? ? ? ? ? ? ? ? ?2.4.1、創建列表,一下兩種都可以創建列表

l = ['a1','b2','c3','d4']
l = list(['a1','b2','c3','d4'])

? ? ? ? ? ? ? ? ? ? 2.4.2、索引,l.index('b2'),返回b2所在的位置

? ? ? ? ? ? ? ? ? ? 2.4.3、切片,l[1:3],返回['b2','c3'],如果只寫開始位置,比如l[3:],就是從3的位置返回到最后,只寫結束,就是從開頭返回到結束的位置,都不寫,返回整個列表,負數是從有到左數,如l[0:-2],返回['a1','b2'],也可以加步長,比如只輸出偶數的索引所對應的值,l[0:3:2],2就是步長

? ? ? ? ? ? ? ? ? ? 2.4.4、追加,使用l.append(value),可追加到列表的最后

? ? ? ? ? ? ? ? ? ? 2.4.5、插入,使用l.insert(索引,字符串),索引指的是要插入的位置,插入位置的原字符串及之后的位置全都加1

? ? ? ? ? ? ? ? ? ? 2.4.6、刪除,可以使用del l[索引],可以使用l.remove[字符串],也可以使用l.pop()可以刪除最后一個值,并返回該值

? ? ? ? ? ? ? ? ? ? 2.4.7、查找字符串,l.index[要查找的字符串,開始位置,結束位置],開始位置和結束位置不是必填,意思就是比如列表中有10個值,要查找a1這個字符串,開始位置是3,結束位置是8,就是在3到8的位置內查找a1,其他位置有a1也不會查找,如果列表中有重復的字符串,則顯示第一個查找到的位置

? ? ? ? ? ? ? ? ? ? 2.4.8、統計字符串在一個列表中的個數,l.count()

? ? ? ? ? ? ? ? ? ? 2.4.9、排序,l.sort(),按照字符集中的順序進行排序

? ? ? ? ? ? ? ? ? ? 2.4.10、反轉,l.reverse()

? ? ? ? ? ? ? ? ? ? 2.4.11、清空,l.clear()

? ? ? ? ? ? ? ? ? ? 2.4.12、拷貝,l.copy()

? ? ? 2.5元組、

? ? ? 2.6字典、

三、字符集

? ? ? 1、二進制和ascll的由來

? ? ? ? ? ?計算機只識別二進制數據,就是0和1,只有一位時只能表示0和1,所以要使用更多位數表示,規定8個二進制位是一個字節(共可以表示256種字符),最開始字符集合是ascll碼,ascll碼分為兩部分,由于計算機是美國人發明的,所以他們在計算機中一共定義了128個字符,就是ascll的前半張表,后半張表是空的,留給其他國家使用

? ? ? 2、中文字符集的演變

? ? ? ? ? ?剩下的128個字符空間根本不夠漢字的使用,之后用了一個辦法,就是如果讀到了一個字節是表示漢字的(并不是實際存儲漢字,只是一個空間),就把這個空間映射出一張表,這張表才是存儲的真正的漢字,這樣就可以用很少的空間來表示很多的字符,而這個首先產生的就是GB2312和表示繁體中的big5,GB2312一共收錄了7445個字符,包括6763個漢字和682個其它符號,之后又完善了字符集,出現了GBK,收錄了21886個符號,它分為漢字區和圖形符號區,漢字區包括21003個字符,最后出現了GB18030,收錄了27484個漢字

? ? ? 3、萬國碼

? ? ? ? ? ?很多國家都是用的自己的字符集,這樣對于程序的移植性不是很好,就需要把這些字符全部收集起來,組成了萬國碼,就是unicode,但是unicode太占用存儲空間,因為ascll只要1個字節,就是8個二進制位就是可以存儲,而unicode最少的字符都需要2個字節,所以有的國家就不同意了,然后就演變成了UTF-16,雖然比unicode要節省一些空間,但還是有國家不滿意,最后演變成了UTF-8,所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存

? ? ? 4、python2和python所使用的字符集

? ? ? ? ? ?python2默認的是使用ascll碼,使用中文時需要指定字符集,而python3默認的編碼是UTF-8,在使用中文的可以直接使用,不用去指定字符集

四、注釋

? ? ?1、單行注釋可以使用#號寫在要注釋的行開頭

? ? ?2、多行注釋可以使用三引號來注釋,其實就是上面提到過的字符串多行的表示,只是沒有賦給變量而已,在pycharm中選中要注釋的行,使用ctrl+/也可以進行多行注釋,就是在每一行前面加上#號

五、運算符

1、算數運算:

? ? 2、比較運算:

? ? 3、賦值運算:

? ? ?4、邏輯運算:

? ? 5、成員運算:

? ? 6、身份運算:

? ? 7、位運算:

a?=?60? ? ? ? ?60 = 0011 1100

b?=?13?????????13 = 0000 1101
以下結果使用上面兩個數得出

? ? ? ? ? 7.1、按位與運算就是兩個數的二進制的同一位都為1時則為1,比如149(10010101)和201(11001001),運算后就是129(10000001)

? ? ? ? ? 7.2、按位或運算就是兩個數的二進制的同一位有一位為1就是1

? ? ? ? ? 7.3、按位異或運算,兩個數的二進制的同一位均為0或1則結果中該位為0,不一致則為1

? ? ? ? ? 7.4、按位取反運算,是針對一個數的運算,有符號采用補碼形式,是針對一個數的運算,即把該數的二進制形式,是0的位為1,是1的位為0,就是正數加1取反,負數是補碼形式(就是非符號位取反)

? ? ? ? ? 7.5、左移動運算符,每一個二進制位都向左移動,右面補0

? ? ? ? ? 7.6、右移動運算符,每一個二進制位都向右移動

轉載于:https://www.cnblogs.com/zcjblog/p/6262055.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284873.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284873.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284873.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF 制作 Windows 屏保

分享如何使用WPF 制作 Windows 屏保WPF 制作 Windows 屏保作者:驚鏵原文鏈接:https://github.com/yanjinhuagood/ScreenSaver框架使用.NET452;Visual Studio 2019;項目使用 MIT 開源許可協議;更多效果可以通過GitHub[1]|碼云[2]下…

Java 定時線程

功能需求:項目啟動時,后天起一個定時線程,每個小時跑一次,查出數據發郵件出來。 主要使用 public void schedule(TimerTask task, long delay)task被安排在delay(毫秒)指定的時間后執行。 public void sche…

Windows 7 下右鍵發送到菜單項沒了

為什么80%的碼農都做不了架構師?>>> 問題描述: 突然有一天,Windows 7 下右鍵發送到菜單項沒了,如圖所示: 問題原因 黑人問號臉? 轉載于:https://my.oschina.net/taadis/blog/1591398

【ArcGIS微課1000例】0016:ArcGIS書簽操作(添加書簽、管理書簽)知多少?

書簽可以將地圖數據的某一視圖狀態保存起來,以便在使用時打開書簽,直接回到這一視圖狀態。可創建多個書簽以便快速回到不同的視圖狀態,也可以對書簽進行管理。 文章目錄 1 創建書簽2 管理書簽注意:書簽只針對空間數據,在【布局視圖】中是不能創建書簽的。 1 創建書簽 可…

Android之webView打開http鏈接頁面無法加載顯示net:ERR_CLEARTEXT_NOT_PERMITTED

1、問題 適配Android13后,webView打開http鏈接提示錯誤如下 net:ERR_CLEARTEXT_NOT_PERMITTED2、原因 Android 9.0 默認使用加密連接,這意味著老舊項目在android 9.0 設備上運行,會遇到異常的情況。 3、解決辦法 android:usesCleartextTr…

分享一個WPF 實現 Windows 軟件快捷小工具

分享一個WPF 實現 Windows 軟件快捷小工具Windows 軟件快捷小工具作者:WPFDevelopersOrg原文鏈接:https://github.com/WPFDevelopersOrg/SoftwareHelper框架使用.NET40;Visual Studio 2019;項目使用 MIT 開源許可協議;項目使用 MV…

學習環境配置:Manjaro、MSYS2以及常見軟件

0.前言 在說Manjaro之前,要先說一下Linux發行版。對于各大發行版而言,內核只有版本的差異,最重要的區別就是包管理系統。常見的包管理系統包括:Pacman,Apt , Yum和Portage。在學習Linux的過程中,和大數人一…

【ArcGIS微課1000例】0017:ArcGIS測量距離和面積工具的巧妙使用

文章目錄 1 交互式測量2 測量要素ArcGIS提供了快速測量距離和面積的工具,通過測量工具可對地圖中的線和面進行測量。 工具條: 測量工具位于【工具】工具條上,如下圖所示: 測量界面: 功能按鈕簡介: 可使用此工具在地圖上繪制一條線或者一個面,然后獲取線的長度與面的面…

[轉]HTTP/3 未來可期?

2015 年 HTTP/2 標準發表后,大多數主流瀏覽器也于當年年底支持該標準。此后,憑借著多路復用、頭部壓縮、服務器推送等優勢,HTTP/2 得到了越來越多開發者的青睞,不知不覺的 HTTP 已經發展到了第三代。本文基于興趣部落接入 HTTP/3 …

只讓輸入數字、字母、中文的輸入框

1.輸入框只能輸入字母和下橫線的正則表達式 <input type"text" onkeyup"this.valuethis.value.replace(/[^_a-zA-Z]/g,)" onpaste"this.valuethis.value.replace(/[^_a-zA-Z]/g,)"> 2.只能輸入數字和英文 <input type"text" …

華為手機logcat不出日志解決方案

進入撥號界面輸入&#xff1a;*#*#2846579#*#* 依次選擇ProjectMenu---后臺設置----LOG設置---LOG開關 點擊打開轉載于:https://www.cnblogs.com/liugangBlog/p/8058259.html

Android之啟動奔潰提示異常java.lang.SecurityException: Permission Denial: startForeground

1 問題 適配Android高版本,啟動奔潰,提示異常 java.lang.SecurityException: Permission Denial: startForeground from pid=1824, uid=10479 requires android.permission.FOREGROUND_SERVICEat android.os.Parcel.createException(Parcel.java:

【ArcGIS微課1000例】0018:ArcGIS設置相對路徑和數據源

文章目錄 ArcGIS設置相對路徑ArcGIS設置數據源ArcGIS設置相對路徑 菜鳥們在使用ArcGIS時經常會碰到將地圖文檔(.mxd)拷貝到別的電腦上或改變一個路徑時,出現數據丟失的現象,具體表現為圖層前面出現一個紅色的感嘆號,如下圖所示。 出現以上問題的根本原因是數據GSS.tif的原…

AI 之 OpenCvSharp 安卓手機攝像頭識別人臉

OpenCvSharp是OpenCv的包裝器&#xff0c;相當于底層是OpenCv只是用.Net的方式調用底層的接口的實現&#xff0c;所以&#xff0c;從OpenCv的知識架構來講&#xff0c;源碼是一樣一樣的。就是換個語言寫而已。1. OpenCvSharp 盡可能地以原生 OpenCV C/C API 風格為藍本。2. Ope…

C#中二進制和流之間的各種相互轉換

一. 二進制轉換成圖片間的轉換 12345MemoryStream ms new MemoryStream(bytes); ms.Position 0; Image img Image.FromStream(ms); ms.Close(); this.pictureBox1.Image二. C#中byte[]與string的轉換代碼 1. 123System.Text.UnicodeEncoding converter new System.Text.Uni…

ASCII碼16進制對照表

ASCII碼對照表 ASCII&#xff08;American Standard Code for Information Interchange&#xff0c;美國信息互換標準代碼&#xff0c;ASCⅡ&#xff09;是基于拉丁字母的一套電腦編碼系統。它主要用于顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統&#xff0c…

如何獲得帶時間的ping的結果

ping 192.168.1.91 | awk {print strftime("%Y-%m-%d %H:%M:%S") "\t" $0} 轉載于:https://blog.51cto.com/351842/2051815

iVX低代碼平臺系列制作APP簡單的個人界面

一、前言 我們知道&#xff0c;目前市場上開發app或者小程序這些應用&#xff0c;都離不開一個個人界面&#xff0c;就是類似下面的這種界面&#xff0c;我們可以利用iVX低代碼平臺來開發&#xff0c;簡單快速&#xff0c;如果還有不知道iVX低代碼平臺是啥的&#xff0c;猛戳這…

王高利:Apache Httpd負載均衡Tomcat并實現Session Sticky和Session Cluster

Apache Httpd負載均衡Tomcat并實現Session Sticky和Session Clusterhttp://anyisalin.blog.51cto.com/10917514/1766736轉載于:https://blog.51cto.com/wanggaoli/1770659

對比C#聊聊C++大一統的初始化運算符 {}

一&#xff1a;背景 最近發現 C 中的類型初始化操作&#xff0c;沒有 {} 運算符搞不定的&#xff0c;蠻有意思&#xff0c;今天我們就來逐一列一下各自的用法以及匯編展現&#xff0c;本來想分為 值類型 和 引用類型 兩大塊&#xff0c;但發現在 C 中沒這種說法&#xff0c;默認…