欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

我要偷偷的學(xué)Python,然后驚呆所有人(第二天) - 新聞資訊 - 云南小程序開(kāi)發(fā)|云南軟件開(kāi)發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開(kāi)發(fā)/軟件開(kāi)發(fā)

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁(yè) » 新聞資訊 » 技術(shù)分享 >

我要偷偷的學(xué)Python,然后驚呆所有人(第二天)

發(fā)表時(shí)間:2020-10-15

發(fā)布人:葵宇科技

瀏覽次數(shù):95

在這里插入圖片描述

標(biāo)題無(wú)意冒犯,就是覺(jué)得這個(gè)廣告挺好玩的
上面這張思維導(dǎo)圖喜歡就拿走,反正我也學(xué)不了這么多

文章目錄

    • 前言
    • 編程學(xué)習(xí)的瓶頸
    • 函數(shù)其實(shí)沒(méi)那么可怕
      • 初始函數(shù)
      • 定義一個(gè)函數(shù)
      • 函數(shù)規(guī)則
        • 示例2:
        • 示例3:
        • 示例4:
        • 示例5:
      • 全局變量和局部變量
    • 函數(shù)小項(xiàng)目
    • 物以 “類(lèi)” 聚
      • 類(lèi)的創(chuàng)建
      • 類(lèi)的實(shí)例化
      • 類(lèi)的調(diào)用
      • 類(lèi)的繼承
      • 類(lèi)的多繼承
      • 父類(lèi)函數(shù)重寫(xiě)
    • 實(shí)戰(zhàn)小項(xiàng)目

前言

前期回顧:我要偷偷學(xué)Python,然后驚呆所有人(第一天)
上面這篇里面寫(xiě)了python的一些知識(shí)基礎(chǔ),從數(shù)據(jù)類(lèi)型到四則運(yùn)算,再到分支、循環(huán)。

那么今天,我們就看一下比較抽象的函數(shù)和類(lèi),如果對(duì)基礎(chǔ)還不是很熟練的話可以再扎實(shí)一下基礎(chǔ),畢竟萬(wàn)丈高樓平地起嘛,基礎(chǔ)不老實(shí)是很危險(xiǎn)的。

本系列文默認(rèn)各位有一定的C或C++基礎(chǔ),因?yàn)槲沂菍W(xué)了點(diǎn)C++的皮毛之后入手的Python,這里也要感謝齊鋒學(xué)長(zhǎng)送來(lái)的支持。
本系列文默認(rèn)各位會(huì)百度,會(huì)用在線編譯器,因?yàn)槲沂峭粨魧W(xué)Python的,之前的編譯環(huán)境都刪了,但是吧,我發(fā)現(xiàn)在線編譯是真的爽,浪費(fèi)那時(shí)間去搭那環(huán)境干啥,學(xué)好了Python,會(huì)差那點(diǎn)請(qǐng)人搭環(huán)境的錢(qián)嗎?

我要的不多,點(diǎn)個(gè)關(guān)注就好啦
然后呢,本系列的目錄嘛,說(shuō)實(shí)話我個(gè)人比較傾向于那兩本 Primer Plus,所以就跟著它們的目錄結(jié)構(gòu)吧。

本系列也會(huì)著重培養(yǎng)各位的自主動(dòng)手能力,畢竟我不可能把所有知識(shí)點(diǎn)都給你講到,所以自己解決需求的能力就尤為重要,所以我在文中埋得坑請(qǐng)不要把它們看成坑,那是我留給你們的鍛煉機(jī)會(huì),請(qǐng)各顯神通,自行解決。

好,接下來(lái)切入正題。


編程學(xué)習(xí)的瓶頸

先來(lái)聊點(diǎn)輕松的嘛,一上來(lái)就講那些佶屈聱牙的多沒(méi)意思啊。

