Python(3)

集合set

 

add添加一个元素,update至少添加一个元素,remove删除一个元素不存在则报错,discard删除一个元素不存在不报错,pop随机删除一个元素

t1={'chenshi',10,20,30}
# t1.pop()
t1.add(40)
t1.update({50,60,70})
t1.update([80,90])
t1.remove('chenshi')
t1.discard(10)
print(t1)

{70, 40, 80, 50, 20, 90, 60, 30}

子集,超集,交集判断

t1={'chenshi',10,20,30}
t2={10,20}
t3={10,20,100}
t4={200,300}
print(t2.issubset(t1))
print(t1.issuperset(t2))
print(t1.issuperset(t3))
print(t1.isdisjoint(t3))
print(t1.isdisjoint(t4))

True
True
False
False
True

差并交和对称差集

t1={'chenshi',10,20,30}
t2={10,20}
t3={10,20,100}
t4={200,300}
print(t1.intersection(t2))
print(t1 & t2)
print(t1.difference(t2))
print(t1.symmetric_difference(t3))
print(t1 ^ t3)

{10, 20}
{10, 20}
{30, 'chenshi'}
{100, 'chenshi', 30}
{100, 'chenshi', 30}

集合生成式

set1={i*i for i in range(1,10)}
print(set1)

{64, 1, 4, 36, 9, 16, 49, 81, 25}

字符串驻留

 函数创建

def cable(a,b):
    c=a+b
    return c
k=cable(1,5)
print(k)

6

参数传递:位置传参,关键词传参

print函数的参数 

def print(self, *args, sep=' ', end='\n', file=None)
print('hello',end='\t')
print("word")

hello	word

个数可变的位置参数,输出结果为元组

def fyn(*args):
    print(args)

fyn(10)
fyn(10,20)
fyn(10,20,30)

(10,)
(10, 20)
(10, 20, 30)

个数可变的关键字参数,结果为字典

def fyn(**args):
    print(args)

fyn(a=10)
fyn(a=10,b=20)
fyn(a=10,b=20,c=30)

{'a': 10}
{'a': 10, 'b': 20}
{'a': 10, 'b': 20, 'c': 30}

异常处理try-except-else-finally,traceback

try:
    a=int(input("first number"))
    b=int(input("second number"))
    c=a/b
except BaseException as e:
    traceback.print_exc()
else:
    print("result=",c)
finally:
    print("Thank you for use")


first number5
second number0
Thank you for use
Traceback (most recent call last):
  File "F:\PythonProject\venv\Demo3.py", line 19, in <module>
    c=a/b
ZeroDivisionError: division by zero

python中的类与对象的创建

class Student:
    # 类属性
    id=1

    def __init__(self,name,age):
        self.name=name #实例属性
        self.age=age

# 实例方法
    def eat(self):
        print('学生吃饭')

# 静态方法
    @staticmethod
    def play():
        print("学生玩")

# 类方法
    @classmethod
    def study(cls):
        print('学生学习')

stu1=Student("yasuo",17)
stu1.eat()
print(stu1.id)
print(stu1.name,stu1.age)
Student.eat(stu1)

类属性由类维护,多个对象共享(区别于C++)

类方法,可以直接用类名访问,不需要对象参数(区别于实例方法)

静态方法,直接用类名访问,不需要任何参数(cls,self都不需要)

动态绑定,python是动态语言,创建对象之后可以动态地绑定属性和方法

stu1.gender='女'
print(stu1.gender)

def show():
    print("类之外定义的叫函数")
stu1.show=show
stu1.show()

女
类之外定义的叫函数

python私有属性以及强行访问私有属性的办法

 def __init__(self,name,age,gender):
        self.name=name #实例属性
        self.age=age
        self.__gender=gender #私有属性

print(dir(stu1))
print(stu1._Student__gender)


['_Student__gender', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'eat', 'id', 'name', 'play', 'show', 'study']
男

类的继承 默认继承object类,可以多继承(类似c++),子类需要调用父类构造方法

class Student:
    # 类属性
    id=1

    def __init__(self,name,age,gender):
        self.name=name #实例属性
        self.age=age
        self.__gender = gender  # 私有属性

# 实例方法
    def eat(self):
        print('学生吃饭')

# 静态方法
    @staticmethod
    def play():
        print("学生玩")

# 类方法
    @classmethod
    def study(cls):
        print('学生学习')

