成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python學(xué)習(xí)筆記

anquan / 2361人閱讀

摘要:數(shù)字和字符串,不能改變對象本身,只能改變引用的指向,稱為不可變數(shù)據(jù)對象。從開始,依次增加的值,直至等于或者大于將會(huì)輸出。該函數(shù)輸入姓名和各科的成績,輸出姓名和總共成績。表明該參數(shù)是關(guān)鍵字參數(shù),通常來講關(guān)鍵字參數(shù)是放在函數(shù)參數(shù)列表的最后。

基礎(chǔ) 局部變量與全局變量

函數(shù)中使用的變量是局部的

如果在外面的變量在函數(shù)中使用,需要加global關(guān)鍵字

APPLY = 100 # 全局變量
a = None
def fun():
    global a    # 使用之前在全局里定義的 a
    a = 20      # 現(xiàn)在的 a 是全局變量了
    return a+100

print(APPLE)    # 100
print("a past:", a)  # None
fun()
print("a now:", a)   # 20
深拷貝與淺拷貝

id()可以顯示內(nèi)存地址

=

列表可以通過引用其元素,改變對象自身(in-place change)。這種對象類型,稱為可變數(shù)據(jù)對象(mutable object),詞典也是這樣的數(shù)據(jù)類型。

數(shù)字和字符串,不能改變對象本身,只能改變引用的指向,稱為不可變數(shù)據(jù)對象(immutable object)。元組(tuple),盡管可以調(diào)用引用元素,但不可以賦值,因此不能改變對象自身,所以也算是immutable object。

淺拷貝

當(dāng)使用淺拷貝時(shí),python只是拷貝了最外圍的對象本身,內(nèi)部的元素都只是拷貝了一個(gè)引用而已??创a:

>>> import copy
>>> a=[1,2,3]
>>> c=copy.copy(a)  #拷貝了a的外圍對象本身,
>>> id(c)
4383658568
>>> print(id(a)==id(c))  #id 改變 為false
False
>>> c[1]=22222   #此時(shí),我去改變c的第二個(gè)值時(shí),a不會(huì)被改變。
>>> print(a,c)
[1, 2, 3] [1, 22222, 3] #a值不變,c的第二個(gè)值變了,這就是copy和‘==’的不同
深拷貝

deepcopy外圍和內(nèi)部元素都進(jìn)行了拷貝對象本身,而不是對象的引用。

#copy.copy()

>>> a=[1,2,[3,4]]  #第三個(gè)值為列表[3,4],即內(nèi)部元素
>>> d=copy.copy(a) #淺拷貝a中的[3,4]內(nèi)部元素的引用,非內(nèi)部元素對象的本身
>>> id(a)==id(d)
False
>>> id(a[2])==id(d[2])
True
>>> a[2][0]=3333  #改變a中內(nèi)部原屬列表中的第一個(gè)值
>>> d             #這時(shí)d中的列表元素也會(huì)被改變
[1, 2, [3333, 4]]


#copy.deepcopy()

>>> e=copy.deepcopy(a) #e為深拷貝了a
>>> a[2][0]=333 #改變a中內(nèi)部元素列表第一個(gè)的值
>>> e
[1, 2, [3333, 4]] #因?yàn)闀r(shí)深拷貝,這時(shí)e中內(nèi)部元素[]列表的值不會(huì)因?yàn)閍中的值改變而改變
例子

創(chuàng)建二維數(shù)組

myList = [([0] * 3) for i in range(4)]
#以上會(huì)出現(xiàn)淺拷貝,
>>> lists = [[] for i in range(3)]
>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
#避免淺拷貝
if
var = var1 if condition else var2

如果 condition 的值為 True, 那么將 var1 的值賦給 var;如果為 False 則將 var2 的值賦給 var。

if condition1:
    true1_expressions
elif condition2:
    true2_expressions
elif condtion3:
    true3_expressions
elif ...
    ...
else:
    else_expressions

如果有多個(gè)判斷條件,那可以通過 elif 語句添加多個(gè)判斷條件,一旦某個(gè)條件為 True,那么將執(zhí)行對應(yīng)的 expression。

for range使用

在 Python 內(nèi)置了工廠函數(shù),range 函數(shù)將會(huì)返回一個(gè)序列,總共有三種使用方法

range(start, stop)