不論大家是有基礎(chǔ),還是沒(méi)基礎(chǔ);是學(xué)過(guò)編程,還是學(xué)過(guò)數(shù)學(xué);多多少少都會(huì)遇上硬茬。比方說(shuō)我,在學(xué)習(xí)編程的路上遇到的第一個(gè)問(wèn)題就是函數(shù)傳參,哇靠,當(dāng)時(shí),我意氣風(fēng)發(fā),畢竟咱是C++考了九十分的人,要橫著走。但是到企業(yè)里面培訓(xùn)的第一天,老師給我們看了(講解)一段代碼的時(shí)候,整個(gè)人就給我整懵逼了,是一個(gè)結(jié)構(gòu)體作數(shù)據(jù)類(lèi)型的參數(shù),是一堆這樣的參數(shù)放在同一個(gè)函數(shù)里面。。。

然后在另一個(gè)地方,準(zhǔn)確的說(shuō)是另一個(gè)文件里面,調(diào)用這個(gè)函數(shù),當(dāng)時(shí)我聽(tīng)得一愣一愣的,連錄屏都忘了錄,等到我自己實(shí)操的時(shí)候。。。
傳什么?傳到哪里???暈死。。。

好啊,扯遠(yuǎn)了,大家可以在評(píng)論區(qū)打出自己遇到的瓶頸,說(shuō)不定你的苦思冥想,其他人早已有了解決方案。

一山放過(guò)一山攔啊,能看懂代碼只是基礎(chǔ)的第一步,你還要自己寫(xiě)。自己寫(xiě)的時(shí)候就容易遇上各種各樣的問(wèn)題了,第二道坎,就是debug。

說(shuō)多了都是淚,后面都會(huì)教大家這些技能,這篇我們先來(lái)看一下函數(shù)和類(lèi),后面再講分文件項(xiàng)目、Debug、基本的項(xiàng)目設(shè)計(jì)與架構(gòu)等東西,喜歡的話可以跟進(jìn)。


函數(shù)其實(shí)沒(méi)那么可怕

初始函數(shù)

函數(shù)是嗎?學(xué)過(guò)中學(xué)數(shù)學(xué)的都知道函數(shù)吧。
此函數(shù),非彼函數(shù)。

函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。
函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫做用戶(hù)自定義函數(shù)。

定義一個(gè)函數(shù)

一圖勝千言:
在這里插入圖片描述

示例:

def math(x):
    y = 3*x + 5
    return y

這個(gè)函數(shù)用于實(shí)現(xiàn):y = 3x+5 的求值,這里的x就是參數(shù),別急,這里的規(guī)矩很多,聽(tīng)我慢慢講。

首先各位有沒(méi)有編譯器,碧如pycharm之類(lèi)的,沒(méi)有也沒(méi)關(guān)系,在線編譯器還是很多的,碧如“編程中國(guó)”,選擇Python編程。
把上面這一段先拿去編譯一下,運(yùn)行一下,不會(huì)運(yùn)行的朋友可以百度一下。

運(yùn)行之后你會(huì)發(fā)現(xiàn)根本沒(méi)什么東西嘛,這不是騙人嘛,對(duì),這不是騙人,咱又沒(méi)調(diào)用,自然沒(méi)東西。

函數(shù)規(guī)則

函數(shù)代碼塊以 def 關(guān)鍵詞開(kāi)頭,后接函數(shù)標(biāo)識(shí)符名稱(chēng)和圓括號(hào)(),括號(hào)后面要緊跟冒號(hào),不然會(huì)報(bào)錯(cuò)。def就相當(dāng)于告訴編譯器:我這里是一個(gè)函數(shù),你注意一下哈

任何傳入?yún)?shù)必須放在圓括號(hào)中間,關(guān)于這個(gè)參數(shù)的規(guī)矩嘛:
1、在調(diào)用函數(shù)時(shí),對(duì)函數(shù)進(jìn)行參數(shù)傳遞必須與函數(shù)聲明時(shí)的參數(shù)列表對(duì)應(yīng)。
2、函數(shù)聲明時(shí)可以聲明默認(rèn)參數(shù),在函數(shù)調(diào)用時(shí)如果沒(méi)有對(duì)默認(rèn)參數(shù)進(jìn)行傳值,這默認(rèn)參數(shù)使用預(yù)設(shè)值,默認(rèn)參數(shù)要放在參數(shù)列表最右側(cè)
3、函數(shù)外傳參的參數(shù)數(shù)據(jù)類(lèi)型須一一對(duì)應(yīng)(有些可以強(qiáng)轉(zhuǎn),碧如float轉(zhuǎn)int4、參數(shù)類(lèi)型多種多樣,并不局限于常見(jiàn)的int、float、str等參數(shù)類(lèi)型,也可以傳類(lèi)對(duì)象等

函數(shù)內(nèi)容以冒號(hào)起始,并且縮進(jìn)。

return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。

對(duì)于函數(shù)的調(diào)用,直接輸入函數(shù)名,并傳入?yún)?shù)(這里不考慮跨文件)

