Python学习笔记

函数

调试相关

  • F8 step over单步执行会把函数调用视作一行,直接执行,不会进入函数内部
  • F7 step into也可以单步执行,如果是函数,会进入函数内部
  • 函数注释使用三对引号

参数相关

  • 形参和实参:定义函数时使用的参数是形参,调用函数时传入的函数是实参
  • 局部变量和全局变量:局部变量是在函数内部定义的变量,全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量
  • 当列表作为实参进入函数时,如果在函数内部对列表进行+=操作,实际上是调用了列表的extend方法,没有赋值的过程,因此会影响函数外全局变量的结果,而如果在函数内部对列表进行list = list +list,则等号左边的list被视为局部变量,不会影响函数外部的全局变量
  • 缺省参数:具有默认值的参数叫做缺省参数,定义缺省参数时要放在最后一个的位置
  • 多值参数:参数前有个*可以接收元组,参数前有**可以接收字典;*args代表变量arguments,**kwargs中的kw代表keyword,可以记忆键值对参数
  • *agrs在调用时只需要用逗号隔开就可以
def demo(num, *nums, **person):
	print(num)
   print(nums)
   print(person)
   
demo(1)  
out:
1 
()
{}
demo(1,2,3,4,name="小明")
out:
1
(1,2,3,4)
{"name":小明}
  • 拆包:在调用多值参数的时候,如果希望将一个元组变量,直接传递给agrs,可以在元组变量前加一个*,如果希望传递一个字典,可以在变量前加**
  • 递归:一个函数内部调用自己,当参数满足某一个条件时,不再执行,这通常被称为函数的出口,如果不指定函数的出口,会形成死循环

  • 类是负责创造对象的
  • 类的命名要符合大驼峰命名法,单词首字母大写,单词之间没有下划线
  • 对象特征的描述称为属性,对象具有的行为称为方法
  • dir(对象名) 可以查看该对象的所有属性和方法
  • __方法名__格式的方法是Python提供的内置方法和属性
  • 定义类中的函数时,第一个参数必须是self

初始化方法与属性

  • 创建对象: 对象变量 = 类名()
  • 给对象增加属性:在类的外部通过 类名.属性名 = 属性值即可;但是不推荐这种方式,如果调用时没有找到该属性,就会报错
  • 方法内部,self.可以访问对象的属性,也可以调用该对象的其他方法;在调用方法时,不需要传入self参数
calss Cat:
	
	def eat(self):
		print("%s 爱吃鱼" % self.name)  # 哪个对象调用该方法,方法内的self就是那个对象的引用
		
	def drink(self):
		print("%s 爱喝水" % self.name)
		
		
tom = Cat()
tom.name='Tom'
tom.eat()
  • 初始化方法:当我们创建对象时,解释器会首先给对象分配内存地址,其次会为属性设置初始值,也就是调用初始化方法__init__,初始化方法是对象的内置方法,是用来定义类具有哪些属性的方法
calss Cat:
	def __init__(self):
		print("something")
		
tom = Cat()  # 这里会输出 "something",也就是自动调用了初始化方法
  • 定义属性:在初始化方法内部,self.属性名 = 属性值就可以定义类的属性了
calss Cat:
	def __init__(self,new_name):
		print("something")
		self.name = new_name
	def eat(self):
		print("%s 爱吃鱼" % self.name)
		
tom = Cat("Tom")  # 在初始化方法中通过形参的形式设定初始值后,在创建对象时就可以直接传入相应的实参

内置方法和属性

  • __del__方法,在对象被从内存中销毁之前,会自动调用该方法
  • __str__方法,在类中定义该方法,就能够在打印对象名时,输出自定义的内容,但是该内置方法必须返回字符串

私有属性和方法

  • 对象的属性和方法,只在对象内部被使用,而不会被外部访问
  • 在定义属性名或方法名前,增加__即可定义为私有属性和方法
  • Python中没有真正意义上的私有属性和方法,通过_类名__名称即可访问到相应的私有属性和方法

继承

  • 继承可以让子类拥有父类所有的方法和属性,子类可以拥有多个父类
  • 继承的语法如下:
class 子类名(父类名):
	pass
  • 方法的重写:当父类的方法不能满足子类的需求,可以对方法进行重写;重写可以分为覆盖父类的方法和对父类的方法扩展.
  • 覆盖:在子类中定一个和父类中同名的方法,子类在调用时只会调用重写后的方法
  • 扩展:在新定义的方法中,使用super().原有方法名()即可实现扩展的目的

多态

  • 不同的子类调用相同父类方法,产生不同的结果
  • 多态以继承和重写父类的方法为前提

装饰器

@函数
def xxx():
	pass
  • python自动执行所艾特的函数,并且将下方定义的函数,作为参数传递给所艾特的函数,即执行函数(xxx),执行完后,将结果赋值给xxx,即xxx = 函数(xxx)
posted @ 2023-06-19 23:01  梁书源  阅读(17)  评论(0编辑  收藏  举报