有人能帮我理解Zed Shaw';让我们用艰苦的方式学习Python 3
我试图破译Zed的ex23,他的解释有些帮助,但我迷路了。这本剧本讲述的是他试图教你如何用不同的语言对字母进行解码和编码。其中一些话题似乎还为时过早/他还没有讨论过,他提到这比我见过的任何东西都要困难,但我一直在迷失方向。我会试着根据我所看到的解释我能解释什么,但我不确定我是否理解这里的一切有人能帮我理解Zed Shaw';让我们用艰苦的方式学习Python 3,python,Python,我试图破译Zed的ex23,他的解释有些帮助,但我迷路了。这本剧本讲述的是他试图教你如何用不同的语言对字母进行解码和编码。其中一些话题似乎还为时过早/他还没有讨论过,他提到这比我见过的任何东西都要困难,但我一直在迷失方向。我会试着根据我所看到的解释我能解释什么,但我不确定我是否理解这里的一切 import sys script, input_encoding, error = sys.argv 这很简单,我们只是导入sys并定义argv的变量 def main(language_file, e
import sys script, input_encoding, error = sys.argv
这很简单,我们只是导入sys并定义argv的变量
def main(language_file, encoding, errors):
line = language_file.readline()
用三个变量定义名为main的函数。定义行以从语言文件中读取该行。如何定义语言_文件?我哪里都看不到定义
if line:
print_line(line, encoding, errors)
return main(language_file, encoding, errors)
如果行中有定义为的内容,则它将运行以下命令。如果它没有(也就是说如果它是假的),那么它就不会。如果不在上面定义函数,如何创建if语句?有什么我不知道的吗。Zed在下面定义了打印行,但在上面使用了它?返回主页做什么?这是否意味着我们返回到基函数
def print_line(line, encoding, errors):
next_lang = line.strip()
raw_bytes = next_lang.encode(encoding,
errors=errors)
我们在这里定义打印线。strip函数的作用是什么?错误=错误意味着什么
cooked_string = raw_bytes.decode(encoding, errors=errors)
我们定义为获取原始字节并对其进行编码的字符串…我想
print(raw_bytes, "<==>", cooked_string)
languages = open("languages.txt", encoding = "utf - 8")
我认为这本书中的练习有点过早,或者我只是没有看到一些东西。如果有人能帮助我们剖析这一点,我们将不胜感激
这是完整的纸条,没有我的评论:
def main(language_file, encoding, errors):
line = language_file.readline() #defining line as a read off of language_file
if line: # if line has something from what it is defined to be it will run the below. If it does not (AKA if it's false), then it won't.
print_line(line, encoding, errors)
return main(language_file, encoding, errors)
def print_line(line, encoding, errors):
next_lang = line.strip() # what is strip?
raw_bytes = next_lang.encode(encoding, errors=errors)
cooked_string = raw_bytes.decode(encoding, errors=errors)
print(raw_bytes, "<==>", cooked_string)
languages = open("languages.txt", encoding = "utf - 8")
main(languages, input_encoding, error)
def main(语言文件、编码、错误):
line=language_file.readline()#将行定义为语言_文件的读取
if line:#如果line具有定义为的内容,它将运行以下命令。如果它没有(也就是说如果它是假的),那么它就不会。
打印行(行、编码、错误)
返回main(语言文件、编码、错误)
def打印行(行、编码、错误):
next_lang=line.strip()#strip是什么?
原始字节=下一个语言编码(编码,错误=错误)
煮熟的字符串=原始字节。解码(编码,错误=错误)
打印(原始字节、“、熟字符串)
languages=open(“languages.txt”,encoding=“utf-8”)
主(语言、输入编码、错误)
我将尝试按顺序回答您的问题:
languages=open(“languages.txt”,encoding=“utf-8”)
行中打开的文件printline
函数是在调用main
函数的上方定义的,因此它可以正常工作。考虑函数的定义位置和运行位置返回main(语言文件、编码、错误)
行递归调用main函数。这意味着它将读取文件的下一行,直到没有更多的行,然后它将停止执行errors=errors
设置默认参数。这意味着,当您只传递一个参数而不是两个参数时,设置errors=errors。错误在上面的import语句中定义。请参阅geeks for geeks教程,了解处理python函数参数的不同方法next_lang
的字节表示字符串。第二行将其解码为python字符串。有关字符串的utf-8编码表,请参阅。utf-8只是一种编码选项。有许多不同的方法将字符串编码为字节
def main(language_file, encoding, errors):
line = language_file.readline() #defining line as a read off of language_file
if line: # if line has something from what it is defined to be it will run the below. If it does not (AKA if it's false), then it won't.
print_line(line, encoding, errors)
return main(language_file, encoding, errors)
def print_line(line, encoding, errors):
next_lang = line.strip() # what is strip?
raw_bytes = next_lang.encode(encoding, errors=errors)
cooked_string = raw_bytes.decode(encoding, errors=errors)
print(raw_bytes, "<==>", cooked_string)
languages = open("languages.txt", encoding = "utf - 8")
main(languages, input_encoding, error)
raw_bytes = next_lang.encode(encoding, errors=errors)
cooked_string = raw_bytes.decode(encoding, errors=errors)