具體的,多看。

示例2:

# 定義函數(shù)
def printstr( str ):
   "打印任何傳入的字符串"
   print(str)
   return
 
# 調(diào)用函數(shù)
printstr("我要調(diào)用用戶(hù)自定義函數(shù)!")
printstr("再次調(diào)用同一函數(shù)")

示例3:

def annimal(annimal1, annimal2):
    print('Look,here is :' + annimal1)
    print('Oh there is :' + annimal2)
menu('tiger','lion')
def action(action1,action2):
    print('He is '+action1)
    print('She is '+action2)
list('sleeping','running')

結(jié)果:

Look,here is tiger
Oh there is lion
He is sleeping
She is running

示例4:

默認(rèn)參數(shù)法:

def annimal(annimal1, annimal2, annimal3 = '貓'):
    print('大型動(dòng)物:' + annimal1)
    print('中型動(dòng)物:' + annimal2)
    print('小型動(dòng)物:' + annimal3)


menu('大象','獵豹')
menu('鯨魚(yú)','馬','狗')

結(jié)果:

大型動(dòng)物:大象
中型動(dòng)物:獵豹
小型動(dòng)物:貓
大型動(dòng)物:鯨魚(yú)
中型動(dòng)物:貓
小型動(dòng)物:狗

示例5:

不定長(zhǎng)參數(shù)

它的格式比較特殊,是一個(gè)星號(hào)*加上參數(shù)名,它的返回值也比較特殊,我們來(lái)看看下面的例子。

def print_str(*str):
    return str

order = print_str('Hello','World','!')
#括號(hào)里的這幾個(gè)值都會(huì)傳遞給參數(shù)str

print(order)
print(type(order))

結(jié)果:
你會(huì)發(fā)現(xiàn)函數(shù)返回的是這樣的結(jié)果:(‘Hello’, ‘World’, ‘!’),我們用type()函數(shù)可以知道這種數(shù)據(jù)類(lèi)型叫作元組(tuple)

和列表一樣,元組是可迭代對(duì)象,這意味著我們可以用for循環(huán)來(lái)遍歷它,這時(shí)候的代碼就可以寫(xiě)成:

def menu(*barbeque):
    for i in barbeque:
        print('一份烤串:' + i)

menu('烤香腸', '烤肉丸')        
menu('烤雞翅', '烤茄子', '烤玉米')
# 不定長(zhǎng)參數(shù)可以接收任意數(shù)量的值
一份烤串:烤香腸
一份烤串:烤肉丸
一份烤串:烤雞翅
一份烤串:烤茄子
一份烤串:烤玉米

全局變量和局部變量

定義在函數(shù)內(nèi)部的變量擁有一個(gè)局部作用域,定義在函數(shù)外的擁有全局作用域。

局部變量只能在其被聲明的函數(shù)內(nèi)部訪問(wèn),而全局變量可以在整個(gè)程序范圍內(nèi)訪問(wèn)。調(diào)用函數(shù)時(shí),所有在函數(shù)內(nèi)聲明的變量名稱(chēng)都將被加入到作用域中。

total = 0 # 這是一個(gè)全局變量
# 可寫(xiě)函數(shù)說(shuō)明
def sum( arg1, arg2 ):
   #返回2個(gè)參數(shù)的和."
   total = arg1 + arg2 # total在這里是局部變量.
   print("函數(shù)內(nèi)是局部變量 : ", total)
   return total
 
#調(diào)用sum函數(shù)
sum( 10, 20 )
print("函數(shù)外是全局變量 : ", total)

