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)
相关文章
相关标签/搜索