目录
⑤特殊方法:if _name_ = " _main_ " 阻止自动调用
一、函数
在开发程序时,使用函数可以提高编写的效率以及代码的重用
1、函数的使用步骤:
①定义函数 - 封装独立的功能
②调用函数 - 执行函数的代码
2、定义函数的格式:
函数名称应该能够表达函数封装代码的功能
3、变量作用域:
①局部变量只能在函数内部使用,局部变量从调用函数的时候开始在内存出现,函数调用完毕,局部变量从内存消失;
②全局变量从定义变量开始在内存中出现,一直到程序运行完成,和程序一起从内存中消失;
二、面向对象编程
面向对象就是将世界万物抽象成一个类,然后形成对应的对象。
1、类(class)
Python的类是由 类头(class)和 类体(同一缩进的变量和函数)构成。
🔺使用class关键字定义一个类,基本语法格式如下:
class 类名(object):
代码块
......
类是type类型的对象,定义类实际上就是定义了一个type类型的对象。
①使用类创建对象流程:
class MyClass:
pass
②现在我们通过MyClass这个类创建的对象都是一个空对象,相当于一个空盒子,现在向对象中添加变量,对象中的变量称为属性
语法:对象 . 属性 = 属性值
name = '属性值'
③实际上所有的事物都有两部分组成:
- 数据(属性)
- 行为(方法)
class MyClass:
def func(self):
print('这是类中定义的一个方法')
2、对象
创建类对象的过程,成为类的实例化。
对已定义好的类进行实例化,其语法格式如下:
object = 类名(参数)
访问类中实变量的语法格式如下:
类对象名 . 变量名
调用类中方法的语法格式如下:
类对象名 . 方法名(参数)
调用类:
3、方法
①_init_( ) 构造方法
Python类有一个名为_init_( ) 的方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。
手动添加构造方法的语法格式如下:
def _init_( self , ... ) :
代码块
注意:
- 方法名开头和结尾各有2个下划线,且中间不能有空格。
- _init_( )方法可以包含多个参数,但必须包含一个名为self的参数,且必须作为第一个参数。
- 即便不手动为类添加任何构造方法,Python也会自动为类添加一个仅包含self参数的默认构造方法
结果:
②实例方法
class MyClass(object): # 定义一个实例方法 def func(self): #func:封装的一个实例方法; self: 类的实例对象 代码块
③类方法
- 方法上层加入@classmethod,表示定义了一个类方法。类方法不需要self参数,但第一个参数需要是表示自身类的cls参数
class MyClass(object): # 定义一个类方法 @classmethod def func(cls): #封装的一个类方法; cls:类的本身 代码块
④静态方法:
- 静态方法需要通过装饰器@staticmethod来进行修饰,静态方法不需要传递对象也不需要实例对象(形参没有self / cls)。
class MyClass(object): # 定义一个静态方法 @staticmethod def func(): 代码块
- 静态方法可以直接被调用,不需要加任何参数。静态方法存在的意义就是让函数归类,紧耦合
⑤特殊方法:if _name_ = " _main_ " 阻止自动调用
- _main_ 是Python中的一个内置变量,表示模块名或程序名
- 当执行一个模块时,python会自动将该模块的 _name_ 设置为字符串 ”_main_“ ,因此,当我们在一个模块中使用 if _name_ = ” _main_ “ :语句时,表示只有在该模块直接被执行时,该语句才会成立。
实例:分别在2个文件中写入代码
文件A
文件B导入A模块,执行文件B
输出:文件a中的模块被自动调用了
使用 if __name__ = " _main_ " :方法
文件B导入A模块,执行文件B
输出:文件a中的模块被无法被自动调用