輸出結(jié)果:

函數(shù)內(nèi)是局部變量 :  30
函數(shù)外是全局變量 :  0

我再想想還差些啥哈。

哦,多函數(shù)嵌套。
就像俄羅斯套娃一樣,一個(gè)函數(shù)中還能有另一個(gè)函數(shù)。

其實(shí)這個(gè)很好理解,想想print,它就是個(gè)函數(shù),前面不就經(jīng)常把print放在別的函數(shù)里面使用了嘛。


函數(shù)小項(xiàng)目

寫(xiě)一個(gè)小型計(jì)算器,支持四則運(yùn)算,不帶括號(hào),帶括號(hào)的太難了吧。

在這里插入圖片描述


物以 “類(lèi)” 聚

什么是類(lèi)?什么是對(duì)象?
現(xiàn)在的高級(jí)編程語(yǔ)言吧,它都有一個(gè)門(mén)檻,就是你得是面向?qū)ο缶幊痰?#xff0c;而面向?qū)ο缶幊?#xff0c;你要有類(lèi)的支持。
那么什么是面向?qū)ο缶幊棠?#xff1f;就是描述一類(lèi)事務(wù)的特征與功能,就比方說(shuō)人類(lèi),那么對(duì)象就是人,人類(lèi)這個(gè)類(lèi)當(dāng)中就要實(shí)現(xiàn)人的特征和功能。
特征:

沒(méi)什么毛
兩個(gè)肩膀扛一個(gè)腦袋
等等

技能:

直立行走
使用火
能寫(xiě)字
等等

是吧,將這些特征和技能集合在一起中,就是人類(lèi)。

再講兩個(gè)概念,對(duì)象和實(shí)例:
對(duì)象是什么呢,就是你要構(gòu)造的這個(gè)類(lèi),是以什么為模型構(gòu)造的,拿上面那個(gè)人類(lèi)的例子來(lái)說(shuō),可以理解為女?huà)z捏人時(shí)的模子,女?huà)z在面對(duì)‘人’這個(gè)對(duì)象捏土。
實(shí)例是什么呢?就是通過(guò)這個(gè)類(lèi)構(gòu)造出來(lái)的,具有類(lèi)的一切特征和功能的玩意兒,可以理解為女?huà)z捏出來(lái)的一個(gè)個(gè)實(shí)實(shí)在在的人。

類(lèi)的創(chuàng)建

在這里插入圖片描述

看圖說(shuō)話,一圖勝千言。

類(lèi)的實(shí)例化

在這里插入圖片描述

類(lèi)的調(diào)用

在這里插入圖片描述

來(lái),整理一下一條龍服務(wù):
創(chuàng)建一個(gè)人類(lèi),他有兩條腿,他能跑能跳,怎么寫(xiě)?這么寫(xiě):

class People:
	leg = 2
	def run(self):
		print('他是一個(gè)人,他能跑')
	def jump(self):
		print('He is a man,he can jump')

lihua = People()
lihua.run()

好,這里面還有點(diǎn)沒(méi)講清楚的,碧如說(shuō)那個(gè)‘self’,到底是干嘛的。

  1. self,顧名思義嘛。好,我們直接看怎么用。
class People:
	leg = 2
	def run(self):
		print('他是一個(gè)人,他有%d條腿,所以他能跑',self.leg)
	def jump(self):
		print('He is a man,he can jump because of his %d legs',legs)

lihua = People()
lihua.run()

如果要在類(lèi)的外部調(diào)用類(lèi)屬性,我們得先創(chuàng)建一個(gè)實(shí)例,再用實(shí)例名.屬性的格式調(diào)用,

那么如果想在類(lèi)的內(nèi)部調(diào)用類(lèi)屬性,而實(shí)例又還沒(méi)創(chuàng)建之前,我們就需要有個(gè)變量先代替實(shí)例接收數(shù)據(jù),這個(gè)變量就是參數(shù)self。

self的作用相當(dāng)于先給實(shí)例占了個(gè)位置,等到實(shí)例創(chuàng)建好就“功成身退,退位讓賢”。

