当前位置: 首页 > 后端技术 > Python

【Python教程】04.方法与文件

时间:2023-03-26 00:59:12 Python

方法大纲异常调试文件实践方法方法也可以称为函数,可以实现一定的功能,如len、max、min等,一共有三个方法:1.内置-in方法:len、max、min等可以直接调用。https://docs.python.org/3.6/l...所有内置方法。2、自定义方法:将自己实现某种功能的代码封装起来,开发成方法,方便调用。之前我们已经写好了求和的函数,现在可以定义一个自己的求和方法了。3.类方法:在面向对象程序设计中,类中定义的方法。比如字符串的startswith方法,列表的append方法等等。基本形式是可变的。方法(参数)。关于对象和类将在后面的课程中学习。让我们开始学习自定义方法。方法定义:def。defprint_with_name(content):print(content)print('--Green')#methodcallprint_with_name('Hello')def表示开始定义一个方法。方法名后跟def,参数在方法名后的括号内。方法名的命名规则与变量名相同,不能重复,即不能定义两个相同的方法。上面定义了一个打印内容后打印更多签名的函数。这样当我们需要签名的时候,直接调用这个方法就可以了。不仅调用方便,以后想修改签名格式的时候,只需要修改这个方法里面的内容即可。参数:defprint_with_name_v2(content,name):print(content)print('--{}'.format(name))print_with_name_v2('Hello','Green')多个参数用逗号分隔。参数个数尽量不要超过5个。参数相当于方法代码块中的一个变量,但是这个变量会随着调用者的输入而改变。上面的代码实现了更灵活的功能,签名变成了一个参数动态配置。尝试编写另一种方法,其中签名格式也可以动态配置。该方法的灵活性不是越高越好,而是根据具体需要保持一个度。默认值:为参数定义一个默认值,这样就不需要每次都输入该参数。defprint_with_name_v3(content,name='Green'):print(content)print('--{}'.format(name))print_with_name_v3('Hello')print_with_name_v3('Hello','Lily')在参数后添加默认值,并用等号连接。如上代码,name的默认值为Green。第一次调用的时候没有写name,name会自动赋默认值Green。您也可以写入所有参数。由于参数的先后顺序,默认值的参数只能放在最后N个deffunc1(a,b=1,c,d=True):#errordeffunc2(a,c,b=1,d=True):#正确的参数赋值:基本的参数赋值是按顺序一个一个赋值,否则一种方式是直接按名字赋值。deffunc3(a,b,c=1,d=True):passfunc3(10,20,d=False)调用时直接以参数name=value的形式传入参数。这样就可以跳过c的参数必须写成sequential方式的情况。所有没有默认值的参数都必须填写,不能跳过。当然你也可以用这个方法乱序传入。func3(b=10,a=20,d=False)关于参数,还有最后一个可变参数,以后在一些进阶教程中会介绍。pass表示什么都不做,这是因为这个方法还没有实现,用pass作为占位符,否则语法错误。返回值:返回。每个方法返回一个值,默认为空值None。defsum1(numbers):answer=0foriinnumbers:answer=answer+ireturnanswer=sum1([10,53,45,44,907])以上就是我们自己封装的sum方法。最后通过return返回答案。遇到return时,方法会立即停止,返回return后的值。如果没有返回,则自动返回空值None。多个返回值:该方法可以返回多个值,只是用逗号分隔。defsum_avg(numbers):answer=0foriinnumbers:answer=answer+ireturnanswer,answer/len(numbers)sum,avg=sum_avg([10,53,45,44,907])以上方法在同时返回总和和平均值。这样返回的两个变量组合成一个元组。当我们得到返回值后,我们可以使用拆包的方式分别得到两个返回值。异常异常是通常阻止程序继续执行的错误。一类异常是代码语法错误,Pycharm通常会提前通知我们。a=1ifa>2print(1)错误显示:这种错误不应该存在。出现此类错误,程序将无法运行。另一种类型的异常是执行时错误,它是在运行过程中发生的错误。以下是除以0的错误。a=10b=0print(a/b)错误显示:此类错误可以被捕获并处理。异常捕获:try,except。try:a=10b=0print(a/b)exceptExceptionase:print(e)把前面的代码用try这样包裹起来,try下面是捕获错误的代码块。except用于捕获错误,其中Exception是一般异常,as是将异常赋值给e。如果捕获到异常,它会打印出异常内容。这样捕获的异常不会导致程序退出。但一般情况下,捕捉到异常后应该立即记录错误,并退出运行。异常处理:异常不是找bug,而是捕获可能的已知错误并优雅退出。我们可以使用多个except来获取不同的异常。尝试:a=int(input('inputa:'))b=int(input('inputb:'))print(a/b)exceptZeroDivisionError:print('bcannotbe0')exceptValueError:print('Theinputisnotanumber')exceptExceptionase:print(e)finally:print('Theprogramends.')ZeroDivisionError和ValueError是已知的异常。当捕获到这两个异常时,它们的处理方式不同。最后一个Exception是为了确保捕捉到一些未知的错误。不管是否有异常,finally下面的代码块都会执行。异常的主体一般是一些我们无法控制的事情,比如用户输入、文件读取、接口访问、数据库连接等,这些操作的共同点是是否会成功是未知的,这是我们无法控制的我们的代码。调试调试也叫debug,就是找bug的过程。最原始的调试方法是print,打印出程序运行过程中各个位置的值。这种方法很常见,但其实你也可以使用Pycharm提供的debug功能。debug:启动程序的Run命令下面是Debug命令。但是我们现在直接点击Debug命令,只是运行速度比较慢,没有任何效果。断点设置:通过设置断点,调试时程序会停在断点处。点击行号旁边的空白处【红框位置】,会出现一个红点,就是断点。点击后:我们还可以设置多个断点,一般我们会设置在可能出现的地方。开始调试:执行Debug命令后,程序停在该命令处。这里我们可以看到a和b变量的值。我们可以继续和停止程序。也可以逐行执行,代码逐行执行看是否正确。文件文件操作是我们经常用到的。读取文件:打开。f=open('a.txt','r')#打开文件content=f.read()#读取整个文件print(content)open第一个参数是文件地址,第二个参数是openmode,r表示读取,也是参数的默认值。文件地址可以是相对地址[相对于程序文件的地址],也可以是绝对地址。read方法读取整个文件内容。还有一个readlines,它会返回列表中每一行的内容。f=open('a.txt')lines=f.readlines()#Readalllinesprint(lines)一次读取整个文件,速度快,内存消耗大。逐行读取:一次只读取一行,速度较慢,但??可以处理大文件。try:f=open('a.txt')forlineinf:line=line.strip()print(line)f.close()exceptExceptionase:print('filereaderror')exit()使用for循环直接遍历文件变量。得到的行就是每一行的内容。每一行的内容都包含换行符,所以我们用strip去掉。close方法用于关闭文件,当不需要该文件时应该关闭。try和except主要处理文件读取失败。写入文件:f=open('b.txt','w')f.write('aa\nbb\ncc')f.close()修改打开方式为w,即可写入文件。如果该文件不存在,则创建它。如果文件存在,它将被清除并重写。write方法的参数是要写入的内容。追加文件:将打开方式改为a,当文件存在时,直接追加文件后面的内容。f=open('b.txt','a')f.write('\ndd\nee')f.close()Writethefileresult编写一个程序来统计文件中所有的唯一单词。importre#导入re模块f=open('license.txt')words=[]forlineinf:line=line.strip()#删除空格和enter_words=line.lower().split('')#Splitforwin_words:ifnotw.isalpha():#包含非字母w=re.sub('[^a-zA-Z]','',w)#移除非字母iflen(w.strip())!=0:#保证不为空空间分裂成单独的词。正则表达式用于去除非字母,re是正则表达式的一个模块。练习数文件中的单词个数,从小到大排列,输出到文件中。1.写两个方法,一个用来统计返回结果,一个用来输出结果。2.输出文件格式:apple199orange120github:https://github.com/lvancer/course_python