天池龙珠计划-Python训练营3


大家好,我又来更第三节啦。本节讲的内容比较多,其中魔法方法有些抽象,需要多翻找资料强化了解。

一、函数

1.参数类型

在这里插入图片描述

*args是可变参数,args接受的是tuple
**kwargs是关键字参数,kwargs接受的是dict

#可变参数示例
def func(a,*b):
    return a,b
func(1,2,3)
#(1, (2, 3))
#关键字参数示例
def func(a,**b):
    return a,b
func(1,x=1,y=2)
#(1, {'x': 1, 'y': 2})

2.变量作用域

1、定义在函数内部的变量拥有局部作用域,称为局部变量
2、定义在函数外部的变量拥有全局作用域,称为全局变量
3、 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问
4、当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal

3.函数类型

在这里插入图片描述
什么是闭包函数?
举个栗子!!!

def funX():
	num=100
	def funY(y)nonlocal num
		num=1000
		return num*y
	return funY
# i=funX()
# i(100)

当内部函数需要引用外部函数的外部非全局变量时,需要使用关键字nonlocal,此时内部函数称为闭包函数。

闭包函数的返回值通常是函数

什么是递归函数?
举个栗子!!!

def func(n):
	if n==1:
		return n
	return n*func(n-1)

如果一个函数在内部调用自身,那该函数称为递归函数

二、lambda 表达式

在python中,有两种定义函数的方式,第一种是前面提到的def函数,第二种是本小节提到的匿名函数lambda

lambda x : 表达式
#x可以是位置参数、默认参数、可变参数、关键字参数

1、 匿名函数的返回值由表达式的值决定

2、 匿名函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

三、类与对象

1.对象=属性+方法

在python里面,万物皆对象

class Myclass:
    def __init__(self,x,y):
        self.x=x
        self.y=y
    def add(self):
        return self.x+self.y

以Myclass为例,x,y是类的属性,add()是类的方法

2.self是什么?

类的方法与普通的函数只有一个特别的区别 —— 它们必须有一个额外的第一个参数名称(对应于该实例,即该对象本身),按照惯例它的名称是
self。在调用方法时,我们无需明确提供与参数 self 相对应的参数。

3.继承

举个栗子!!!

class father_class:
    def __init__(self,a,b,c):
        self.a=a
        self.b=b
        self.c=c
    def func(self):
        print("%s 说了两个数字:%d %d" %(self.a,self.b.self.c))
class son_class(father_class):
    def __init__(self,a,b,c,d):
        father_class.__init__(self,a,b,c)
        self.d=d
    def add(self):
        return self.b+self.c
cls=son_class(1,2,3,4)
cls.add()
#5

注意:1、基类必须与派生类定义在同一个作用域
2、如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性

4.公有和私有

在python中定义私有变量只需在变量名或函数名前加上"__"两个下划线,那么该函数或变量就会为私有的了。

5.类、类对象和实例对象

类对象:只能有1个,类属性和类方法可共享
e.g.类名.属性、类名.方法
实例对象:可以有多个,实例属性和实例方法不可共享
e.g.实例.属性、实例.方法

注意:属性与方法名相同,属性会覆盖方法

四、魔法方法

1、魔法方法总是被双下划线包围,例如__init__
2、魔法方法是面向python对象的一切,一般是用来定义python的行为
3、魔法方法的第一个参数应为cls(类方法)或者self(实例方法)

cls:代表1个类的名称
self:代表1个实例的名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值