python學習筆記之一(.py文件裏輸入中文報錯)

教程python

一、python大小寫敏感
若是字符串裏面有不少字符都須要轉義,就須要加不少\,爲了簡化,Python還容許用r''表示''內部的字符串默認不轉義編輯器

>>> print '\\\t\\'
\       \
>>> print r'\\\t\\'
\\\t\\

若是字符串內部有不少換行,用\n寫在一行裏很差閱讀,爲了簡化,Python容許用'''...'''的格式表示多行內容函數

>>> print '''line1
... line2
... line3'''
line1
line2
line3

注意:.py文件裏輸入中文,而後在解析器執行文件,發現報錯。
圖片描述
解決辦法:在文件頭部加上#coding:utf-8
圖片描述
若是設置爲gbk則不行,緣由很簡單,我用的編輯器的編碼爲utf-8,因此我保存的文件自動爲utf-8,若是文件的頭部設置爲gbk編碼的話,那麼解析器去解析時用gbk解析,因此會報錯。編碼

三、python 有序集合(list)spa

若是要取最後一個元素,除了計算索引位置外,還能夠用-1作索引,直接獲取最後一個元素指針

>>> classmates[-1]
'Tracy

*另外一種有序列表叫元組:tuple。tuple和list很是相似,可是tuple一旦初始化就不能修改code

循環是讓計算機作重複任務的有效的方法,有些時候,若是代碼寫得有問題,會讓程序陷入「死循環」,也就是永遠循環下去。這時能夠用Ctrl+C退出程序,或者強制結束Python進程。對象

四、空函數
若是想定義一個什麼事也不作的空函數,能夠用pass語句:blog

def nop():
    pass

空函數能夠做爲佔位符,此時不定義,能夠在之後定義。好比咱們能夠這樣使用它:教程

if a>12:
    pass

五、定義一個函數

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)

總結:定義函數時,須要肯定函數名和參數個數;

若是有必要,能夠先對參數的數據類型作檢查;

函數體內部能夠用return隨時返回函數結果;

函數執行完畢也沒有return語句時,自動return None。

函數能夠同時返回多個值,但其實就是一個tuple。

定義默認參數要牢記一點:默認參數必須指向不變對象!

四、尾遞歸
調用函數自己,可是return的返回值不包含表達式。這麼作能夠防止遞歸層數過多,出現堆棧溢出的狀況。由於常規遞歸會逐層添加棧幀,直到最後一個棧幀釋放後纔開始釋放。而尾指針至關於把常規的遞歸反過來,增長一層遞歸的同時釋放前一個遞歸指針,因此可以始終保持只有一個棧幀在使用中。

常規遞歸

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)
相關文章
相關標籤/搜索