python学习小结


这次学习主要学习python中特有的语法与面向对象编程,python中if、for等基本语法不在这次小结中提及,在python中一切都是对象,定义一个变量(如:a=10)是对象,列表、字典、集合、类都是对象。

基础语法

值传递与引用传递

python中传递方式没有让程序员选择的传递方式,python中自有一套传递规则,它分为两种传递方式:不可变对象传递方式与可变对象传递方式。

  1. 不可变对象传递方式为值传递,修改传递对象数据不会影响原对象数据,如:数字、元组、字符串。
  2. 可变对象传递方式为引用传递,修改传递对象数据的同时原对象数据也被修改,如:列表、字典。

推导式

推导式能方便快速创建列表,推导式有列表推导式、字典推导式、集合推导式、生成器推导式。

  • 列表推导式格式:[表达式 for 变量 in 可迭代对象 if 表达式]
list = [a for a in range(10)]
list = [a for a in range(10) if a%2==0]

上述第一条语句生成一个[1,2,3,…10]的列表,第二条在生成过程中会判断a是否能被2的整除。

  • 字典推导式格式:{key:value for 变量 in 可迭代对象 }
dic = {a:b for a in range(3) for b in range(0,3)}

生成{0: 2, 1: 2, 2: 2}一个字典。

str = "hello world"
dic = {a:str.count(a) for a in str}

统计str字符串中每个字符出现的次数。

  • 集合推导式格式:{表达式 for 变量 in 可迭代对象 if 表达式}
{a for a in "hello" }

把hello每个字符拆分生成集合。

  • 生成器推导式格式:(表达式 for 变量 in 可迭代对象 if 表达式)
gnt = ((a,b)for a in range(3) for b in range(3));#创建生成器
print(tuple(gnt))#生成元组

python中没有直接生成元组的推导式,可以使用生成器转为元组。

lambda表达式

lambda声音一个匿名函数,一种简单的在一行中完成匿名函数,lambda生成的函数是一个函数对象。

fun = lambda a,b:a+b
a = fun(1,2)

函数

定义函数:def 函数名称(参数表):

def fun():
    pass
fun()

面向对象

类与类对象

python对象包括三个部分:id(对象标识符)、type(对象类型)、value(对象值、属性与方法)。

  • 构造函数 init()
    构造函数用于初始化实例对象的实例属性。
  • 析构函数 del()
    析构函数用于在对象被回收时删除实例需要释放的对象。

类对象与实例对象

python中一切都是对象,所以我们定义的类也是一个对象,称为对象模具,可以通过对象模块创建不同的实例对象;实例对象就是通过对象模具创建的实例。

类属性与实例属性

我们定义的类是一个对象,那么它也有自已的属性,类的属性可以在所有实例中访问。

  • 类属性
#class 类名:
#	变量名 = 初始化  #类属性定义
#访问使用:类名.变量名
class stu:
    name = "张某"
print(stu.name);

name是类stu的类属性,通过类名.变量名访问,它是所有实例对象共享的。

  • 实例属性
    实例属性只能通过对象模具创建后,通过实例变量才能访问,通常在构造函数__init__中定义与初始化。
class stu:
    def __init__(self):
        self.age = 20
s = stu()
print(s.age)

类方法与实例方法

  • 类方法
    类方法及为“类对象”的方法,通过装饰器@classmethod定义,并且第一个参数必须为"cls",在类方法中不能访问实例方法与属性,它通过“类名.方法名(参数表)”访问。
class stu:
    name = "张某"
    @classmethod
    def getName(cls):
        print(cls.name)
stu.getName()

在类方法中要访问类属性必须通过cls访问。

  • 实例方法
    实例方法是通过对象模具创建的对象的方法,实例方法属于实例对象,实例对象创建它便存在,实例对象回收它消失。
class stu:
    def printName(self):
        print("name")
s = stu()
s.printName()

私有属性与私有方法

类的私有属性在变量名前加双下划线定义(如:self.__name),私有方法同样在方法前加双下划线定义。

class stu:
    def __init__(self):
        self.__name = "张某"
    def __printName(self):
        print(self.__name)
s = stu()
print(s.name)#无法访问私有属性,系统报错
print(s.printName)#无法访问私有方法,系统报错
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值