摘要:定義默認(rèn)參數(shù)要牢記一點(diǎn)默認(rèn)參數(shù)必須指向不變對(duì)象尾遞歸調(diào)用函數(shù)本身,但是的返回值不包含表達(dá)式。而尾指針相當(dāng)于把常規(guī)的遞歸反過(guò)來(lái),增加一層遞歸的同時(shí)釋放前一個(gè)遞歸指針,所以能夠始終保持只有一個(gè)棧幀在使用中。
教程
1、python大小寫(xiě)敏感
如果字符串里面有很多字符都需要轉(zhuǎn)義,就需要加很多,為了簡(jiǎn)化,Python還允許用r""表示""內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義
>>> print " " >>> print r" "
如果字符串內(nèi)部有很多換行,用 寫(xiě)在一行里不好閱讀,為了簡(jiǎn)化,Python允許用"""..."""的格式表示多行內(nèi)容
>>> print """line1 ... line2 ... line3""" line1 line2 line3
注意:.py文件里輸入中文,然后在解析器執(zhí)行文件,發(fā)現(xiàn)報(bào)錯(cuò)。
解決辦法:在文件頭部加上#coding:utf-8
如果設(shè)置為gbk則不行,原因很簡(jiǎn)單,我用的編輯器的編碼為utf-8,所以我保存的文件自動(dòng)為utf-8,如果文件的頭部設(shè)置為gbk編碼的話,那么解析器去解析時(shí)用gbk解析,所以會(huì)報(bào)錯(cuò)。
3、python 有序集合(list)
如果要取最后一個(gè)元素,除了計(jì)算索引位置外,還可以用-1做索引,直接獲取最后一個(gè)元素
>>> classmates[-1] "Tracy
*另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改
循環(huán)是讓計(jì)算機(jī)做重復(fù)任務(wù)的有效的方法,有些時(shí)候,如果代碼寫(xiě)得有問(wèn)題,會(huì)讓程序陷入“死循環(huán)”,也就是永遠(yuǎn)循環(huán)下去。這時(shí)可以用Ctrl+C退出程序,或者強(qiáng)制結(jié)束Python進(jìn)程。
4、空函數(shù)
如果想定義一個(gè)什么事也不做的空函數(shù),可以用pass語(yǔ)句:
def nop(): pass
空函數(shù)可以作為占位符,此時(shí)不定義,可以在以后定義。比如我們可以這樣使用它:
if a>12: pass
5、定義一個(gè)函數(shù)
import math def move(x,y,step,radius): x1 = x + step * math.cos(radius) y1 = y - step * math.sin(radius) return x1,y1 print move(2,3,4,20)
總結(jié):定義函數(shù)時(shí),需要確定函數(shù)名和參數(shù)個(gè)數(shù);
如果有必要,可以先對(duì)參數(shù)的數(shù)據(jù)類型做檢查;
函數(shù)體內(nèi)部可以用return隨時(shí)返回函數(shù)結(jié)果;
函數(shù)執(zhí)行完畢也沒(méi)有return語(yǔ)句時(shí),自動(dòng)return None。
函數(shù)可以同時(shí)返回多個(gè)值,但其實(shí)就是一個(gè)tuple。
定義默認(rèn)參數(shù)要牢記一點(diǎn):默認(rèn)參數(shù)必須指向不變對(duì)象!
4、尾遞歸
調(diào)用函數(shù)本身,但是return的返回值不包含表達(dá)式。這么做可以防止遞歸層數(shù)過(guò)多,出現(xiàn)堆棧溢出的情況。因?yàn)槌R?guī)遞歸會(huì)逐層添加棧幀,直到最后一個(gè)棧幀釋放后才開(kāi)始釋放。而尾指針相當(dāng)于把常規(guī)的遞歸反過(guò)來(lái),增加一層遞歸的同時(shí)釋放前一個(gè)遞歸指針,所以能夠始終保持只有一個(gè)棧幀在使用中。
常規(guī)遞歸
def fact(n): if n==1: return 1 return n * fact(n - 1)
尾遞歸
def fact(n): return fact_iter(1, 1, n) def fact_iter(product, count, max): if count > max: return product return fact_iter(product * count, count + 1, max)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37508.html
摘要:將程序包裝在界面里,可以將輸入通過(guò)多種途徑如文本框彈出路徑選擇等輸入到程序里。將輸出通過(guò)文本框顯示出來(lái)將執(zhí)行信息如如報(bào)錯(cuò)信息運(yùn)行進(jìn)度通過(guò)文本框或進(jìn)度條顯示出來(lái)文章安排先介紹安裝和配合的使用。 作為一個(gè)程序的開(kāi)發(fā)者,我們僅僅需要在相應(yīng)路徑通過(guò)命令行就可執(zhí)行那個(gè)程序。但是,不懂行的人不理解這個(gè)黑框框的東西,陌生領(lǐng)域任何人都沒(méi)有安全感,所以他們是拒絕接受一個(gè)項(xiàng)目?jī)H僅只是通過(guò)一個(gè)黑框框來(lái)執(zhí)行的...
摘要:用輸出,英文沒(méi)有問(wèn)題,但是如果你輸出中文字符你好,世界就有可能會(huì)碰到中文編碼問(wèn)題。實(shí)例你好,世界輸出結(jié)果為所以如果大家在學(xué)習(xí)過(guò)程中,代碼中包含中文,就需要在頭部指定編碼。注意源碼文件默認(rèn)使用編碼,所以可以正常解析中文,無(wú)需指定編碼。 用 Python 輸出?Hello, World!,英文沒(méi)有問(wèn)題,但是如果你輸出中文字符?你好,世界?就有可能會(huì)碰到中文編碼問(wèn)題。 Python 文件中如...
摘要:本文是通過(guò)廖雪峰的網(wǎng)站學(xué)習(xí)而整理的真的是很好的教程,省得我花錢買書(shū)了,然后我沒(méi)有去再整理總結(jié)語(yǔ)法,而是直接通過(guò)寫(xiě)出代碼段來(lái)體現(xiàn)自己的學(xué)習(xí),也方便以后的快速?gòu)?fù)習(xí)回顧。 不想再像以前那樣,什么都從頭開(kāi)始學(xué)習(xí)語(yǔ)法、總結(jié)語(yǔ)法,這樣反而會(huì)過(guò)分糾結(jié)于語(yǔ)法,耽誤了開(kāi)發(fā),畢竟語(yǔ)言的主要屬性是工具,次要的屬性是語(yǔ)言本身。 所以還是先熟練使用語(yǔ)言去進(jìn)行開(kāi)發(fā),等足夠熟悉了,再去研究語(yǔ)言本身(編譯原理……)。...
摘要:博客寫(xiě)得差不多了,打算部署到云上因?yàn)樗俣鹊年P(guān)系,不打算部署在上,于是申請(qǐng)了阿里云,環(huán)境是上篇文章提到的位安裝和配置好和,又稍微了解點(diǎn)服務(wù)器的知識(shí)后,打算按這里的方法進(jìn)行部署,思路是用當(dāng)應(yīng)用容器,當(dāng)反向代理安裝安裝非常簡(jiǎn)單,一條命令就解決了測(cè) 博客寫(xiě)得差不多了,打算部署到云上因?yàn)樗俣鹊年P(guān)系,不打算部署在AWS上,于是申請(qǐng)了阿里云,環(huán)境是上篇文章提到的CentOS 7 64位安裝和配置好P...
小編寫(xiě)這篇文章的主要目的,就是給大家來(lái)介紹關(guān)于pycharm故障報(bào)錯(cuò)的一些相關(guān)問(wèn)題,涉及到的故障問(wèn)題有keras導(dǎo)入報(bào)錯(cuò)無(wú)法自動(dòng)補(bǔ)全,另外,還有cannot find reference無(wú)法補(bǔ)全,遇到這種問(wèn)題怎么處理呢?下面就給大家詳細(xì)解答下?! ∫浴 ∧壳盁o(wú)論是中文還是國(guó)外網(wǎng)站對(duì)于如何正確的導(dǎo)入keras,如何從tensorflow中導(dǎo)入keras,如何在pycharm中從tensorfl...
閱讀 968·2023-04-25 23:50
閱讀 2001·2021-11-19 09:40
閱讀 613·2019-08-30 13:50
閱讀 2742·2019-08-29 17:11
閱讀 1053·2019-08-29 16:37
閱讀 2998·2019-08-29 12:54
閱讀 2808·2019-08-28 18:17
閱讀 2651·2019-08-26 16:55