其中 start 將會(huì)是序列的起始值,stop為結(jié)束值,但是不包括該值,類似 數(shù)學(xué)中的表達(dá) [start, stop),左邊為閉區(qū)間,右邊為開區(qū)間。

for i in range(1, 10):
    print(i)

上述表達(dá)將會(huì)返回 1-9 所有整數(shù),但不包含 10

range(stop)

如果省略了 start 那么將從 0 開始,相當(dāng)于 range(0, stop)

range(start, stop, step)

step 代表的為步長,即相隔的兩個(gè)值得差值。從 start 開始,依次增加 step 的值,直至等于或者大于 stop

for i in range(0,13, 5):
    print(i)

將會(huì)輸出 0, 5, 10。

內(nèi)置集合

Python 共內(nèi)置了 list、 tuple 、dictset 四種基本集合,每個(gè)集合對象都能夠迭代。

迭代器和生成器 while

在 Python 中集合類型有 listtupledictset 等,如果該集合對象作為 while 判斷語句, 如果集合中的元素?cái)?shù)量為 0,那么將會(huì)返回 False, 否則返回 True。

a = range(10)
while a:
    print(a[-1])
    a = a[:len(a)-1]

上述程序?qū)?huì)返回 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 程序首先判斷列表是否空,如果不為空,則 打印出最后一個(gè)內(nèi)容,然后使用切片操作去掉最后一個(gè)元素,并更新列表;如此重復(fù),直至列表為空。

讀取操作和文件操作 input

variable=input() 表示運(yùn)行后,可以在屏幕中輸入一個(gè)數(shù)字,該數(shù)字會(huì)賦值給自變量。

print

pythonprint 字符串 要加""或者""

換行命令

達(dá)到 tab 對齊

open

使用 open 能夠打開一個(gè)文件, open 的第一個(gè)參數(shù)為文件名和路徑 ‘my file.txt’, 第二個(gè)參數(shù)為將要以什么方式打開它, 比如 w 為可寫方式. 如果計(jì)算機(jī)沒有找到 ‘my file.txt’ 這個(gè)文件, w 方式能夠創(chuàng)建一個(gè)新的文件, 并命名為 my file.txt

my_file=open("my file.txt","w")   #用法: open("文件名","形式"), 其中形式有"w":write;"r":read.
my_file.write(text)               #該語句會(huì)寫入先前定義好的 text
my_file.close()                   #關(guān)閉文件
append

open("my file.txt","a") 打開類型為 a ,a 即表示 append。

file.read()

使用 file.read() 能夠讀取到文本的所有內(nèi)容.

file= open("my file.txt","r") 
content=file.read()  
print(content)

""""
This is my first test.
This is the second line.
This the third line.
This is appended file.    
""""
file.readline()

如果想在文本中一行行的讀取文本, 可以使用 file.readline(), file.readline() 讀取的內(nèi)容和你使用的次數(shù)有關(guān), 使用第二次的時(shí)候, 讀取到的是文本的第二行, 并可以以此類推:

file= open("my file.txt","r") 
content=file.readline()  # 讀取第一行
print(content)

""""
This is my first test.
""""

second_read_time=file.readline()  # 讀取第二行
print(second_read_time)

"""
This is the second line.
"""
file.readlines()

如果想要讀取所有行, 并可以使用像 for 一樣的迭代器迭代這些行結(jié)果, 我們可以使用file.readlines(), 將每一行的結(jié)果存儲在 list 中, 方便以后迭代。

file= open("my file.txt","r") 
content=file.readlines() # python_list 形式
print(content)

""""
["This is my first test.
", "This is the second line.
", "This the third line.
", "This is appended file."]
""""

# 之后如果使用 for 來迭代輸出:
for item in content:
    print(item)
    
"""
This is my first test.

This is the second line.

This the third line.

This is appended file.
"""
基礎(chǔ)數(shù)據(jù)結(jié)構(gòu) tuple

(tuple)

list

[list]

詳細(xì)文檔

dict

{dict}

詳細(xì)文檔

set 函數(shù) 默認(rèn)參數(shù)

函數(shù)聲明只需要在需要默認(rèn)參數(shù)的地方用 = 號給定即可, 但是要注意所有的默認(rèn)參數(shù)都不能出現(xiàn)在非默認(rèn)參數(shù)的前面。

自調(diào)用

