Python基础知识之函数,类,模块

张开发
2026/6/4 9:16:47 15 分钟阅读
Python基础知识之函数,类,模块
编程中需要重复写的功能可以包装成一个函数1定义函数定义函数之前实现给一个字符串增加前缀和后缀的操作12345678f1f1f2f2f1.txtf1my_f1f2.txtf2my_f2print(f1, f2)my_f1.txt my_f2.txt定义函数之后12345678defmodify_name(filename):filename.txtfilenamemy_filenameprint(filename)modify_name(f1)modify_name(f2)my_f1.txtmy_f2.txt上述函数里面用到了参数调用的时候需要进进行传参数但有时也可以没有参数eg1234567defmodify_name():filenamef1filename.txtfilenamemy_filenameprint(filename)modify_name()my_f1.txt一个函数也可以拥有返回值将函数处理后可以将想要返回的结果返回1234567defmodify_name(filename):filename.txtfilenamemy_filenamereturnfilenamenew_filenamemodify_name(f1)print(new_filename)my_f1.txt2)参数设置调用函数时如果函数有参数那么需要给函数传参函数本来的参数叫实参传入的参数叫实参参数传递有以下几种方式123456789deff(x, a, b, c):returna*x**2b*xc*1print(f(2,1,1,0))# 忽略参数名需要按顺序一一对应print(f(x2, a1, b1, c0))# 写上参数名按名字传参print(f(a1, c0, x2, b1))# 若用参数名可以打乱顺序传参666另外对于不是一直变化的参数可以给参数设置一个默认值如果设置了默认值传参时可以不给改参数传值否则每个参数都要传参成功才能调用1234567deff(x, a1, b1, c0):returna*x**2b*xc*1print(f(2, a2))print(f(2))106Tip: 设置了默认值的参数和未设置默认值的参数要分开放也就是说不可以将未设置默认值的参数跟在设置了默认值参数的后面3全局和局部变量全局变量global函数里外都能用公用局部变量local仅在函数内使用私用12345defmodify_name():filenamef1.txt# 这里就是一个局部变量print(local filename:, filename)modify_name()print(global filename:, filename)# 这里会报错12345filenamef1.txt# 这里便是一个全局变量defmodify_name():print(local filename:, filename)modify_name()print(global filename:, filename)全局变量和局部变量冲突时局部变量优先12345678filenamef1.txtdefmodify_name():filenamef2.txtprint(local filename:, filename)modify_name()print(global filename:, filename)local filename: f2.txtglobalfilename: f1.txt特殊情况允许内部来修改外部的值必须使用global声明相当于提出了一个申请1234567891011filenamef1.txtdefmodify_name():globalfilename# 提出申请filenamef2.txtprint(local filename:, filename)modify_name()print(global filename:, filename)local filename: f2.txtglobalfilename: f2.txt2、Class类目的为了描述一个或一类具体的物体eg猫的特征动作等1定义class使用class File来创建一个类注意通常约定类的名字要首字母大写。然后使用my_file File()来创建一个实例每个实例都继承了一个类的基本属性12345678910classFile:def__init__(self):self.namef1self.create_timetodaymy_fileFile()print(my_file.name)print(my_file.create_time)f1today其中 self 是作为类自己的一个索引不管你在定义类的时候想要获取这个类的什么属性或功能都可以通过self来获取。__init__()创建一个实例的时候类都会自动进行一次初始化即运行一遍__init__()函数修改属性的值(但这样修改的值仅对当前实例有效)123my_file.namenew_nameprint(my_file.name)new_name2class的功能__init__()也可以对该函数进行传参12345678910classFile:def__init__(self, name, create_timetoday):self.namenameself.create_timecreate_timemy_fileFile(my_file)print(my_file.name)print(my_file.create_time)my_filetoday还可以定义更多的功能比如重命名等1234567891011classFile:def__init__(self, name, create_timetoday):self.namenameself.create_timecreate_timedefchange_name(self, new_name):self.namenew_namemy_fileFile(my_file)my_file.change_name(new_name)print(my_file.name)new_name而且类的功能也可以有返回值12345678910classFile:def__init__(self, name, create_timetoday):self.namenameself.create_timecreate_timedefget_info(self):returnself.name is created at self.create_timemy_fileFile(my_file)print(my_file.get_info())my_fileiscreated at today3)继承俩个类分开写eg1234567891011classVideo:def__init__(self, name, window_size(1080,720)):self.namenameself.window_sizewindow_sizeself.create_timetodayclassText:def__init__(self, name, languagezh-cn):self.namenameself.languagelanguageself.create_timetoday可以发现这俩个类是有共性的比如都有name和create_time所以可以编写一个底层类使得这俩个类继承底层类从而减少了类之间的共有属性/功能的重复开发一个类可以继承另一个类从而使得这个类成为子类被继承的类为父类

更多文章