源碼
Python解釋器:從文件第一行開(kāi)始澎埠,一直運(yùn)行到文件末尾溶弟,會(huì)執(zhí)行文件中的每一行python代碼。
Python標(biāo)準(zhǔn)庫(kù):是一組豐富的軟件模塊辜御,提供了大量預(yù)建(且高質(zhì)量)的可重用代碼,每個(gè)模塊中又有很多子模塊或者函數(shù)。
Datetime模塊
os模塊:?? getcwd函數(shù)
import os
os.getcwd()-------------得出代碼所在文件夾的名字
os.environ----------訪問(wèn)系統(tǒng)的全部環(huán)境變量
os.getenv(‘HOME’)--------單獨(dú)訪問(wèn)某一個(gè)環(huán)境變量
sys模塊:了解運(yùn)行解釋器的系統(tǒng)
import sys
sys.platform------了解運(yùn)行解釋器的系統(tǒng)
sys.version-----------了解關(guān)于所運(yùn)行的Python版本的大量信息
datetime模塊
import datetime
datetime.date.today()------今天的日期
datetime.date.today().year------今天日期的組成成分
datetime.date.today().month
datetime.date.today().day
datetime.date.iosformat(datetime.date.today())-----今天的日期轉(zhuǎn)換為一個(gè)字符串
time模塊
import time
time.strftime(“%H:%M”)------24小時(shí)制的時(shí)間
time.strftime(“%A &p”)-----星期及上下午
HTML模塊
Import html
html.escape(……….)-----字符串轉(zhuǎn)換
html.unescape(……….)
< ------<
>------->
心號(hào)------?
內(nèi)置電池----Python的標(biāo)準(zhǔn)庫(kù)
內(nèi)置數(shù)據(jù)結(jié)構(gòu):
???????????????????? 列表:[?? ]
?????????????????????????????? 可以包含任何類(lèi)型的數(shù)據(jù)
Python變量會(huì)動(dòng)態(tài)賦值
在Python中阁谆,第一次使用變量時(shí)愉老,變量就會(huì)立即存在,不需要預(yù)聲明嫉入,Python變量會(huì)從所賦對(duì)象的類(lèi)型得到自己的類(lèi)型信息。
可以向變量賦值? 一個(gè)方法調(diào)用的結(jié)果咒林。
Python的“超級(jí)操作符”:in: 檢查一個(gè)對(duì)象是不是在另一個(gè)對(duì)象里
Python的代碼塊:縮進(jìn)形式劃分代碼塊,還有冒號(hào):澎粟,冒號(hào)后必須縮進(jìn),表示引入一個(gè)新的代碼組
If??-----else
elif
12/14
循環(huán)
for?????提前知道需要多少次迭代
for i in [1,2,3]:
????? print(i)
While?????不知道需要多少次迭代
range??? 接收一個(gè)整數(shù)參數(shù)欢瞪,指示for循環(huán)要運(yùn)行多少次捌议。
for num in range(5):
???????????? print(‘HeadFirst Rocks!’)
模塊調(diào)用
Import time
time.sleep(5)----讓執(zhí)行暫停5秒
import random
random.randint(1,60)----在1-60中隨機(jī)生成一個(gè)數(shù)字
12/15/18
列表數(shù)據(jù)---處理有序數(shù)據(jù)
1、數(shù)字引有、字符串、對(duì)象
2倦逐、內(nèi)置數(shù)據(jù)結(jié)構(gòu):
列表:有序的可變對(duì)象集合譬正。
[?? ]?? ;??? ,
字面列表
元組:有序的不可變對(duì)象集合,是常量列表
字典:無(wú)序可變數(shù)據(jù)結(jié)構(gòu)檬姥。字典中每個(gè)唯一鍵有一個(gè)與之關(guān)聯(lián)的值曾我,字典可以包含多個(gè)鍵/值對(duì)。與鍵關(guān)聯(lián)的值可以是任意對(duì)象健民。
集合:無(wú)序的唯一對(duì)象集合抒巢,集合可以根據(jù)需要擴(kuò)展(和收縮)。集合不允許有重復(fù)的對(duì)象秉犹。
12/19/18
問(wèn)題:本來(lái)很疑惑為什么列表切片中蛉谜,letters[開(kāi)始:結(jié)束:步長(zhǎng)],其中并不包括“結(jié)束”這個(gè)索引值崇堵,但是使用letter[::1]時(shí)型诚,就包含了最后一個(gè)索引值,于是就試了幾下:
[if !vml]
[endif]
可以看到鸳劳,當(dāng)“結(jié)束”索引值是4的時(shí)候狰贯,并不包含4位置也就是最后一個(gè)位置上的元素。但是當(dāng)“結(jié)束”索引值是5或者更大的數(shù)字時(shí),就包含了最后一個(gè)元素涵紊。定義上說(shuō)“如果沒(méi)有指定結(jié)束值傍妒,則取列表允許的最大值”,實(shí)驗(yàn)證明摸柄,列表允許的最大值可以是5颤练、6、7等超過(guò)列表元素的值塘幅。因而當(dāng)處于默認(rèn)狀態(tài)時(shí)昔案,就意味著取無(wú)限大。
經(jīng)專(zhuān)業(yè)人士解釋?zhuān)鹤箝]右開(kāi)踏揣。捞稿。拼缝。咧七。
注意:
[if !vml]
[endif]
在’’.join()中继阻,只允許有一個(gè)數(shù)組,所以如圖中有多個(gè)元素時(shí)抹缕,需要加上[]卓研,變成’’.join([…,….,……,……])
《HeadFirst Python》第二章結(jié)束
第二章:列表數(shù)據(jù):處理有序數(shù)據(jù)
在python中奏赘,一切都是對(duì)象太惠,意味著所有對(duì)象都可以賦給變量垛叨。
內(nèi)置數(shù)據(jù)結(jié)構(gòu):列表柜某,元組喂击,字典翰绊,集合
列表:可異構(gòu)监嗜,動(dòng)態(tài)變化
外形特點(diǎn):[?? ]???,
字面列表:一次性完成創(chuàng)建和填充
函數(shù):len()? 會(huì)報(bào)告一個(gè)對(duì)象的大小
Found = []
Len(found)
輸出顯示:0
“擴(kuò)展”列表:
函數(shù):append()
found.append(‘a(chǎn)’)
len(found)
輸出:1
found
輸出:0
if…..in…..
if……not in…….
vowels = [‘a(chǎn)’,’e’,’i’,’o’,’u’]
word = “Milliways”
for letters in word:
?????? if letter invowels:
?????????? if letternot in found:
???????????????found.append(letter)
for vowel in found:
?????? print(vowel)
word = input(“provide a word to search for vowels:”)
從列表中刪除對(duì)象:
remove()?? 取一個(gè)對(duì)象值最為唯一參數(shù)
pop()?? 取一個(gè)可選的索引值作為參數(shù)
用對(duì)象擴(kuò)展列表:
extend()?? 取一個(gè)對(duì)象列表作為唯一參數(shù)
insert()??? 取一個(gè)索引值和一個(gè)對(duì)象作為參數(shù)
list()?? 將字符串轉(zhuǎn)換為列表
copy()?? 復(fù)制列表
列表擴(kuò)展中的中括號(hào)記法:
letter[start:stop:step]
letter[3:]????? 跳過(guò)前三個(gè)字母裁奇,然后給出其余的所有字母
letter[:10]?? 直到(但不包含)索引位置的10的所有字母
letter[::2]? 步長(zhǎng)為2
‘’.join()?? 將列表轉(zhuǎn)換為字符串
list()
列表切片——非破壞性的
Python
缺點(diǎn):第一個(gè)缺點(diǎn)就是運(yùn)行速度慢刽肠,和C程序相比非常慢音五,因?yàn)镻ython是解釋型語(yǔ)言躺涝,你的代碼在執(zhí)行時(shí)會(huì)一行一行地翻譯成CPU能理解的機(jī)器碼坚嗜,這個(gè)翻譯過(guò)程非常耗時(shí),所以很慢棍郎。而C程序是運(yùn)行前直接編譯成CPU能執(zhí)行的機(jī)器碼涂佃,所以非彻架快。
但是大量的應(yīng)用程序不需要這么快的運(yùn)行速度造烁,因?yàn)橛脩舾靖杏X(jué)不出來(lái)惭蟋。例如開(kāi)發(fā)一個(gè)下載MP3的網(wǎng)絡(luò)應(yīng)用程序告组,C程序的運(yùn)行時(shí)間需要0.001秒,而Python程序的運(yùn)行時(shí)間需要0.1秒便锨,慢了100倍放案,但由于網(wǎng)絡(luò)更慢卿叽,需要等待1秒考婴,你想催烘,用戶能感覺(jué)到1.001秒和1.1秒的區(qū)別嗎伊群?這就好比F1賽車(chē)和普通的出租車(chē)在北京三環(huán)路上行駛的道理一樣舰始,雖然F1賽車(chē)?yán)碚摃r(shí)速高達(dá)400公里,但由于三環(huán)路堵車(chē)的時(shí)速只有20公里枕稀,因此萎坷,作為乘客哆档,你感覺(jué)的時(shí)速永遠(yuǎn)是20公里瓜浸。
第二個(gè)缺點(diǎn)就是代碼不能加密。如果要發(fā)布你的Python程序偶惠,實(shí)際上就是發(fā)布源代碼朗涩,這一點(diǎn)跟C語(yǔ)言不同谢床,C語(yǔ)言不用發(fā)布源代碼识腿,只需要把編譯后的機(jī)器碼(也就是你在Windows上常見(jiàn)的xxx.exe文件)發(fā)布出去。要從機(jī)器碼反推出C代碼是不可能的骂束,所以展箱,凡是編譯型的語(yǔ)言蹬昌,都沒(méi)有這個(gè)問(wèn)題皂贩,而解釋型的語(yǔ)言,則必須把源碼發(fā)布出去婴栽。
這個(gè)缺點(diǎn)僅限于你要編寫(xiě)的軟件需要賣(mài)給別人掙錢(qián)的時(shí)候愚争。好消息是目前的互聯(lián)網(wǎng)時(shí)代准脂,靠賣(mài)軟件授權(quán)的商業(yè)模式越來(lái)越少了檬洞,靠網(wǎng)站和移動(dòng)應(yīng)用賣(mài)服務(wù)的模式越來(lái)越多了添怔,后一種模式不需要把源碼給別人。
再說(shuō)了砾脑,現(xiàn)在如火如荼的開(kāi)源運(yùn)動(dòng)和互聯(lián)網(wǎng)自由開(kāi)放的精神是一致的韧衣,互聯(lián)網(wǎng)上有無(wú)數(shù)非常優(yōu)秀的像Linux一樣的開(kāi)源代碼畅铭,我們千萬(wàn)不要高估自己寫(xiě)的代碼真的有非常大的“商業(yè)價(jià)值”硕噩。那些大公司的代碼不愿意開(kāi)放的更重要的原因是代碼寫(xiě)得太爛了炉擅,一旦開(kāi)源阳惹,就沒(méi)人敢用他們的產(chǎn)品了穆端。
Python交互模式和命令模式執(zhí)行python代碼的區(qū)別:
Python交互模式的代碼是輸入一行体啰,執(zhí)行一行,而命令行模式下直接運(yùn)行.py文件是一次性執(zhí)行該文件內(nèi)的所有代碼柒莉【ばⅲ可見(jiàn)跨蟹,Python交互模式主要是為了調(diào)試Python代碼用的窗轩,也便于初學(xué)者學(xué)習(xí)座咆,它不是正式運(yùn)行Python代碼的環(huán)境!
在Python交互式模式下堤舒,可以直接輸入代碼舌缤,然后執(zhí)行国撵,并立刻得到結(jié)果卸留。
在命令行模式下,可以直接運(yùn)行.py文件旨指。
Python的縮進(jìn)格式利弊:
縮進(jìn)有利有弊谆构。好處是強(qiáng)迫你寫(xiě)出格式化的代碼搬素,但沒(méi)有規(guī)定縮進(jìn)是幾個(gè)空格還是Tab熬尺。按照約定俗成的管理谓罗,應(yīng)該始終堅(jiān)持使用4個(gè)空格的縮進(jìn)。
縮進(jìn)的另一個(gè)好處是強(qiáng)迫你寫(xiě)出縮進(jìn)較少的代碼揭措,你會(huì)傾向于把一段很長(zhǎng)的代碼拆分成若干函數(shù)绊含,從而得到縮進(jìn)較少的代碼炊汹。
縮進(jìn)的壞處就是“復(fù)制-粘貼”功能失效了,這是最坑爹的地方。當(dāng)你重構(gòu)代碼時(shí)津坑,粘貼過(guò)去的代碼必須重新檢查縮進(jìn)是否正確傲霸。此外昙啄,IDE很難像格式化Java代碼那樣格式化Python代碼梳凛。
最后,請(qǐng)務(wù)必注意淹接,Python程序是大小寫(xiě)敏感的塑悼,如果寫(xiě)錯(cuò)了大小寫(xiě)厢蒜,程序會(huì)報(bào)錯(cuò)。
Python數(shù)據(jù)類(lèi)型:
如果字符串內(nèi)部既包含'又包含"怎么辦斑鸦?可以用轉(zhuǎn)義字符\來(lái)標(biāo)識(shí)鄙才,比如:
'I\'m \"OK\"!'
表示的字符串內(nèi)容是:
I'm "OK"!
源代碼
源碼就是指編寫(xiě)的最原始程序的代碼攒庵。運(yùn)行的軟件是要經(jīng)過(guò)編寫(xiě)的浓冒,程序員編寫(xiě)程序的過(guò)程中需要他們的“語(yǔ)言”稳懒。音樂(lè)家用五線譜和音符场梆,建筑師用圖紙和筆,那程序員的工作的語(yǔ)言就是“源碼”了寞忿。源代碼不能直接運(yùn)行腔彰,必須編譯后才能運(yùn)行霹抛。源碼經(jīng)過(guò)編譯處理后就可以直接在操作系統(tǒng)下運(yùn)行了卷谈。
人們平時(shí)使用軟件時(shí)就是程序把“源碼”翻譯成我們可直觀的形式表現(xiàn)出來(lái)供我們使用的世蔗。?
任何一個(gè)網(wǎng)站頁(yè)面凸郑,換成源碼就是一堆按一定格式書(shū)寫(xiě)的文字和符號(hào),但我們的瀏覽器幫我們翻譯成眼前的模樣了诲祸。
源代碼是指原始代碼救氯,可以是任何語(yǔ)言代碼歌憨。
匯編碼是指源代碼編譯后的代碼,通常為二進(jìn)制文件甲抖,比如共享庫(kù)准谚、可執(zhí)行文件柱衔、.NET中間代碼唆铐、JAVA中間代碼等。
高級(jí)語(yǔ)言通常指C/C++顺少、BASIC、C#叼耙、JAVA筛婉、PASCAL爽撒、易語(yǔ)言等等硕勿。匯編語(yǔ)言就是ASM源武,只有這個(gè)粱栖,比這個(gè)更低級(jí)的就是機(jī)器語(yǔ)言了闹究。
源碼主要功用有如下2種作用:
1.生成目標(biāo)代碼渣淤,即計(jì)算機(jī)可以識(shí)別的代碼吉嫩。
2.對(duì)軟件進(jìn)行說(shuō)明率挣,即對(duì)軟件的編寫(xiě)進(jìn)行說(shuō)明。為數(shù)不少的初學(xué)者智什,甚至少數(shù)有經(jīng)驗(yàn)的程序員都忽視軟件說(shuō)明的編寫(xiě)荠锭,因?yàn)檫@部分雖然不會(huì)在生成的程序中直接顯示证九,也不參與編譯共虑。但是說(shuō)明對(duì)軟件的學(xué)習(xí)拥坛、分享尘分、維護(hù)和軟件復(fù)用都有巨大的好處著摔。因此梨撞,書(shū)寫(xiě)軟件說(shuō)明在業(yè)界被認(rèn)為是能創(chuàng)造優(yōu)秀程序的良好習(xí)慣卧波,一些公司也硬性規(guī)定必須書(shū)寫(xiě)港粱。
需要指出的是查坪,源代碼的修改不能改變已經(jīng)生成的目標(biāo)代碼宁炫。如果需要目標(biāo)代碼做出相應(yīng)的修改偿曙,必須重新編譯。
源碼組合
網(wǎng)站源碼作為軟件的特殊部分羔巢,可能被包含在一個(gè)或多個(gè)文件中望忆。一個(gè)程序不必用同一種格式的源代碼書(shū)寫(xiě)罩阵。例如,一個(gè)程序如果有C語(yǔ)言庫(kù)的支持启摄,那么就可以用C語(yǔ)言稿壁;而另一部分為了達(dá)到比較高的運(yùn)行效率,則可以用匯編語(yǔ)言編寫(xiě)歉备。
較為復(fù)雜的軟件傅是,一般需要數(shù)十種甚至上百種的源代碼的參與。為了降低這種復(fù)雜度书闸,必須引入一種可以描述各個(gè)源代碼之間聯(lián)系享甸,并且如何正確編譯的系統(tǒng)日丹。在這樣的背景下择示,修訂控制系統(tǒng)(RCS)誕生了,并成為研發(fā)者對(duì)代碼修訂的必備工具之一。
還有另外一種組合:源代碼的編寫(xiě)和編譯分別在不同的平臺(tái)上實(shí)現(xiàn),專(zhuān)業(yè)術(shù)語(yǔ)叫做軟件移植嘉赎。
執(zhí)行效率
雖然我們可以通過(guò)不同的語(yǔ)言來(lái)實(shí)現(xiàn)計(jì)算機(jī)的同一功能隔披,但在執(zhí)行效率上則存在不同。普遍規(guī)律是:越高級(jí)的語(yǔ)言,其執(zhí)行效率越低。這也是為什么匯編語(yǔ)言生成的文件比用BASIC語(yǔ)言生成文件普遍要小的原因。
源代碼就是用匯編語(yǔ)言和高級(jí)語(yǔ)言寫(xiě)出來(lái)的代碼。主要對(duì)象是面向開(kāi)發(fā)者拦耐;
我們平常使用的應(yīng)用程序都是經(jīng)過(guò)源碼編譯打包以后發(fā)布的固翰,呈現(xiàn)的最后結(jié)果是面向使用者,最終客戶的。
HTML
超文本標(biāo)記語(yǔ)言送火,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用坚俗。
“超文本”就是指頁(yè)面內(nèi)可以包含圖片降允、鏈接,甚至音樂(lè)犁嗅、程序等非文字元素园爷。
超文本標(biāo)記語(yǔ)言的結(jié)構(gòu)包括“頭”部分(英語(yǔ):Head)、和“主體”部分(英語(yǔ):Body)弦赖,其中“頭”部提供關(guān)于網(wǎng)頁(yè)的信息,“主體”部分提供網(wǎng)頁(yè)的具體內(nèi)容芽腾。
制表符(也叫制表位)的功能是在不使用表格的情況下在垂直方向按列對(duì)齊文本。
水平制表符就是水平空出幾個(gè)格,說(shuō)像一下打了幾個(gè)空格一樣。編程里面用“\t”表示。垂直制表符就是垂直空出幾個(gè)格,說(shuō)像一下打了幾個(gè)回車(chē)一樣参滴。編程里面用“\v”表示。