资讯专栏INFORMATION COLUMN

python学习笔记之一(.py文件里输入中文报错)

heartFollower / 1544人阅读

摘要:定义默认参数要牢记一点默认参数必须指向不变对象尾递归调用函数本身,但是的返回值不包含表达式。而尾指针相当于把常规的递归反过来,增加一层递归的同时释放前一个递归指针,所以能够始终保持只有一个栈帧在使用中。

教程

1、python大小写敏感
如果字符串里面有很多字符都需要转义,就需要加很多,为了简化,Python还允许用r""表示""内部的字符串默认不转义

>>> print "	"
       
>>> print r"	"
	

如果字符串内部有很多换行,用 写在一行里不好阅读,为了简化,Python允许用"""..."""的格式表示多行内容

>>> print """line1
... line2
... line3"""
line1
line2
line3

注意:.py文件里输入中文,然后在解析器执行文件,发现报错。

解决办法:在文件头部加上#coding:utf-8

如果设置为gbk则不行,原因很简单,我用的编辑器的编码为utf-8,所以我保存的文件自动为utf-8,如果文件的头部设置为gbk编码的话,那么解析器去解析时用gbk解析,所以会报错。

3、python 有序集合(list)

如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素

>>> classmates[-1]
"Tracy

*另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改

循环是让计算机做重复任务的有效的方法,有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程。

4、空函数
如果想定义一个什么事也不做的空函数,可以用pass语句:

def nop():
    pass

空函数可以作为占位符,此时不定义,可以在以后定义。比如我们可以这样使用它:

if a>12:
    pass

5、定义一个函数

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。

定义默认参数要牢记一点:默认参数必须指向不变对象!

4、尾递归
调用函数本身,但是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)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37508.html

相关文章

  • 图解——PyQt4从入门到运用

    摘要:将程序包装在界面里,可以将输入通过多种途径如文本框弹出路径选择等输入到程序里。将输出通过文本框显示出来将执行信息如如报错信息运行进度通过文本框或进度条显示出来文章安排先介绍安装和配合的使用。 作为一个程序的开发者,我们仅仅需要在相应路径通过命令行就可执行那个程序。但是,不懂行的人不理解这个黑框框的东西,陌生领域任何人都没有安全感,所以他们是拒绝接受一个项目仅仅只是通过一个黑框框来执行的...

    史占广 评论0 收藏0
  • python零基础系统学习教程,如何解决,Python中文编码乱码问题?

    摘要:用输出,英文没有问题,但是如果你输出中文字符你好,世界就有可能会碰到中文编码问题。实例你好,世界输出结果为所以如果大家在学习过程中,代码中包含中文,就需要在头部指定编码。注意源码文件默认使用编码,所以可以正常解析中文,无需指定编码。 用 Python 输出 Hello, World!,英文没有问题,但是如果你输出中文字符 你好,世界 就有可能会碰到中文编码问题。 Python 文件中如...

    newsning 评论0 收藏0
  • 记录我的Python学习笔记

    摘要:本文是通过廖雪峰的网站学习而整理的真的是很好的教程,省得我花钱买书了,然后我没有去再整理总结语法,而是直接通过写出代码段来体现自己的学习,也方便以后的快速复习回顾。 不想再像以前那样,什么都从头开始学习语法、总结语法,这样反而会过分纠结于语法,耽误了开发,毕竟语言的主要属性是工具,次要的属性是语言本身。 所以还是先熟练使用语言去进行开发,等足够熟悉了,再去研究语言本身(编译原理……)。...

    lijy91 评论0 收藏0
  • 安装配置gunicorn和NGINX的学习笔记

    摘要:博客写得差不多了,打算部署到云上因为速度的关系,不打算部署在上,于是申请了阿里云,环境是上篇文章提到的位安装和配置好和,又稍微了解点服务器的知识后,打算按这里的方法进行部署,思路是用当应用容器,当反向代理安装安装非常简单,一条命令就解决了测 博客写得差不多了,打算部署到云上因为速度的关系,不打算部署在AWS上,于是申请了阿里云,环境是上篇文章提到的CentOS 7 64位安装和配置好P...

    Ali_ 评论0 收藏0
  • pycharm故障报错:keras导入报错无法自动补全cannot find reference无法

      小编写这篇文章的主要目的,就是给大家来介绍关于pycharm故障报错的一些相关问题,涉及到的故障问题有keras导入报错无法自动补全,另外,还有cannot find reference无法补全,遇到这种问题怎么处理呢?下面就给大家详细解答下。  引言  目前无论是中文还是国外网站对于如何正确的导入keras,如何从tensorflow中导入keras,如何在pycharm中从tensorfl...

    89542767 评论0 收藏0

发表评论

0条评论

heartFollower

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<