语法要点

官方手册 https://docs.python.org/3/library/






import modulexxx 导入模块
dir(modulexxx) 查看模块的类、变量和方法
vars(modulexxx) 查看模块的类、变量和方法,包含属性的值,字典形式返回,但有些类不能用
del variable 删除变量




print('Contact {} at{}'.formate(key,value))
print('xxxx',var)




----- ----- ----- 
引用 变量名称绑定对象的内存
----- ----- ----- 
VarA = ['xxx','yyy']
VarB = VarA
del VarA[0] #此时VarB看到的也是删掉了'xxx'
VarB = VarA[:] #此时VarB指向了一份独立的副本


如果是可变对象的变量名幅值给另一个变量名,也只是引用(指针)。




不可变对象 int,float,long,str,tupl (理解为总是值的操作)
可变对象 list,set,dict (理解为总是指针操作)


函数参数传递:
不可变对象传进去的是值
可变对象传进去的是指针


对于不可变类型的变量,如果要更改变量,则会创建一个新值,而旧值如果没有被引用就等待垃圾回收
对于可变的类型,如果两个变量名称用=赋值,则会指向同一个地址,需要用copy来复制一份
----- ----- ----- 
数据结构
----- ----- ----- 
<1>列表(List) [xxx,yyy,zzz]. (可变的数据类型)
有序项目的集合.包含的列表项可以是不同类型的


list.append(Item) 尾部添加一个项目
ListA.sort() 排序
del ListAp[x] 可以直接删除元素


<2>元组(Tuple) (xxx,yyy,zzz) (不可变)
将多个项目保存在一起,类似列表,但功能能少,没有增加/删除元素的功能
*如果只有一个元祖项,如下声明 singleTuple = (aaa,)

<3>字典(Dictionary) {key0: Values0, Key1: Values1} (可变的)
Keys键值与Values值意义建立联系。键值是唯一的。
keys不可变,Values可变。
不可排序。
*无法实现同性名(Keys)的信息标记。
循环调动 for key, value in Dict.items()
增加键值对 Dict['keynew'] = 'value'
判断是否存在 if 'key' in Dict: xxxx




<4>集合(Set/collection) set([xxx,yyy,zzz]) (可变的)
简单的对象的无序集合,功能较多.方法比较正式
if xxx in set1 检查元素是否属于集合
set2 = set1.copy() 复制一份(内存里有2份数据)
set2.add(aaa) 增加集合的元素
set2.issuperset(set1) 检查是否是包含
set2.remove(bbb)
set1&set2 输出交集
set1.intersection(set2) 输出交集






*序列 列表、元组、字典都可看做序列的表现形式
序列支持资格测试(membership test) ( if eee in/not in xxx)
索引操作 (indexing operations) list[0]  list[-1]
支持切片运算符 (slicing) list[2:] list[:] list[-1](倒数第一个) list[1:-1]
带步长切片 list[::2] 索引的步进为2
能返回一份副本!




----- ----- ----- 
字符串
----- ----- ----- 
stra.join(strlist) 联结,将定界符stra插入字符串列表的元素之间,返回合并后的结果
"_@_".join(["11","22","33"])
stra.startswith('swa') 判断起始头
if "xxx" in stra: 判断是否包含
stra.find('war') 返回字段的位置,没有则返回-1






----- ----- ----- 
面向对象编程
----- ----- ----- 
class 类,关键字,能够创建一种新的类型Type
Object 对象,是类的实例Instance


Attribute 属性,包含类的字段和方法
Field 字段,从属于对象或类的变量
Method 方法,属于类的函数


字段类型:
instance Variables 实例的变量,
Class Variables 类的变量,共享的,这个类的任何对象修改的是同一个变量


方法类型
对象的方法
类的方法 用于便利地访问类对象,需要用到装饰器@classmethod来标记


私有属性 名称带双下划线,__priv




self 代表类的实例本身。
相当于Java中的this指针,必须放到类的方法的参数列表的开头。
就算原本是无需要参数的方法,也要带self参数
MyClass.method(self)


class Person:           # 创建一个类
    population = 0      # 类的变量/字段
    __PrvNum = 1        # 私有变量,对外隐藏的


    def __init__(self, name):  # 构造函数
        self.name = name    # 对象的变量/字段
        Person.population += 1


    def SayHi(self):    # 类的方法
        print('hello,my name is ',self.name)
        print('now have {} preson'.format(self.__class__.population))


    @classmethod        # 装饰器,指出接着是类方法
    def how_many(cls):  # 定义了类方法
        print('we have {} preson'.format(cls.population))




p1 = Person('lucy')      # 创建一个实例,自动调用__init__构造函数
p1.SayHi()               # 调用实例的方法
p2 = Person('Tom')
p2.SayHi()
Person.how_many()       # 调用类的公共方法
print(Person.population)
# print(Person.__PrvNum)    #这条无法执行,因为__PrvNum是私有的






*当一个对象的变量与类变量名称相同时,类变量会被隐藏
*self.__class__.var 每个对象也可以通过这种方式范围类变量




继承 inheritance,实现代码重用,实现子类型
创建公共类(公共特性)-->子类A、子类(特有特性)
多态 polymorphism,接口在子类中实现不同,而父类的对象可以调用子类的接口。
就算父类实现了接口,也会调用子类的接口
Python中所有的方法都是虚拟的,即默认能用多态特性


class pub:
    def __init__(self)
        xxx
class sub(pub): # 此处继承了pub类
    def __init__(self,a) 
        pub.__init__(self) # 调用父类的接口,Python不会自动调用父类的构造函数
        xxx

































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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值