同理,如果想在類(lèi)的方法內(nèi)部調(diào)用其他方法時(shí),我們也需要用到self來(lái)代表實(shí)例。

  1. 初始化方法
    在C++中,有類(lèi)的初始化,那Python的類(lèi)里面肯定也是會(huì)有的啊。那我們來(lái)看一下栗子:

定義初始化方法的格式是def init(self),是由init加左右兩邊的【雙】下劃線組成( initialize “初始化”的縮寫(xiě))。
初始化方法的作用在于:當(dāng)每個(gè)實(shí)例對(duì)象創(chuàng)建時(shí),該方法內(nèi)的代碼無(wú)須調(diào)用就會(huì)自動(dòng)運(yùn)行。

class People:
	def __init__(self):
		print('恭喜你,你造了個(gè)人')
lihua1 = People()

這是一種,再來(lái)一種

class People:
	def __init__(self,num):
		self.num = num
	def born()
		print('恭喜你,你獲得了'+self.num+'個(gè)好朋友')
lihua2 = People(2)
lihua2.born()

分水嶺,難度再拔高

類(lèi)的繼承

什么是繼承,在C++里面繼承還是很好玩的,就像你的父親是一個(gè)類(lèi),你繼承了你父親的一些特征與技能,也可以有自己的技能,這就是繼承。

在這里插入圖片描述

然后我們來(lái)實(shí)現(xiàn)一下上面所說(shuō)的:

class Father:
	skin = 'yellow'
	def clever():
		print('他是個(gè)聰明人')

class Son(Father):
	def strugle():
		print('他很努力')

lihua = Son()
lihua.clever()
print(lihua.skin)
lihua.strucle()

類(lèi)的多繼承

一個(gè)類(lèi),可以同時(shí)繼承多個(gè)類(lèi),語(yǔ)法為class A(B,C,D):

這里各位可以自己實(shí)現(xiàn)一下一個(gè)人,繼承了自己父母親雙方的優(yōu)點(diǎn),比如說(shuō)父親聰明,母親好看,他又聰明又好看,還上進(jìn)。

小tip:就近原則:越靠近子類(lèi)(即越靠左)的父類(lèi),越親近,越優(yōu)先考慮。子類(lèi)調(diào)用屬性和方法時(shí),會(huì)先在靠左的父類(lèi)里找,找不到才往右找。

在這里插入圖片描述

多學(xué)一點(diǎn):
在這里插入圖片描述


父類(lèi)函數(shù)重寫(xiě)

重寫(xiě)代碼,是在子類(lèi)中,對(duì)父類(lèi)代碼的修改。

簡(jiǎn)單的舉個(gè)栗子,其實(shí)這個(gè)還是很重要的一點(diǎn):

class Father:
	skin = 'yellow'
	def clever():
		print('他的智商100')

class Son(Father):
	def clever():
		print('他的智商110')
	def strugle():
		print('他很努力')
lihua = Son()
lihua.clever()

實(shí)戰(zhàn)小項(xiàng)目

這里,我們來(lái)實(shí)現(xiàn)一個(gè)家族傳承的小故事,來(lái)鞏固一下我們今天學(xué)習(xí)的東西:

他本家境優(yōu)渥,他的太爺爺白手做紗布生意白手起家,到了他爺爺這一代,生意進(jìn)一步擴(kuò)大,新增了藥店生意、錢(qián)莊生意,到了他父親這一代,倭寇入侵,時(shí)局動(dòng)蕩,百姓流離,于是他的父親毅然決定開(kāi)棚賑粥,開(kāi)鋪放藥,就這么堅(jiān)持了幾年之后,終于散盡家財(cái),但是他們無(wú)怨無(wú)悔。國(guó)破山河在?

到了他這一代,響應(yīng)國(guó)家中華民族偉大復(fù)興的口號(hào),他苦練技術(shù),期待著有一天能重整家族的輝煌···

哎,后續(xù)各位自己編,我們來(lái)實(shí)現(xiàn)四個(gè)類(lèi):他太爺爺,他爺爺,他爸,他。把這一條故事線串一串。

加油!!

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

持續(xù)更新中,喜歡的可以跟進(jìn)哦

相關(guān)案例查看更多