class Master(Student):
    def __init__(self,name,age,gender,phone):
        super().__init__(name,age,gender)
        self.phone=phone

master1=Master('cheng',3,'女',163)
master1.eat()

class A(object):
    pass

class B(object):
    pass

class C(A,B):
    pass

方法重写,和java一样,调用父类方法super().方法名()

object类,所有类的父类,内置函数dir()可以查看指定对象所有属性,__str__()方法,用于返回一个对于“对象的描述”,会被print方法调用

class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def __str__(self):
        return '我叫{0},今年{1}岁了'.format(self.name,self.age)

person1=Person('销户',18)
print(dir(person1))
print(person1)   #默认调用str()方法

多态,python是动态语言

class Person:
    def eat(self):
        print('人吃饭')

class Child(Person):
    def eat(self):
        print('小孩吃饭')

def fun(obj):
    obj.eat()

fun(Person())
fun(Child())

object类的特殊属性与方法

 类似于C++重载运算符

class A:
    def __init__(self,name):
        self.name=name

    def __add__(self, other):
        print(self.name+other.name)

    def __len__(self):
        return len(self.name)

b=A("jack")
c=A("tom")

print(b+c)
print(len(b))

 new创建对象,init为创建的实例对象属性赋值

 浅拷贝

注意与c++不同,对象直接赋值的实质是另起了个变量名指向同一个内存空间,并没有分配新的内存空间,类似于c++中的引用,不算拷贝,这叫类对象的赋值操作!

class Cpu:
    pass

class Disk:
    pass

class Computer:
    def __init__(self,cpu1,disk1):
        self.cpu1=cpu1
        self.disk1=disk1

cpu1=Cpu()
disk1=Disk()
computer1=Computer(cpu1,disk1)

import copy
computer2=copy.copy(computer1)
print(computer1,computer1.cpu1,computer1.disk1)
print(computer2,computer2.cpu1,computer2.disk1)


<__main__.Computer object at 0x000001D16BE50F70> <__main__.Cpu object at 0x000001D16BE50FD0> <__main__.Disk object at 0x000001D16BE50FA0>
<__main__.Computer object at 0x000001D16BE50D90> <__main__.Cpu object at 0x000001D16BE50FD0> <__main__.Disk object at 0x000001D16BE50FA0>

 深拷贝,子对象的地址也会改变

class Cpu:
    pass

class Disk:
    pass

class Computer:
    def __init__(self,cpu1,disk1):
        self.cpu1=cpu1
        self.disk1=disk1

cpu1=Cpu()
disk1=Disk()
computer1=Computer(cpu1,disk1)

import copy
computer2=copy.deepcopy(computer1)
print(computer1,computer1.cpu1,computer1.disk1)
print(computer2,computer2.cpu1,computer2.disk1)


<__main__.Computer object at 0x000001F322B1FF70> <__main__.Cpu object at 0x000001F322B1FFD0> <__main__.Disk object at 0x000001F322B1FFA0>
<__main__.Computer object at 0x000001F322B1FD30> <__main__.Cpu object at 0x000001F322B1F790> <__main__.Disk object at 0x000001F322B1F700>

模块(module)一个.py文件就是一个模块,可以包含类,函数和语句。

import 包名.模块名

from 模块名 import 类/函数/变量

from 包名 import 模块名

在pycharm中导入自己的模块记得在包路径下右键选择make directory as/sources root

demo6
def addd(a,b):
    return a+b

import math
print(math.pi)

demo7
import demo6
print(demo6.addd(1,3))


3.141592653589793
4
if __name__ == '__main__':  #只有当点击运行demo6时,才会执行后面的代码

 

 第三方模块安装 pip install 模块名

io

readlines 读取所有内容,返回列表

ANSI就是UTF-8

file=open('test.txt','r')
print(file.readlines())
file.close()

 

 

二进制模式可以用来处理图片等

with语句管理上下文资源,能保证文件正确的关闭。实现了__enter__和__exit__特殊方法,就视为遵守上下文管理协议,其实例对象就可以视为上下文管理器。

with open('test.txt','r') as file:
    print(file.readlines())

os模块


import os
os.system('notepad.exe')
os.system('calc.exe') #cmd命令行
os.startfile('D:\\Tencent\QQ\\Bin\\QQScLauncher.exe') #打开可执行文件

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值