如果想要在執(zhí)行腳本的時(shí)候執(zhí)行一些代碼,比如單元測試,可以在腳本最后加上單元測試 代碼,但是該腳本作為一個(gè)模塊對外提供功能的時(shí)候單元測試代碼也會(huì)執(zhí)行,這些往往我們不想要的,我們可以把這些代碼放入腳本最后:

if __name__ == "__main__":
    #code_here

如果執(zhí)行該腳本的時(shí)候,該 if 判斷語句將會(huì)是 True,那么內(nèi)部的代碼將會(huì)執(zhí)行。 如果外部調(diào)用該腳本,if 判斷語句則為 False,內(nèi)部代碼將不會(huì)執(zhí)行。

可變參數(shù)

顧名思義,函數(shù)的可變參數(shù)是傳入的參數(shù)可以變化的,1個(gè),2個(gè)到任意個(gè)。當(dāng)然可以將這些 參數(shù)封裝成一個(gè) list 或者 tuple 傳入,但不夠 pythonic。使用可變參數(shù)可以很好解決該問題,注意可變參數(shù)在函數(shù)定義不能出現(xiàn)在特定參數(shù)默認(rèn)參數(shù)前面,因?yàn)榭勺儏?shù)會(huì)吞噬掉這些參數(shù)。

def report(name, *grades):
    total_grade = 0
    for grade in grades:
        total_grade += grade
    print(name, "total grade is ", total_grade)

定義了一個(gè)函數(shù),傳入一個(gè)參數(shù)為 name, 后面的參數(shù) *grades 使用了 * 修飾,表明該參數(shù)是一個(gè)可變參數(shù),這是一個(gè)可迭代的對象。該函數(shù)輸入姓名和各科的成績,輸出姓名和總共成績。所以可以這樣調(diào)用函數(shù) report("Mike", 8, 9),輸出的結(jié)果為 Mike total grade is 17, 也可以這樣調(diào)用 report("Mike", 8, 9, 10),輸出的結(jié)果為 Mike total grade is 27

關(guān)鍵字參數(shù)

關(guān)鍵字參數(shù)可以傳入0個(gè)或者任意個(gè)含參數(shù)名的參數(shù),這些參數(shù)名在函數(shù)定義中并沒有出現(xiàn),這些參數(shù)在函數(shù)內(nèi)部自動(dòng)封裝成一個(gè)字典(dict).

def portrait(name, **kw):
    print("name is", name)
    for k,v in kw.items():
        print(k, v)

定義了一個(gè)函數(shù),傳入一個(gè)參數(shù) name, 和關(guān)鍵字參數(shù) kw,使用了 ** 修飾。表明該參數(shù)是關(guān)鍵字參數(shù),通常來講關(guān)鍵字參數(shù)是放在函數(shù)參數(shù)列表的最后。如果調(diào)用參數(shù)portrait("Mike", age=24, country="China", education="bachelor") 輸出:

name is Mike
age 24
country China
education bachelor

通過可變參數(shù)和關(guān)鍵字參數(shù),任何函數(shù)都可以用 universal_func(*args, **kw) 表達(dá)。

類變量

在類中,方法外的變量,所有實(shí)例對象公用

實(shí)例變量

在類方法中,一般在__init__中聲明定義,對象之間獨(dú)立

內(nèi)置類屬性 保護(hù)與私有

單下劃線是Protect

雙下劃線是Private

方法的默認(rèn)值

設(shè)置屬性的默認(rèn)值, 直接在def里輸入即可,如下:

def __init__(self,name,price,height=10,width=14,weight=16):

自定義模塊 自建一個(gè)模塊

這里和視頻有點(diǎn)差別,我自己寫了另外一個(gè)模塊,是計(jì)算五年復(fù)利本息的模塊,代碼如下:模塊寫好后保存在默認(rèn)文件夾:balance.py

