博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python初学的几个迷惑点
阅读量:6831 次
发布时间:2019-06-26

本文共 2442 字,大约阅读时间需要 8 分钟。

1.bytes和str函数

这个得感谢这个博主的分享

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

  • bytes格式时二进制型的文件,全为010101之类的,而str为字符串型的
  • bytes函数中的参数为bytes(字符串,encoding=' 括号里面经常填utf-8')其中encoding一定要填,str函数则为str()与其是一样的格式,针对utf-8格式为万国码格式,一个英文字母一个字节,一个中文字符三个字节
  • bytes数据有方法decode方法:X.decode('utf-8'),因此我们前面的read方法返回的是字符串类型数据,而str则有方法encode类型,这两个方法可将这两个数据类型转为utf-8类型
  • Python已经严格区分了bytesstr两种数据类型,你不能在需要bytes类型参数的时候使用str参数,反之亦然。这点在读写磁盘文件时容易碰到
  • 那么我们平时看到的以b'开头后面的字码其实就是utf-8编码,虽然应该为0101的形式,但是计算机上给我们看的时候编码了一下变成了这种形式,而你使用byte函数的时候,其实也就是在告诉计算机你在手动编码,而平时这个操作是由计算机自动转换的,而str编码就是那种可以直接看到中文字的形式

 以及每次使用requests请求后得到的网页内容text都有一个属性encoding

 

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;

来源博客

 

 

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.执行读取操作

来源博客

 

             

 

 

4. if not....else与if....else语句

if条件为真时执行前面的语句,为假时执行0

exp1= A  if  1==1  else  0

if not后为假时,执行前面的语句,否则执行0

exp3 = A  if  not  2==1  else  0

来源博客

 

       

 5.encoding和apparent_encoding的区别

encoding是简单的从header 中charset猜测编码,如果header中不存在charset 则认为编码为ISO-8859-1而这种编码方式不能解析中文 apparent_encoding则是从网页内容中分析出的编码方式(是备选编码方式 所以encoding不能正确解析的时候应该使用apparent_encoding

 

 6.理解if_name_=="_main_"的意思

在python中经常会看到程序末尾会出现这个,那么如何来理解呢?首先这段代码出现是由于包含这段代码的.py文件被其他.py文件引用了,由于python是一个脚本类型的语言,它执行代码是逐行解释性的执行,然而像C,C++等他们都有一个函数入口main函数。因此如果你引用另外一个.py文件的时候,他会把那个文件给执行一遍,怎么办呢?就可以用到这句话了,只有自己可以执行自己的所哟,其他.py只能执行自己的一部分。

举个例子,就比如小明说我有一瓶酒,要拿来喝,再拿来做调料,做装饰这三件事,然后你引用了小明的酒做装饰,结果你引用过来的时候,你把喝酒,做调料都给做了,这怎们办,小明很生气啊,于是在自己的酒瓶上写上if_name_=="_main_"于是这个酒便只能小明自己喝,做调料,做装饰,而你引用他的酒的时候,就只会做装饰了,不会继续喝酒做调料了。

参考博客:

          

 

转载于:https://www.cnblogs.com/gausstu/p/9508859.html

你可能感兴趣的文章
jackson详解
查看>>
Python-JS事件与面向对象操作
查看>>
Linux启动过程总结
查看>>
nexus搭建maven私服
查看>>
新建android工程的时候eclipse没有生成MainActivity和layout布局
查看>>
Halcon算子翻译——dev_get_system
查看>>
div模拟textarea文本域轻松实现高度自适应
查看>>
解决-2008 R2 SP1安装Thinkpad System Update 4无法更新 提示"收集用户信息时出错"
查看>>
详细对比IB开发与纯手码开发的优劣。
查看>>
Codeforces Round #331 (Div. 2)
查看>>
SQL Server中删除表中重复数据
查看>>
梦断代码阅读笔记二。
查看>>
sublime Text 3实用功能和常用快捷键收集
查看>>
python代码规范与标准库参考
查看>>
VMware Workstation 安装Red Hat 遇到的问题
查看>>
什么是javascript(一)
查看>>
JAVA入门到精通-第22/23讲-容器、集合类
查看>>
励志写一篇有味道的博文------json
查看>>
oracle赋权
查看>>
c异或加密与解密
查看>>