Python初学的几个迷惑点

1.bytes和str函数

这个得感谢这个博主的分享https://www.cnblogs.com/chownjy/p/6625299.html

那我接下来就简述下他文章的意思吧:

  • bytes格式时二进制型的文件,全为010101之类的,而str为字符串型的
  • bytes函数中的参数为bytes(字符串,encoding=‘ 括号里面经常填utf-8‘)其中encoding一定要填,str函数则为str()与其是一样的格式,针对utf-8格式为万国码格式,一个英文字母一个字节,一个中文字符三个字节
  • bytes数据有方法decode方法,因此我们前面的read方法返回的是字符串类型数据,而str则有方法encode类型,这两个方法可将这两个数据类型转为utf-8类型
  • Python已经严格区分了bytesstr两种数据类型,你不能在需要bytes类型参数的时候使用str参数,反之亦然。这点在读写磁盘文件时容易碰到

2.python的try语句

  • try...except....else

try A:

B;

except  C:  #如果发生错误看是否为错误类型C

D;

except  E:  #如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)

F;

else  G; #如果程序未出错则执行G

H;

  • try...finally

try A:

B;

finally  C:  #不管有无发生错误都会执行C语句

D;

详情还可以参考这篇博客https://blog.csdn.net/sdustliyang/article/details/23159659

3. with...as结构

这个语法是用来代替传统的try...finally语法的

file = open("/tmp/foo.txt")
try:
    data = file.read()
finally:
    file.close()  

使用with...as...的方式替换,修改后的代码是:

with open("/tmp/foo.txt") as file:
    data = file.read()  

下面解析他的具体结构:

class Sample:
        #魔法方法相当于他的属性    def __enter__(self):
        print "In __enter__()"
        return "Foo"  

    def __exit__(self, type, value, trace):
        print "In __exit__()"  

def get_sample():
    return Sample()  

with get_sample() as sample:
    print "sample:", sample  

结果为

In __enter__()
sample: Foo
In __exit__()  

1. __enter__()方法被执行

2. __enter__()方法返回的值 - 这个例子中是"Foo",赋值给变量‘sample‘

3. 执行代码块,打印变量"sample"的值为 "Foo"

4. __exit__()方法被调用with真正强大之处是它可以处理异常。可能你已经注意到Sample类的__exit__方法有三个参数- val, type 和 trace。这些参数在异常处理中相当有用。

在一开始的例子中也就相当于:

1.打开文件

2.返回了文本的内容

3.执行读取操作

详情可参考博客http://www.360doc.com/content/16/0905/16/25664332_588595085.shtml

https://www.cnblogs.com/DswCnblog/p/6126588.html

原文地址:https://www.cnblogs.com/gausstu/p/9508859.html

时间: 2024-11-03 22:11:49

Python初学的几个迷惑点的相关文章

python 初学02 替换文件内容

用python替换文件内容的方法,搜了网上许多例子,又请教了朋友. 把完整的实现流程写一下,希望对大家有所帮助. 要求:目标文件中有一个字段为no=x x为0.1.2……,将其替换为no=0 1 import re 2 fobj = open("goal.ini", "r") 3 f = re.sub("no=\d+", "no=0", fobj.read()) 4 fobj.close() 5 fobj = open(&qu

python 初学03 Eric+PyQt+python IDE与界面程序

近期一直在学习python和批处理,来将工作中的手工操作的低效环节用脚本自动实现. 已经实现了几个脚本.但是命令行窗口,总是不太友好,对执行结果的反馈也不清楚,就想实现可视化. 在网上找到Python可视化的编程的一个方法,周末专心实现了一下,效果还行,算是有头绪了. http://blog.sina.com.cn/s/blog_514104fc0101c8yi.html 主要是按照上面这篇博客的方法实现的.感谢作者. 一.环境与软件版本 Eric特别挑软件版本,与PyQt 和 python的版

Python初学的易犯错误

当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该错误将发生在类似如下代码中: ? 1 2 if spam == 42     print('Hello!') 2)使用 = 而不是 ==(导致“SyntaxError: i

Python初学心得体会

初学程序编程对于一个没学过程序的小白来说是一个很大的挑战! 首先分别搭建在Linux和Windows下的python环境,这里有一个小的麻烦,就是在Windows的浏览器使用jupyter时,需要在Linux中python家目录中将防火墙服务打开,否则无法打开网页(service iptables stop ,因为是临时关闭,所以每回使用都需要去关闭防火墙.作为一个新手多麻烦点还是比较好的,尤其是非计算机方面的!) python的基础语法,像for , while , if 语句,转义序列,标识

python初学总结(二)

(1)字典 字典是一种映射关系:键(key),值(value),key-value对 创建字典的方式:直接创建和利用dict函数创建 >>> aInfo = {'Wangdachui': 3000, 'Niuyun':2000, 'Linling':4500, 'Tianqi':8000} >>> info = [('Wangdachui',3000), ('Niuyun',2000), ('Linling',4500), ('Tianqi',8000)] >&g

python初学杂记

python常用命令: 1.python 或者 python3  打开交互式python解释器 2.python hello.py   通过命令提示符运行python脚本 交互式python解释器常用命令:eixt() 退出 python常用语法: 1.print('hello word')  备注:python2支持print 'hello world' ,但 python3不支持 2.# 注释   表示该行是注释 3.\'  代表‘  \是转义字符 4.100000000000000000L

Python初学注意问题

本文是看到的,然后结合自己之前学习的过程也碰到的问题,所以就引用过来了:http://www.cnblogs.com/walkingp/p/3261663.html 一.注意你的Python版本 Python官方网站为http://www.python.org/,当前最新版本为3.4.0 alpha,稳定版本为3.3.2,在3.0版本时,Python的语法改动较大,而网上的不少教程及语法针对的是1.0或者2.0版本的,这样就造成不少初学者按照示例代码来写,但编译都无法通过的问题. 1.print

Python初学

经同学推荐,学习了下Python语言,看Python的介绍,它本身是一个面向对象的解释型脚本语言,我初看到这句话的时候就在想,一个脚本语言还搞成面向对象?有这个必要么?原谅我肤浅了一把. 它还被俗称为胶水语言,就是能够把其他语言结合在一起.它自己介绍的特点:慢.简洁. 其实,在刚开始学的时候,因为和C语言语法的很大差别,搞的我很不习惯,非常的不爽.C的代码块都是用{}来包围的,条件.循环的判断都是有()的,这样的话,格式就比较随便了,我也觉得这样挺好的,挺不错的,自由无拘束嘛.结果到了Pytho

python初学笔记(三)

Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节 (byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母.数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122. 如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和AS