d=float(input("Please enter what is your initial balance: 
"))
p=float(input("Please input what is the interest rate (as a number): 
"))
d=float(d+d*(p/100))
year=1
while year<=5:
    d=float(d+d*p/100)
    print("Your new balance after year:",year,"is",d)
    year=year+1
print("your final year is",d)
調(diào)用自己的模塊

新開一個(gè)腳本,import balance

import balance

""""
Please enter what is your initial balance:
50000  # 手動(dòng)輸入我的本金
Please input what is the interest rate (as a number):
2.3  #手動(dòng)輸入我的銀行利息
Your new balance after year: 1 is 52326.45
Your new balance after year: 2 is 53529.95834999999
Your new balance after year: 3 is 54761.14739204999
Your new balance after year: 4 is 56020.653782067144
Your new balance after year: 5 is 57309.12881905469
your final year is 57309.12881905469
""""
模塊存儲路徑說明

在Mac系統(tǒng)中,下載的python模塊會(huì)被存儲到外部路徑site-packages,同樣,我們自己建的模塊也可以放到這個(gè)路徑,最后不會(huì)影響到自建模塊的調(diào)用。

錯(cuò)誤處理 try

輸出錯(cuò)誤:try:, except ... as ...: 看如下代碼

try:
    file=open("eeee.txt","r")  #會(huì)報(bào)錯(cuò)的代碼
except Exception as e:  # 將報(bào)錯(cuò)存儲在 e 中
    print(e)
"""
[Errno 2] No such file or directory: "eeee.txt"
"""

處理錯(cuò)誤:會(huì)使用到循環(huán)語句。首先報(bào)錯(cuò):沒有這樣的文件No such file or directory. 然后決定是否輸入y, 輸入y以后,系統(tǒng)就會(huì)新建一個(gè)文件(要用寫入的類型),再次運(yùn)行后,文件中就會(huì)寫入ssss

try:
    file=open("eeee.txt","r+")
except Exception as e:
    print(e)
    response = input("do you want to create a new file:")
    if response=="y":
        file=open("eeee.txt","w")
    else:
        pass
else:
    file.write("ssss")
    file.close()
"""
[Errno 2] No such file or directory: "eeee.txt"
do you want to create a new file:y

ssss  #eeee.txt中會(huì)寫入"ssss"
多進(jìn)程和多線程 正則表達(dá)式 GUI Reference

筆記大綱參考莫煩PYTHON

淺拷貝和深拷貝參考python 引用和對象理解和Python-copy()與deepcopy()區(qū)別

list和dict參考菜鳥教程

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41393.html

相關(guān)文章

  • ApacheCN 人工智能知識樹 v1.0

    摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時(shí)間,如果你一本書一本書看的話,的確要用很長時(shí)間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識點(diǎn)合并,手動(dòng)整理了這個(gè)知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...

    劉厚水 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.30 - 學(xué)習(xí) Python 來做一些神奇好玩的事情吧

    摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...

    lifesimple 評論0 收藏0
  • ApacheCN 編程/大數(shù)據(jù)/數(shù)據(jù)科學(xué)/人工智能學(xué)習(xí)資源 2019.6

    摘要:請回復(fù)這個(gè)帖子并注明組織個(gè)人信息來申請加入。權(quán)限分配靈活,能者居之。數(shù)量超過個(gè),在所有組織中排名前。網(wǎng)站日超過,排名的峰值為。導(dǎo)航歸檔社區(qū)自媒體平臺微博知乎專欄公眾號博客園簡書合作侵權(quán),請聯(lián)系請抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...

    Bmob 評論0 收藏0
  • 學(xué)習(xí)筆記 | HTML 基本結(jié)構(gòu)和基本標(biāo)簽 ——前端學(xué)習(xí)第一步!

    摘要:基本結(jié)構(gòu)語言中,一個(gè)頁面是由四個(gè)部分組成文檔聲明標(biāo)簽對標(biāo)簽對標(biāo)簽對圖示文檔聲明這是一個(gè)文檔聲明,表示這是一個(gè)頁面。標(biāo)簽標(biāo)簽表示頁面內(nèi)容的范圍。 HTML HTML ...

    sPeng 評論0 收藏0
  • ApacheCN 學(xué)習(xí)資源匯總 2019.3

    摘要:主頁暫時(shí)下線社區(qū)暫時(shí)下線知識庫自媒體平臺微博知乎簡書博客園合作侵權(quán),請聯(lián)系請抄送一份到特色項(xiàng)目中文文檔和教程與機(jī)器學(xué)習(xí)實(shí)用指南人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)科學(xué)比賽系列項(xiàng)目實(shí)戰(zhàn)教程文檔代碼視頻數(shù)據(jù)科學(xué)比賽收集平臺,,劍指,經(jīng)典算法實(shí)現(xiàn)系列課本課本描述 【主頁】 apachecn.org 【Github】@ApacheCN 暫時(shí)下線: 社區(qū) 暫時(shí)下線: cwiki 知識庫 自媒體平臺 ...

    array_huang 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<