从python2.7向 python3 转换(by《笨办法学python3》)

大嘎好,半吊子程序员从网线的这一端向您问好。

过去的还是会过去,就像时间,就像流水,就像python 2.7

终于还是要向python3切换

网上搜索了一下,还是用《笨办法学python3》这个文档开始吧。地址在:https://www.bookstack.cn/read/LearnPython3TheHardWay/spilt.1.learn-py3.md

————以下是书里的摘录部分的分割线———-

程序员总是自诩为数学天才,其实事实并非如此。如果他们是数学天才,他们就会去研究数学,而不是去写那些 bug 连篇的网站框架以便能开上豪车。

打印: print(“xxxxxxxxx”)

print(“Hens”, 25 + 30 / 6)

格式化字符串,只需要在“”前加上f,表示 format

somear = "world"

print( f"Hello, {somevar}")

.format()也可以格式化

joke_evaluation = “Isn’t that joke so funny?! {}”

print(joke_evaluation.format(hilarious))

print(“How old are you?”, end=’ ‘)

age = input()

# 我们在每一个打印行末尾放一个 end=' ' ,是为了告诉 print 不要另起一行。

y = input("Name?") 提示信息在()内

age = input("How old are you? ")

命令行参数

from sys import argv
script, filename = argv

argv 和 input() 之间的区别是什么? 区别取决于用户在哪被要求输入,如果是在命令行,就用 argv。如果你想让它们在程序已经运行的情况下用键盘输入,那就用 input()

读取文件

txt_again = open(file_again)

print(txt_again.read())

txt = open(filename) 会返回文件的内容吗? 不会。它其实是创建了一个叫做“文件对象”(file object)的东西

exists。它会基于一个字符串里面的变量文件名来判断,如果一个文件存在,它就会返回 True,不存在就会返回 False

from os.path import exists

exists(to_file)

  • close – 关闭文件,就像编辑器中的 “文件->另存为”一样。
  • read – 读取文件内容。你可以把读取结果赋给一个变量。
  • readline – 只读取文本文件的一行内容。
  • truncate – 清空文件。清空的时候要当心。
  • write(‘stuff’) – 给文件写入一些“东西”。
  • seek(0) – 把读/写的位置移到文件最开头。

用 32 个比特来编码一个 Unicode 字符 , 一个 32 位比特的数字意味着我们可以存储 4,294,967,295 个字符(2^32), 这对任何一种人类语言,甚至外星语言来说,都够用了

next_lang = line.strip()

raw_bytes = next_lang.encode(encoding, errors=errors)

cooked_string = raw_bytes.decode(encoding, errors=errors)

DBES”这个辅助记忆词吗?“Decode Bytes, Encode Strings”,解码字节==》字符串,编码字符串==》字节( 有字节要字符串,解码字节,有字符串要字节,编码字符串 )。

你需要做的就是记住如果你有原始字节,那你必须用 .decode() 来获取字符串。

关于while语句

  • 保守使用 while-loop,通常用 for-loop 更好一些。
  • 检查一下你的 while 语句,确保布尔测试最终会在某个点结果为 False。
  • 当遇到问题的时候,把你的 while-loop 开头和结尾的测试变量打印出来,看看它们在做什么。在这个练习中,你要通过以下三个检查来学习 while-loop:

if语句的编程习惯,

if 语句的规则:

  • 每一个“if 语句”必须包含一个 else。
  • 如果这个 else 永远都不应该被执行到,因为它本身没有任何意义,那你必须在 else 语句后面使用一个叫做 die 的函数,让它打印出错误信息并且死给你看,就像我们上节课做的那样,按照这个思路你可以找到很多错误。
  • “if 语句”的嵌套不要超过 2 层,最好尽量保持只有 1 层。
  • 把“if 语句”当做段落来对待,其中的每一个 if, elif, else 就跟段落中的句子一样。在每句前后留一个空行以作区分。
  • 你的布尔测试应该很简单,如果它们很复杂的话,你需要将它们的运算事先放到一个变量里,并且为变量取一个好名字。

如果你遵循上面的规则,你就会写出比大多数程序员都好的代码来。

python的数据类型

//地板除法(商向下取整)2 // 4 = 0

继承的大多数用法都可以用组合(composition)来简化或替换。并且无论如何都要避免多重继承

以下三个关键词需要加强一下

with-as 语句

lambda 创建一个短的匿名函数

yield

—–再结合总结一下—————————

1:print() 变成了函数

2: 默认使用UTF-8编码,不需要 u”xxxx” 这样子了

3:增加一个地板除运算符 // , 如 9//4 = 2

4:异常处理 , 只有继承 BaseException 的对象才可以被抛出

try:
  raise TypeError("xxx")
excpt TypeError as err:
  print(err)

5:不等于运算符只能使用 !=

6:增加bytes类型

b=b'中国'
type(b)
s = b.decode()
b2 = s.encode()

其他只有等实际中遭遇到再详细了解,目前感觉python2升到python3并不是太大的变更

应该问题不大的

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注